@wix/cli-app 1.1.41 → 1.1.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{CreateVersionCommand-NJC6EUQ6.js → CreateVersionCommand-5IAVOXIL.js} +2 -2
- package/build/{DevCommand-7VFOSZMO.js → DevCommand-IONFQEUI.js} +2 -2
- package/build/DevCommand-IONFQEUI.js.map +1 -0
- package/build/{GenerateCommand-VISY3267.js → GenerateCommand-5TCQBLGS.js} +14 -14
- package/build/GenerateCommand-5TCQBLGS.js.map +1 -0
- package/build/{LogsCommand-5HFJDCHS.js → LogsCommand-D6NXV22E.js} +2 -2
- package/build/{LogsCommand-5HFJDCHS.js.map → LogsCommand-D6NXV22E.js.map} +1 -1
- package/build/PreviewCommand-YJRKOQVQ.js +4 -0
- package/build/{ServeCommand-QS4FDP4T.js → ServeCommand-UVSCCNNJ.js} +2 -2
- package/build/{build-BFTLTFIN.js → build-F3HGY5OP.js} +2 -2
- package/build/chunk-3UO7SKSO.js +4 -0
- package/build/chunk-3UO7SKSO.js.map +1 -0
- package/build/{chunk-3OFSARA2.js → chunk-6BLEHX5K.js} +2 -2
- package/build/chunk-CIOJVLBW.js +239 -0
- package/build/chunk-CIOJVLBW.js.map +1 -0
- package/build/{chunk-GF543SV4.js → chunk-FOM5C6XY.js} +2 -2
- package/build/{chunk-6MMLDNFM.js → chunk-H74SYNT4.js} +2 -2
- package/build/{chunk-RUZJ2NCD.js → chunk-HQEJV2QG.js} +2 -2
- package/build/{chunk-7RL4TN6T.js → chunk-ILQJ7I7Z.js} +2 -2
- package/build/chunk-LLH3KFRX.js +4 -0
- package/build/chunk-MODHWP6L.js +4 -0
- package/build/chunk-MODHWP6L.js.map +1 -0
- package/build/{chunk-5YVFVF4T.js → chunk-PEJD3OIS.js} +2 -2
- package/build/chunk-PEJD3OIS.js.map +1 -0
- package/build/chunk-PH5CKHZV.js +4 -0
- package/build/{chunk-ZTW5IT5T.js.map → chunk-PH5CKHZV.js.map} +1 -1
- package/build/chunk-PKXR47PB.js +4 -0
- package/build/chunk-PKXR47PB.js.map +1 -0
- package/build/{chunk-YHA4H34H.js → chunk-QF6RQBVB.js} +3 -3
- package/build/{chunk-YHA4H34H.js.map → chunk-QF6RQBVB.js.map} +1 -1
- package/build/{chunk-RL3KEEB6.js → chunk-QMOS67SX.js} +2 -2
- package/build/{chunk-LRONHC7Z.js → chunk-VW4CA5QY.js} +6 -6
- package/build/{chunk-LRONHC7Z.js.map → chunk-VW4CA5QY.js.map} +1 -1
- package/build/{chunk-UGTXCT5B.js → chunk-WC5HJ7VI.js} +11 -11
- package/build/chunk-WC5HJ7VI.js.map +1 -0
- package/build/{chunk-3HELHIBJ.js → chunk-YMNBETM3.js} +2 -2
- package/build/chunk-YMNBETM3.js.map +1 -0
- package/build/chunk-YUI4ZVE3.js +114 -0
- package/build/chunk-YUI4ZVE3.js.map +1 -0
- package/build/{chunk-IZOKP4UZ.js → chunk-ZQFCJI4E.js} +2 -2
- package/build/chunk-ZQFCJI4E.js.map +1 -0
- package/build/cloudflare-runtime/entry.js +4875 -7
- package/build/cloudflare-runtime/getRegisteredExtensions.js +4871 -5
- package/build/index.js +2 -2
- package/build/platform-sdk/browser-ZCGHXB6A.js +5 -0
- package/build/platform-sdk/browser-ZCGHXB6A.js.map +1 -0
- package/build/platform-sdk/chunk-AA4CIK56.js +2 -0
- package/build/platform-sdk/chunk-AA4CIK56.js.map +1 -0
- package/build/platform-sdk/chunk-PXLVKIYB.js +2 -0
- package/build/platform-sdk/chunk-PXLVKIYB.js.map +1 -0
- package/build/platform-sdk/chunk-SBZEOPXX.js +2 -0
- package/build/platform-sdk/dashboard.js +1 -1
- package/build/platform-sdk/dashboard.js.map +1 -1
- package/build/platform-sdk/editor.js +7 -7
- package/build/platform-sdk/editor.js.map +1 -1
- package/build/platform-sdk/site.js +1 -1
- package/build/{preview-KSI26ITH.js → preview-VUKYEAWB.js} +2 -2
- package/build/{render-command-D47LZ2TZ.js → render-command-RQNQKQL7.js} +2 -2
- package/package.json +7 -6
- package/schemas/ecom-gift-cards-provider.json +1 -0
- package/templates/service-plugin/gift-cards-provider/dependencies.json +5 -0
- package/templates/service-plugin/gift-cards-provider/files/plugin.json.ejs +4 -0
- package/templates/service-plugin/gift-cards-provider/files/plugin.ts.ejs +26 -0
- package/build/DevCommand-7VFOSZMO.js.map +0 -1
- package/build/GenerateCommand-VISY3267.js.map +0 -1
- package/build/PreviewCommand-R3AOKI4K.js +0 -4
- package/build/chunk-3HELHIBJ.js.map +0 -1
- package/build/chunk-5YVFVF4T.js.map +0 -1
- package/build/chunk-62SRA77S.js +0 -4
- package/build/chunk-62SRA77S.js.map +0 -1
- package/build/chunk-B2BRLGRZ.js +0 -4
- package/build/chunk-IZOKP4UZ.js.map +0 -1
- package/build/chunk-L7P6I5SY.js +0 -4
- package/build/chunk-L7P6I5SY.js.map +0 -1
- package/build/chunk-NCYXC7TY.js +0 -4
- package/build/chunk-NCYXC7TY.js.map +0 -1
- package/build/chunk-SQGBFWJ2.js +0 -114
- package/build/chunk-SQGBFWJ2.js.map +0 -1
- package/build/chunk-T3UD2OLT.js +0 -233
- package/build/chunk-T3UD2OLT.js.map +0 -1
- package/build/chunk-UGTXCT5B.js.map +0 -1
- package/build/chunk-ZTW5IT5T.js +0 -4
- package/build/platform-sdk/chunk-DGX4CFXG.js +0 -2
- package/build/platform-sdk/chunk-DGX4CFXG.js.map +0 -1
- package/build/platform-sdk/chunk-TEDR2MDT.js +0 -2
- package/build/platform-sdk/chunk-UZ376HBX.js +0 -2
- package/build/platform-sdk/chunk-UZ376HBX.js.map +0 -1
- package/build/platform-sdk/esm-WXLS5NTC.js +0 -2
- package/build/platform-sdk/esm-WXLS5NTC.js.map +0 -1
- /package/build/{CreateVersionCommand-NJC6EUQ6.js.map → CreateVersionCommand-5IAVOXIL.js.map} +0 -0
- /package/build/{PreviewCommand-R3AOKI4K.js.map → PreviewCommand-YJRKOQVQ.js.map} +0 -0
- /package/build/{ServeCommand-QS4FDP4T.js.map → ServeCommand-UVSCCNNJ.js.map} +0 -0
- /package/build/{build-BFTLTFIN.js.map → build-F3HGY5OP.js.map} +0 -0
- /package/build/{chunk-3OFSARA2.js.map → chunk-6BLEHX5K.js.map} +0 -0
- /package/build/{chunk-GF543SV4.js.map → chunk-FOM5C6XY.js.map} +0 -0
- /package/build/{chunk-6MMLDNFM.js.map → chunk-H74SYNT4.js.map} +0 -0
- /package/build/{chunk-RUZJ2NCD.js.map → chunk-HQEJV2QG.js.map} +0 -0
- /package/build/{chunk-7RL4TN6T.js.map → chunk-ILQJ7I7Z.js.map} +0 -0
- /package/build/{chunk-B2BRLGRZ.js.map → chunk-LLH3KFRX.js.map} +0 -0
- /package/build/{chunk-RL3KEEB6.js.map → chunk-QMOS67SX.js.map} +0 -0
- /package/build/platform-sdk/{chunk-TEDR2MDT.js.map → chunk-SBZEOPXX.js.map} +0 -0
- /package/build/{preview-KSI26ITH.js.map → preview-VUKYEAWB.js.map} +0 -0
- /package/build/{render-command-D47LZ2TZ.js.map → render-command-RQNQKQL7.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as _createRequire } from 'node:module';
|
|
2
2
|
const require = _createRequire(import.meta.url);
|
|
3
|
-
import{a as $}from"./chunk-
|
|
4
|
-
//# sourceMappingURL=LogsCommand-
|
|
3
|
+
import{a as $}from"./chunk-VW4CA5QY.js";import{C as V,Oa as z,Pa as H,Qa as q,Va as U,Wa as J,qb as K}from"./chunk-YUI4ZVE3.js";import{A as d,P as G,S as N,W as T,X as R,b as O,c as I,e as M,f as S,m as t,x as c}from"./chunk-WC5HJ7VI.js";import{e as f,h as a}from"./chunk-V4TR6DCM.js";a();a();var L=f(O(),1);var v=f(I(),1);a();var o=f(O(),1),_=f(I(),1);a();var y=f(O(),1);import{createServer as ge}from"node:http";var Q=f(I(),1);a();var x=f(I(),1),te=t.any(),ne=t.enum(["info","error","warn","debug","log"]),se=t.object({message:t.array(te),level:ne,timestamp:t.number()}),ie=t.object({stack:t.string(),name:t.string(),message:t.string(),timestamp:t.number()}),me=t.object({_type:t.literal("log"),exceptions:t.array(ie),logs:t.array(se)}).passthrough(),pe=t.object({_type:t.literal("session-timeout")}).passthrough(),ae=t.discriminatedUnion("_type",[me,pe]),X=(0,x.variant)({Log:(0,x.fields)(),Exception:(0,x.fields)()}),P="/logs",Y=(e,n)=>{let i,g;if(e.method==="POST"&&e.url===P){let m="";e.on("data",s=>{m+=s.toString()}),e.on("end",()=>{let s;try{s=ae.parse(JSON.parse(m))}catch(r){return g(S.FailedToParseLog(),r,{body:m}),n.statusCode=400,n.end()}let p=[];s._type==="log"&&(p.push(...s.exceptions.map(r=>X.Exception(r))),p.push(...s.logs.map(r=>X.Log(r)))),(0,x.match)(s._type,{log:()=>{i(p)},"session-timeout":()=>{n.statusCode=200,n.end(),g(S.LogsConnectionTimeout(),{},{body:m})}}),n.statusCode=200,n.end()})}else n.statusCode=404,n.end("Not Found");let u={onLog:m=>(i=m,u),onError:m=>(g=m,u)};return u};var ce=/([0-9a-f-]{36})/,W=({onLog:e,version:n,appId:i})=>{let{reportError:g}=V(),{getAppByVersion:u}=q(),m=$(),s=H({type:"backoffice"}),p=(0,y.useRef)(),r=(0,y.useMemo)(()=>ge((l,B)=>{Y(l,B).onLog(e).onError((b,A,w)=>{throw r.close(),new M({code:b,cause:A,info:w})})}),[e]),k=(0,y.useMemo)(()=>new Promise(l=>{p.current=l}),[]);(0,y.useEffect)(()=>(r.listen(0,async()=>{let l=r.address().port;p.current?.(l)}),()=>{r.listening&&r.close()}),[r]);let{status:h}=N(async()=>{let l=await k,{url:B}=await m(l),{data:b}=await u({appId:i,version:n}),A=b.components.find(D=>D.compType===z.TOPOLOGY),w=ce.exec(A?.compData.topology.topology.backendApiUrl??"");if(!w?.[1])throw new M({code:S.FailedToGetLogsTopology()});let j=w[1],re={appId:i,deploymentId:j,destinationUrl:new URL(P,B).href};try{await s.request(U(re))}catch(D){throw r.close(),new M({code:S.FailedToConnectToLogsService(),cause:D})}return j},[]);return(0,y.useEffect)(()=>()=>{(0,Q.isType)(h,"Success")&&s.request(J({appId:i,deploymentId:h.result})).catch(g)},[]),h};a();var Z=f(O(),1);var F=({message:e,level:n})=>{let i="unknown";return typeof e=="object"?i=JSON.stringify(e):i=String(e),Z.default.createElement(d,{skin:n==="error"?"error":"standard"},i)};var ee=({version:e,appId:n})=>{let{t:i}=R(),[g,u]=(0,o.useState)([]),m=W({appId:n,version:e,onLog:(0,o.useCallback)(s=>{u(p=>[...p,...s])},[u])});return(0,_.match)(m,{Success:()=>o.default.createElement(c,{marginTop:1,marginBottom:1,flexDirection:"column"},o.default.createElement(c,{marginBottom:1,flexDirection:"column"},o.default.createElement(d,null,o.default.createElement(T,{i18nKey:"logs_command.listening_to_logs"})),o.default.createElement(d,null,o.default.createElement(T,{i18nKey:"logs_command.prod_env_logs",values:{version:e}}))),g.map((s,p)=>o.default.createElement(c,{key:p,flexDirection:"column"},o.default.createElement(c,{columnGap:1},o.default.createElement(c,{flexShrink:0},o.default.createElement(d,{skin:"secondary"},new Date(s.timestamp).toLocaleTimeString())),o.default.createElement(c,{columnGap:1},(0,_.match)(s,{Log:({message:r,level:k})=>r.map((h,l)=>o.default.createElement(F,{key:`${p}-${l}`,message:h,level:k})),Exception:({message:r})=>o.default.createElement(F,{key:p,message:r,level:"error"})}))),(0,_.match)(s,{Log:()=>null,Exception:({stack:r})=>o.default.createElement(d,{skin:"error"},r)})))),Loading:()=>o.default.createElement(G,{text:i("logs_command.connecting")}),Error:()=>null})};var oe=(0,v.variant)({Valid:(0,v.fields)(),Error:(0,v.fields)()}),le=({version:e})=>e?oe.Valid({version:e}):oe.Error({message:L.default.createElement(T,{i18nKey:"logs_command.logs_without_version"})}),de=({version:e})=>{let{model:n}=K(),i=(0,L.useMemo)(()=>le({version:e}),[e]);return(0,v.match)(i,{Valid:({version:g})=>L.default.createElement(ee,{version:g,appId:n.config.appId}),Error:({message:g})=>L.default.createElement(c,{rowGap:1,marginTop:1,marginBottom:1,flexDirection:"column"},L.default.createElement(c,{gap:1},L.default.createElement(d,{skin:"error"},g)))})};export{de as LogsCommand};
|
|
4
|
+
//# sourceMappingURL=LogsCommand-D6NXV22E.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/LogsCommand/index.ts","../src/components/LogsCommand/LogsCommand.tsx","../src/components/LogsCommand/DisplayServerLogs.tsx","../src/components/LogsCommand/useLogsServer.ts","../src/components/LogsCommand/logsReqHandler.ts","../src/components/LogsCommand/ServerLogMessage.tsx"],"sourcesContent":["export { LogsCommand } from './LogsCommand.js';\n","import type { FC } from 'react';\nimport React, { useMemo } from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { Box, Text } from '@wix/cli-ui-kit';\nimport { fields, match, variant } from 'variant';\nimport { DisplayServerLogs } from './DisplayServerLogs.js';\nimport { useProjectModel } from '../../model.js';\n\nconst ValidationResult = variant({\n Valid: fields<{ version: string }>(),\n Error: fields<{ message: React.JSX.Element }>(),\n});\n\nconst validateInput = ({ version }: { version?: string }) => {\n if (!version) {\n return ValidationResult.Error({\n message: <Trans i18nKey=\"logs_command.logs_without_version\" />,\n });\n }\n return ValidationResult.Valid({ version });\n};\n\nexport const LogsCommand: FC<{\n version?: string;\n}> = ({ version }) => {\n const { model } = useProjectModel();\n\n const validationResult = useMemo(() => validateInput({ version }), [version]);\n\n return match(validationResult, {\n Valid: ({ version }) => (\n <DisplayServerLogs version={version} appId={model.config.appId} />\n ),\n Error: ({ message }) => (\n <Box rowGap={1} marginTop={1} marginBottom={1} flexDirection=\"column\">\n <Box gap={1}>\n <Text skin=\"error\">{message}</Text>\n </Box>\n </Box>\n ),\n });\n};\n","import type { FC } from 'react';\nimport React, { useState, useCallback } from 'react';\nimport { match } from 'variant';\nimport { Spinner, Box, Text } from '@wix/cli-ui-kit';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { useLogsServer } from './useLogsServer.js';\nimport type { AggregatedLog } from './logsReqHandler.js';\nimport { ServerLogMessage } from './ServerLogMessage.js';\n\nexport const DisplayServerLogs: FC<{\n version: string;\n appId: string;\n}> = ({ version, appId }) => {\n const { t } = useTranslation();\n const [logs, setLogs] = useState<AggregatedLog[]>([]);\n const serverResult = useLogsServer({\n appId,\n version,\n onLog: useCallback(\n (serverLogs) => {\n setLogs((prevLogs) => {\n return [...prevLogs, ...serverLogs];\n });\n },\n [setLogs]\n ),\n });\n\n return match(serverResult, {\n Success: () => (\n <Box marginTop={1} marginBottom={1} flexDirection=\"column\">\n <Box marginBottom={1} flexDirection=\"column\">\n <Text>\n <Trans i18nKey=\"logs_command.listening_to_logs\" />\n </Text>\n <Text>\n <Trans i18nKey=\"logs_command.prod_env_logs\" values={{ version }} />\n </Text>\n </Box>\n\n {logs.map((log, logIdx) => (\n <Box key={logIdx} flexDirection=\"column\">\n <Box columnGap={1}>\n <Box flexShrink={0}>\n <Text skin=\"secondary\">\n {new Date(log.timestamp).toLocaleTimeString()}\n </Text>\n </Box>\n <Box columnGap={1}>\n {match(log, {\n Log: ({ message, level }) =>\n message.map((msgItem, idx) => (\n <ServerLogMessage\n key={`${logIdx}-${idx}`}\n message={msgItem}\n level={level}\n />\n )),\n Exception: ({ message }) => (\n <ServerLogMessage\n key={logIdx}\n message={message}\n level=\"error\"\n />\n ),\n })}\n </Box>\n </Box>\n {match(log, {\n Log: () => null,\n Exception: ({ stack }) => <Text skin=\"error\">{stack}</Text>,\n })}\n </Box>\n ))}\n </Box>\n ),\n Loading: () => <Spinner text={t('logs_command.connecting')} />,\n Error: () => null,\n });\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { createServer } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { useAsync } from '@wix/cli-ui-kit';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport {\n attachLogger,\n deattachLogger,\n} from '@wix/ambassador-ctp-app-cloud-backend-service-v1-app-cloud-backend-deployment/http';\nimport { useTunnel } from '@wix/cli-tunnel';\nimport { useDevCenterClient, ComponentType } from '@wix/dev-center-client';\nimport type { TopologyComponent } from '@wix/dev-center-client';\nimport { isType } from 'variant';\nimport type { OnLog } from './logsReqHandler.js';\nimport { LOGS_ENDPOINT, logsReqHandler } from './logsReqHandler.js';\n\nconst deploymentIdRegex = /([0-9a-f-]{36})/;\n\nexport const useLogsServer = ({\n onLog,\n version,\n appId,\n}: {\n onLog: OnLog;\n version: string;\n appId: string;\n}) => {\n const { reportError } = useErrorReporter();\n const { getAppByVersion } = useDevCenterClient();\n const createTunnelClient = useTunnel();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const localServerPortResolverRef = useRef<(port: number) => void>();\n\n const server = useMemo(() => {\n return createServer((req, res) => {\n logsReqHandler(req, res)\n .onLog(onLog)\n .onError((code, err, info) => {\n server.close();\n throw new CliError({ code, cause: err, info });\n });\n });\n }, [onLog]);\n\n const localServerPortPromise = useMemo(() => {\n return new Promise<number>((resolve) => {\n localServerPortResolverRef.current = resolve;\n });\n }, []);\n\n useEffect(() => {\n server.listen(0, async () => {\n const port = (server.address() as AddressInfo).port;\n localServerPortResolverRef.current?.(port);\n });\n return () => {\n if (server.listening) {\n server.close();\n }\n };\n }, [server]);\n\n const { status } = useAsync(async () => {\n const localServerPort = await localServerPortPromise;\n const { url: tunnelUrl } = await createTunnelClient(localServerPort);\n const { data } = await getAppByVersion({ appId, version });\n\n const topologyComponent = data.components.find(\n (component): component is TopologyComponent => {\n return component.compType === ComponentType.TOPOLOGY;\n }\n );\n const match = deploymentIdRegex.exec(\n topologyComponent?.compData.topology.topology.backendApiUrl ?? ''\n );\n\n if (!match?.[1]) {\n throw new CliError({\n code: CliErrorCode.FailedToGetLogsTopology(),\n });\n }\n const deploymentId = match[1];\n\n const loggerReq = {\n appId,\n deploymentId,\n destinationUrl: new URL(LOGS_ENDPOINT, tunnelUrl).href,\n };\n\n try {\n await httpClient.request(attachLogger(loggerReq));\n } catch (error) {\n server.close();\n throw new CliError({\n code: CliErrorCode.FailedToConnectToLogsService(),\n cause: error,\n });\n }\n\n return deploymentId;\n }, []);\n\n useEffect(() => {\n // Logs should be deattached only on unmount.\n // This is why this `useEffect` has only `return` statement.\n return () => {\n if (isType(status, 'Success')) {\n httpClient\n .request(\n deattachLogger({\n appId,\n deploymentId: status.result,\n })\n )\n .catch(reportError);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return status;\n};\n","import type { IncomingMessage, ServerResponse } from 'node:http';\nimport type { CliErrorCodeType } from '@wix/cli-error';\nimport { CliErrorCode } from '@wix/cli-error';\nimport { z } from 'zod';\nimport { variant, fields, match } from 'variant';\nimport type { VariantOf } from 'variant';\n\nconst LogMessageSchema = z.any();\nexport type LogMessage = z.infer<typeof LogMessageSchema>;\n\nconst LogMessageLevelSchema = z.enum(['info', 'error', 'warn', 'debug', 'log']);\nexport type LogMessageLevel = z.infer<typeof LogMessageLevelSchema>;\n\nconst LogItemSchema = z.object({\n message: z.array(LogMessageSchema),\n level: LogMessageLevelSchema,\n timestamp: z.number(),\n});\n\ntype LogItem = z.infer<typeof LogItemSchema>;\n\nconst ExceptionItemSchema = z.object({\n stack: z.string(),\n name: z.string(),\n message: z.string(),\n timestamp: z.number(),\n});\n\ntype ExceptionItem = z.infer<typeof ExceptionItemSchema>;\n\nconst LogResponseSchema = z\n .object({\n _type: z.literal('log'),\n exceptions: z.array(ExceptionItemSchema),\n logs: z.array(LogItemSchema),\n })\n .passthrough();\n\nconst SessionTimeoutResponseSchema = z\n .object({\n _type: z.literal('session-timeout'),\n })\n .passthrough();\n\nconst ServerLogResponseSchema = z.discriminatedUnion('_type', [\n LogResponseSchema,\n SessionTimeoutResponseSchema,\n]);\n\ntype ServerLogResponse = z.infer<typeof ServerLogResponseSchema>;\n\nconst AggregatedLog = variant({\n Log: fields<LogItem>(),\n Exception: fields<ExceptionItem>(),\n});\nexport type AggregatedLog = VariantOf<typeof AggregatedLog>;\n\nexport type OnLog = (data: AggregatedLog[]) => void;\nexport type OnError = (\n errType: CliErrorCodeType,\n err: unknown,\n info?: Record<string, unknown>\n) => void;\n\nexport const LOGS_ENDPOINT = '/logs';\n\nexport const logsReqHandler = (req: IncomingMessage, res: ServerResponse) => {\n let onLog: OnLog;\n let onError: OnError;\n\n if (req.method === 'POST' && req.url === LOGS_ENDPOINT) {\n let body = '';\n\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n\n req.on('end', () => {\n let parsedBody: ServerLogResponse;\n try {\n parsedBody = ServerLogResponseSchema.parse(JSON.parse(body));\n } catch (err) {\n onError(CliErrorCode.FailedToParseLog(), err, { body });\n res.statusCode = 400;\n return res.end();\n }\n\n const resultLogs: AggregatedLog[] = [];\n\n if (parsedBody._type === 'log') {\n resultLogs.push(\n ...parsedBody.exceptions.map((exception) =>\n AggregatedLog.Exception(exception)\n )\n );\n resultLogs.push(\n ...parsedBody.logs.map((log) => AggregatedLog.Log(log))\n );\n }\n\n match(parsedBody._type, {\n log: () => {\n onLog(resultLogs);\n },\n 'session-timeout': () => {\n res.statusCode = 200;\n res.end();\n\n onError(CliErrorCode.LogsConnectionTimeout(), {}, { body });\n },\n });\n\n res.statusCode = 200;\n res.end();\n });\n } else {\n res.statusCode = 404;\n res.end('Not Found');\n }\n\n const api = {\n onLog: (callback: OnLog) => {\n onLog = callback;\n return api;\n },\n onError: (callback: OnError) => {\n onError = callback;\n return api;\n },\n };\n\n return api;\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Text } from '@wix/cli-ui-kit';\nimport type { LogMessage, LogMessageLevel } from './logsReqHandler.js';\n\nexport const ServerLogMessage: FC<{\n message: LogMessage;\n level: LogMessageLevel;\n}> = ({ message, level }) => {\n let content = 'unknown';\n\n if (typeof message === 'object') {\n content = JSON.stringify(message);\n } else {\n content = String(message);\n }\n\n return <Text skin={level === 'error' ? 'error' : 'standard'}>{content}</Text>;\n};\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","createServer","import_variant","init_esm_shims","import_variant","LogMessageSchema","z","LogMessageLevelSchema","LogItemSchema","ExceptionItemSchema","LogResponseSchema","SessionTimeoutResponseSchema","ServerLogResponseSchema","AggregatedLog","LOGS_ENDPOINT","logsReqHandler","req","res","onLog","onError","body","chunk","parsedBody","err","CliErrorCode","resultLogs","exception","log","api","callback","deploymentIdRegex","useLogsServer","onLog","version","appId","reportError","useErrorReporter","getAppByVersion","useDevCenterClient","createTunnelClient","useTunnel","httpClient","useHttpClient","localServerPortResolverRef","server","createServer","req","res","logsReqHandler","code","err","info","CliError","localServerPortPromise","resolve","port","status","useAsync","localServerPort","tunnelUrl","data","topologyComponent","component","ComponentType","match","CliErrorCode","deploymentId","loggerReq","LOGS_ENDPOINT","attachLogger","error","deattachLogger","init_esm_shims","import_react","ServerLogMessage","message","level","content","React","Text","DisplayServerLogs","version","appId","t","useTranslation","logs","setLogs","serverResult","useLogsServer","serverLogs","prevLogs","React","Box_default","Text","Trans","log","logIdx","message","level","msgItem","idx","ServerLogMessage","stack","Spinner","ValidationResult","validateInput","version","React","Trans","LogsCommand","model","useProjectModel","validationResult","DisplayServerLogs","message","Box_default","Text"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/LogsCommand/index.ts","../src/components/LogsCommand/LogsCommand.tsx","../src/components/LogsCommand/DisplayServerLogs.tsx","../src/components/LogsCommand/useLogsServer.ts","../src/components/LogsCommand/logsReqHandler.ts","../src/components/LogsCommand/ServerLogMessage.tsx"],"sourcesContent":["export { LogsCommand } from './LogsCommand.js';\n","import type { FC } from 'react';\nimport React, { useMemo } from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { Box, Text } from '@wix/cli-ui-kit';\nimport { fields, match, variant } from 'variant';\nimport { DisplayServerLogs } from './DisplayServerLogs.js';\nimport { useProjectModel } from '../../model.js';\n\nconst ValidationResult = variant({\n Valid: fields<{ version: string }>(),\n Error: fields<{ message: React.JSX.Element }>(),\n});\n\nconst validateInput = ({ version }: { version?: string }) => {\n if (!version) {\n return ValidationResult.Error({\n message: <Trans i18nKey=\"logs_command.logs_without_version\" />,\n });\n }\n return ValidationResult.Valid({ version });\n};\n\nexport const LogsCommand: FC<{\n version?: string;\n}> = ({ version }) => {\n const { model } = useProjectModel();\n\n const validationResult = useMemo(() => validateInput({ version }), [version]);\n\n return match(validationResult, {\n Valid: ({ version }) => (\n <DisplayServerLogs version={version} appId={model.config.appId} />\n ),\n Error: ({ message }) => (\n <Box rowGap={1} marginTop={1} marginBottom={1} flexDirection=\"column\">\n <Box gap={1}>\n <Text skin=\"error\">{message}</Text>\n </Box>\n </Box>\n ),\n });\n};\n","import type { FC } from 'react';\nimport React, { useState, useCallback } from 'react';\nimport { match } from 'variant';\nimport { Spinner, Box, Text } from '@wix/cli-ui-kit';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { useLogsServer } from './useLogsServer.js';\nimport type { AggregatedLog } from './logsReqHandler.js';\nimport { ServerLogMessage } from './ServerLogMessage.js';\n\nexport const DisplayServerLogs: FC<{\n version: string;\n appId: string;\n}> = ({ version, appId }) => {\n const { t } = useTranslation();\n const [logs, setLogs] = useState<AggregatedLog[]>([]);\n const serverResult = useLogsServer({\n appId,\n version,\n onLog: useCallback(\n (serverLogs) => {\n setLogs((prevLogs) => {\n return [...prevLogs, ...serverLogs];\n });\n },\n [setLogs]\n ),\n });\n\n return match(serverResult, {\n Success: () => (\n <Box marginTop={1} marginBottom={1} flexDirection=\"column\">\n <Box marginBottom={1} flexDirection=\"column\">\n <Text>\n <Trans i18nKey=\"logs_command.listening_to_logs\" />\n </Text>\n <Text>\n <Trans i18nKey=\"logs_command.prod_env_logs\" values={{ version }} />\n </Text>\n </Box>\n\n {logs.map((log, logIdx) => (\n <Box key={logIdx} flexDirection=\"column\">\n <Box columnGap={1}>\n <Box flexShrink={0}>\n <Text skin=\"secondary\">\n {new Date(log.timestamp).toLocaleTimeString()}\n </Text>\n </Box>\n <Box columnGap={1}>\n {match(log, {\n Log: ({ message, level }) =>\n message.map((msgItem, idx) => (\n <ServerLogMessage\n key={`${logIdx}-${idx}`}\n message={msgItem}\n level={level}\n />\n )),\n Exception: ({ message }) => (\n <ServerLogMessage\n key={logIdx}\n message={message}\n level=\"error\"\n />\n ),\n })}\n </Box>\n </Box>\n {match(log, {\n Log: () => null,\n Exception: ({ stack }) => <Text skin=\"error\">{stack}</Text>,\n })}\n </Box>\n ))}\n </Box>\n ),\n Loading: () => <Spinner text={t('logs_command.connecting')} />,\n Error: () => null,\n });\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { createServer } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { useAsync } from '@wix/cli-ui-kit';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport {\n attachLogger,\n deattachLogger,\n} from '@wix/ambassador-ctp-app-cloud-backend-service-v1-app-cloud-backend-deployment/http';\nimport { useTunnel } from '@wix/cli-tunnel';\nimport { useDevCenterClient, ComponentType } from '@wix/dev-center-client';\nimport type { TopologyComponent } from '@wix/dev-center-client';\nimport { isType } from 'variant';\nimport type { OnLog } from './logsReqHandler.js';\nimport { LOGS_ENDPOINT, logsReqHandler } from './logsReqHandler.js';\n\nconst deploymentIdRegex = /([0-9a-f-]{36})/;\n\nexport const useLogsServer = ({\n onLog,\n version,\n appId,\n}: {\n onLog: OnLog;\n version: string;\n appId: string;\n}) => {\n const { reportError } = useErrorReporter();\n const { getAppByVersion } = useDevCenterClient();\n const createTunnelClient = useTunnel();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const localServerPortResolverRef = useRef<(port: number) => void>();\n\n const server = useMemo(() => {\n return createServer((req, res) => {\n logsReqHandler(req, res)\n .onLog(onLog)\n .onError((code, err, info) => {\n server.close();\n throw new CliError({ code, cause: err, info });\n });\n });\n }, [onLog]);\n\n const localServerPortPromise = useMemo(() => {\n return new Promise<number>((resolve) => {\n localServerPortResolverRef.current = resolve;\n });\n }, []);\n\n useEffect(() => {\n server.listen(0, async () => {\n const port = (server.address() as AddressInfo).port;\n localServerPortResolverRef.current?.(port);\n });\n return () => {\n if (server.listening) {\n server.close();\n }\n };\n }, [server]);\n\n const { status } = useAsync(async () => {\n const localServerPort = await localServerPortPromise;\n const { url: tunnelUrl } = await createTunnelClient(localServerPort);\n const { data } = await getAppByVersion({ appId, version });\n\n const topologyComponent = data.components.find(\n (component): component is TopologyComponent => {\n return component.compType === ComponentType.TOPOLOGY;\n }\n );\n const match = deploymentIdRegex.exec(\n topologyComponent?.compData.topology.topology.backendApiUrl ?? ''\n );\n\n if (!match?.[1]) {\n throw new CliError({\n code: CliErrorCode.FailedToGetLogsTopology(),\n });\n }\n const deploymentId = match[1];\n\n const loggerReq = {\n appId,\n deploymentId,\n destinationUrl: new URL(LOGS_ENDPOINT, tunnelUrl).href,\n };\n\n try {\n await httpClient.request(attachLogger(loggerReq));\n } catch (error) {\n server.close();\n throw new CliError({\n code: CliErrorCode.FailedToConnectToLogsService(),\n cause: error,\n });\n }\n\n return deploymentId;\n }, []);\n\n useEffect(() => {\n // Logs should be deattached only on unmount.\n // This is why this `useEffect` has only `return` statement.\n return () => {\n if (isType(status, 'Success')) {\n httpClient\n .request(\n deattachLogger({\n appId,\n deploymentId: status.result,\n })\n )\n .catch(reportError);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return status;\n};\n","import type { IncomingMessage, ServerResponse } from 'node:http';\nimport type { CliErrorCodeType } from '@wix/cli-error';\nimport { CliErrorCode } from '@wix/cli-error';\nimport { z } from 'zod';\nimport { variant, fields, match } from 'variant';\nimport type { VariantOf } from 'variant';\n\nconst LogMessageSchema = z.any();\nexport type LogMessage = z.infer<typeof LogMessageSchema>;\n\nconst LogMessageLevelSchema = z.enum(['info', 'error', 'warn', 'debug', 'log']);\nexport type LogMessageLevel = z.infer<typeof LogMessageLevelSchema>;\n\nconst LogItemSchema = z.object({\n message: z.array(LogMessageSchema),\n level: LogMessageLevelSchema,\n timestamp: z.number(),\n});\n\ntype LogItem = z.infer<typeof LogItemSchema>;\n\nconst ExceptionItemSchema = z.object({\n stack: z.string(),\n name: z.string(),\n message: z.string(),\n timestamp: z.number(),\n});\n\ntype ExceptionItem = z.infer<typeof ExceptionItemSchema>;\n\nconst LogResponseSchema = z\n .object({\n _type: z.literal('log'),\n exceptions: z.array(ExceptionItemSchema),\n logs: z.array(LogItemSchema),\n })\n .passthrough();\n\nconst SessionTimeoutResponseSchema = z\n .object({\n _type: z.literal('session-timeout'),\n })\n .passthrough();\n\nconst ServerLogResponseSchema = z.discriminatedUnion('_type', [\n LogResponseSchema,\n SessionTimeoutResponseSchema,\n]);\n\ntype ServerLogResponse = z.infer<typeof ServerLogResponseSchema>;\n\nconst AggregatedLog = variant({\n Log: fields<LogItem>(),\n Exception: fields<ExceptionItem>(),\n});\nexport type AggregatedLog = VariantOf<typeof AggregatedLog>;\n\nexport type OnLog = (data: AggregatedLog[]) => void;\ntype OnError = (\n errType: CliErrorCodeType,\n err: unknown,\n info?: Record<string, unknown>\n) => void;\n\nexport const LOGS_ENDPOINT = '/logs';\n\nexport const logsReqHandler = (req: IncomingMessage, res: ServerResponse) => {\n let onLog: OnLog;\n let onError: OnError;\n\n if (req.method === 'POST' && req.url === LOGS_ENDPOINT) {\n let body = '';\n\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n\n req.on('end', () => {\n let parsedBody: ServerLogResponse;\n try {\n parsedBody = ServerLogResponseSchema.parse(JSON.parse(body));\n } catch (err) {\n onError(CliErrorCode.FailedToParseLog(), err, { body });\n res.statusCode = 400;\n return res.end();\n }\n\n const resultLogs: AggregatedLog[] = [];\n\n if (parsedBody._type === 'log') {\n resultLogs.push(\n ...parsedBody.exceptions.map((exception) =>\n AggregatedLog.Exception(exception)\n )\n );\n resultLogs.push(\n ...parsedBody.logs.map((log) => AggregatedLog.Log(log))\n );\n }\n\n match(parsedBody._type, {\n log: () => {\n onLog(resultLogs);\n },\n 'session-timeout': () => {\n res.statusCode = 200;\n res.end();\n\n onError(CliErrorCode.LogsConnectionTimeout(), {}, { body });\n },\n });\n\n res.statusCode = 200;\n res.end();\n });\n } else {\n res.statusCode = 404;\n res.end('Not Found');\n }\n\n const api = {\n onLog: (callback: OnLog) => {\n onLog = callback;\n return api;\n },\n onError: (callback: OnError) => {\n onError = callback;\n return api;\n },\n };\n\n return api;\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Text } from '@wix/cli-ui-kit';\nimport type { LogMessage, LogMessageLevel } from './logsReqHandler.js';\n\nexport const ServerLogMessage: FC<{\n message: LogMessage;\n level: LogMessageLevel;\n}> = ({ message, level }) => {\n let content = 'unknown';\n\n if (typeof message === 'object') {\n content = JSON.stringify(message);\n } else {\n content = String(message);\n }\n\n return <Text skin={level === 'error' ? 'error' : 'standard'}>{content}</Text>;\n};\n"],"mappings":";;6RAAAA,ICAAC,IACA,IAAAC,EAA+B,SAG/B,IAAAC,EAAuC,SCJvCC,IACA,IAAAC,EAA6C,SAC7CC,EAAsB,SCFtBC,IAAA,IAAAC,EAA2C,SAC3C,OAAS,gBAAAC,OAAoB,YAa7B,IAAAC,EAAuB,SCdvBC,IAIA,IAAAC,EAAuC,SAGjCC,GAAmBC,EAAE,IAAI,EAGzBC,GAAwBD,EAAE,KAAK,CAAC,OAAQ,QAAS,OAAQ,QAAS,KAAK,CAAC,EAGxEE,GAAgBF,EAAE,OAAO,CAC7B,QAASA,EAAE,MAAMD,EAAgB,EACjC,MAAOE,GACP,UAAWD,EAAE,OAAO,CACtB,CAAC,EAIKG,GAAsBH,EAAE,OAAO,CACnC,MAAOA,EAAE,OAAO,EAChB,KAAMA,EAAE,OAAO,EACf,QAASA,EAAE,OAAO,EAClB,UAAWA,EAAE,OAAO,CACtB,CAAC,EAIKI,GAAoBJ,EACvB,OAAO,CACN,MAAOA,EAAE,QAAQ,KAAK,EACtB,WAAYA,EAAE,MAAMG,EAAmB,EACvC,KAAMH,EAAE,MAAME,EAAa,CAC7B,CAAC,EACA,YAAY,EAETG,GAA+BL,EAClC,OAAO,CACN,MAAOA,EAAE,QAAQ,iBAAiB,CACpC,CAAC,EACA,YAAY,EAETM,GAA0BN,EAAE,mBAAmB,QAAS,CAC5DI,GACAC,EACF,CAAC,EAIKE,KAAgB,WAAQ,CAC5B,OAAK,UAAgB,EACrB,aAAW,UAAsB,CACnC,CAAC,EAUYC,EAAgB,QAEhBC,EAAiB,CAACC,EAAsBC,IAAwB,CAC3E,IAAIC,EACAC,EAEJ,GAAIH,EAAI,SAAW,QAAUA,EAAI,MAAQF,EAAe,CACtD,IAAIM,EAAO,GAEXJ,EAAI,GAAG,OAASK,GAAU,CACxBD,GAAQC,EAAM,SAAS,CACzB,CAAC,EAEDL,EAAI,GAAG,MAAO,IAAM,CAClB,IAAIM,EACJ,GAAI,CACFA,EAAaV,GAAwB,MAAM,KAAK,MAAMQ,CAAI,CAAC,CAC7D,OAASG,EAAK,CACZ,OAAAJ,EAAQK,EAAa,iBAAiB,EAAGD,EAAK,CAAE,KAAAH,CAAK,CAAC,EACtDH,EAAI,WAAa,IACVA,EAAI,IAAI,CACjB,CAEA,IAAMQ,EAA8B,CAAC,EAEjCH,EAAW,QAAU,QACvBG,EAAW,KACT,GAAGH,EAAW,WAAW,IAAKI,GAC5Bb,EAAc,UAAUa,CAAS,CACnC,CACF,EACAD,EAAW,KACT,GAAGH,EAAW,KAAK,IAAKK,GAAQd,EAAc,IAAIc,CAAG,CAAC,CACxD,MAGF,SAAML,EAAW,MAAO,CACtB,IAAK,IAAM,CACTJ,EAAMO,CAAU,CAClB,EACA,kBAAmB,IAAM,CACvBR,EAAI,WAAa,IACjBA,EAAI,IAAI,EAERE,EAAQK,EAAa,sBAAsB,EAAG,CAAC,EAAG,CAAE,KAAAJ,CAAK,CAAC,CAC5D,CACF,CAAC,EAEDH,EAAI,WAAa,IACjBA,EAAI,IAAI,CACV,CAAC,CACH,MACEA,EAAI,WAAa,IACjBA,EAAI,IAAI,WAAW,EAGrB,IAAMW,EAAM,CACV,MAAQC,IACNX,EAAQW,EACDD,GAET,QAAUC,IACRV,EAAUU,EACHD,EAEX,EAEA,OAAOA,CACT,EDlHA,IAAME,GAAoB,kBAEbC,EAAgB,CAAC,CAC5B,MAAAC,EACA,QAAAC,EACA,MAAAC,CACF,IAIM,CACJ,GAAM,CAAE,YAAAC,CAAY,EAAIC,EAAiB,EACnC,CAAE,gBAAAC,CAAgB,EAAIC,EAAmB,EACzCC,EAAqBC,EAAU,EAC/BC,EAAaC,EAAc,CAAE,KAAM,YAAa,CAAC,EACjDC,KAA6B,UAA+B,EAE5DC,KAAS,WAAQ,IACdC,GAAa,CAACC,EAAKC,IAAQ,CAChCC,EAAeF,EAAKC,CAAG,EACpB,MAAMf,CAAK,EACX,QAAQ,CAACiB,EAAMC,EAAKC,IAAS,CAC5B,MAAAP,EAAO,MAAM,EACP,IAAIQ,EAAS,CAAE,KAAAH,EAAM,MAAOC,EAAK,KAAAC,CAAK,CAAC,CAC/C,CAAC,CACL,CAAC,EACA,CAACnB,CAAK,CAAC,EAEJqB,KAAyB,WAAQ,IAC9B,IAAI,QAAiBC,GAAY,CACtCX,EAA2B,QAAUW,CACvC,CAAC,EACA,CAAC,CAAC,KAEL,aAAU,KACRV,EAAO,OAAO,EAAG,SAAY,CAC3B,IAAMW,EAAQX,EAAO,QAAQ,EAAkB,KAC/CD,EAA2B,UAAUY,CAAI,CAC3C,CAAC,EACM,IAAM,CACPX,EAAO,WACTA,EAAO,MAAM,CAEjB,GACC,CAACA,CAAM,CAAC,EAEX,GAAM,CAAE,OAAAY,CAAO,EAAIC,EAAS,SAAY,CACtC,IAAMC,EAAkB,MAAML,EACxB,CAAE,IAAKM,CAAU,EAAI,MAAMpB,EAAmBmB,CAAe,EAC7D,CAAE,KAAAE,CAAK,EAAI,MAAMvB,EAAgB,CAAE,MAAAH,EAAO,QAAAD,CAAQ,CAAC,EAEnD4B,EAAoBD,EAAK,WAAW,KACvCE,GACQA,EAAU,WAAaC,EAAc,QAEhD,EACMC,EAAQlC,GAAkB,KAC9B+B,GAAmB,SAAS,SAAS,SAAS,eAAiB,EACjE,EAEA,GAAI,CAACG,IAAQ,CAAC,EACZ,MAAM,IAAIZ,EAAS,CACjB,KAAMa,EAAa,wBAAwB,CAC7C,CAAC,EAEH,IAAMC,EAAeF,EAAM,CAAC,EAEtBG,GAAY,CAChB,MAAAjC,EACA,aAAAgC,EACA,eAAgB,IAAI,IAAIE,EAAeT,CAAS,EAAE,IACpD,EAEA,GAAI,CACF,MAAMlB,EAAW,QAAQ4B,EAAaF,EAAS,CAAC,CAClD,OAASG,EAAO,CACd,MAAA1B,EAAO,MAAM,EACP,IAAIQ,EAAS,CACjB,KAAMa,EAAa,6BAA6B,EAChD,MAAOK,CACT,CAAC,CACH,CAEA,OAAOJ,CACT,EAAG,CAAC,CAAC,EAEL,sBAAU,IAGD,IAAM,IACP,UAAOV,EAAQ,SAAS,GAC1Bf,EACG,QACC8B,EAAe,CACb,MAAArC,EACA,aAAcsB,EAAO,MACvB,CAAC,CACH,EACC,MAAMrB,CAAW,CAExB,EAEC,CAAC,CAAC,EAEEqB,CACT,EE3HAgB,IAAA,IAAAC,EAAkB,SAKX,IAAMC,EAGR,CAAC,CAAE,QAAAC,EAAS,MAAAC,CAAM,IAAM,CAC3B,IAAIC,EAAU,UAEd,OAAI,OAAOF,GAAY,SACrBE,EAAU,KAAK,UAAUF,CAAO,EAEhCE,EAAU,OAAOF,CAAO,EAGnB,EAAAG,QAAA,cAACC,EAAA,CAAK,KAAMH,IAAU,QAAU,QAAU,YAAaC,CAAQ,CACxE,EHTO,IAAMG,GAGR,CAAC,CAAE,QAAAC,EAAS,MAAAC,CAAM,IAAM,CAC3B,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvB,CAACC,EAAMC,CAAO,KAAI,YAA0B,CAAC,CAAC,EAC9CC,EAAeC,EAAc,CACjC,MAAAN,EACA,QAAAD,EACA,SAAO,eACJQ,GAAe,CACdH,EAASI,GACA,CAAC,GAAGA,EAAU,GAAGD,CAAU,CACnC,CACH,EACA,CAACH,CAAO,CACV,CACF,CAAC,EAED,SAAO,SAAMC,EAAc,CACzB,QAAS,IACP,EAAAI,QAAA,cAACC,EAAA,CAAI,UAAW,EAAG,aAAc,EAAG,cAAc,UAChD,EAAAD,QAAA,cAACC,EAAA,CAAI,aAAc,EAAG,cAAc,UAClC,EAAAD,QAAA,cAACE,EAAA,KACC,EAAAF,QAAA,cAACG,EAAA,CAAM,QAAQ,iCAAiC,CAClD,EACA,EAAAH,QAAA,cAACE,EAAA,KACC,EAAAF,QAAA,cAACG,EAAA,CAAM,QAAQ,6BAA6B,OAAQ,CAAE,QAAAb,CAAQ,EAAG,CACnE,CACF,EAECI,EAAK,IAAI,CAACU,EAAKC,IACd,EAAAL,QAAA,cAACC,EAAA,CAAI,IAAKI,EAAQ,cAAc,UAC9B,EAAAL,QAAA,cAACC,EAAA,CAAI,UAAW,GACd,EAAAD,QAAA,cAACC,EAAA,CAAI,WAAY,GACf,EAAAD,QAAA,cAACE,EAAA,CAAK,KAAK,aACR,IAAI,KAAKE,EAAI,SAAS,EAAE,mBAAmB,CAC9C,CACF,EACA,EAAAJ,QAAA,cAACC,EAAA,CAAI,UAAW,MACb,SAAMG,EAAK,CACV,IAAK,CAAC,CAAE,QAAAE,EAAS,MAAAC,CAAM,IACrBD,EAAQ,IAAI,CAACE,EAASC,IACpB,EAAAT,QAAA,cAACU,EAAA,CACC,IAAK,GAAGL,CAAM,IAAII,CAAG,GACrB,QAASD,EACT,MAAOD,EACT,CACD,EACH,UAAW,CAAC,CAAE,QAAAD,CAAQ,IACpB,EAAAN,QAAA,cAACU,EAAA,CACC,IAAKL,EACL,QAASC,EACT,MAAM,QACR,CAEJ,CAAC,CACH,CACF,KACC,SAAMF,EAAK,CACV,IAAK,IAAM,KACX,UAAW,CAAC,CAAE,MAAAO,CAAM,IAAM,EAAAX,QAAA,cAACE,EAAA,CAAK,KAAK,SAASS,CAAM,CACtD,CAAC,CACH,CACD,CACH,EAEF,QAAS,IAAM,EAAAX,QAAA,cAACY,EAAA,CAAQ,KAAMpB,EAAE,yBAAyB,EAAG,EAC5D,MAAO,IAAM,IACf,CAAC,CACH,EDvEA,IAAMqB,MAAmB,WAAQ,CAC/B,SAAO,UAA4B,EACnC,SAAO,UAAuC,CAChD,CAAC,EAEKC,GAAgB,CAAC,CAAE,QAAAC,CAAQ,IAC1BA,EAKEF,GAAiB,MAAM,CAAE,QAAAE,CAAQ,CAAC,EAJhCF,GAAiB,MAAM,CAC5B,QAAS,EAAAG,QAAA,cAACC,EAAA,CAAM,QAAQ,oCAAoC,CAC9D,CAAC,EAKQC,GAER,CAAC,CAAE,QAAAH,CAAQ,IAAM,CACpB,GAAM,CAAE,MAAAI,CAAM,EAAIC,EAAgB,EAE5BC,KAAmB,WAAQ,IAAMP,GAAc,CAAE,QAAAC,CAAQ,CAAC,EAAG,CAACA,CAAO,CAAC,EAE5E,SAAO,SAAMM,EAAkB,CAC7B,MAAO,CAAC,CAAE,QAAAN,CAAQ,IAChB,EAAAC,QAAA,cAACM,GAAA,CAAkB,QAASP,EAAS,MAAOI,EAAM,OAAO,MAAO,EAElE,MAAO,CAAC,CAAE,QAAAI,CAAQ,IAChB,EAAAP,QAAA,cAACQ,EAAA,CAAI,OAAQ,EAAG,UAAW,EAAG,aAAc,EAAG,cAAc,UAC3D,EAAAR,QAAA,cAACQ,EAAA,CAAI,IAAK,GACR,EAAAR,QAAA,cAACS,EAAA,CAAK,KAAK,SAASF,CAAQ,CAC9B,CACF,CAEJ,CAAC,CACH","names":["init_esm_shims","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","createServer","import_variant","init_esm_shims","import_variant","LogMessageSchema","z","LogMessageLevelSchema","LogItemSchema","ExceptionItemSchema","LogResponseSchema","SessionTimeoutResponseSchema","ServerLogResponseSchema","AggregatedLog","LOGS_ENDPOINT","logsReqHandler","req","res","onLog","onError","body","chunk","parsedBody","err","CliErrorCode","resultLogs","exception","log","api","callback","deploymentIdRegex","useLogsServer","onLog","version","appId","reportError","useErrorReporter","getAppByVersion","useDevCenterClient","createTunnelClient","useTunnel","httpClient","useHttpClient","localServerPortResolverRef","server","createServer","req","res","logsReqHandler","code","err","info","CliError","localServerPortPromise","resolve","port","status","useAsync","localServerPort","tunnelUrl","data","topologyComponent","component","ComponentType","match","CliErrorCode","deploymentId","loggerReq","LOGS_ENDPOINT","attachLogger","error","deattachLogger","init_esm_shims","import_react","ServerLogMessage","message","level","content","React","Text","DisplayServerLogs","version","appId","t","useTranslation","logs","setLogs","serverResult","useLogsServer","serverLogs","prevLogs","React","Box_default","Text","Trans","log","logIdx","message","level","msgItem","idx","ServerLogMessage","stack","Spinner","ValidationResult","validateInput","version","React","Trans","LogsCommand","model","useProjectModel","validationResult","DisplayServerLogs","message","Box_default","Text"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as _createRequire } from 'node:module';
|
|
2
|
+
const require = _createRequire(import.meta.url);
|
|
3
|
+
import{a}from"./chunk-6BLEHX5K.js";import"./chunk-PEJD3OIS.js";import"./chunk-ZQFCJI4E.js";import"./chunk-H74SYNT4.js";import"./chunk-MODHWP6L.js";import"./chunk-QMOS67SX.js";import"./chunk-ILQJ7I7Z.js";import"./chunk-HQEJV2QG.js";import"./chunk-YMNBETM3.js";import"./chunk-PKXR47PB.js";import"./chunk-YUI4ZVE3.js";import"./chunk-WC5HJ7VI.js";import"./chunk-V4TR6DCM.js";export{a as PreviewCommand};
|
|
4
|
+
//# sourceMappingURL=PreviewCommand-YJRKOQVQ.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as _createRequire } from 'node:module';
|
|
2
2
|
const require = _createRequire(import.meta.url);
|
|
3
|
-
import{a as D,b as L}from"./chunk-
|
|
4
|
-
//# sourceMappingURL=ServeCommand-
|
|
3
|
+
import{a as D,b as L}from"./chunk-PEJD3OIS.js";import{b as U,c as K,d as N}from"./chunk-ZQFCJI4E.js";import"./chunk-MODHWP6L.js";import"./chunk-QMOS67SX.js";import{a as F,b as h}from"./chunk-CIOJVLBW.js";import{b as j}from"./chunk-HQEJV2QG.js";import{g as b,h as k,j as f,k as V}from"./chunk-YMNBETM3.js";import{b as M}from"./chunk-PKXR47PB.js";import{qb as c}from"./chunk-YUI4ZVE3.js";import{A as E,B as I,C as y,E as B,O as T,P as _,S as O,W as a,X as A,b as d,c as R,x as i}from"./chunk-WC5HJ7VI.js";import{e as s,h as o}from"./chunk-V4TR6DCM.js";o();o();var S=s(d(),1);o();var n=s(d(),1),q=s(R(),1);o();var m=s(d(),1);import{preview as ee}from"vite";function W(){let t=(0,m.useRef)(),{model:r}=c();return(0,m.useEffect)(()=>()=>{t.current?.httpServer.close()},[]),(0,m.useCallback)(async()=>{let v=await ee(await h(r,{type:"build"}));return t.current=v,F(v)},[r])}var z=(0,n.createContext)(null),g=({children:t})=>{let{model:r}=c(),{t:v}=A(),{site:H}=f(),J=b(),{createOverride:Q}=K(),X=W(),{status:Y}=O(async()=>{await D(r.projectFolder);let p=await X(),x=await j(r.projectFolder),P=M(x,p),Z=await J.createAppRelease(P,r.config.projectId),C=N(r),{id:$}=C?await Q({appId:r.config.appId,siteId:H.id,overrides:C}):await Promise.resolve({id:void 0});return{armTag:Z,serverUrl:p,siteOverrideId:$}},[]);return(0,q.match)(Y,{Error:()=>null,Loading:()=>n.default.createElement(_,{text:v("serve_command.starting_serve_environment")}),Success:({result:{armTag:p,serverUrl:x,siteOverrideId:P}})=>n.default.createElement(z.Provider,{value:{serverUrl:x}},n.default.createElement(V,{siteOverrideId:P},n.default.createElement(k,{armTag:p},t)))})};function w(){let t=(0,n.useContext)(z);if(t===null)throw new Error("useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>");return t}o();var e=s(d(),1);function G(){let{site:t}=f(),{serverUrl:r}=w();return e.default.createElement(i,{flexDirection:"column"},e.default.createElement(i,{gap:1},e.default.createElement(E,{skin:"success"},e.default.createElement(B,null)),e.default.createElement(a,{i18nKey:"serve_command.starting_serve_environment_success",components:[e.default.createElement(T,{url:r})]})),e.default.createElement(i,{gap:1},e.default.createElement(I,null),e.default.createElement(a,{i18nKey:"serve_command.production_build"})),e.default.createElement(i,{gap:1,paddingTop:1,paddingBottom:1},e.default.createElement(y,null),e.default.createElement(a,{i18nKey:"general.dev_site.current",values:{name:t.displayName}})),e.default.createElement(i,{paddingBottom:1,flexDirection:"column"},e.default.createElement(L,null)))}var re=()=>S.default.createElement(U,null,S.default.createElement(g,null,S.default.createElement(G,null)));export{re as ServeCommand,g as ServeEnvironmentProvider,w as useServeEnvironment};
|
|
4
|
+
//# sourceMappingURL=ServeCommand-UVSCCNNJ.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as _createRequire } from 'node:module';
|
|
2
2
|
const require = _createRequire(import.meta.url);
|
|
3
|
-
import{a as s,c as u,d as f}from"./chunk-
|
|
4
|
-
//# sourceMappingURL=build-
|
|
3
|
+
import{a as s,c as u,d as f}from"./chunk-3UO7SKSO.js";import{b as m,c as d}from"./chunk-CIOJVLBW.js";import{a as l}from"./chunk-HQEJV2QG.js";import"./chunk-PKXR47PB.js";import{Ya as c,ob as a,xa as i}from"./chunk-YUI4ZVE3.js";import{c as E,e as t,f as n}from"./chunk-WC5HJ7VI.js";import{e as g,h as p}from"./chunk-V4TR6DCM.js";p();import{cwd as b}from"node:process";import{build as w}from"vite";var r=g(E(),1);async function M(){let o=await a(b());if(o.components.length===0)throw new t({code:n.NoExtensionsFound()});s(o.components);let C=o.components.filter(e=>(0,r.isType)(e,i.Api)||(0,r.isType)(e,i.Event)||(0,r.isType)(e,i.ServicePlugin)).length>0?await w(await d(o,{type:"build"},{appSecret:"__APP_SECRET__",webhookPublicKey:"__WEBHOOK_PUBLIC_KEY__"})).catch(e=>{throw new t({code:n.FailedToBuildApp({cause:e}),cause:e})}):void 0,_=await w(await m(o,{type:"build"},{baseBackendUrl:c})).catch(e=>{throw new t({code:n.FailedToBuildApp({cause:e}),cause:e})}),B=await u({appId:o.config.appId,components:o.components,sentryDSN:o.config.sentryDSN,componentSourceBuilder:f(o,{clientBuildOutput:_},{backendBuildOutput:C})});await l({projectFolder:o.projectFolder,manifest:B})}export{M as build};
|
|
4
|
+
//# sourceMappingURL=build-F3HGY5OP.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as _createRequire } from 'node:module';
|
|
2
|
+
const require = _createRequire(import.meta.url);
|
|
3
|
+
import{Ba as G,F as B,J as u,K as M,L as U,P as v,Q as x,R as O,S as T,bb as q,db as V,ja as R,qa as Se,ra as Ee,sa as k,ta as he,wa as L,xa as D,ya as E,za as F}from"./chunk-YUI4ZVE3.js";import{c as I,e as f,f as C}from"./chunk-WC5HJ7VI.js";import{c as g,e as y,h as c}from"./chunk-V4TR6DCM.js";var H=g((pt,W)=>{"use strict";c();function Pe(t,r,n,i){for(var a=t.length,o=n+(i?1:-1);i?o--:++o<a;)if(r(t[o],o,t))return o;return-1}W.exports=Pe});var Y=g((gt,K)=>{"use strict";c();function ye(t){return t!==t}K.exports=ye});var z=g((Ct,$)=>{"use strict";c();function De(t,r,n){for(var i=n-1,a=t.length;++i<a;)if(t[i]===r)return i;return-1}$.exports=De});var Z=g((Et,X)=>{"use strict";c();var be=H(),Ie=Y(),Te=z();function _e(t,r,n){return r===r?Te(t,r,n):be(t,Ie,n)}X.exports=_e});var Q=g((vt,J)=>{"use strict";c();var we=Z();function Ae(t,r){var n=t==null?0:t.length;return!!n&&we(t,r,0)>-1}J.exports=Ae});var te=g((yt,ee)=>{"use strict";c();function Ne(t,r,n){for(var i=-1,a=t==null?0:t.length;++i<a;)if(n(r,t[i]))return!0;return!1}ee.exports=Ne});var ie=g((bt,re)=>{"use strict";c();function Be(){}re.exports=Be});var oe=g((Tt,ne)=>{"use strict";c();var _=he(),Me=ie(),Ue=k(),xe=1/0,Oe=_&&1/Ue(new _([,-0]))[1]==xe?function(t){return new _(t)}:Me;ne.exports=Oe});var se=g((wt,ae)=>{"use strict";c();var Re=Se(),ke=Q(),Le=te(),Fe=Ee(),Ge=oe(),qe=k(),Ve=200;function je(t,r,n){var i=-1,a=ke,o=t.length,e=!0,l=[],d=l;if(n)e=!1,a=Le;else if(o>=Ve){var s=r?null:Ge(t);if(s)return qe(s);e=!1,a=Fe,d=new Re}else d=r?[]:l;e:for(;++i<o;){var S=t[i],h=r?r(S):S;if(S=n||S!==0?S:0,e&&h===h){for(var N=d.length;N--;)if(d[N]===h)continue e;r&&d.push(h),l.push(S)}else a(d,h,n)||(d!==l&&d.push(h),l.push(S))}return l}ae.exports=je});var ce=g((Nt,de)=>{"use strict";c();var We=se();function He(t,r){return r=typeof r=="function"?r:void 0,t&&t.length?We(t,void 0,r):[]}de.exports=He});c();var P=y(I(),1);import{randomUUID as ve}from"node:crypto";var j=t=>{let r=new Map;[...t.filter(o=>!(0,P.isType)(o,D.Api)&&!(0,P.isType)(o,D.Event)&&!(0,P.isType)(o,D.ServicePlugin))].sort((o,e)=>o.id.localeCompare(e.id)).forEach(o=>{let e=r.get(o.id)??[];e.push(o),r.set(o.id,e)});let a=new Map;if(r.forEach((o,e)=>{o.length>1&&a.set(e,o)}),a.size)throw new f({code:C.DuplicateComponentIdsError({issues:Array.from(a.entries()).map(([o,e])=>({id:o,components:e.map(l=>(0,P.match)(l,{DashboardPage:({title:d,relativePath:s})=>({name:d,type:"page",path:E(s,"json")}),DashboardPlugin:({title:d,relativePath:s})=>({name:d,type:"plugin",path:E(s,"json")}),DashboardMenuPlugin:({title:d,relativePath:s})=>({name:d,type:"menu-plugin",path:s}),DashboardModal:({title:d,relativePath:s})=>({name:d,type:"modal",path:E(s,"json")}),DashboardSidebarCategory:({label:d})=>({name:d,type:"sidebar-category",path:B}),EmbeddedScript:({relativePath:d})=>({name:d,type:"embedded-script",path:E(d,"json")}),CustomElement:({name:d,relativePath:s})=>({name:d,type:"custom-element",path:E(s,"json")}),Topology:({name:d})=>({name:d,type:"topology",path:""}),SitePlugin:({marketData:d,relativePath:s})=>({name:d.name,type:"site-plugin",path:E(s,"json")})})).sort((l,d)=>l.name.localeCompare(d.name)),suggestedId:ve()}))})})};c();var b=y(I(),1),ue=y(ce(),1);import{randomUUID as Ke}from"node:crypto";function Ye(t){return t!=null&&t!==!1}var $e=(t,r)=>{if(t.experiments)return{appId:r,componentId:t.id,spec:t.experiments.enabledBy,variantValue:"true"}},le=(t,r,n)=>{let i=(0,b.match)(t,{SitePlugin:a=>({id:a.referenceComponentId,name:a.marketData.name,base:{autoAdd:a.installation?.autoAddToSite},size:{width:{defaultWidth:400,allowStretch:!0,stretchByDefault:!0},height:{defaultHeight:400,heightMode:T.FIXED}}}),CustomElement:a=>({id:a.id,name:a.name,base:{autoAdd:a.installation?.autoAddToSite,essential:a.installation?.essential,maxInstances:a.installation?.essential?1:0},size:{width:{defaultWidth:a.width.defaultWidth,allowStretch:a.width.allowStretch,stretchByDefault:a.width.stretchByDefault},height:{defaultHeight:a.height.defaultHeight,heightMode:T.FIXED}}})});return{compId:i.id,compType:u.CUSTOM_ELEMENT_WIDGET,compName:i.name,compData:{customElementWidget:{base:{name:i.name},widgetData:{tagName:t.tagName,scriptType:O.ES_MODULE,scriptUrl:r},size:i.size,installation:{base:i.base,widget:{region:M.BODY}},behaviors:t.relativePanelPath&&n?{settings:{settingsUrl:n}}:{},dependencies:t.dependencies}}}};async function Rt({appId:t,components:r,sentryDSN:n,componentSourceBuilder:i}){j(r);let a=(await Promise.all(r.map((0,b.match)({DashboardPage:async e=>{let l=e.sentryDSN??n;return{compId:e.id,compType:u.BACK_OFFICE_PAGE,compData:{backOfficePage:{hostingPlatform:v.BUSINESS_MANAGER,fullPage:e.sidebar?.whenActive?.hideSidebar,hideInSidebar:e.sidebar?.disabled,priority:e.sidebar?.priority,routePath:e.route.slice(1),title:e.title,pageCategoryId:e.sidebar?.categoryId,activeSidebarPageId:e.sidebar?.whenActive?.selectedPageId,requiredPermission:e.requiredPermission,previousRoutePaths:e.additionalRoutes,...l?{errorReporting:{url:l}}:void 0,...await i(e)}},compName:e.title,experiment:$e(e,t)}},DashboardPlugin:async e=>({compId:e.id,compType:u.BACK_OFFICE_EXTENSION_WIDGET,compData:{backOfficeExtensionWidget:{hostingPlatform:v.BUSINESS_MANAGER,extends:e.extends,title:e.title,requiredPermission:e.requiredPermission,width:e.width,height:e.height,...await i(e),...e.sentryDSN?{errorReporting:{url:e.sentryDSN}}:void 0}},compName:e.title}),DashboardMenuPlugin:async e=>({compId:e.id,compType:u.BACK_OFFICE_EXTENSION_MENU_ITEM,compData:{backOfficeExtensionMenuItem:{hostingPlatform:v.BUSINESS_MANAGER,id:e.id,title:e.title,subtitle:e.subtitle,iconKey:e.iconKey,extends:e.extends,action:e.action,requiredPermission:e.requiredPermission,...e.sentryDSN?{errorReporting:{url:e.sentryDSN}}:void 0}},compName:e.title}),DashboardModal:async e=>({compId:e.id,compType:u.BACK_OFFICE_MODAL,compData:{backOfficeModal:{hostingPlatform:v.BUSINESS_MANAGER,title:e.title,requiredPermission:e.requiredPermission,width:e.width,height:e.height,...await i(e),...e.sentryDSN?{errorReporting:{url:e.sentryDSN}}:void 0}},compName:e.title}),DashboardSidebarCategory:async e=>({compId:e.id,compType:u.BACK_OFFICE_SIDEBAR_CATEGORY,compData:{backOfficeSidebarCategory:{hostingPlatform:v.BUSINESS_MANAGER,title:e.label,priority:e.priority}},compName:e.label}),EmbeddedScript:async e=>({compId:e.id,compType:u.EMBEDDED_SCRIPT,compName:e.name,compData:{embeddedScriptComponentData:{name:e.name,pages:U.NONE_PAGES,placement:e.placement,connectArticleUrl:"",embedCategory:e.scriptType,dependencies:e.dependencies,loadOnce:!0,allowedForFreeSite:!0,...await i(e)}}}),CustomElement:async e=>{let{scriptUrl:l,settingsUrl:d}=await i(e);return le(e,l,d)},Topology:async e=>({compId:e.id,compType:u.TOPOLOGY,compName:e.name,compData:{topology:{topology:{backendApiUrl:e.backendApiUrl}}}}),Api:()=>null,Event:async e=>(await i(e)).map(({webhookSlug:d})=>({compName:d,compId:Ke(),compType:u.WEBHOOK,compData:{webhook:{callbackUrl:"__WEBHOOKS_URL_PLACEHOLDER__",webhookSlug:d}}})),SitePlugin:async e=>{let{scriptUrl:l,settingsUrl:d}=await i(e);return[le(e,l,d),{compId:e.id,compType:u.WIDGET_PLUGIN,compName:e.marketData.name,compData:{widgetPlugin:{referenceComponentId:e.referenceComponentId,placements:e.placements,marketData:e.marketData}}}]},ServicePlugin:async e=>{let l=(0,b.match)(e.servicePlugin,{EcomShippingRates:s=>({compName:s.name,compId:s.id,compType:u.ECOM_SHIPPING_RATES,compData:{ecomShippingRates:{name:s.name,deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__",description:s.description,learnMoreUrl:s.learnMoreUrl,dashboardUrl:s.dashboardUrl,fallbackDefinitionMandatory:s.fallbackDefinitionMandatory,thumbnailUrl:s.thumbnailUrl}}}),EcomAdditionalFees:s=>({compName:s.name,compId:s.id,compType:u.ECOM_ADDITIONAL_FEES,compData:{ecomAdditionalFees:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__"}}}),EcomDiscountsTrigger:s=>({compName:s.name,compId:s.id,compType:u.ECOM_DISCOUNTS_TRIGGER,compData:{ecomDiscountsTrigger:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__"}}}),EcomValidations:s=>({compName:s.name,compId:s.id,compType:u.ECOM_VALIDATIONS,compData:{ecomValidations:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__",validateInCart:s.validateInCart}}}),EcomPaymentSettings:s=>({compName:s.name,compId:s.id,compType:u.ECOM_PAYMENT_SETTINGS,compData:{ecomPaymentSettings:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__",fallbackValueForRequires3dSecure:s.fallbackValueForRequires3dSecure}}}),EcomGiftCardsProvider:s=>({compName:s.name,compId:s.id,compType:u.GIFT_CARDS_PROVIDER,compData:{giftCardsProvider:{deploymentUri:"__SERVICE_PLUGIN_URL_PLACEHOLDER__"}}})}),{servicePluginType:d}=await i(e);if(l.compType!==d)throw new f({code:C.InvalidServicePluginImplementation({configuredImplementation:l.compType})});return l}})))).filter(Ye).flat(),o=(0,ue.default)(a,(e,l)=>e.compType===u.WEBHOOK&&l.compType===u.WEBHOOK&&e.compData.webhook.webhookSlug===l.compData.webhook.webhookSlug);return{appId:t,components:o}}c();var fe=y(I(),1);import{join as ze}from"node:path";import{pathToFileURL as Xe}from"node:url";c();function pe(t){if(!("output"in t||Array.isArray(t)))throw new f({code:C.InvalidViteBuildOutput()});return Array.isArray(t)?t.flatMap(i=>i.output):t.output}function w(t,r){let i=pe(t).find(a=>a.type==="chunk"&&a.facadeModuleId===r);if(!i)throw new f({code:C.ViteModuleBundleNotFound()});return i.fileName}function me(t,r){let i=pe(t).find(a=>a.fileName===r);if(!i||!("source"in i))throw new f({code:C.ViteFileNotFoundInOutput({fileName:r})});return i.source.toString()}async function Ze(t,r){let n=new URL(t.relativePath,r).href;return await fetch(n).then(a=>a.text())}async function Je(t,r){let n=new URL("__get-registered-events",r).href,i=await fetch(n);return i.ok?(await i.json())[`/${t.relativePath}`]??[]:[]}async function Ce(t){let r=R(t.projectFolder),n=ze(r,"getRegisteredExtensions.mjs");return import(Xe(n).href)}async function Qe(t,r){let{getRegisteredEvents:n}=await Ce(r);return(await n())[`/${t.relativePath}`]}async function et(t,r){let n=new URL("__get-registered-service-plugins",r).href,i=await fetch(n);return i.ok?(await i.json())[`/${t.relativePath}`]:null}async function tt(t,r){let{getRegisteredServicePlugins:n}=await Ce(r);return(await n())[`/${t.relativePath}`]}var A=(t,r,n)=>{if(!r.config.trusted)return{iframeUrl:F(t.id)};let i=G(t.id),a=n.clientBuildOutput?w(n.clientBuildOutput,i):`/@id/${i}?import`;return{scriptAsset:{exportedName:t.id,containerId:r.config.appId,url:a,scriptType:x.MODULE}}},rt=async(t,{clientBuildOutput:r,clientDevServerUrl:n})=>({template:r?me(r,t.relativePath):await Ze(t,n)}),it=async(t,r,n)=>{let i=n.backendDevServerUrl?await Je(t,n.backendDevServerUrl):await Qe(t,r);return(i?await Promise.all(i.map(L)):[]).map(o=>({webhookSlug:o}))},nt=async(t,r,n)=>{let i=n.backendDevServerUrl?await et(t,n.backendDevServerUrl):await tt(t,r);if(!i)throw new Error("could not find service plugin definition");return{servicePluginType:i}},ge=(t,r)=>{let n=V(t.id);return{scriptUrl:r.clientBuildOutput?w(r.clientBuildOutput,n):`/@id/${n}?import`,settingsUrl:q(t.id)}};function Xt(t,r,n){return async i=>(0,fe.match)(i,{EmbeddedScript:o=>rt(o,r),DashboardSidebarCategory:()=>{},CustomElement:o=>ge(o,r),SitePlugin:o=>ge(o,r),DashboardPage:o=>A(o,t,r),DashboardPlugin:o=>A(o,t,r),DashboardModal:o=>A(o,t,r),DashboardMenuPlugin:()=>{},Topology:()=>{},Api:()=>{},Event:o=>it(o,t,n),ServicePlugin:o=>nt(o,t,n)})}export{j as a,le as b,Rt as c,Xt as d};
|
|
4
|
+
//# sourceMappingURL=chunk-3UO7SKSO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/lodash/_baseFindIndex.js","../../../node_modules/lodash/_baseIsNaN.js","../../../node_modules/lodash/_strictIndexOf.js","../../../node_modules/lodash/_baseIndexOf.js","../../../node_modules/lodash/_arrayIncludes.js","../../../node_modules/lodash/_arrayIncludesWith.js","../../../node_modules/lodash/noop.js","../../../node_modules/lodash/_createSet.js","../../../node_modules/lodash/_baseUniq.js","../../../node_modules/lodash/uniqWith.js","../src/app-manifest/validate.ts","../src/app-manifest/create.ts","../src/app-manifest/component-source.ts","../src/app-manifest/build-output-data-extractor.ts"],"sourcesContent":["/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","import { randomUUID } from 'node:crypto';\nimport { isType, match } from 'variant';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { CONFIG_FILENAME } from '@wix/cli-core-definitions';\nimport { replaceExtension } from '../dev-center/components/path.js';\nimport type { BackendComponent } from '../dev-center/components/dev-center-component.js';\nimport { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\n\ntype NonBackendComponent = Exclude<DevCenterComponent, BackendComponent>;\n\nexport const validateComponents = (components: DevCenterComponent[]) => {\n const devCenterComponentsToIdMap = new Map<string, NonBackendComponent[]>();\n\n const componentsWithConfig = components.filter(\n (component): component is NonBackendComponent =>\n !isType(component, DevCenterComponent.Api) &&\n !isType(component, DevCenterComponent.Event) &&\n !isType(component, DevCenterComponent.ServicePlugin)\n );\n\n const sortedComponentsById = [...componentsWithConfig].sort((a, b) =>\n a.id.localeCompare(b.id)\n );\n sortedComponentsById.forEach((component) => {\n const componentList = devCenterComponentsToIdMap.get(component.id) ?? [];\n componentList.push(component);\n devCenterComponentsToIdMap.set(component.id, componentList);\n });\n\n const devCenterComponentsWithSameIDMap = new Map<\n string,\n NonBackendComponent[]\n >();\n\n devCenterComponentsToIdMap.forEach((devCenterComponents, key) => {\n if (devCenterComponents.length > 1) {\n devCenterComponentsWithSameIDMap.set(key, devCenterComponents);\n }\n });\n\n if (devCenterComponentsWithSameIDMap.size) {\n throw new CliError({\n code: CliErrorCode.DuplicateComponentIdsError({\n issues: Array.from(devCenterComponentsWithSameIDMap.entries()).map(\n ([id, devCenterComponents]) => {\n return {\n id,\n components: devCenterComponents\n .map((component) =>\n match(component, {\n DashboardPage: ({ title, relativePath }) => ({\n name: title,\n type: 'page' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n DashboardPlugin: ({ title, relativePath }) => ({\n name: title,\n type: 'plugin' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n DashboardMenuPlugin: ({ title, relativePath }) => ({\n name: title,\n type: 'menu-plugin' as const,\n // We can use the relative path since the path already points to the menu config json\n path: relativePath,\n }),\n DashboardModal: ({ title, relativePath }) => ({\n name: title,\n type: 'modal' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n DashboardSidebarCategory: ({ label }) => ({\n name: label,\n type: 'sidebar-category' as const,\n path: CONFIG_FILENAME,\n }),\n EmbeddedScript: ({ relativePath }) => ({\n name: relativePath,\n type: 'embedded-script' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n CustomElement: ({ name, relativePath }) => ({\n name,\n type: 'custom-element' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n Topology: ({ name }) => ({\n name,\n type: 'topology' as const,\n // Topology component doesn't have a config file\n path: '',\n }),\n SitePlugin: ({ marketData, relativePath }) => ({\n name: marketData.name,\n type: 'site-plugin' as const,\n path: replaceExtension(relativePath, 'json'),\n }),\n })\n )\n .sort((a, b) => a.name.localeCompare(b.name)),\n suggestedId: randomUUID(),\n };\n }\n ),\n }),\n });\n }\n};\n","import {\n ComponentType,\n BackOfficeHostingPlatforms,\n EmbeddedScriptPages,\n HeightMode,\n RegionType,\n CustomElementScriptType,\n} from '@wix/ambassador-devcenter-components-v1-component/types';\nimport { match } from 'variant';\nimport { randomUUID } from 'node:crypto';\nimport uniqWith from 'lodash/uniqWith.js';\nimport type {\n AppManifest,\n ComponentExperiment,\n BackofficePage,\n BackofficeExtensionWidget,\n BackofficeExtensionMenuItem,\n BackofficeSideCategory,\n BackofficeModal,\n EmbeddedScript,\n CustomElement,\n Webhook,\n ServicePlugin,\n SitePlugin,\n Topology,\n EcomShippingRates,\n EcomAdditionalFees,\n EcomDiscountsTrigger,\n EcomValidations,\n EcomPaymentSettings,\n EcomGiftCardsProvider,\n} from '@wix/cli-app-manifest';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { validateComponents } from './validate.js';\nimport type { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\nimport type { ComponentSourceBuilder } from './component-source.js';\n\ninterface CreateAppManifestParams {\n appId: string;\n backendServerUrl?: string;\n components: DevCenterComponent[];\n sentryDSN?: string;\n componentSourceBuilder: ComponentSourceBuilder;\n}\n\nfunction isTruthy<T>(x: T | undefined | null | false): x is T {\n return x !== undefined && x !== null && x !== false;\n}\n\nconst getExperiment = (\n component: DevCenterComponent<'DashboardPage'>,\n appId: string\n): ComponentExperiment => {\n if (component.experiments) {\n return {\n appId,\n componentId: component.id,\n spec: component.experiments.enabledBy,\n variantValue: 'true',\n };\n }\n return undefined;\n};\n\nexport const createCustomElementConfig = (\n component: DevCenterComponent<'CustomElement' | 'SitePlugin'>,\n scriptUrl: string,\n settingsUrl?: string\n): CustomElement => {\n const customElementData = match(component, {\n SitePlugin: (sitePlugin) => ({\n id: sitePlugin.referenceComponentId,\n name: sitePlugin.marketData.name,\n base: {\n autoAdd: sitePlugin.installation?.autoAddToSite,\n },\n size: {\n width: {\n defaultWidth: 400,\n allowStretch: true,\n stretchByDefault: true,\n },\n height: {\n defaultHeight: 400,\n heightMode: HeightMode.FIXED,\n },\n },\n }),\n CustomElement: (customElement) => ({\n id: customElement.id,\n name: customElement.name,\n base: {\n autoAdd: customElement.installation?.autoAddToSite,\n essential: customElement.installation?.essential,\n maxInstances: customElement.installation?.essential ? 1 : 0,\n },\n size: {\n width: {\n defaultWidth: customElement.width.defaultWidth,\n allowStretch: customElement.width.allowStretch,\n stretchByDefault: customElement.width.stretchByDefault,\n },\n height: {\n defaultHeight: customElement.height.defaultHeight,\n heightMode: HeightMode.FIXED,\n },\n },\n }),\n });\n\n return {\n compId: customElementData.id,\n compType: ComponentType.CUSTOM_ELEMENT_WIDGET as const,\n compName: customElementData.name,\n compData: {\n customElementWidget: {\n base: {\n name: customElementData.name,\n },\n widgetData: {\n tagName: component.tagName,\n scriptType: CustomElementScriptType.ES_MODULE,\n scriptUrl,\n },\n size: customElementData.size,\n installation: {\n base: customElementData.base,\n widget: { region: RegionType.BODY },\n },\n behaviors:\n component.relativePanelPath && settingsUrl\n ? { settings: { settingsUrl } }\n : {},\n dependencies: component.dependencies,\n },\n },\n };\n};\n\nexport async function createAppManifest({\n appId,\n components,\n sentryDSN,\n componentSourceBuilder,\n}: CreateAppManifestParams): Promise<AppManifest> {\n validateComponents(components);\n\n const appManifestComponents = (\n await Promise.all(\n components.map(\n match({\n DashboardPage: async (component): Promise<BackofficePage> => {\n const componentSentryDSN = component.sentryDSN ?? sentryDSN;\n return {\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_PAGE as const,\n compData: {\n backOfficePage: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n fullPage: component.sidebar?.whenActive?.hideSidebar,\n hideInSidebar: component.sidebar?.disabled,\n priority: component.sidebar?.priority,\n routePath: component.route.slice(1),\n title: component.title,\n pageCategoryId: component.sidebar?.categoryId,\n activeSidebarPageId:\n component.sidebar?.whenActive?.selectedPageId,\n requiredPermission: component.requiredPermission,\n previousRoutePaths: component.additionalRoutes,\n ...(componentSentryDSN\n ? { errorReporting: { url: componentSentryDSN } }\n : undefined),\n ...(await componentSourceBuilder(component)),\n },\n },\n compName: component.title,\n experiment: getExperiment(component, appId),\n };\n },\n DashboardPlugin: async (\n component\n ): Promise<BackofficeExtensionWidget> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_EXTENSION_WIDGET as const,\n compData: {\n backOfficeExtensionWidget: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n extends: component.extends,\n title: component.title,\n requiredPermission: component.requiredPermission,\n width: component.width,\n height: component.height,\n ...(await componentSourceBuilder(component)),\n ...(component.sentryDSN\n ? { errorReporting: { url: component.sentryDSN } }\n : undefined),\n },\n },\n compName: component.title,\n }),\n DashboardMenuPlugin: async (\n component\n ): Promise<BackofficeExtensionMenuItem> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_EXTENSION_MENU_ITEM as const,\n compData: {\n backOfficeExtensionMenuItem: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n id: component.id,\n title: component.title,\n subtitle: component.subtitle,\n iconKey: component.iconKey,\n extends: component.extends,\n action: component.action,\n requiredPermission: component.requiredPermission,\n ...(component.sentryDSN\n ? { errorReporting: { url: component.sentryDSN } }\n : undefined),\n },\n },\n compName: component.title,\n }),\n DashboardModal: async (component): Promise<BackofficeModal> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_MODAL as const,\n compData: {\n backOfficeModal: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n title: component.title,\n requiredPermission: component.requiredPermission,\n width: component.width,\n height: component.height,\n ...(await componentSourceBuilder(component)),\n ...(component.sentryDSN\n ? { errorReporting: { url: component.sentryDSN } }\n : undefined),\n },\n },\n compName: component.title,\n }),\n DashboardSidebarCategory: async (\n component\n ): Promise<BackofficeSideCategory> => ({\n compId: component.id,\n compType: ComponentType.BACK_OFFICE_SIDEBAR_CATEGORY as const,\n compData: {\n backOfficeSidebarCategory: {\n hostingPlatform: BackOfficeHostingPlatforms.BUSINESS_MANAGER,\n title: component.label,\n priority: component.priority,\n },\n },\n compName: component.label,\n }),\n EmbeddedScript: async (component): Promise<EmbeddedScript> => ({\n compId: component.id,\n compType: ComponentType.EMBEDDED_SCRIPT as const,\n compName: component.name,\n compData: {\n embeddedScriptComponentData: {\n name: component.name,\n pages: EmbeddedScriptPages.NONE_PAGES,\n placement: component.placement,\n connectArticleUrl: '',\n embedCategory: component.scriptType,\n dependencies: component.dependencies,\n loadOnce: true,\n allowedForFreeSite: true,\n ...(await componentSourceBuilder(component)),\n },\n },\n }),\n CustomElement: async (component): Promise<CustomElement> => {\n const { scriptUrl, settingsUrl } = await componentSourceBuilder(\n component\n );\n\n return createCustomElementConfig(component, scriptUrl, settingsUrl);\n },\n Topology: async (component): Promise<Topology> => {\n return {\n compId: component.id,\n compType: ComponentType.TOPOLOGY as const,\n compName: component.name,\n compData: {\n topology: {\n topology: {\n backendApiUrl: component.backendApiUrl,\n },\n },\n },\n };\n },\n Api: () => null,\n Event: async (component): Promise<Webhook[]> => {\n const webhookSlugs = await componentSourceBuilder(component);\n\n return webhookSlugs.map(({ webhookSlug }) => ({\n compName: webhookSlug,\n compId: randomUUID(),\n compType: ComponentType.WEBHOOK,\n compData: {\n webhook: {\n callbackUrl: '__WEBHOOKS_URL_PLACEHOLDER__',\n webhookSlug,\n },\n },\n }));\n },\n SitePlugin: async (\n component\n ): Promise<Array<SitePlugin | CustomElement>> => {\n const { scriptUrl, settingsUrl } = await componentSourceBuilder(\n component\n );\n\n const customElementConfig = createCustomElementConfig(\n component,\n scriptUrl,\n settingsUrl\n );\n\n return [\n customElementConfig,\n {\n compId: component.id,\n compType: ComponentType.WIDGET_PLUGIN as const,\n compName: component.marketData.name,\n compData: {\n widgetPlugin: {\n referenceComponentId: component.referenceComponentId,\n placements: component.placements,\n marketData: component.marketData,\n },\n },\n },\n ];\n },\n ServicePlugin: async (component): Promise<ServicePlugin> => {\n const servicePlugin = match(component.servicePlugin, {\n EcomShippingRates: (component): EcomShippingRates => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_SHIPPING_RATES,\n compData: {\n ecomShippingRates: {\n name: component.name,\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n description: component.description,\n learnMoreUrl: component.learnMoreUrl,\n dashboardUrl: component.dashboardUrl,\n fallbackDefinitionMandatory:\n component.fallbackDefinitionMandatory,\n thumbnailUrl: component.thumbnailUrl,\n },\n },\n }),\n EcomAdditionalFees: (component): EcomAdditionalFees => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_ADDITIONAL_FEES,\n compData: {\n ecomAdditionalFees: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n },\n },\n }),\n EcomDiscountsTrigger: (component): EcomDiscountsTrigger => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_DISCOUNTS_TRIGGER,\n compData: {\n ecomDiscountsTrigger: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n },\n },\n }),\n EcomValidations: (component): EcomValidations => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_VALIDATIONS,\n compData: {\n ecomValidations: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n validateInCart: component.validateInCart,\n },\n },\n }),\n EcomPaymentSettings: (component): EcomPaymentSettings => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.ECOM_PAYMENT_SETTINGS,\n compData: {\n ecomPaymentSettings: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n fallbackValueForRequires3dSecure:\n component.fallbackValueForRequires3dSecure,\n },\n },\n }),\n EcomGiftCardsProvider: (component): EcomGiftCardsProvider => ({\n compName: component.name,\n compId: component.id,\n compType: ComponentType.GIFT_CARDS_PROVIDER,\n compData: {\n giftCardsProvider: {\n deploymentUri: '__SERVICE_PLUGIN_URL_PLACEHOLDER__',\n },\n },\n }),\n });\n\n const { servicePluginType } = await componentSourceBuilder(\n component\n );\n\n if (servicePlugin.compType !== servicePluginType) {\n throw new CliError({\n code: CliErrorCode.InvalidServicePluginImplementation({\n configuredImplementation: servicePlugin.compType,\n }),\n });\n }\n\n return servicePlugin;\n },\n })\n )\n )\n )\n .filter(isTruthy)\n .flat();\n\n const uniqueComponents = uniqWith(appManifestComponents, (one, two) => {\n return (\n one.compType === ComponentType.WEBHOOK &&\n two.compType === ComponentType.WEBHOOK &&\n one.compData.webhook.webhookSlug === two.compData.webhook.webhookSlug\n );\n });\n\n return {\n appId,\n components: uniqueComponents,\n };\n}\n","import { BackOfficeScriptAssetType } from '@wix/ambassador-devcenter-components-v1-component/types';\nimport type { ComponentSource } from '@wix/cli-app-manifest';\nimport { match } from 'variant';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { SupportedServicePlugin } from '@wix/cli-app-definitions';\nimport { getAppBackendBuildFolder } from '@wix/cli-app-definitions';\nimport type * as GetRegisteredExtensions from '@wix/cli-cloudflare-runtime/getRegisteredExtensions';\nimport { getBackendEventSlug } from '@wix/extensions-data-client';\nimport {\n virtualModuleIdForScriptAsset,\n virtualPathForHTMLAsset,\n} from '../dev-center/components/dashboard/config.js';\nimport {\n virtualModuleIdForCustomElementScriptAsset,\n virtualPathForCustomElementPanelHTMLAsset,\n} from '../dev-center/components/site/config.js';\nimport type { ProjectModel } from '../model.js';\nimport type { ViteBuildOutput } from './build-output-data-extractor.js';\nimport {\n extractModuleBundleContent,\n extractModuleBundleName,\n} from './build-output-data-extractor.js';\nimport type { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\n\ntype BackendSource =\n | {\n backendBuildOutput: ViteBuildOutput | undefined;\n backendDevServerUrl?: never;\n }\n | { backendDevServerUrl: string | undefined; backendBuildOutput?: never };\n\ntype ClientSource =\n | { clientBuildOutput: ViteBuildOutput; clientDevServerUrl?: never }\n | { clientDevServerUrl: string; clientBuildOutput?: never };\n\ntype DashboardSource =\n | {\n iframeUrl: string;\n scriptAsset?: never;\n }\n | {\n scriptAsset: ComponentSource['scriptAsset'];\n iframeUrl?: never;\n };\n\ninterface EmbeddedScriptSource {\n template: string;\n}\n\ninterface CustomElementSource {\n scriptUrl: string;\n settingsUrl: string;\n}\n\ninterface SitePluginSource {\n scriptUrl: string;\n settingsUrl: string;\n}\n\ninterface EventSource {\n webhookSlug: string;\n}\n\ninterface ServicePluginSource {\n servicePluginType: SupportedServicePlugin;\n}\n\nexport type ComponentSourceBuilder = <T extends DevCenterComponent>(\n component: T\n) => Promise<\n T extends DevCenterComponent<'EmbeddedScript'>\n ? EmbeddedScriptSource\n : T extends DevCenterComponent<'CustomElement'>\n ? CustomElementSource\n : T extends DevCenterComponent<'DashboardPage'>\n ? DashboardSource\n : T extends DevCenterComponent<'DashboardPlugin'>\n ? DashboardSource\n : T extends DevCenterComponent<'DashboardModal'>\n ? DashboardSource\n : T extends DevCenterComponent<'Event'>\n ? EventSource[]\n : T extends DevCenterComponent<'ServicePlugin'>\n ? ServicePluginSource\n : T extends DevCenterComponent<'SitePlugin'>\n ? SitePluginSource\n : undefined\n>;\n\nasync function getEmbeddedScriptDevTemplate(\n component: DevCenterComponent<'EmbeddedScript'>,\n backendDevServerUrl: string\n) {\n const url = new URL(component.relativePath, backendDevServerUrl).href;\n const devTemplate = await fetch(url).then((res) => res.text());\n\n return devTemplate;\n}\n\nasync function getEventDevSlugs(\n component: DevCenterComponent<'Event'>,\n backendDevServerUrl: string\n) {\n const url = new URL(`__get-registered-events`, backendDevServerUrl).href;\n const response = await fetch(url);\n\n if (!response.ok) {\n return [];\n }\n\n const eventTypes = await response.json();\n const devSlugs = eventTypes[`/${component.relativePath}`] ?? [];\n\n return devSlugs as string[];\n}\n\nasync function getRegisteredExtensions(model: ProjectModel) {\n const backendBuildFolder = getAppBackendBuildFolder(model.projectFolder);\n const outputFilepath = join(\n backendBuildFolder,\n 'getRegisteredExtensions.mjs'\n );\n\n return import(pathToFileURL(outputFilepath).href) as Promise<\n typeof GetRegisteredExtensions\n >;\n}\n\nasync function getEventProdSlugs(\n component: DevCenterComponent<'Event'>,\n model: ProjectModel\n) {\n const { getRegisteredEvents } = await getRegisteredExtensions(model);\n\n const eventsMap = await getRegisteredEvents();\n\n return eventsMap[`/${component.relativePath}`];\n}\n\nasync function getServicePluginDevType(\n component: DevCenterComponent<'ServicePlugin'>,\n backendDevServerUrl: string\n) {\n const url = new URL(`__get-registered-service-plugins`, backendDevServerUrl)\n .href;\n const response = await fetch(url);\n\n if (!response.ok) {\n return null;\n }\n\n const servicePluginTypes = await response.json();\n const servicePluginType = servicePluginTypes[`/${component.relativePath}`];\n\n return servicePluginType as string;\n}\n\nasync function getServicePluginProdType(\n component: DevCenterComponent<'ServicePlugin'>,\n model: ProjectModel\n) {\n const { getRegisteredServicePlugins } = await getRegisteredExtensions(model);\n\n const servicePluginsMap = await getRegisteredServicePlugins();\n\n return servicePluginsMap[`/${component.relativePath}`];\n}\n\nconst dashboardSourceBuilder = (\n component:\n | DevCenterComponent<'DashboardPage'>\n | DevCenterComponent<'DashboardPlugin'>\n | DevCenterComponent<'DashboardModal'>,\n model: ProjectModel,\n clientSource: ClientSource\n): DashboardSource => {\n if (!model.config.trusted) {\n return {\n iframeUrl: virtualPathForHTMLAsset(component.id),\n };\n }\n const moduleId = virtualModuleIdForScriptAsset(component.id);\n const componentUrl = clientSource.clientBuildOutput\n ? extractModuleBundleName(clientSource.clientBuildOutput, moduleId)\n : `/@id/${moduleId}?import`;\n\n return {\n scriptAsset: {\n exportedName: component.id,\n containerId: model.config.appId,\n url: componentUrl,\n scriptType: BackOfficeScriptAssetType.MODULE,\n },\n };\n};\n\nconst embeddedScriptBuilder = async (\n component: DevCenterComponent<'EmbeddedScript'>,\n { clientBuildOutput, clientDevServerUrl }: ClientSource\n): Promise<EmbeddedScriptSource> => {\n return {\n template: clientBuildOutput\n ? extractModuleBundleContent(clientBuildOutput, component.relativePath)\n : await getEmbeddedScriptDevTemplate(component, clientDevServerUrl),\n };\n};\n\nconst eventSourceBuilder = async (\n component: DevCenterComponent<'Event'>,\n model: ProjectModel,\n backendSource: BackendSource\n): Promise<EventSource[]> => {\n const fullSlugNames = backendSource.backendDevServerUrl\n ? await getEventDevSlugs(component, backendSource.backendDevServerUrl)\n : await getEventProdSlugs(component, model);\n\n const webhookSlugs = fullSlugNames\n ? await Promise.all(fullSlugNames.map(getBackendEventSlug))\n : [];\n\n return webhookSlugs.map((webhookSlug) => ({\n webhookSlug,\n }));\n};\n\nconst servicePluginSourceBuilder = async (\n component: DevCenterComponent<'ServicePlugin'>,\n model: ProjectModel,\n backendSource: BackendSource\n): Promise<ServicePluginSource> => {\n const servicePluginType = backendSource.backendDevServerUrl\n ? await getServicePluginDevType(\n component,\n backendSource.backendDevServerUrl\n )\n : await getServicePluginProdType(component, model);\n\n if (!servicePluginType) {\n throw new Error('could not find service plugin definition');\n }\n\n return {\n servicePluginType,\n } as ServicePluginSource;\n};\n\nconst customElementBuilder = (\n component: DevCenterComponent<'CustomElement' | 'SitePlugin'>,\n clientSource: ClientSource\n): CustomElementSource => {\n const moduleId = virtualModuleIdForCustomElementScriptAsset(component.id);\n const componentUrl = clientSource.clientBuildOutput\n ? extractModuleBundleName(clientSource.clientBuildOutput, moduleId)\n : `/@id/${moduleId}?import`;\n\n return {\n scriptUrl: componentUrl,\n settingsUrl: virtualPathForCustomElementPanelHTMLAsset(component.id),\n };\n};\n\nexport function getComponentSourceBuilder(\n model: ProjectModel,\n clientSource: ClientSource,\n backendSource: BackendSource\n) {\n return (async (component: DevCenterComponent) => {\n const source = match(component, {\n EmbeddedScript: (embeddedScriptComponent) =>\n embeddedScriptBuilder(embeddedScriptComponent, clientSource),\n DashboardSidebarCategory: () => {},\n CustomElement: (customElementComponent) =>\n customElementBuilder(customElementComponent, clientSource),\n SitePlugin: (component) => customElementBuilder(component, clientSource),\n DashboardPage: (dashboardPageComponent) =>\n dashboardSourceBuilder(dashboardPageComponent, model, clientSource),\n DashboardPlugin: (dashboardPluginComponent) =>\n dashboardSourceBuilder(dashboardPluginComponent, model, clientSource),\n DashboardModal: (dashboardModalComponent) =>\n dashboardSourceBuilder(dashboardModalComponent, model, clientSource),\n DashboardMenuPlugin: () => {},\n Topology: () => {},\n Api: () => {},\n Event: (component) => eventSourceBuilder(component, model, backendSource),\n ServicePlugin: (component) =>\n servicePluginSourceBuilder(component, model, backendSource),\n });\n\n return source;\n }) as ComponentSourceBuilder;\n}\n","import { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { build } from 'vite';\n\nexport type ViteBuildOutput = Awaited<ReturnType<typeof build>>;\n\nfunction extractBuildOutputs(buildOutput: ViteBuildOutput) {\n const isValidRollupOutput =\n 'output' in buildOutput || Array.isArray(buildOutput);\n\n if (!isValidRollupOutput) {\n throw new CliError({ code: CliErrorCode.InvalidViteBuildOutput() });\n }\n\n const outputs = Array.isArray(buildOutput)\n ? buildOutput.flatMap((output) => output.output)\n : buildOutput.output;\n\n return outputs;\n}\n\nexport function extractModuleBundleName(\n buildOutput: ViteBuildOutput,\n moduleId: string\n) {\n const outputs = extractBuildOutputs(buildOutput);\n\n const output = outputs.find(\n (output) => output.type === 'chunk' && output.facadeModuleId === moduleId\n );\n\n if (!output) {\n throw new CliError({ code: CliErrorCode.ViteModuleBundleNotFound() });\n }\n\n return output.fileName;\n}\n\nexport function extractModuleBundleContent(\n buildOutput: ViteBuildOutput,\n fileName: string\n) {\n const outputs = extractBuildOutputs(buildOutput);\n\n const output = outputs.find((output) => output.fileName === fileName);\n\n if (!output || !('source' in output)) {\n throw new CliError({\n code: CliErrorCode.ViteFileNotFoundInOutput({ fileName }),\n });\n }\n\n return output.source.toString();\n}\n"],"mappings":"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","names":["require_baseFindIndex","__commonJSMin","exports","module","init_esm_shims","baseFindIndex","array","predicate","fromIndex","fromRight","length","index","require_baseIsNaN","__commonJSMin","exports","module","init_esm_shims","baseIsNaN","value","require_strictIndexOf","__commonJSMin","exports","module","init_esm_shims","strictIndexOf","array","value","fromIndex","index","length","require_baseIndexOf","__commonJSMin","exports","module","init_esm_shims","baseFindIndex","baseIsNaN","strictIndexOf","baseIndexOf","array","value","fromIndex","require_arrayIncludes","__commonJSMin","exports","module","init_esm_shims","baseIndexOf","arrayIncludes","array","value","length","require_arrayIncludesWith","__commonJSMin","exports","module","init_esm_shims","arrayIncludesWith","array","value","comparator","index","length","require_noop","__commonJSMin","exports","module","init_esm_shims","noop","require_createSet","__commonJSMin","exports","module","init_esm_shims","Set","noop","setToArray","INFINITY","createSet","values","require_baseUniq","__commonJSMin","exports","module","init_esm_shims","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","LARGE_ARRAY_SIZE","baseUniq","array","iteratee","comparator","index","includes","length","isCommon","result","seen","set","outer","value","computed","seenIndex","require_uniqWith","__commonJSMin","exports","module","init_esm_shims","baseUniq","uniqWith","array","comparator","init_esm_shims","import_variant","randomUUID","validateComponents","components","devCenterComponentsToIdMap","component","DevCenterComponent","a","b","componentList","devCenterComponentsWithSameIDMap","devCenterComponents","key","CliError","CliErrorCode","id","title","relativePath","replaceExtension","label","CONFIG_FILENAME","name","marketData","randomUUID","init_esm_shims","import_variant","import_uniqWith","randomUUID","isTruthy","x","getExperiment","component","appId","createCustomElementConfig","scriptUrl","settingsUrl","customElementData","sitePlugin","HeightMode","customElement","ComponentType","CustomElementScriptType","RegionType","createAppManifest","components","sentryDSN","componentSourceBuilder","validateComponents","appManifestComponents","componentSentryDSN","BackOfficeHostingPlatforms","EmbeddedScriptPages","webhookSlug","randomUUID","servicePlugin","servicePluginType","CliError","CliErrorCode","uniqueComponents","uniqWith","one","two","init_esm_shims","import_variant","join","pathToFileURL","init_esm_shims","extractBuildOutputs","buildOutput","CliError","CliErrorCode","output","extractModuleBundleName","moduleId","extractModuleBundleContent","fileName","getEmbeddedScriptDevTemplate","component","backendDevServerUrl","url","res","getEventDevSlugs","response","getRegisteredExtensions","model","backendBuildFolder","getAppBackendBuildFolder","outputFilepath","join","pathToFileURL","getEventProdSlugs","getRegisteredEvents","getServicePluginDevType","getServicePluginProdType","getRegisteredServicePlugins","dashboardSourceBuilder","clientSource","virtualPathForHTMLAsset","moduleId","virtualModuleIdForScriptAsset","componentUrl","extractModuleBundleName","BackOfficeScriptAssetType","embeddedScriptBuilder","clientBuildOutput","clientDevServerUrl","extractModuleBundleContent","eventSourceBuilder","backendSource","fullSlugNames","getBackendEventSlug","webhookSlug","servicePluginSourceBuilder","servicePluginType","customElementBuilder","virtualModuleIdForCustomElementScriptAsset","virtualPathForCustomElementPanelHTMLAsset","getComponentSourceBuilder","embeddedScriptComponent","customElementComponent","dashboardPageComponent","dashboardPluginComponent","dashboardModalComponent"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as _createRequire } from 'node:module';
|
|
2
2
|
const require = _createRequire(import.meta.url);
|
|
3
|
-
import{a as Q,b as W}from"./chunk-
|
|
4
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
import{a as Q,b as W}from"./chunk-PEJD3OIS.js";import{b as M,c as Y,d as q}from"./chunk-ZQFCJI4E.js";import{a as K}from"./chunk-H74SYNT4.js";import{a as J}from"./chunk-ILQJ7I7Z.js";import{g as N,h as V,j as H,k as z}from"./chunk-YMNBETM3.js";import{Na as L,Oa as h,Pa as j,Qa as E,Za as G,qb as D,u as F}from"./chunk-YUI4ZVE3.js";import{A as I,C as _,M as O,P as b,S as k,T as l,W as B,X as U,b as f,c as A,x as d}from"./chunk-WC5HJ7VI.js";import{e as c,h as t}from"./chunk-V4TR6DCM.js";t();t();var x=c(f(),1);t();var e=c(f(),1),Z=c(A(),1);t();var v=c(f(),1),X=c(A(),1),C=({status:i,loadingText:s,successText:n})=>(0,X.match)(i,{NotRequested:()=>null,Loading:()=>v.default.createElement(b,{text:s}),Error:()=>null,Success:()=>v.default.createElement(O,{type:"success"},n)});var $=({baseUrl:i,onPreviewCreated:s})=>{let{site:n}=H(),{t:m}=U(),{model:r}=D(),{backendComponents:R}=K(),ee=N(),re=F(),{getAppByVersion:oe}=E(),{createOverride:te}=Y(),ie=j({type:"backoffice"}),y=l(()=>G(r.config.appId,r.projectFolder,re,ie,R.length>0)),ne=l((p,o)=>te({appId:r.config.appId,siteId:n.id,overrides:o})),P=l((p,o,u,a)=>J({model:r,arm:ee,serveUrl:o,backendServerUrl:a,topologyComponentId:u})),{status:se}=k(async()=>{await Q(r.projectFolder);let{serveUrl:p,backendServerUrl:o}=i?{serveUrl:i,backendServerUrl:void 0}:await y.execute(),{data:{components:u}}=await oe({appId:r.config.appId}),a=u.find(pe=>pe.compType===h.TOPOLOGY),S=q(r),{id:me}=S?await ne.execute(S):await Promise.resolve({id:void 0}),T=await P.execute(p,a?.compId,o);return a&&await L(r.projectFolder,{topologyComponentId:a.compId}),s?.(T,o),{armTag:T,siteOverrideId:me}},[]);return e.default.createElement(e.default.Fragment,null,e.default.createElement(C,{status:y.status,loadingText:m("preview_command.uploading_files"),successText:m("preview_command.uploading_files_success")}),e.default.createElement(C,{status:P.status,loadingText:m("preview_command.creating_preview"),successText:m("preview_command.creating_preview_success")}),(0,Z.match)(se,{Error:()=>null,Loading:()=>null,Success:({result:{armTag:p,siteOverrideId:o}})=>e.default.createElement(z,{siteOverrideId:o},e.default.createElement(V,{armTag:p},e.default.createElement(d,{rowGap:1,marginY:1,flexDirection:"column"},e.default.createElement(d,{gap:1},e.default.createElement(_,null),e.default.createElement(B,{i18nKey:"general.dev_site.current",values:{name:n.displayName}})),e.default.createElement(d,{rowGap:1},e.default.createElement(W,null)),e.default.createElement(I,{skin:"info"},m("preview_command.note_about_temporary_backend")))))}))};var ae=({baseUrl:i,siteIdOverride:s,onPreviewCreated:n})=>x.default.createElement(M,{siteId:s},x.default.createElement($,{baseUrl:i,onPreviewCreated:n}));export{ae as a};
|
|
4
|
+
//# sourceMappingURL=chunk-6BLEHX5K.js.map
|