@wix/cli-app 1.1.20 → 1.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/build/CreateVersionCommand-GFKZ4QO4.js +4 -0
  2. package/build/CreateVersionCommand-GFKZ4QO4.js.map +1 -0
  3. package/build/DevCommand-3X6YOCR6.js +10 -0
  4. package/build/DevCommand-3X6YOCR6.js.map +1 -0
  5. package/build/{GenerateCommand-IJSMXTIA.js → GenerateCommand-G54DEIA6.js} +26 -26
  6. package/build/{GenerateCommand-IJSMXTIA.js.map → GenerateCommand-G54DEIA6.js.map} +1 -1
  7. package/build/PreviewCommand-MS3G34SU.js +4 -0
  8. package/build/ServeCommand-FMBULAKF.js +4 -0
  9. package/build/{ServeCommand-QOKAYFJP.js.map → ServeCommand-FMBULAKF.js.map} +1 -1
  10. package/build/build-MRYN3JUP.js +4 -0
  11. package/build/build-MRYN3JUP.js.map +1 -0
  12. package/build/chunk-25SKF6FV.js +4 -0
  13. package/build/chunk-25SKF6FV.js.map +1 -0
  14. package/build/chunk-2TSKEJBV.js +4 -0
  15. package/build/{chunk-BMK5ZXHB.js → chunk-4B7ROXUZ.js} +2 -2
  16. package/build/chunk-5TKU7FRO.js +4 -0
  17. package/build/chunk-5TKU7FRO.js.map +1 -0
  18. package/build/chunk-6XYAO7TZ.js +4 -0
  19. package/build/chunk-6XYAO7TZ.js.map +1 -0
  20. package/build/chunk-7FABCBRF.js +4 -0
  21. package/build/{chunk-5OTJBADY.js.map → chunk-7FABCBRF.js.map} +1 -1
  22. package/build/chunk-ADKWZ4EI.js +4 -0
  23. package/build/chunk-ADKWZ4EI.js.map +1 -0
  24. package/build/{chunk-LNZPUJZM.js → chunk-AYAI5JUA.js} +2 -2
  25. package/build/chunk-AYAI5JUA.js.map +1 -0
  26. package/build/chunk-CRZ4CUP7.js +17 -0
  27. package/build/chunk-CRZ4CUP7.js.map +1 -0
  28. package/build/chunk-EJFNJ7PW.js +98 -0
  29. package/build/chunk-EJFNJ7PW.js.map +1 -0
  30. package/build/chunk-EZFGMZDY.js +4 -0
  31. package/build/chunk-EZFGMZDY.js.map +1 -0
  32. package/build/{chunk-XTLXT6QW.js → chunk-FF2EQB5V.js} +2 -2
  33. package/build/{chunk-CTWRW76F.js → chunk-G22H7Q33.js} +34 -34
  34. package/build/{chunk-CTWRW76F.js.map → chunk-G22H7Q33.js.map} +1 -1
  35. package/build/chunk-LQZY2KM3.js +6 -0
  36. package/build/chunk-LQZY2KM3.js.map +1 -0
  37. package/build/{chunk-RPZCQEPB.js → chunk-LWP5GALA.js} +2 -2
  38. package/build/{chunk-R2DHQREZ.js → chunk-LZXJDSN6.js} +2 -2
  39. package/build/chunk-MG53FTJX.js +87 -0
  40. package/build/chunk-MG53FTJX.js.map +1 -0
  41. package/build/chunk-SXC7QEHP.js +4 -0
  42. package/build/chunk-SXC7QEHP.js.map +1 -0
  43. package/build/{chunk-MZN364Q6.js → chunk-U7U3RJXS.js} +2 -2
  44. package/build/chunk-U7U3RJXS.js.map +1 -0
  45. package/build/{chunk-ESE4L44D.js → chunk-ZW7WK7M6.js} +2 -2
  46. package/build/index.js +2 -2
  47. package/build/preview-CLVQJW7O.js +4 -0
  48. package/build/preview-CLVQJW7O.js.map +1 -0
  49. package/build/{render-command-32GXLYY2.js → render-command-PULKFUBS.js} +2 -2
  50. package/package.json +6 -5
  51. package/build/CreateVersionCommand-SW4ZOQ6N.js +0 -4
  52. package/build/CreateVersionCommand-SW4ZOQ6N.js.map +0 -1
  53. package/build/DevCommand-5ZXJQCYA.js +0 -4
  54. package/build/DevCommand-5ZXJQCYA.js.map +0 -1
  55. package/build/PreviewCommand-2MM4267L.js +0 -4
  56. package/build/ServeCommand-QOKAYFJP.js +0 -4
  57. package/build/build-FJY4BC54.js +0 -4
  58. package/build/build-FJY4BC54.js.map +0 -1
  59. package/build/chunk-3VQX7LRS.js +0 -4
  60. package/build/chunk-3VQX7LRS.js.map +0 -1
  61. package/build/chunk-423K4EW3.js +0 -4
  62. package/build/chunk-5OTJBADY.js +0 -4
  63. package/build/chunk-ALZJFJ23.js +0 -4
  64. package/build/chunk-ALZJFJ23.js.map +0 -1
  65. package/build/chunk-C632XAQG.js +0 -23
  66. package/build/chunk-C632XAQG.js.map +0 -1
  67. package/build/chunk-F2ZEWDAK.js +0 -73
  68. package/build/chunk-F2ZEWDAK.js.map +0 -1
  69. package/build/chunk-INHSYB3J.js +0 -4
  70. package/build/chunk-INHSYB3J.js.map +0 -1
  71. package/build/chunk-LNZPUJZM.js.map +0 -1
  72. package/build/chunk-MZN364Q6.js.map +0 -1
  73. package/build/chunk-N5OCWMLI.js +0 -4
  74. package/build/chunk-N5OCWMLI.js.map +0 -1
  75. package/build/chunk-PYEFXRM2.js +0 -87
  76. package/build/chunk-PYEFXRM2.js.map +0 -1
  77. package/build/chunk-RIDNK3X3.js +0 -4
  78. package/build/chunk-RIDNK3X3.js.map +0 -1
  79. package/build/chunk-SARV44FW.js +0 -6
  80. package/build/chunk-SARV44FW.js.map +0 -1
  81. package/build/chunk-TTTQ7SZK.js +0 -4
  82. package/build/chunk-TTTQ7SZK.js.map +0 -1
  83. package/build/chunk-YKE3BZS3.js +0 -27
  84. package/build/chunk-YKE3BZS3.js.map +0 -1
  85. package/build/preview-4GL6ALWD.js +0 -4
  86. package/build/preview-4GL6ALWD.js.map +0 -1
  87. /package/build/{PreviewCommand-2MM4267L.js.map → PreviewCommand-MS3G34SU.js.map} +0 -0
  88. /package/build/{chunk-423K4EW3.js.map → chunk-2TSKEJBV.js.map} +0 -0
  89. /package/build/{chunk-BMK5ZXHB.js.map → chunk-4B7ROXUZ.js.map} +0 -0
  90. /package/build/{chunk-XTLXT6QW.js.map → chunk-FF2EQB5V.js.map} +0 -0
  91. /package/build/{chunk-RPZCQEPB.js.map → chunk-LWP5GALA.js.map} +0 -0
  92. /package/build/{chunk-R2DHQREZ.js.map → chunk-LZXJDSN6.js.map} +0 -0
  93. /package/build/{chunk-ESE4L44D.js.map → chunk-ZW7WK7M6.js.map} +0 -0
  94. /package/build/{render-command-32GXLYY2.js.map → render-command-PULKFUBS.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/DevCommand/index.ts","../src/components/DevCommand/DevCommand.tsx","../src/components/DevCommand/DevEnvironment.tsx","../src/components/DevCommand/useArmUpdater.ts","../src/components/DevCommand/useDevServer.ts","../src/vite/custom-logger.ts","../src/components/DevCommand/devEnvLogs/useDevEnvLogs.tsx","../src/files/dev.log.ts","../src/components/DevCommand/devEnvLogs/DevEnvLogLine.tsx","../src/components/DevCommand/useSiteOverrideUpdater.ts","../../site-override-client/src/index.ts","../../site-override-client/src/client.ts","../../../node_modules/@wix/ambassador-cli-site-override-service-v1-site-override/http.impl.ts","../../site-override-client/src/schemas.ts","../../site-override-client/src/useSiteOverrideClient.ts","../src/site-override/createSiteOverrides.ts","../../../node_modules/@wix/ambassador-cli-site-override-service-v1-site-override/types.impl.ts","../src/components/DevCommand/DevCommandScreens.tsx","../src/components/DevCommand/HomeScreen.tsx","../src/components/DevCommand/screen-state.ts","../src/components/DevCommand/DevEnvLogsViewer.tsx","../src/components/Platform/PlatformSelector.tsx","../src/bi/index.ts","../src/bi/useWixCliAppBi.ts","../src/backend/useBackendComponents.ts","../src/components/DevCommand/DashboardNumericViewer.tsx","../src/components/CloseScreen/CloseScreen.tsx","../src/components/DevCommand/DashboardScreen.tsx","../src/components/DevCommand/DashboardArrowViewer.tsx","../src/components/NumericViewer/index.ts","../src/components/NumericViewer/NumericViewer.tsx","../src/components/DevCommand/SiteSelectorScreen.tsx","../src/components/CloseScreen/index.tsx","../src/components/DevCommand/BackendScreen.tsx","../src/components/DevCommand/BackendNumericViewer.tsx","../src/components/DevCommand/BackendArrowViewer.tsx","../src/components/DevCommand/TunnelingConsent.tsx","../../cli-user-config/src/user-config.ts","../src/components/DevCommand/CustomElementsMigration.tsx"],"sourcesContent":["export { DevCommand } from './DevCommand.js';\nexport { DevEnvironmentProvider } from './DevEnvironment.js';\n","import React, { type FC } from 'react';\nimport { SiteIdProvider } from '../../site-id/SiteIdProvider.js';\nimport { DevEnvironmentProvider } from './DevEnvironment.js';\nimport { DevCommandScreens } from './DevCommandScreens.js';\nimport { TunnelingConsent } from './TunnelingConsent.js';\nimport { CustomElementsMigration } from './CustomElementsMigration.js';\n\nexport const DevCommand: FC<{ https: boolean }> = ({ https }) => {\n return (\n <SiteIdProvider>\n <TunnelingConsent>\n <DevEnvironmentProvider https={https}>\n <CustomElementsMigration>\n <DevCommandScreens />\n </CustomElementsMigration>\n </DevEnvironmentProvider>\n </TunnelingConsent>\n </SiteIdProvider>\n );\n};\n","import React, {\n type FC,\n type ReactNode,\n createContext,\n useContext,\n} from 'react';\nimport { match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { Spinner, useAsync } from '@wix/cli-ui-kit';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { useProjectModel } from '../../model.js';\nimport { useArmUpdater } from './useArmUpdater.js';\nimport { useClientDevServer, useBackendDevServer } from './useDevServer.js';\nimport {\n useDevEnvLogs,\n type DevEnvLog,\n type WriteLogFn,\n} from './devEnvLogs/useDevEnvLogs.js';\nimport { ArmTagProvider } from '../../context/armTag.js';\nimport { useSiteOverrideUpdater } from './useSiteOverrideUpdater.js';\n\ntype DevEnvironment = {\n siteOverrideId: string;\n https: boolean;\n clientDevServerUrl: string;\n backendDevServerUrl: string;\n logs: DevEnvLog[];\n writeLog: WriteLogFn;\n};\n\nconst DevEnvironmentContext = createContext<DevEnvironment | null>(null);\n\nexport const DevEnvironmentProvider: FC<{\n https: boolean;\n children: ReactNode;\n}> = ({ https, children }) => {\n const { t } = useTranslation();\n const { reportError } = useErrorReporter();\n const createClientDevServer = useClientDevServer({ https });\n const createBackendDevServer = useBackendDevServer({ https });\n const createArmUpdater = useArmUpdater();\n const createSiteOverrideUpdater = useSiteOverrideUpdater();\n const { logs, writeLog } = useDevEnvLogs();\n const { watcher: projectModelWatcher } = useProjectModel();\n\n const { status } = useAsync(async () => {\n const { devServerUrl: backendDevServerUrl } = await createBackendDevServer({\n projectModelWatcher,\n onLog(type, msg) {\n writeLog({ type, msg, prefix: 'backend' });\n },\n });\n\n const { devServerUrl: clientDevServerUrl, devServer: clientDevServer } =\n await createClientDevServer({\n baseBackendUrl: backendDevServerUrl,\n projectModelWatcher,\n onLog(type, msg) {\n writeLog({ type, msg, prefix: 'vite' });\n },\n });\n\n const armTag = await createArmUpdater({\n devServerUrl: clientDevServerUrl,\n projectModelWatcher,\n onChange(changeType) {\n match(changeType, {\n 'change-received': () => {\n writeLog({ type: 'info', msg: t('dev_command.config_change') });\n },\n 'model-did-not-change': () => {\n writeLog({\n type: 'info',\n msg: t('dev_command.config_didnt_update'),\n });\n },\n 'model-updated': () => {\n clientDevServer.ws.send({ type: 'full-reload' });\n writeLog({ type: 'info', msg: t('dev_command.config_update') });\n },\n });\n },\n onError(error) {\n reportError(error);\n writeLog({ type: 'error', error });\n writeLog({ type: 'info', msg: t('dev_command.config_didnt_update') });\n },\n });\n\n const siteOverrideId = await createSiteOverrideUpdater({\n projectModelWatcher,\n });\n\n return {\n clientDevServerUrl,\n backendDevServerUrl,\n armTag,\n siteOverrideId,\n https,\n };\n }, []);\n\n return match(status, {\n Error: () => null,\n Loading: () => <Spinner text={t('dev_command.dev_environment.loading')} />,\n Success: ({\n result: {\n clientDevServerUrl,\n backendDevServerUrl,\n https,\n armTag,\n siteOverrideId,\n },\n }) => (\n <DevEnvironmentContext.Provider\n value={{\n clientDevServerUrl,\n backendDevServerUrl,\n https,\n logs,\n writeLog,\n siteOverrideId,\n }}\n >\n <ArmTagProvider armTag={armTag}>{children}</ArmTagProvider>\n </DevEnvironmentContext.Provider>\n ),\n });\n};\n\nexport function useDevEnvironment(): DevEnvironment {\n const context = useContext(DevEnvironmentContext);\n if (context === null) {\n throw new Error(\n 'useDevEnvironment() cannot be used without an <DevEnvironmentProvider>'\n );\n }\n return context;\n}\n","import { useCallback } from 'react';\nimport { match } from 'variant';\nimport { deepEqual } from 'fast-equals';\nimport { updateAppManifestWithBaseUrl } from '@wix/cli-app-manifest';\nimport { useARMClient } from '@wix/arm-client';\nimport { useDebugLog } from '@wix/cli-debug-log';\nimport { createAppManifest } from '../../app-manifest/create.js';\nimport { getComponentSourceBuilder } from '../../app-manifest/component-source.js';\nimport type {\n ChangeType,\n ProjectModelWatcher,\n} from '../../app-manifest/project-model-watcher.js';\nimport { readAppConfig, saveAppConfig } from '../../files/app.config.js';\nimport { useProjectModel, type ProjectModel } from '../../model.js';\n\nconst createAppManifestWithBaseUrl = async (\n model: ProjectModel,\n devServerUrl: string\n) => {\n const manifest = await createAppManifest({\n appId: model.config.appId,\n components: model.components,\n componentSourceBuilder: getComponentSourceBuilder({\n model,\n devServerUrl,\n }),\n });\n\n return updateAppManifestWithBaseUrl(manifest, devServerUrl);\n};\n\ninterface CreateOptions {\n devServerUrl: string;\n projectModelWatcher: ProjectModelWatcher;\n onChange: (changeType: ChangeType) => void;\n onError: (e: unknown) => void;\n}\n\nexport function useArmUpdater() {\n const { model } = useProjectModel();\n const writeDebugLog = useDebugLog();\n const { createAppRelease, updateAppRelease } = useARMClient();\n\n return useCallback(\n async ({\n devServerUrl,\n projectModelWatcher,\n onChange,\n onError,\n }: CreateOptions) => {\n const { projectId } = model.config;\n const appManifest = await createAppManifestWithBaseUrl(\n model,\n devServerUrl\n );\n const appConfig = await readAppConfig(model.projectFolder, writeDebugLog);\n\n const createOrUpdateAppRelease = async (tag?: string) => {\n if (tag) {\n const updateState = await updateAppRelease(appManifest, tag);\n return match(updateState, {\n TagUpdated: () => tag,\n TagNotFound: ({ cause }) => {\n writeDebugLog(cause);\n return createAppRelease(appManifest, projectId);\n },\n });\n }\n return createAppRelease(appManifest, projectId);\n };\n\n const armTag = await createOrUpdateAppRelease(appConfig?.devArmTag);\n\n if (armTag !== appConfig?.devArmTag) {\n await saveAppConfig(model.projectFolder, { devArmTag: armTag }).catch(\n (error) => writeDebugLog(error)\n );\n }\n\n projectModelWatcher\n .onChange(async (newModel, changeType) => {\n try {\n if (changeType === 'model-updated') {\n if (newModel.components.length === 0) {\n return;\n }\n\n const updatedAppManifest = await createAppManifestWithBaseUrl(\n newModel,\n devServerUrl\n );\n\n if (!deepEqual(appManifest, updatedAppManifest)) {\n await updateAppRelease(updatedAppManifest, armTag);\n }\n }\n onChange(changeType);\n } catch (e) {\n onError(e);\n }\n })\n .onError(onError);\n\n return armTag;\n },\n [createAppRelease, model, updateAppRelease, writeDebugLog]\n );\n}\n","import { useRef, useCallback, useEffect } from 'react';\nimport type { InlineConfig } from 'vite';\nimport { createServer, type ViteDevServer } from 'vite';\nimport type { ClientViteConfigOptions } from '../../vite/index.js';\nimport { getClientViteConfig, getBackendViteConfig } from '../../vite/index.js';\nimport { getViteServerUrl } from '../../vite/vite-server-url.js';\nimport {\n createCustomLogger,\n type CustomLoggerOptions,\n} from '../../vite/custom-logger.js';\nimport type { ProjectModelWatcher } from '../../app-manifest/project-model-watcher.js';\nimport { useProjectModel } from '../../model.js';\nimport { ConfigType } from '../../vite/vite-config-options.js';\n\ninterface Options {\n projectModelWatcher: ProjectModelWatcher;\n onLog: CustomLoggerOptions['onLog'];\n}\n\nexport function useViteDevServer<T>({\n createConfig,\n}: {\n createConfig: (options: T) => Promise<InlineConfig>;\n}) {\n const devServerRef = useRef<ViteDevServer>();\n\n useEffect(() => {\n return () => {\n devServerRef.current?.close();\n };\n }, []);\n\n return useCallback(\n async (options: T) => {\n const config = await createConfig(options);\n const devServer = await createServer(config);\n\n devServerRef.current = devServer;\n\n await devServer.listen();\n\n return { devServerUrl: getViteServerUrl(devServer), devServer };\n },\n [createConfig]\n );\n}\n\nexport function useClientDevServer({ https }: { https: boolean }) {\n const { model } = useProjectModel();\n\n const createDevServer = useViteDevServer<Options & ClientViteConfigOptions>({\n createConfig: ({ onLog, projectModelWatcher, baseBackendUrl }) => {\n return getClientViteConfig(\n model,\n {\n type: ConfigType.dev,\n https,\n projectModelWatcher,\n customLogger: createCustomLogger({ onLog }),\n },\n { baseBackendUrl }\n );\n },\n });\n\n return createDevServer;\n}\n\nexport function useBackendDevServer({ https }: { https: boolean }) {\n const { model } = useProjectModel();\n\n const createDevServer = useViteDevServer<Options>({\n createConfig: async ({ onLog, projectModelWatcher }) => {\n return getBackendViteConfig(model, {\n type: ConfigType.dev,\n https,\n projectModelWatcher,\n customLogger: createCustomLogger({ onLog }),\n });\n },\n });\n\n return createDevServer;\n}\n","import type { Logger, Rollup } from 'vite';\n\nexport type LogType = 'error' | 'warning' | 'info';\n\nexport interface CustomLoggerOptions {\n onLog: (type: LogType, msg: string) => void;\n}\n\nexport function createCustomLogger({ onLog }: CustomLoggerOptions): Logger {\n const loggedErrors = new WeakSet<Error | Rollup.RollupError>();\n const warnedMessages = new Set<string>();\n\n const logger: Logger = {\n hasWarned: false,\n info(msg) {\n onLog('info', msg);\n },\n warn(msg) {\n logger.hasWarned = true;\n onLog('warning', msg);\n },\n warnOnce(msg) {\n if (warnedMessages.has(msg)) return;\n logger.hasWarned = true;\n onLog('warning', msg);\n warnedMessages.add(msg);\n },\n error(msg, opts) {\n logger.hasWarned = true;\n onLog('error', msg);\n if (opts?.error) {\n loggedErrors.add(opts.error);\n }\n },\n clearScreen() {},\n hasErrorLogged(error) {\n return loggedErrors.has(error);\n },\n };\n\n return logger;\n}\n","import React, {\n useCallback,\n useEffect,\n useState,\n useMemo,\n type ReactNode,\n type FC,\n} from 'react';\nimport { DEV_LOG_PATH } from '@wix/cli-app-definitions';\nimport { Trans } from '@wix/cli-i18n';\nimport { createRendererToString, Alert, Box, Text } from '@wix/cli-ui-kit';\nimport { DevLogStream } from '../../../files/dev.log.js';\nimport { useProjectModel } from '../../../model.js';\nimport type { LogType } from '../../../vite/custom-logger.js';\nimport { DevEnvLogLine } from './DevEnvLogLine.js';\n\ntype GenericLog = (\n | {\n type: LogType;\n msg: ReactNode;\n error?: never;\n }\n | {\n type: 'error';\n msg?: never;\n error: unknown;\n }\n) & { prefix?: LogPrefix };\n\ntype LogPrefix = 'app' | 'vite' | 'backend';\n\nexport type WriteLogFn = (log: GenericLog) => void;\n\nexport type DevEnvLog = GenericLog & {\n timestamp: Date;\n};\n\nconst ErrorMsg: FC = () => (\n <Box flexDirection=\"column\">\n <Alert type=\"error\">\n <Trans\n i18nKey=\"general.write_dev_log_failure.message\"\n components={[<Text bold />]}\n values={{ path: DEV_LOG_PATH }}\n />\n </Alert>\n <Box paddingTop={1}>\n <Alert type=\"insight\">\n <Trans i18nKey=\"general.write_dev_log_failure.hint\" />\n </Alert>\n </Box>\n </Box>\n);\n\nconst MAX_LOGS_TO_SHOW = 5;\n\nfunction isMessageFiltered(message: string) {\n if (/Port \\d{1,5} is in use, trying another one/.test(message)) {\n return true;\n }\n\n return false;\n}\n\nexport function useDevEnvLogs() {\n const { model } = useProjectModel();\n const [logs, setLogs] = useState<DevEnvLog[]>([]);\n\n const insertLog = useCallback((genericLog: GenericLog) => {\n const log = { ...genericLog, timestamp: new Date() };\n setLogs((logs) => {\n const newLogs = [...logs, log];\n if (newLogs.length > MAX_LOGS_TO_SHOW) {\n newLogs.shift();\n }\n return newLogs;\n });\n return log;\n }, []);\n\n const { renderer, stream } = useMemo(() => {\n return {\n renderer: createRendererToString(),\n stream: new DevLogStream(model.projectFolder, {\n onError() {\n insertLog({ type: 'error', msg: <ErrorMsg /> });\n },\n }),\n };\n }, [insertLog, model.projectFolder]);\n\n const writeLog = useCallback<WriteLogFn>(\n (genericLog) => {\n if (genericLog.msg && isMessageFiltered(genericLog.msg.toString())) {\n return;\n }\n\n const log = insertLog(genericLog);\n const content = renderer.render(<DevEnvLogLine {...log} />);\n\n stream.write(content);\n },\n [insertLog, renderer, stream]\n );\n\n useEffect(() => {\n return () => {\n renderer.unmount();\n stream.close();\n };\n }, [renderer, stream]);\n\n return { logs, writeLog };\n}\n","import { EOL } from 'node:os';\nimport { createWriteStream, type WriteStream } from 'node:fs';\nimport { getDevLogPath } from '@wix/cli-app-definitions';\n\nexport class DevLogStream {\n private drain = false;\n private readonly stream: WriteStream;\n\n constructor(\n projectFolder: string,\n private readonly opts: { onError: (err: Error) => void }\n ) {\n this.stream = createWriteStream(getDevLogPath(projectFolder), {\n flags: 'w',\n });\n\n this.stream.on('error', this.opts.onError);\n }\n\n write = (content: string) => {\n if (this.drain) {\n this.stream.once('drain', () => {\n this.drain = false;\n this.write(content);\n });\n return;\n }\n\n const written = this.stream.write(content.concat(EOL), (err) => {\n if (err) {\n this.opts.onError(err);\n }\n });\n if (!written) {\n this.drain = true;\n this.stream.once('drain', () => {\n this.drain = false;\n });\n }\n };\n\n close = () => {\n this.stream.close();\n };\n}\n","import React, { type FC } from 'react';\nimport { Box, Text } from '@wix/cli-ui-kit';\nimport { ErrorViewer } from '@wix/cli-error-reporting';\nimport type { DevEnvLog } from './useDevEnvLogs.js';\n\nexport const DevEnvLogLine: FC<DevEnvLog> = ({\n type,\n msg,\n error,\n prefix = 'app',\n timestamp,\n}) => {\n return (\n <Box columnGap={1}>\n <Box flexShrink={0}>\n <Text skin=\"secondary\">{timestamp.toLocaleTimeString()}</Text>\n </Box>\n <Box flexShrink={0}>\n <Text skin={type} bold>\n [{prefix}]\n </Text>\n </Box>\n <Box>\n {type === 'error' && error ? (\n <ErrorViewer error={error} />\n ) : typeof msg === 'string' ? (\n <Text>{msg}</Text>\n ) : (\n msg\n )}\n </Box>\n </Box>\n );\n};\n","import { useCallback } from 'react';\nimport { deepEqual } from 'fast-equals';\nimport { useSiteOverrideClient } from '@wix/site-override-client';\nimport { useDebugLog } from '@wix/cli-debug-log';\nimport type { ProjectModelWatcher } from '../../app-manifest/project-model-watcher.js';\nimport { useProjectModel } from '../../model.js';\nimport { createSiteOverrides } from '../../site-override/createSiteOverrides.js';\nimport { useSiteId } from '../../site-id/useSiteId.js';\nimport { readAppConfig, saveAppConfig } from '../../files/app.config.js';\n\nexport function useSiteOverrideUpdater() {\n const { model } = useProjectModel();\n const { site } = useSiteId();\n const writeDebugLog = useDebugLog();\n const { createOverride } = useSiteOverrideClient();\n\n return useCallback(\n async ({\n projectModelWatcher,\n }: {\n projectModelWatcher: ProjectModelWatcher;\n }) => {\n const { appId } = model.config;\n const appConfig = await readAppConfig(model.projectFolder, writeDebugLog);\n let overrides = createSiteOverrides(model) ?? {};\n\n const { id: siteOverrideId } = await createOverride({\n appId,\n siteId: site.id,\n overrides,\n siteOverrideId: appConfig?.devSiteOverrideId,\n });\n\n projectModelWatcher.onChange(async (newModel, changeType) => {\n if (changeType === 'model-updated') {\n const updatedOverrides = createSiteOverrides(newModel) ?? {};\n\n if (!deepEqual(overrides, updatedOverrides)) {\n await createOverride({\n appId,\n siteId: site.id,\n overrides: updatedOverrides,\n siteOverrideId,\n });\n overrides = updatedOverrides;\n }\n }\n });\n\n if (siteOverrideId !== appConfig?.devSiteOverrideId) {\n await saveAppConfig(model.projectFolder, {\n devSiteOverrideId: siteOverrideId,\n }).catch((error) => writeDebugLog(error));\n }\n\n return siteOverrideId;\n },\n [createOverride, model, site.id, writeDebugLog]\n );\n}\n","export { SiteOverrideClient } from './client.js';\nexport { useSiteOverrideClient } from './useSiteOverrideClient.js';\n","import type { HttpClient } from '@wix/cli-http-client';\nimport type { Options } from 'p-retry';\nimport pRetry from 'p-retry';\nimport { createOverride } from '@wix/ambassador-cli-site-override-service-v1-site-override/http';\nimport { isHttpError } from '@wix/cli-http-client';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport type { ComponentOverride } from '@wix/ambassador-cli-site-override-service-v1-site-override/types';\nimport { createOverrideSchema } from './schemas.js';\n\nexport class SiteOverrideClient {\n private readonly retryOptions: Options;\n\n constructor(private readonly httpClient: HttpClient) {\n const { minRetryTimeout } = getTestOverrides();\n\n this.retryOptions = {\n retries: 3,\n minTimeout: minRetryTimeout,\n maxTimeout: 3 * 1000,\n };\n }\n\n public createOverride = async ({\n appId,\n siteId,\n overrides,\n siteOverrideId,\n }: {\n appId: string;\n siteId: string;\n overrides: Record<string, ComponentOverride>;\n siteOverrideId?: string;\n }) => {\n try {\n const { data } = await pRetry(\n () =>\n this.httpClient.request(\n createOverride({\n siteOverride: {\n id: siteOverrideId,\n appId,\n siteId,\n overrides,\n },\n })\n ),\n this.retryOptions\n );\n\n return createOverrideSchema.parse(data).siteOverride;\n } catch (error) {\n if (isHttpError(error) && error.response?.status === 403) {\n if (\n error.response.data?.details?.applicationError?.code ===\n 'PERMISSION_DENIED_FOR_SITE'\n ) {\n throw new CliError({\n code: CliErrorCode.SitePermissionDenied({ siteId }),\n cause: error,\n });\n }\n\n throw new CliError({\n code: CliErrorCode.AppPermissionDenied({ appId }),\n cause: error,\n });\n }\n\n throw new CliError({\n code: CliErrorCode.FailedToCreateSiteOverride(),\n cause: error,\n });\n }\n };\n}\n",null,"import { z } from 'zod';\n\nexport const createOverrideSchema = z.object({\n siteOverride: z.object({\n id: z.string(),\n }),\n});\n","import { useMemo } from 'react';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { SiteOverrideClient } from './client.js';\n\nexport function useSiteOverrideClient() {\n const httpClient = useHttpClient({ type: 'backoffice' });\n return useMemo(() => new SiteOverrideClient(httpClient), [httpClient]);\n}\n","import { isType } from 'variant';\nimport {\n Type,\n type ComponentOverride,\n} from '@wix/ambassador-cli-site-override-service-v1-site-override/types';\nimport type { ProjectModel } from '../model.js';\nimport { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\n\nexport function createSiteOverrides(model: ProjectModel) {\n const componentsToOverride = model.components.filter(\n isType(DevCenterComponent.EmbeddedScript)\n );\n\n if (componentsToOverride.length === 0) {\n return null;\n }\n\n return componentsToOverride.reduce<Record<string, ComponentOverride>>(\n (acc, component) => {\n const paramsOverride = component.paramsOverride || {};\n\n return {\n ...acc,\n [component.id]: {\n type: Type.EMBEDDED_SCRIPT,\n componentId: component.id,\n embeddedScriptOptions: { parameters: paramsOverride },\n },\n };\n },\n {}\n );\n}\n",null,"import React, { type FC, useState } from 'react';\nimport { match } from 'variant';\nimport { HomeScreen } from './HomeScreen.js';\nimport { SiteSelectorScreen } from './SiteSelectorScreen.js';\nimport { ScreenState } from './screen-state.js';\nimport { DashboardScreen } from './DashboardScreen.js';\nimport { BackendScreen } from './BackendScreen.js';\n\nexport const DevCommandScreens: FC = () => {\n const [screen, setScreen] = useState<ScreenState>(ScreenState.Home());\n\n return match(screen, {\n Home: () => <HomeScreen onScreenChange={setScreen} />,\n SiteSelector: () => <SiteSelectorScreen onScreenChange={setScreen} />,\n DashboardScreen: ({ selectorType }) => (\n <DashboardScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n BackendScreen: ({ selectorType }) => (\n <BackendScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n });\n};\n","import React, { type FC } from 'react';\nimport {\n Key,\n Box,\n Text,\n SuccessIcon,\n InfoIcon,\n PointerIcon,\n Link,\n useInput,\n Alert,\n} from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { openBrowser } from '@wix/user-browser';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { isType } from 'variant';\nimport { useSiteId } from '../../site-id/index.js';\nimport { ScreenState } from './screen-state.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport { DevEnvLogsViewer } from './DevEnvLogsViewer.js';\nimport { PlatformSelector } from '../Platform/PlatformSelector.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport { useWixCliAppBi } from '../../bi';\nimport { usePlatform } from '../Platform/usePlatform.js';\nimport { useProjectModel } from '../../model.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const HomeScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { site } = useSiteId();\n const bi = useWixCliAppBi();\n const { clientDevServerUrl, https, writeLog } = useDevEnvironment();\n const { hasSinglePlatform } = usePlatform();\n const { hasExtensions, dashboardExtensions } = useExtensions();\n const { model } = useProjectModel();\n\n const openDevServerInBrowser = async () => {\n try {\n await openBrowser(clientDevServerUrl);\n } catch (error) {\n writeLog({\n type: 'error',\n prefix: 'app',\n msg: (\n <Alert type=\"error\">\n <Trans\n i18nKey=\"dev_command.dev_environment.https_url.failed_to_open\"\n components={[<Link url={clientDevServerUrl} />]}\n />\n </Alert>\n ),\n });\n }\n };\n\n useInput(async (input) => {\n if (input === 'c') {\n bi.cliAction({\n question: t('dev_command.dev_site.change'),\n action: 'change_site',\n key: input,\n });\n onScreenChange(ScreenState.SiteSelector());\n }\n if (input === 'a' && https) {\n bi.cliAction({\n question: t('dev_command.dev_environment.https_url.open_info'),\n action: 'dev_server',\n key: input,\n });\n await openDevServerInBrowser();\n }\n });\n\n return (\n <>\n <Box gap={1}>\n <Text skin=\"success\">\n <SuccessIcon />\n </Text>\n <Trans i18nKey=\"dev_command.dev_environment.started\" />\n </Box>\n <Box gap={1}>\n <InfoIcon />\n <Trans\n i18nKey=\"dev_command.dev_environment.url\"\n components={[<Link url={clientDevServerUrl} />]}\n />\n </Box>\n {https && (\n <Box paddingLeft={2}>\n <Text skin=\"secondary\">\n <Trans\n components={[<Key value=\"A\" />]}\n i18nKey=\"dev_command.dev_environment.https_url.open_info\"\n />\n </Text>\n </Box>\n )}\n <Box gap={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box paddingLeft={2}>\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"dev_command.dev_site.change\"\n components={[<Key value=\"C\" />]}\n />\n </Text>\n </Box>\n <Box paddingTop={1} paddingBottom={1} flexDirection=\"column\">\n {!hasExtensions() ? (\n <Trans\n i18nKey=\"general.platform.none\"\n // Original link is:\n // https://dev.wix.com/docs/build-apps/developer-tools/cli/get-started/about-the-wix-cli-for-apps\n components={[<Link url=\"https://wix.to/b7o4Ml0\" />]}\n />\n ) : (\n <>\n {hasSinglePlatform(PlatformType.Dashboard()) &&\n model.backendComponents.length === 0 &&\n dashboardExtensions.some(\n (dashboardExtension) =>\n !isType(dashboardExtension, 'DashboardModal')\n ) ? (\n <DashboardNumericViewer\n onViewMore={(selectorType) =>\n onScreenChange(\n ScreenState.DashboardScreen({\n selectorType,\n })\n )\n }\n />\n ) : (\n <>\n <Trans\n i18nKey=\"general.view_changes\"\n components={[<Text skin=\"secondary\" />]}\n />\n <PlatformSelector\n onMultipleDashboardExtensionSelection={() =>\n onScreenChange(ScreenState.DashboardScreen())\n }\n onMultipleBackendComponentSelection={() =>\n onScreenChange(ScreenState.BackendScreen())\n }\n />\n </>\n )}\n </>\n )}\n </Box>\n <DevEnvLogsViewer />\n </>\n );\n};\n","import { fields, variant, type VariantOf } from 'variant';\nimport type { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { BackendScreenSelector } from './BackendScreen.js';\n\nexport const ScreenState = variant({\n Home: {},\n SiteSelector: {},\n DashboardScreen: fields<{ selectorType?: DashboardScreenSelector }>(),\n BackendScreen: fields<{ selectorType?: BackendScreenSelector }>(),\n});\n\nexport type ScreenState = VariantOf<typeof ScreenState>;\n","import React, { type FC } from 'react';\nimport { Text, Box } from '@wix/cli-ui-kit';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { DEV_LOG_PATH } from '@wix/cli-app-definitions';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport { DevEnvLogLine } from './devEnvLogs/DevEnvLogLine.js';\n\nexport const DevEnvLogsViewer: FC = () => {\n const { t } = useTranslation();\n const { logs } = useDevEnvironment();\n const isEmpty = !logs.length;\n\n return (\n <>\n <Box gap={1}>\n <Trans\n i18nKey=\"dev_command.dev_env_logs.title\"\n components={[<Text skin={isEmpty ? 'secondary' : 'standard'} />]}\n values={{ path: DEV_LOG_PATH }}\n />\n </Box>\n {isEmpty && (\n <Text skin=\"secondary\">{t('dev_command.dev_env_logs.empty')}</Text>\n )}\n {logs.map((log) => {\n return <DevEnvLogLine key={log.timestamp.getTime()} {...log} />;\n })}\n </>\n );\n};\n","import React, { useCallback, type FC, useMemo } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { PointerSmallIcon, Key, useInput, Text, Box } from '@wix/cli-ui-kit';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport {\n openPage,\n resolveDashboardExtensionUrl,\n resolvePlatformUrl,\n useEnvConfig,\n} from '../extensions/utils.js';\nimport { useDevEnvironment } from '../DevCommand/DevEnvironment.js';\nimport { useWixCliAppBi } from '../../bi';\nimport { useProjectModel } from '../../model.js';\nimport { usePlatform } from './usePlatform.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\ntype PlatformOptionProps = {\n inputKey: string;\n label: string;\n suffix?: React.ReactNode;\n disabled?: boolean;\n};\n\nconst PlatformOption: FC<PlatformOptionProps> = ({\n label,\n inputKey,\n suffix,\n disabled,\n}) => {\n const getTextSkin = () => (disabled ? 'secondary' : 'standard');\n\n return (\n <Box>\n <Box marginRight={1}>\n <Box marginRight={1}>\n <Text skin={getTextSkin()}>\n <PointerSmallIcon /> <Key value={inputKey} /> -\n </Text>\n </Box>\n <Box gap={1}>\n <Text skin={getTextSkin()}>{label}</Text>\n </Box>\n </Box>\n <Text skin={getTextSkin()}>{suffix}</Text>\n </Box>\n );\n};\n\ninterface PlatformSelector {\n onMultipleDashboardExtensionSelection: () => void;\n onMultipleBackendComponentSelection: () => void;\n}\n\nexport const PlatformSelector: FC<PlatformSelector> = ({\n onMultipleDashboardExtensionSelection,\n onMultipleBackendComponentSelection,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { writeLog, siteOverrideId } = useDevEnvironment();\n const { model } = useProjectModel();\n const { isPlatformExists } = usePlatform();\n const { dashboardExtensions } = useExtensions();\n const { hasComponentByType } = useBackendComponents();\n const envConfig = useEnvConfig();\n\n const openPlatform = useCallback(\n (platformType: PlatformType) => {\n openPage(\n {\n title: platformType.type,\n url: resolvePlatformUrl({\n envConfig,\n platformType,\n siteOverrideId,\n }),\n },\n writeLog\n );\n },\n [envConfig, writeLog, siteOverrideId]\n );\n\n useInput((input) => {\n if (input === 'd') {\n bi.cliAction({\n question: t('general.view_changes'),\n action: t('general.platform.dashboard'),\n key: input,\n });\n if (dashboardExtensions.length === 1) {\n openPage(\n {\n title: 'Dashboard',\n url: resolveDashboardExtensionUrl({\n envConfig,\n extension: dashboardExtensions[0],\n }),\n },\n writeLog\n );\n } else {\n onMultipleDashboardExtensionSelection();\n }\n }\n if (input === 'e') {\n bi.cliAction({\n question: t('general.view_changes'),\n action: t('general.platform.editor'),\n key: input,\n });\n openPlatform(PlatformType.Editor());\n }\n if (input === 's' && envConfig.site.viewUrl) {\n bi.cliAction({\n question: t('general.view_changes'),\n action: t('general.platform.site'),\n key: input,\n });\n openPlatform(PlatformType.Site());\n }\n if (input === 'b' && model.backendComponents.length > 0) {\n bi.cliAction({\n question: t('general.view_changes'),\n action: t('general.platform.backend'),\n key: input,\n });\n onMultipleBackendComponentSelection();\n }\n });\n\n const dashboardOptionSuffix = useMemo(() => {\n if (dashboardExtensions.length === 0) {\n return null;\n }\n if (dashboardExtensions.length === 1) {\n return <Text skin=\"secondary\"> - {dashboardExtensions[0].route}</Text>;\n }\n return <Text>{String.fromCodePoint(0x25bc)}</Text>; // ▼\n }, [dashboardExtensions]);\n\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n {isPlatformExists(PlatformType.Site()) && (\n <PlatformOption\n inputKey=\"S\"\n label={\n envConfig.site.viewUrl\n ? t('general.platform.site')\n : t('general.platform.unpublished_site')\n }\n disabled={!envConfig.site.viewUrl}\n />\n )}\n {isPlatformExists(PlatformType.Editor()) && (\n <PlatformOption inputKey=\"E\" label={t('general.platform.editor')} />\n )}\n {isPlatformExists(PlatformType.Dashboard()) && (\n <PlatformOption\n inputKey=\"D\"\n label={t('general.platform.dashboard')}\n suffix={dashboardOptionSuffix}\n />\n )}\n {(hasComponentByType('Event') || hasComponentByType('ServicePlugin')) && (\n <PlatformOption\n inputKey=\"B\"\n label={t('general.platform.backend')}\n suffix={<Text>{String.fromCodePoint(0x25bc)}</Text>} // ▼\n />\n )}\n </Box>\n );\n};\n","export { useWixCliAppBi } from './useWixCliAppBi.js';\n","import { useMemo } from 'react';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport { wixCliAppBiEvents } from './events.js';\n\nexport function useWixCliAppBi() {\n const biLogger = useBiLogger();\n return useMemo(() => wixCliAppBiEvents(biLogger), [biLogger]);\n}\n","import { useCallback, useMemo } from 'react';\nimport { typeCatalog } from 'variant';\nimport { BackendComponent } from './definitions.js';\nimport { useProjectModel } from '../model.js';\n\nconst BackendComponentsTypes = typeCatalog(BackendComponent);\nexport type BackendComponentType = keyof typeof BackendComponentsTypes;\ntype BackendComponentMap = {\n [T in BackendComponentType]: BackendComponent<T>[];\n};\n\nexport function useBackendComponents() {\n const { model } = useProjectModel();\n\n const backendComponentsByType = useMemo(() => {\n const backendComponentsMap =\n model.backendComponents.reduce<BackendComponentMap>(\n (acc, backendComponent) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n acc[backendComponent.type].push(backendComponent as any);\n return acc;\n },\n {\n Api: [],\n Event: [],\n ServicePlugin: [],\n }\n );\n backendComponentsMap.Api = backendComponentsMap.Api.sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n backendComponentsMap.Event = backendComponentsMap.Event.sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n backendComponentsMap.ServicePlugin =\n backendComponentsMap.ServicePlugin.sort((a, b) =>\n a.componentName.localeCompare(b.componentName)\n );\n return backendComponentsMap;\n }, [model.backendComponents]);\n\n const hasComponentByType = useCallback(\n (componentType?: BackendComponentType) =>\n componentType\n ? backendComponentsByType[componentType].length > 0\n : model.backendComponents.length > 0,\n [backendComponentsByType, model.backendComponents]\n );\n\n const getBackendComponent = useCallback(\n <T extends BackendComponentType>(componentType: T) =>\n backendComponentsByType[componentType],\n [backendComponentsByType]\n );\n\n return {\n backendComponentsByType,\n getBackendComponent,\n hasComponentByType,\n };\n}\n","import React, { type FC, useMemo, useCallback } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { lookup, match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport {\n openPage,\n resolveDashboardExtensionUrl,\n useEnvConfig,\n} from '../extensions/utils.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { NumericViewer } from '../NumericViewer/index.js';\nimport { NumericOption } from '../NumericViewer/NumericViewer.js';\nimport { useWixCliAppBi } from '../../bi';\n\nconst MAX_EXTENSIONS = 9;\nconst MAX_DASHBOARD_PAGES = 3;\nconst MAX_PAGE_PLUGINS = 3;\nconst MAX_MENU_PLUGINS = 3;\n\ninterface Props {\n onViewMore: (dashboardScreenSelector: DashboardScreenSelector) => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose?: () => void;\n}\n\nexport const DashboardNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const { getExtensions } = useExtensions();\n const { writeLog } = useDevEnvironment();\n const envConfig = useEnvConfig();\n const bi = useWixCliAppBi();\n\n const dashboardExtensions = useMemo(\n () => ({\n dashboardPages: getExtensions('DashboardPage'),\n dashboardMenuPlugins: getExtensions('DashboardMenuPlugin'),\n dashboardPlugins: getExtensions('DashboardPlugin'),\n }),\n [getExtensions]\n );\n\n const dashboardPagesData = dashboardExtensions.dashboardPages.slice(\n 0,\n dashboardExtensions.dashboardPages.length > MAX_DASHBOARD_PAGES\n ? MAX_DASHBOARD_PAGES - 1\n : dashboardExtensions.dashboardPages.length\n );\n\n const dashboardPagesShowMoreIndex =\n dashboardExtensions.dashboardPages.length > dashboardPagesData.length\n ? dashboardPagesData.length + 1\n : undefined;\n\n const dashboardPagesCount = Math.max(\n dashboardPagesData.length,\n dashboardPagesShowMoreIndex || 0\n );\n\n const maxMenuPlugins = Math.min(\n MAX_MENU_PLUGINS,\n Math.floor((MAX_EXTENSIONS - dashboardPagesCount) / 2)\n );\n\n const dashboardMenuPluginsData =\n dashboardExtensions.dashboardMenuPlugins.slice(\n 0,\n dashboardExtensions.dashboardMenuPlugins.length > maxMenuPlugins\n ? maxMenuPlugins - 1\n : dashboardExtensions.dashboardMenuPlugins.length\n );\n\n const dashboardMenuPluginsShowMoreIndex =\n dashboardExtensions.dashboardMenuPlugins.length >\n dashboardMenuPluginsData.length\n ? dashboardMenuPluginsData.length + dashboardPagesCount + 1\n : undefined;\n\n const dashboardMenuPluginsCount = Math.max(\n dashboardMenuPluginsData.length + dashboardPagesCount,\n dashboardMenuPluginsShowMoreIndex || 0\n );\n\n const maxPagePlugins = Math.min(\n MAX_PAGE_PLUGINS,\n MAX_EXTENSIONS - dashboardMenuPluginsCount\n );\n\n const dashboardPluginsData = dashboardExtensions.dashboardPlugins.slice(\n 0,\n dashboardExtensions.dashboardPlugins.length > maxPagePlugins\n ? maxPagePlugins - 1\n : dashboardExtensions.dashboardPlugins.length\n );\n\n const dashboardPluginsShowMoreIndex =\n dashboardExtensions.dashboardPlugins.length > dashboardPluginsData.length\n ? dashboardPluginsData.length + dashboardMenuPluginsCount + 1\n : undefined;\n\n const visibleItems: NumericOption<\n DevCenterComponent<DashboardExtension>,\n DashboardExtension\n >[] = [\n ...dashboardPagesData.map((page) =>\n NumericOption.Item({\n title: page.title,\n description: page.route,\n value: page,\n })\n ),\n ...(dashboardPagesShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPage' as DashboardExtension)]\n : []),\n ...dashboardMenuPluginsData.map((menuPlugin) =>\n NumericOption.Item({\n title: menuPlugin.title,\n description: menuPlugin.route,\n value: menuPlugin,\n })\n ),\n ...(dashboardMenuPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardMenuPlugin' as DashboardExtension)]\n : []),\n ...dashboardPluginsData.map((pagePlugin) =>\n NumericOption.Item({\n title: pagePlugin.title,\n description: pagePlugin.route,\n value: pagePlugin,\n })\n ),\n ...(dashboardPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPlugin' as DashboardExtension)]\n : []),\n ];\n\n const getLabelKey = (\n dashboardExtension: DevCenterComponent<DashboardExtension>\n ) => {\n return match(\n dashboardExtension,\n lookup({\n DashboardPage: 'general.dashboard_pages_viewer.title',\n DashboardMenuPlugin: 'general.dashboard_menu_plugins_viewer.title',\n DashboardPlugin: 'general.dashboard_plugins_viewer.title',\n DashboardModal: '', // NOTE: No key for this type\n })\n );\n };\n\n useInput((input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const itemIndex = inputNumber - 1;\n const item = visibleItems.at(itemIndex);\n if (item) {\n match(item, {\n Item: (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n action: item.title,\n key: input,\n });\n handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n action: 'view_more',\n key: input,\n });\n onViewMore(\n DashboardScreenSelector.Arrow({\n dashboardExtension: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n async (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl({\n envConfig,\n extension: dashboardExtension,\n });\n await openPage({ url, title: dashboardExtension.title }, writeLog);\n onSelect?.(dashboardExtension);\n },\n [onSelect, writeLog, envConfig]\n );\n\n const dashboardPages = visibleItems.slice(0, dashboardPagesCount);\n const dashboardMenuPlugins = visibleItems.slice(\n dashboardPagesCount,\n dashboardMenuPluginsCount\n );\n const dashboardPlugins = visibleItems.slice(\n dashboardMenuPluginsCount,\n visibleItems.length\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {dashboardPages.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.dashboard_pages_viewer.title\"\n items={dashboardPages}\n />\n )}\n {dashboardMenuPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardPagesCount}\n titleKey=\"general.dashboard_menu_plugins_viewer.title\"\n items={dashboardMenuPlugins}\n />\n )}\n {dashboardPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardMenuPluginsCount}\n titleKey=\"general.dashboard_plugins_viewer.title\"\n items={dashboardPlugins}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React, { type FC } from 'react';\nimport { Key, Text, useInput } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { useWixCliAppBi } from '../../bi';\n\ninterface Props {\n onClose: () => void;\n}\n\nexport const CloseScreen: FC<Props> = ({ onClose }) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n\n useInput((_, key) => {\n if (key.escape) {\n bi.cliAction({\n question: t('general.close_screen'),\n action: 'close',\n key: 'esc',\n });\n onClose();\n }\n });\n\n return (\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"general.close_screen\"\n components={[<Key value=\"esc\" />]}\n />\n </Text>\n );\n};\n","import React, { useState, type FC } from 'react';\nimport { fields, match, variant, type VariantOf } from 'variant';\nimport { DashboardArrowViewer } from './DashboardArrowViewer.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\n\nexport const DashboardScreenSelector = variant({\n Arrow: fields<{\n dashboardExtension: DashboardExtension;\n }>(),\n Numeric: {},\n});\n\nexport type DashboardScreenSelector = VariantOf<typeof DashboardScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n initialSelectorType?: DashboardScreenSelector;\n}\n\nexport const DashboardScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = DashboardScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<DashboardScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ dashboardExtension }) => (\n <DashboardArrowViewer\n dashboardExtension={dashboardExtension}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <DashboardNumericViewer\n onViewMore={setSelectorType}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { useCallback, type FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { match, lookup } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport {\n openPage,\n resolveDashboardExtensionUrl,\n useEnvConfig,\n} from '../extensions/utils.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport {\n useExtensions,\n type DashboardExtension,\n} from '../extensions/useExtensions.js';\nimport { useWixCliAppBi } from '../../bi';\n\ninterface Props {\n dashboardExtension: DashboardExtension;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose: () => void;\n}\n\nexport const DashboardArrowViewer: FC<Props> = ({\n dashboardExtension,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const { writeLog } = useDevEnvironment();\n const { getExtensions } = useExtensions();\n const envConfig = useEnvConfig();\n const bi = useWixCliAppBi();\n\n const getLabelKey = useCallback(\n () =>\n match(\n dashboardExtension,\n lookup({\n DashboardPlugin:\n 'dev_command.dashboard_page_plugin_screen.select_label',\n DashboardMenuPlugin:\n 'dev_command.dashboard_menu_plugin_screen.select_label',\n DashboardPage: 'dev_command.dashboard_pages_screen.select_label',\n DashboardModal: 'dev_command.dashboard_modal_screen.select_label',\n })\n ),\n [dashboardExtension]\n );\n\n const handleSubmit = useCallback(\n (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl({\n envConfig,\n extension: dashboardExtension,\n });\n bi.cliAction({\n question: t(getLabelKey()),\n action: dashboardExtension.title,\n key: 'enter',\n });\n openPage({ url, title: dashboardExtension.title }, writeLog);\n onSelect?.(dashboardExtension);\n },\n [envConfig, bi, t, getLabelKey, writeLog, onSelect]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<DevCenterComponent<DashboardExtension>>\n label={t(getLabelKey())}\n options={getExtensions(dashboardExtension).map(\n (dashboardExtensionInstance) => ({\n key: dashboardExtensionInstance.id,\n title: dashboardExtensionInstance.title,\n description: dashboardExtensionInstance.route,\n value: dashboardExtensionInstance,\n })\n )}\n onSubmit={({ value: dashboardExtensionInstance }) =>\n handleSubmit(dashboardExtensionInstance)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","export { NumericViewer, type NumericOption } from './NumericViewer.js';\n","import React, { type FC, type ReactNode } from 'react';\nimport { Box, Text, Key, PointerSmallIcon } from '@wix/cli-ui-kit';\nimport { Trans } from '@wix/cli-i18n';\nimport { variant, onTerms, fields, match, payload } from 'variant';\nimport type { TypeNames, GVariantOf } from 'variant';\n\nconst ListItem: FC<{\n itemNumber: number;\n children: ReactNode;\n}> = ({ itemNumber, children }) => {\n const keyValue = `${itemNumber}`;\n return (\n <Box flexDirection=\"row\" gap={1}>\n <Text>\n <PointerSmallIcon /> <Key value={keyValue} /> -\n </Text>\n {children}\n </Box>\n );\n};\n\nexport const NumericOption = variant(\n onTerms(({ I, V }) => ({\n Item: fields<{ title: string; description?: string; value: typeof I }>(),\n ViewMore: payload(V),\n }))\n);\n\nexport type NumericOption<\n I,\n V,\n TType extends TypeNames<typeof NumericOption> = undefined\n> = GVariantOf<typeof NumericOption, TType, { I: I; V: V }>;\n\ninterface Props<I, V> {\n startIndex: number;\n titleKey: string;\n items: NumericOption<I, V>[];\n}\n\nexport function NumericViewer<I, V>({\n startIndex,\n titleKey,\n items,\n}: Props<I, V>) {\n return (\n <Box flexDirection=\"column\">\n <Trans i18nKey={titleKey} />\n <Box paddingLeft={2} flexDirection=\"column\">\n {items.map((item, index) => (\n <ListItem\n key={startIndex + index + 1}\n itemNumber={startIndex + index + 1}\n >\n {match(item, {\n Item: ({ title, description }) => (\n <Box flexDirection=\"row\" gap={1}>\n <Text>{title}</Text>\n {description && <Text skin=\"secondary\">({description})</Text>}\n </Box>\n ),\n ViewMore: () => (\n <Trans i18nKey=\"general.numeric_viewer.show_more\" />\n ),\n })}\n </ListItem>\n ))}\n </Box>\n </Box>\n );\n}\n","import React, { type FC, useState, useCallback } from 'react';\nimport { Alert, Box } from '@wix/cli-ui-kit';\nimport { ErrorViewer, useErrorReporter } from '@wix/cli-error-reporting';\nimport type { Site } from '@wix/site-list-client';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { SiteSelector } from '@wix/cli-site-selector';\nimport { useProjectModel } from '../../model.js';\nimport { useSiteId } from '../../site-id/index.js';\nimport { CloseScreen } from '../CloseScreen';\nimport { ScreenState } from './screen-state.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const SiteSelectorScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const { setSite } = useSiteId();\n const { reportError } = useErrorReporter();\n const [error, setError] = useState<unknown>(null);\n\n const handleError = useCallback(\n (error: unknown) => {\n reportError(error);\n setError(error);\n },\n [reportError, setError]\n );\n\n const handleSubmit = useCallback(\n async (site: Site) => {\n try {\n await setSite(site);\n onScreenChange(ScreenState.Home());\n } catch (e) {\n handleError(e);\n }\n },\n [setSite, onScreenChange, handleError]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SiteSelector\n appId={model.config.appId}\n onSubmit={handleSubmit}\n onError={handleError}\n />\n {error ? (\n <ErrorViewer\n error={error}\n systemErrorOverride={\n <Alert type=\"error\">{t('dev_command.site_selector.error')}</Alert>\n }\n />\n ) : null}\n </Box>\n <CloseScreen onClose={() => onScreenChange(ScreenState.Home())} />\n </Box>\n );\n};\n","export { CloseScreen } from './CloseScreen.js';\n","import React, { useState, type FC } from 'react';\nimport { fields, match, variant, type VariantOf } from 'variant';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../backend/definitions.js';\nimport { BackendNumericViewer } from './BackendNumericViewer.js';\nimport { BackendArrowViewer } from './BackendArrowViewer.js';\n\nexport const BackendScreenSelector = variant({\n Arrow: fields<{\n backendComponentName: BackendComponentNames;\n }>(),\n Numeric: {},\n});\n\nexport type BackendScreenSelector = VariantOf<typeof BackendScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n initialSelectorType?: BackendScreenSelector;\n}\n\nexport const BackendScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = BackendScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<BackendScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ backendComponentName }) => (\n <BackendArrowViewer\n backendComponentName={backendComponentName}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <BackendNumericViewer\n onViewMore={setSelectorType}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { type FC, useMemo, useCallback } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { match, lookup } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport {\n NumericOption,\n NumericViewer,\n} from '../NumericViewer/NumericViewer.js';\nimport { BackendScreenSelector } from './BackendScreen.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../backend/definitions.js';\nimport { useWixCliAppBi } from '../../bi';\n\nconst MAX_BACKEND_COMPONENT = 9;\nconst MAX_SERVICE_PLUGINS = 4;\nconst MAX_EVENTS = 5;\n\ninterface Props {\n onViewMore: (backendScreen: BackendScreenSelector) => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose?: () => void;\n}\n\nexport const BackendNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { getBackendComponent } = useBackendComponents();\n\n const backendComponents = useMemo(\n () => ({\n apis: getBackendComponent('Api'),\n events: getBackendComponent('Event'),\n servicePlugins: getBackendComponent('ServicePlugin'),\n }),\n [getBackendComponent]\n );\n\n const servicePluginsData = backendComponents.servicePlugins.slice(\n 0,\n backendComponents.servicePlugins.length > MAX_SERVICE_PLUGINS\n ? MAX_SERVICE_PLUGINS - 1\n : backendComponents.servicePlugins.length\n );\n\n const servicePluginsShowMoreIndex =\n backendComponents.servicePlugins.length > servicePluginsData.length\n ? servicePluginsData.length + 1\n : undefined;\n\n const servicePluginsCount = Math.max(\n servicePluginsData.length,\n servicePluginsShowMoreIndex ?? 0\n );\n\n const maxBackendEvents = Math.min(\n MAX_EVENTS,\n MAX_BACKEND_COMPONENT - servicePluginsCount\n );\n\n const backendEventsData = backendComponents.events.slice(\n 0,\n backendComponents.events.length > maxBackendEvents\n ? maxBackendEvents - 1\n : backendComponents.events.length\n );\n\n const backendEventsShowMoreIndex =\n backendComponents.events.length > backendEventsData.length\n ? backendEventsData.length + servicePluginsCount + 1\n : undefined;\n\n const visibleItems: NumericOption<BackendComponent, BackendComponentNames>[] =\n [\n ...servicePluginsData.map(\n (servicePlugin: BackendComponent<'ServicePlugin'>) =>\n NumericOption.Item({\n title: servicePlugin.componentName,\n value: servicePlugin,\n })\n ),\n ...(servicePluginsShowMoreIndex\n ? [NumericOption.ViewMore('ServicePlugin' as BackendComponentNames)]\n : []),\n ...backendEventsData.map((event: BackendComponent<'Event'>) =>\n NumericOption.Item({\n title: event.title,\n value: event,\n })\n ),\n ...(backendEventsShowMoreIndex\n ? [NumericOption.ViewMore('Event' as BackendComponentNames)]\n : []),\n ];\n\n const getLabelKey = (backendComponent: BackendComponent) => {\n return match(\n backendComponent,\n lookup({\n Api: 'general.backend_api_viewer.title',\n Event: 'general.backend_events_viewer.title',\n ServicePlugin: 'general.backend_plugin_viewer.title',\n })\n );\n };\n\n useInput((input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const item = visibleItems.at(inputNumber - 1);\n if (item) {\n match(item, {\n Item: (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n action: item.title,\n key: input,\n });\n handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n action: 'view_more',\n key: input,\n });\n onViewMore(\n BackendScreenSelector.Arrow({\n backendComponentName: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n async (backendComponent: BackendComponent) => {\n onSelect?.(backendComponent);\n },\n [onSelect]\n );\n\n const backendPlugins = visibleItems.slice(0, servicePluginsCount);\n const backendEvents = visibleItems.slice(\n servicePluginsCount,\n visibleItems.length\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {backendPlugins.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.backend_plugin_viewer.title\"\n items={backendPlugins}\n />\n )}\n {backendEvents.length > 0 && (\n <NumericViewer\n startIndex={servicePluginsCount}\n titleKey=\"general.backend_events_viewer.title\"\n items={backendEvents}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React, { useCallback, type FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { isType, lookup, match } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../backend/definitions.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport { useWixCliAppBi } from '../../bi';\n\ninterface Props {\n backendComponentName: BackendComponentNames;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose: () => void;\n}\n\nexport const BackendArrowViewer: FC<Props> = ({\n backendComponentName,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { getBackendComponent } = useBackendComponents();\n\n const getLabelKey = useCallback(\n () =>\n match(\n backendComponentName,\n lookup({\n Api: 'dev_command.backend_apis_screen.select_label',\n Event: 'dev_command.backend_events_screen.select_label',\n ServicePlugin: 'dev_command.backend_plugins_screen.select_label',\n })\n ),\n [backendComponentName]\n );\n\n const getBackendComponentName = (backendComponent: BackendComponent) =>\n isType(backendComponent, 'ServicePlugin')\n ? backendComponent.componentName\n : backendComponent.title;\n\n const handleSubmit = useCallback(\n (backendComponent: BackendComponent) => {\n bi.cliAction({\n question: t(getLabelKey()),\n action: getBackendComponentName(backendComponent),\n key: 'enter',\n });\n onSelect?.(backendComponent);\n },\n [bi, getLabelKey, onSelect, t]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<BackendComponent>\n label={t(getLabelKey())}\n options={getBackendComponent(backendComponentName).map(\n (backendComponent, index) => ({\n key: index.toString(),\n title: getBackendComponentName(backendComponent),\n value: backendComponent,\n })\n )}\n onSubmit={({ value: backendComponent }) =>\n handleSubmit(backendComponent)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","import React, { useState, type FC, type ReactNode } from 'react';\nimport { ConfirmInput, Text, useAsync, useExit } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { readUserConfig, updateUserConfig } from '@wix/cli-user-config';\nimport { match } from 'variant';\nimport { useProjectModel } from '../../model.js';\n\ninterface Props {\n children: ReactNode;\n}\n\nexport const TunnelingConsent: FC<Props> = ({ children }) => {\n const exit = useExit();\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const [approved, setApproved] = useState<boolean>();\n\n const { status } = useAsync(async () => {\n const config = await readUserConfig();\n\n if (config.tunneling) {\n setApproved(true);\n }\n\n return config;\n }, []);\n\n if (model.backendComponents.length === 0 || approved) {\n return children;\n }\n\n return (\n <>\n {match(status, {\n Success: () => (\n <ConfirmInput\n label={t('dev_command.tunneling.confirm')}\n initialValue={false}\n onSubmit={(approved) => {\n updateUserConfig({ tunneling: approved });\n setApproved(approved);\n if (!approved) {\n exit();\n }\n }}\n />\n ),\n Error: () => null,\n Loading: () => null,\n })}\n {approved === false && (\n <Text skin=\"error\">\n <Trans i18nKey=\"dev_command.tunneling.abort_dev\" />\n </Text>\n )}\n </>\n );\n};\n","import { join } from 'node:path';\nimport { getDataDirPath } from '@wix/cli-data-dir';\nimport { pathExists, readJson, writeJson } from '@wix/cli-fs';\nimport {\n userConfigSchema,\n CONFIG_FILE_NAME,\n type UserConfig,\n} from '@wix/cli-core-definitions';\n\nfunction getUserConfigPath() {\n return join(getDataDirPath(), CONFIG_FILE_NAME);\n}\n\nexport async function readUserConfig() {\n const configPath = getUserConfigPath();\n const isConfigExist = await pathExists(configPath);\n const json = isConfigExist ? await readJson(configPath) : {};\n return userConfigSchema.parse(json);\n}\n\nexport async function updateUserConfig(config: Partial<UserConfig>) {\n const currentConfig = await readUserConfig();\n const newConfig = {\n ...currentConfig,\n ...config,\n };\n\n const configPath = getUserConfigPath();\n await writeJson(configPath, newConfig);\n}\n","import React, { type FC, type ReactNode, useCallback, useState } from 'react';\nimport { match, isType } from 'variant';\nimport { openBrowser } from '@wix/user-browser';\nimport { ComponentType } from '@wix/ambassador-devcenter-components-v1-component/types';\nimport {\n useAsync,\n Spinner,\n useAsyncCallback,\n useInput,\n Text,\n Key,\n Alert,\n} from '@wix/cli-ui-kit';\nimport { Trans } from '@wix/cli-i18n';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useARMClient } from '@wix/arm-client';\nimport type { ComponentConfig } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { useProjectModel } from '../../model.js';\nimport { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { createCustomElementConfig } from '../../app-manifest/create.js';\nimport { addCSMv2FTs, useEnvConfig } from '../extensions/utils.js';\n\nconst AppUpdater: FC<{\n children: ReactNode;\n newCustomElements: DevCenterComponent<'CustomElement'>[];\n}> = ({ children, newCustomElements }) => {\n const { model } = useProjectModel();\n const { reportError } = useErrorReporter();\n const { createComponents } = useARMClient();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const { site, tag } = useEnvConfig();\n const [isAppReinstalled, setAppReinstalledFlag] = useState(false);\n\n const prepareNewElements = useAsyncCallback(\n async () => {\n const componentConfigs = newCustomElements.map<ComponentConfig>(\n (customElement) => createCustomElementConfig(customElement)\n );\n\n await createComponents(\n model.config.appId,\n componentConfigs,\n model.config.projectId\n );\n\n const { data: signedAppMarketParams } = await httpClient\n .post<string>('/_serverless/app-market-json-web-token/json-web-token', {\n data: {\n data: JSON.stringify({\n appDefId: model.config.appId,\n route: 'testApp',\n version: 'latest',\n }),\n },\n })\n .catch((e) => {\n throw new CliError({\n code: CliErrorCode.FailedToGenerateAppMarketQueryParam(),\n cause: e,\n });\n });\n const url = new URL(`https://wix.com/editor/${site.id}`);\n url.searchParams.append('appMarketParams', signedAppMarketParams);\n url.searchParams.append('apps-override', tag);\n\n await openBrowser(addCSMv2FTs(url).toString());\n },\n {\n onError: (error) => {\n reportError(error);\n },\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n prepareNewElements.execute();\n }\n },\n [prepareNewElements]\n ),\n {\n isActive: isType(prepareNewElements.status, 'NotRequested'),\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n setAppReinstalledFlag(true);\n }\n },\n [setAppReinstalledFlag]\n ),\n {\n isActive:\n !isAppReinstalled &&\n (isType(prepareNewElements.status, 'Success') ||\n isType(prepareNewElements.status, 'Error')),\n }\n );\n\n if (isAppReinstalled) {\n return children;\n }\n\n return match(prepareNewElements.status, {\n Loading: () => <Spinner />,\n Success: () => {\n return (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.confirm_reinstall\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n );\n },\n Error: () => (\n <Alert type=\"error\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.reinstall_error\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n NotRequested: () => (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.warning\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n });\n};\n\nexport const CustomElementsMigration: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { getAppSnapshot } = useDevCenterClient();\n const { model } = useProjectModel();\n const customElementsCheck = useAsync(async () => {\n const localCustomElements = model.components.filter((component) =>\n isType(component, DevCenterComponent.CustomElement)\n ) as DevCenterComponent<'CustomElement'>[];\n\n if (!localCustomElements.length) {\n return [];\n }\n\n const { components } = await getAppSnapshot({\n appId: model.config.appId,\n });\n\n const existingCustomElements = components.filter(\n (component) => component.compType === ComponentType.CUSTOM_ELEMENT_WIDGET\n );\n\n const newCustomElements = localCustomElements.filter(\n (localCustomElement) =>\n !existingCustomElements.find(\n (customElement) => customElement.compId === localCustomElement.id\n )\n );\n\n return newCustomElements;\n }, []);\n\n return match(customElementsCheck.status, {\n Error: () => null,\n Loading: () => <Spinner />,\n Success: ({ result: newCustomElements }) =>\n newCustomElements.length ? (\n <AppUpdater newCustomElements={newCustomElements}>\n {children}\n </AppUpdater>\n ) : (\n children\n ),\n });\n};\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","React","init_esm_shims","import_variant","React","createContext","useContext","init_esm_shims","import_variant","useCallback","createAppManifestWithBaseUrl","model","devServerUrl","manifest","createAppManifest","getComponentSourceBuilder","updateAppManifestWithBaseUrl","useArmUpdater","useProjectModel","writeDebugLog","useDebugLog","createAppRelease","updateAppRelease","useARMClient","useCallback","projectModelWatcher","onChange","onError","projectId","appManifest","appConfig","readAppConfig","armTag","tag","updateState","cause","saveAppConfig","error","newModel","changeType","updatedAppManifest","deepEqual","e","init_esm_shims","useRef","useCallback","useEffect","createServer","init_esm_shims","createCustomLogger","onLog","loggedErrors","warnedMessages","logger","msg","opts","error","useViteDevServer","createConfig","devServerRef","useRef","useEffect","useCallback","options","config","devServer","createServer","getViteServerUrl","useClientDevServer","https","model","useProjectModel","onLog","projectModelWatcher","baseBackendUrl","getViteConfig","createCustomLogger","useBackendDevServer","init_esm_shims","React","useCallback","useEffect","useState","useMemo","init_esm_shims","EOL","createWriteStream","DevLogStream","projectFolder","opts","createWriteStream","getDevLogPath","content","EOL","err","init_esm_shims","React","DevEnvLogLine","type","msg","error","prefix","timestamp","React","Box_default","Text","ErrorViewer","ErrorMsg","React","Box_default","Alert","Trans","Text","DEV_LOG_PATH","MAX_LOGS_TO_SHOW","isMessageFiltered","message","useDevEnvLogs","model","useProjectModel","logs","setLogs","useState","insertLog","useCallback","genericLog","log","newLogs","renderer","stream","useMemo","createRendererToString","DevLogStream","writeLog","content","DevEnvLogLine","useEffect","init_esm_shims","useCallback","init_esm_shims","init_esm_shims","init_esm_shims","_createOverrideRequest","_createOverrideResponse","resolveWixCliV1SiteOverrideServiceUrl","opts","domainToMappings","resolveUrl","createOverride","payload","_a","serializer","_createOverrideRequest","toReq","fromReq","fromRes","_createOverrideResponse","__createOverride","host","serializedData","metadata","resolveWixCliV1SiteOverrideServiceUrl","init_esm_shims","createOverrideSchema","z","SiteOverrideClient","httpClient","minRetryTimeout","getTestOverrides","appId","siteId","overrides","siteOverrideId","data","pRetry","createOverride","createOverrideSchema","error","isHttpError","CliError","CliErrorCode","init_esm_shims","useMemo","useSiteOverrideClient","httpClient","useHttpClient","useMemo","SiteOverrideClient","init_esm_shims","import_variant","init_esm_shims","Type","createSiteOverrides","model","componentsToOverride","DevCenterComponent","acc","component","paramsOverride","Type","useSiteOverrideUpdater","model","useProjectModel","site","useSiteId","writeDebugLog","useDebugLog","createOverride","useSiteOverrideClient","useCallback","projectModelWatcher","appId","appConfig","readAppConfig","overrides","createSiteOverrides","siteOverrideId","newModel","changeType","updatedOverrides","deepEqual","saveAppConfig","error","DevEnvironmentContext","createContext","DevEnvironmentProvider","https","children","t","useTranslation","reportError","useErrorReporter","createClientDevServer","useClientDevServer","createBackendDevServer","useBackendDevServer","createArmUpdater","useArmUpdater","createSiteOverrideUpdater","useSiteOverrideUpdater","logs","writeLog","useDevEnvLogs","projectModelWatcher","useProjectModel","status","useAsync","backendDevServerUrl","type","msg","clientDevServerUrl","clientDevServer","armTag","changeType","error","siteOverrideId","React","Spinner","ArmTagProvider","useDevEnvironment","context","useContext","init_esm_shims","import_variant","React","useState","init_esm_shims","React","import_variant","init_esm_shims","import_variant","ScreenState","init_esm_shims","React","DevEnvLogsViewer","t","useTranslation","logs","useDevEnvironment","isEmpty","React","Box_default","Trans","Text","DEV_LOG_PATH","log","DevEnvLogLine","init_esm_shims","React","useCallback","useMemo","init_esm_shims","init_esm_shims","useMemo","useWixCliAppBi","biLogger","useBiLogger","useMemo","wixCliAppBiEvents","init_esm_shims","import_variant","useCallback","useMemo","BackendComponentsTypes","BackendComponent","useBackendComponents","model","useProjectModel","backendComponentsByType","useMemo","backendComponentsMap","acc","backendComponent","a","b","hasComponentByType","useCallback","componentType","getBackendComponent","PlatformOption","label","inputKey","suffix","disabled","getTextSkin","React","Box_default","Text","PointerSmallIcon","Key","PlatformSelector","onMultipleDashboardExtensionSelection","onMultipleBackendComponentSelection","t","useTranslation","bi","useWixCliAppBi","writeLog","siteOverrideId","useDevEnvironment","model","useProjectModel","isPlatformExists","usePlatform","dashboardExtensions","useExtensions","hasComponentByType","useBackendComponents","envConfig","useEnvConfig","openPlatform","useCallback","platformType","openPage","resolvePlatformUrl","use_input_default","input","resolveDashboardExtensionUrl","PlatformType","dashboardOptionSuffix","useMemo","init_esm_shims","React","useMemo","useCallback","import_variant","init_esm_shims","React","CloseScreen","onClose","t","useTranslation","bi","useWixCliAppBi","use_input_default","_","key","React","Text","Trans","Key","init_esm_shims","import_variant","React","useState","init_esm_shims","React","useCallback","import_variant","DashboardArrowViewer","dashboardExtension","onClose","onSelect","t","useTranslation","writeLog","useDevEnvironment","getExtensions","useExtensions","envConfig","useEnvConfig","bi","useWixCliAppBi","getLabelKey","useCallback","handleSubmit","url","resolveDashboardExtensionUrl","openPage","React","Box_default","SelectInput","dashboardExtensionInstance","CloseScreen","DashboardScreenSelector","DashboardScreen","onClose","onSelect","initialSelectorType","selectorType","setSelectorType","useState","React","dashboardExtension","DashboardArrowViewer","DashboardNumericViewer","init_esm_shims","init_esm_shims","React","import_variant","ListItem","itemNumber","children","keyValue","React","Box_default","Text","PointerSmallIcon","Key","NumericOption","I","V","NumericViewer","startIndex","titleKey","items","Trans","item","index","title","description","MAX_EXTENSIONS","MAX_DASHBOARD_PAGES","MAX_PAGE_PLUGINS","MAX_MENU_PLUGINS","DashboardNumericViewer","onViewMore","onSelect","onClose","t","useTranslation","getExtensions","useExtensions","writeLog","useDevEnvironment","envConfig","useEnvConfig","bi","useWixCliAppBi","dashboardExtensions","useMemo","dashboardPagesData","dashboardPagesShowMoreIndex","dashboardPagesCount","maxMenuPlugins","dashboardMenuPluginsData","dashboardMenuPluginsShowMoreIndex","dashboardMenuPluginsCount","maxPagePlugins","dashboardPluginsData","dashboardPluginsShowMoreIndex","visibleItems","page","NumericOption","menuPlugin","pagePlugin","getLabelKey","dashboardExtension","use_input_default","input","inputNumber","itemIndex","item","handleSelect","viewMore","DashboardScreenSelector","useCallback","url","resolveDashboardExtensionUrl","openPage","dashboardPages","dashboardMenuPlugins","dashboardPlugins","React","Box_default","NumericViewer","CloseScreen","HomeScreen","onScreenChange","t","useTranslation","site","useSiteId","bi","useWixCliAppBi","clientDevServerUrl","https","writeLog","useDevEnvironment","hasSinglePlatform","usePlatform","hasExtensions","dashboardExtensions","useExtensions","model","useProjectModel","openDevServerInBrowser","openBrowser","React","Alert","Trans","Link","use_input_default","input","ScreenState","Box_default","Text","SuccessIcon","InfoIcon","Key","PointerIcon","PlatformType","dashboardExtension","DashboardNumericViewer","selectorType","PlatformSelector","DevEnvLogsViewer","init_esm_shims","React","useState","useCallback","init_esm_shims","SiteSelectorScreen","onScreenChange","t","useTranslation","model","useProjectModel","setSite","useSiteId","reportError","useErrorReporter","error","setError","useState","handleError","useCallback","handleSubmit","site","ScreenState","e","React","Box_default","SiteSelector","ErrorViewer","Alert","CloseScreen","init_esm_shims","import_variant","React","useState","init_esm_shims","React","useMemo","useCallback","import_variant","MAX_BACKEND_COMPONENT","MAX_SERVICE_PLUGINS","MAX_EVENTS","BackendNumericViewer","onViewMore","onSelect","onClose","t","useTranslation","bi","useWixCliAppBi","getBackendComponent","useBackendComponents","backendComponents","useMemo","servicePluginsData","servicePluginsShowMoreIndex","servicePluginsCount","maxBackendEvents","backendEventsData","backendEventsShowMoreIndex","visibleItems","servicePlugin","NumericOption","event","getLabelKey","backendComponent","use_input_default","input","inputNumber","item","handleSelect","viewMore","BackendScreenSelector","useCallback","backendPlugins","backendEvents","React","Box_default","NumericViewer","CloseScreen","init_esm_shims","React","useCallback","import_variant","BackendArrowViewer","backendComponentName","onClose","onSelect","t","useTranslation","bi","useWixCliAppBi","getBackendComponent","useBackendComponents","getLabelKey","useCallback","getBackendComponentName","backendComponent","handleSubmit","React","Box_default","SelectInput","index","CloseScreen","BackendScreenSelector","BackendScreen","onClose","onSelect","initialSelectorType","selectorType","setSelectorType","useState","React","backendComponentName","BackendArrowViewer","BackendNumericViewer","DevCommandScreens","screen","setScreen","useState","ScreenState","React","HomeScreen","SiteSelectorScreen","selectorType","DashboardScreen","BackendScreen","init_esm_shims","React","useState","init_esm_shims","join","getUserConfigPath","join","getDataDirPath","CONFIG_FILE_NAME","readUserConfig","configPath","json","pathExists","readJson","userConfigSchema","updateUserConfig","config","newConfig","writeJson","import_variant","TunnelingConsent","children","exit","useExit","t","useTranslation","model","useProjectModel","approved","setApproved","useState","status","useAsync","config","readUserConfig","React","ConfirmInput","updateUserConfig","Text","Trans","init_esm_shims","import_variant","React","useCallback","useState","AppUpdater","children","newCustomElements","model","useProjectModel","reportError","useErrorReporter","createComponents","useARMClient","httpClient","useHttpClient","site","tag","useEnvConfig","isAppReinstalled","setAppReinstalledFlag","useState","prepareNewElements","useAsyncCallback","componentConfigs","customElement","createCustomElementConfig","signedAppMarketParams","e","CliError","CliErrorCode","url","openBrowser","addCSMv2FTs","error","use_input_default","useCallback","input","key","React","Spinner","Alert","Text","Trans","Key","CustomElementsMigration","getAppSnapshot","useDevCenterClient","customElementsCheck","useAsync","localCustomElements","component","DevCenterComponent","components","existingCustomElements","ComponentType","localCustomElement","DevCommand","https","React","SiteIdProvider","TunnelingConsent","DevEnvironmentProvider","CustomElementsMigration","DevCommandScreens"]}
@@ -1,4 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import{a}from"./chunk-N5OCWMLI.js";import"./chunk-BMK5ZXHB.js";import"./chunk-QZS4ARDD.js";import"./chunk-5OTJBADY.js";import"./chunk-INHSYB3J.js";import"./chunk-ESE4L44D.js";import"./chunk-C632XAQG.js";import"./chunk-R2DHQREZ.js";import"./chunk-TTTQ7SZK.js";import"./chunk-RIDNK3X3.js";import"./chunk-RPZCQEPB.js";import"./chunk-YKE3BZS3.js";import"./chunk-PYEFXRM2.js";import"./chunk-ALZJFJ23.js";import"./chunk-F2ZEWDAK.js";import"./chunk-SARV44FW.js";import"./chunk-V4TR6DCM.js";export{a as PreviewCommand};
4
- //# sourceMappingURL=PreviewCommand-2MM4267L.js.map
@@ -1,4 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import{a as T,b as B}from"./chunk-CTWRW76F.js";import{a as j,b as U}from"./chunk-BMK5ZXHB.js";import{b as A}from"./chunk-5OTJBADY.js";import"./chunk-INHSYB3J.js";import"./chunk-ESE4L44D.js";import{b as I}from"./chunk-R2DHQREZ.js";import{i as F,j as h,k as M}from"./chunk-RIDNK3X3.js";import"./chunk-RPZCQEPB.js";import"./chunk-YKE3BZS3.js";import{B as s,C as y,d as t,g as S,h as x,i as g,k as P,t as w,u as E,x as C}from"./chunk-PYEFXRM2.js";import{b as _}from"./chunk-ALZJFJ23.js";import{ta as v}from"./chunk-F2ZEWDAK.js";import{a as q}from"./chunk-SARV44FW.js";import{e as W,h as r}from"./chunk-V4TR6DCM.js";r();r();import l from"react";r();var k=W(q(),1);import c,{createContext as Q,useContext as X}from"react";r();import{preview as z}from"vite";import{useCallback as G,useEffect as H,useRef as J}from"react";function b(){let o=J(),{model:n}=v();return H(()=>()=>{o.current?.httpServer.close()},[]),G(async()=>{let i=await z(await B(n,{type:"build"}));return o.current=i,T(i)},[n])}var K=Q(null),d=({children:o})=>{let{model:n}=v(),{t:i}=y(),V=F(),D=b(),{status:L}=C(async()=>{await j(n.projectFolder);let m=await D(),a=await I(n.projectFolder),O=_(a,m);return{armTag:await V.createAppRelease(O,n.config.projectId),serverUrl:m}},[]);return(0,k.match)(L,{Error:()=>null,Loading:()=>c.createElement(E,{text:i("serve_command.starting_serve_environment")}),Success:({result:{armTag:m,serverUrl:a}})=>c.createElement(K.Provider,{value:{serverUrl:a}},c.createElement(h,{armTag:m},o))})};function f(){let o=X(K);if(o===null)throw new Error("useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>");return o}r();import e from"react";function N(){let{site:o}=M(),{serverUrl:n}=f();return e.createElement(t,{flexDirection:"column"},e.createElement(t,{gap:1},e.createElement(S,{skin:"success"},e.createElement(P,null)),e.createElement(s,{i18nKey:"serve_command.starting_serve_environment_success",components:[e.createElement(w,{url:n})]})),e.createElement(t,{gap:1},e.createElement(x,null),e.createElement(s,{i18nKey:"serve_command.production_build"})),e.createElement(t,{gap:1,paddingTop:1,paddingBottom:1},e.createElement(g,null),e.createElement(s,{i18nKey:"general.dev_site.current",values:{name:o.displayName}})),e.createElement(t,{paddingBottom:1,flexDirection:"column"},e.createElement(U,null)))}var Y=()=>l.createElement(A,null,l.createElement(d,null,l.createElement(N,null)));export{Y as ServeCommand,d as ServeEnvironmentProvider,f as useServeEnvironment};
4
- //# sourceMappingURL=ServeCommand-QOKAYFJP.js.map
@@ -1,4 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import{a as d,c as m,d as l}from"./chunk-3VQX7LRS.js";import{b as p,c as a}from"./chunk-CTWRW76F.js";import{a as c}from"./chunk-R2DHQREZ.js";import"./chunk-ALZJFJ23.js";import{ra as r}from"./chunk-F2ZEWDAK.js";import{c as e,d as i}from"./chunk-SARV44FW.js";import{h as n}from"./chunk-V4TR6DCM.js";n();import{cwd as w}from"node:process";import{build as u}from"vite";async function E(){let o=await r(w());if(o.components.length===0)throw new e({code:i.NoExtensionsFound()});d(o.components),o.backendComponents.length>0&&await u(await a(o,{type:"build"})).catch(t=>{throw new e({code:i.FailedToBuildApp({cause:t}),cause:t})});let s=await u(await p(o,{type:"build"})).catch(t=>{throw new e({code:i.FailedToBuildApp({cause:t}),cause:t})}),f=await m({appId:o.config.appId,components:o.components,sentryDSN:o.config.sentryDSN,componentSourceBuilder:l({model:o,buildOutput:s})});await c({projectFolder:o.projectFolder,manifest:f})}export{E as build};
4
- //# sourceMappingURL=build-FJY4BC54.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/build.ts"],"sourcesContent":["import { cwd } from 'node:process';\nimport { build as viteBuild } from 'vite';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { loadProjectModel } from './model.js';\nimport { getBackendViteConfig, getClientViteConfig } from './vite/index.js';\nimport { writeAppManifestFile } from './app-manifest/file.js';\nimport { createAppManifest } from './app-manifest/create.js';\nimport { getComponentSourceBuilder } from './app-manifest/component-source.js';\nimport { ConfigType } from './vite/vite-config-options.js';\nimport { validateComponents } from './app-manifest/validate.js';\n\nexport async function build() {\n const projectModel = await loadProjectModel(cwd());\n\n // Validate before building the project, to fail fast in case of a validation issue\n if (projectModel.components.length === 0) {\n throw new CliError({\n code: CliErrorCode.NoExtensionsFound(),\n });\n }\n\n validateComponents(projectModel.components);\n\n if (projectModel.backendComponents.length > 0) {\n await viteBuild(\n await getBackendViteConfig(projectModel, { type: ConfigType.build })\n ).catch((e) => {\n throw new CliError({\n code: CliErrorCode.FailedToBuildApp({ cause: e }),\n cause: e,\n });\n });\n }\n\n const clientBuildOutput = await viteBuild(\n await getClientViteConfig(projectModel, { type: ConfigType.build })\n ).catch((e) => {\n throw new CliError({\n code: CliErrorCode.FailedToBuildApp({ cause: e }),\n cause: e,\n });\n });\n\n const manifest = await createAppManifest({\n appId: projectModel.config.appId,\n components: projectModel.components,\n sentryDSN: projectModel.config.sentryDSN,\n componentSourceBuilder: getComponentSourceBuilder({\n model: projectModel,\n buildOutput: clientBuildOutput,\n }),\n });\n\n await writeAppManifestFile({\n projectFolder: projectModel.projectFolder,\n manifest,\n });\n}\n"],"mappings":";;ySAAAA,IAAA,OAAS,OAAAC,MAAW,eACpB,OAAS,SAASC,MAAiB,OAUnC,eAAsBC,GAAQ,CAC5B,IAAMC,EAAe,MAAMC,EAAiBC,EAAI,CAAC,EAGjD,GAAIF,EAAa,WAAW,SAAW,EACrC,MAAM,IAAIG,EAAS,CACjB,KAAMC,EAAa,kBAAkB,CACvC,CAAC,EAGHC,EAAmBL,EAAa,UAAU,EAEtCA,EAAa,kBAAkB,OAAS,GAC1C,MAAMM,EACJ,MAAMC,EAAqBP,EAAc,CAAE,YAAuB,CAAC,CACrE,EAAE,MAAOQ,GAAM,CACb,MAAM,IAAIL,EAAS,CACjB,KAAMC,EAAa,iBAAiB,CAAE,MAAOI,CAAE,CAAC,EAChD,MAAOA,CACT,CAAC,CACH,CAAC,EAGH,IAAMC,EAAoB,MAAMH,EAC9B,MAAMC,EAAoBP,EAAc,CAAE,YAAuB,CAAC,CACpE,EAAE,MAAOQ,GAAM,CACb,MAAM,IAAIL,EAAS,CACjB,KAAMC,EAAa,iBAAiB,CAAE,MAAOI,CAAE,CAAC,EAChD,MAAOA,CACT,CAAC,CACH,CAAC,EAEKE,EAAW,MAAMC,EAAkB,CACvC,MAAOX,EAAa,OAAO,MAC3B,WAAYA,EAAa,WACzB,UAAWA,EAAa,OAAO,UAC/B,uBAAwBY,EAA0B,CAChD,MAAOZ,EACP,YAAaS,CACf,CAAC,CACH,CAAC,EAED,MAAMI,EAAqB,CACzB,cAAeb,EAAa,cAC5B,SAAAU,CACF,CAAC,CACH","names":["init_esm_shims","cwd","viteBuild","build","projectModel","loadProjectModel","cwd","CliError","CliErrorCode","validateComponents","viteBuild","getViteConfig","e","clientBuildOutput","manifest","createAppManifest","getComponentSourceBuilder","writeAppManifestFile"]}
@@ -1,4 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import{S as l,U as B,W as A,ha as N,i as S,ja as x,m,n as b,o as P,s as c,t as M,u as v,v as I}from"./chunk-F2ZEWDAK.js";import{a as g,c as p,d as u}from"./chunk-SARV44FW.js";import{e as C,h as d}from"./chunk-V4TR6DCM.js";d();var w=C(g(),1);import{randomUUID as R}from"node:crypto";var T=t=>{let r=new Map;[...t].sort((e,a)=>e.id.localeCompare(a.id)).forEach(e=>{let a=r.get(e.id)??[];a.push(e),r.set(e.id,a)});let i=new Map;if(r.forEach((e,a)=>{e.length>1&&i.set(a,e)}),i.size)throw new p({code:u.DuplicateComponentIdsError({issues:Array.from(i.entries()).map(([e,a])=>({id:e,components:a.map(f=>(0,w.match)(f,{DashboardPage:({title:o,relativePath:n})=>({name:o,type:"page",path:l(n,"json")}),DashboardPlugin:({title:o,relativePath:n})=>({name:o,type:"plugin",path:l(n,"json")}),DashboardMenuPlugin:({title:o,relativePath:n})=>({name:o,type:"menu-plugin",path:n}),DashboardModal:({title:o,relativePath:n})=>({name:o,type:"modal",path:l(n,"json")}),DashboardSidebarCategory:({label:o})=>({name:o,type:"sidebar-category",path:S}),EmbeddedScript:({relativePath:o})=>({name:o,type:"embedded-script",path:l(o,"json")}),CustomElement:({name:o,relativePath:n})=>({name:o,type:"custom-element",path:l(n,"json")})})).sort((f,o)=>f.name.localeCompare(o.name)),suggestedId:R()}))})})};d();var O=C(g(),1);var k=(t,r)=>{if(t.experiments)return{appId:r,componentId:t.id,spec:t.experiments.enabledBy,variantValue:"true"}},V=t=>({compId:t.id,compType:m.CUSTOM_ELEMENT_WIDGET,compName:t.name,compData:{customElementWidget:{base:{name:t.name},widgetData:{tagName:t.tagName,scriptType:v.ES_MODULE,scriptUrl:"https://dummy.web.com"},size:{width:{defaultWidth:t.width.defaultWidth,allowStretch:t.width.allowStretch,stretchByDefault:t.width.stretchByDefault},height:{defaultHeight:t.height.defaultHeight,heightMode:I.FIXED}},installation:{base:{autoAdd:t.installation?.autoAddToSite,essential:t.installation?.essential,maxInstances:t.installation?.maxInstances},widget:{region:b.BODY}},behaviors:{}}}});async function J({appId:t,components:r,sentryDSN:s,componentSourceBuilder:i}){return T(r),{appId:t,components:await Promise.all(r.map((0,O.match)({DashboardPage:async e=>{let a=e.sentryDSN??s;return{compId:e.id,compType:m.BACK_OFFICE_PAGE,compData:{backOfficePage:{hostingPlatform:c.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,...a?{errorReporting:{url:a}}:void 0,...await i(e)}},compName:e.title,experiment:k(e,t)}},DashboardPlugin:async e=>({compId:e.id,compType:m.BACK_OFFICE_EXTENSION_WIDGET,compData:{backOfficeExtensionWidget:{hostingPlatform:c.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:m.BACK_OFFICE_EXTENSION_MENU_ITEM,compData:{backOfficeExtensionMenuItem:{hostingPlatform:c.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:m.BACK_OFFICE_MODAL,compData:{backOfficeModal:{hostingPlatform:c.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:m.BACK_OFFICE_SIDEBAR_CATEGORY,compData:{backOfficeSidebarCategory:{hostingPlatform:c.BUSINESS_MANAGER,title:e.label,priority:e.priority}},compName:e.label}),EmbeddedScript:async e=>({compId:e.id,compType:m.EMBEDDED_SCRIPT,compName:e.name,compData:{embeddedScriptComponentData:{name:e.name,pages:P.NONE_PAGES,placement:e.placement,connectArticleUrl:"",embedCategory:e.scriptType,loadOnce:!0,allowedForFreeSite:!0,...await i(e)}}}),CustomElement:async e=>{let{scriptUrl:a,settingsUrl:f}=await i(e),o=V(e);return{...o,compData:{customElementWidget:{...o.compData.customElementWidget,widgetData:{...o.compData.customElementWidget.widgetData,scriptUrl:a},behaviors:{...o.compData.customElementWidget.behaviors,...e.relativePanelPath?{settings:{settingsUrl:f}}:{}}}}}}})))}}d();var F=C(g(),1);d();function U(t){if(!("output"in t||Array.isArray(t)))throw new p({code:u.InvalidViteBuildOutput()});return Array.isArray(t)?t.flatMap(i=>i.output):t.output}function D(t,r){let i=U(t).find(e=>e.type==="chunk"&&e.facadeModuleId===r);if(!i)throw new p({code:u.ViteModuleBundleNotFound()});return i.fileName}function _(t,r){let i=U(t).find(e=>e.fileName===r);if(!i||!("source"in i))throw new p({code:u.ViteFileNotFoundInOutput({fileName:r})});return i.source.toString()}async function j(t,r){let s=new URL(t.relativePath,r).href;return await fetch(s).then(e=>e.text())}var y=(t,r,s)=>{if(!r.config.trusted)return{iframeUrl:B(t.id)};let i=A(t.id),e=s?D(s,i):`/@id/${i}?import`;return{scriptAsset:{exportedName:t.id,containerId:r.config.appId,url:e,scriptType:M.MODULE}}},W=async(t,r,s)=>({template:r?_(r,t.relativePath):await j(t,s)}),G=(t,r)=>{let s=x(t.id);return{scriptUrl:r?D(r,s):`/@id/${s}?import`,settingsUrl:N(t.id)}};function ne({model:t,buildOutput:r,devServerUrl:s}){return async i=>(0,F.match)(i,{EmbeddedScript:a=>W(a,r,s),DashboardSidebarCategory:()=>{},CustomElement:a=>G(a,r),DashboardPage:a=>y(a,t,r),DashboardPlugin:a=>y(a,t,r),DashboardModal:a=>y(a,t,r),DashboardMenuPlugin:()=>{}})}export{T as a,V as b,J as c,ne as d};
4
- //# sourceMappingURL=chunk-3VQX7LRS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../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":["import { randomUUID } from 'node:crypto';\nimport { 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 { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\n\nexport const validateComponents = (components: DevCenterComponent[]) => {\n const devCenterComponentsToIdMap: Map<string, DevCenterComponent[]> =\n new Map();\n const sortedComponentsById = [...components].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: Map<string, DevCenterComponent[]> =\n new Map();\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 })\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 type {\n AppManifest,\n ComponentExperiment,\n BackofficePage,\n BackofficeExtensionWidget,\n BackofficeExtensionMenuItem,\n BackofficeSideCategory,\n BackofficeModal,\n EmbeddedScript,\n CustomElement,\n} from '@wix/cli-app-manifest';\nimport { validateComponents } from './validate.js';\nimport type { DevCenterComponent } from '../dev-center/components/dev-center-component.js';\nimport type { ComponentSourceBuilder } from './component-source.js';\n\ntype CreateAppManifestParams = {\n appId: string;\n components: DevCenterComponent[];\n sentryDSN?: string;\n componentSourceBuilder: ComponentSourceBuilder;\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'>\n): CustomElement => {\n return {\n compId: component.id,\n compType: ComponentType.CUSTOM_ELEMENT_WIDGET as const,\n compName: component.name,\n compData: {\n customElementWidget: {\n base: {\n name: component.name,\n },\n widgetData: {\n tagName: component.tagName,\n scriptType: CustomElementScriptType.ES_MODULE,\n scriptUrl: 'https://dummy.web.com',\n },\n size: {\n width: {\n defaultWidth: component.width.defaultWidth,\n allowStretch: component.width.allowStretch,\n stretchByDefault: component.width.stretchByDefault,\n },\n height: {\n defaultHeight: component.height.defaultHeight,\n heightMode: HeightMode.FIXED,\n },\n },\n installation: {\n base: {\n autoAdd: component.installation?.autoAddToSite,\n essential: component.installation?.essential,\n maxInstances: component.installation?.maxInstances,\n },\n widget: { region: RegionType.BODY },\n },\n behaviors: {},\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 return {\n appId,\n components: 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 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 const basicConfig = createCustomElementConfig(component);\n\n return {\n ...basicConfig,\n compData: {\n customElementWidget: {\n ...basicConfig.compData.customElementWidget,\n widgetData: {\n ...basicConfig.compData.customElementWidget.widgetData,\n scriptUrl,\n },\n behaviors: {\n ...basicConfig.compData.customElementWidget.behaviors,\n ...(component.relativePanelPath\n ? { settings: { settingsUrl } }\n : {}),\n },\n },\n },\n };\n },\n })\n )\n ),\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 {\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 DashboardSource =\n | {\n iframeUrl: string;\n scriptAsset?: never;\n }\n | {\n scriptAsset: ComponentSource['scriptAsset'];\n iframeUrl?: never;\n };\ntype EmbeddedScriptSource = {\n template: string;\n};\ntype CustomElementSource = { scriptUrl: string; settingsUrl: string };\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 : undefined\n>;\n\nasync function getEmbeddedScriptDevTemplate(\n component: DevCenterComponent<'EmbeddedScript'>,\n devServerUrl?: string\n) {\n const url = new URL(component.relativePath, devServerUrl).href;\n const devTemplate = await fetch(url).then((res) => res.text());\n\n return devTemplate;\n}\n\nconst dashboardSourceBuilder = (\n component:\n | DevCenterComponent<'DashboardPage'>\n | DevCenterComponent<'DashboardPlugin'>\n | DevCenterComponent<'DashboardModal'>,\n model: ProjectModel,\n buildOutput?: ViteBuildOutput\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 = buildOutput\n ? extractModuleBundleName(buildOutput, 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 buildOutput?: ViteBuildOutput,\n devServerUrl?: string\n): Promise<EmbeddedScriptSource> => {\n return {\n template: buildOutput\n ? extractModuleBundleContent(buildOutput, component.relativePath)\n : await getEmbeddedScriptDevTemplate(component, devServerUrl),\n };\n};\n\nconst customElementBuilder = (\n component: DevCenterComponent<'CustomElement'>,\n buildOutput?: ViteBuildOutput\n): CustomElementSource => {\n const moduleId = virtualModuleIdForCustomElementScriptAsset(component.id);\n const componentUrl = buildOutput\n ? extractModuleBundleName(buildOutput, moduleId)\n : `/@id/${moduleId}?import`;\n\n return {\n scriptUrl: componentUrl,\n settingsUrl: virtualPathForCustomElementPanelHTMLAsset(component.id),\n };\n};\n\nexport function getComponentSourceBuilder({\n model,\n buildOutput,\n devServerUrl,\n}: {\n model: ProjectModel;\n buildOutput?: ViteBuildOutput;\n devServerUrl?: string;\n}) {\n return (async (component: DevCenterComponent) => {\n const source = match(component, {\n EmbeddedScript: (embeddedScriptComponent) =>\n embeddedScriptBuilder(\n embeddedScriptComponent,\n buildOutput,\n devServerUrl\n ),\n DashboardSidebarCategory: () => {},\n CustomElement: (customElementComponent) =>\n customElementBuilder(customElementComponent, buildOutput),\n DashboardPage: (dashboardPageComponent) =>\n dashboardSourceBuilder(dashboardPageComponent, model, buildOutput),\n DashboardPlugin: (dashboardPluginComponent) =>\n dashboardSourceBuilder(dashboardPluginComponent, model, buildOutput),\n DashboardModal: (dashboardModalComponent) =>\n dashboardSourceBuilder(dashboardModalComponent, model, buildOutput),\n DashboardMenuPlugin: () => {},\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":["init_esm_shims","import_variant","randomUUID","validateComponents","components","devCenterComponentsToIdMap","a","b","component","componentList","devCenterComponentsWithSameIDMap","devCenterComponents","key","CliError","CliErrorCode","id","title","relativePath","replaceExtension","label","CONFIG_FILENAME","name","randomUUID","init_esm_shims","import_variant","getExperiment","component","appId","createCustomElementConfig","ComponentType","CustomElementScriptType","HeightMode","RegionType","createAppManifest","components","sentryDSN","componentSourceBuilder","validateComponents","componentSentryDSN","BackOfficeHostingPlatforms","EmbeddedScriptPages","scriptUrl","settingsUrl","basicConfig","init_esm_shims","import_variant","init_esm_shims","extractBuildOutputs","buildOutput","CliError","CliErrorCode","output","extractModuleBundleName","moduleId","extractModuleBundleContent","fileName","getEmbeddedScriptDevTemplate","component","devServerUrl","url","res","dashboardSourceBuilder","model","buildOutput","virtualPathForHTMLAsset","moduleId","virtualModuleIdForScriptAsset","componentUrl","extractModuleBundleName","BackOfficeScriptAssetType","embeddedScriptBuilder","extractModuleBundleContent","customElementBuilder","virtualModuleIdForCustomElementScriptAsset","virtualPathForCustomElementPanelHTMLAsset","getComponentSourceBuilder","embeddedScriptComponent","customElementComponent","dashboardPageComponent","dashboardPluginComponent","dashboardModalComponent"]}
@@ -1,4 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import{a as n}from"./chunk-LNZPUJZM.js";import{D as t}from"./chunk-PYEFXRM2.js";import{h as r}from"./chunk-V4TR6DCM.js";r();function s(){let e=t(n);return e.t.bind(e)}export{s as a};
4
- //# sourceMappingURL=chunk-423K4EW3.js.map
@@ -1,4 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import{a as B}from"./chunk-INHSYB3J.js";import{b as oe}from"./chunk-ESE4L44D.js";import{b as O,d as ne,e as pe,f as le,g as ae}from"./chunk-RIDNK3X3.js";import{a as se}from"./chunk-RPZCQEPB.js";import{h as V,i as X,o as ie}from"./chunk-YKE3BZS3.js";import{B as y,C as f,E as te,f as Z,g as R,n as A,o as L,r as E,s as ee,u as S,v as N,x as C,y as j}from"./chunk-PYEFXRM2.js";import{ta as h,w as re}from"./chunk-F2ZEWDAK.js";import{a as g,c as b,d as x,h as w,i as Q}from"./chunk-SARV44FW.js";import{e as v,h as i}from"./chunk-V4TR6DCM.js";i();var U=v(g(),1);import W,{useCallback as be}from"react";i();var q=v(g(),1);import M from"react";i();i();var Ie=v(g(),1);import I,{useState as Ee}from"react";i();var ce=v(g(),1);import me from"react";var ue=({onSubmit:t,onError:r,sites:o})=>{let{t:e}=f(),{getDevSitesCount:s,getDevSitesLimit:l}=B(),{status:a}=C(()=>Promise.all([s(),l()]),[],{onError:r});return(0,ce.match)(a,{Error:()=>null,Loading:()=>me.createElement(S,{text:e("general.loading")}),Success:({result:[d,p]})=>{let _=d>=p,n=o.length===0;return me.createElement(L,{label:e("site_type_select.label"),options:[{availability:n?A.Disabled({reason:e("site_type_select.no_sites")}):A.Enabled(),title:e("site_type_select.pick_existing_site"),value:"select-existing-site"},{title:e("site_type_select.create_new_dev_site"),value:"create-dev-site",availability:_?A.Disabled({reason:e("site_type_select.create_new_dev_site.disabled",{limit:p})}):A.Enabled()}],onSubmit:({value:u})=>t(u)})}})};i();var fe=v(g(),1);import P from"react";i();import $ from"react";i();i();import{useMemo as we}from"react";i();i();var de=w.record(w.object({appDefinitionId:w.string().optional(),permissions:w.object({revoked:w.boolean()}).optional()}));var K=class{constructor(r){this.httpClient=r}isAppInstalled=async({metaSiteId:r,appId:o})=>{try{let{data:e}=await this.httpClient.request({url:`/_api/msm/v1/meta-site/editor-client-spec-map/${r}`}),s=de.parse(e);return Object.values(s).some(a=>a.appDefinitionId===o&&!a.permissions?.revoked)}catch(e){throw new b({code:x.FailedToCheckIfAppInstalled(),cause:e})}}};function F(){let t=se({type:"general"});return we(()=>new K(t),[t])}var T=v(g(),1);i();import D from"react";var Se=({siteId:t,appId:r})=>(Z(async(o,e)=>{e.return&&await ie(`https://manage.wix.com/installer/install?metaSiteId=${t}&appId=${r}&platform=cli&version=latest`)}),D.createElement(D.Fragment,null,D.createElement(y,{i18nKey:"install_app_on_site.warning"}),D.createElement(y,{i18nKey:"install_app_on_site.warning.instructions",components:[D.createElement(ee,{value:"enter"})]})));var z=(0,T.variant)({Success:{},Canceled:{}});function he(t){return t&&typeof t=="object"&&"name"in t&&t.name==="AbortError"}var H=({appId:t,site:r,onSubmit:o,onError:e})=>{let{isAppInstalled:s}=F(),{status:l}=C(async({signal:a})=>{let{appInstallationPollInterval:d}=Q();try{return await X(()=>s({metaSiteId:r.id,appId:t}),{interval:d??2e3,timeout:{milliseconds:60*1e3*2,signal:a}}),z.Success()}catch(p){if(p instanceof V)throw new b({code:x.SiteSelectorTimedout(),cause:p});if(he(p))return z.Canceled();throw p}},[],{onError:e,onSuccess:a=>{(0,T.isType)(a,z.Success)&&o()}});return(0,T.match)(l,{Error:()=>null,Loading:()=>$.createElement(Se,{siteId:r.id,appId:t}),Success:()=>$.createElement(E,{type:"success"},$.createElement(y,{i18nKey:"install_app_on_site.finished_successfully"}))})};var ye=({status:t,appId:r,onSubmit:o,onError:e})=>{let{t:s}=f();return(0,fe.match)(t,{NotRequested:()=>null,Error:()=>null,Loading:()=>P.createElement(S,{text:s("create_dev_site.loading")}),Success:({result:l})=>P.createElement(P.Fragment,null,P.createElement(y,{i18nKey:"create_dev_site.success",components:[P.createElement(R,{skin:"success",bold:!0})],values:{name:l.displayName}}),P.createElement(H,{appId:r,site:l,onSubmit:()=>o(l),onError:e}))})};var _e={"general.loading":"Loading...","site_type_select.label":"Select Development Site","site_type_select.create_new_dev_site":"Create a new Development Site","site_type_select.create_new_dev_site.disabled":"You have reached the maximum number of {limit} Development Sites","site_type_select.pick_existing_site":"Pick an existing site","site_type_select.no_sites":"No sites found","create_dev_site.loading":"Creating your new Development Site...","create_dev_site.success":"Development Site <0>{name}</0> created successfully! \u{1F680}","site_list_select.label":"Select Site","install_app_on_site.warning":"Your new application needs to be installed on the selected Development Site","install_app_on_site.warning.instructions":"Press <0/> to install the application in your browser","install_app_on_site.finished_successfully":"App installed on Development Site."};i();import k,{useState as Ae}from"react";var ge=v(g(),1);i();import Pe from"react";var ve=({onSubmit:t,sites:r})=>{let{t:o}=f();return Pe.createElement(L,{label:o("site_list_select.label"),options:r.map(e=>({key:e.id,title:e.displayName,description:e.viewUrl,value:e})),onSubmit:({value:e})=>t(e)})};var Ce=({sites:t,appId:r,onSubmit:o,onError:e})=>{let{t:s}=f(),{isAppInstalled:l}=F(),[a,d]=Ae(null),p=j((n,u)=>l({metaSiteId:u.id,appId:r}),{onError:e});async function _(n){await p.execute(n)?o(n):d(n)}return k.createElement(k.Fragment,null,k.createElement(ve,{onSubmit:_,sites:t}),(0,ge.isType)(p.status,"Loading")&&k.createElement(S,{text:s("general.loading")}),a&&k.createElement(H,{appId:r,site:a,onSubmit:()=>o(a),onError:e}))};var Y=({appId:t,onSubmit:r,onError:o})=>{let[e,s]=Ee(null),{createDevSite:l}=B(),a=O(),{status:d}=C(()=>a.querySites({query:{cursorPaging:{limit:100}}}),[],{onError:o}),p=j(()=>l(),{onError:o});function _(n){s(n),n==="create-dev-site"&&p.execute()}return I.createElement(te,{messages:_e},(0,Ie.match)(d,{Error:()=>null,Loading:()=>I.createElement(S,{text:I.createElement(y,{i18nKey:"general.loading"})}),Success:({result:n})=>I.createElement(I.Fragment,null,I.createElement(ue,{onSubmit:_,onError:o,sites:n}),e==="create-dev-site"&&I.createElement(ye,{status:p.status,appId:t,onSubmit:r,onError:o}),e==="select-existing-site"&&I.createElement(Ce,{sites:n,appId:t,onSubmit:r,onError:o}))}))};var G=({state:t,onSubmit:r})=>{let o=N(),{t:e}=f(),{model:s}=h();return M.createElement(M.Fragment,null,(0,q.match)(t,{NotConfigured:(0,q.constant)(M.createElement(E,{type:"insight"},e("general.no_site_id_configured"))),NotFound:({id:l})=>M.createElement(E,{type:"error"},e("general.site_id_not_found",{id:l}))}),M.createElement(Y,{appId:s.config.appId,onSubmit:r,onError:o}))};var ui=({children:t,siteId:r})=>{let o=N(),{model:{projectFolder:e}}=h(),s=oe(),l=O(),{status:a,merge:d}=C(async()=>ae({projectFolder:e,siteListClient:l,siteId:r,writeDebugLog:s}),[]),p=be(async n=>{try{await ne(e,{siteId:n.id}),d({result:le.Resolved({site:n})})}catch{throw new b({code:x.FailedToSaveDevelopmentSite({path:re})})}},[d,e]),_=be(n=>p(n).catch(o),[o,p]);return(0,U.match)(a,{Error:()=>null,Loading:()=>W.createElement(S,null),Success:({result:n})=>(0,U.match)(n,{NotConfigured:u=>W.createElement(G,{state:u,onSubmit:_}),NotFound:u=>W.createElement(G,{state:u,onSubmit:_}),Resolved:({site:u})=>W.createElement(pe.Provider,{value:{site:u,setSite:p}},typeof t=="function"?t(u):t)})})};i();var J=v(g(),1);import{useCallback as xe}from"react";function _i(){let{model:t}=h(),r=xe(e=>t.components.some(s=>s.platforms.some((0,J.isType)(e.type))),[t.components]),o=xe(e=>t.components.every(s=>s.platforms.some((0,J.isType)(e.type))||s.platforms.length===0),[t.components]);return{isPlatformExists:r,hasSinglePlatform:o}}export{Y as a,ui as b,_i as c};
4
- //# sourceMappingURL=chunk-5OTJBADY.js.map
@@ -1,4 +0,0 @@
1
- import { createRequire as _createRequire } from 'node:module';
2
- const require = _createRequire(import.meta.url);
3
- import{m as o,n as d,o as u,p,q as c,r as I,u as b,v as h}from"./chunk-F2ZEWDAK.js";import{h as e}from"./chunk-SARV44FW.js";import{h as O}from"./chunk-V4TR6DCM.js";O();import C from"node:fs/promises";var l=e.object({errorReporting:e.object({url:e.string().optional(),artifact:e.object({fullArtifactId:e.string().max(255).min(1),version:e.string().max(255).min(1)}).optional()}).optional()}),m=e.object({iframeUrl:e.string().optional(),scriptAsset:e.object({exportedName:e.string(),containerId:e.string(),url:e.string(),scriptType:e.string().optional()}).optional()}),N=e.object({hostingPlatform:e.string(),fullPage:e.boolean().nullish(),hideInSidebar:e.boolean().nullish(),priority:e.number().nullish(),routePath:e.string().nullish(),title:e.string(),pageCategoryId:e.string().uuid().nullish(),activeSidebarPageId:e.string().nullish(),requiredPermission:e.string().nullish(),previousRoutePaths:e.array(e.string()).nullish()}).merge(l).merge(m).passthrough(),T=e.object({width:e.number().nullish(),height:e.number().nullish()}).merge(m).passthrough(),g=e.object({appId:e.string(),componentId:e.string().uuid(),spec:e.string().min(1),variantValue:e.string()}).passthrough().optional(),_=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_PAGE),compData:e.object({backOfficePage:N}),compName:e.string().optional(),experiment:g}).passthrough(),j=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION),compData:e.object({backOfficeExtension:e.object({hostingPlatform:e.string(),extends:e.string(),title:e.string().nullish(),extensionType:e.literal(I.BACK_OFFICE_EXTENSION_WIDGET),requiredPermission:e.string().nullish(),widget:T}).merge(l).passthrough()}),compName:e.string().optional(),experiment:g}).passthrough(),A=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_WIDGET),compData:e.object({backOfficeExtensionWidget:e.object({hostingPlatform:e.string(),extends:e.string(),title:e.string().nullish(),description:e.string().optional(),requiredPermission:e.string().nullish(),width:e.number().nullish(),height:e.number().nullish()}).merge(m).merge(l).passthrough()}),compName:e.string().optional(),experiment:g}).passthrough(),D=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_MENU_ITEM),compData:e.object({backOfficeExtensionMenuItem:e.object({id:e.string().uuid(),title:e.string().min(1),subtitle:e.string().max(200).optional(),iconKey:e.string().min(3).max(50).optional(),extends:e.string().uuid(),action:e.object({navigateToPage:e.object({pageId:e.string().uuid(),relativeUrl:e.string().optional()}),openModal:e.object({componentId:e.string().uuid(),componentParams:e.record(e.string().min(1),e.string().min(1)).optional()})}).partial().superRefine((r,i)=>{!r.navigateToPage&&!r.openModal&&i.addIssue({code:e.ZodIssueCode.custom,message:"action must have either navigateToPage or openModal"})}),sentryDSN:e.string().optional(),requiredPermission:e.string().optional()}).merge(m).merge(l).passthrough()}),compName:e.string().optional(),experiment:g}).passthrough(),v=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_MODAL),compData:e.object({backOfficeModal:e.object({hostingPlatform:e.string(),title:e.string().nullish(),requiredPermission:e.string().nullish(),width:e.number().nullish(),height:e.number().nullish()}).merge(m).merge(l).passthrough()}),compName:e.string().optional(),experiment:g}).passthrough(),y=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_SIDEBAR_CATEGORY),compData:e.object({backOfficeSidebarCategory:e.object({hostingPlatform:e.string(),title:e.string(),priority:e.number().nullish()})}),compName:e.string().optional()}).passthrough(),P=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_WIDGET),compName:e.string().optional()}).passthrough(),F=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_CONTAINER),compName:e.string().optional()}).passthrough(),M=e.object({template:e.string(),name:e.string(),pages:e.enum([u.NONE_PAGES,u.ONCE,u.SPECIFIC_PAGES]),placement:e.enum([p.HEAD,p.BODY_START,p.BODY_END,p.NONE_PLACEMENT]),connectArticleUrl:e.string(),embedCategory:e.enum([c.UNKNOWN,c.FUNCTIONAL,c.ESSENTIAL,c.ANALYTICS,c.ADVERTISING]),loadOnce:e.boolean(),allowedForFreeSite:e.boolean()}),x=e.object({compId:e.string(),compType:e.literal(o.EMBEDDED_SCRIPT),compName:e.string().optional(),compData:e.object({embeddedScriptComponentData:M})}).passthrough(),k=e.object({base:e.object({id:e.string().optional(),name:e.string()}),installation:e.object({base:e.object({autoAdd:e.boolean().optional(),essential:e.boolean().optional(),maxInstances:e.number().optional()}).optional(),widget:e.object({default_preset:e.object({desktop_preset_id:e.string().optional(),tablet_preset_id:e.string().optional(),mobile_preset_id:e.string().optional()}).optional(),region:e.enum([d.BODY,d.FOOTER,d.HEADER])}).optional()}).optional(),widgetData:e.object({tagName:e.string(),scriptUrl:e.string(),scriptType:e.enum([b.NONE,b.COMMON_JS,b.ES_MODULE])}),behaviors:e.object({settings:e.object({settingsUrl:e.string()}).optional(),dashboard:e.object({dashboardPageComponentId:e.string()}).optional()}),size:e.object({width:e.object({allowStretch:e.boolean().optional(),defaultWidth:e.number().optional(),stretchByDefault:e.boolean().optional()}),height:e.object({defaultHeight:e.number(),heightMode:e.enum([h.AUTO,h.FIXED,h.UNKNOWN]).optional()})})}),W=e.object({compId:e.string(),compType:e.literal(o.CUSTOM_ELEMENT_WIDGET),compName:e.string().optional(),compData:e.object({customElementWidget:k})}).passthrough(),U=e.object({compType:e.literal(o.TOPOLOGY),compId:e.string(),compName:e.string().optional(),compData:e.object({topology:e.object({topology:e.object({backendApiUrl:e.string().url()})})})}).passthrough(),B=e.object({appId:e.string(),components:e.array(e.discriminatedUnion("compType",[_,j,A,D,v,y,P,F,x,W,U]))});async function J(r){try{let i=await C.readFile(r,"utf-8");return B.parse(JSON.parse(i))}catch(i){let a=i instanceof Error?i.toString():JSON.stringify(i);throw new Error(`Failed to read App Manifest at ${r}: ${a}`)}}var f=(r,i)=>new URL(r,i).href,E=(r,i)=>{let{scriptAsset:a,iframeUrl:n}=r;return a?{scriptAsset:{...a,url:f(a.url,i)}}:n?{iframeUrl:f(n,i)}:r},R=(r,i)=>({template:r.template.replaceAll("__STATICS_BASE_URL_PLACEHOLDER__",i)}),q=(r,i)=>{let a=JSON.parse(JSON.stringify(r)),n=i.endsWith("/")?i:`${i}/`;return a.components.forEach(S=>{let{compData:t,compType:s}=S;s===o.BACK_OFFICE_PAGE&&(t.backOfficePage={...t.backOfficePage,...E(t.backOfficePage,n)}),s===o.BACK_OFFICE_EXTENSION&&(t.backOfficeExtension.widget={...t.backOfficeExtension.widget,...E(t.backOfficeExtension.widget,n)}),s===o.BACK_OFFICE_EXTENSION_WIDGET&&(t.backOfficeExtensionWidget={...t.backOfficeExtensionWidget,...E(t.backOfficeExtensionWidget,n)}),s===o.BACK_OFFICE_MODAL&&(t.backOfficeModal={...t.backOfficeModal,...E(t.backOfficeModal,n)}),s===o.EMBEDDED_SCRIPT&&(t.embeddedScriptComponentData={...t.embeddedScriptComponentData,...R(t.embeddedScriptComponentData,n)}),s===o.CUSTOM_ELEMENT_WIDGET&&(t.customElementWidget={...t.customElementWidget,widgetData:{...t.customElementWidget.widgetData,scriptUrl:f(t.customElementWidget.widgetData.scriptUrl,n)},behaviors:{...t.customElementWidget.behaviors,...t.customElementWidget.behaviors.settings?{settings:{settingsUrl:f(t.customElementWidget.behaviors.settings.settingsUrl,n)}}:{}}})}),a};export{J as a,q as b};
4
- //# sourceMappingURL=chunk-ALZJFJ23.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../cli-app-manifest/build/index.js"],"sourcesContent":["// src/read.ts\nimport fs from \"node:fs/promises\";\n\n// src/types.ts\nimport {\n ComponentType,\n CustomElementScriptType,\n EmbedCategory,\n EmbeddedScriptPages,\n EmbeddedScriptPlacement,\n ExtendingComponentType,\n HeightMode,\n RegionType\n} from \"@wix/ambassador-devcenter-components-v1-component/types\";\nimport { z } from \"zod\";\nvar errorReportingSchema = z.object({\n errorReporting: z.object({\n url: z.string().optional(),\n // optional because of yoshi\n artifact: z.object({\n fullArtifactId: z.string().max(255).min(1),\n version: z.string().max(255).min(1)\n }).optional()\n }).optional()\n});\nvar componentSourceSchema = z.object({\n iframeUrl: z.string().optional(),\n scriptAsset: z.object({\n exportedName: z.string(),\n containerId: z.string(),\n url: z.string(),\n scriptType: z.string().optional()\n }).optional()\n});\nvar backofficePageCompDataSchema = z.object({\n hostingPlatform: z.string(),\n fullPage: z.boolean().nullish(),\n hideInSidebar: z.boolean().nullish(),\n priority: z.number().nullish(),\n routePath: z.string().nullish(),\n title: z.string(),\n pageCategoryId: z.string().uuid().nullish(),\n activeSidebarPageId: z.string().nullish(),\n requiredPermission: z.string().nullish(),\n previousRoutePaths: z.array(z.string()).nullish()\n}).merge(errorReportingSchema).merge(componentSourceSchema).passthrough();\nvar widgetCompDataSchema = z.object({\n width: z.number().nullish(),\n height: z.number().nullish()\n}).merge(componentSourceSchema).passthrough();\nvar componentExperimentSchema = z.object({\n appId: z.string(),\n componentId: z.string().uuid(),\n spec: z.string().min(1),\n variantValue: z.string()\n}).passthrough().optional();\nvar backofficePageSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_PAGE),\n compData: z.object({\n backOfficePage: backofficePageCompDataSchema\n }),\n compName: z.string().optional(),\n experiment: componentExperimentSchema\n}).passthrough();\nvar backofficeExtensionSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_EXTENSION),\n compData: z.object({\n backOfficeExtension: z.object({\n hostingPlatform: z.string(),\n extends: z.string(),\n title: z.string().nullish(),\n extensionType: z.literal(\n ExtendingComponentType.BACK_OFFICE_EXTENSION_WIDGET\n ),\n requiredPermission: z.string().nullish(),\n widget: widgetCompDataSchema\n }).merge(errorReportingSchema).passthrough()\n }),\n compName: z.string().optional(),\n experiment: componentExperimentSchema\n}).passthrough();\nvar backofficeExtensionWidgetSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_EXTENSION_WIDGET),\n compData: z.object({\n backOfficeExtensionWidget: z.object({\n hostingPlatform: z.string(),\n extends: z.string(),\n title: z.string().nullish(),\n description: z.string().optional(),\n requiredPermission: z.string().nullish(),\n width: z.number().nullish(),\n height: z.number().nullish()\n }).merge(componentSourceSchema).merge(errorReportingSchema).passthrough()\n }),\n compName: z.string().optional(),\n experiment: componentExperimentSchema\n}).passthrough();\nvar backofficeExtensionMenuPluginSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_EXTENSION_MENU_ITEM),\n compData: z.object({\n backOfficeExtensionMenuItem: z.object({\n id: z.string().uuid(),\n title: z.string().min(1),\n subtitle: z.string().max(200).optional(),\n iconKey: z.string().min(3).max(50).optional(),\n extends: z.string().uuid(),\n action: z.object({\n navigateToPage: z.object({\n pageId: z.string().uuid(),\n relativeUrl: z.string().optional()\n }),\n openModal: z.object({\n componentId: z.string().uuid(),\n componentParams: z.record(z.string().min(1), z.string().min(1)).optional()\n })\n }).partial().superRefine((data, ctx) => {\n if (!data.navigateToPage && !data.openModal) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"action must have either navigateToPage or openModal\"\n });\n }\n }),\n sentryDSN: z.string().optional(),\n requiredPermission: z.string().optional()\n }).merge(componentSourceSchema).merge(errorReportingSchema).passthrough()\n }),\n compName: z.string().optional(),\n experiment: componentExperimentSchema\n}).passthrough();\nvar backofficeModalSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_MODAL),\n compData: z.object({\n backOfficeModal: z.object({\n hostingPlatform: z.string(),\n title: z.string().nullish(),\n requiredPermission: z.string().nullish(),\n width: z.number().nullish(),\n height: z.number().nullish()\n }).merge(componentSourceSchema).merge(errorReportingSchema).passthrough()\n }),\n compName: z.string().optional(),\n experiment: componentExperimentSchema\n}).passthrough();\nvar backofficeSideCategorySchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_SIDEBAR_CATEGORY),\n compData: z.object({\n backOfficeSidebarCategory: z.object({\n hostingPlatform: z.string(),\n title: z.string(),\n priority: z.number().nullish()\n })\n }),\n compName: z.string().optional()\n}).passthrough();\nvar backofficeWidgetSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_WIDGET),\n compName: z.string().optional()\n}).passthrough();\nvar backofficeExtensionContainer = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.BACK_OFFICE_EXTENSION_CONTAINER),\n compName: z.string().optional()\n}).passthrough();\nvar embeddedScriptComponentData = z.object({\n template: z.string(),\n name: z.string(),\n pages: z.enum([\n EmbeddedScriptPages.NONE_PAGES,\n EmbeddedScriptPages.ONCE,\n EmbeddedScriptPages.SPECIFIC_PAGES\n ]),\n placement: z.enum([\n EmbeddedScriptPlacement.HEAD,\n EmbeddedScriptPlacement.BODY_START,\n EmbeddedScriptPlacement.BODY_END,\n EmbeddedScriptPlacement.NONE_PLACEMENT\n ]),\n connectArticleUrl: z.string(),\n embedCategory: z.enum([\n EmbedCategory.UNKNOWN,\n EmbedCategory.FUNCTIONAL,\n EmbedCategory.ESSENTIAL,\n EmbedCategory.ANALYTICS,\n EmbedCategory.ADVERTISING\n ]),\n loadOnce: z.boolean(),\n allowedForFreeSite: z.boolean()\n});\nvar embeddedScriptSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.EMBEDDED_SCRIPT),\n compName: z.string().optional(),\n compData: z.object({\n embeddedScriptComponentData\n })\n}).passthrough();\nvar customElementWidget = z.object({\n base: z.object({\n id: z.string().optional(),\n name: z.string()\n }),\n installation: z.object({\n base: z.object({\n autoAdd: z.boolean().optional(),\n essential: z.boolean().optional(),\n maxInstances: z.number().optional()\n }).optional(),\n widget: z.object({\n default_preset: z.object({\n desktop_preset_id: z.string().optional(),\n tablet_preset_id: z.string().optional(),\n mobile_preset_id: z.string().optional()\n }).optional(),\n region: z.enum([\n RegionType.BODY,\n RegionType.FOOTER,\n RegionType.HEADER\n ])\n }).optional()\n }).optional(),\n widgetData: z.object({\n tagName: z.string(),\n scriptUrl: z.string(),\n scriptType: z.enum([\n CustomElementScriptType.NONE,\n CustomElementScriptType.COMMON_JS,\n CustomElementScriptType.ES_MODULE\n ])\n }),\n behaviors: z.object({\n settings: z.object({\n settingsUrl: z.string()\n }).optional(),\n dashboard: z.object({\n dashboardPageComponentId: z.string()\n }).optional()\n }),\n size: z.object({\n width: z.object({\n allowStretch: z.boolean().optional(),\n defaultWidth: z.number().optional(),\n stretchByDefault: z.boolean().optional()\n }),\n height: z.object({\n defaultHeight: z.number(),\n heightMode: z.enum([HeightMode.AUTO, HeightMode.FIXED, HeightMode.UNKNOWN]).optional()\n })\n })\n /** The runtime dependencies array to declare the widget packages. */\n // dependencies?: WixDependency[];\n});\nvar customElementSchema = z.object({\n compId: z.string(),\n compType: z.literal(ComponentType.CUSTOM_ELEMENT_WIDGET),\n compName: z.string().optional(),\n compData: z.object({\n customElementWidget\n })\n}).passthrough();\nvar topologySchema = z.object({\n compType: z.literal(ComponentType.TOPOLOGY),\n compId: z.string(),\n compName: z.string().optional(),\n compData: z.object({\n topology: z.object({\n topology: z.object({\n backendApiUrl: z.string().url()\n })\n })\n })\n}).passthrough();\nvar appManifestSchema = z.object({\n appId: z.string(),\n components: z.array(\n z.discriminatedUnion(\"compType\", [\n backofficePageSchema,\n backofficeExtensionSchema,\n backofficeExtensionWidgetSchema,\n backofficeExtensionMenuPluginSchema,\n backofficeModalSchema,\n backofficeSideCategorySchema,\n backofficeWidgetSchema,\n backofficeExtensionContainer,\n embeddedScriptSchema,\n customElementSchema,\n topologySchema\n ])\n )\n});\n\n// src/read.ts\nasync function readAppManifest(filePath) {\n try {\n const configData = await fs.readFile(filePath, \"utf-8\");\n return appManifestSchema.parse(JSON.parse(configData));\n } catch (e) {\n const causeMessage = e instanceof Error ? e.toString() : JSON.stringify(e);\n throw new Error(\n `Failed to read App Manifest at ${filePath}: ${causeMessage}`\n );\n }\n}\n\n// src/updateErrorReportingWithArtifact.ts\nvar updateErrorReportingWithArtifact = (appManifest, artifactData) => {\n const clonedManifest = JSON.parse(JSON.stringify(appManifest));\n const { artifactId, groupId, version } = artifactData;\n clonedManifest.components.forEach((component) => {\n Object.values(component.compData).forEach((componentData) => {\n if (componentData.errorReporting) {\n componentData.errorReporting.artifact = {\n ...componentData.errorReporting.artifact,\n fullArtifactId: `${groupId}.${artifactId}`,\n version\n };\n }\n });\n });\n return clonedManifest;\n};\n\n// src/updateAppManifestWithBaseUrl.ts\nimport { ComponentType as ComponentType2 } from \"@wix/ambassador-devcenter-components-v1-component/types\";\nvar normalizeUrl = (url, baseUrl) => {\n return new URL(url, baseUrl).href;\n};\nvar overrideComponentSourceWithNormalizedUrls = (componentSource, normalizedBaseUrl) => {\n const { scriptAsset, iframeUrl } = componentSource;\n if (scriptAsset) {\n return {\n scriptAsset: {\n ...scriptAsset,\n url: normalizeUrl(scriptAsset.url, normalizedBaseUrl)\n }\n };\n }\n if (iframeUrl) {\n return {\n iframeUrl: normalizeUrl(iframeUrl, normalizedBaseUrl)\n };\n }\n return componentSource;\n};\nvar overrideComponentTemplateWithNormalizedUrls = (componentSource, normalizedBaseUrl) => {\n return {\n template: componentSource.template.replaceAll(\n \"__STATICS_BASE_URL_PLACEHOLDER__\",\n normalizedBaseUrl\n )\n };\n};\nvar updateAppManifestWithBaseUrl = (appManifest, baseUrl) => {\n const clonedManifest = JSON.parse(JSON.stringify(appManifest));\n const normalizedBaseUrl = baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`;\n clonedManifest.components.forEach((component) => {\n const { compData, compType } = component;\n if (compType === ComponentType2.BACK_OFFICE_PAGE) {\n compData.backOfficePage = {\n ...compData.backOfficePage,\n ...overrideComponentSourceWithNormalizedUrls(\n compData.backOfficePage,\n normalizedBaseUrl\n )\n };\n }\n if (compType === ComponentType2.BACK_OFFICE_EXTENSION) {\n compData.backOfficeExtension.widget = {\n ...compData.backOfficeExtension.widget,\n ...overrideComponentSourceWithNormalizedUrls(\n compData.backOfficeExtension.widget,\n normalizedBaseUrl\n )\n };\n }\n if (compType === ComponentType2.BACK_OFFICE_EXTENSION_WIDGET) {\n compData.backOfficeExtensionWidget = {\n ...compData.backOfficeExtensionWidget,\n ...overrideComponentSourceWithNormalizedUrls(\n compData.backOfficeExtensionWidget,\n normalizedBaseUrl\n )\n };\n }\n if (compType === ComponentType2.BACK_OFFICE_MODAL) {\n compData.backOfficeModal = {\n ...compData.backOfficeModal,\n ...overrideComponentSourceWithNormalizedUrls(\n compData.backOfficeModal,\n normalizedBaseUrl\n )\n };\n }\n if (compType === ComponentType2.EMBEDDED_SCRIPT) {\n compData.embeddedScriptComponentData = {\n ...compData.embeddedScriptComponentData,\n ...overrideComponentTemplateWithNormalizedUrls(\n compData.embeddedScriptComponentData,\n normalizedBaseUrl\n )\n };\n }\n if (compType === ComponentType2.CUSTOM_ELEMENT_WIDGET) {\n compData.customElementWidget = {\n ...compData.customElementWidget,\n widgetData: {\n ...compData.customElementWidget.widgetData,\n scriptUrl: normalizeUrl(\n compData.customElementWidget.widgetData.scriptUrl,\n normalizedBaseUrl\n )\n },\n behaviors: {\n ...compData.customElementWidget.behaviors,\n ...compData.customElementWidget.behaviors.settings ? {\n settings: {\n settingsUrl: normalizeUrl(\n compData.customElementWidget.behaviors.settings.settingsUrl,\n normalizedBaseUrl\n )\n }\n } : {}\n }\n };\n }\n });\n return clonedManifest;\n};\nexport {\n appManifestSchema,\n readAppManifest,\n updateAppManifestWithBaseUrl,\n updateErrorReportingWithArtifact\n};\n"],"mappings":"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","names":["init_esm_shims","fs","errorReportingSchema","z","componentSourceSchema","backofficePageCompDataSchema","widgetCompDataSchema","componentExperimentSchema","backofficePageSchema","ComponentType","backofficeExtensionSchema","ExtendingComponentType","backofficeExtensionWidgetSchema","backofficeExtensionMenuPluginSchema","data","ctx","backofficeModalSchema","backofficeSideCategorySchema","backofficeWidgetSchema","backofficeExtensionContainer","embeddedScriptComponentData","EmbeddedScriptPages","EmbeddedScriptPlacement","EmbedCategory","embeddedScriptSchema","customElementWidget","RegionType","CustomElementScriptType","HeightMode","customElementSchema","topologySchema","appManifestSchema","readAppManifest","filePath","configData","fs","e","causeMessage","normalizeUrl","url","baseUrl","overrideComponentSourceWithNormalizedUrls","componentSource","normalizedBaseUrl","scriptAsset","iframeUrl","overrideComponentTemplateWithNormalizedUrls","updateAppManifestWithBaseUrl","appManifest","clonedManifest","component","compData","compType","ComponentType"]}