@wix/cli-app 1.1.41 → 1.1.43

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 (104) hide show
  1. package/build/{CreateVersionCommand-NJC6EUQ6.js → CreateVersionCommand-PMT33DT7.js} +2 -2
  2. package/build/{DevCommand-7VFOSZMO.js → DevCommand-5YOE6DHO.js} +2 -2
  3. package/build/DevCommand-5YOE6DHO.js.map +1 -0
  4. package/build/{GenerateCommand-VISY3267.js → GenerateCommand-QCYI6ZGT.js} +14 -14
  5. package/build/GenerateCommand-QCYI6ZGT.js.map +1 -0
  6. package/build/{LogsCommand-5HFJDCHS.js → LogsCommand-P7GF73SY.js} +2 -2
  7. package/build/{LogsCommand-5HFJDCHS.js.map → LogsCommand-P7GF73SY.js.map} +1 -1
  8. package/build/PreviewCommand-TLAH2QYA.js +4 -0
  9. package/build/{ServeCommand-QS4FDP4T.js → ServeCommand-IDZMCSAT.js} +2 -2
  10. package/build/{build-BFTLTFIN.js → build-GUIJNSWL.js} +2 -2
  11. package/build/{chunk-3HELHIBJ.js → chunk-244VWIWT.js} +2 -2
  12. package/build/chunk-244VWIWT.js.map +1 -0
  13. package/build/{chunk-7RL4TN6T.js → chunk-33U542O7.js} +2 -2
  14. package/build/chunk-3Y4NOBS4.js +4 -0
  15. package/build/chunk-3Y4NOBS4.js.map +1 -0
  16. package/build/{chunk-5YVFVF4T.js → chunk-44AYFU7B.js} +2 -2
  17. package/build/chunk-44AYFU7B.js.map +1 -0
  18. package/build/chunk-AT2TE5HS.js +4 -0
  19. package/build/{chunk-3OFSARA2.js → chunk-CYIUFMSD.js} +2 -2
  20. package/build/chunk-DCT2GH4K.js +115 -0
  21. package/build/chunk-DCT2GH4K.js.map +1 -0
  22. package/build/{chunk-RUZJ2NCD.js → chunk-FFYM2OK5.js} +2 -2
  23. package/build/chunk-JLIQSEAZ.js +239 -0
  24. package/build/chunk-JLIQSEAZ.js.map +1 -0
  25. package/build/chunk-O3XQFKZB.js +4 -0
  26. package/build/chunk-O3XQFKZB.js.map +1 -0
  27. package/build/chunk-OGYAC6LH.js +4 -0
  28. package/build/{chunk-ZTW5IT5T.js.map → chunk-OGYAC6LH.js.map} +1 -1
  29. package/build/{chunk-6MMLDNFM.js → chunk-PDLH2OMF.js} +2 -2
  30. package/build/{chunk-YHA4H34H.js → chunk-QF6RQBVB.js} +3 -3
  31. package/build/{chunk-YHA4H34H.js.map → chunk-QF6RQBVB.js.map} +1 -1
  32. package/build/{chunk-IZOKP4UZ.js → chunk-RKLU4NIT.js} +2 -2
  33. package/build/chunk-RKLU4NIT.js.map +1 -0
  34. package/build/{chunk-LRONHC7Z.js → chunk-SBVOKZ7F.js} +6 -6
  35. package/build/{chunk-LRONHC7Z.js.map → chunk-SBVOKZ7F.js.map} +1 -1
  36. package/build/chunk-VBODBNSF.js +4 -0
  37. package/build/chunk-VBODBNSF.js.map +1 -0
  38. package/build/{chunk-UGTXCT5B.js → chunk-W5VAOQOV.js} +11 -11
  39. package/build/chunk-W5VAOQOV.js.map +1 -0
  40. package/build/{chunk-RL3KEEB6.js → chunk-Y647PYH3.js} +2 -2
  41. package/build/{chunk-GF543SV4.js → chunk-YL4Y5YEO.js} +2 -2
  42. package/build/cloudflare-runtime/entry.js +4875 -7
  43. package/build/cloudflare-runtime/getRegisteredExtensions.js +4871 -5
  44. package/build/index.js +2 -2
  45. package/build/platform-sdk/browser-ZCGHXB6A.js +5 -0
  46. package/build/platform-sdk/browser-ZCGHXB6A.js.map +1 -0
  47. package/build/platform-sdk/chunk-AA4CIK56.js +2 -0
  48. package/build/platform-sdk/chunk-AA4CIK56.js.map +1 -0
  49. package/build/platform-sdk/chunk-PXLVKIYB.js +2 -0
  50. package/build/platform-sdk/chunk-PXLVKIYB.js.map +1 -0
  51. package/build/platform-sdk/chunk-SBZEOPXX.js +2 -0
  52. package/build/platform-sdk/dashboard.js +1 -1
  53. package/build/platform-sdk/dashboard.js.map +1 -1
  54. package/build/platform-sdk/editor.js +7 -7
  55. package/build/platform-sdk/editor.js.map +1 -1
  56. package/build/platform-sdk/site.js +1 -1
  57. package/build/{preview-KSI26ITH.js → preview-RCAZQQRZ.js} +2 -2
  58. package/build/{render-command-D47LZ2TZ.js → render-command-YI5IXTNY.js} +2 -2
  59. package/build/xdg-open +338 -137
  60. package/package.json +7 -6
  61. package/schemas/ecom-gift-cards-provider.json +1 -0
  62. package/templates/service-plugin/gift-cards-provider/dependencies.json +5 -0
  63. package/templates/service-plugin/gift-cards-provider/files/plugin.json.ejs +4 -0
  64. package/templates/service-plugin/gift-cards-provider/files/plugin.ts.ejs +26 -0
  65. package/build/DevCommand-7VFOSZMO.js.map +0 -1
  66. package/build/GenerateCommand-VISY3267.js.map +0 -1
  67. package/build/PreviewCommand-R3AOKI4K.js +0 -4
  68. package/build/chunk-3HELHIBJ.js.map +0 -1
  69. package/build/chunk-5YVFVF4T.js.map +0 -1
  70. package/build/chunk-62SRA77S.js +0 -4
  71. package/build/chunk-62SRA77S.js.map +0 -1
  72. package/build/chunk-B2BRLGRZ.js +0 -4
  73. package/build/chunk-IZOKP4UZ.js.map +0 -1
  74. package/build/chunk-L7P6I5SY.js +0 -4
  75. package/build/chunk-L7P6I5SY.js.map +0 -1
  76. package/build/chunk-NCYXC7TY.js +0 -4
  77. package/build/chunk-NCYXC7TY.js.map +0 -1
  78. package/build/chunk-SQGBFWJ2.js +0 -114
  79. package/build/chunk-SQGBFWJ2.js.map +0 -1
  80. package/build/chunk-T3UD2OLT.js +0 -233
  81. package/build/chunk-T3UD2OLT.js.map +0 -1
  82. package/build/chunk-UGTXCT5B.js.map +0 -1
  83. package/build/chunk-ZTW5IT5T.js +0 -4
  84. package/build/platform-sdk/chunk-DGX4CFXG.js +0 -2
  85. package/build/platform-sdk/chunk-DGX4CFXG.js.map +0 -1
  86. package/build/platform-sdk/chunk-TEDR2MDT.js +0 -2
  87. package/build/platform-sdk/chunk-UZ376HBX.js +0 -2
  88. package/build/platform-sdk/chunk-UZ376HBX.js.map +0 -1
  89. package/build/platform-sdk/esm-WXLS5NTC.js +0 -2
  90. package/build/platform-sdk/esm-WXLS5NTC.js.map +0 -1
  91. /package/build/{CreateVersionCommand-NJC6EUQ6.js.map → CreateVersionCommand-PMT33DT7.js.map} +0 -0
  92. /package/build/{PreviewCommand-R3AOKI4K.js.map → PreviewCommand-TLAH2QYA.js.map} +0 -0
  93. /package/build/{ServeCommand-QS4FDP4T.js.map → ServeCommand-IDZMCSAT.js.map} +0 -0
  94. /package/build/{build-BFTLTFIN.js.map → build-GUIJNSWL.js.map} +0 -0
  95. /package/build/{chunk-7RL4TN6T.js.map → chunk-33U542O7.js.map} +0 -0
  96. /package/build/{chunk-B2BRLGRZ.js.map → chunk-AT2TE5HS.js.map} +0 -0
  97. /package/build/{chunk-3OFSARA2.js.map → chunk-CYIUFMSD.js.map} +0 -0
  98. /package/build/{chunk-RUZJ2NCD.js.map → chunk-FFYM2OK5.js.map} +0 -0
  99. /package/build/{chunk-6MMLDNFM.js.map → chunk-PDLH2OMF.js.map} +0 -0
  100. /package/build/{chunk-RL3KEEB6.js.map → chunk-Y647PYH3.js.map} +0 -0
  101. /package/build/{chunk-GF543SV4.js.map → chunk-YL4Y5YEO.js.map} +0 -0
  102. /package/build/platform-sdk/{chunk-TEDR2MDT.js.map → chunk-SBZEOPXX.js.map} +0 -0
  103. /package/build/{preview-KSI26ITH.js.map → preview-RCAZQQRZ.js.map} +0 -0
  104. /package/build/{render-command-D47LZ2TZ.js.map → render-command-YI5IXTNY.js.map} +0 -0
@@ -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 $}from"./chunk-LRONHC7Z.js";import{C as V,Ma as z,Na as H,Oa as q,Ta as U,Ua as J,mb as K}from"./chunk-SQGBFWJ2.js";import{A as d,P as G,S as N,W as T,X as R,b as O,c as I,e as M,f as S,m as t,x as c}from"./chunk-UGTXCT5B.js";import{e as f,h as a}from"./chunk-V4TR6DCM.js";a();a();var L=f(O(),1);var v=f(I(),1);a();var o=f(O(),1),_=f(I(),1);a();var y=f(O(),1);import{createServer as ge}from"node:http";var Q=f(I(),1);a();var x=f(I(),1),te=t.any(),ne=t.enum(["info","error","warn","debug","log"]),se=t.object({message:t.array(te),level:ne,timestamp:t.number()}),ie=t.object({stack:t.string(),name:t.string(),message:t.string(),timestamp:t.number()}),me=t.object({_type:t.literal("log"),exceptions:t.array(ie),logs:t.array(se)}).passthrough(),pe=t.object({_type:t.literal("session-timeout")}).passthrough(),ae=t.discriminatedUnion("_type",[me,pe]),X=(0,x.variant)({Log:(0,x.fields)(),Exception:(0,x.fields)()}),P="/logs",Y=(e,n)=>{let i,g;if(e.method==="POST"&&e.url===P){let m="";e.on("data",s=>{m+=s.toString()}),e.on("end",()=>{let s;try{s=ae.parse(JSON.parse(m))}catch(r){return g(S.FailedToParseLog(),r,{body:m}),n.statusCode=400,n.end()}let p=[];s._type==="log"&&(p.push(...s.exceptions.map(r=>X.Exception(r))),p.push(...s.logs.map(r=>X.Log(r)))),(0,x.match)(s._type,{log:()=>{i(p)},"session-timeout":()=>{n.statusCode=200,n.end(),g(S.LogsConnectionTimeout(),{},{body:m})}}),n.statusCode=200,n.end()})}else n.statusCode=404,n.end("Not Found");let u={onLog:m=>(i=m,u),onError:m=>(g=m,u)};return u};var ce=/([0-9a-f-]{36})/,W=({onLog:e,version:n,appId:i})=>{let{reportError:g}=V(),{getAppByVersion:u}=q(),m=$(),s=H({type:"backoffice"}),p=(0,y.useRef)(),r=(0,y.useMemo)(()=>ge((l,B)=>{Y(l,B).onLog(e).onError((b,A,w)=>{throw r.close(),new M({code:b,cause:A,info:w})})}),[e]),k=(0,y.useMemo)(()=>new Promise(l=>{p.current=l}),[]);(0,y.useEffect)(()=>(r.listen(0,async()=>{let l=r.address().port;p.current?.(l)}),()=>{r.listening&&r.close()}),[r]);let{status:h}=N(async()=>{let l=await k,{url:B}=await m(l),{data:b}=await u({appId:i,version:n}),A=b.components.find(D=>D.compType===z.TOPOLOGY),w=ce.exec(A?.compData.topology.topology.backendApiUrl??"");if(!w?.[1])throw new M({code:S.FailedToGetLogsTopology()});let j=w[1],re={appId:i,deploymentId:j,destinationUrl:new URL(P,B).href};try{await s.request(U(re))}catch(D){throw r.close(),new M({code:S.FailedToConnectToLogsService(),cause:D})}return j},[]);return(0,y.useEffect)(()=>()=>{(0,Q.isType)(h,"Success")&&s.request(J({appId:i,deploymentId:h.result})).catch(g)},[]),h};a();var Z=f(O(),1);var F=({message:e,level:n})=>{let i="unknown";return typeof e=="object"?i=JSON.stringify(e):i=String(e),Z.default.createElement(d,{skin:n==="error"?"error":"standard"},i)};var ee=({version:e,appId:n})=>{let{t:i}=R(),[g,u]=(0,o.useState)([]),m=W({appId:n,version:e,onLog:(0,o.useCallback)(s=>{u(p=>[...p,...s])},[u])});return(0,_.match)(m,{Success:()=>o.default.createElement(c,{marginTop:1,marginBottom:1,flexDirection:"column"},o.default.createElement(c,{marginBottom:1,flexDirection:"column"},o.default.createElement(d,null,o.default.createElement(T,{i18nKey:"logs_command.listening_to_logs"})),o.default.createElement(d,null,o.default.createElement(T,{i18nKey:"logs_command.prod_env_logs",values:{version:e}}))),g.map((s,p)=>o.default.createElement(c,{key:p,flexDirection:"column"},o.default.createElement(c,{columnGap:1},o.default.createElement(c,{flexShrink:0},o.default.createElement(d,{skin:"secondary"},new Date(s.timestamp).toLocaleTimeString())),o.default.createElement(c,{columnGap:1},(0,_.match)(s,{Log:({message:r,level:k})=>r.map((h,l)=>o.default.createElement(F,{key:`${p}-${l}`,message:h,level:k})),Exception:({message:r})=>o.default.createElement(F,{key:p,message:r,level:"error"})}))),(0,_.match)(s,{Log:()=>null,Exception:({stack:r})=>o.default.createElement(d,{skin:"error"},r)})))),Loading:()=>o.default.createElement(G,{text:i("logs_command.connecting")}),Error:()=>null})};var oe=(0,v.variant)({Valid:(0,v.fields)(),Error:(0,v.fields)()}),le=({version:e})=>e?oe.Valid({version:e}):oe.Error({message:L.default.createElement(T,{i18nKey:"logs_command.logs_without_version"})}),de=({version:e})=>{let{model:n}=K(),i=(0,L.useMemo)(()=>le({version:e}),[e]);return(0,v.match)(i,{Valid:({version:g})=>L.default.createElement(ee,{version:g,appId:n.config.appId}),Error:({message:g})=>L.default.createElement(c,{rowGap:1,marginTop:1,marginBottom:1,flexDirection:"column"},L.default.createElement(c,{gap:1},L.default.createElement(d,{skin:"error"},g)))})};export{de as LogsCommand};
4
- //# sourceMappingURL=LogsCommand-5HFJDCHS.js.map
3
+ import{a as $}from"./chunk-SBVOKZ7F.js";import{C as V,Oa as z,Pa as H,Qa as q,Va as U,Wa as J,qb as K}from"./chunk-DCT2GH4K.js";import{A as d,P as G,S as N,W as T,X as R,b as O,c as I,e as M,f as S,m as t,x as c}from"./chunk-W5VAOQOV.js";import{e as f,h as a}from"./chunk-V4TR6DCM.js";a();a();var L=f(O(),1);var v=f(I(),1);a();var o=f(O(),1),_=f(I(),1);a();var y=f(O(),1);import{createServer as ge}from"node:http";var Q=f(I(),1);a();var x=f(I(),1),te=t.any(),ne=t.enum(["info","error","warn","debug","log"]),se=t.object({message:t.array(te),level:ne,timestamp:t.number()}),ie=t.object({stack:t.string(),name:t.string(),message:t.string(),timestamp:t.number()}),me=t.object({_type:t.literal("log"),exceptions:t.array(ie),logs:t.array(se)}).passthrough(),pe=t.object({_type:t.literal("session-timeout")}).passthrough(),ae=t.discriminatedUnion("_type",[me,pe]),X=(0,x.variant)({Log:(0,x.fields)(),Exception:(0,x.fields)()}),P="/logs",Y=(e,n)=>{let i,g;if(e.method==="POST"&&e.url===P){let m="";e.on("data",s=>{m+=s.toString()}),e.on("end",()=>{let s;try{s=ae.parse(JSON.parse(m))}catch(r){return g(S.FailedToParseLog(),r,{body:m}),n.statusCode=400,n.end()}let p=[];s._type==="log"&&(p.push(...s.exceptions.map(r=>X.Exception(r))),p.push(...s.logs.map(r=>X.Log(r)))),(0,x.match)(s._type,{log:()=>{i(p)},"session-timeout":()=>{n.statusCode=200,n.end(),g(S.LogsConnectionTimeout(),{},{body:m})}}),n.statusCode=200,n.end()})}else n.statusCode=404,n.end("Not Found");let u={onLog:m=>(i=m,u),onError:m=>(g=m,u)};return u};var ce=/([0-9a-f-]{36})/,W=({onLog:e,version:n,appId:i})=>{let{reportError:g}=V(),{getAppByVersion:u}=q(),m=$(),s=H({type:"backoffice"}),p=(0,y.useRef)(),r=(0,y.useMemo)(()=>ge((l,B)=>{Y(l,B).onLog(e).onError((b,A,w)=>{throw r.close(),new M({code:b,cause:A,info:w})})}),[e]),k=(0,y.useMemo)(()=>new Promise(l=>{p.current=l}),[]);(0,y.useEffect)(()=>(r.listen(0,async()=>{let l=r.address().port;p.current?.(l)}),()=>{r.listening&&r.close()}),[r]);let{status:h}=N(async()=>{let l=await k,{url:B}=await m(l),{data:b}=await u({appId:i,version:n}),A=b.components.find(D=>D.compType===z.TOPOLOGY),w=ce.exec(A?.compData.topology.topology.backendApiUrl??"");if(!w?.[1])throw new M({code:S.FailedToGetLogsTopology()});let j=w[1],re={appId:i,deploymentId:j,destinationUrl:new URL(P,B).href};try{await s.request(U(re))}catch(D){throw r.close(),new M({code:S.FailedToConnectToLogsService(),cause:D})}return j},[]);return(0,y.useEffect)(()=>()=>{(0,Q.isType)(h,"Success")&&s.request(J({appId:i,deploymentId:h.result})).catch(g)},[]),h};a();var Z=f(O(),1);var F=({message:e,level:n})=>{let i="unknown";return typeof e=="object"?i=JSON.stringify(e):i=String(e),Z.default.createElement(d,{skin:n==="error"?"error":"standard"},i)};var ee=({version:e,appId:n})=>{let{t:i}=R(),[g,u]=(0,o.useState)([]),m=W({appId:n,version:e,onLog:(0,o.useCallback)(s=>{u(p=>[...p,...s])},[u])});return(0,_.match)(m,{Success:()=>o.default.createElement(c,{marginTop:1,marginBottom:1,flexDirection:"column"},o.default.createElement(c,{marginBottom:1,flexDirection:"column"},o.default.createElement(d,null,o.default.createElement(T,{i18nKey:"logs_command.listening_to_logs"})),o.default.createElement(d,null,o.default.createElement(T,{i18nKey:"logs_command.prod_env_logs",values:{version:e}}))),g.map((s,p)=>o.default.createElement(c,{key:p,flexDirection:"column"},o.default.createElement(c,{columnGap:1},o.default.createElement(c,{flexShrink:0},o.default.createElement(d,{skin:"secondary"},new Date(s.timestamp).toLocaleTimeString())),o.default.createElement(c,{columnGap:1},(0,_.match)(s,{Log:({message:r,level:k})=>r.map((h,l)=>o.default.createElement(F,{key:`${p}-${l}`,message:h,level:k})),Exception:({message:r})=>o.default.createElement(F,{key:p,message:r,level:"error"})}))),(0,_.match)(s,{Log:()=>null,Exception:({stack:r})=>o.default.createElement(d,{skin:"error"},r)})))),Loading:()=>o.default.createElement(G,{text:i("logs_command.connecting")}),Error:()=>null})};var oe=(0,v.variant)({Valid:(0,v.fields)(),Error:(0,v.fields)()}),le=({version:e})=>e?oe.Valid({version:e}):oe.Error({message:L.default.createElement(T,{i18nKey:"logs_command.logs_without_version"})}),de=({version:e})=>{let{model:n}=K(),i=(0,L.useMemo)(()=>le({version:e}),[e]);return(0,v.match)(i,{Valid:({version:g})=>L.default.createElement(ee,{version:g,appId:n.config.appId}),Error:({message:g})=>L.default.createElement(c,{rowGap:1,marginTop:1,marginBottom:1,flexDirection:"column"},L.default.createElement(c,{gap:1},L.default.createElement(d,{skin:"error"},g)))})};export{de as LogsCommand};
4
+ //# sourceMappingURL=LogsCommand-P7GF73SY.js.map
@@ -1 +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 Loading: () => <Spinner text={t('logs_command.connecting')} />,\n Error: () => null,\n });\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { createServer } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { useAsync } from '@wix/cli-ui-kit';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\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 { useDevCenterClient, ComponentType } from '@wix/dev-center-client';\nimport type { TopologyComponent } from '@wix/dev-center-client';\nimport { isType } from 'variant';\nimport type { OnLog } from './logsReqHandler.js';\nimport { LOGS_ENDPOINT, logsReqHandler } from './logsReqHandler.js';\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 { reportError } = useErrorReporter();\n const { getAppByVersion } = useDevCenterClient();\n const createTunnelClient = useTunnel();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const localServerPortResolverRef = useRef<(port: number) => void>();\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 const localServerPortPromise = useMemo(() => {\n return new Promise<number>((resolve) => {\n localServerPortResolverRef.current = resolve;\n });\n }, []);\n\n useEffect(() => {\n server.listen(0, async () => {\n const port = (server.address() as AddressInfo).port;\n localServerPortResolverRef.current?.(port);\n });\n return () => {\n if (server.listening) {\n server.close();\n }\n };\n }, [server]);\n\n const { status } = useAsync(async () => {\n const localServerPort = await localServerPortPromise;\n const { url: tunnelUrl } = await createTunnelClient(localServerPort);\n const { data } = await getAppByVersion({ appId, version });\n\n const topologyComponent = data.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\n if (!match?.[1]) {\n throw new CliError({\n code: CliErrorCode.FailedToGetLogsTopology(),\n });\n }\n const deploymentId = match[1];\n\n const loggerReq = {\n appId,\n deploymentId,\n destinationUrl: new URL(LOGS_ENDPOINT, tunnelUrl).href,\n };\n\n try {\n await httpClient.request(attachLogger(loggerReq));\n } catch (error) {\n server.close();\n throw new CliError({\n code: CliErrorCode.FailedToConnectToLogsService(),\n cause: error,\n });\n }\n\n return deploymentId;\n }, []);\n\n useEffect(() => {\n // Logs should be deattached only on unmount.\n // This is why this `useEffect` has only `return` statement.\n return () => {\n if (isType(status, 'Success')) {\n httpClient\n .request(\n deattachLogger({\n appId,\n deploymentId: status.result,\n })\n )\n .catch(reportError);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return status;\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 } from 'variant';\nimport 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 res.statusCode = 200;\n res.end();\n\n onError(CliErrorCode.LogsConnectionTimeout(), {}, { body });\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 from 'react';\nimport 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","import_react","import_variant","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","createServer","import_variant","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","deploymentIdRegex","useLogsServer","onLog","version","appId","reportError","useErrorReporter","getAppByVersion","useDevCenterClient","createTunnelClient","useTunnel","httpClient","useHttpClient","localServerPortResolverRef","server","createServer","req","res","logsReqHandler","code","err","info","CliError","localServerPortPromise","resolve","port","status","useAsync","localServerPort","tunnelUrl","data","topologyComponent","component","ComponentType","match","CliErrorCode","deploymentId","loggerReq","LOGS_ENDPOINT","attachLogger","error","deattachLogger","init_esm_shims","import_react","ServerLogMessage","message","level","content","React","Text","DisplayServerLogs","version","appId","t","useTranslation","logs","setLogs","serverResult","useLogsServer","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","DisplayServerLogs","message","Box_default","Text"]}
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 Loading: () => <Spinner text={t('logs_command.connecting')} />,\n Error: () => null,\n });\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { createServer } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { useAsync } from '@wix/cli-ui-kit';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\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 { useDevCenterClient, ComponentType } from '@wix/dev-center-client';\nimport type { TopologyComponent } from '@wix/dev-center-client';\nimport { isType } from 'variant';\nimport type { OnLog } from './logsReqHandler.js';\nimport { LOGS_ENDPOINT, logsReqHandler } from './logsReqHandler.js';\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 { reportError } = useErrorReporter();\n const { getAppByVersion } = useDevCenterClient();\n const createTunnelClient = useTunnel();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const localServerPortResolverRef = useRef<(port: number) => void>();\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 const localServerPortPromise = useMemo(() => {\n return new Promise<number>((resolve) => {\n localServerPortResolverRef.current = resolve;\n });\n }, []);\n\n useEffect(() => {\n server.listen(0, async () => {\n const port = (server.address() as AddressInfo).port;\n localServerPortResolverRef.current?.(port);\n });\n return () => {\n if (server.listening) {\n server.close();\n }\n };\n }, [server]);\n\n const { status } = useAsync(async () => {\n const localServerPort = await localServerPortPromise;\n const { url: tunnelUrl } = await createTunnelClient(localServerPort);\n const { data } = await getAppByVersion({ appId, version });\n\n const topologyComponent = data.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\n if (!match?.[1]) {\n throw new CliError({\n code: CliErrorCode.FailedToGetLogsTopology(),\n });\n }\n const deploymentId = match[1];\n\n const loggerReq = {\n appId,\n deploymentId,\n destinationUrl: new URL(LOGS_ENDPOINT, tunnelUrl).href,\n };\n\n try {\n await httpClient.request(attachLogger(loggerReq));\n } catch (error) {\n server.close();\n throw new CliError({\n code: CliErrorCode.FailedToConnectToLogsService(),\n cause: error,\n });\n }\n\n return deploymentId;\n }, []);\n\n useEffect(() => {\n // Logs should be deattached only on unmount.\n // This is why this `useEffect` has only `return` statement.\n return () => {\n if (isType(status, 'Success')) {\n httpClient\n .request(\n deattachLogger({\n appId,\n deploymentId: status.result,\n })\n )\n .catch(reportError);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return status;\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 } from 'variant';\nimport 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;\ntype 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 res.statusCode = 200;\n res.end();\n\n onError(CliErrorCode.LogsConnectionTimeout(), {}, { body });\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 from 'react';\nimport 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","import_react","import_variant","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","createServer","import_variant","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","deploymentIdRegex","useLogsServer","onLog","version","appId","reportError","useErrorReporter","getAppByVersion","useDevCenterClient","createTunnelClient","useTunnel","httpClient","useHttpClient","localServerPortResolverRef","server","createServer","req","res","logsReqHandler","code","err","info","CliError","localServerPortPromise","resolve","port","status","useAsync","localServerPort","tunnelUrl","data","topologyComponent","component","ComponentType","match","CliErrorCode","deploymentId","loggerReq","LOGS_ENDPOINT","attachLogger","error","deattachLogger","init_esm_shims","import_react","ServerLogMessage","message","level","content","React","Text","DisplayServerLogs","version","appId","t","useTranslation","logs","setLogs","serverResult","useLogsServer","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","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-CYIUFMSD.js";import"./chunk-44AYFU7B.js";import"./chunk-RKLU4NIT.js";import"./chunk-PDLH2OMF.js";import"./chunk-VBODBNSF.js";import"./chunk-Y647PYH3.js";import"./chunk-33U542O7.js";import"./chunk-FFYM2OK5.js";import"./chunk-244VWIWT.js";import"./chunk-O3XQFKZB.js";import"./chunk-DCT2GH4K.js";import"./chunk-W5VAOQOV.js";import"./chunk-V4TR6DCM.js";export{a as PreviewCommand};
4
+ //# sourceMappingURL=PreviewCommand-TLAH2QYA.js.map
@@ -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 D,b as L}from"./chunk-5YVFVF4T.js";import{b as U,c as K,d as N}from"./chunk-IZOKP4UZ.js";import"./chunk-L7P6I5SY.js";import"./chunk-RL3KEEB6.js";import{a as F,b as h}from"./chunk-T3UD2OLT.js";import{b as j}from"./chunk-RUZJ2NCD.js";import{g as b,h as k,j as f,k as V}from"./chunk-3HELHIBJ.js";import{b as M}from"./chunk-NCYXC7TY.js";import{mb as c}from"./chunk-SQGBFWJ2.js";import{A as E,B as I,C as y,E as B,O as T,P as _,S as O,W as a,X as A,b as d,c as R,x as i}from"./chunk-UGTXCT5B.js";import{e as s,h as o}from"./chunk-V4TR6DCM.js";o();o();var S=s(d(),1);o();var n=s(d(),1),q=s(R(),1);o();var m=s(d(),1);import{preview as ee}from"vite";function W(){let t=(0,m.useRef)(),{model:r}=c();return(0,m.useEffect)(()=>()=>{t.current?.httpServer.close()},[]),(0,m.useCallback)(async()=>{let v=await ee(await h(r,{type:"build"}));return t.current=v,F(v)},[r])}var z=(0,n.createContext)(null),g=({children:t})=>{let{model:r}=c(),{t:v}=A(),{site:H}=f(),J=b(),{createOverride:Q}=K(),X=W(),{status:Y}=O(async()=>{await D(r.projectFolder);let p=await X(),x=await j(r.projectFolder),P=M(x,p),Z=await J.createAppRelease(P,r.config.projectId),C=N(r),{id:$}=C?await Q({appId:r.config.appId,siteId:H.id,overrides:C}):await Promise.resolve({id:void 0});return{armTag:Z,serverUrl:p,siteOverrideId:$}},[]);return(0,q.match)(Y,{Error:()=>null,Loading:()=>n.default.createElement(_,{text:v("serve_command.starting_serve_environment")}),Success:({result:{armTag:p,serverUrl:x,siteOverrideId:P}})=>n.default.createElement(z.Provider,{value:{serverUrl:x}},n.default.createElement(V,{siteOverrideId:P},n.default.createElement(k,{armTag:p},t)))})};function w(){let t=(0,n.useContext)(z);if(t===null)throw new Error("useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>");return t}o();var e=s(d(),1);function G(){let{site:t}=f(),{serverUrl:r}=w();return e.default.createElement(i,{flexDirection:"column"},e.default.createElement(i,{gap:1},e.default.createElement(E,{skin:"success"},e.default.createElement(B,null)),e.default.createElement(a,{i18nKey:"serve_command.starting_serve_environment_success",components:[e.default.createElement(T,{url:r})]})),e.default.createElement(i,{gap:1},e.default.createElement(I,null),e.default.createElement(a,{i18nKey:"serve_command.production_build"})),e.default.createElement(i,{gap:1,paddingTop:1,paddingBottom:1},e.default.createElement(y,null),e.default.createElement(a,{i18nKey:"general.dev_site.current",values:{name:t.displayName}})),e.default.createElement(i,{paddingBottom:1,flexDirection:"column"},e.default.createElement(L,null)))}var re=()=>S.default.createElement(U,null,S.default.createElement(g,null,S.default.createElement(G,null)));export{re as ServeCommand,g as ServeEnvironmentProvider,w as useServeEnvironment};
4
- //# sourceMappingURL=ServeCommand-QS4FDP4T.js.map
3
+ import{a as D,b as L}from"./chunk-44AYFU7B.js";import{b as U,c as K,d as N}from"./chunk-RKLU4NIT.js";import"./chunk-VBODBNSF.js";import"./chunk-Y647PYH3.js";import{a as F,b as h}from"./chunk-JLIQSEAZ.js";import{b as j}from"./chunk-FFYM2OK5.js";import{g as b,h as k,j as f,k as V}from"./chunk-244VWIWT.js";import{b as M}from"./chunk-O3XQFKZB.js";import{qb as c}from"./chunk-DCT2GH4K.js";import{A as E,B as I,C as y,E as B,O as T,P as _,S as O,W as a,X as A,b as d,c as R,x as i}from"./chunk-W5VAOQOV.js";import{e as s,h as o}from"./chunk-V4TR6DCM.js";o();o();var S=s(d(),1);o();var n=s(d(),1),q=s(R(),1);o();var m=s(d(),1);import{preview as ee}from"vite";function W(){let t=(0,m.useRef)(),{model:r}=c();return(0,m.useEffect)(()=>()=>{t.current?.httpServer.close()},[]),(0,m.useCallback)(async()=>{let v=await ee(await h(r,{type:"build"}));return t.current=v,F(v)},[r])}var z=(0,n.createContext)(null),g=({children:t})=>{let{model:r}=c(),{t:v}=A(),{site:H}=f(),J=b(),{createOverride:Q}=K(),X=W(),{status:Y}=O(async()=>{await D(r.projectFolder);let p=await X(),x=await j(r.projectFolder),P=M(x,p),Z=await J.createAppRelease(P,r.config.projectId),C=N(r),{id:$}=C?await Q({appId:r.config.appId,siteId:H.id,overrides:C}):await Promise.resolve({id:void 0});return{armTag:Z,serverUrl:p,siteOverrideId:$}},[]);return(0,q.match)(Y,{Error:()=>null,Loading:()=>n.default.createElement(_,{text:v("serve_command.starting_serve_environment")}),Success:({result:{armTag:p,serverUrl:x,siteOverrideId:P}})=>n.default.createElement(z.Provider,{value:{serverUrl:x}},n.default.createElement(V,{siteOverrideId:P},n.default.createElement(k,{armTag:p},t)))})};function w(){let t=(0,n.useContext)(z);if(t===null)throw new Error("useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>");return t}o();var e=s(d(),1);function G(){let{site:t}=f(),{serverUrl:r}=w();return e.default.createElement(i,{flexDirection:"column"},e.default.createElement(i,{gap:1},e.default.createElement(E,{skin:"success"},e.default.createElement(B,null)),e.default.createElement(a,{i18nKey:"serve_command.starting_serve_environment_success",components:[e.default.createElement(T,{url:r})]})),e.default.createElement(i,{gap:1},e.default.createElement(I,null),e.default.createElement(a,{i18nKey:"serve_command.production_build"})),e.default.createElement(i,{gap:1,paddingTop:1,paddingBottom:1},e.default.createElement(y,null),e.default.createElement(a,{i18nKey:"general.dev_site.current",values:{name:t.displayName}})),e.default.createElement(i,{paddingBottom:1,flexDirection:"column"},e.default.createElement(L,null)))}var re=()=>S.default.createElement(U,null,S.default.createElement(g,null,S.default.createElement(G,null)));export{re as ServeCommand,g as ServeEnvironmentProvider,w as useServeEnvironment};
4
+ //# sourceMappingURL=ServeCommand-IDZMCSAT.js.map
@@ -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 s,c as u,d as f}from"./chunk-62SRA77S.js";import{b as m,c as d}from"./chunk-T3UD2OLT.js";import{a as l}from"./chunk-RUZJ2NCD.js";import"./chunk-NCYXC7TY.js";import{Wa as c,kb as a,va as i}from"./chunk-SQGBFWJ2.js";import{c as E,e as t,f as n}from"./chunk-UGTXCT5B.js";import{e as g,h as p}from"./chunk-V4TR6DCM.js";p();import{cwd as b}from"node:process";import{build as w}from"vite";var r=g(E(),1);async function M(){let o=await a(b());if(o.components.length===0)throw new t({code:n.NoExtensionsFound()});s(o.components);let C=o.components.filter(e=>(0,r.isType)(e,i.Api)||(0,r.isType)(e,i.Event)||(0,r.isType)(e,i.ServicePlugin)).length>0?await w(await d(o,{type:"build"},{appSecret:"__APP_SECRET__",webhookPublicKey:"__WEBHOOK_PUBLIC_KEY__"})).catch(e=>{throw new t({code:n.FailedToBuildApp({cause:e}),cause:e})}):void 0,_=await w(await m(o,{type:"build"},{baseBackendUrl:c})).catch(e=>{throw new t({code:n.FailedToBuildApp({cause:e}),cause:e})}),B=await u({appId:o.config.appId,components:o.components,sentryDSN:o.config.sentryDSN,componentSourceBuilder:f(o,{clientBuildOutput:_},{backendBuildOutput:C})});await l({projectFolder:o.projectFolder,manifest:B})}export{M as build};
4
- //# sourceMappingURL=build-BFTLTFIN.js.map
3
+ import{a as s,c as u,d as f}from"./chunk-3Y4NOBS4.js";import{b as m,c as d}from"./chunk-JLIQSEAZ.js";import{a as l}from"./chunk-FFYM2OK5.js";import"./chunk-O3XQFKZB.js";import{Ya as c,ob as a,xa as i}from"./chunk-DCT2GH4K.js";import{c as E,e as t,f as n}from"./chunk-W5VAOQOV.js";import{e as g,h as p}from"./chunk-V4TR6DCM.js";p();import{cwd as b}from"node:process";import{build as w}from"vite";var r=g(E(),1);async function M(){let o=await a(b());if(o.components.length===0)throw new t({code:n.NoExtensionsFound()});s(o.components);let C=o.components.filter(e=>(0,r.isType)(e,i.Api)||(0,r.isType)(e,i.Event)||(0,r.isType)(e,i.ServicePlugin)).length>0?await w(await d(o,{type:"build"},{appSecret:"__APP_SECRET__",webhookPublicKey:"__WEBHOOK_PUBLIC_KEY__"})).catch(e=>{throw new t({code:n.FailedToBuildApp({cause:e}),cause:e})}):void 0,_=await w(await m(o,{type:"build"},{baseBackendUrl:c})).catch(e=>{throw new t({code:n.FailedToBuildApp({cause:e}),cause:e})}),B=await u({appId:o.config.appId,components:o.components,sentryDSN:o.config.sentryDSN,componentSourceBuilder:f(o,{clientBuildOutput:_},{backendBuildOutput:C})});await l({projectFolder:o.projectFolder,manifest:B})}export{M as build};
4
+ //# sourceMappingURL=build-GUIJNSWL.js.map
@@ -1,4 +1,4 @@
1
1
  import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
- import{Ka as G,Na as I,a as _,b as A,d as l,f as O,la as q,mb as U,x as B}from"./chunk-SQGBFWJ2.js";import{A as H,M as W,O as k,W as Q,b as w,c as L,e as f,f as R,m as c,n as T,y as V}from"./chunk-UGTXCT5B.js";import{e as u,h as a}from"./chunk-V4TR6DCM.js";a();a();var ce={},de={},le={},ue={};var fe={},he={},ve={},ge={};function D(t){var e={"api._api_base_domain_":[{srcPath:"/apps-release-manager-service-web",destPath:""}],"bo._base_domain_":[{srcPath:"/apps-release-manager-service-web",destPath:""}],"wixbo.ai":[{srcPath:"/apps-release-manager-service-web",destPath:""}],"www._base_domain_":[{srcPath:"/apps-release-manager-service-web/artifacts-release-manager/app-releases",destPath:"/artifacts-release-manager/app-releases"},{srcPath:"/_api/apps-release-manager-service-web/artifacts-release-manager/app-releases",destPath:"/artifacts-release-manager/app-releases"},{srcPath:"/apps-release-manager-service-web/apps/create",destPath:"/apps/create"},{srcPath:"/apps-release-manager-service-web/apps/promote",destPath:"/apps/promote"},{srcPath:"/apps-release-manager-service-web/apps/tags",destPath:"/apps/tags"},{srcPath:"/apps-release-manager-service-web/apps/create-components",destPath:"/apps/create-components"}],"manage._base_domain_":[{srcPath:"/apps-release-manager-service-web/apps/promote",destPath:"/apps/promote"},{srcPath:"/apps-release-manager-service-web/apps/create",destPath:"/apps/create"},{srcPath:"/apps-release-manager-service-web/apps/tags",destPath:"/apps/tags"},{srcPath:"/apps-release-manager-service-web/apps/create-components",destPath:"/apps/create-components"}]};return A(Object.assign(t,{domainToMappings:e}))}function K(t){var e=l(ce,{}),r=e.toJSON,s=e.fromJSON,i=l(de,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"POST",methodFqn:"com.wix.ctp.AppsReleaseManagerService.CreateAppRelease",url:D({protoPath:"/apps/create/{appId}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}function X(t){var e=l(ve,{}),r=e.toJSON,s=e.fromJSON,i=l(ge,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"PUT",methodFqn:"com.wix.ctp.AppsReleaseManagerService.UpdateAppRelease",url:D({protoPath:"/apps/tags/{tag}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}function Y(t){var e=l(le,{}),r=e.toJSON,s=e.fromJSON,i=l(ue,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"POST",methodFqn:"com.wix.ctp.AppsReleaseManagerService.CreateComponents",url:D({protoPath:"/apps/create-components/{appId}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}function Z(t){var e=l(fe,{}),r=e.toJSON,s=e.fromJSON,i=l(he,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"POST",methodFqn:"com.wix.ctp.AppsReleaseManagerService.PromoteAppReleaseToDevCenter",url:D({protoPath:"/apps/promote/{appId}/{tag}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}var N=u(L(),1);a();var ee=c.object({newVersion:c.string()}),te=c.object({tag:c.string()});var{AppPermissionDenied:M}=R,re=(0,N.variant)({TagUpdated:{},TagNotFound:(0,N.fields)()}),P=class{constructor(e){this.httpClient=e;let{minRetryTimeout:r}=T();this.retryOptions={retries:3,minTimeout:r,maxTimeout:3*1e3}}retryOptions;createComponents=async(e,r,s)=>{try{await _(()=>this.httpClient.request(Y({appId:e,componentConfigs:r,projectId:s})),this.retryOptions)}catch(i){throw O(i)&&i.response?.status===403?new f({code:M({appId:e}),cause:i}):new f({code:R.FailedToCreateComponents(),cause:i})}};createAppRelease=async(e,r)=>{try{let{data:s}=await _(()=>this.httpClient.request(K({appId:e.appId,componentConfigs:e.components,projectId:r})),this.retryOptions);return te.parse(s).tag}catch(s){throw O(s)&&s.response?.status===403?new f({code:M({appId:e.appId}),cause:s}):new f({code:R.FailedToCreateAppRelease(),cause:s})}};updateAppRelease=async(e,r)=>{try{return await _(()=>this.httpClient.request(X({appId:e.appId,componentConfigs:e.components,tag:r})),this.retryOptions),re.TagUpdated()}catch(s){if(O(s)){if(s.response?.status===404)return re.TagNotFound({cause:s});if(s.response?.status===403)throw new f({code:M({appId:e.appId}),cause:s})}throw new f({code:R.FailedToUpdateAppRelease(),cause:s})}};promoteToDevCenter=async(e,r,s)=>{let{data:i}=await _(()=>this.httpClient.request(Z({appId:e,tag:r,versionType:s})),this.retryOptions);return ee.parse(i)}};a();var se=u(w(),1);function Se(){let t=I({type:"backoffice"});return(0,se.useMemo)(()=>new P(t),[t])}a();a();var x=u(w(),1),ae=(0,x.createContext)(null),Xe=({children:t,armTag:e})=>x.default.createElement(ae.Provider,{value:{armTag:e}},t),E=()=>{let t=(0,x.useContext)(ae);if(t===null)throw new Error("useArmTag() cannot be used without an <ArmTagProvider>");return t};a();var pe=u(w(),1);a();var oe=u(w(),1),ie=(0,oe.createContext)(null);function J(){let t=(0,pe.useContext)(ie);if(t===null)throw new Error("useSiteId() cannot be used without an <SiteIdProvider>");return t}a();var y=u(w(),1),ne=(0,y.createContext)(null),ot=({children:t,siteOverrideId:e})=>y.default.createElement(ne.Provider,{value:{siteOverrideId:e}},t),j=()=>{let t=(0,y.useContext)(ne);if(t===null)throw new Error("useSiteOverrideId() cannot be used without an <SiteOverrideProvider>");return t};a();a();var _e={},Re={sites:"_site"},we={createdDate:"google.protobuf.Timestamp",updatedDate:"google.protobuf.Timestamp",trashedDate:"google.protobuf.Timestamp"};function xe(t){var e={"www._base_domain_":[{srcPath:"/_api/sites-list",destPath:"/api"},{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"feedback._base_domain_":[{srcPath:"/_api/sites-list",destPath:"/api"}],"manage._base_domain_":[{srcPath:"/_api/sites-list",destPath:"/api"},{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"},{srcPath:"/_api/sites-list-data",destPath:"/api/sites-list-data"}],"www.wixapis.com":[{srcPath:"/site-list/v2/sites",destPath:"/v2/sites"}],"api._api_base_domain_":[{srcPath:"/sites-list",destPath:""}],"bo._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"wixbo.ai":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"dev._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"editor._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"blocks._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"create.editorx":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}]};return A(Object.assign(t,{domainToMappings:e}))}function z(t){var e=l(_e,{}),r=e.toJSON,s=e.fromJSON,i=l(Re,{_site:we}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.site_list.v2.site",method:"POST",methodFqn:"com.wixpress.sitelist.api.SiteListServiceV2.QuerySites",url:xe({protoPath:"/v2/sites/query",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}a();var ye=c.object({id:c.string(),displayName:c.string(),viewUrl:c.union([c.string().url(),c.literal("")]).optional()}),$=c.object({sites:c.array(ye)});var C=class{constructor(e){this.httpClient=e;let{minRetryTimeout:r}=T();this.retryOptions={retries:3,minTimeout:r,maxTimeout:3*1e3}}retryOptions;querySites=async(e={})=>{try{let{data:r}=await _(()=>this.httpClient.request(z(e)),this.retryOptions);return $.parse(r).sites}catch(r){throw new f({code:R.FailedToQuerySites(),cause:r,info:{...e}})}};getSite=async e=>{try{let{data:r}=await _(()=>this.httpClient.request(z({query:{filter:{id:{$in:[e]}}}})),this.retryOptions),{sites:s}=$.parse(r);return s.at(0)??null}catch(r){throw new f({code:R.FailedToGetSite(),cause:r,info:{id:e}})}}};a();var me=u(w(),1);function Pe(){let t=I({type:"backoffice"});return(0,me.useMemo)(()=>new C(t),[t])}a();a();var b=u(L(),1),F=(0,b.variant)({NotConfigured:{},NotFound:(0,b.fields)(),Resolved:(0,b.fields)()});a();async function Ft({projectFolder:t,siteListClient:{getSite:e},siteId:r,writeDebugLog:s}){let i=r||(await G(t,s))?.siteId;if(!i)return F.NotConfigured();let o=await e(i);return o?F.Resolved({site:o}):F.NotFound({id:i})}a();var S=u(w(),1);var h=u(L(),1);var Ce=(t,e)=>{let r=(0,h.isType)(e,q.Site)?`${t.origin}/_api`:"https://apps.wix.com",s=new URL(`${r}/elgar-server/redirect`);return["specs.UseAppsRuntimeCache","specs.ApplyQueryParamsOverrides"].forEach(o=>{s.searchParams.append("experiments",`${o}#true`)}),s.searchParams.append("redirectToUrl",t.toString()),s.searchParams.append("staticsVersions","{}"),s};function Wt(){let{model:t}=U(),{site:e}=J(),{armTag:r}=E(),{siteOverrideId:s}=j();return(0,S.useCallback)(i=>be(i,{site:e,appId:t.config.appId,tag:r,siteOverrideId:s}),[r,t.config.appId,e,s])}function be(t,e){let{site:r,tag:s,siteOverrideId:i}=e,o=(0,h.match)(t,{Dashboard:()=>new URL(`dashboard/${r.id}`,"https://manage.wix.com/"),Editor:()=>new URL(`https://wix.com/editor/${r.id}`),Site:()=>{let d=new URL(r.viewUrl);return i&&d.searchParams.append("site-override",i),d}});return o.searchParams.append("apps-override",s),(0,h.isOfVariant)(t,(0,h.variantList)([q.Editor,q.Site]))?Ce(o,t).toString():o.toString()}function kt(){let{model:t}=U(),{site:e}=J(),{armTag:r}=E(),{siteOverrideId:s}=j();return(0,S.useCallback)(i=>Ae(i,{site:e,appId:t.config.appId,tag:r,siteOverrideId:s}),[r,t.config.appId,e,s])}function Ae(t,e){let{appId:r,site:s,tag:i}=e,o=(0,h.matcher)(t).with({DashboardPage:()=>new URL(`dashboard/${s.id}/app/${r}${t.route}`,"https://manage.wix.com/")}).when(["DashboardMenuPlugin","DashboardPlugin","DashboardModal"],()=>new URL(`dashboard/${s.id}${t.route}`,"https://manage.wix.com/")).complete();return o.searchParams.append("apps-override",i),o.toString()}var Qt=async({url:t,title:e},r)=>{try{await B(t)}catch{r({type:"error",prefix:"app",msg:S.default.createElement(W,{type:"error"},S.default.createElement(Q,{i18nKey:"general.open_page_error",components:[S.default.createElement(H,{bold:!0})],values:{title:e}}),S.default.createElement(V,null),S.default.createElement(k,{url:t}))})}};export{C as a,Pe as b,ie as c,F as d,Ft as e,P as f,Se as g,Xe as h,E as i,J as j,ot as k,Ce as l,Wt as m,be as n,kt as o,Ae as p,Qt as q};
4
- //# sourceMappingURL=chunk-3HELHIBJ.js.map
3
+ import{Ma as G,Pa as I,a as _,b as A,d as l,f as O,ma as q,qb as U,x as B}from"./chunk-DCT2GH4K.js";import{A as H,M as W,O as k,W as Q,b as w,c as L,e as f,f as R,m as c,n as T,y as V}from"./chunk-W5VAOQOV.js";import{e as u,h as a}from"./chunk-V4TR6DCM.js";a();a();var ce={},de={},le={},ue={};var fe={},he={},ve={},ge={};function D(t){var e={"api._api_base_domain_":[{srcPath:"/apps-release-manager-service-web",destPath:""}],"bo._base_domain_":[{srcPath:"/apps-release-manager-service-web",destPath:""}],"wixbo.ai":[{srcPath:"/apps-release-manager-service-web",destPath:""}],"www._base_domain_":[{srcPath:"/apps-release-manager-service-web/artifacts-release-manager/app-releases",destPath:"/artifacts-release-manager/app-releases"},{srcPath:"/_api/apps-release-manager-service-web/artifacts-release-manager/app-releases",destPath:"/artifacts-release-manager/app-releases"},{srcPath:"/apps-release-manager-service-web/apps/create",destPath:"/apps/create"},{srcPath:"/apps-release-manager-service-web/apps/promote",destPath:"/apps/promote"},{srcPath:"/apps-release-manager-service-web/apps/tags",destPath:"/apps/tags"},{srcPath:"/apps-release-manager-service-web/apps/create-components",destPath:"/apps/create-components"}],"manage._base_domain_":[{srcPath:"/apps-release-manager-service-web/apps/promote",destPath:"/apps/promote"},{srcPath:"/apps-release-manager-service-web/apps/create",destPath:"/apps/create"},{srcPath:"/apps-release-manager-service-web/apps/tags",destPath:"/apps/tags"},{srcPath:"/apps-release-manager-service-web/apps/create-components",destPath:"/apps/create-components"}]};return A(Object.assign(t,{domainToMappings:e}))}function K(t){var e=l(ce,{}),r=e.toJSON,s=e.fromJSON,i=l(de,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"POST",methodFqn:"com.wix.ctp.AppsReleaseManagerService.CreateAppRelease",url:D({protoPath:"/apps/create/{appId}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}function X(t){var e=l(ve,{}),r=e.toJSON,s=e.fromJSON,i=l(ge,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"PUT",methodFqn:"com.wix.ctp.AppsReleaseManagerService.UpdateAppRelease",url:D({protoPath:"/apps/tags/{tag}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}function Y(t){var e=l(le,{}),r=e.toJSON,s=e.fromJSON,i=l(ue,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"POST",methodFqn:"com.wix.ctp.AppsReleaseManagerService.CreateComponents",url:D({protoPath:"/apps/create-components/{appId}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}function Z(t){var e=l(fe,{}),r=e.toJSON,s=e.fromJSON,i=l(he,{}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.ctp.gradual_rollout.v1.app_config",method:"POST",methodFqn:"com.wix.ctp.AppsReleaseManagerService.PromoteAppReleaseToDevCenter",url:D({protoPath:"/apps/promote/{appId}/{tag}",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}var N=u(L(),1);a();var ee=c.object({newVersion:c.string()}),te=c.object({tag:c.string()});var{AppPermissionDenied:M}=R,re=(0,N.variant)({TagUpdated:{},TagNotFound:(0,N.fields)()}),x=class{constructor(e){this.httpClient=e;let{minRetryTimeout:r}=T();this.retryOptions={retries:3,minTimeout:r,maxTimeout:3*1e3}}retryOptions;createComponents=async(e,r,s)=>{try{await _(()=>this.httpClient.request(Y({appId:e,componentConfigs:r,projectId:s})),this.retryOptions)}catch(i){throw O(i)&&i.response?.status===403?new f({code:M({appId:e}),cause:i}):new f({code:R.FailedToCreateComponents(),cause:i})}};createAppRelease=async(e,r)=>{try{let{data:s}=await _(()=>this.httpClient.request(K({appId:e.appId,componentConfigs:e.components,projectId:r})),this.retryOptions);return te.parse(s).tag}catch(s){throw O(s)&&s.response?.status===403?new f({code:M({appId:e.appId}),cause:s}):new f({code:R.FailedToCreateAppRelease(),cause:s})}};updateAppRelease=async(e,r)=>{try{return await _(()=>this.httpClient.request(X({appId:e.appId,componentConfigs:e.components,tag:r})),this.retryOptions),re.TagUpdated()}catch(s){if(O(s)){if(s.response?.status===404)return re.TagNotFound({cause:s});if(s.response?.status===403)throw new f({code:M({appId:e.appId}),cause:s})}throw new f({code:R.FailedToUpdateAppRelease(),cause:s})}};promoteToDevCenter=async(e,r,s)=>{let{data:i}=await _(()=>this.httpClient.request(Z({appId:e,tag:r,versionType:s})),this.retryOptions);return ee.parse(i)}};a();var se=u(w(),1);function Se(){let t=I({type:"backoffice"});return(0,se.useMemo)(()=>new x(t),[t])}a();a();var y=u(w(),1),ae=(0,y.createContext)(null),Xe=({children:t,armTag:e})=>y.default.createElement(ae.Provider,{value:{armTag:e}},t),E=()=>{let t=(0,y.useContext)(ae);if(t===null)throw new Error("useArmTag() cannot be used without an <ArmTagProvider>");return t};a();var pe=u(w(),1);a();var oe=u(w(),1),ie=(0,oe.createContext)(null);function J(){let t=(0,pe.useContext)(ie);if(t===null)throw new Error("useSiteId() cannot be used without an <SiteIdProvider>");return t}a();var P=u(w(),1),ne=(0,P.createContext)(null),ot=({children:t,siteOverrideId:e})=>P.default.createElement(ne.Provider,{value:{siteOverrideId:e}},t),j=()=>{let t=(0,P.useContext)(ne);if(t===null)throw new Error("useSiteOverrideId() cannot be used without an <SiteOverrideProvider>");return t};a();a();var _e={},Re={sites:"_site"},we={createdDate:"google.protobuf.Timestamp",updatedDate:"google.protobuf.Timestamp",trashedDate:"google.protobuf.Timestamp"};function ye(t){var e={"www._base_domain_":[{srcPath:"/_api/sites-list",destPath:"/api"},{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"feedback._base_domain_":[{srcPath:"/_api/sites-list",destPath:"/api"}],"manage._base_domain_":[{srcPath:"/_api/sites-list",destPath:"/api"},{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"},{srcPath:"/_api/sites-list-data",destPath:"/api/sites-list-data"}],"www.wixapis.com":[{srcPath:"/site-list/v2/sites",destPath:"/v2/sites"}],"api._api_base_domain_":[{srcPath:"/sites-list",destPath:""}],"bo._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"wixbo.ai":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"dev._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"editor._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"blocks._base_domain_":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}],"create.editorx":[{srcPath:"/_api/sites-list/v2/sites",destPath:"/v2/sites"}]};return A(Object.assign(t,{domainToMappings:e}))}function z(t){var e=l(_e,{}),r=e.toJSON,s=e.fromJSON,i=l(Re,{_site:we}).fromJSON;function o(d){var v=d.host,m=r(t),g={entityFqdn:"wix.site_list.v2.site",method:"POST",methodFqn:"com.wixpress.sitelist.api.SiteListServiceV2.QuerySites",url:ye({protoPath:"/v2/sites/query",data:m,host:v}),data:m,transformResponse:i};return g}return o.fromReq=s,o.__isAmbassador=!0,o}a();var Pe=c.object({id:c.string(),displayName:c.string(),viewUrl:c.union([c.string().url(),c.literal("")]).optional()}),$=c.object({sites:c.array(Pe)});var C=class{constructor(e){this.httpClient=e;let{minRetryTimeout:r}=T();this.retryOptions={retries:3,minTimeout:r,maxTimeout:3*1e3}}retryOptions;querySites=async(e={})=>{try{let{data:r}=await _(()=>this.httpClient.request(z(e)),this.retryOptions);return $.parse(r).sites}catch(r){throw new f({code:R.FailedToQuerySites(),cause:r,info:{...e}})}};getSite=async e=>{try{let{data:r}=await _(()=>this.httpClient.request(z({query:{filter:{id:{$in:[e]}}}})),this.retryOptions),{sites:s}=$.parse(r);return s.at(0)??null}catch(r){throw new f({code:R.FailedToGetSite(),cause:r,info:{id:e}})}}};a();var me=u(w(),1);function xe(){let t=I({type:"backoffice"});return(0,me.useMemo)(()=>new C(t),[t])}a();a();var b=u(L(),1),F=(0,b.variant)({NotConfigured:{},NotFound:(0,b.fields)(),Resolved:(0,b.fields)()});a();async function Ft({projectFolder:t,siteListClient:{getSite:e},siteId:r,writeDebugLog:s}){let i=r||(await G(t,s))?.siteId;if(!i)return F.NotConfigured();let o=await e(i);return o?F.Resolved({site:o}):F.NotFound({id:i})}a();var S=u(w(),1);var h=u(L(),1);var Ce=(t,e)=>{let r=(0,h.isType)(e,q.Site)?`${t.origin}/_api`:"https://apps.wix.com",s=new URL(`${r}/elgar-server/redirect`);return["specs.UseAppsRuntimeCache","specs.ApplyQueryParamsOverrides"].forEach(o=>{s.searchParams.append("experiments",`${o}#true`)}),s.searchParams.append("redirectToUrl",t.toString()),s.searchParams.append("staticsVersions","{}"),s};function Wt(){let{model:t}=U(),{site:e}=J(),{armTag:r}=E(),{siteOverrideId:s}=j();return(0,S.useCallback)(i=>be(i,{site:e,appId:t.config.appId,tag:r,siteOverrideId:s}),[r,t.config.appId,e,s])}function be(t,e){let{site:r,tag:s,siteOverrideId:i}=e,o=(0,h.match)(t,{Dashboard:()=>new URL(`dashboard/${r.id}`,"https://manage.wix.com/"),Editor:()=>new URL(`https://wix.com/editor/${r.id}`),Site:()=>{let d=new URL(r.viewUrl);return i&&d.searchParams.append("site-override",i),d}});return o.searchParams.append("apps-override",s),(0,h.isOfVariant)(t,(0,h.variantList)([q.Editor,q.Site]))?Ce(o,t).toString():o.toString()}function kt(){let{model:t}=U(),{site:e}=J(),{armTag:r}=E(),{siteOverrideId:s}=j();return(0,S.useCallback)(i=>Ae(i,{site:e,appId:t.config.appId,tag:r,siteOverrideId:s}),[r,t.config.appId,e,s])}function Ae(t,e){let{appId:r,site:s,tag:i}=e,o=(0,h.matcher)(t).with({DashboardPage:()=>new URL(`dashboard/${s.id}/app/${r}${t.route}`,"https://manage.wix.com/")}).when(["DashboardMenuPlugin","DashboardPlugin","DashboardModal"],()=>new URL(`dashboard/${s.id}${t.route}`,"https://manage.wix.com/")).complete();return o.searchParams.append("apps-override",i),o.toString()}var Qt=async({url:t,title:e},r)=>{try{await B(t)}catch{r({type:"error",prefix:"app",msg:S.default.createElement(W,{type:"error"},S.default.createElement(Q,{i18nKey:"general.open_page_error",components:[S.default.createElement(H,{bold:!0})],values:{title:e}}),S.default.createElement(V,null),S.default.createElement(k,{url:t}))})}};export{C as a,xe as b,ie as c,F as d,Ft as e,x as f,Se as g,Xe as h,E as i,J as j,ot as k,Ce as l,Wt as m,be as n,kt as o,Ae as p,Qt as q};
4
+ //# sourceMappingURL=chunk-244VWIWT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../arm-client/src/client.ts","../../../node_modules/@wix/ambassador-ctp-gradual-rollout-v1-app-config/http.impl.ts","../../arm-client/src/schemas.ts","../../arm-client/src/useARMClient.ts","../../arm-client/src/index.ts","../src/context/armTag.tsx","../src/site-id/useSiteId.ts","../src/site-id/context.ts","../src/context/siteOverride.tsx","../../site-list-client/src/site-list-client.ts","../../../node_modules/@wix/ambassador-site-list-v2-site/http.impl.ts","../../site-list-client/src/schemas.ts","../../site-list-client/src/useSiteListClient.ts","../../site-list-client/src/index.ts","../src/site-id/site-id-state.ts","../src/site-id/resolve-configured-site.ts","../src/components/extensions/utils.tsx"],"sourcesContent":["import type { HttpClient, HttpError } from '@wix/cli-http-client';\nimport type { AppManifest } from '@wix/cli-app-manifest';\nimport type { Options } from 'p-retry';\nimport type {\n VersionType,\n ComponentConfig,\n} from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\nimport {\n createAppRelease,\n promoteAppReleaseToDevCenter,\n updateAppRelease,\n createComponents,\n} from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/http';\nimport pRetry from 'p-retry';\nimport { fields, variant } from 'variant';\nimport { isHttpError } from '@wix/cli-http-client';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport { createAppReleaseSchema, promoteAppReleaseSchema } from './schemas.js';\n\nconst { AppPermissionDenied } = CliErrorCode;\n\nconst UpdateAppReleaseData = variant({\n TagUpdated: {},\n TagNotFound: fields<{ cause: HttpError }>(),\n});\n\nexport class ARMClient {\n private readonly retryOptions: Options;\n\n constructor(private readonly httpClient: HttpClient) {\n const { minRetryTimeout } = getTestOverrides();\n\n this.retryOptions = {\n retries: 3,\n minTimeout: minRetryTimeout,\n maxTimeout: 3 * 1000,\n };\n }\n\n createComponents = async (\n appId: string,\n componentConfigs: ComponentConfig[],\n projectId: string\n ) => {\n try {\n await pRetry(\n () =>\n this.httpClient.request(\n createComponents({\n appId,\n componentConfigs,\n projectId,\n })\n ),\n this.retryOptions\n );\n } catch (e) {\n if (isHttpError(e) && e.response?.status === 403) {\n throw new CliError({\n code: AppPermissionDenied({ appId }),\n cause: e,\n });\n }\n throw new CliError({\n code: CliErrorCode.FailedToCreateComponents(),\n cause: e,\n });\n }\n };\n\n createAppRelease = async (manifest: AppManifest, projectId: string) => {\n try {\n const { data } = await pRetry(\n () =>\n this.httpClient.request(\n createAppRelease({\n appId: manifest.appId,\n componentConfigs: manifest.components,\n projectId,\n })\n ),\n this.retryOptions\n );\n\n return createAppReleaseSchema.parse(data).tag;\n } catch (e) {\n if (isHttpError(e) && e.response?.status === 403) {\n throw new CliError({\n code: AppPermissionDenied({ appId: manifest.appId }),\n cause: e,\n });\n }\n throw new CliError({\n code: CliErrorCode.FailedToCreateAppRelease(),\n cause: e,\n });\n }\n };\n\n updateAppRelease = async (manifest: AppManifest, tag: string) => {\n try {\n await pRetry(\n () =>\n this.httpClient.request(\n updateAppRelease({\n appId: manifest.appId,\n componentConfigs: manifest.components,\n tag,\n })\n ),\n this.retryOptions\n );\n\n return UpdateAppReleaseData.TagUpdated();\n } catch (e) {\n if (isHttpError(e)) {\n if (e.response?.status === 404) {\n return UpdateAppReleaseData.TagNotFound({ cause: e });\n }\n if (e.response?.status === 403) {\n throw new CliError({\n code: AppPermissionDenied({ appId: manifest.appId }),\n cause: e,\n });\n }\n }\n throw new CliError({\n code: CliErrorCode.FailedToUpdateAppRelease(),\n cause: e,\n });\n }\n };\n\n promoteToDevCenter = async (\n appId: string,\n tag: string,\n versionType: VersionType\n ) => {\n const { data } = await pRetry(\n () =>\n this.httpClient.request(\n promoteAppReleaseToDevCenter({ appId, tag, versionType })\n ),\n this.retryOptions\n );\n\n return promoteAppReleaseSchema.parse(data);\n };\n}\n",null,"import { z } from 'zod';\n\nexport const promoteAppReleaseSchema = z.object({\n newVersion: z.string(),\n});\n\nexport const createAppReleaseSchema = z.object({\n tag: z.string(),\n});\n","import { useMemo } from 'react';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { ARMClient } from './client.js';\n\nexport function useARMClient(): ARMClient {\n const httpClient = useHttpClient({ type: 'backoffice' });\n return useMemo(() => new ARMClient(httpClient), [httpClient]);\n}\n","export { ARMClient } from './client.js';\nexport { useARMClient } from './useARMClient.js';\n","import React, { useContext, createContext } from 'react';\nimport type { FC, ReactNode } from 'react';\n\ninterface ArmTag {\n armTag: string;\n}\n\nconst ArmTagContext = createContext<ArmTag | null>(null);\n\nexport const ArmTagProvider: FC<{ children: ReactNode; armTag: string }> = ({\n children,\n armTag,\n}) => {\n return (\n <ArmTagContext.Provider value={{ armTag }}>\n {children}\n </ArmTagContext.Provider>\n );\n};\n\nexport const useArmTag = () => {\n const context = useContext(ArmTagContext);\n\n if (context === null) {\n throw new Error('useArmTag() cannot be used without an <ArmTagProvider>');\n }\n\n return context;\n};\n","import { useContext } from 'react';\nimport { SiteIdContext } from './context.js';\nimport type { SiteIdState } from './context.js';\n\nexport function useSiteId(): SiteIdState {\n const context = useContext(SiteIdContext);\n if (context === null) {\n throw new Error('useSiteId() cannot be used without an <SiteIdProvider>');\n }\n return context;\n}\n","import { createContext } from 'react';\nimport type { Site } from '@wix/site-list-client';\n\nexport interface SiteIdState {\n site: Site;\n setSite: (site: Site) => Promise<void>;\n}\n\nexport const SiteIdContext = createContext<SiteIdState | null>(null);\n","import React, { useContext, createContext } from 'react';\nimport type { FC, ReactNode } from 'react';\n\ninterface SiteOverride {\n siteOverrideId?: string;\n}\n\nconst SiteOverrideContext = createContext<SiteOverride | null>(null);\n\nexport const SiteOverrideProvider: FC<{\n children: ReactNode;\n siteOverrideId?: string;\n}> = ({ children, siteOverrideId }) => {\n return (\n <SiteOverrideContext.Provider value={{ siteOverrideId }}>\n {children}\n </SiteOverrideContext.Provider>\n );\n};\n\nexport const useSiteOverrideId = () => {\n const context = useContext(SiteOverrideContext);\n\n if (context === null) {\n throw new Error(\n 'useSiteOverrideId() cannot be used without an <SiteOverrideProvider>'\n );\n }\n\n return context;\n};\n","import pRetry from 'p-retry';\nimport type { Options } from 'p-retry';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { QuerySitesRequest } from '@wix/ambassador-site-list-v2-site/types';\nimport { querySites } from '@wix/ambassador-site-list-v2-site/http';\nimport type { HttpClient } from '@wix/cli-http-client';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport { querySitesSchema } from './schemas.js';\n\nexport class SiteListClient {\n private readonly retryOptions: Options;\n\n constructor(private readonly httpClient: HttpClient) {\n const { minRetryTimeout } = getTestOverrides();\n\n this.retryOptions = {\n retries: 3,\n minTimeout: minRetryTimeout,\n maxTimeout: 3 * 1000,\n };\n }\n\n querySites = async (opts: QuerySitesRequest = {}) => {\n try {\n const { data } = await pRetry(\n () => this.httpClient.request(querySites(opts)),\n this.retryOptions\n );\n\n return querySitesSchema.parse(data).sites;\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToQuerySites(),\n cause: e,\n info: { ...opts },\n });\n }\n };\n\n getSite = async (id: string) => {\n try {\n const { data } = await pRetry(\n () =>\n this.httpClient.request(\n querySites({ query: { filter: { id: { $in: [id] } } } })\n ),\n this.retryOptions\n );\n\n const { sites } = querySitesSchema.parse(data);\n return sites.at(0) ?? null;\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToGetSite(),\n cause: e,\n info: { id },\n });\n }\n };\n}\n",null,"import { z } from 'zod';\n\nconst siteSchema = z.object({\n id: z.string(),\n displayName: z.string(),\n viewUrl: z.union([z.string().url(), z.literal('')]).optional(),\n});\n\nexport const querySitesSchema = z.object({\n sites: z.array(siteSchema),\n});\n\nexport type Site = z.TypeOf<typeof siteSchema>;\n","import { useMemo } from 'react';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { SiteListClient } from './site-list-client.js';\n\nexport function useSiteListClient(): SiteListClient {\n const httpClient = useHttpClient({ type: 'backoffice' });\n return useMemo(() => new SiteListClient(httpClient), [httpClient]);\n}\n","export { SiteListClient } from './site-list-client.js';\nexport type { Site } from './schemas.js';\nexport { useSiteListClient } from './useSiteListClient.js';\n","import { variant, fields } from 'variant';\nimport type { VariantOf, TypeNames } from 'variant';\nimport type { Site } from '@wix/site-list-client';\n\nexport const SiteIdState = variant({\n NotConfigured: {},\n NotFound: fields<{ id: string }>(),\n Resolved: fields<{ site: Site }>(),\n});\n\nexport type SiteIdState<T extends TypeNames<typeof SiteIdState> = undefined> =\n VariantOf<typeof SiteIdState, T>;\n","import type { SiteListClient } from '@wix/site-list-client';\nimport type { WriteDebugLogFn } from '@wix/cli-debug-log';\nimport { readAppConfig } from '../files/app.config.js';\nimport { SiteIdState } from './site-id-state.js';\n\nexport async function resolveConfiguredSite({\n projectFolder,\n siteListClient: { getSite },\n siteId,\n writeDebugLog,\n}: {\n projectFolder: string;\n siteListClient: SiteListClient;\n siteId?: string;\n writeDebugLog?: WriteDebugLogFn;\n}) {\n const resolvedSiteId = !siteId\n ? (await readAppConfig(projectFolder, writeDebugLog))?.siteId\n : siteId;\n\n if (!resolvedSiteId) {\n return SiteIdState.NotConfigured();\n }\n\n const site = await getSite(resolvedSiteId);\n\n if (!site) {\n return SiteIdState.NotFound({ id: resolvedSiteId });\n }\n\n return SiteIdState.Resolved({ site });\n}\n","import React, { useCallback } from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { matcher, match, isOfVariant, variantList, isType } from 'variant';\nimport { openBrowser } from '@wix/user-browser';\nimport type { Site } from '@wix/site-list-client';\nimport { Alert, Link, Text, Newline } from '@wix/cli-ui-kit';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport type { WriteLogFn } from '../DevCommand/devEnvLogs/useDevEnvLogs.js';\nimport { useProjectModel } from '../../model.js';\nimport { useSiteId } from '../../site-id/useSiteId.js';\nimport { useArmTag } from '../../context/armTag.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport type { DashboardExtension } from './useExtensions.js';\nimport { useSiteOverrideId } from '../../context/siteOverride.js';\n\n/*\nThis function is a workaround to open the new CSM v2 experience to external users before the experiment is open to external users.\n\nIn the *editor and viewer* we are using elgar to redirect the user to the editor with the overrides in his cookie - since there is no support for query params overrides in certain flows.\n*/\nexport const redirectWithCSMv2FTs = (\n url: URL,\n platformType: PlatformType\n): URL => {\n const elgarBaseURL = isType(platformType, PlatformType.Site)\n ? `${url.origin}/_api`\n : 'https://apps.wix.com';\n const elgarRedirectUrl = new URL(`${elgarBaseURL}/elgar-server/redirect`);\n\n const petriOvr = [\n 'specs.UseAppsRuntimeCache',\n 'specs.ApplyQueryParamsOverrides',\n ];\n\n petriOvr.forEach((spec) => {\n elgarRedirectUrl.searchParams.append('experiments', `${spec}#true`);\n });\n elgarRedirectUrl.searchParams.append('redirectToUrl', url.toString());\n elgarRedirectUrl.searchParams.append('staticsVersions', '{}');\n\n return elgarRedirectUrl;\n};\n\nexport function useResolvePlatformUrl() {\n const { model } = useProjectModel();\n const { site } = useSiteId();\n const { armTag } = useArmTag();\n const { siteOverrideId } = useSiteOverrideId();\n\n return useCallback(\n (platformType: PlatformType) => {\n return resolvePlatformUrl(platformType, {\n site,\n appId: model.config.appId,\n tag: armTag,\n siteOverrideId,\n });\n },\n [armTag, model.config.appId, site, siteOverrideId]\n );\n}\n\nexport function resolvePlatformUrl(\n platformType: PlatformType,\n options: {\n site: Site;\n appId: string;\n tag: string;\n siteOverrideId?: string;\n }\n) {\n const { site, tag, siteOverrideId } = options;\n\n const url = match(platformType, {\n Dashboard: () => new URL(`dashboard/${site.id}`, 'https://manage.wix.com/'),\n Editor: () => new URL(`https://wix.com/editor/${site.id}`),\n Site: () => {\n const siteUrl = new URL(site.viewUrl!);\n if (siteOverrideId) {\n siteUrl.searchParams.append('site-override', siteOverrideId);\n }\n return siteUrl;\n },\n });\n\n url.searchParams.append('apps-override', tag);\n\n return isOfVariant(\n platformType,\n variantList([PlatformType.Editor, PlatformType.Site])\n )\n ? redirectWithCSMv2FTs(url, platformType).toString()\n : url.toString();\n}\n\nexport function useResolveDashboardExtensionUrl() {\n const { model } = useProjectModel();\n const { site } = useSiteId();\n const { armTag } = useArmTag();\n const { siteOverrideId } = useSiteOverrideId();\n\n return useCallback(\n (extension: DevCenterComponent<DashboardExtension>) =>\n resolveDashboardExtensionUrl(extension, {\n site,\n appId: model.config.appId,\n tag: armTag,\n siteOverrideId,\n }),\n [armTag, model.config.appId, site, siteOverrideId]\n );\n}\n\nexport function resolveDashboardExtensionUrl(\n extension: DevCenterComponent<DashboardExtension>,\n options: {\n site: Site;\n appId: string;\n tag: string;\n siteOverrideId?: string;\n }\n) {\n const { appId, site, tag } = options;\n\n const url = matcher(extension)\n .with({\n DashboardPage: () =>\n new URL(\n `dashboard/${site.id}/app/${appId}${extension.route}`,\n 'https://manage.wix.com/'\n ),\n })\n .when(\n ['DashboardMenuPlugin', 'DashboardPlugin', 'DashboardModal'],\n () =>\n new URL(\n `dashboard/${site.id}${extension.route}`,\n 'https://manage.wix.com/'\n )\n )\n .complete();\n\n url.searchParams.append('apps-override', tag);\n\n return url.toString();\n}\n\nexport const openPage = async (\n { url, title }: { url: string; title: string },\n writeLog: WriteLogFn\n) => {\n try {\n await openBrowser(url);\n } catch {\n writeLog({\n type: 'error',\n prefix: 'app',\n msg: (\n <Alert type=\"error\">\n <Trans\n i18nKey=\"general.open_page_error\"\n components={[<Text bold />]}\n values={{ title }}\n />\n <Newline />\n <Link url={url} />\n </Alert>\n ),\n });\n }\n};\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","_createAppReleaseRequest","_createAppReleaseResponse","_createComponentsRequest","_createComponentsResponse","_promoteAppReleaseToDevCenterRequest","_promoteAppReleaseToDevCenterResponse","_updateAppReleaseRequest","_updateAppReleaseResponse","resolveComWixCtpAppsReleaseManagerServiceUrl","opts","domainToMappings","resolveUrl","createAppRelease","payload","_a","serializer","_createAppReleaseRequest","toReq","fromReq","fromRes","_createAppReleaseResponse","__createAppRelease","host","serializedData","metadata","updateAppRelease","__updateAppRelease","createComponents","_createComponentsRequest","_createComponentsResponse","__createComponents","promoteAppReleaseToDevCenter","payload","_a","serializer","_promoteAppReleaseToDevCenterRequest","toReq","fromReq","fromRes","_promoteAppReleaseToDevCenterResponse","__promoteAppReleaseToDevCenter","host","serializedData","metadata","resolveComWixCtpAppsReleaseManagerServiceUrl","import_variant","init_esm_shims","promoteAppReleaseSchema","z","createAppReleaseSchema","AppPermissionDenied","CliErrorCode","UpdateAppReleaseData","ARMClient","httpClient","minRetryTimeout","getTestOverrides","appId","componentConfigs","projectId","pRetry","createComponents","e","isHttpError","CliError","manifest","data","createAppRelease","createAppReleaseSchema","tag","updateAppRelease","versionType","promoteAppReleaseToDevCenter","promoteAppReleaseSchema","init_esm_shims","import_react","useARMClient","httpClient","useHttpClient","ARMClient","init_esm_shims","init_esm_shims","import_react","ArmTagContext","ArmTagProvider","children","armTag","React","useArmTag","context","init_esm_shims","import_react","init_esm_shims","import_react","SiteIdContext","useSiteId","context","SiteIdContext","init_esm_shims","import_react","SiteOverrideContext","SiteOverrideProvider","children","siteOverrideId","React","useSiteOverrideId","context","init_esm_shims","init_esm_shims","_querySitesRequest","_querySitesResponse","_site","resolveComWixpressSitelistApiSiteListServiceV2Url","opts","domainToMappings","resolveUrl","querySites","payload","_a","serializer","toReq","fromReq","fromRes","__querySites","host","serializedData","metadata","init_esm_shims","siteSchema","z","querySitesSchema","SiteListClient","httpClient","minRetryTimeout","getTestOverrides","opts","data","pRetry","querySites","querySitesSchema","e","CliError","CliErrorCode","id","sites","init_esm_shims","import_react","useSiteListClient","httpClient","useHttpClient","SiteListClient","init_esm_shims","init_esm_shims","import_variant","SiteIdState","init_esm_shims","resolveConfiguredSite","projectFolder","getSite","siteId","writeDebugLog","resolvedSiteId","readAppConfig","SiteIdState","site","init_esm_shims","import_react","import_variant","redirectWithCSMv2FTs","url","platformType","elgarBaseURL","PlatformType","elgarRedirectUrl","spec","useResolvePlatformUrl","model","useProjectModel","site","useSiteId","armTag","useArmTag","siteOverrideId","useSiteOverrideId","resolvePlatformUrl","options","tag","siteUrl","useResolveDashboardExtensionUrl","extension","resolveDashboardExtensionUrl","appId","openPage","title","writeLog","openBrowser","React","Alert","Trans","Text","Newline","Link"]}
@@ -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 p}from"./chunk-RUZJ2NCD.js";import{b as r,c as i}from"./chunk-NCYXC7TY.js";import{h as o}from"./chunk-V4TR6DCM.js";o();var M=async({model:e,arm:a,serveUrl:n,backendServerUrl:t,topologyComponentId:s})=>{let l=await p(e.projectFolder),m=i(r(l,n,t),{id:s,baseApiUrl:t});return a.createAppRelease(m,e.config.projectId)};export{M as a};
4
- //# sourceMappingURL=chunk-7RL4TN6T.js.map
3
+ import{b as p}from"./chunk-FFYM2OK5.js";import{b as r,c as i}from"./chunk-O3XQFKZB.js";import{h as o}from"./chunk-V4TR6DCM.js";o();var M=async({model:e,arm:a,serveUrl:n,backendServerUrl:t,topologyComponentId:s})=>{let l=await p(e.projectFolder),m=i(r(l,n,t),{id:s,baseApiUrl:t});return a.createAppRelease(m,e.config.projectId)};export{M as a};
4
+ //# sourceMappingURL=chunk-33U542O7.js.map
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{Ba as G,F as B,J as u,K as M,L as U,P as v,Q as x,R as O,S as T,bb as q,db as V,ja as R,qa as Se,ra as Ee,sa as k,ta as he,wa as L,xa as D,ya as E,za as F}from"./chunk-DCT2GH4K.js";import{c as I,e as f,f as C}from"./chunk-W5VAOQOV.js";import{c as g,e as y,h as c}from"./chunk-V4TR6DCM.js";var H=g((pt,W)=>{"use strict";c();function Pe(t,r,n,i){for(var a=t.length,o=n+(i?1:-1);i?o--:++o<a;)if(r(t[o],o,t))return o;return-1}W.exports=Pe});var Y=g((gt,K)=>{"use strict";c();function ye(t){return t!==t}K.exports=ye});var z=g((Ct,$)=>{"use strict";c();function De(t,r,n){for(var i=n-1,a=t.length;++i<a;)if(t[i]===r)return i;return-1}$.exports=De});var Z=g((Et,X)=>{"use strict";c();var be=H(),Ie=Y(),Te=z();function _e(t,r,n){return r===r?Te(t,r,n):be(t,Ie,n)}X.exports=_e});var Q=g((vt,J)=>{"use strict";c();var we=Z();function Ae(t,r){var n=t==null?0:t.length;return!!n&&we(t,r,0)>-1}J.exports=Ae});var te=g((yt,ee)=>{"use strict";c();function Ne(t,r,n){for(var i=-1,a=t==null?0:t.length;++i<a;)if(n(r,t[i]))return!0;return!1}ee.exports=Ne});var ie=g((bt,re)=>{"use strict";c();function Be(){}re.exports=Be});var oe=g((Tt,ne)=>{"use strict";c();var _=he(),Me=ie(),Ue=k(),xe=1/0,Oe=_&&1/Ue(new _([,-0]))[1]==xe?function(t){return new _(t)}:Me;ne.exports=Oe});var se=g((wt,ae)=>{"use strict";c();var Re=Se(),ke=Q(),Le=te(),Fe=Ee(),Ge=oe(),qe=k(),Ve=200;function je(t,r,n){var i=-1,a=ke,o=t.length,e=!0,l=[],d=l;if(n)e=!1,a=Le;else if(o>=Ve){var s=r?null:Ge(t);if(s)return qe(s);e=!1,a=Fe,d=new Re}else d=r?[]:l;e:for(;++i<o;){var S=t[i],h=r?r(S):S;if(S=n||S!==0?S:0,e&&h===h){for(var N=d.length;N--;)if(d[N]===h)continue e;r&&d.push(h),l.push(S)}else a(d,h,n)||(d!==l&&d.push(h),l.push(S))}return l}ae.exports=je});var ce=g((Nt,de)=>{"use strict";c();var We=se();function He(t,r){return r=typeof r=="function"?r:void 0,t&&t.length?We(t,void 0,r):[]}de.exports=He});c();var P=y(I(),1);import{randomUUID as ve}from"node:crypto";var j=t=>{let r=new Map;[...t.filter(o=>!(0,P.isType)(o,D.Api)&&!(0,P.isType)(o,D.Event)&&!(0,P.isType)(o,D.ServicePlugin))].sort((o,e)=>o.id.localeCompare(e.id)).forEach(o=>{let e=r.get(o.id)??[];e.push(o),r.set(o.id,e)});let a=new Map;if(r.forEach((o,e)=>{o.length>1&&a.set(e,o)}),a.size)throw new f({code:C.DuplicateComponentIdsError({issues:Array.from(a.entries()).map(([o,e])=>({id:o,components:e.map(l=>(0,P.match)(l,{DashboardPage:({title:d,relativePath:s})=>({name:d,type:"page",path:E(s,"json")}),DashboardPlugin:({title:d,relativePath:s})=>({name:d,type:"plugin",path:E(s,"json")}),DashboardMenuPlugin:({title:d,relativePath:s})=>({name:d,type:"menu-plugin",path:s}),DashboardModal:({title:d,relativePath:s})=>({name:d,type:"modal",path:E(s,"json")}),DashboardSidebarCategory:({label:d})=>({name:d,type:"sidebar-category",path:B}),EmbeddedScript:({relativePath:d})=>({name:d,type:"embedded-script",path:E(d,"json")}),CustomElement:({name:d,relativePath:s})=>({name:d,type:"custom-element",path:E(s,"json")}),Topology:({name:d})=>({name:d,type:"topology",path:""}),SitePlugin:({marketData:d,relativePath:s})=>({name:d.name,type:"site-plugin",path:E(s,"json")})})).sort((l,d)=>l.name.localeCompare(d.name)),suggestedId:ve()}))})})};c();var b=y(I(),1),ue=y(ce(),1);import{randomUUID as Ke}from"node:crypto";function Ye(t){return t!=null&&t!==!1}var $e=(t,r)=>{if(t.experiments)return{appId:r,componentId:t.id,spec:t.experiments.enabledBy,variantValue:"true"}},le=(t,r,n)=>{let i=(0,b.match)(t,{SitePlugin:a=>({id:a.referenceComponentId,name:a.marketData.name,base:{autoAdd:a.installation?.autoAddToSite},size:{width:{defaultWidth:400,allowStretch:!0,stretchByDefault:!0},height:{defaultHeight:400,heightMode:T.FIXED}}}),CustomElement:a=>({id:a.id,name:a.name,base:{autoAdd:a.installation?.autoAddToSite,essential:a.installation?.essential,maxInstances:a.installation?.essential?1:0},size:{width:{defaultWidth:a.width.defaultWidth,allowStretch:a.width.allowStretch,stretchByDefault:a.width.stretchByDefault},height:{defaultHeight:a.height.defaultHeight,heightMode:T.FIXED}}})});return{compId:i.id,compType:u.CUSTOM_ELEMENT_WIDGET,compName:i.name,compData:{customElementWidget:{base:{name:i.name},widgetData:{tagName:t.tagName,scriptType:O.ES_MODULE,scriptUrl:r},size:i.size,installation:{base:i.base,widget:{region:M.BODY}},behaviors:t.relativePanelPath&&n?{settings:{settingsUrl:n}}:{},dependencies:t.dependencies}}}};async function Rt({appId:t,components:r,sentryDSN:n,componentSourceBuilder:i}){j(r);let a=(await Promise.all(r.map((0,b.match)({DashboardPage:async e=>{let l=e.sentryDSN??n;return{compId:e.id,compType:u.BACK_OFFICE_PAGE,compData:{backOfficePage:{hostingPlatform:v.BUSINESS_MANAGER,fullPage:e.sidebar?.whenActive?.hideSidebar,hideInSidebar:e.sidebar?.disabled,priority:e.sidebar?.priority,routePath:e.route.slice(1),title:e.title,pageCategoryId:e.sidebar?.categoryId,activeSidebarPageId:e.sidebar?.whenActive?.selectedPageId,requiredPermission:e.requiredPermission,previousRoutePaths:e.additionalRoutes,...l?{errorReporting:{url:l}}:void 0,...await i(e)}},compName:e.title,experiment:$e(e,t)}},DashboardPlugin:async e=>({compId:e.id,compType:u.BACK_OFFICE_EXTENSION_WIDGET,compData:{backOfficeExtensionWidget:{hostingPlatform:v.BUSINESS_MANAGER,extends:e.extends,title:e.title,requiredPermission:e.requiredPermission,width:e.width,height:e.height,...await i(e),...e.sentryDSN?{errorReporting:{url:e.sentryDSN}}:void 0}},compName:e.title}),DashboardMenuPlugin:async e=>({compId:e.id,compType:u.BACK_OFFICE_EXTENSION_MENU_ITEM,compData:{backOfficeExtensionMenuItem:{hostingPlatform:v.BUSINESS_MANAGER,id:e.id,title:e.title,subtitle:e.subtitle,iconKey:e.iconKey,extends:e.extends,action:e.action,requiredPermission:e.requiredPermission,...e.sentryDSN?{errorReporting:{url:e.sentryDSN}}:void 0}},compName:e.title}),DashboardModal:async e=>({compId:e.id,compType:u.BACK_OFFICE_MODAL,compData:{backOfficeModal:{hostingPlatform:v.BUSINESS_MANAGER,title:e.title,requiredPermission:e.requiredPermission,width:e.width,height:e.height,...await i(e),...e.sentryDSN?{errorReporting:{url:e.sentryDSN}}:void 0}},compName:e.title}),DashboardSidebarCategory:async e=>({compId:e.id,compType:u.BACK_OFFICE_SIDEBAR_CATEGORY,compData:{backOfficeSidebarCategory:{hostingPlatform:v.BUSINESS_MANAGER,title:e.label,priority:e.priority}},compName:e.label}),EmbeddedScript:async e=>({compId:e.id,compType:u.EMBEDDED_SCRIPT,compName:e.name,compData:{embeddedScriptComponentData:{name:e.name,pages:U.NONE_PAGES,placement:e.placement,connectArticleUrl:"",embedCategory:e.scriptType,dependencies:e.dependencies,loadOnce:!0,allowedForFreeSite:!0,...await i(e)}}}),CustomElement:async e=>{let{scriptUrl:l,settingsUrl:d}=await i(e);return le(e,l,d)},Topology:async e=>({compId:e.id,compType:u.TOPOLOGY,compName:e.name,compData:{topology:{topology:{backendApiUrl:e.backendApiUrl}}}}),Api:()=>null,Event:async e=>(await i(e)).map(({webhookSlug:d})=>({compName:d,compId:Ke(),compType:u.WEBHOOK,compData:{webhook:{callbackUrl:"__WEBHOOKS_URL_PLACEHOLDER__",webhookSlug:d}}})),SitePlugin:async e=>{let{scriptUrl:l,settingsUrl:d}=await i(e);return[le(e,l,d),{compId:e.id,compType:u.WIDGET_PLUGIN,compName:e.marketData.name,compData:{widgetPlugin:{referenceComponentId:e.referenceComponentId,placements:e.placements,marketData:e.marketData}}}]},ServicePlugin:async e=>{let l=(0,b.match)(e.servicePlugin,{EcomShippingRates:s=>({compName:s.name,compId:s.id,compType:u.ECOM_SHIPPING_RATES,compData:{ecomShippingRates:{name:s.name,deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__",description:s.description,learnMoreUrl:s.learnMoreUrl,dashboardUrl:s.dashboardUrl,fallbackDefinitionMandatory:s.fallbackDefinitionMandatory,thumbnailUrl:s.thumbnailUrl}}}),EcomAdditionalFees:s=>({compName:s.name,compId:s.id,compType:u.ECOM_ADDITIONAL_FEES,compData:{ecomAdditionalFees:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__"}}}),EcomDiscountsTrigger:s=>({compName:s.name,compId:s.id,compType:u.ECOM_DISCOUNTS_TRIGGER,compData:{ecomDiscountsTrigger:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__"}}}),EcomValidations:s=>({compName:s.name,compId:s.id,compType:u.ECOM_VALIDATIONS,compData:{ecomValidations:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__",validateInCart:s.validateInCart}}}),EcomPaymentSettings:s=>({compName:s.name,compId:s.id,compType:u.ECOM_PAYMENT_SETTINGS,compData:{ecomPaymentSettings:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__",fallbackValueForRequires3dSecure:s.fallbackValueForRequires3dSecure}}}),EcomGiftCardsProvider:s=>({compName:s.name,compId:s.id,compType:u.GIFT_CARDS_PROVIDER,compData:{giftCardsProvider:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__"}}})}),{servicePluginType:d}=await i(e);if(l.compType!==d)throw new f({code:C.InvalidServicePluginImplementation({configuredImplementation:l.compType})});return l}})))).filter(Ye).flat(),o=(0,ue.default)(a,(e,l)=>e.compType===u.WEBHOOK&&l.compType===u.WEBHOOK&&e.compData.webhook.webhookSlug===l.compData.webhook.webhookSlug);return{appId:t,components:o}}c();var fe=y(I(),1);import{join as ze}from"node:path";import{pathToFileURL as Xe}from"node:url";c();function pe(t){if(!("output"in t||Array.isArray(t)))throw new f({code:C.InvalidViteBuildOutput()});return Array.isArray(t)?t.flatMap(i=>i.output):t.output}function w(t,r){let i=pe(t).find(a=>a.type==="chunk"&&a.facadeModuleId===r);if(!i)throw new f({code:C.ViteModuleBundleNotFound()});return i.fileName}function me(t,r){let i=pe(t).find(a=>a.fileName===r);if(!i||!("source"in i))throw new f({code:C.ViteFileNotFoundInOutput({fileName:r})});return i.source.toString()}async function Ze(t,r){let n=new URL(t.relativePath,r).href;return await fetch(n).then(a=>a.text())}async function Je(t,r){let n=new URL("__get-registered-events",r).href,i=await fetch(n);return i.ok?(await i.json())[`/${t.relativePath}`]??[]:[]}async function Ce(t){let r=R(t.projectFolder),n=ze(r,"getRegisteredExtensions.mjs");return import(Xe(n).href)}async function Qe(t,r){let{getRegisteredEvents:n}=await Ce(r);return(await n())[`/${t.relativePath}`]}async function et(t,r){let n=new URL("__get-registered-service-plugins",r).href,i=await fetch(n);return i.ok?(await i.json())[`/${t.relativePath}`]:null}async function tt(t,r){let{getRegisteredServicePlugins:n}=await Ce(r);return(await n())[`/${t.relativePath}`]}var A=(t,r,n)=>{if(!r.config.trusted)return{iframeUrl:F(t.id)};let i=G(t.id),a=n.clientBuildOutput?w(n.clientBuildOutput,i):`/@id/${i}?import`;return{scriptAsset:{exportedName:t.id,containerId:r.config.appId,url:a,scriptType:x.MODULE}}},rt=async(t,{clientBuildOutput:r,clientDevServerUrl:n})=>({template:r?me(r,t.relativePath):await Ze(t,n)}),it=async(t,r,n)=>{let i=n.backendDevServerUrl?await Je(t,n.backendDevServerUrl):await Qe(t,r);return(i?await Promise.all(i.map(L)):[]).map(o=>({webhookSlug:o}))},nt=async(t,r,n)=>{let i=n.backendDevServerUrl?await et(t,n.backendDevServerUrl):await tt(t,r);if(!i)throw new Error("could not find service plugin definition");return{servicePluginType:i}},ge=(t,r)=>{let n=V(t.id);return{scriptUrl:r.clientBuildOutput?w(r.clientBuildOutput,n):`/@id/${n}?import`,settingsUrl:q(t.id)}};function Xt(t,r,n){return async i=>(0,fe.match)(i,{EmbeddedScript:o=>rt(o,r),DashboardSidebarCategory:()=>{},CustomElement:o=>ge(o,r),SitePlugin:o=>ge(o,r),DashboardPage:o=>A(o,t,r),DashboardPlugin:o=>A(o,t,r),DashboardModal:o=>A(o,t,r),DashboardMenuPlugin:()=>{},Topology:()=>{},Api:()=>{},Event:o=>it(o,t,n),ServicePlugin:o=>nt(o,t,n)})}export{j as a,le as b,Rt as c,Xt as d};
4
+ //# sourceMappingURL=chunk-3Y4NOBS4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/lodash/_baseFindIndex.js","../../../node_modules/lodash/_baseIsNaN.js","../../../node_modules/lodash/_strictIndexOf.js","../../../node_modules/lodash/_baseIndexOf.js","../../../node_modules/lodash/_arrayIncludes.js","../../../node_modules/lodash/_arrayIncludesWith.js","../../../node_modules/lodash/noop.js","../../../node_modules/lodash/_createSet.js","../../../node_modules/lodash/_baseUniq.js","../../../node_modules/lodash/uniqWith.js","../src/app-manifest/validate.ts","../src/app-manifest/create.ts","../src/app-manifest/component-source.ts","../src/app-manifest/build-output-data-extractor.ts"],"sourcesContent":["/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","import { randomUUID } from 'node:crypto';\nimport { isType, match } from 'variant';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { CONFIG_FILENAME } from '@wix/cli-core-definitions';\nimport { replaceExtension } from '../dev-center/components/path.js';\nimport type { BackendComponent } from '../dev-center/components/dev-center-component.js';\nimport { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\n\ntype NonBackendComponent = Exclude<DevCenterComponent, BackendComponent>;\n\nexport const validateComponents = (components: DevCenterComponent[]) => {\n const devCenterComponentsToIdMap = new Map<string, NonBackendComponent[]>();\n\n const componentsWithConfig = components.filter(\n (component): component is NonBackendComponent =>\n !isType(component, DevCenterComponent.Api) &&\n !isType(component, DevCenterComponent.Event) &&\n !isType(component, DevCenterComponent.ServicePlugin)\n );\n\n const sortedComponentsById = [...componentsWithConfig].sort((a, b) =>\n a.id.localeCompare(b.id)\n );\n sortedComponentsById.forEach((component) => {\n const componentList = devCenterComponentsToIdMap.get(component.id) ?? [];\n componentList.push(component);\n devCenterComponentsToIdMap.set(component.id, componentList);\n });\n\n const devCenterComponentsWithSameIDMap = new Map<\n string,\n NonBackendComponent[]\n >();\n\n devCenterComponentsToIdMap.forEach((devCenterComponents, key) => {\n if (devCenterComponents.length > 1) {\n devCenterComponentsWithSameIDMap.set(key, devCenterComponents);\n }\n });\n\n if (devCenterComponentsWithSameIDMap.size) {\n throw new CliError({\n code: CliErrorCode.DuplicateComponentIdsError({\n issues: Array.from(devCenterComponentsWithSameIDMap.entries()).map(\n ([id, devCenterComponents]) => {\n return {\n id,\n components: devCenterComponents\n .map((component) =>\n match(component, {\n DashboardPage: ({ title, relativePath }) => ({\n name: title,\n type: 'page' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n DashboardPlugin: ({ title, relativePath }) => ({\n name: title,\n type: 'plugin' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n DashboardMenuPlugin: ({ title, relativePath }) => ({\n name: title,\n type: 'menu-plugin' as const,\n // We can use the relative path since the path already points to the menu config json\n path: relativePath,\n }),\n DashboardModal: ({ title, relativePath }) => ({\n name: title,\n type: 'modal' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n DashboardSidebarCategory: ({ label }) => ({\n name: label,\n type: 'sidebar-category' as const,\n path: CONFIG_FILENAME,\n }),\n EmbeddedScript: ({ relativePath }) => ({\n name: relativePath,\n type: 'embedded-script' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n CustomElement: ({ name, relativePath }) => ({\n name,\n type: 'custom-element' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n Topology: ({ name }) => ({\n name,\n type: 'topology' as const,\n // Topology component doesn't have a config file\n path: '',\n }),\n SitePlugin: ({ marketData, relativePath }) => ({\n name: marketData.name,\n type: 'site-plugin' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n })\n )\n .sort((a, b) => a.name.localeCompare(b.name)),\n suggestedId: randomUUID(),\n };\n }\n ),\n }),\n });\n }\n};\n","import {\n ComponentType,\n BackOfficeHostingPlatforms,\n EmbeddedScriptPages,\n HeightMode,\n RegionType,\n CustomElementScriptType,\n} from '@wix/ambassador-devcenter-components-v1-component/types';\nimport { match } from 'variant';\nimport { randomUUID } from 'node:crypto';\nimport uniqWith from 'lodash/uniqWith.js';\nimport type {\n AppManifest,\n ComponentExperiment,\n BackofficePage,\n BackofficeExtensionWidget,\n BackofficeExtensionMenuItem,\n BackofficeSideCategory,\n BackofficeModal,\n EmbeddedScript,\n CustomElement,\n Webhook,\n ServicePlugin,\n SitePlugin,\n Topology,\n EcomShippingRates,\n EcomAdditionalFees,\n EcomDiscountsTrigger,\n EcomValidations,\n EcomPaymentSettings,\n EcomGiftCardsProvider,\n} from '@wix/cli-app-manifest';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { validateComponents } from './validate.js';\nimport type { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\nimport type { ComponentSourceBuilder } from './component-source.js';\n\ninterface CreateAppManifestParams {\n appId: string;\n backendServerUrl?: string;\n components: DevCenterComponent[];\n sentryDSN?: string;\n componentSourceBuilder: ComponentSourceBuilder;\n}\n\nfunction isTruthy<T>(x: T | undefined | null | false): x is T {\n return x !== undefined && x !== null && x !== false;\n}\n\nconst getExperiment = (\n component: DevCenterComponent<'DashboardPage'>,\n appId: string\n): ComponentExperiment => {\n if (component.experiments) {\n return {\n appId,\n componentId: component.id,\n spec: component.experiments.enabledBy,\n variantValue: 'true',\n };\n }\n return undefined;\n};\n\nexport const createCustomElementConfig = (\n component: DevCenterComponent<'CustomElement' | 'SitePlugin'>,\n scriptUrl: string,\n settingsUrl?: string\n): CustomElement => {\n const customElementData = match(component, {\n SitePlugin: (sitePlugin) => ({\n id: sitePlugin.referenceComponentId,\n name: sitePlugin.marketData.name,\n base: {\n autoAdd: sitePlugin.installation?.autoAddToSite,\n },\n size: {\n width: {\n defaultWidth: 400,\n allowStretch: true,\n stretchByDefault: true,\n },\n height: {\n defaultHeight: 400,\n heightMode: HeightMode.FIXED,\n },\n },\n }),\n CustomElement: (customElement) => ({\n id: customElement.id,\n name: customElement.name,\n base: {\n autoAdd: customElement.installation?.autoAddToSite,\n essential: customElement.installation?.essential,\n maxInstances: customElement.installation?.essential ? 1 : 0,\n },\n size: {\n width: {\n defaultWidth: customElement.width.defaultWidth,\n allowStretch: customElement.width.allowStretch,\n stretchByDefault: customElement.width.stretchByDefault,\n },\n height: {\n defaultHeight: customElement.height.defaultHeight,\n heightMode: HeightMode.FIXED,\n },\n },\n }),\n });\n\n return {\n compId: customElementData.id,\n compType: ComponentType.CUSTOM_ELEMENT_WIDGET as const,\n compName: customElementData.name,\n compData: {\n customElementWidget: {\n base: {\n name: customElementData.name,\n },\n widgetData: {\n tagName: component.tagName,\n scriptType: CustomElementScriptType.ES_MODULE,\n scriptUrl,\n },\n size: customElementData.size,\n installation: {\n base: customElementData.base,\n widget: { region: RegionType.BODY },\n },\n behaviors:\n component.relativePanelPath && settingsUrl\n ? { settings: { settingsUrl } }\n : {},\n dependencies: component.dependencies,\n },\n },\n };\n};\n\nexport async function createAppManifest({\n appId,\n components,\n sentryDSN,\n componentSourceBuilder,\n}: CreateAppManifestParams): Promise<AppManifest> {\n validateComponents(components);\n\n const appManifestComponents = (\n await Promise.all(\n components.map(\n match({\n DashboardPage: async (component): Promise<BackofficePage> => {\n const componentSentryDSN = component.sentryDSN ?? sentryDSN;\n return {\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_PAGE as const,\n compData: {\n backOfficePage: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n fullPage: component.sidebar?.whenActive?.hideSidebar,\n hideInSidebar: component.sidebar?.disabled,\n priority: component.sidebar?.priority,\n routePath: component.route.slice(1),\n title: component.title,\n pageCategoryId: component.sidebar?.categoryId,\n activeSidebarPageId:\n component.sidebar?.whenActive?.selectedPageId,\n requiredPermission: component.requiredPermission,\n previousRoutePaths: component.additionalRoutes,\n ...(componentSentryDSN\n ? { errorReporting: { url: componentSentryDSN } }\n : undefined),\n ...(await componentSourceBuilder(component)),\n },\n },\n compName: component.title,\n experiment: getExperiment(component, appId),\n };\n },\n DashboardPlugin: async (\n component\n ): Promise<BackofficeExtensionWidget> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_EXTENSION_WIDGET as const,\n compData: {\n backOfficeExtensionWidget: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n extends: component.extends,\n title: component.title,\n requiredPermission: component.requiredPermission,\n width: component.width,\n height: component.height,\n ...(await componentSourceBuilder(component)),\n ...(component.sentryDSN\n ? { errorReporting: { url: component.sentryDSN } }\n : undefined),\n },\n },\n compName: component.title,\n }),\n DashboardMenuPlugin: async (\n component\n ): Promise<BackofficeExtensionMenuItem> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_EXTENSION_MENU_ITEM as const,\n compData: {\n backOfficeExtensionMenuItem: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n id: component.id,\n title: component.title,\n subtitle: component.subtitle,\n iconKey: component.iconKey,\n extends: component.extends,\n action: component.action,\n requiredPermission: component.requiredPermission,\n ...(component.sentryDSN\n ? { errorReporting: { url: component.sentryDSN } }\n : undefined),\n },\n },\n compName: component.title,\n }),\n DashboardModal: async (component): Promise<BackofficeModal> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_MODAL as const,\n compData: {\n backOfficeModal: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n title: component.title,\n requiredPermission: component.requiredPermission,\n width: component.width,\n height: component.height,\n ...(await componentSourceBuilder(component)),\n ...(component.sentryDSN\n ? { errorReporting: { url: component.sentryDSN } }\n : undefined),\n },\n },\n compName: component.title,\n }),\n DashboardSidebarCategory: async (\n component\n ): Promise<BackofficeSideCategory> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_SIDEBAR_CATEGORY as const,\n compData: {\n backOfficeSidebarCategory: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n title: component.label,\n priority: component.priority,\n },\n },\n compName: component.label,\n }),\n EmbeddedScript: async (component): Promise<EmbeddedScript> => ({\n compId: component.id,\n compType: ComponentType.EMBEDDED_SCRIPT as const,\n compName: component.name,\n compData: {\n embeddedScriptComponentData: {\n name: component.name,\n pages: EmbeddedScriptPages.NONE_PAGES,\n placement: component.placement,\n connectArticleUrl: '',\n embedCategory: component.scriptType,\n dependencies: component.dependencies,\n loadOnce: true,\n allowedForFreeSite: true,\n ...(await componentSourceBuilder(component)),\n },\n },\n }),\n CustomElement: async (component): Promise<CustomElement> => {\n const { scriptUrl, settingsUrl } = await componentSourceBuilder(\n component\n );\n\n return createCustomElementConfig(component, scriptUrl, settingsUrl);\n },\n Topology: async (component): Promise<Topology> => {\n return {\n compId: component.id,\n compType: ComponentType.TOPOLOGY as const,\n compName: component.name,\n compData: {\n topology: {\n topology: {\n backendApiUrl: component.backendApiUrl,\n },\n },\n },\n };\n },\n Api: () => null,\n Event: async (component): Promise<Webhook[]> => {\n const webhookSlugs = await componentSourceBuilder(component);\n\n return webhookSlugs.map(({ webhookSlug }) => ({\n compName: webhookSlug,\n compId: randomUUID(),\n compType: ComponentType.WEBHOOK,\n compData: {\n webhook: {\n callbackUrl: '__WEBHOOKS_URL_PLACEHOLDER__',\n webhookSlug,\n },\n },\n }));\n },\n SitePlugin: async (\n component\n ): Promise<Array<SitePlugin | CustomElement>> => {\n const { scriptUrl, settingsUrl } = await componentSourceBuilder(\n component\n );\n\n const customElementConfig = createCustomElementConfig(\n component,\n scriptUrl,\n settingsUrl\n );\n\n return [\n customElementConfig,\n {\n compId: component.id,\n compType: ComponentType.WIDGET_PLUGIN as const,\n compName: component.marketData.name,\n compData: {\n widgetPlugin: {\n referenceComponentId: component.referenceComponentId,\n placements: component.placements,\n marketData: component.marketData,\n },\n },\n },\n ];\n },\n ServicePlugin: async (component): Promise<ServicePlugin> => {\n const servicePlugin = match(component.servicePlugin, {\n EcomShippingRates: (component): EcomShippingRates => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_SHIPPING_RATES,\n compData: {\n ecomShippingRates: {\n name: component.name,\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n description: component.description,\n learnMoreUrl: component.learnMoreUrl,\n dashboardUrl: component.dashboardUrl,\n fallbackDefinitionMandatory:\n component.fallbackDefinitionMandatory,\n thumbnailUrl: component.thumbnailUrl,\n },\n },\n }),\n EcomAdditionalFees: (component): EcomAdditionalFees => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_ADDITIONAL_FEES,\n compData: {\n ecomAdditionalFees: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n },\n },\n }),\n EcomDiscountsTrigger: (component): EcomDiscountsTrigger => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_DISCOUNTS_TRIGGER,\n compData: {\n ecomDiscountsTrigger: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n },\n },\n }),\n EcomValidations: (component): EcomValidations => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_VALIDATIONS,\n compData: {\n ecomValidations: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n validateInCart: component.validateInCart,\n },\n },\n }),\n EcomPaymentSettings: (component): EcomPaymentSettings => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_PAYMENT_SETTINGS,\n compData: {\n ecomPaymentSettings: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n fallbackValueForRequires3dSecure:\n component.fallbackValueForRequires3dSecure,\n },\n },\n }),\n EcomGiftCardsProvider: (component): EcomGiftCardsProvider => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.GIFT_CARDS_PROVIDER,\n compData: {\n giftCardsProvider: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n },\n },\n }),\n });\n\n const { servicePluginType } = await componentSourceBuilder(\n component\n );\n\n if (servicePlugin.compType !== servicePluginType) {\n throw new CliError({\n code: CliErrorCode.InvalidServicePluginImplementation({\n configuredImplementation: servicePlugin.compType,\n }),\n });\n }\n\n return servicePlugin;\n },\n })\n )\n )\n )\n .filter(isTruthy)\n .flat();\n\n const uniqueComponents = uniqWith(appManifestComponents, (one, two) => {\n return (\n one.compType === ComponentType.WEBHOOK &&\n two.compType === ComponentType.WEBHOOK &&\n one.compData.webhook.webhookSlug === two.compData.webhook.webhookSlug\n );\n });\n\n return {\n appId,\n components: uniqueComponents,\n };\n}\n","import { BackOfficeScriptAssetType } from '@wix/ambassador-devcenter-components-v1-component/types';\nimport type { ComponentSource } from '@wix/cli-app-manifest';\nimport { match } from 'variant';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { SupportedServicePlugin } from '@wix/cli-app-definitions';\nimport { getAppBackendBuildFolder } from '@wix/cli-app-definitions';\nimport type * as GetRegisteredExtensions from '@wix/cli-cloudflare-runtime/getRegisteredExtensions';\nimport { getBackendEventSlug } from '@wix/extensions-data-client';\nimport {\n virtualModuleIdForScriptAsset,\n virtualPathForHTMLAsset,\n} from '../dev-center/components/dashboard/config.js';\nimport {\n virtualModuleIdForCustomElementScriptAsset,\n virtualPathForCustomElementPanelHTMLAsset,\n} from '../dev-center/components/site/config.js';\nimport type { ProjectModel } from '../model.js';\nimport type { ViteBuildOutput } from './build-output-data-extractor.js';\nimport {\n extractModuleBundleContent,\n extractModuleBundleName,\n} from './build-output-data-extractor.js';\nimport type { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\n\ntype BackendSource =\n | {\n backendBuildOutput: ViteBuildOutput | undefined;\n backendDevServerUrl?: never;\n }\n | { backendDevServerUrl: string | undefined; backendBuildOutput?: never };\n\ntype ClientSource =\n | { clientBuildOutput: ViteBuildOutput; clientDevServerUrl?: never }\n | { clientDevServerUrl: string; clientBuildOutput?: never };\n\ntype DashboardSource =\n | {\n iframeUrl: string;\n scriptAsset?: never;\n }\n | {\n scriptAsset: ComponentSource['scriptAsset'];\n iframeUrl?: never;\n };\n\ninterface EmbeddedScriptSource {\n template: string;\n}\n\ninterface CustomElementSource {\n scriptUrl: string;\n settingsUrl: string;\n}\n\ninterface SitePluginSource {\n scriptUrl: string;\n settingsUrl: string;\n}\n\ninterface EventSource {\n webhookSlug: string;\n}\n\ninterface ServicePluginSource {\n servicePluginType: SupportedServicePlugin;\n}\n\nexport type ComponentSourceBuilder = <T extends DevCenterComponent>(\n component: T\n) => Promise<\n T extends DevCenterComponent<'EmbeddedScript'>\n ? EmbeddedScriptSource\n : T extends DevCenterComponent<'CustomElement'>\n ? CustomElementSource\n : T extends DevCenterComponent<'DashboardPage'>\n ? DashboardSource\n : T extends DevCenterComponent<'DashboardPlugin'>\n ? DashboardSource\n : T extends DevCenterComponent<'DashboardModal'>\n ? DashboardSource\n : T extends DevCenterComponent<'Event'>\n ? EventSource[]\n : T extends DevCenterComponent<'ServicePlugin'>\n ? ServicePluginSource\n : T extends DevCenterComponent<'SitePlugin'>\n ? SitePluginSource\n : undefined\n>;\n\nasync function getEmbeddedScriptDevTemplate(\n component: DevCenterComponent<'EmbeddedScript'>,\n backendDevServerUrl: string\n) {\n const url = new URL(component.relativePath, backendDevServerUrl).href;\n const devTemplate = await fetch(url).then((res) => res.text());\n\n return devTemplate;\n}\n\nasync function getEventDevSlugs(\n component: DevCenterComponent<'Event'>,\n backendDevServerUrl: string\n) {\n const url = new URL(`__get-registered-events`, backendDevServerUrl).href;\n const response = await fetch(url);\n\n if (!response.ok) {\n return [];\n }\n\n const eventTypes = await response.json();\n const devSlugs = eventTypes[`/${component.relativePath}`] ?? [];\n\n return devSlugs as string[];\n}\n\nasync function getRegisteredExtensions(model: ProjectModel) {\n const backendBuildFolder = getAppBackendBuildFolder(model.projectFolder);\n const outputFilepath = join(\n backendBuildFolder,\n 'getRegisteredExtensions.mjs'\n );\n\n return import(pathToFileURL(outputFilepath).href) as Promise<\n typeof GetRegisteredExtensions\n >;\n}\n\nasync function getEventProdSlugs(\n component: DevCenterComponent<'Event'>,\n model: ProjectModel\n) {\n const { getRegisteredEvents } = await getRegisteredExtensions(model);\n\n const eventsMap = await getRegisteredEvents();\n\n return eventsMap[`/${component.relativePath}`];\n}\n\nasync function getServicePluginDevType(\n component: DevCenterComponent<'ServicePlugin'>,\n backendDevServerUrl: string\n) {\n const url = new URL(`__get-registered-service-plugins`, backendDevServerUrl)\n .href;\n const response = await fetch(url);\n\n if (!response.ok) {\n return null;\n }\n\n const servicePluginTypes = await response.json();\n const servicePluginType = servicePluginTypes[`/${component.relativePath}`];\n\n return servicePluginType as string;\n}\n\nasync function getServicePluginProdType(\n component: DevCenterComponent<'ServicePlugin'>,\n model: ProjectModel\n) {\n const { getRegisteredServicePlugins } = await getRegisteredExtensions(model);\n\n const servicePluginsMap = await getRegisteredServicePlugins();\n\n return servicePluginsMap[`/${component.relativePath}`];\n}\n\nconst dashboardSourceBuilder = (\n component:\n | DevCenterComponent<'DashboardPage'>\n | DevCenterComponent<'DashboardPlugin'>\n | DevCenterComponent<'DashboardModal'>,\n model: ProjectModel,\n clientSource: ClientSource\n): DashboardSource => {\n if (!model.config.trusted) {\n return {\n iframeUrl: virtualPathForHTMLAsset(component.id),\n };\n }\n const moduleId = virtualModuleIdForScriptAsset(component.id);\n const componentUrl = clientSource.clientBuildOutput\n ? extractModuleBundleName(clientSource.clientBuildOutput, moduleId)\n : `/@id/${moduleId}?import`;\n\n return {\n scriptAsset: {\n exportedName: component.id,\n containerId: model.config.appId,\n url: componentUrl,\n scriptType: BackOfficeScriptAssetType.MODULE,\n },\n };\n};\n\nconst embeddedScriptBuilder = async (\n component: DevCenterComponent<'EmbeddedScript'>,\n { clientBuildOutput, clientDevServerUrl }: ClientSource\n): Promise<EmbeddedScriptSource> => {\n return {\n template: clientBuildOutput\n ? extractModuleBundleContent(clientBuildOutput, component.relativePath)\n : await getEmbeddedScriptDevTemplate(component, clientDevServerUrl),\n };\n};\n\nconst eventSourceBuilder = async (\n component: DevCenterComponent<'Event'>,\n model: ProjectModel,\n backendSource: BackendSource\n): Promise<EventSource[]> => {\n const fullSlugNames = backendSource.backendDevServerUrl\n ? await getEventDevSlugs(component, backendSource.backendDevServerUrl)\n : await getEventProdSlugs(component, model);\n\n const webhookSlugs = fullSlugNames\n ? await Promise.all(fullSlugNames.map(getBackendEventSlug))\n : [];\n\n return webhookSlugs.map((webhookSlug) => ({\n webhookSlug,\n }));\n};\n\nconst servicePluginSourceBuilder = async (\n component: DevCenterComponent<'ServicePlugin'>,\n model: ProjectModel,\n backendSource: BackendSource\n): Promise<ServicePluginSource> => {\n const servicePluginType = backendSource.backendDevServerUrl\n ? await getServicePluginDevType(\n component,\n backendSource.backendDevServerUrl\n )\n : await getServicePluginProdType(component, model);\n\n if (!servicePluginType) {\n throw new Error('could not find service plugin definition');\n }\n\n return {\n servicePluginType,\n } as ServicePluginSource;\n};\n\nconst customElementBuilder = (\n component: DevCenterComponent<'CustomElement' | 'SitePlugin'>,\n clientSource: ClientSource\n): CustomElementSource => {\n const moduleId = virtualModuleIdForCustomElementScriptAsset(component.id);\n const componentUrl = clientSource.clientBuildOutput\n ? extractModuleBundleName(clientSource.clientBuildOutput, moduleId)\n : `/@id/${moduleId}?import`;\n\n return {\n scriptUrl: componentUrl,\n settingsUrl: virtualPathForCustomElementPanelHTMLAsset(component.id),\n };\n};\n\nexport function getComponentSourceBuilder(\n model: ProjectModel,\n clientSource: ClientSource,\n backendSource: BackendSource\n) {\n return (async (component: DevCenterComponent) => {\n const source = match(component, {\n EmbeddedScript: (embeddedScriptComponent) =>\n embeddedScriptBuilder(embeddedScriptComponent, clientSource),\n DashboardSidebarCategory: () => {},\n CustomElement: (customElementComponent) =>\n customElementBuilder(customElementComponent, clientSource),\n SitePlugin: (component) => customElementBuilder(component, clientSource),\n DashboardPage: (dashboardPageComponent) =>\n dashboardSourceBuilder(dashboardPageComponent, model, clientSource),\n DashboardPlugin: (dashboardPluginComponent) =>\n dashboardSourceBuilder(dashboardPluginComponent, model, clientSource),\n DashboardModal: (dashboardModalComponent) =>\n dashboardSourceBuilder(dashboardModalComponent, model, clientSource),\n DashboardMenuPlugin: () => {},\n Topology: () => {},\n Api: () => {},\n Event: (component) => eventSourceBuilder(component, model, backendSource),\n ServicePlugin: (component) =>\n servicePluginSourceBuilder(component, model, backendSource),\n });\n\n return source;\n }) as ComponentSourceBuilder;\n}\n","import { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { build } from 'vite';\n\nexport type ViteBuildOutput = Awaited<ReturnType<typeof build>>;\n\nfunction extractBuildOutputs(buildOutput: ViteBuildOutput) {\n const isValidRollupOutput =\n 'output' in buildOutput || Array.isArray(buildOutput);\n\n if (!isValidRollupOutput) {\n throw new CliError({ code: CliErrorCode.InvalidViteBuildOutput() });\n }\n\n const outputs = Array.isArray(buildOutput)\n ? buildOutput.flatMap((output) => output.output)\n : buildOutput.output;\n\n return outputs;\n}\n\nexport function extractModuleBundleName(\n buildOutput: ViteBuildOutput,\n moduleId: string\n) {\n const outputs = extractBuildOutputs(buildOutput);\n\n const output = outputs.find(\n (output) => output.type === 'chunk' && output.facadeModuleId === moduleId\n );\n\n if (!output) {\n throw new CliError({ code: CliErrorCode.ViteModuleBundleNotFound() });\n }\n\n return output.fileName;\n}\n\nexport function extractModuleBundleContent(\n buildOutput: ViteBuildOutput,\n fileName: string\n) {\n const outputs = extractBuildOutputs(buildOutput);\n\n const output = outputs.find((output) => output.fileName === fileName);\n\n if (!output || !('source' in output)) {\n throw new CliError({\n code: CliErrorCode.ViteFileNotFoundInOutput({ fileName }),\n });\n }\n\n return output.source.toString();\n}\n"],"mappings":"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","names":["require_baseFindIndex","__commonJSMin","exports","module","init_esm_shims","baseFindIndex","array","predicate","fromIndex","fromRight","length","index","require_baseIsNaN","__commonJSMin","exports","module","init_esm_shims","baseIsNaN","value","require_strictIndexOf","__commonJSMin","exports","module","init_esm_shims","strictIndexOf","array","value","fromIndex","index","length","require_baseIndexOf","__commonJSMin","exports","module","init_esm_shims","baseFindIndex","baseIsNaN","strictIndexOf","baseIndexOf","array","value","fromIndex","require_arrayIncludes","__commonJSMin","exports","module","init_esm_shims","baseIndexOf","arrayIncludes","array","value","length","require_arrayIncludesWith","__commonJSMin","exports","module","init_esm_shims","arrayIncludesWith","array","value","comparator","index","length","require_noop","__commonJSMin","exports","module","init_esm_shims","noop","require_createSet","__commonJSMin","exports","module","init_esm_shims","Set","noop","setToArray","INFINITY","createSet","values","require_baseUniq","__commonJSMin","exports","module","init_esm_shims","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","LARGE_ARRAY_SIZE","baseUniq","array","iteratee","comparator","index","includes","length","isCommon","result","seen","set","outer","value","computed","seenIndex","require_uniqWith","__commonJSMin","exports","module","init_esm_shims","baseUniq","uniqWith","array","comparator","init_esm_shims","import_variant","randomUUID","validateComponents","components","devCenterComponentsToIdMap","component","DevCenterComponent","a","b","componentList","devCenterComponentsWithSameIDMap","devCenterComponents","key","CliError","CliErrorCode","id","title","relativePath","replaceExtension","label","CONFIG_FILENAME","name","marketData","randomUUID","init_esm_shims","import_variant","import_uniqWith","randomUUID","isTruthy","x","getExperiment","component","appId","createCustomElementConfig","scriptUrl","settingsUrl","customElementData","sitePlugin","HeightMode","customElement","ComponentType","CustomElementScriptType","RegionType","createAppManifest","components","sentryDSN","componentSourceBuilder","validateComponents","appManifestComponents","componentSentryDSN","BackOfficeHostingPlatforms","EmbeddedScriptPages","webhookSlug","randomUUID","servicePlugin","servicePluginType","CliError","CliErrorCode","uniqueComponents","uniqWith","one","two","init_esm_shims","import_variant","join","pathToFileURL","init_esm_shims","extractBuildOutputs","buildOutput","CliError","CliErrorCode","output","extractModuleBundleName","moduleId","extractModuleBundleContent","fileName","getEmbeddedScriptDevTemplate","component","backendDevServerUrl","url","res","getEventDevSlugs","response","getRegisteredExtensions","model","backendBuildFolder","getAppBackendBuildFolder","outputFilepath","join","pathToFileURL","getEventProdSlugs","getRegisteredEvents","getServicePluginDevType","getServicePluginProdType","getRegisteredServicePlugins","dashboardSourceBuilder","clientSource","virtualPathForHTMLAsset","moduleId","virtualModuleIdForScriptAsset","componentUrl","extractModuleBundleName","BackOfficeScriptAssetType","embeddedScriptBuilder","clientBuildOutput","clientDevServerUrl","extractModuleBundleContent","eventSourceBuilder","backendSource","fullSlugNames","getBackendEventSlug","webhookSlug","servicePluginSourceBuilder","servicePluginType","customElementBuilder","virtualModuleIdForCustomElementScriptAsset","virtualPathForCustomElementPanelHTMLAsset","getComponentSourceBuilder","embeddedScriptComponent","customElementComponent","dashboardPageComponent","dashboardPluginComponent","dashboardModalComponent"]}
@@ -1,4 +1,4 @@
1
1
  import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
- import{e as k}from"./chunk-IZOKP4UZ.js";import{a as L}from"./chunk-L7P6I5SY.js";import{j as E,m as v,o as D}from"./chunk-3HELHIBJ.js";import{ha as B,ka as w,la as t,m as a}from"./chunk-SQGBFWJ2.js";import{A as P,D as m,O as h,W as f,X as b,b as S,e as x,f as g,x as e}from"./chunk-UGTXCT5B.js";import{e as C,h as n}from"./chunk-V4TR6DCM.js";n();async function A(o){let i=B(o),l=w(o);if(!await a(i)||!await a(l))throw new x({code:g.BuiltProjectNeeded()})}n();var r=C(S(),1);var s=({url:o,label:i,withPointer:l=!0})=>r.default.createElement(e,null,r.default.createElement(e,{marginRight:1},l&&r.default.createElement(m,null),r.default.createElement(e,{marginLeft:1},r.default.createElement(h,{url:o},i)))),G=()=>{let{t:o}=b(),{isPlatformExists:i,hasSinglePlatform:l}=k(),{dashboardExtensions:p}=L(),{site:y}=E(),u=v(),d=D();return r.default.createElement(r.default.Fragment,null,l(t.Dashboard())?r.default.createElement(e,{flexDirection:"row"},r.default.createElement(f,{i18nKey:"general.open_preview.title_single"}),r.default.createElement(s,{withPointer:!1,url:d(p[0]),label:o("general.platform.dashboard")})):r.default.createElement(e,{flexDirection:"column"},r.default.createElement(f,{i18nKey:"general.open_preview.title_multiple"}),r.default.createElement(e,{paddingLeft:2,flexDirection:"column"},i(t.Site())&&(y.viewUrl?r.default.createElement(s,{url:u(t.Site()),label:o("general.platform.site")}):r.default.createElement(e,{marginRight:1},r.default.createElement(m,null),r.default.createElement(e,{marginLeft:1},r.default.createElement(P,{skin:"secondary",underline:!0},o("general.platform.unpublished_site"))))),i(t.Editor())&&r.default.createElement(s,{url:u(t.Editor()),label:o("general.platform.editor")}),i(t.Dashboard())&&r.default.createElement(s,{url:d(p[0]),label:o("general.platform.dashboard")}))))};export{A as a,G as b};
4
- //# sourceMappingURL=chunk-5YVFVF4T.js.map
3
+ import{e as k}from"./chunk-RKLU4NIT.js";import{a as L}from"./chunk-VBODBNSF.js";import{j as E,m as v,o as D}from"./chunk-244VWIWT.js";import{ia as B,la as w,m as a,ma as t}from"./chunk-DCT2GH4K.js";import{A as P,D as m,O as h,W as f,X as b,b as S,e as x,f as g,x as e}from"./chunk-W5VAOQOV.js";import{e as C,h as n}from"./chunk-V4TR6DCM.js";n();async function A(o){let i=B(o),l=w(o);if(!await a(i)||!await a(l))throw new x({code:g.BuiltProjectNeeded()})}n();var r=C(S(),1);var s=({url:o,label:i,withPointer:l=!0})=>r.default.createElement(e,null,r.default.createElement(e,{marginRight:1},l&&r.default.createElement(m,null),r.default.createElement(e,{marginLeft:1},r.default.createElement(h,{url:o},i)))),G=()=>{let{t:o}=b(),{isPlatformExists:i,hasSinglePlatform:l}=k(),{dashboardExtensions:p}=L(),{site:y}=E(),u=v(),d=D();return r.default.createElement(r.default.Fragment,null,l(t.Dashboard())?r.default.createElement(e,{flexDirection:"row"},r.default.createElement(f,{i18nKey:"general.open_preview.title_single"}),r.default.createElement(s,{withPointer:!1,url:d(p[0]),label:o("general.platform.dashboard")})):r.default.createElement(e,{flexDirection:"column"},r.default.createElement(f,{i18nKey:"general.open_preview.title_multiple"}),r.default.createElement(e,{paddingLeft:2,flexDirection:"column"},i(t.Site())&&(y.viewUrl?r.default.createElement(s,{url:u(t.Site()),label:o("general.platform.site")}):r.default.createElement(e,{marginRight:1},r.default.createElement(m,null),r.default.createElement(e,{marginLeft:1},r.default.createElement(P,{skin:"secondary",underline:!0},o("general.platform.unpublished_site"))))),i(t.Editor())&&r.default.createElement(s,{url:u(t.Editor()),label:o("general.platform.editor")}),i(t.Dashboard())&&r.default.createElement(s,{url:d(p[0]),label:o("general.platform.dashboard")}))))};export{A as a,G as b};
4
+ //# sourceMappingURL=chunk-44AYFU7B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/files/assert-build-output-exists.ts","../src/components/Platform/PlatformViewer.tsx"],"sourcesContent":["import { pathExists } from '@wix/cli-fs';\nimport {\n getAppBuildFolder,\n getAppManifestPath,\n} from '@wix/cli-app-definitions';\nimport { CliErrorCode, CliError } from '@wix/cli-error';\n\nexport async function assertBuildOutputExists(projectFolder: string) {\n const buildFolder = getAppBuildFolder(projectFolder);\n const manifestPath = getAppManifestPath(projectFolder);\n\n if (!(await pathExists(buildFolder)) || !(await pathExists(manifestPath))) {\n throw new CliError({\n code: CliErrorCode.BuiltProjectNeeded(),\n });\n }\n}\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { Box, Link, PointerSmallIcon, Text } from '@wix/cli-ui-kit';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport {\n useResolveDashboardExtensionUrl,\n useResolvePlatformUrl,\n} from '../extensions/utils.js';\nimport { usePlatform } from './usePlatform.js';\nimport { useSiteId } from '../../site-id/useSiteId.js';\n\ninterface PlatformLinkProps {\n url: string;\n label: string;\n withPointer?: boolean;\n}\n\nconst PlatformLink: FC<PlatformLinkProps> = ({\n url,\n label,\n withPointer = true,\n}) => {\n return (\n <Box>\n <Box marginRight={1}>\n {withPointer && <PointerSmallIcon />}\n <Box marginLeft={1}>\n <Link url={url}>{label}</Link>\n </Box>\n </Box>\n </Box>\n );\n};\n\nexport const PlatformViewer: FC = () => {\n const { t } = useTranslation();\n const { isPlatformExists, hasSinglePlatform } = usePlatform();\n const { dashboardExtensions } = useExtensions();\n const { site } = useSiteId();\n const resolvePlatformUrl = useResolvePlatformUrl();\n const resolveDashboardExtensionUrl = useResolveDashboardExtensionUrl();\n\n return (\n <>\n {hasSinglePlatform(PlatformType.Dashboard()) ? (\n <Box flexDirection=\"row\">\n <Trans i18nKey=\"general.open_preview.title_single\" />\n <PlatformLink\n withPointer={false}\n url={resolveDashboardExtensionUrl(dashboardExtensions[0]!)}\n label={t('general.platform.dashboard')}\n />\n </Box>\n ) : (\n <Box flexDirection=\"column\">\n <Trans i18nKey=\"general.open_preview.title_multiple\" />\n <Box paddingLeft={2} flexDirection=\"column\">\n {isPlatformExists(PlatformType.Site()) &&\n (site.viewUrl ? (\n <PlatformLink\n url={resolvePlatformUrl(PlatformType.Site())}\n label={t('general.platform.site')}\n />\n ) : (\n <Box marginRight={1}>\n <PointerSmallIcon />\n <Box marginLeft={1}>\n <Text skin=\"secondary\" underline>\n {t('general.platform.unpublished_site')}\n </Text>\n </Box>\n </Box>\n ))}\n {isPlatformExists(PlatformType.Editor()) && (\n <PlatformLink\n url={resolvePlatformUrl(PlatformType.Editor())}\n label={t('general.platform.editor')}\n />\n )}\n {isPlatformExists(PlatformType.Dashboard()) && (\n <PlatformLink\n url={resolveDashboardExtensionUrl(dashboardExtensions[0]!)}\n label={t('general.platform.dashboard')}\n />\n )}\n </Box>\n </Box>\n )}\n </>\n );\n};\n"],"mappings":";;qVAAAA,IAOA,eAAsBC,EAAwBC,EAAuB,CACnE,IAAMC,EAAcC,EAAkBF,CAAa,EAC7CG,EAAeC,EAAmBJ,CAAa,EAErD,GAAI,CAAE,MAAMK,EAAWJ,CAAW,GAAM,CAAE,MAAMI,EAAWF,CAAY,EACrE,MAAM,IAAIG,EAAS,CACjB,KAAMC,EAAa,mBAAmB,CACxC,CAAC,CAEL,CChBAC,IAAA,IAAAC,EAAkB,SAmBlB,IAAMC,EAAsC,CAAC,CAC3C,IAAAC,EACA,MAAAC,EACA,YAAAC,EAAc,EAChB,IAEI,EAAAC,QAAA,cAACC,EAAA,KACC,EAAAD,QAAA,cAACC,EAAA,CAAI,YAAa,GACfF,GAAe,EAAAC,QAAA,cAACE,EAAA,IAAiB,EAClC,EAAAF,QAAA,cAACC,EAAA,CAAI,WAAY,GACf,EAAAD,QAAA,cAACG,EAAA,CAAK,IAAKN,GAAMC,CAAM,CACzB,CACF,CACF,EAISM,EAAqB,IAAM,CACtC,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvB,CAAE,iBAAAC,EAAkB,kBAAAC,CAAkB,EAAIC,EAAY,EACtD,CAAE,oBAAAC,CAAoB,EAAIC,EAAc,EACxC,CAAE,KAAAC,CAAK,EAAIC,EAAU,EACrBC,EAAqBC,EAAsB,EAC3CC,EAA+BC,EAAgC,EAErE,OACE,EAAAjB,QAAA,gBAAAA,QAAA,cACGQ,EAAkBU,EAAa,UAAU,CAAC,EACzC,EAAAlB,QAAA,cAACC,EAAA,CAAI,cAAc,OACjB,EAAAD,QAAA,cAACmB,EAAA,CAAM,QAAQ,oCAAoC,EACnD,EAAAnB,QAAA,cAACJ,EAAA,CACC,YAAa,GACb,IAAKoB,EAA6BN,EAAoB,CAAC,CAAE,EACzD,MAAOL,EAAE,4BAA4B,EACvC,CACF,EAEA,EAAAL,QAAA,cAACC,EAAA,CAAI,cAAc,UACjB,EAAAD,QAAA,cAACmB,EAAA,CAAM,QAAQ,sCAAsC,EACrD,EAAAnB,QAAA,cAACC,EAAA,CAAI,YAAa,EAAG,cAAc,UAChCM,EAAiBW,EAAa,KAAK,CAAC,IAClCN,EAAK,QACJ,EAAAZ,QAAA,cAACJ,EAAA,CACC,IAAKkB,EAAmBI,EAAa,KAAK,CAAC,EAC3C,MAAOb,EAAE,uBAAuB,EAClC,EAEA,EAAAL,QAAA,cAACC,EAAA,CAAI,YAAa,GAChB,EAAAD,QAAA,cAACE,EAAA,IAAiB,EAClB,EAAAF,QAAA,cAACC,EAAA,CAAI,WAAY,GACf,EAAAD,QAAA,cAACoB,EAAA,CAAK,KAAK,YAAY,UAAS,IAC7Bf,EAAE,mCAAmC,CACxC,CACF,CACF,GAEHE,EAAiBW,EAAa,OAAO,CAAC,GACrC,EAAAlB,QAAA,cAACJ,EAAA,CACC,IAAKkB,EAAmBI,EAAa,OAAO,CAAC,EAC7C,MAAOb,EAAE,yBAAyB,EACpC,EAEDE,EAAiBW,EAAa,UAAU,CAAC,GACxC,EAAAlB,QAAA,cAACJ,EAAA,CACC,IAAKoB,EAA6BN,EAAoB,CAAC,CAAE,EACzD,MAAOL,EAAE,4BAA4B,EACvC,CAEJ,CACF,CAEJ,CAEJ","names":["init_esm_shims","assertBuildOutputExists","projectFolder","buildFolder","getAppBuildFolder","manifestPath","getAppManifestPath","pathExists","CliError","CliErrorCode","init_esm_shims","import_react","PlatformLink","url","label","withPointer","React","Box_default","PointerSmallIcon","Link","PlatformViewer","t","useTranslation","isPlatformExists","hasSinglePlatform","usePlatform","dashboardExtensions","useExtensions","site","useSiteId","resolvePlatformUrl","useResolvePlatformUrl","resolveDashboardExtensionUrl","useResolveDashboardExtensionUrl","PlatformType","Trans","Text"]}
@@ -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-QF6RQBVB.js";import{Y as t}from"./chunk-W5VAOQOV.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-AT2TE5HS.js.map
@@ -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 Q,b as W}from"./chunk-5YVFVF4T.js";import{b as M,c as Y,d as q}from"./chunk-IZOKP4UZ.js";import{a as K}from"./chunk-6MMLDNFM.js";import{a as J}from"./chunk-7RL4TN6T.js";import{g as N,h as V,j as H,k as z}from"./chunk-3HELHIBJ.js";import{La as L,Ma as h,Na as j,Oa as E,Xa as G,mb as D,u as F}from"./chunk-SQGBFWJ2.js";import{A as I,C as _,M as O,P as b,S as k,T as l,W as B,X as U,b as f,c as A,x as d}from"./chunk-UGTXCT5B.js";import{e as c,h as t}from"./chunk-V4TR6DCM.js";t();t();var x=c(f(),1);t();var e=c(f(),1),Z=c(A(),1);t();var v=c(f(),1),X=c(A(),1),C=({status:i,loadingText:s,successText:n})=>(0,X.match)(i,{NotRequested:()=>null,Loading:()=>v.default.createElement(b,{text:s}),Error:()=>null,Success:()=>v.default.createElement(O,{type:"success"},n)});var $=({baseUrl:i,onPreviewCreated:s})=>{let{site:n}=H(),{t:m}=U(),{model:r}=D(),{backendComponents:R}=K(),ee=N(),re=F(),{getAppByVersion:oe}=E(),{createOverride:te}=Y(),ie=j({type:"backoffice"}),y=l(()=>G(r.config.appId,r.projectFolder,re,ie,R.length>0)),ne=l((p,o)=>te({appId:r.config.appId,siteId:n.id,overrides:o})),P=l((p,o,u,a)=>J({model:r,arm:ee,serveUrl:o,backendServerUrl:a,topologyComponentId:u})),{status:se}=k(async()=>{await Q(r.projectFolder);let{serveUrl:p,backendServerUrl:o}=i?{serveUrl:i,backendServerUrl:void 0}:await y.execute(),{data:{components:u}}=await oe({appId:r.config.appId}),a=u.find(pe=>pe.compType===h.TOPOLOGY),S=q(r),{id:me}=S?await ne.execute(S):await Promise.resolve({id:void 0}),T=await P.execute(p,a?.compId,o);return a&&await L(r.projectFolder,{topologyComponentId:a.compId}),s?.(T,o),{armTag:T,siteOverrideId:me}},[]);return e.default.createElement(e.default.Fragment,null,e.default.createElement(C,{status:y.status,loadingText:m("preview_command.uploading_files"),successText:m("preview_command.uploading_files_success")}),e.default.createElement(C,{status:P.status,loadingText:m("preview_command.creating_preview"),successText:m("preview_command.creating_preview_success")}),(0,Z.match)(se,{Error:()=>null,Loading:()=>null,Success:({result:{armTag:p,siteOverrideId:o}})=>e.default.createElement(z,{siteOverrideId:o},e.default.createElement(V,{armTag:p},e.default.createElement(d,{rowGap:1,marginY:1,flexDirection:"column"},e.default.createElement(d,{gap:1},e.default.createElement(_,null),e.default.createElement(B,{i18nKey:"general.dev_site.current",values:{name:n.displayName}})),e.default.createElement(d,{rowGap:1},e.default.createElement(W,null)),e.default.createElement(I,{skin:"info"},m("preview_command.note_about_temporary_backend")))))}))};var ae=({baseUrl:i,siteIdOverride:s,onPreviewCreated:n})=>x.default.createElement(M,{siteId:s},x.default.createElement($,{baseUrl:i,onPreviewCreated:n}));export{ae as a};
4
- //# sourceMappingURL=chunk-3OFSARA2.js.map
3
+ import{a as Q,b as W}from"./chunk-44AYFU7B.js";import{b as M,c as Y,d as q}from"./chunk-RKLU4NIT.js";import{a as K}from"./chunk-PDLH2OMF.js";import{a as J}from"./chunk-33U542O7.js";import{g as N,h as V,j as H,k as z}from"./chunk-244VWIWT.js";import{Na as L,Oa as h,Pa as j,Qa as E,Za as G,qb as D,u as F}from"./chunk-DCT2GH4K.js";import{A as I,C as _,M as O,P as b,S as k,T as l,W as B,X as U,b as f,c as A,x as d}from"./chunk-W5VAOQOV.js";import{e as c,h as t}from"./chunk-V4TR6DCM.js";t();t();var x=c(f(),1);t();var e=c(f(),1),Z=c(A(),1);t();var v=c(f(),1),X=c(A(),1),C=({status:i,loadingText:s,successText:n})=>(0,X.match)(i,{NotRequested:()=>null,Loading:()=>v.default.createElement(b,{text:s}),Error:()=>null,Success:()=>v.default.createElement(O,{type:"success"},n)});var $=({baseUrl:i,onPreviewCreated:s})=>{let{site:n}=H(),{t:m}=U(),{model:r}=D(),{backendComponents:R}=K(),ee=N(),re=F(),{getAppByVersion:oe}=E(),{createOverride:te}=Y(),ie=j({type:"backoffice"}),y=l(()=>G(r.config.appId,r.projectFolder,re,ie,R.length>0)),ne=l((p,o)=>te({appId:r.config.appId,siteId:n.id,overrides:o})),P=l((p,o,u,a)=>J({model:r,arm:ee,serveUrl:o,backendServerUrl:a,topologyComponentId:u})),{status:se}=k(async()=>{await Q(r.projectFolder);let{serveUrl:p,backendServerUrl:o}=i?{serveUrl:i,backendServerUrl:void 0}:await y.execute(),{data:{components:u}}=await oe({appId:r.config.appId}),a=u.find(pe=>pe.compType===h.TOPOLOGY),S=q(r),{id:me}=S?await ne.execute(S):await Promise.resolve({id:void 0}),T=await P.execute(p,a?.compId,o);return a&&await L(r.projectFolder,{topologyComponentId:a.compId}),s?.(T,o),{armTag:T,siteOverrideId:me}},[]);return e.default.createElement(e.default.Fragment,null,e.default.createElement(C,{status:y.status,loadingText:m("preview_command.uploading_files"),successText:m("preview_command.uploading_files_success")}),e.default.createElement(C,{status:P.status,loadingText:m("preview_command.creating_preview"),successText:m("preview_command.creating_preview_success")}),(0,Z.match)(se,{Error:()=>null,Loading:()=>null,Success:({result:{armTag:p,siteOverrideId:o}})=>e.default.createElement(z,{siteOverrideId:o},e.default.createElement(V,{armTag:p},e.default.createElement(d,{rowGap:1,marginY:1,flexDirection:"column"},e.default.createElement(d,{gap:1},e.default.createElement(_,null),e.default.createElement(B,{i18nKey:"general.dev_site.current",values:{name:n.displayName}})),e.default.createElement(d,{rowGap:1},e.default.createElement(W,null)),e.default.createElement(I,{skin:"info"},m("preview_command.note_about_temporary_backend")))))}))};var ae=({baseUrl:i,siteIdOverride:s,onPreviewCreated:n})=>x.default.createElement(M,{siteId:s},x.default.createElement($,{baseUrl:i,onPreviewCreated:n}));export{ae as a};
4
+ //# sourceMappingURL=chunk-CYIUFMSD.js.map