@wix/cli-app 1.1.50 → 1.1.51

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 (102) hide show
  1. package/build/CreateVersionCommand-6QSWW7PH.js +4 -0
  2. package/build/{CreateVersionCommand-G4JMAUB5.js.map → CreateVersionCommand-6QSWW7PH.js.map} +1 -1
  3. package/build/DevCommand-L3OC7OUZ.js +4 -0
  4. package/build/DevCommand-L3OC7OUZ.js.map +1 -0
  5. package/build/GenerateCommand-K5IS2QEG.js +99 -0
  6. package/build/GenerateCommand-K5IS2QEG.js.map +1 -0
  7. package/build/LogsCommand-5TTBMWFF.js +4 -0
  8. package/build/{LogsCommand-7CMV7VDA.js.map → LogsCommand-5TTBMWFF.js.map} +1 -1
  9. package/build/PreviewCommand-RCGDUERX.js +4 -0
  10. package/build/ServeCommand-BKLVSLW3.js +4 -0
  11. package/build/ServeCommand-BKLVSLW3.js.map +1 -0
  12. package/build/build-OSBBPACR.js +4 -0
  13. package/build/build-OSBBPACR.js.map +1 -0
  14. package/build/{chunk-VMPGY3XD.js → chunk-5OKXHNO2.js} +2 -2
  15. package/build/chunk-5UV5L6RZ.js +4 -0
  16. package/build/{chunk-JTFBYI5Z.js → chunk-7YIQAWRD.js} +2 -2
  17. package/build/chunk-EUNKG7JY.js +11 -0
  18. package/build/chunk-EUNKG7JY.js.map +1 -0
  19. package/build/chunk-GF6CV6CZ.js +100 -0
  20. package/build/chunk-GF6CV6CZ.js.map +1 -0
  21. package/build/chunk-IOW53RH7.js +4 -0
  22. package/build/chunk-IOW53RH7.js.map +1 -0
  23. package/build/chunk-L2GYA6RW.js +115 -0
  24. package/build/{chunk-TT7ANJ37.js.map → chunk-L2GYA6RW.js.map} +1 -1
  25. package/build/{chunk-U3X4QFEY.js → chunk-LYCV7HBR.js} +2 -2
  26. package/build/chunk-M7777RXR.js +5 -0
  27. package/build/chunk-M7777RXR.js.map +1 -0
  28. package/build/{chunk-AT67JTKR.js → chunk-MM7OD345.js} +56 -56
  29. package/build/{chunk-AT67JTKR.js.map → chunk-MM7OD345.js.map} +1 -1
  30. package/build/{chunk-LUN6J4D4.js → chunk-NYC4UPCI.js} +2 -2
  31. package/build/chunk-V3QQTT5C.js +4 -0
  32. package/build/chunk-V3QQTT5C.js.map +1 -0
  33. package/build/{chunk-PZBAQL52.js → chunk-VOW75NWO.js} +2 -2
  34. package/build/{chunk-RSCSYMHP.js → chunk-VXMDSBPO.js} +2 -2
  35. package/build/chunk-WJTPY35F.js +9 -0
  36. package/build/chunk-WJTPY35F.js.map +1 -0
  37. package/build/chunk-YFYESJ2A.js +4 -0
  38. package/build/chunk-YFYESJ2A.js.map +1 -0
  39. package/build/{chunk-SUKF3ONU.js → chunk-YIQOAFCK.js} +2 -2
  40. package/build/{chunk-QPGCBW5R.js → chunk-YXZSFVXG.js} +2 -2
  41. package/build/chunk-ZWY7YSYP.js +4 -0
  42. package/build/chunk-ZWY7YSYP.js.map +1 -0
  43. package/build/cloudflare-runtime/entry.js +1 -1
  44. package/build/cloudflare-runtime/getRegisteredExtensions.js +1 -1
  45. package/build/index.js +2 -2
  46. package/build/index.js.map +1 -1
  47. package/build/platform-sdk/chunk-DGX4CFXG.js +2 -0
  48. package/build/platform-sdk/chunk-DGX4CFXG.js.map +1 -0
  49. package/build/platform-sdk/chunk-KEIVYRQX.js +2 -0
  50. package/build/platform-sdk/chunk-KEIVYRQX.js.map +1 -0
  51. package/build/platform-sdk/dashboard.js +1 -1
  52. package/build/platform-sdk/editor.js +2 -2
  53. package/build/platform-sdk/editor.js.map +1 -1
  54. package/build/platform-sdk/site.js +1 -1
  55. package/build/preview-FY5YKH5Z.js +4 -0
  56. package/build/{preview-CLW3KECJ.js.map → preview-FY5YKH5Z.js.map} +1 -1
  57. package/build/render-command-4BGZ4KYD.js +4 -0
  58. package/build/render-command-4BGZ4KYD.js.map +1 -0
  59. package/package.json +5 -4
  60. package/schemas/wix-config.json +1 -1
  61. package/build/CreateVersionCommand-G4JMAUB5.js +0 -4
  62. package/build/DevCommand-ICJ7HWGE.js +0 -4
  63. package/build/DevCommand-ICJ7HWGE.js.map +0 -1
  64. package/build/GenerateCommand-IGBPVFUN.js +0 -99
  65. package/build/GenerateCommand-IGBPVFUN.js.map +0 -1
  66. package/build/LogsCommand-7CMV7VDA.js +0 -4
  67. package/build/PreviewCommand-4JOWYN2H.js +0 -4
  68. package/build/ServeCommand-I5CZCTC2.js +0 -4
  69. package/build/ServeCommand-I5CZCTC2.js.map +0 -1
  70. package/build/build-F7QA4DJU.js +0 -4
  71. package/build/build-F7QA4DJU.js.map +0 -1
  72. package/build/chunk-AKOLPD6V.js +0 -4
  73. package/build/chunk-AKOLPD6V.js.map +0 -1
  74. package/build/chunk-AODPLKHZ.js +0 -4
  75. package/build/chunk-AODPLKHZ.js.map +0 -1
  76. package/build/chunk-AQLOAQFB.js +0 -4
  77. package/build/chunk-AQLOAQFB.js.map +0 -1
  78. package/build/chunk-PWIPMRWY.js +0 -4
  79. package/build/chunk-TT7ANJ37.js +0 -115
  80. package/build/chunk-WPDKHYDX.js +0 -10
  81. package/build/chunk-WPDKHYDX.js.map +0 -1
  82. package/build/chunk-Z6KGERGI.js +0 -100
  83. package/build/chunk-Z6KGERGI.js.map +0 -1
  84. package/build/chunk-ZN6WU4UI.js +0 -11
  85. package/build/chunk-ZN6WU4UI.js.map +0 -1
  86. package/build/platform-sdk/chunk-3TJ2D6DS.js +0 -2
  87. package/build/platform-sdk/chunk-3TJ2D6DS.js.map +0 -1
  88. package/build/platform-sdk/chunk-RE2R2PA6.js +0 -2
  89. package/build/platform-sdk/chunk-RE2R2PA6.js.map +0 -1
  90. package/build/preview-CLW3KECJ.js +0 -4
  91. package/build/render-command-MDMVZZWK.js +0 -4
  92. package/build/render-command-MDMVZZWK.js.map +0 -1
  93. /package/build/{PreviewCommand-4JOWYN2H.js.map → PreviewCommand-RCGDUERX.js.map} +0 -0
  94. /package/build/{chunk-VMPGY3XD.js.map → chunk-5OKXHNO2.js.map} +0 -0
  95. /package/build/{chunk-PWIPMRWY.js.map → chunk-5UV5L6RZ.js.map} +0 -0
  96. /package/build/{chunk-JTFBYI5Z.js.map → chunk-7YIQAWRD.js.map} +0 -0
  97. /package/build/{chunk-U3X4QFEY.js.map → chunk-LYCV7HBR.js.map} +0 -0
  98. /package/build/{chunk-LUN6J4D4.js.map → chunk-NYC4UPCI.js.map} +0 -0
  99. /package/build/{chunk-PZBAQL52.js.map → chunk-VOW75NWO.js.map} +0 -0
  100. /package/build/{chunk-RSCSYMHP.js.map → chunk-VXMDSBPO.js.map} +0 -0
  101. /package/build/{chunk-SUKF3ONU.js.map → chunk-YIQOAFCK.js.map} +0 -0
  102. /package/build/{chunk-QPGCBW5R.js.map → chunk-YXZSFVXG.js.map} +0 -0
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a as J}from"./chunk-M7777RXR.js";import"./chunk-WJTPY35F.js";import{C as N,Sa as z,Ta as G,Ua as H,Za as q,_a as U,ub as V}from"./chunk-L2GYA6RW.js";import{A as f,O as D,R as F,V as A,W as R,b as k,c as _,e as h,f as x,m as r,x as u}from"./chunk-GF6CV6CZ.js";import{e as L,h as g}from"./chunk-V4TR6DCM.js";g();g();var e=L(k(),1),E=L(_(),1);g();var l=L(k(),1);import{createServer as ie}from"node:http";var Y=L(_(),1);g();var y=L(_(),1),Z=r.any(),ee=r.enum(["info","error","warn","debug","log"]),oe=r.object({message:r.array(Z),level:ee,timestamp:r.number()}),re=r.object({stack:r.string(),name:r.string(),message:r.string(),timestamp:r.number()}),te=r.object({_type:r.literal("log"),exceptions:r.array(re),logs:r.array(oe)}).passthrough(),ne=r.object({_type:r.literal("session-timeout")}).passthrough(),se=r.discriminatedUnion("_type",[te,ne]),K=(0,y.variant)({Log:(0,y.fields)(),Exception:(0,y.fields)()}),B="/logs",$=(n,s)=>{let i,d;if(n.method==="POST"&&n.url===B){let m="";n.on("data",t=>{m+=t.toString()}),n.on("end",()=>{let t;try{t=se.parse(JSON.parse(m))}catch(o){return d(x.FailedToParseLog(),o,{body:m}),s.statusCode=400,s.end()}let p=[];t._type==="log"&&(p.push(...t.exceptions.map(o=>K.Exception(o))),p.push(...t.logs.map(o=>K.Log(o)))),(0,y.match)(t._type,{log:()=>{i(p)},"session-timeout":()=>{s.statusCode=200,s.end(),d(x.LogsConnectionTimeout(),{},{body:m})}}),s.statusCode=200,s.end()})}else s.statusCode=404,s.end("Not Found");let c={onLog:m=>(i=m,c),onError:m=>(d=m,c)};return c};var me=/([0-9a-f-]{36})/,Q=({onLog:n,version:s,appId:i})=>{let{reportError:d}=N(),{getAppByVersion:c}=H(),m=J(),t=G({type:"backoffice"}),p=(0,l.useRef)(),o=(0,l.useMemo)(()=>ie((a,w)=>{$(a,w).onLog(n).onError((I,M,v)=>{throw o.close(),new h({code:I,cause:M,info:v})})}),[n]),O=(0,l.useMemo)(()=>new Promise(a=>{p.current=a}),[]);(0,l.useEffect)(()=>(o.listen(0,async()=>{let a=o.address().port;p.current?.(a)}),()=>{o.listening&&o.close()}),[o]);let{status:S}=F(async()=>{let a=await O,{url:w}=await m(a),{data:I}=await c({appId:i,version:s}),M=I.components.find(b=>b.compType===z.TOPOLOGY),v=me.exec(M?.compData.topology.topology.backendApiUrl??"");if(!v?.[1])throw new h({code:x.FailedToGetLogsTopology()});let j=v[1],X={appId:i,deploymentId:j,destinationUrl:new URL(B,w).href};try{await t.request(q(X))}catch(b){throw o.close(),new h({code:x.FailedToConnectToLogsService(),cause:b})}return j},[]);return(0,l.useEffect)(()=>()=>{(0,Y.isType)(S,"Success")&&t.request(U({appId:i,deploymentId:S.result})).catch(d)},[]),S};g();var W=L(k(),1);var P=({message:n,level:s})=>{let i="unknown";return typeof n=="object"?i=JSON.stringify(n):i=String(n),W.default.createElement(f,{skin:s==="error"?"error":"standard"},i)};var pe=({version:n})=>{let{model:s}=V(),{t:i}=R(),[d,c]=(0,e.useState)([]),m=Q({appId:s.config.appId,version:n,onLog:(0,e.useCallback)(t=>{c(p=>[...p,...t])},[c])});return(0,E.match)(m,{Success:()=>e.default.createElement(u,{marginTop:1,marginBottom:1,flexDirection:"column"},e.default.createElement(u,{marginBottom:1,flexDirection:"column"},e.default.createElement(f,null,e.default.createElement(A,{i18nKey:"logs_command.listening_to_logs"})),e.default.createElement(f,null,e.default.createElement(A,{i18nKey:"logs_command.prod_env_logs",values:{version:n}}))),d.map((t,p)=>e.default.createElement(u,{key:p,flexDirection:"column"},e.default.createElement(u,{columnGap:1},e.default.createElement(u,{flexShrink:0},e.default.createElement(f,{skin:"secondary"},new Date(t.timestamp).toLocaleTimeString())),e.default.createElement(u,{columnGap:1},(0,E.match)(t,{Log:({message:o,level:O})=>o.map((S,a)=>e.default.createElement(P,{key:`${p}-${a}`,message:S,level:O})),Exception:({message:o})=>e.default.createElement(P,{key:p,message:o,level:"error"})}))),(0,E.match)(t,{Log:()=>null,Exception:({stack:o})=>e.default.createElement(f,{skin:"error"},o)})))),Loading:()=>e.default.createElement(D,{text:i("logs_command.connecting")}),Error:()=>null})};export{pe as LogsCommand};
4
+ //# sourceMappingURL=LogsCommand-5TTBMWFF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/LogsCommand/index.ts","../src/components/LogsCommand/LogsCommand.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, { 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';\nimport { useProjectModel } from '../../model.js';\n\nexport const LogsCommand: FC<{\n version: string;\n}> = ({ version }) => {\n const { model } = useProjectModel();\n const { t } = useTranslation();\n const [logs, setLogs] = useState<AggregatedLog[]>([]);\n const serverResult = useLogsServer({\n appId: model.config.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","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","LogsCommand","version","model","useProjectModel","t","useTranslation","logs","setLogs","serverResult","useLogsServer","serverLogs","prevLogs","React","Box_default","Text","Trans","log","logIdx","message","level","msgItem","idx","ServerLogMessage","stack","Spinner"]}
1
+ {"version":3,"sources":["../src/components/LogsCommand/index.ts","../src/components/LogsCommand/LogsCommand.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, { 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';\nimport { useProjectModel } from '../../model.js';\n\nexport const LogsCommand: FC<{\n version: string;\n}> = ({ version }) => {\n const { model } = useProjectModel();\n const { t } = useTranslation();\n const [logs, setLogs] = useState<AggregatedLog[]>([]);\n const serverResult = useLogsServer({\n appId: model.config.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","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","LogsCommand","version","model","useProjectModel","t","useTranslation","logs","setLogs","serverResult","useLogsServer","serverLogs","prevLogs","React","Box_default","Text","Trans","log","logIdx","message","level","msgItem","idx","ServerLogMessage","stack","Spinner"]}
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a}from"./chunk-ZWY7YSYP.js";import"./chunk-VXMDSBPO.js";import"./chunk-YIQOAFCK.js";import"./chunk-IOW53RH7.js";import"./chunk-NYC4UPCI.js";import"./chunk-YFYESJ2A.js";import"./chunk-LYCV7HBR.js";import"./chunk-M7777RXR.js";import"./chunk-WJTPY35F.js";import"./chunk-5OKXHNO2.js";import"./chunk-MM7OD345.js";import"./chunk-VOW75NWO.js";import"./chunk-L2GYA6RW.js";import"./chunk-GF6CV6CZ.js";import"./chunk-V4TR6DCM.js";export{a as PreviewCommand};
4
+ //# sourceMappingURL=PreviewCommand-RCGDUERX.js.map
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a as W,b as q}from"./chunk-VXMDSBPO.js";import{c as L}from"./chunk-YIQOAFCK.js";import{a as b}from"./chunk-V3QQTT5C.js";import{b as U}from"./chunk-NYC4UPCI.js";import{g as k,h as K,j as N,k as V,l as f,m as D}from"./chunk-YFYESJ2A.js";import"./chunk-LYCV7HBR.js";import"./chunk-M7777RXR.js";import"./chunk-WJTPY35F.js";import"./chunk-5OKXHNO2.js";import{a as M,b as h,e as j}from"./chunk-MM7OD345.js";import"./chunk-VOW75NWO.js";import{ub as u}from"./chunk-L2GYA6RW.js";import{A as I,B as y,C as B,E as T,N as _,O,R as A,V as c,W as F,b as a,c as ee,x as m}from"./chunk-GF6CV6CZ.js";import{e as s,h as o}from"./chunk-V4TR6DCM.js";o();o();var g=s(a(),1);o();var n=s(a(),1),G=s(ee(),1);o();var i=s(a(),1);import{preview as re}from"vite";function z(){let t=(0,i.useRef)(),{model:r}=u();(0,i.useEffect)(()=>()=>{t.current?.httpServer.close()},[]);let v=(0,i.useMemo)(()=>b({timestamp:!0}),[]);return(0,i.useCallback)(async()=>{let p=await re(await h(r,{type:"build",customLogger:v}));return t.current=p,M(p)},[r,v])}var H=(0,n.createContext)(null),w=({children:t})=>{let{model:r}=u(),{t:v}=F(),{site:p}=f(),Q=k(),{createOverride:X}=N(),Y=z(),{status:Z}=A(async()=>{await W(r.projectFolder);let d=await Y(),x=await U(r.projectFolder),P=j(x,d),$=await Q.createAppRelease(P,r.config.projectId),E=V(r),{id:R}=E?await X({appId:r.config.appId,siteId:p.id,overrides:E}):await Promise.resolve({id:void 0});return{armTag:$,serverUrl:d,siteOverrideId:R}},[]);return(0,G.match)(Z,{Error:()=>null,Loading:()=>n.default.createElement(O,{text:v("serve_command.starting_serve_environment")}),Success:({result:{armTag:d,serverUrl:x,siteOverrideId:P}})=>n.default.createElement(H.Provider,{value:{serverUrl:x}},n.default.createElement(D,{siteOverrideId:P},n.default.createElement(K,{armTag:d},t)))})};function C(){let t=(0,n.useContext)(H);if(t===null)throw new Error("useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>");return t}o();var e=s(a(),1);function J(){let{site:t}=f(),{serverUrl:r}=C();return e.default.createElement(m,{flexDirection:"column"},e.default.createElement(m,{gap:1},e.default.createElement(I,{skin:"success"},e.default.createElement(T,null)),e.default.createElement(c,{i18nKey:"serve_command.starting_serve_environment_success",components:[e.default.createElement(_,{url:r})]})),e.default.createElement(m,{gap:1},e.default.createElement(y,null),e.default.createElement(c,{i18nKey:"serve_command.production_build"})),e.default.createElement(m,{gap:1,paddingTop:1,paddingBottom:1},e.default.createElement(B,null),e.default.createElement(c,{i18nKey:"general.dev_site.current",values:{name:t.displayName}})),e.default.createElement(m,{paddingBottom:1,flexDirection:"column"},e.default.createElement(q,null)))}var oe=()=>g.default.createElement(L,null,g.default.createElement(w,null,g.default.createElement(J,null)));export{oe as ServeCommand,w as ServeEnvironmentProvider,C as useServeEnvironment};
4
+ //# sourceMappingURL=ServeCommand-BKLVSLW3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ServeCommand/index.ts","../src/components/ServeCommand/ServeCommand.tsx","../src/components/ServeCommand/ServeEnvironment.tsx","../src/components/ServeCommand/hooks/usePreviewServer.ts","../src/components/ServeCommand/ServeCommandScreen.tsx"],"sourcesContent":["export { ServeCommand } from './ServeCommand.js';\nexport {\n ServeEnvironmentProvider,\n useServeEnvironment,\n} from './ServeEnvironment.js';\n","import React from 'react';\nimport type { FC } from 'react';\nimport { SiteIdProvider } from '../../site-id/SiteIdProvider.js';\nimport { ServeEnvironmentProvider } from './ServeEnvironment.js';\nimport { ServeCommandScreen } from './ServeCommandScreen.js';\n\nexport const ServeCommand: FC = () => {\n return (\n <SiteIdProvider>\n <ServeEnvironmentProvider>\n <ServeCommandScreen />\n </ServeEnvironmentProvider>\n </SiteIdProvider>\n );\n};\n","import React, { createContext, useContext } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { match } from 'variant';\nimport { updateAppManifestWithBaseUrl } from '@wix/cli-app-manifest';\nimport { useARMClient } from '@wix/arm-client';\nimport { Spinner, useAsync } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { useSiteOverrideClient } from '@wix/site-override-client';\nimport { ArmTagProvider } from '../../context/armTag.js';\nimport { readAppManifestFile } from '../../app-manifest/file.js';\nimport { assertBuildOutputExists } from '../../files/assert-build-output-exists.js';\nimport { usePreviewServer } from './hooks/usePreviewServer.js';\nimport { useProjectModel } from '../../model.js';\nimport { useSiteId } from '../../site-id/index.js';\nimport { createSiteOverrides } from '../../site-override/createSiteOverrides.js';\nimport { SiteOverrideProvider } from '../../context/siteOverride.js';\n\ninterface ServeEnvironment {\n serverUrl: string;\n}\n\nconst ServeEnvironmentContext = createContext<ServeEnvironment | null>(null);\n\nexport const ServeEnvironmentProvider: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { model } = useProjectModel();\n const { t } = useTranslation();\n const { site } = useSiteId();\n const arm = useARMClient();\n const { createOverride } = useSiteOverrideClient();\n const createPreviewServer = usePreviewServer();\n\n const { status } = useAsync(async () => {\n await assertBuildOutputExists(model.projectFolder);\n const serverUrl = await createPreviewServer();\n\n const manifest = await readAppManifestFile(model.projectFolder);\n const updatedManifest = updateAppManifestWithBaseUrl(manifest, serverUrl);\n\n const armTag = await arm.createAppRelease(\n updatedManifest,\n model.config.projectId\n );\n\n const overrides = createSiteOverrides(model);\n const { id: siteOverrideId } = overrides\n ? await createOverride({\n appId: model.config.appId,\n siteId: site.id,\n overrides,\n })\n : await Promise.resolve({ id: undefined });\n\n return { armTag, serverUrl, siteOverrideId };\n }, []);\n\n return match(status, {\n Error: () => null,\n Loading: () => (\n <Spinner text={t('serve_command.starting_serve_environment')}></Spinner>\n ),\n Success: ({ result: { armTag, serverUrl, siteOverrideId } }) => (\n <ServeEnvironmentContext.Provider value={{ serverUrl }}>\n <SiteOverrideProvider siteOverrideId={siteOverrideId}>\n <ArmTagProvider armTag={armTag}>{children}</ArmTagProvider>\n </SiteOverrideProvider>\n </ServeEnvironmentContext.Provider>\n ),\n });\n};\n\nexport function useServeEnvironment(): ServeEnvironment {\n const context = useContext(ServeEnvironmentContext);\n if (context === null) {\n throw new Error(\n 'useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>'\n );\n }\n return context;\n}\n","import { preview } from 'vite';\nimport type { PreviewServer } from 'vite';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useProjectModel } from '../../../model.js';\nimport { getClientViteConfig } from '../../../vite/index.js';\nimport { getViteServerUrl } from '../../../vite/vite-server-url.js';\nimport { ConfigType } from '../../../vite/vite-config-options.js';\nimport { createLogger } from '../../../vite/logger.js';\n\nexport function usePreviewServer() {\n const previewServerRef = useRef<PreviewServer>();\n const { model } = useProjectModel();\n\n useEffect(() => {\n return () => {\n previewServerRef.current?.httpServer.close();\n };\n }, []);\n\n const logger = useMemo(() => createLogger({ timestamp: true }), []);\n\n return useCallback(async () => {\n const previewServer = await preview(\n await getClientViteConfig(model, {\n type: ConfigType.build,\n customLogger: logger,\n })\n );\n\n previewServerRef.current = previewServer;\n\n return getViteServerUrl(previewServer);\n }, [model, logger]);\n}\n","import {\n Box,\n InfoIcon,\n Link,\n PointerIcon,\n SuccessIcon,\n Text,\n} from '@wix/cli-ui-kit';\nimport React from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { useSiteId } from '../../site-id/useSiteId.js';\nimport { useServeEnvironment } from './ServeEnvironment.js';\nimport { PlatformViewer } from '../Platform/PlatformViewer.js';\n\nexport function ServeCommandScreen() {\n const { site } = useSiteId();\n const { serverUrl } = useServeEnvironment();\n\n return (\n <Box flexDirection=\"column\">\n <Box gap={1}>\n <Text skin=\"success\">\n <SuccessIcon />\n </Text>\n <Trans\n i18nKey=\"serve_command.starting_serve_environment_success\"\n components={[<Link url={serverUrl} />]}\n />\n </Box>\n <Box gap={1}>\n <InfoIcon />\n <Trans i18nKey=\"serve_command.production_build\" />\n </Box>\n <Box gap={1} paddingTop={1} paddingBottom={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box paddingBottom={1} flexDirection=\"column\">\n <PlatformViewer />\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","import_react","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","preview","usePreviewServer","previewServerRef","model","useProjectModel","logger","createLogger","previewServer","preview","getViteConfig","getViteServerUrl","ServeEnvironmentContext","ServeEnvironmentProvider","children","model","useProjectModel","t","useTranslation","site","useSiteId","arm","useARMClient","createOverride","useSiteOverrideClient","createPreviewServer","usePreviewServer","status","useAsync","assertBuildOutputExists","serverUrl","manifest","readAppManifestFile","updatedManifest","updateAppManifestWithBaseUrl","armTag","overrides","createSiteOverrides","siteOverrideId","React","Spinner","SiteOverrideProvider","ArmTagProvider","useServeEnvironment","context","init_esm_shims","import_react","ServeCommandScreen","site","useSiteId","serverUrl","useServeEnvironment","React","Box_default","Text","SuccessIcon","Trans","Link","InfoIcon","PointerIcon","PlatformViewer","ServeCommand","React","SiteIdProvider","ServeEnvironmentProvider","ServeCommandScreen"]}
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a as w}from"./chunk-V3QQTT5C.js";import{a as s}from"./chunk-NYC4UPCI.js";import{b as d,c as l,h as u,j as f,k as g}from"./chunk-MM7OD345.js";import"./chunk-VOW75NWO.js";import{Aa as r,ab as a,sb as m}from"./chunk-L2GYA6RW.js";import{c as h,e as t,f as i}from"./chunk-GF6CV6CZ.js";import{e as A,h as c}from"./chunk-V4TR6DCM.js";c();import{cwd as y}from"node:process";import{build as C}from"vite";var n=A(h(),1);async function R(){let o=await m(y());if(o.components.length===0)throw new t({code:i.NoExtensionsFound()});u(o.components);let _=o.components.filter(e=>(0,n.isType)(e,r.Api)||(0,n.isType)(e,r.Event)||(0,n.isType)(e,r.ServicePlugin)),p=w(),B=_.length>0?await C(await l(o,{type:"build",customLogger:p},{appSecret:"__APP_SECRET__",webhookPublicKey:"__WEBHOOK_PUBLIC_KEY__"})).catch(e=>{throw new t({code:i.FailedToBuildApp({cause:e}),cause:e})}):void 0,E=await C(await d(o,{type:"build",customLogger:p},{baseBackendUrl:a})).catch(e=>{throw new t({code:i.FailedToBuildApp({cause:e}),cause:e})}),b=await f({appId:o.config.appId,components:o.components,sentryDSN:o.config.sentryDSN,componentSourceBuilder:g(o,{clientBuildOutput:E},{backendBuildOutput:B})});await s({projectFolder:o.projectFolder,manifest:b})}export{R as build};
4
+ //# sourceMappingURL=build-OSBBPACR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/build.ts"],"sourcesContent":["import { cwd } from 'node:process';\nimport { build as viteBuild } from 'vite';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { isType } from 'variant';\nimport { loadProjectModel } from './model.js';\nimport { getBackendViteConfig, getClientViteConfig } from './vite/index.js';\nimport { writeAppManifestFile } from './app-manifest/file.js';\nimport { createAppManifest } from './app-manifest/create.js';\nimport { getComponentSourceBuilder } from './app-manifest/component-source.js';\nimport { ConfigType } from './vite/vite-config-options.js';\nimport { validateComponents } from './app-manifest/validate.js';\nimport { API_BASEURL_PLACEHOLDER } from './hosting/upload-application.js';\nimport { DevCenterComponent } from './dev-center/components/dev-center-component.js';\nimport { createLogger } from './vite/logger.js';\n\nexport async function build() {\n const projectModel = await loadProjectModel(cwd());\n\n // Validate before building the project, to fail fast in case of a validation issue\n if (projectModel.components.length === 0) {\n throw new CliError({\n code: CliErrorCode.NoExtensionsFound(),\n });\n }\n\n validateComponents(projectModel.components);\n\n const backendComponents = projectModel.components.filter(\n (component) =>\n isType(component, DevCenterComponent.Api) ||\n isType(component, DevCenterComponent.Event) ||\n isType(component, DevCenterComponent.ServicePlugin)\n );\n\n const logger = createLogger();\n\n const backendBuildOutput =\n backendComponents.length > 0\n ? await viteBuild(\n await getBackendViteConfig(\n projectModel,\n { type: ConfigType.build, customLogger: logger },\n {\n appSecret: '__APP_SECRET__',\n webhookPublicKey: '__WEBHOOK_PUBLIC_KEY__',\n }\n )\n ).catch((e: unknown) => {\n throw new CliError({\n code: CliErrorCode.FailedToBuildApp({ cause: e }),\n cause: e,\n });\n })\n : undefined;\n\n const clientBuildOutput = await viteBuild(\n await getClientViteConfig(\n projectModel,\n {\n type: ConfigType.build,\n customLogger: logger,\n },\n {\n baseBackendUrl: API_BASEURL_PLACEHOLDER,\n }\n )\n ).catch((e: unknown) => {\n throw new CliError({\n code: CliErrorCode.FailedToBuildApp({ cause: e }),\n cause: e,\n });\n });\n\n const manifest = await createAppManifest({\n appId: projectModel.config.appId,\n components: projectModel.components,\n sentryDSN: projectModel.config.sentryDSN,\n componentSourceBuilder: getComponentSourceBuilder(\n projectModel,\n { clientBuildOutput },\n { backendBuildOutput }\n ),\n });\n\n await writeAppManifestFile({\n projectFolder: projectModel.projectFolder,\n manifest,\n });\n}\n"],"mappings":";;8UAAAA,IAAA,OAAS,OAAAC,MAAW,eACpB,OAAS,SAASC,MAAiB,OAEnC,IAAAC,EAAuB,SAYvB,eAAsBC,GAAQ,CAC5B,IAAMC,EAAe,MAAMC,EAAiBC,EAAI,CAAC,EAGjD,GAAIF,EAAa,WAAW,SAAW,EACrC,MAAM,IAAIG,EAAS,CACjB,KAAMC,EAAa,kBAAkB,CACvC,CAAC,EAGHC,EAAmBL,EAAa,UAAU,EAE1C,IAAMM,EAAoBN,EAAa,WAAW,OAC/CO,MACC,UAAOA,EAAWC,EAAmB,GAAG,MACxC,UAAOD,EAAWC,EAAmB,KAAK,MAC1C,UAAOD,EAAWC,EAAmB,aAAa,CACtD,EAEMC,EAASC,EAAa,EAEtBC,EACJL,EAAkB,OAAS,EACvB,MAAMM,EACJ,MAAMC,EACJb,EACA,CAAE,aAAwB,aAAcS,CAAO,EAC/C,CACE,UAAW,iBACX,iBAAkB,wBACpB,CACF,CACF,EAAE,MAAO,GAAe,CACtB,MAAM,IAAIN,EAAS,CACjB,KAAMC,EAAa,iBAAiB,CAAE,MAAO,CAAE,CAAC,EAChD,MAAO,CACT,CAAC,CACH,CAAC,EACD,OAEAU,EAAoB,MAAMF,EAC9B,MAAMC,EACJb,EACA,CACE,aACA,aAAcS,CAChB,EACA,CACE,eAAgBM,CAClB,CACF,CACF,EAAE,MAAO,GAAe,CACtB,MAAM,IAAIZ,EAAS,CACjB,KAAMC,EAAa,iBAAiB,CAAE,MAAO,CAAE,CAAC,EAChD,MAAO,CACT,CAAC,CACH,CAAC,EAEKY,EAAW,MAAMC,EAAkB,CACvC,MAAOjB,EAAa,OAAO,MAC3B,WAAYA,EAAa,WACzB,UAAWA,EAAa,OAAO,UAC/B,uBAAwBkB,EACtBlB,EACA,CAAE,kBAAAc,CAAkB,EACpB,CAAE,mBAAAH,CAAmB,CACvB,CACF,CAAC,EAED,MAAMQ,EAAqB,CACzB,cAAenB,EAAa,cAC5B,SAAAgB,CACF,CAAC,CACH","names":["init_esm_shims","cwd","viteBuild","import_variant","build","projectModel","loadProjectModel","cwd","CliError","CliErrorCode","validateComponents","backendComponents","component","DevCenterComponent","logger","createLogger","backendBuildOutput","viteBuild","getViteConfig","clientBuildOutput","API_BASEURL_PLACEHOLDER","manifest","createAppManifest","getComponentSourceBuilder","writeAppManifestFile"]}
@@ -1,6 +1,6 @@
1
1
  import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
- import{e as x}from"./chunk-TT7ANJ37.js";import{b,d as a}from"./chunk-Z6KGERGI.js";import{e as s,h as n}from"./chunk-V4TR6DCM.js";n();var o=s(b(),1),c=s(a(),1);import{dirname as L}from"node:path";import{appendFileSync as D,mkdirSync as w}from"node:fs";n();var p=s(x(),1),l=s(a(),1);function u(e){if(p.HttpClient.isHttpError(e))return e;let t=e instanceof Error?l.default.cause(e):null;return t?u(t):null}n();function m(e){return{request:{baseURL:e.config.baseURL,url:e.config.url,method:e.config.method,headers:e.config.headers,data:e.config.data},response:{code:e.code,message:e.message,status:e.response?.status,headers:e.response?.headers,data:e.response?.data}}}function C(e,t){try{let r=`----- CLI crash report at ${new Date().toISOString()}
3
+ import{e as x}from"./chunk-L2GYA6RW.js";import{b,d as a}from"./chunk-GF6CV6CZ.js";import{e as s,h as n}from"./chunk-V4TR6DCM.js";n();var o=s(b(),1),c=s(a(),1);import{dirname as L}from"node:path";import{appendFileSync as D,mkdirSync as w}from"node:fs";n();var p=s(x(),1),l=s(a(),1);function u(e){if(p.HttpClient.isHttpError(e))return e;let t=e instanceof Error?l.default.cause(e):null;return t?u(t):null}n();function m(e){return{request:{baseURL:e.config.baseURL,url:e.config.url,method:e.config.method,headers:e.config.headers,data:e.config.data},response:{code:e.code,message:e.message,status:e.response?.status,headers:e.response?.headers,data:e.response?.data}}}function C(e,t){try{let r=`----- CLI crash report at ${new Date().toISOString()}
4
4
  `;if(t instanceof Error){r+=`Error Trace
5
5
  `,r+=`${c.default.fullStack(t)}
6
6
  `,r+=`Error Info
@@ -8,4 +8,4 @@ import{e as x}from"./chunk-TT7ANJ37.js";import{b,d as a}from"./chunk-Z6KGERGI.js
8
8
  `;let i=u(t);i&&(r+=`Request Info
9
9
  `,r+=`${JSON.stringify(m(i),null,2)}
10
10
  `)}w(L(e),{recursive:!0}),D(e,r)}catch{}}var d=(0,o.createContext)(null),k=({filePath:e,children:t})=>{let r=(0,o.useCallback)(i=>C(e,i),[e]);return o.default.createElement(d.Provider,{value:r},t)},R=()=>{let e=(0,o.useContext)(d);if(e===null)throw new Error("useDebugLog() cannot be used without an <DebugLogProvider>");return e};export{k as a,R as b};
11
- //# sourceMappingURL=chunk-VMPGY3XD.js.map
11
+ //# sourceMappingURL=chunk-5OKXHNO2.js.map
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a as n}from"./chunk-EUNKG7JY.js";import{X as t}from"./chunk-GF6CV6CZ.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-5UV5L6RZ.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{v as u,w as m}from"./chunk-TT7ANJ37.js";import{g as d,h as f,w as k}from"./chunk-Z6KGERGI.js";import{e as _,h as t}from"./chunk-V4TR6DCM.js";t();import{randomUUID as N}from"node:crypto";function U(r,o){r.updateDefaults(j(o))}function j(r){return r?{_client_id:r,_uuid:r,logged_user_id:r,logged_account_id:r,target_account_id:r}:{_client_id:N()}}t();import{uptime as J}from"node:process";t();var w=_(k(),1);import L from"node:os";import{platform as V,version as b}from"node:process";function y({cliVersion:r,flow:o}){return{...o?{flow:o}:{},cliVersion:r,isCI:w.default,nodeVersion:b,osName:B(),osVersion:L.release()}}function B(){switch(V){case"darwin":return"mac";case"win32":return"windows";default:return"linux"}}var x=()=>Math.round(J()*1e3);function h({biLogger:r,command:o,flow:C,cliVersion:S,projectId:p,extensions:i,extraFields:l}){let E=o.opts(),v=o.args,F=new Set(["apiKey"]),c=Object.fromEntries(Object.entries(E).map(([e,s])=>{let O=F.has(e)?"<censored>":s;return[e,O]})),n={command:o.name(),arguments:v.join(","),flags:Object.keys(c).length?JSON.stringify(c):""};return r.report(u({...y({cliVersion:S,flow:C}),...n,...p?{projectId:p}:{},...l?{extraFields:JSON.stringify(l)}:{},isValid:!0})),{succeed(){r.report(m({...n,...i?{extensions:JSON.stringify(i)}:{},duration:x(),isSuccess:!0,isValid:!0}))},failed(e){let s=d(e)?{errorType:f(e)?"SystemError":"UserError",errorName:e.name,errorMessage:e.message}:e instanceof Error?{errorType:"UnknownError",errorName:e.name,errorMessage:e.message}:{errorType:"UnknownError",errorMessage:JSON.stringify(e)};r.report(m({...n,...s,...i?{extensions:JSON.stringify(i)}:{},duration:x(),isSuccess:!1,isValid:!0}))}}}t();export{U as a,h as b};
4
- //# sourceMappingURL=chunk-JTFBYI5Z.js.map
3
+ import{v as u,w as m}from"./chunk-L2GYA6RW.js";import{g as d,h as f,w as k}from"./chunk-GF6CV6CZ.js";import{e as _,h as t}from"./chunk-V4TR6DCM.js";t();import{randomUUID as N}from"node:crypto";function U(r,o){r.updateDefaults(j(o))}function j(r){return r?{_client_id:r,_uuid:r,logged_user_id:r,logged_account_id:r,target_account_id:r}:{_client_id:N()}}t();import{uptime as J}from"node:process";t();var w=_(k(),1);import L from"node:os";import{platform as V,version as b}from"node:process";function y({cliVersion:r,flow:o}){return{...o?{flow:o}:{},cliVersion:r,isCI:w.default,nodeVersion:b,osName:B(),osVersion:L.release()}}function B(){switch(V){case"darwin":return"mac";case"win32":return"windows";default:return"linux"}}var x=()=>Math.round(J()*1e3);function h({biLogger:r,command:o,flow:C,cliVersion:S,projectId:p,extensions:i,extraFields:l}){let E=o.opts(),v=o.args,F=new Set(["apiKey"]),c=Object.fromEntries(Object.entries(E).map(([e,s])=>{let O=F.has(e)?"<censored>":s;return[e,O]})),n={command:o.name(),arguments:v.join(","),flags:Object.keys(c).length?JSON.stringify(c):""};return r.report(u({...y({cliVersion:S,flow:C}),...n,...p?{projectId:p}:{},...l?{extraFields:JSON.stringify(l)}:{},isValid:!0})),{succeed(){r.report(m({...n,...i?{extensions:JSON.stringify(i)}:{},duration:x(),isSuccess:!0,isValid:!0}))},failed(e){let s=d(e)?{errorType:f(e)?"SystemError":"UserError",errorName:e.name,errorMessage:e.message}:e instanceof Error?{errorType:"UnknownError",errorName:e.name,errorMessage:e.message}:{errorType:"UnknownError",errorMessage:JSON.stringify(e)};r.report(m({...n,...s,...i?{extensions:JSON.stringify(i)}:{},duration:x(),isSuccess:!1,isValid:!0}))}}}t();export{U as a,h as b};
4
+ //# sourceMappingURL=chunk-7YIQAWRD.js.map
@@ -0,0 +1,11 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ var o={"create_version_command_def.option.version_type":"The type of version you would like to create","create_version_command_def.option.approve_preview":"Approve preview automatically","create_version_command_def.option.base_url":"The base url for when static files have been uploaded to an external cdn","create_version_command_def.option.site":"The site id to use for Application Preview urls, defaults to the current selected development site","dev_command_def.option.https":"Start local dev server on https","app_preview_command_def.option.site":"The site id to use for Application Preview urls, defaults to the current selected development site","app_preview_command_def.option.base_url":"The base url for when static files have been uploaded to an external cdn","app_preview_command_def.option.no_input":"Disable command interactivity","general.loading":"Loading...","general.no_site_id_configured":"You don't have a Development Site currently configured","general.site_id_not_found":`Your currently configured Development Site was not found ({id})
4
+ This may happen because the site was deleted or your access has been revoked.
5
+
6
+ Please select another Development Site to continue`,"general.dashboard_page_text":"<0>Click here</0> to open your application in the Wix Dashboard","general.dashboard_page_click_here":"Click here","general.close_screen":"Press <0/> to close","logs.backend.clear":"Press <0/> to clear","general.open_page_error":"Failed to open the browser for <0>{title}</0>, use the following URL to open it in your browser:","general.dashboard_pages_viewer.title":"Press a number key to open a dashboard page:","general.dashboard_plugins_viewer.title":"Press a number key to open a dashboard plugin:","general.dashboard_menu_plugins_viewer.title":"Press a number key to open a dashboard menu plugin:","general.backend_api_viewer.title":"Press a number key to trigger an api:","general.backend_plugin_viewer.title":"Press a number key to trigger an plugin:","general.backend_events_viewer.title":"Press a number key to trigger an event:","general.numeric_viewer.show_more":"View more...","general.platform.site":"Site","general.platform.unpublished_site":"Site (publish the site to enable site preview)","general.platform.editor":"Editor","general.platform.dashboard":"Dashboard","general.platform.backend":"Backend","general.platform.none":`Your project doesn't seem to have any extensions.
7
+
8
+ Extensions are the building blocks of your app.
9
+ Make sure it is configured properly, or read our <0>documentation</0> to start developing your first extension.`,"general.dev_site.current":"Current Development Site: {name}","general.view_changes":"View your local changes: <0>(Press a key to open)</0>","general.open_preview.title_single":"Open the preview on the","general.open_preview.title_multiple":"Open the preview on:","preview_command.creating_preview":"Creating a preview...","preview_command.creating_preview_success":"Preview created successfully!","preview_command.uploading_files":"Uploading your application files...","preview_command.uploading_files_success":"Uploaded successfully!","dev_command.site_provider.loading":"Resolving development site...","dev_command.custom_elements_migration.loading":"Checking site widgets installation...","preview_command.note_about_temporary_backend":"This preview URL will be available for three days. Afterward, you can create a new preview if you need to.","dev_command.dev_environment.loading":"Starting dev environment...","dev_command.dev_environment.started":"Development environment ready","dev_command.dev_site.change":"Current Dev Site: <0>{siteName}</0> <1>(Press C to switch)</1>","dev_command.site_selector.error":"Failed to change Development Site!","dev_command.dashboard_pages_screen.select_label":"Select a dashboard page to open","dev_command.dashboard_menu_plugin_screen.select_label":"Select a dashboard menu plugin to open","dev_command.dashboard_page_plugin_screen.select_label":"Select a dashboard plugin to open","dev_command.dashboard_modal_screen.select_label":"Select a dashboard modal to open","dev_command.backend_apis_screen.select_label":"Select api to trigger","dev_command.backend_events_screen.select_label":"Select event to trigger","dev_command.backend_plugins_screen.select_label":"Select plugin to trigger","dev_command.required_apps.loading":"Checking required apps...","dev_command.required_apps.warning":"Make sure you have {requiredAppNames} installed on your site","dev_command.config_change":"Loading App Manifest changes...","dev_command.config_update":"App Manifest updated. Refresh existing browser tabs to view the latest changes.","dev_command.config_didnt_update":"No App Manifest update occurred","dev_command.tunneling.confirm":"To proceed, we'll set up a secure tunnel from your machine for development purposes","dev_command.tunneling.abort_dev":"Operation aborted. Tunneling is necessary to run your application.","dev_command.new_custom_element.warning":"New site widget detected. Press <0/> to open the Site Editor and complete the installation.","dev_command.new_custom_element.confirm_reinstall":"Press <0/> when you reinstalled app on your dev site","dev_command.new_custom_element.reinstall_error":"We had troubles with adding your new site widget. You can try to do it by yourself. Press <0/> to continue","serve_command.starting_serve_environment":"Starting serve environment...","serve_command.starting_serve_environment_success":"Serve environment started! <0/>","serve_command.production_build":"Application is using a production build","create_version_command.creating_version":"Creating a version...","create_version_command.creating_version_success":"Successfully created v{version}","create_version_command.current_version":"Your current version is: v{version}","create_version_command.confirm_version_events_warning":"Any configured events will be deployed to production and take effect once a new version of your app is created.","create_version_command.confirm_version_creation":"Continue with creating the new version?","create_version_command.confirm_version_creation_aborted":"Version creation aborted","create_version_command.version_type_question":"What type of version would you like to create?","create_version_command.version_type_question_minor":"Minor (v{version})","create_version_command.version_type_question_major":"Major (v{version})","create_version_command.check_preview_before_version_release":"Before creating a new version, let's create a preview of your app","create_version_command.checking_validation_status":"Checking if this version can be submitted\u2026","create_version_command.version_validation_ok":"This version can be submitted for review in the <0>App Dashboard</0>","create_version_command.version_validation_has_failures":`This version has blockers preventing it from being submitted for review.
10
+ Please fix them and submit your app in the <0>App Dashboard</0>.`,"embedded_script.type.essential":"Essential","embedded_script.type.essential.description":"Must load regardless of policy","embedded_script.type.functional":"Functional","embedded_script.type.functional.description":"Adds optional functionality to the site","embedded_script.type.analytics":"Analytics","embedded_script.type.analytics.description":"Adds analytics abilities to the site","embedded_script.type.advertising":"Advertising","embedded_script.type.advertising.description":"Adds advertising content or advertising tracking to the site","embedded_script.placement.head":"Head","embedded_script.placement.head.description":"In the document head","embedded_script.placement.body_start":"Body Start","embedded_script.placement.body_start.description":"Prepended in the body","embedded_script.placement.body_end":"Body End","embedded_script.placement.body_end.description":"Appended in the body","generate_command.description":"Add new extensions to your application","generate_command.flow.dashboard_category":"Dashboard","generate_command.flow.site_category":"Site","generate_command.flow.backend_category":"Backend","generate_command.flow.dashboard_page":"Dashboard Page","generate_command.flow.sidebar_category":"Sidebar Category","generate_command.flow.dashboard_plugin":"Dashboard Plugin","generate_command.flow.dashboard_menu_plugin":"Dashboard Menu Plugin","generate_command.flow.embedded_script":"Embedded Script","generate_command.flow.site_plugin":"Site Plugin","generate_command.flow.event":"Event","generate_command.flow.api.title":"API","generate_command.flow.dashboard_modal":"Dashboard Modal","generate_command.flow.custom_element":"Site Widget","generate_command.flow.service_plugin":"Service Plugin","generate_command.flow.choose_flow":"What kind of extension would you like to generate?","generate_command.generation.loading":"Generating {subject}...","generate_command.generation.done":"\u{1F680} The new {extensionType} has been generated successfully.","generate_command.generation.learn_more":"\u{1F4DA} Learn more about {extensionType}: <0/>","generate_command.generation.install_dependencies_question":"Would you like to install dependencies now?","generate_command.generation.new_dependencies":"\u26A0\uFE0F New app dependencies have been added. Please run <0>{pkgManagerName} install</0> before continuing to work.","generate_command.generation.dependencies_installed":"\u2705 Dependencies installed","generate_command.dashboard_page.choose_route":"Enter the route for the new page:","generate_command.dashboard_page.route_placeholder":"my-page","generate_command.dashboard_page.choose_title":"Page title:","generate_command.dashboard_page.title_placeholder":"My Page","generate_command.dashboard_page.add_to_category":"Add to a sidebar category?","generate_command.dashboard_page.choose_category":"Sidebar category:","generate_command.sidebar_category.choose_label":"Enter the label for the new category:","generate_command.sidebar_category.label_placeholder":"My App","generate_command.custom_element.validation.element_exists":"The custom element folders must be unique, please choose a name that has not been used yet in your application.","generate_command.custom_element.validation.element_invalid":"The custom element folder must be a valid path ([a-z-/]+) and must not start with a dot.","generate_command.custom_element.choose_folder":"Widget folder (relative to src/site/widgets/custom-elements):","generate_command.custom_element.folder_placeholder":"my-widget","generate_command.custom_element.choose_name":"Widget name:","generate_command.custom_element.choose_name.error":"Enter a name that is shorter than 30 characters.","generate_command.custom_element.name_placeholder":"My Widget","generate_command.site_plugin.choose_folder":"Site plugin folder (relative to src/site/plugins/custom-elements):","generate_command.site_plugin.folder_placeholder":"my-site-plugin","generate_command.site_plugin.choose_name":"Site plugin name:","generate_command.site_plugin.name_placeholder":"My Site Plugin","generate_command.site_plugin.plugin_app":"Select a Wix app to view its plugin slots","generate_command.site_plugin.plugin_app.description":"(<0>read more</0>)","generate_command.site_plugin.choose_placement":"Select the slot in which you\u2019d like to place your plugin","generate_command.site_plugin.widget_docs":"<0>read more</0>","generate_command.embedded_script.validation.script_exists":"The script folder must be unique, please choose a name that has not been used yet in your application.","generate_command.embedded_script.validation.script_invalid":"The script folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.","generate_command.embedded_script.choose_folder":"Script folder (relative to src/site/embedded-scripts):","generate_command.embedded_script.folder_placeholder":"my-script","generate_command.embedded_script.choose_name":"Script name:","generate_command.embedded_script.name_placeholder":"My Script","generate_command.embedded_script.choose_type":"Script type:","generate_command.embedded_script.type_info":"Determine if site visitors' consent is needed to run the script, <0>read more</0>","generate_command.embedded_script.choose_placement":"Placement:","generate_command.embedded_script.placement_info":"Will determine where the script is embedded","generate_command.dashboard_modal.validation.folder_exists":"The modal folder must be unique, please choose a folder name that has not been used yet in your application.","generate_command.dashboard_modal.validation.folder_invalid":"The modal folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.","generate_command.dashboard_modal.choose_folder":"Enter the folder name for the new modal:","generate_command.dashboard_modal.folder_placeholder":"my-modal","generate_command.dashboard_modal.choose_title":"Modal title:","generate_command.dashboard_modal.title_placeholder":"My Modal","generate_command.dashboard_plugin.what_to_extend":"What would you like to extend?","generate_command.dashboard_plugin.what_to_extend.description":"Plugins let you extend Wix apps by embedding your UI inside dedicated slots within a dashboard page (<0>read more</0>)","generate_command.dashboard_plugin.what_to_extend.item_description":"<0>read more</0>","generate_command.dashboard_plugin.choose_folder":"Plugin folder (relative to src/dashboard/plugins)","generate_command.dashboard_plugin.folder_placeholder":"my-plugin","generate_command.dashboard_plugin.choose_title":"Plugin title","generate_command.dashboard_plugin.title_placeholder":"My Plugin","generate_command.required_app":"Would you like to set {appsNames} as a requirement for your app?","generate_command.required_app.description":"This means sites must have {appsNames} installed before installing your app (<0>read more</0>)","generate_command.dashboard_menu_plugin.what_to_extend":"What would you like to extend?","generate_command.dashboard_menu_plugin.what_to_extend.description":"Menu Plugins let you extend Wix apps by adding a menu item in a pre-defined slot in a menu on a dashboard page (<0>read more</0>)","generate_command.dashboard_menu_plugin.what_to_extend.item_description":"<0>read more</0>","generate_command.dashboard_menu_plugin.what_to_do":"What action will happen after clicking on the menu item?","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page":"Navigate to a page","generate_command.dashboard_menu_plugin.what_to_do.open_modal":"Open a modal","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page":"Choose a page the menu item will navigate to:","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.info":"Choose from a list of available pages in your project or manually add a page from a different app","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other":"Use a page from a different app","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.choose_page_id":"What is the unique id of the page?","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.page_id_invalid":"Page id has to be in the format of a uuid","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component":"Choose the modal to open:","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.info":"Choose from a list of available modals in your project or manually add a modal from a different app","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other":"Use a modal from a different app","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.choose_component_id":"What is the unique id of the modal?","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.component_id_invalid":"Modal id has to be in the format of a uuid","generate_command.dashboard_menu_plugin.choose_folder":"Menu Plugin folder (relative to src/dashboard/menu-plugins)","generate_command.dashboard_menu_plugin.folder_placeholder":"my-plugin","generate_command.dashboard_menu_plugin.choose_title":"Menu Plugin title","generate_command.dashboard_menu_plugin.title_placeholder":"My Plugin","generate_command.api.api_placeholder":"my-api","generate_command.api.choose_api_name":"How would you like to name your API?","generate_command.api.choose_folder":"API folder (relative to src/backend/api):","generate_command.api.choose_api_name.error":"API name must be unique, can not include special characters or spaces, and must be shorter than 20 characters","generate_command.api.choose_method":"Choose an API method","generate_command.event.choose_folder":"Event folder (relative to src/backend/events):","generate_command.event.folder_placeholder":"my-event","generate_command.event.choose_folder.error":"Event name must be unique, can not include special characters or spaces, and must be shorter than 20 characters","generate_command.service_plugin.choose_type":"Which service plugin do you want to create","generate_command.service_plugin.choose_name":"How would you like to name your service plugin","generate_command.service_plugin.name_placeholder":"my-service-plugin","generate_command.service_plugin.groups.stores":"Stores","generate_command.service_plugin.ecom_additional_fees":"Ecom Additional Fees","generate_command.service_plugin.ecom_shipping_rates":"Ecom Shipping Rates","generate_command.service_plugin.ecom_discount_triggers":"Ecom Discount Triggers","generate_command.service_plugin.ecom_validations":"Ecom Validations","generate_command.service_plugin.ecom_payment_settings":"Ecom Payment Settings","generate_command.service_plugin.ecom_gift_cards_provider":"Ecom Gift Cards Provider","logs_command_def.option.version":"Specify the app version to fetch production logs from","logs_command.connecting":"Connecting to the log server...","logs_command.listening_to_logs":"Listening to logs from the server.","logs_command.prod_env_logs":"Prod Environment logs for the version: {version}"};export{o as a};
11
+ //# sourceMappingURL=chunk-EUNKG7JY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/messages.json"],"sourcesContent":["{\n \"create_version_command_def.option.version_type\": \"The type of version you would like to create\",\n \"create_version_command_def.option.approve_preview\": \"Approve preview automatically\",\n \"create_version_command_def.option.base_url\": \"The base url for when static files have been uploaded to an external cdn\",\n \"create_version_command_def.option.site\": \"The site id to use for Application Preview urls, defaults to the current selected development site\",\n \"dev_command_def.option.https\": \"Start local dev server on https\",\n \"app_preview_command_def.option.site\": \"The site id to use for Application Preview urls, defaults to the current selected development site\",\n \"app_preview_command_def.option.base_url\": \"The base url for when static files have been uploaded to an external cdn\",\n \"app_preview_command_def.option.no_input\": \"Disable command interactivity\",\n \"general.loading\": \"Loading...\",\n \"general.no_site_id_configured\": \"You don't have a Development Site currently configured\",\n \"general.site_id_not_found\": \"Your currently configured Development Site was not found ({id})\\nThis may happen because the site was deleted or your access has been revoked.\\n\\nPlease select another Development Site to continue\",\n \"general.dashboard_page_text\": \"<0>Click here</0> to open your application in the Wix Dashboard\",\n \"general.dashboard_page_click_here\": \"Click here\",\n \"general.close_screen\": \"Press <0/> to close\",\n \"logs.backend.clear\": \"Press <0/> to clear\",\n \"general.open_page_error\": \"Failed to open the browser for <0>{title}</0>, use the following URL to open it in your browser:\",\n \"general.dashboard_pages_viewer.title\": \"Press a number key to open a dashboard page:\",\n \"general.dashboard_plugins_viewer.title\": \"Press a number key to open a dashboard plugin:\",\n \"general.dashboard_menu_plugins_viewer.title\": \"Press a number key to open a dashboard menu plugin:\",\n \"general.backend_api_viewer.title\": \"Press a number key to trigger an api:\",\n \"general.backend_plugin_viewer.title\": \"Press a number key to trigger an plugin:\",\n \"general.backend_events_viewer.title\": \"Press a number key to trigger an event:\",\n \"general.numeric_viewer.show_more\": \"View more...\",\n \"general.platform.site\": \"Site\",\n \"general.platform.unpublished_site\": \"Site (publish the site to enable site preview)\",\n \"general.platform.editor\": \"Editor\",\n \"general.platform.dashboard\": \"Dashboard\",\n \"general.platform.backend\": \"Backend\",\n \"general.platform.none\": \"Your project doesn't seem to have any extensions.\\n\\nExtensions are the building blocks of your app.\\nMake sure it is configured properly, or read our <0>documentation</0> to start developing your first extension.\",\n \"general.dev_site.current\": \"Current Development Site: {name}\",\n \"general.view_changes\": \"View your local changes: <0>(Press a key to open)</0>\",\n \"general.open_preview.title_single\": \"Open the preview on the\",\n \"general.open_preview.title_multiple\": \"Open the preview on:\",\n \"preview_command.creating_preview\": \"Creating a preview...\",\n \"preview_command.creating_preview_success\": \"Preview created successfully!\",\n \"preview_command.uploading_files\": \"Uploading your application files...\",\n \"preview_command.uploading_files_success\": \"Uploaded successfully!\",\n \"dev_command.site_provider.loading\": \"Resolving development site...\",\n \"dev_command.custom_elements_migration.loading\": \"Checking site widgets installation...\",\n \"preview_command.note_about_temporary_backend\": \"This preview URL will be available for three days. Afterward, you can create a new preview if you need to.\",\n \"dev_command.dev_environment.loading\": \"Starting dev environment...\",\n \"dev_command.dev_environment.started\": \"Development environment ready\",\n \"dev_command.dev_site.change\": \"Current Dev Site: <0>{siteName}</0> <1>(Press C to switch)</1>\",\n \"dev_command.site_selector.error\": \"Failed to change Development Site!\",\n \"dev_command.dashboard_pages_screen.select_label\": \"Select a dashboard page to open\",\n \"dev_command.dashboard_menu_plugin_screen.select_label\": \"Select a dashboard menu plugin to open\",\n \"dev_command.dashboard_page_plugin_screen.select_label\": \"Select a dashboard plugin to open\",\n \"dev_command.dashboard_modal_screen.select_label\": \"Select a dashboard modal to open\",\n \"dev_command.backend_apis_screen.select_label\": \"Select api to trigger\",\n \"dev_command.backend_events_screen.select_label\": \"Select event to trigger\",\n \"dev_command.backend_plugins_screen.select_label\": \"Select plugin to trigger\",\n \"dev_command.required_apps.loading\": \"Checking required apps...\",\n \"dev_command.required_apps.warning\": \"Make sure you have {requiredAppNames} installed on your site\",\n \"dev_command.config_change\": \"Loading App Manifest changes...\",\n \"dev_command.config_update\": \"App Manifest updated. Refresh existing browser tabs to view the latest changes.\",\n \"dev_command.config_didnt_update\": \"No App Manifest update occurred\",\n \"dev_command.tunneling.confirm\": \"To proceed, we'll set up a secure tunnel from your machine for development purposes\",\n \"dev_command.tunneling.abort_dev\": \"Operation aborted. Tunneling is necessary to run your application.\",\n \"dev_command.new_custom_element.warning\": \"New site widget detected. Press <0/> to open the Site Editor and complete the installation.\",\n \"dev_command.new_custom_element.confirm_reinstall\": \"Press <0/> when you reinstalled app on your dev site\",\n \"dev_command.new_custom_element.reinstall_error\": \"We had troubles with adding your new site widget. You can try to do it by yourself. Press <0/> to continue\",\n \"serve_command.starting_serve_environment\": \"Starting serve environment...\",\n \"serve_command.starting_serve_environment_success\": \"Serve environment started! <0/>\",\n \"serve_command.production_build\": \"Application is using a production build\",\n \"create_version_command.creating_version\": \"Creating a version...\",\n \"create_version_command.creating_version_success\": \"Successfully created v{version}\",\n \"create_version_command.current_version\": \"Your current version is: v{version}\",\n \"create_version_command.confirm_version_events_warning\": \"Any configured events will be deployed to production and take effect once a new version of your app is created.\",\n \"create_version_command.confirm_version_creation\": \"Continue with creating the new version?\",\n \"create_version_command.confirm_version_creation_aborted\": \"Version creation aborted\",\n \"create_version_command.version_type_question\": \"What type of version would you like to create?\",\n \"create_version_command.version_type_question_minor\": \"Minor (v{version})\",\n \"create_version_command.version_type_question_major\": \"Major (v{version})\",\n \"create_version_command.check_preview_before_version_release\": \"Before creating a new version, let's create a preview of your app\",\n \"create_version_command.checking_validation_status\": \"Checking if this version can be submitted…\",\n \"create_version_command.version_validation_ok\": \"This version can be submitted for review in the <0>App Dashboard</0>\",\n \"create_version_command.version_validation_has_failures\": \"This version has blockers preventing it from being submitted for review.\\nPlease fix them and submit your app in the <0>App Dashboard</0>.\",\n \"embedded_script.type.essential\": \"Essential\",\n \"embedded_script.type.essential.description\": \"Must load regardless of policy\",\n \"embedded_script.type.functional\": \"Functional\",\n \"embedded_script.type.functional.description\": \"Adds optional functionality to the site\",\n \"embedded_script.type.analytics\": \"Analytics\",\n \"embedded_script.type.analytics.description\": \"Adds analytics abilities to the site\",\n \"embedded_script.type.advertising\": \"Advertising\",\n \"embedded_script.type.advertising.description\": \"Adds advertising content or advertising tracking to the site\",\n \"embedded_script.placement.head\": \"Head\",\n \"embedded_script.placement.head.description\": \"In the document head\",\n \"embedded_script.placement.body_start\": \"Body Start\",\n \"embedded_script.placement.body_start.description\": \"Prepended in the body\",\n \"embedded_script.placement.body_end\": \"Body End\",\n \"embedded_script.placement.body_end.description\": \"Appended in the body\",\n \"generate_command.description\": \"Add new extensions to your application\",\n \"generate_command.flow.dashboard_category\": \"Dashboard\",\n \"generate_command.flow.site_category\": \"Site\",\n \"generate_command.flow.backend_category\": \"Backend\",\n \"generate_command.flow.dashboard_page\": \"Dashboard Page\",\n \"generate_command.flow.sidebar_category\": \"Sidebar Category\",\n \"generate_command.flow.dashboard_plugin\": \"Dashboard Plugin\",\n \"generate_command.flow.dashboard_menu_plugin\": \"Dashboard Menu Plugin\",\n \"generate_command.flow.embedded_script\": \"Embedded Script\",\n \"generate_command.flow.site_plugin\": \"Site Plugin\",\n \"generate_command.flow.event\": \"Event\",\n \"generate_command.flow.api.title\": \"API\",\n \"generate_command.flow.dashboard_modal\": \"Dashboard Modal\",\n \"generate_command.flow.custom_element\": \"Site Widget\",\n \"generate_command.flow.service_plugin\": \"Service Plugin\",\n \"generate_command.flow.choose_flow\": \"What kind of extension would you like to generate?\",\n \"generate_command.generation.loading\": \"Generating {subject}...\",\n \"generate_command.generation.done\": \"🚀 The new {extensionType} has been generated successfully.\",\n \"generate_command.generation.learn_more\": \"📚 Learn more about {extensionType}: <0/>\",\n \"generate_command.generation.install_dependencies_question\": \"Would you like to install dependencies now?\",\n \"generate_command.generation.new_dependencies\": \"⚠️ New app dependencies have been added. Please run <0>{pkgManagerName} install</0> before continuing to work.\",\n \"generate_command.generation.dependencies_installed\": \"✅ Dependencies installed\",\n \"generate_command.dashboard_page.choose_route\": \"Enter the route for the new page:\",\n \"generate_command.dashboard_page.route_placeholder\": \"my-page\",\n \"generate_command.dashboard_page.choose_title\": \"Page title:\",\n \"generate_command.dashboard_page.title_placeholder\": \"My Page\",\n \"generate_command.dashboard_page.add_to_category\": \"Add to a sidebar category?\",\n \"generate_command.dashboard_page.choose_category\": \"Sidebar category:\",\n \"generate_command.sidebar_category.choose_label\": \"Enter the label for the new category:\",\n \"generate_command.sidebar_category.label_placeholder\": \"My App\",\n \"generate_command.custom_element.validation.element_exists\": \"The custom element folders must be unique, please choose a name that has not been used yet in your application.\",\n \"generate_command.custom_element.validation.element_invalid\": \"The custom element folder must be a valid path ([a-z-/]+) and must not start with a dot.\",\n \"generate_command.custom_element.choose_folder\": \"Widget folder (relative to src/site/widgets/custom-elements):\",\n \"generate_command.custom_element.folder_placeholder\": \"my-widget\",\n \"generate_command.custom_element.choose_name\": \"Widget name:\",\n \"generate_command.custom_element.choose_name.error\": \"Enter a name that is shorter than 30 characters.\",\n \"generate_command.custom_element.name_placeholder\": \"My Widget\",\n \"generate_command.site_plugin.choose_folder\": \"Site plugin folder (relative to src/site/plugins/custom-elements):\",\n \"generate_command.site_plugin.folder_placeholder\": \"my-site-plugin\",\n \"generate_command.site_plugin.choose_name\": \"Site plugin name:\",\n \"generate_command.site_plugin.name_placeholder\": \"My Site Plugin\",\n \"generate_command.site_plugin.plugin_app\": \"Select a Wix app to view its plugin slots\",\n \"generate_command.site_plugin.plugin_app.description\": \"(<0>read more</0>)\",\n \"generate_command.site_plugin.choose_placement\": \"Select the slot in which you’d like to place your plugin\",\n \"generate_command.site_plugin.widget_docs\": \"<0>read more</0>\",\n \"generate_command.embedded_script.validation.script_exists\": \"The script folder must be unique, please choose a name that has not been used yet in your application.\",\n \"generate_command.embedded_script.validation.script_invalid\": \"The script folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.\",\n \"generate_command.embedded_script.choose_folder\": \"Script folder (relative to src/site/embedded-scripts):\",\n \"generate_command.embedded_script.folder_placeholder\": \"my-script\",\n \"generate_command.embedded_script.choose_name\": \"Script name:\",\n \"generate_command.embedded_script.name_placeholder\": \"My Script\",\n \"generate_command.embedded_script.choose_type\": \"Script type:\",\n \"generate_command.embedded_script.type_info\": \"Determine if site visitors' consent is needed to run the script, <0>read more</0>\",\n \"generate_command.embedded_script.choose_placement\": \"Placement:\",\n \"generate_command.embedded_script.placement_info\": \"Will determine where the script is embedded\",\n \"generate_command.dashboard_modal.validation.folder_exists\": \"The modal folder must be unique, please choose a folder name that has not been used yet in your application.\",\n \"generate_command.dashboard_modal.validation.folder_invalid\": \"The modal folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.\",\n \"generate_command.dashboard_modal.choose_folder\": \"Enter the folder name for the new modal:\",\n \"generate_command.dashboard_modal.folder_placeholder\": \"my-modal\",\n \"generate_command.dashboard_modal.choose_title\": \"Modal title:\",\n \"generate_command.dashboard_modal.title_placeholder\": \"My Modal\",\n \"generate_command.dashboard_plugin.what_to_extend\": \"What would you like to extend?\",\n \"generate_command.dashboard_plugin.what_to_extend.description\": \"Plugins let you extend Wix apps by embedding your UI inside dedicated slots within a dashboard page (<0>read more</0>)\",\n \"generate_command.dashboard_plugin.what_to_extend.item_description\": \"<0>read more</0>\",\n \"generate_command.dashboard_plugin.choose_folder\": \"Plugin folder (relative to src/dashboard/plugins)\",\n \"generate_command.dashboard_plugin.folder_placeholder\": \"my-plugin\",\n \"generate_command.dashboard_plugin.choose_title\": \"Plugin title\",\n \"generate_command.dashboard_plugin.title_placeholder\": \"My Plugin\",\n \"generate_command.required_app\": \"Would you like to set {appsNames} as a requirement for your app?\",\n \"generate_command.required_app.description\": \"This means sites must have {appsNames} installed before installing your app (<0>read more</0>)\",\n \"generate_command.dashboard_menu_plugin.what_to_extend\": \"What would you like to extend?\",\n \"generate_command.dashboard_menu_plugin.what_to_extend.description\": \"Menu Plugins let you extend Wix apps by adding a menu item in a pre-defined slot in a menu on a dashboard page (<0>read more</0>)\",\n \"generate_command.dashboard_menu_plugin.what_to_extend.item_description\": \"<0>read more</0>\",\n \"generate_command.dashboard_menu_plugin.what_to_do\": \"What action will happen after clicking on the menu item?\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page\": \"Navigate to a page\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal\": \"Open a modal\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page\": \"Choose a page the menu item will navigate to:\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.info\": \"Choose from a list of available pages in your project or manually add a page from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other\": \"Use a page from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.choose_page_id\": \"What is the unique id of the page?\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.page_id_invalid\": \"Page id has to be in the format of a uuid\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component\": \"Choose the modal to open:\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.info\": \"Choose from a list of available modals in your project or manually add a modal from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other\": \"Use a modal from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.choose_component_id\": \"What is the unique id of the modal?\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.component_id_invalid\": \"Modal id has to be in the format of a uuid\",\n \"generate_command.dashboard_menu_plugin.choose_folder\": \"Menu Plugin folder (relative to src/dashboard/menu-plugins)\",\n \"generate_command.dashboard_menu_plugin.folder_placeholder\": \"my-plugin\",\n \"generate_command.dashboard_menu_plugin.choose_title\": \"Menu Plugin title\",\n \"generate_command.dashboard_menu_plugin.title_placeholder\": \"My Plugin\",\n \"generate_command.api.api_placeholder\": \"my-api\",\n \"generate_command.api.choose_api_name\": \"How would you like to name your API?\",\n \"generate_command.api.choose_folder\": \"API folder (relative to src/backend/api):\",\n \"generate_command.api.choose_api_name.error\": \"API name must be unique, can not include special characters or spaces, and must be shorter than 20 characters\",\n \"generate_command.api.choose_method\": \"Choose an API method\",\n \"generate_command.event.choose_folder\": \"Event folder (relative to src/backend/events):\",\n \"generate_command.event.folder_placeholder\": \"my-event\",\n \"generate_command.event.choose_folder.error\": \"Event name must be unique, can not include special characters or spaces, and must be shorter than 20 characters\",\n \"generate_command.service_plugin.choose_type\": \"Which service plugin do you want to create\",\n \"generate_command.service_plugin.choose_name\": \"How would you like to name your service plugin\",\n \"generate_command.service_plugin.name_placeholder\": \"my-service-plugin\",\n \"generate_command.service_plugin.groups.stores\": \"Stores\",\n \"generate_command.service_plugin.ecom_additional_fees\": \"Ecom Additional Fees\",\n \"generate_command.service_plugin.ecom_shipping_rates\": \"Ecom Shipping Rates\",\n \"generate_command.service_plugin.ecom_discount_triggers\": \"Ecom Discount Triggers\",\n \"generate_command.service_plugin.ecom_validations\": \"Ecom Validations\",\n \"generate_command.service_plugin.ecom_payment_settings\": \"Ecom Payment Settings\",\n \"generate_command.service_plugin.ecom_gift_cards_provider\": \"Ecom Gift Cards Provider\",\n \"logs_command_def.option.version\": \"Specify the app version to fetch production logs from\",\n \"logs_command.connecting\": \"Connecting to the log server...\",\n \"logs_command.listening_to_logs\": \"Listening to logs from the server.\",\n \"logs_command.prod_env_logs\": \"Prod Environment logs for the version: {version}\"\n}\n"],"mappings":"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","names":["messages_default"]}