@teambit/preview 1.0.587 → 1.0.590
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{preview-1744168729194.js → preview-1744364829202.js} +2 -2
- package/dist/preview.main.runtime.js +1 -1
- package/dist/preview.main.runtime.js.map +1 -1
- package/dist/preview.start-plugin.d.ts +10 -1
- package/dist/preview.start-plugin.js +99 -8
- package/dist/preview.start-plugin.js.map +1 -1
- package/package.json +22 -22
- package/preview.start-plugin.tsx +114 -12
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.590/dist/preview.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.590/dist/preview.docs.mdx';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
@@ -1100,7 +1100,7 @@ class PreviewMain {
|
|
1100
1100
|
// app.registerApp(new PreviewApp());
|
1101
1101
|
const preview = new PreviewMain(harmony, previewSlot, uiMain, cache, envs, componentExtension, pkg, aspectLoader, config, bundlingStrategySlot, builder, workspace, logger, dependencyResolver, express);
|
1102
1102
|
cli.register(new (_generatePreview().GeneratePreviewCmd)(preview), new (_servePreview().ServePreviewCmd)(preview));
|
1103
|
-
if (workspace) uiMain.registerStartPlugin(new (_preview4().PreviewStartPlugin)(workspace, bundler, uiMain, pubsub, logger, watcher));
|
1103
|
+
if (workspace) uiMain.registerStartPlugin(new (_preview4().PreviewStartPlugin)(workspace, bundler, uiMain, pubsub, logger, watcher, graphql));
|
1104
1104
|
componentExtension.registerRoute([new (_preview2().PreviewRoute)(preview, logger), new (_componentPreview().ComponentPreviewRoute)(preview, logger),
|
1105
1105
|
// @ts-ignore
|
1106
1106
|
new (_envTemplate().EnvTemplateRoute)(preview, logger), new (_previewAssets().PreviewAssetsRoute)(preview, logger)]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_builder","data","require","_bundler","_pubsub","_cli","_component","_envs","_harmony","_ui","_cache","_legacy","_bitError","_objectHash","_interopRequireDefault","_lodash","_fsExtra","_path","_pkg","_aspectLoader","_workspace","_logger","_dependencyResolver","_express","_component2","_watcher","_graphql","_scope","_harmonyModules","_exceptions","_generateLink","_previewArtifact","_preview","_preview2","_preview3","_strategies","_executionRef","_preview4","_envPreviewTemplate","_envTemplate","_componentPreview","_preview5","_previewAssets","_preview6","_preBundle","_preBundle2","_preBundleUtils","_generatePreview","_servePreview","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","cache","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","express","Map","Date","now","c","updater","envId","getOrCalculateEnvId","executionRef","executionRefs","get","warn","previews","values","updateLinkFiles","currentComponents","executionCtx","cId","component","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByAspectAndTaskName","PREVIEW_TASK_NAME","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getPreviewAspectConfig","state","aspects","getPreviewData","previewData","doesEnvIncludesOnlyOverview","envComponent","supportsOnlyOverview","doesEnvUseNameParam","supportsUseNameParam","calculateIncludeOnlyOverview","isUsingCoreEnv","getEnvComponent","calculateUseNameParam","generateComponentPreview","componentPattern","name","componentIds","idsByPattern","listIds","BitError","getMany","envsRuntime","createEnvironment","previewResults","run","previewService","serveLocalPreview","port","app","createApp","getDirAndPath","comp","msg","componentPreviewIndex","readComponentsPreview","compParts","split","compToCheck","filePath","part","slice","componentPreviewFolder","envPreviewDir","getEnvLocalPreviewDir","publicDir","use","req","res","next","params","componentId","message","status","send","endsWith","file","existsSync","sendFile","static","server","listen","reject","on","err","consoleSuccess","calcPreviewData","doesScaling","calcDoesScalingForComponent","dataFromEnv","calcPreviewDataFromEnv","envData","calculateDataForEnvComponent","onlyOverview","useNameParam","toStringWithoutVersion","strategyName","COMPONENT_PREVIEW_STRATEGY_NAME","splitComponentBundle","env","getEnv","envPreviewConfig","getEnvPreviewConfig","isEnv","previewAspectConfig","isScaling","calcIsBundledWithEnv","envPreviewData","isBundledWithEnvBackward","ENV_PREVIEW_STRATEGY_NAME","getArtifactsVinylByAspectAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","isNew","isEnvSupportScaling","inWorkspace","hasId","envSupportScaling","calculateIsEnvSupportScaling","isSupportSkipIncludes","isFeatureEnabled","ONLY_OVERVIEW","isCore","skipIncludes","getOnlyOverview","getUseNameParam","isLegacyHeader","ENV_WITH_LEGACY_DOCS","ENV_STRATEGY_ARTIFACT_NAME","envType","getEnvData","type","includes","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","getAspectDir","artifactDef","getEnvTemplateArtifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","getDefs","ensureTempPackage","workspacePath","path","tempPackageDir","ensureDirSync","writeJSONSync","writeFileSync","writeLink","prefix","moduleMap","mainModulesMap","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewEntry","linkFiles","aspectsIdsToNotFilterOut","rebuild","skipUiBuild","runtimeOptions","uiRoot","getUi","cacheKey","RUNTIME_NAME","currentBundleHash","createBundleHash","preBundleHash","readBundleHash","BUNDLE_DIR","workspaceBundleDir","PUBLIC_DIR","lastBundleHash","bundlePath","getBundlePath","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","buildPreBundlePreview","generateBundlePreviewEntry","toObject","map","previewDef","defaultTemplatePath","renderTemplatePathByEnv","visitedEnvs","Set","envDefinition","getModuleMap","withPathsP","asyncMap","envDef","environment","has","modulePath","add","compilerInstance","getCompiler","getPreviewComponentRootPath","getRuntimeModulePath","distRelativePath","getDistPathBySrcPath","relative","withPaths","dirPath","mkdirSync","recursive","link","all","writePreviewRuntime","runtimeName","opts","root","MainRuntime","Error","allComponentContextAspects","reduce","acc","curr","concat","ids","hostAspects","allAspectsToInclude","uniq","filtered","aspect","getId","isCoreAspect","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getPreviewConfig","getBundlingStrategy","defaultStrategies","strategyFromEnv","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","graphql","watcher","scope","cli","createLogger","preview","GeneratePreviewCmd","ServePreviewCmd","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","PreBundlePreviewTask","registerOnComponentAdd","registerOnComponentLoad","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","registerOnCompAspectReCalc","PreviewService","registerService","previewSchema","exports","Slot","withType","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","CacheAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","WatcherAspect","ScopeAspect","CLIAspect","ExpressAspect","addRuntime"],"sources":["preview.main.runtime.ts"],"sourcesContent":["import { ArtifactFactory, BuilderAspect } from '@teambit/builder';\nimport type { BuilderMain } from '@teambit/builder';\nimport { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime, CLIAspect } from '@teambit/cli';\nimport type { CLIMain } from '@teambit/cli';\nimport {\n Component,\n ComponentAspect,\n ComponentMain,\n ComponentMap,\n ComponentID,\n ResolveAspectsOptions,\n} from '@teambit/component';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { EnvsExecutionResult, EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain, UIRoot } from '@teambit/ui';\nimport { CacheAspect, CacheMain } from '@teambit/cache';\nimport { CACHE_ROOT } from '@teambit/legacy.constants';\nimport { BitError } from '@teambit/bit-error';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync, ensureDirSync, writeJSONSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectLoaderAspect, getAspectDir, getAspectDirFromBvm } from '@teambit/aspect-loader';\nimport type { AspectDefinition, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport { WatcherAspect, WatcherMain } from '@teambit/watcher';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { ONLY_OVERVIEW, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink, MainModulesMap } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask, PREVIEW_TASK_NAME } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport {\n EnvBundlingStrategy,\n ComponentBundlingStrategy,\n COMPONENT_STRATEGY_ARTIFACT_NAME,\n COMPONENT_STRATEGY_SIZE_KEY_NAME,\n ENV_PREVIEW_STRATEGY_NAME,\n ENV_STRATEGY_ARTIFACT_NAME,\n COMPONENT_PREVIEW_STRATEGY_NAME,\n} from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\nimport {\n EnvPreviewTemplateTask,\n GENERATE_ENV_TEMPLATE_TASK_NAME,\n getArtifactDef as getEnvTemplateArtifactDef,\n} from './env-preview-template.task';\nimport { EnvTemplateRoute } from './env-template.route';\nimport { ComponentPreviewRoute } from './component-preview.route';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\nimport { PreviewService } from './preview.service';\nimport { PUBLIC_DIR, RUNTIME_NAME, buildPreBundlePreview, generateBundlePreviewEntry } from './pre-bundle';\nimport { BUNDLE_DIR, PreBundlePreviewTask } from './pre-bundle.task';\nimport { createBundleHash, getBundlePath, readBundleHash } from './pre-bundle-utils';\nimport { GeneratePreviewCmd } from './generate-preview.cmd';\nimport { ServePreviewCmd } from './serve-preview.cmd';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\nexport type PreviewStrategyName = 'env' | 'component';\n\nexport type PreviewFiles = {\n files: string[];\n isBundledWithEnv: boolean;\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewVariantConfig = {\n isScaling?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load\n */\nexport type PreviewComponentData = PreviewAnyComponentData & PreviewEnvComponentData;\n\n/**\n * Preview data that stored on the component on load for any component\n */\nexport type PreviewAnyComponentData = {\n doesScaling?: boolean;\n /**\n * The strategy configured by the component's env\n */\n strategyName?: PreviewStrategyName;\n /**\n * Does the component has a bundle for the component itself (separated from the compositions/docs)\n * Calculated by the component's env\n */\n splitComponentBundle?: boolean;\n\n /**\n * don't allow other aspects implementing a preview definition to be included in your preview.\n */\n onlyOverview?: boolean;\n\n /**\n * use name query params to select a specific composition to render.\n */\n useNameParam?: boolean;\n\n /**\n * don't allow other aspects implementing a preview definition to be included in your preview.\n */\n skipIncludes?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load if the component is an env\n */\nexport type PreviewEnvComponentData = {\n isScaling?: boolean;\n supportsOnlyOverview?: boolean;\n supportsUseNameParam?: boolean;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n /**\n * limit concurrent components when running the bundling step for your bundler during generate components preview task.\n * this helps mitigate large memory consumption for the build pipeline. This may increase the overall time for the generate-preview task, but reduce memory footprint.\n * default - no limit.\n */\n maxChunkSize?: number;\n onlyOverview?: boolean;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: PreviewStrategyName;\n splitComponentBundle?: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport type GenerateLinkFn = (prefix: string, componentMap: ComponentMap<string[]>, defaultModule?: string) => string;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private cache: CacheMain,\n\n private envs: EnvsMain,\n\n private componentAspect: ComponentMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain,\n\n private express: ExpressMain\n ) {}\n\n private previewService: PreviewService;\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n getComponentBundleSize(component: Component): ComponentPreviewSize | undefined {\n const data = this.builder.getDataByAspect(component, PreviewAspect.id);\n\n if (!data) return undefined;\n return data[COMPONENT_STRATEGY_SIZE_KEY_NAME];\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts) return undefined;\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * Get a list of all the artifact files generated during the GeneratePreview task\n * @param component\n * @returns\n */\n async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {\n const artifacts = await this.getPreview(component);\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n isBundledWithEnv,\n };\n }\n\n /**\n * Get the preview config of the component.\n * (config that was set by variants or on bitmap)\n * @param component\n * @returns\n */\n getPreviewAspectConfig(component: Component): PreviewVariantConfig | undefined {\n return component.state.aspects.get(PreviewAspect.id)?.config;\n }\n\n /**\n * Get the preview data of the component.\n * (data that was calculated during the on load process)\n * @param component\n * @returns\n */\n getPreviewData(component: Component): PreviewComponentData | undefined {\n const previewData = component.state.aspects.get(PreviewAspect.id)?.data;\n return previewData;\n }\n\n /**\n * check if the current version of env component supports skipping other included previews\n * @param envComponent\n * @returns\n */\n doesEnvIncludesOnlyOverview(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.supportsOnlyOverview;\n }\n\n /**\n * check if the current version of env component supports name query param\n * @param envComponent\n * @returns\n */\n doesEnvUseNameParam(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.supportsUseNameParam;\n }\n\n private async calculateIncludeOnlyOverview(component: Component): Promise<boolean> {\n if (this.envs.isUsingCoreEnv(component)) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.doesEnvIncludesOnlyOverview(envComponent);\n }\n\n private async calculateUseNameParam(component: Component): Promise<boolean> {\n if (this.envs.isUsingCoreEnv(component)) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.doesEnvUseNameParam(envComponent);\n }\n\n async generateComponentPreview(\n componentPattern: string,\n name: string\n ): Promise<EnvsExecutionResult<{ [id: string]: string }>> {\n const componentIds = componentPattern\n ? await this.workspace?.idsByPattern(componentPattern, true)\n : this.workspace?.listIds();\n if (!componentIds) {\n throw new BitError(`unable to find components by the pattern: ${componentPattern}`);\n }\n const components = await this.workspace?.getMany(componentIds);\n if (!components) {\n throw new BitError(`unable to find components by the pattern: ${componentPattern}`);\n }\n const envsRuntime = await this.envs.createEnvironment(components);\n const previewResults = await envsRuntime.run(this.previewService, { name });\n return previewResults;\n }\n\n async serveLocalPreview({ port }: { port: number }): Promise<number> {\n const app = this.express.createApp();\n\n const getDirAndPath = async (comp, msg) => {\n const componentPreviewIndex = await this.previewService.readComponentsPreview(msg);\n const compParts = comp.split('/');\n // go over all combination of parts to find the component\n let compToCheck;\n let filePath;\n for (let i = compParts.length; i > 0; i--) {\n /**\n * Joins the component parts up to the specified index into a single string separated by '/'.\n *\n * @param compParts - An array of component parts.\n * @param i - The index up to which the parts should be joined.\n * @returns A string representing the joined component parts up to the specified index.\n */\n const part = compParts.slice(0, i).join('/');\n if (componentPreviewIndex[part]) {\n compToCheck = part;\n filePath = compParts.slice(i).join('/');\n break;\n }\n }\n const componentPreviewFolder = componentPreviewIndex[compToCheck];\n const envPreviewDir = this.previewService.getEnvLocalPreviewDir(msg, componentPreviewFolder);\n if (!componentPreviewFolder) {\n return [];\n }\n const publicDir = join(envPreviewDir, 'public');\n return [publicDir, filePath];\n };\n\n // const dynamicRouteRegex = '/?[^/@]+(/[^~]*)?';\n // readonly route = `/:componentId(${this.dynamicRouteRegex})/~aspect${this.registerRoute.route}`;\n // app.use(`/:message/:componentId(${dynamicRouteRegex})`, async (req, res, next) => {\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n app.use(`/:message/:componentId(*)`, async (req, res, next) => {\n // const comp = req.query.comp as string;\n // const msg = req.query.message as string;\n let comp = req.params.componentId as string;\n const msg = req.params.message as string;\n // Check if the folderName is provided\n if (!comp) {\n return res.status(400).send('Please specify a comp.');\n }\n\n if (!msg) {\n return res.status(400).send('Please specify a message.');\n }\n\n if (comp.endsWith('/')) {\n comp = comp.slice(0, -1);\n }\n\n const [publicDir, filePath] = await getDirAndPath(comp, msg);\n if (!publicDir) {\n return res.status(404).send('Folder not found.');\n }\n if (filePath) {\n const file = join(publicDir, filePath);\n if (!existsSync(file)) {\n return res.status(404).send('File not found.');\n }\n return res.sendFile(file);\n }\n\n // Serve files from the specified folder\n this.express.static(publicDir)(req, res, next);\n });\n\n const server = await app.listen(port);\n\n return new Promise((resolve, reject) => {\n server.on('error', (err) => {\n reject(err);\n });\n server.on('listening', () => {\n this.logger.consoleSuccess(`Bit preview server is listening on port ${port}`);\n resolve(port);\n });\n });\n }\n\n /**\n * Calculate preview data on component load\n * @param component\n * @returns\n */\n async calcPreviewData(component: Component): Promise<PreviewComponentData> {\n const doesScaling = await this.calcDoesScalingForComponent(component);\n const dataFromEnv = await this.calcPreviewDataFromEnv(component);\n const envData = (await this.calculateDataForEnvComponent(component)) || {};\n const onlyOverview = await this.calculateIncludeOnlyOverview(component);\n const useNameParam = await this.calculateUseNameParam(component);\n\n const data: PreviewComponentData = {\n doesScaling,\n onlyOverview,\n useNameParam,\n ...dataFromEnv,\n ...envData,\n };\n return data;\n }\n\n /**\n * Calculate preview data on component that configured by its env\n * @param component\n * @returns\n */\n async calcPreviewDataFromEnv(\n component: Component\n ): Promise<Omit<PreviewAnyComponentData, 'doesScaling' | 'onlyOverview' | 'useNameParam'> | undefined> {\n // Prevent infinite loop that caused by the fact that the env of the aspect env or the env env is the same as the component\n // so we can't load it since during load we are trying to get env component and load it again\n if (\n component.id.toStringWithoutVersion() === 'teambit.harmony/aspect' ||\n component.id.toStringWithoutVersion() === 'teambit.envs/env'\n ) {\n return {\n strategyName: COMPONENT_PREVIEW_STRATEGY_NAME,\n splitComponentBundle: false,\n };\n }\n\n const env = this.envs.getEnv(component).env;\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const data = {\n strategyName: envPreviewConfig?.strategyName,\n splitComponentBundle: envPreviewConfig?.splitComponentBundle ?? false,\n };\n return data;\n }\n\n /**\n * calculate extra preview data for env components (on load)\n * @param envComponent\n * @returns\n */\n private async calculateDataForEnvComponent(envComponent: Component): Promise<PreviewEnvComponentData | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n\n const data = {\n // default to true if the env doesn't have a preview config\n isScaling: previewAspectConfig?.isScaling ?? true,\n supportsOnlyOverview: true,\n supportsUseNameParam: true,\n };\n return data;\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * This should be used only for calculating the value on load.\n * otherwise, use the isBundledWithEnv function\n * @param component\n * @returns\n */\n async calcIsBundledWithEnv(component: Component): Promise<boolean> {\n const envPreviewData = await this.calcPreviewDataFromEnv(component);\n return envPreviewData?.strategyName !== 'component';\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * @param component\n * @returns\n */\n async isBundledWithEnv(component: Component): Promise<boolean> {\n const data = await this.getPreviewData(component);\n // For components that tagged in the past we didn't store the data, so we calculate it the old way\n // We comparing the strategyName to undefined to cover a specific case when it doesn't exist at all.\n if (!data || data.strategyName === undefined) return this.isBundledWithEnvBackward(component);\n return data.strategyName === ENV_PREVIEW_STRATEGY_NAME;\n }\n\n /**\n * This is a legacy calculation for the isBundledWithEnv\n * This calc is based on the component artifacts which is very expensive operation as it requires to fetch and load the artifacts\n * See the new implementation in the isBundledWithEnv method\n * @param component\n * @returns\n */\n private async isBundledWithEnvBackward(component: Component): Promise<boolean> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n COMPONENT_STRATEGY_ARTIFACT_NAME\n );\n if (!artifacts || !artifacts.length) return true;\n\n return false;\n }\n\n // This used on component load to calc the final result of support is scaling for a given component\n // This calc based on the env, env data, env preview config and more\n // if you want to get the final result use the `doesScaling` method below\n // This should be used only for component load\n private async calcDoesScalingForComponent(component: Component): Promise<boolean> {\n const isBundledWithEnv = await this.calcIsBundledWithEnv(component);\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n // For envs that bundled with the env return true always\n if (isBundledWithEnv) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.isEnvSupportScaling(envComponent);\n }\n\n /**\n * can the current component preview scale in size for different preview sizes.\n * this calculation is based on the env of the component and if the env of the component support it.\n */\n async doesScaling(component: Component): Promise<boolean> {\n const inWorkspace = await this.workspace?.hasId(component.id);\n // Support case when we have the dev server for the env, in that case we calc the data of the env as we can't rely on the env data from the scope\n // since we bundle it for the dev server again\n if (inWorkspace) {\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = await this.calculateIsEnvSupportScaling(envComponent);\n return envSupportScaling ?? true;\n }\n const previewData = this.getPreviewData(component);\n if (!previewData) return false;\n // Get the does scaling (the new calculation) or the old calc used in isScaling (between versions (about) 848 and 860)\n if (previewData.doesScaling !== undefined) return previewData.doesScaling;\n // in case this component were tagged with versions between 848 and 860 we need to use the old calculation\n // together with the env calculation\n // In that case it means the component already tagged, so we take the env calc from the env data and not re-calc it\n if (previewData.isScaling) {\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = this.isEnvSupportScaling(envComponent);\n return !!envSupportScaling;\n }\n return false;\n }\n\n /**\n * Check if the current version of the env support scaling\n * @param envComponent\n * @returns\n */\n isEnvSupportScaling(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.isScaling;\n }\n\n async isSupportSkipIncludes(component: Component) {\n if (!this.config.onlyOverview && !isFeatureEnabled(ONLY_OVERVIEW)) return false;\n const isCore = this.envs.isUsingCoreEnv(component);\n if (isCore) return false;\n\n const envComponent = await this.envs.getEnvComponent(component);\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.skipIncludes;\n }\n\n /**\n * check if the component preview should only include the overview (skipping rendering of the compostions and properties table)\n */\n async getOnlyOverview(component: Component): Promise<boolean> {\n if (!this.config.onlyOverview && !isFeatureEnabled(ONLY_OVERVIEW)) return false;\n const previewData = this.getPreviewData(component);\n return previewData?.onlyOverview ?? false;\n }\n\n /**\n * check if the component preview should include the name query param\n */\n async getUseNameParam(component: Component): Promise<boolean> {\n const previewData = this.getPreviewData(component);\n return previewData?.useNameParam ?? false;\n }\n\n /**\n * This function is calculate the isScaling support flag for the component preview.\n * This is calculated only for the env component and not for the component itself.\n * It should be only used during the (env) component on load.\n * Once the component load, you should only use the `isEnvSupportScaling` to fetch it from the calculated data.\n * If you want to check if an env for a given component support scaling, use the `isScaling` function.\n * @param component\n * @returns\n */\n private async calculateIsEnvSupportScaling(envComponent: Component): Promise<boolean | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n // default to true if the env doesn't have a preview config\n return previewAspectConfig?.isScaling ?? true;\n }\n\n /**\n * Check if the component preview bundle contain the header inside of it (legacy)\n * today we are not including the header inside anymore\n * @param component\n * @returns\n */\n async isLegacyHeader(component: Component): Promise<boolean> {\n // these envs had header in their docs\n const ENV_WITH_LEGACY_DOCS = ['react', 'env', 'aspect', 'lit', 'html', 'node', 'mdx', 'react-native', 'readme'];\n\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n ENV_STRATEGY_ARTIFACT_NAME\n );\n const envType = this.envs.getEnvData(component).type;\n return !!artifacts && !!artifacts.length && ENV_WITH_LEGACY_DOCS.includes(envType || '');\n }\n\n /**\n * Getting the env template artifact\n * This should be called with the env itself or it will return undefined\n * If you want to get the env template from the env of the component,\n * use: getEnvTemplateFromComponentEnv below\n *\n * @param component\n * @returns\n */\n async getEnvTemplate(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n GENERATE_ENV_TEMPLATE_TASK_NAME\n );\n if (!artifacts || !artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * This is a special method to get a core env template\n * As the core envs doesn't exist in the scope we need to bring it from other place\n * We will bring it from the core env package files\n */\n private async getCoreEnvTemplate(envId: string): Promise<PreviewArtifact | undefined> {\n const coreEnvDir = getAspectDir(envId);\n // const finalDir = join(coreEnvDir, getEnvTemplateArtifactDirectory());\n const artifactDef = getEnvTemplateArtifactDef()[0];\n const artifactFactory = new ArtifactFactory();\n\n let rootDir = artifactFactory.getRootDir(coreEnvDir, artifactDef);\n if (!existsSync(rootDir)) {\n // fallback to the bvm folder\n const coreEnvDirFromBvm = getAspectDirFromBvm(envId);\n rootDir = artifactFactory.getRootDir(coreEnvDirFromBvm, artifactDef);\n }\n if (!existsSync(rootDir)) {\n return undefined;\n }\n const paths = artifactFactory.resolvePaths(rootDir, artifactDef);\n if (!paths || !paths.length) {\n return undefined;\n }\n const artifactFiles = new ArtifactFiles(paths);\n\n artifactFiles.populateVinylsFromPaths(rootDir);\n return new PreviewArtifact(artifactFiles.vinyls);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateFromComponentEnv(component: Component): Promise<PreviewArtifact | undefined> {\n const envId = this.envs.getEnvId(component);\n return this.getEnvTemplateByEnvId(envId);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateByEnvId(envId: string): Promise<PreviewArtifact | undefined> {\n // Special treatment for core envs\n if (this.aspectLoader.isCoreEnv(envId)) {\n return this.getCoreEnvTemplate(envId);\n }\n const host = this.componentAspect.getHost();\n const resolvedEnvId = await host.resolveComponentId(envId);\n const envComponent = await host.get(resolvedEnvId);\n if (!envComponent) {\n throw new BitError(`can't load env. env id is ${envId}`);\n }\n return this.getEnvTemplate(envComponent);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n private ensureTempPackage() {\n const workspacePath = this.workspace?.path;\n const tempPackageDir = workspacePath ? join(workspacePath, 'node_modules', '@teambit', '_local') : '';\n if (tempPackageDir) {\n ensureDirSync(tempPackageDir);\n writeJSONSync(join(tempPackageDir, 'package.json'), { name: '@teambit/_local' });\n writeFileSync(join(tempPackageDir, 'index.js'), 'module.exports = {};');\n return tempPackageDir;\n }\n }\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(\n prefix: string,\n moduleMap: ComponentMap<string[]>,\n mainModulesMap: MainModulesMap,\n dirName: string,\n isSplitComponentBundle: boolean\n ) {\n const tempPackageDir = this.ensureTempPackage();\n const contents = generateLink(prefix, moduleMap, mainModulesMap, isSplitComponentBundle, tempPackageDir);\n return this.writeLinkContents(contents, dirName, prefix);\n }\n\n writeLinkContents(contents: string, targetDir: string, prefix: string) {\n const hash = objectHash(contents);\n const targetPath = join(targetDir, `${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewEntry(context);\n const previews = this.previewSlot.values();\n const linkFiles = await this.updateLinkFiles(previews, context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n async writePreviewEntry(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const { rebuild, skipUiBuild } = this.ui.runtimeOptions;\n\n const [name, uiRoot] = this.getUi();\n const cacheKey = `${uiRoot.path}|${RUNTIME_NAME}`;\n const currentBundleHash = await createBundleHash(uiRoot, RUNTIME_NAME);\n const preBundleHash = readBundleHash(PreviewAspect.id, BUNDLE_DIR, '');\n const workspaceBundleDir = join(uiRoot.path, PUBLIC_DIR);\n const lastBundleHash = await this.cache.get(cacheKey);\n\n let bundlePath = '';\n\n // ensure the pre-bundle is ready\n if (!rebuild && !existsSync(workspaceBundleDir) && (currentBundleHash === preBundleHash || skipUiBuild)) {\n // use pre-bundle\n bundlePath = getBundlePath(PreviewAspect.id, BUNDLE_DIR, '') as string;\n } else if (!rebuild && existsSync(workspaceBundleDir) && (currentBundleHash === lastBundleHash || skipUiBuild)) {\n // use workspace bundle\n bundlePath = workspaceBundleDir;\n } else {\n // do build\n const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n\n await buildPreBundlePreview(filteredAspects);\n bundlePath = workspaceBundleDir;\n await this.cache.set(cacheKey, currentBundleHash);\n }\n\n // prepare the runtime entry\n const previewRuntime = await generateBundlePreviewEntry(name, bundlePath, this.harmony.config.toObject());\n\n return previewRuntime;\n }\n\n updateLinkFiles(previews: PreviewDefinition[], components: Component[] = [], context: ExecutionContext) {\n const paths = previews.map(async (previewDef) => {\n const defaultTemplatePath = await previewDef.renderTemplatePathByEnv?.(context.env);\n const visitedEnvs = new Set();\n const mainModulesMap: MainModulesMap = {\n // @ts-ignore\n default: defaultTemplatePath,\n [context.envDefinition.id]: defaultTemplatePath,\n };\n\n const map = await previewDef.getModuleMap(components);\n const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\n const withPathsP = map.asyncMap(async (files, component) => {\n const envDef = this.envs.getEnv(component);\n const environment = envDef.env;\n const envId = envDef.id;\n\n if (!mainModulesMap[envId] && !visitedEnvs.has(envId)) {\n const modulePath = await previewDef.renderTemplatePathByEnv?.(envDef.env);\n if (modulePath) {\n mainModulesMap[envId] = modulePath;\n }\n visitedEnvs.add(envId);\n }\n const compilerInstance = environment.getCompiler?.();\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getRuntimeModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n const withPaths = await withPathsP;\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, mainModulesMap, dirPath, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n /**\n * @deprecated\n * use `writePreviewEntry` instead\n */\n async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n return this.writePreviewEntry(context, aspectsIdsToNotFilterOut);\n }\n\n async resolveAspects(\n runtimeName?: string,\n componentIds?: ComponentID[],\n uiRoot?: UIRoot,\n opts?: ResolveAspectsOptions\n ): Promise<AspectDefinition[]> {\n const root = uiRoot || this.getUi()[1];\n runtimeName = runtimeName || MainRuntime.name;\n const resolvedAspects = await root.resolveAspects(runtimeName, componentIds, opts);\n return resolvedAspects;\n }\n\n private getUi() {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n return ui;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(\n aspects: AspectDefinition[],\n context: { components: Component[] },\n aspectsIdsToNotFilterOut: string[] = []\n ) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return (\n this.aspectLoader.isCoreAspect(aspect.getId) ||\n allAspectsToInclude.includes(aspect.getId) ||\n aspectsIdsToNotFilterOut.includes(aspect.getId)\n );\n });\n\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [\n new EnvBundlingStrategy(this, this.pkg, this.dependencyResolver),\n new ComponentBundlingStrategy(this, this.dependencyResolver, this.logger),\n ];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const envId = await this.envs.getOrCalculateEnvId(c);\n\n const executionRef = this.executionRefs.get(envId.toString());\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n const previews = this.previewSlot.values();\n await this.updateLinkFiles(previews, executionRef.currentComponents, executionRef.executionCtx);\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n getEnvPreviewConfig(env?: PreviewEnv): EnvPreviewConfig {\n const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};\n\n return config;\n }\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(env?: PreviewEnv): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const strategyFromEnv = envPreviewConfig?.strategyName;\n const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n CacheAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n WatcherAspect,\n ScopeAspect,\n CLIAspect,\n ExpressAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n onlyOverview: true,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n cache,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n watcher,\n scope,\n cli,\n express,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n CacheMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain,\n WatcherMain,\n ScopeMain,\n CLIMain,\n ExpressMain,\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n // app.registerApp(new PreviewApp());\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n cache,\n envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver,\n express\n );\n\n cli.register(new GeneratePreviewCmd(preview), new ServePreviewCmd(preview));\n\n if (workspace)\n uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger, watcher));\n\n componentExtension.registerRoute([\n new PreviewRoute(preview, logger),\n new ComponentPreviewRoute(preview, logger),\n // @ts-ignore\n new EnvTemplateRoute(preview, logger),\n new PreviewAssetsRoute(preview, logger),\n ]);\n\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled)\n builder.registerBuildTasks([\n new EnvPreviewTemplateTask(preview, envs, aspectLoader, dependencyResolver, logger),\n new PreviewTask(bundler, preview, dependencyResolver, logger),\n new PreBundlePreviewTask(uiMain, logger),\n ]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentLoad(async (component) => {\n return preview.calcPreviewData(component);\n });\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n if (scope) {\n scope.registerOnCompAspectReCalc((c) => preview.calcPreviewData(c));\n }\n const previewService = new PreviewService(preview, logger, dependencyResolver, scope);\n\n envs.registerService(previewService);\n preview.previewService = previewService;\n\n graphql.register(() => previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"],"mappings":";;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,SAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,KAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,IAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAK,WAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,UAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAQA,SAAAM,MAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,KAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,SAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,QAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,IAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,GAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,OAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,MAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,QAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,OAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,UAAA;EAAA,MAAAX,IAAA,GAAAC,OAAA;EAAAU,SAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,YAAA;EAAA,MAAAZ,IAAA,GAAAa,sBAAA,CAAAZ,OAAA;EAAAW,WAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,QAAA;EAAA,MAAAd,IAAA,GAAAC,OAAA;EAAAa,OAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,SAAA;EAAA,MAAAf,IAAA,GAAAC,OAAA;EAAAc,QAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgB,MAAA;EAAA,MAAAhB,IAAA,GAAAC,OAAA;EAAAe,KAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,KAAA;EAAA,MAAAjB,IAAA,GAAAC,OAAA;EAAAgB,IAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,cAAA;EAAA,MAAAlB,IAAA,GAAAC,OAAA;EAAAiB,aAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAmB,WAAA;EAAA,MAAAnB,IAAA,GAAAC,OAAA;EAAAkB,UAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,QAAA;EAAA,MAAApB,IAAA,GAAAC,OAAA;EAAAmB,OAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqB,oBAAA;EAAA,MAAArB,IAAA,GAAAC,OAAA;EAAAoB,mBAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAsB,SAAA;EAAA,MAAAtB,IAAA,GAAAC,OAAA;EAAAqB,QAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAuB,YAAA;EAAA,MAAAvB,IAAA,GAAAC,OAAA;EAAAsB,WAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAwB,SAAA;EAAA,MAAAxB,IAAA,GAAAC,OAAA;EAAAuB,QAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAyB,SAAA;EAAA,MAAAzB,IAAA,GAAAC,OAAA;EAAAwB,QAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA0B,OAAA;EAAA,MAAA1B,IAAA,GAAAC,OAAA;EAAAyB,MAAA,YAAAA,CAAA;IAAA,OAAA1B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA2B,gBAAA;EAAA,MAAA3B,IAAA,GAAAC,OAAA;EAAA0B,eAAA,YAAAA,CAAA;IAAA,OAAA3B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA4B,YAAA;EAAA,MAAA5B,IAAA,GAAAC,OAAA;EAAA2B,WAAA,YAAAA,CAAA;IAAA,OAAA5B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA6B,cAAA;EAAA,MAAA7B,IAAA,GAAAC,OAAA;EAAA4B,aAAA,YAAAA,CAAA;IAAA,OAAA7B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA8B,iBAAA;EAAA,MAAA9B,IAAA,GAAAC,OAAA;EAAA6B,gBAAA,YAAAA,CAAA;IAAA,OAAA9B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAA+B,SAAA;EAAA,MAAA/B,IAAA,GAAAC,OAAA;EAAA8B,QAAA,YAAAA,CAAA;IAAA,OAAA/B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgC,UAAA;EAAA,MAAAhC,IAAA,GAAAC,OAAA;EAAA+B,SAAA,YAAAA,CAAA;IAAA,OAAAhC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiC,UAAA;EAAA,MAAAjC,IAAA,GAAAC,OAAA;EAAAgC,SAAA,YAAAA,CAAA;IAAA,OAAAjC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAkC,YAAA;EAAA,MAAAlC,IAAA,GAAAC,OAAA;EAAAiC,WAAA,YAAAA,CAAA;IAAA,OAAAlC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AASA,SAAAmC,cAAA;EAAA,MAAAnC,IAAA,GAAAC,OAAA;EAAAkC,aAAA,YAAAA,CAAA;IAAA,OAAAnC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoC,UAAA;EAAA,MAAApC,IAAA,GAAAC,OAAA;EAAAmC,SAAA,YAAAA,CAAA;IAAA,OAAApC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqC,oBAAA;EAAA,MAAArC,IAAA,GAAAC,OAAA;EAAAoC,mBAAA,YAAAA,CAAA;IAAA,OAAArC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAsC,aAAA;EAAA,MAAAtC,IAAA,GAAAC,OAAA;EAAAqC,YAAA,YAAAA,CAAA;IAAA,OAAAtC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAuC,kBAAA;EAAA,MAAAvC,IAAA,GAAAC,OAAA;EAAAsC,iBAAA,YAAAA,CAAA;IAAA,OAAAvC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAwC,UAAA;EAAA,MAAAxC,IAAA,GAAAC,OAAA;EAAAuC,SAAA,YAAAA,CAAA;IAAA,OAAAxC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAyC,eAAA;EAAA,MAAAzC,IAAA,GAAAC,OAAA;EAAAwC,cAAA,YAAAA,CAAA;IAAA,OAAAzC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA0C,UAAA;EAAA,MAAA1C,IAAA,GAAAC,OAAA;EAAAyC,SAAA,YAAAA,CAAA;IAAA,OAAA1C,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA2C,WAAA;EAAA,MAAA3C,IAAA,GAAAC,OAAA;EAAA0C,UAAA,YAAAA,CAAA;IAAA,OAAA3C,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA4C,YAAA;EAAA,MAAA5C,IAAA,GAAAC,OAAA;EAAA2C,WAAA,YAAAA,CAAA;IAAA,OAAA5C,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA6C,gBAAA;EAAA,MAAA7C,IAAA,GAAAC,OAAA;EAAA4C,eAAA,YAAAA,CAAA;IAAA,OAAA7C,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA8C,iBAAA;EAAA,MAAA9C,IAAA,GAAAC,OAAA;EAAA6C,gBAAA,YAAAA,CAAA;IAAA,OAAA9C,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA+C,cAAA;EAAA,MAAA/C,IAAA,GAAAC,OAAA;EAAA8C,aAAA,YAAAA,CAAA;IAAA,OAAA/C,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsD,SAAAa,uBAAAmC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,QAAAH,CAAA,EAAAI,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAP,CAAA,OAAAM,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAR,CAAA,GAAAI,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAX,CAAA,EAAAI,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAf,CAAA,aAAAI,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAG,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAArB,CAAA,EAAAM,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAJ,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAJ,CAAA,GAAAM,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAA1B,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAuB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA9B,CAAA,QAAA2B,CAAA,GAAA3B,CAAA,CAAA+B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAEtD,MAAM8B,UAAU,GAAG;EACjBC,OAAO,EAAE,EAAE;EACXC,QAAQ,EAAEA,CAAA,KAAM;AAClB,CAAC;AAED,MAAMC,gBAAgB,GAAG,IAAAC,YAAI,EAACC,oBAAU,EAAEC,wBAAa,CAACC,EAAE,CAAC;;AAgC3D;AACA;AACA;;AAGA;AACA;AACA;;AA6BA;AACA;AACA;;AA4BO,MAAMC,WAAW,CAAC;EACvBC,WAAWA;EACT;AACJ;AACA;EACYC,OAAgB;EAExB;AACJ;AACA;EACYC,WAAsC,EAEtCC,EAAU,EAEVC,KAAgB,EAEhBC,IAAc,EAEdC,eAA8B,EAE9BC,GAAY,EAEZC,YAA8B,EAE7BC,MAAqB,EAEtBC,oBAA0C,EAE1CC,OAAoB,EAEpBC,SAAgC,EAEhCC,MAAc,EAEdC,kBAA0C,EAE1CC,OAAoB,EAC5B;IAAA,KAhCQd,OAAgB,GAAhBA,OAAgB;IAAA,KAKhBC,WAAsC,GAAtCA,WAAsC;IAAA,KAEtCC,EAAU,GAAVA,EAAU;IAAA,KAEVC,KAAgB,GAAhBA,KAAgB;IAAA,KAEhBC,IAAc,GAAdA,IAAc;IAAA,KAEdC,eAA8B,GAA9BA,eAA8B;IAAA,KAE9BC,GAAY,GAAZA,GAAY;IAAA,KAEZC,YAA8B,GAA9BA,YAA8B;IAAA,KAE7BC,MAAqB,GAArBA,MAAqB;IAAA,KAEtBC,oBAA0C,GAA1CA,oBAA0C;IAAA,KAE1CC,OAAoB,GAApBA,OAAoB;IAAA,KAEpBC,SAAgC,GAAhCA,SAAgC;IAAA,KAEhCC,MAAc,GAAdA,MAAc;IAAA,KAEdC,kBAA0C,GAA1CA,kBAA0C;IAAA,KAE1CC,OAAoB,GAApBA,OAAoB;IAAAxC,eAAA;IAAAA,eAAA,oBA0hBV,IAAIyC,GAAG,CAAiB,CAAC;IAAAzC,eAAA,oBACzB0C,IAAI,CAACC,GAAG,CAAC,CAAC;IAAA3C,eAAA,wBA6CN,IAAIyC,GAAG,CAAuB,CAAC;IAwKvD;IACA;IAAAzC,eAAA,gCACgC,OAAO4C,CAAY,EAAEC,OAAkD,KAAK;MAC1G,MAAMC,KAAK,GAAG,MAAM,IAAI,CAAChB,IAAI,CAACiB,mBAAmB,CAACH,CAAC,CAAC;MAEpD,MAAMI,YAAY,GAAG,IAAI,CAACC,aAAa,CAACC,GAAG,CAACJ,KAAK,CAAC5B,QAAQ,CAAC,CAAC,CAAC;MAC7D,IAAI,CAAC8B,YAAY,EAAE;QACjB,IAAI,CAACV,MAAM,CAACa,IAAI,CACd,6CAA6CP,CAAC,CAACrB,EAAE,CAACL,QAAQ,CAAC,CAAC,4CAA4C4B,KAAK,EAC/G,CAAC;QACD,OAAO9B,UAAU;MACnB;;MAEA;MACA6B,OAAO,CAACG,YAAY,CAAC;MACrB,MAAMI,QAAQ,GAAG,IAAI,CAACzB,WAAW,CAAC0B,MAAM,CAAC,CAAC;MAC1C,MAAM,IAAI,CAACC,eAAe,CAACF,QAAQ,EAAEJ,YAAY,CAACO,iBAAiB,EAAEP,YAAY,CAACQ,YAAY,CAAC;MAC/F,OAAOxC,UAAU;IACnB,CAAC;IAAAhB,eAAA,iCAEiCyD,GAAgB,IAAK;MACrD,IAAIC,SAAgC;MACpC,IAAI,CAACT,aAAa,CAAClD,OAAO,CAAE4D,UAAU,IAAK;QACzC,MAAMC,KAAK,GAAGD,UAAU,CAACT,GAAG,CAACO,GAAG,CAAC;QACjC,IAAIG,KAAK,EAAEF,SAAS,GAAGE,KAAK;MAC9B,CAAC,CAAC;MACF,IAAI,CAACF,SAAS,EAAE,OAAOG,OAAO,CAACC,OAAO,CAAC9C,UAAU,CAAC;MAElD,OAAO,IAAI,CAAC+C,qBAAqB,CAACL,SAAS,EAAGH,iBAAiB,IAAKA,iBAAiB,CAACS,MAAM,CAACP,GAAG,CAAC,CAAC;IACpG,CAAC;EA5wBE;EAIH,IAAIQ,UAAUA,CAAA,EAAW;IACvB,OAAO,IAAI,CAAC5B,SAAS,EAAE6B,UAAU,CAAC5C,wBAAa,CAACC,EAAE,CAAC,IAAIJ,gBAAgB;EACzE;EAEAgD,sBAAsBA,CAACT,SAAoB,EAAoC;IAC7E,MAAM7H,IAAI,GAAG,IAAI,CAACuG,OAAO,CAACgC,eAAe,CAACV,SAAS,EAAEpC,wBAAa,CAACC,EAAE,CAAC;IAEtE,IAAI,CAAC1F,IAAI,EAAE,OAAOwI,SAAS;IAC3B,OAAOxI,IAAI,CAACyI,8CAAgC,CAAC;EAC/C;EAEA,MAAMC,UAAUA,CAACb,SAAoB,EAAwC;IAC3E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAACpC,OAAO,CAACqC,oCAAoC,CACvEf,SAAS,EACTpC,wBAAa,CAACC,EAAE,EAChBmD,6BACF,CAAC;IACD,IAAI,CAACF,SAAS,EAAE,OAAOH,SAAS;IAChC,OAAO,KAAIM,kCAAe,EAACH,SAAS,CAAC;EACvC;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMI,eAAeA,CAAClB,SAAoB,EAAqC;IAC7E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAACD,UAAU,CAACb,SAAS,CAAC;IAClD,MAAMmB,gBAAgB,GAAG,MAAM,IAAI,CAACA,gBAAgB,CAACnB,SAAS,CAAC;IAC/D,IAAI,CAACc,SAAS,EAAE,OAAOH,SAAS;IAChC,OAAO;MACLS,KAAK,EAAEN,SAAS,CAACO,QAAQ,CAAC,CAAC;MAC3BF;IACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEG,sBAAsBA,CAACtB,SAAoB,EAAoC;IAC7E,OAAOA,SAAS,CAACuB,KAAK,CAACC,OAAO,CAAChC,GAAG,CAAC5B,wBAAa,CAACC,EAAE,CAAC,EAAEW,MAAM;EAC9D;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEiD,cAAcA,CAACzB,SAAoB,EAAoC;IACrE,MAAM0B,WAAW,GAAG1B,SAAS,CAACuB,KAAK,CAACC,OAAO,CAAChC,GAAG,CAAC5B,wBAAa,CAACC,EAAE,CAAC,EAAE1F,IAAI;IACvE,OAAOuJ,WAAW;EACpB;;EAEA;AACF;AACA;AACA;AACA;EACEC,2BAA2BA,CAACC,YAAuB,EAAW;IAC5D,MAAMF,WAAW,GAAG,IAAI,CAACD,cAAc,CAACG,YAAY,CAAC;IACrD,OAAO,CAAC,CAACF,WAAW,EAAEG,oBAAoB;EAC5C;;EAEA;AACF;AACA;AACA;AACA;EACEC,mBAAmBA,CAACF,YAAuB,EAAW;IACpD,MAAMF,WAAW,GAAG,IAAI,CAACD,cAAc,CAACG,YAAY,CAAC;IACrD,OAAO,CAAC,CAACF,WAAW,EAAEK,oBAAoB;EAC5C;EAEA,MAAcC,4BAA4BA,CAAChC,SAAoB,EAAoB;IACjF,IAAI,IAAI,CAAC5B,IAAI,CAAC6D,cAAc,CAACjC,SAAS,CAAC,EAAE;MACvC,OAAO,IAAI;IACb;IACA,MAAM4B,YAAY,GAAG,MAAM,IAAI,CAACxD,IAAI,CAAC8D,eAAe,CAAClC,SAAS,CAAC;IAC/D,OAAO,IAAI,CAAC2B,2BAA2B,CAACC,YAAY,CAAC;EACvD;EAEA,MAAcO,qBAAqBA,CAACnC,SAAoB,EAAoB;IAC1E,IAAI,IAAI,CAAC5B,IAAI,CAAC6D,cAAc,CAACjC,SAAS,CAAC,EAAE;MACvC,OAAO,IAAI;IACb;IACA,MAAM4B,YAAY,GAAG,MAAM,IAAI,CAACxD,IAAI,CAAC8D,eAAe,CAAClC,SAAS,CAAC;IAC/D,OAAO,IAAI,CAAC8B,mBAAmB,CAACF,YAAY,CAAC;EAC/C;EAEA,MAAMQ,wBAAwBA,CAC5BC,gBAAwB,EACxBC,IAAY,EAC4C;IACxD,MAAMC,YAAY,GAAGF,gBAAgB,GACjC,MAAM,IAAI,CAAC1D,SAAS,EAAE6D,YAAY,CAACH,gBAAgB,EAAE,IAAI,CAAC,GAC1D,IAAI,CAAC1D,SAAS,EAAE8D,OAAO,CAAC,CAAC;IAC7B,IAAI,CAACF,YAAY,EAAE;MACjB,MAAM,KAAIG,oBAAQ,EAAC,6CAA6CL,gBAAgB,EAAE,CAAC;IACrF;IACA,MAAMpC,UAAU,GAAG,MAAM,IAAI,CAACtB,SAAS,EAAEgE,OAAO,CAACJ,YAAY,CAAC;IAC9D,IAAI,CAACtC,UAAU,EAAE;MACf,MAAM,KAAIyC,oBAAQ,EAAC,6CAA6CL,gBAAgB,EAAE,CAAC;IACrF;IACA,MAAMO,WAAW,GAAG,MAAM,IAAI,CAACxE,IAAI,CAACyE,iBAAiB,CAAC5C,UAAU,CAAC;IACjE,MAAM6C,cAAc,GAAG,MAAMF,WAAW,CAACG,GAAG,CAAC,IAAI,CAACC,cAAc,EAAE;MAAEV;IAAK,CAAC,CAAC;IAC3E,OAAOQ,cAAc;EACvB;EAEA,MAAMG,iBAAiBA,CAAC;IAAEC;EAAuB,CAAC,EAAmB;IACnE,MAAMC,GAAG,GAAG,IAAI,CAACrE,OAAO,CAACsE,SAAS,CAAC,CAAC;IAEpC,MAAMC,aAAa,GAAG,MAAAA,CAAOC,IAAI,EAAEC,GAAG,KAAK;MACzC,MAAMC,qBAAqB,GAAG,MAAM,IAAI,CAACR,cAAc,CAACS,qBAAqB,CAACF,GAAG,CAAC;MAClF,MAAMG,SAAS,GAAGJ,IAAI,CAACK,KAAK,CAAC,GAAG,CAAC;MACjC;MACA,IAAIC,WAAW;MACf,IAAIC,QAAQ;MACZ,KAAK,IAAI/G,CAAC,GAAG4G,SAAS,CAACtH,MAAM,EAAEU,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;QACzC;AACR;AACA;AACA;AACA;AACA;AACA;QACQ,MAAMgH,IAAI,GAAGJ,SAAS,CAACK,KAAK,CAAC,CAAC,EAAEjH,CAAC,CAAC,CAACY,IAAI,CAAC,GAAG,CAAC;QAC5C,IAAI8F,qBAAqB,CAACM,IAAI,CAAC,EAAE;UAC/BF,WAAW,GAAGE,IAAI;UAClBD,QAAQ,GAAGH,SAAS,CAACK,KAAK,CAACjH,CAAC,CAAC,CAACY,IAAI,CAAC,GAAG,CAAC;UACvC;QACF;MACF;MACA,MAAMsG,sBAAsB,GAAGR,qBAAqB,CAACI,WAAW,CAAC;MACjE,MAAMK,aAAa,GAAG,IAAI,CAACjB,cAAc,CAACkB,qBAAqB,CAACX,GAAG,EAAES,sBAAsB,CAAC;MAC5F,IAAI,CAACA,sBAAsB,EAAE;QAC3B,OAAO,EAAE;MACX;MACA,MAAMG,SAAS,GAAG,IAAAzG,YAAI,EAACuG,aAAa,EAAE,QAAQ,CAAC;MAC/C,OAAO,CAACE,SAAS,EAAEN,QAAQ,CAAC;IAC9B,CAAC;;IAED;IACA;IACA;;IAEA;IACAV,GAAG,CAACiB,GAAG,CAAC,2BAA2B,EAAE,OAAOC,GAAG,EAAEC,GAAG,EAAEC,IAAI,KAAK;MAC7D;MACA;MACA,IAAIjB,IAAI,GAAGe,GAAG,CAACG,MAAM,CAACC,WAAqB;MAC3C,MAAMlB,GAAG,GAAGc,GAAG,CAACG,MAAM,CAACE,OAAiB;MACxC;MACA,IAAI,CAACpB,IAAI,EAAE;QACT,OAAOgB,GAAG,CAACK,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,wBAAwB,CAAC;MACvD;MAEA,IAAI,CAACrB,GAAG,EAAE;QACR,OAAOe,GAAG,CAACK,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,2BAA2B,CAAC;MAC1D;MAEA,IAAItB,IAAI,CAACuB,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtBvB,IAAI,GAAGA,IAAI,CAACS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MAC1B;MAEA,MAAM,CAACI,SAAS,EAAEN,QAAQ,CAAC,GAAG,MAAMR,aAAa,CAACC,IAAI,EAAEC,GAAG,CAAC;MAC5D,IAAI,CAACY,SAAS,EAAE;QACd,OAAOG,GAAG,CAACK,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,mBAAmB,CAAC;MAClD;MACA,IAAIf,QAAQ,EAAE;QACZ,MAAMiB,IAAI,GAAG,IAAApH,YAAI,EAACyG,SAAS,EAAEN,QAAQ,CAAC;QACtC,IAAI,CAAC,IAAAkB,qBAAU,EAACD,IAAI,CAAC,EAAE;UACrB,OAAOR,GAAG,CAACK,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,iBAAiB,CAAC;QAChD;QACA,OAAON,GAAG,CAACU,QAAQ,CAACF,IAAI,CAAC;MAC3B;;MAEA;MACA,IAAI,CAAChG,OAAO,CAACmG,MAAM,CAACd,SAAS,CAAC,CAACE,GAAG,EAAEC,GAAG,EAAEC,IAAI,CAAC;IAChD,CAAC,CAAC;IAEF,MAAMW,MAAM,GAAG,MAAM/B,GAAG,CAACgC,MAAM,CAACjC,IAAI,CAAC;IAErC,OAAO,IAAI/C,OAAO,CAAC,CAACC,OAAO,EAAEgF,MAAM,KAAK;MACtCF,MAAM,CAACG,EAAE,CAAC,OAAO,EAAGC,GAAG,IAAK;QAC1BF,MAAM,CAACE,GAAG,CAAC;MACb,CAAC,CAAC;MACFJ,MAAM,CAACG,EAAE,CAAC,WAAW,EAAE,MAAM;QAC3B,IAAI,CAACzG,MAAM,CAAC2G,cAAc,CAAC,2CAA2CrC,IAAI,EAAE,CAAC;QAC7E9C,OAAO,CAAC8C,IAAI,CAAC;MACf,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMsC,eAAeA,CAACxF,SAAoB,EAAiC;IACzE,MAAMyF,WAAW,GAAG,MAAM,IAAI,CAACC,2BAA2B,CAAC1F,SAAS,CAAC;IACrE,MAAM2F,WAAW,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAAC5F,SAAS,CAAC;IAChE,MAAM6F,OAAO,GAAG,CAAC,MAAM,IAAI,CAACC,4BAA4B,CAAC9F,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM+F,YAAY,GAAG,MAAM,IAAI,CAAC/D,4BAA4B,CAAChC,SAAS,CAAC;IACvE,MAAMgG,YAAY,GAAG,MAAM,IAAI,CAAC7D,qBAAqB,CAACnC,SAAS,CAAC;IAEhE,MAAM7H,IAA0B,GAAA+D,aAAA,CAAAA,aAAA;MAC9BuJ,WAAW;MACXM,YAAY;MACZC;IAAY,GACTL,WAAW,GACXE,OAAO,CACX;IACD,OAAO1N,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMyN,sBAAsBA,CAC1B5F,SAAoB,EACiF;IACrG;IACA;IACA,IACEA,SAAS,CAACnC,EAAE,CAACoI,sBAAsB,CAAC,CAAC,KAAK,wBAAwB,IAClEjG,SAAS,CAACnC,EAAE,CAACoI,sBAAsB,CAAC,CAAC,KAAK,kBAAkB,EAC5D;MACA,OAAO;QACLC,YAAY,EAAEC,6CAA+B;QAC7CC,oBAAoB,EAAE;MACxB,CAAC;IACH;IAEA,MAAMC,GAAG,GAAG,IAAI,CAACjI,IAAI,CAACkI,MAAM,CAACtG,SAAS,CAAC,CAACqG,GAAG;IAC3C,MAAME,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,CAACH,GAAG,CAAC;IACtD,MAAMlO,IAAI,GAAG;MACX+N,YAAY,EAAEK,gBAAgB,EAAEL,YAAY;MAC5CE,oBAAoB,EAAEG,gBAAgB,EAAEH,oBAAoB,IAAI;IAClE,CAAC;IACD,OAAOjO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAc2N,4BAA4BA,CAAClE,YAAuB,EAAgD;IAChH,MAAM6E,KAAK,GAAG,IAAI,CAACrI,IAAI,CAACqI,KAAK,CAAC7E,YAAY,CAAC;;IAE3C;IACA,IAAI,CAAC6E,KAAK,EAAE,OAAO9F,SAAS;IAE5B,MAAM+F,mBAAmB,GAAG,IAAI,CAACpF,sBAAsB,CAACM,YAAY,CAAC;IAErE,MAAMzJ,IAAI,GAAG;MACX;MACAwO,SAAS,EAAED,mBAAmB,EAAEC,SAAS,IAAI,IAAI;MACjD9E,oBAAoB,EAAE,IAAI;MAC1BE,oBAAoB,EAAE;IACxB,CAAC;IACD,OAAO5J,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMyO,oBAAoBA,CAAC5G,SAAoB,EAAoB;IACjE,MAAM6G,cAAc,GAAG,MAAM,IAAI,CAACjB,sBAAsB,CAAC5F,SAAS,CAAC;IACnE,OAAO6G,cAAc,EAAEX,YAAY,KAAK,WAAW;EACrD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAM/E,gBAAgBA,CAACnB,SAAoB,EAAoB;IAC7D,MAAM7H,IAAI,GAAG,MAAM,IAAI,CAACsJ,cAAc,CAACzB,SAAS,CAAC;IACjD;IACA;IACA,IAAI,CAAC7H,IAAI,IAAIA,IAAI,CAAC+N,YAAY,KAAKvF,SAAS,EAAE,OAAO,IAAI,CAACmG,wBAAwB,CAAC9G,SAAS,CAAC;IAC7F,OAAO7H,IAAI,CAAC+N,YAAY,KAAKa,uCAAyB;EACxD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAcD,wBAAwBA,CAAC9G,SAAoB,EAAoB;IAC7E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAACpC,OAAO,CAACsI,gCAAgC,CACnEhH,SAAS,EACTpC,wBAAa,CAACC,EAAE,EAChBoJ,8CACF,CAAC;IACD,IAAI,CAACnG,SAAS,IAAI,CAACA,SAAS,CAAC1E,MAAM,EAAE,OAAO,IAAI;IAEhD,OAAO,KAAK;EACd;;EAEA;EACA;EACA;EACA;EACA,MAAcsJ,2BAA2BA,CAAC1F,SAAoB,EAAoB;IAChF,MAAMmB,gBAAgB,GAAG,MAAM,IAAI,CAACyF,oBAAoB,CAAC5G,SAAS,CAAC;IACnE;IACA,IAAI,IAAI,CAAC5B,IAAI,CAAC6D,cAAc,CAACjC,SAAS,CAAC,EAAE;MACvC;MACA;MACA,MAAMkH,KAAK,GAAG,MAAMlH,SAAS,CAACkH,KAAK,CAAC,CAAC;MACrC,IAAIA,KAAK,EAAE;QACT,OAAO,IAAI;MACb;MACA,OAAO/F,gBAAgB,KAAK,KAAK;IACnC;IACA;IACA,IAAIA,gBAAgB,EAAE;MACpB,OAAO,IAAI;IACb;IACA,MAAMS,YAAY,GAAG,MAAM,IAAI,CAACxD,IAAI,CAAC8D,eAAe,CAAClC,SAAS,CAAC;IAC/D,OAAO,IAAI,CAACmH,mBAAmB,CAACvF,YAAY,CAAC;EAC/C;;EAEA;AACF;AACA;AACA;EACE,MAAM6D,WAAWA,CAACzF,SAAoB,EAAoB;IACxD,MAAMoH,WAAW,GAAG,MAAM,IAAI,CAACzI,SAAS,EAAE0I,KAAK,CAACrH,SAAS,CAACnC,EAAE,CAAC;IAC7D;IACA;IACA,IAAIuJ,WAAW,EAAE;MACf;MACA,IAAI,IAAI,CAAChJ,IAAI,CAAC6D,cAAc,CAACjC,SAAS,CAAC,EAAE;QACvC,MAAMmB,gBAAgB,GAAG,MAAM,IAAI,CAACA,gBAAgB,CAACnB,SAAS,CAAC;QAC/D;QACA;QACA,MAAMkH,KAAK,GAAG,MAAMlH,SAAS,CAACkH,KAAK,CAAC,CAAC;QACrC,IAAIA,KAAK,EAAE;UACT,OAAO,IAAI;QACb;QACA,OAAO/F,gBAAgB,KAAK,KAAK;MACnC;MACA,MAAMS,YAAY,GAAG,MAAM,IAAI,CAACxD,IAAI,CAAC8D,eAAe,CAAClC,SAAS,CAAC;MAC/D,MAAMsH,iBAAiB,GAAG,MAAM,IAAI,CAACC,4BAA4B,CAAC3F,YAAY,CAAC;MAC/E,OAAO0F,iBAAiB,IAAI,IAAI;IAClC;IACA,MAAM5F,WAAW,GAAG,IAAI,CAACD,cAAc,CAACzB,SAAS,CAAC;IAClD,IAAI,CAAC0B,WAAW,EAAE,OAAO,KAAK;IAC9B;IACA,IAAIA,WAAW,CAAC+D,WAAW,KAAK9E,SAAS,EAAE,OAAOe,WAAW,CAAC+D,WAAW;IACzE;IACA;IACA;IACA,IAAI/D,WAAW,CAACiF,SAAS,EAAE;MACzB,MAAM/E,YAAY,GAAG,MAAM,IAAI,CAACxD,IAAI,CAAC8D,eAAe,CAAClC,SAAS,CAAC;MAC/D,MAAMsH,iBAAiB,GAAG,IAAI,CAACH,mBAAmB,CAACvF,YAAY,CAAC;MAChE,OAAO,CAAC,CAAC0F,iBAAiB;IAC5B;IACA,OAAO,KAAK;EACd;;EAEA;AACF;AACA;AACA;AACA;EACEH,mBAAmBA,CAACvF,YAAuB,EAAW;IACpD,MAAMF,WAAW,GAAG,IAAI,CAACD,cAAc,CAACG,YAAY,CAAC;IACrD,OAAO,CAAC,CAACF,WAAW,EAAEiF,SAAS;EACjC;EAEA,MAAMa,qBAAqBA,CAACxH,SAAoB,EAAE;IAChD,IAAI,CAAC,IAAI,CAACxB,MAAM,CAACuH,YAAY,IAAI,CAAC,IAAA0B,kCAAgB,EAACC,+BAAa,CAAC,EAAE,OAAO,KAAK;IAC/E,MAAMC,MAAM,GAAG,IAAI,CAACvJ,IAAI,CAAC6D,cAAc,CAACjC,SAAS,CAAC;IAClD,IAAI2H,MAAM,EAAE,OAAO,KAAK;IAExB,MAAM/F,YAAY,GAAG,MAAM,IAAI,CAACxD,IAAI,CAAC8D,eAAe,CAAClC,SAAS,CAAC;IAC/D,MAAM0B,WAAW,GAAG,IAAI,CAACD,cAAc,CAACG,YAAY,CAAC;IACrD,OAAO,CAAC,CAACF,WAAW,EAAEkG,YAAY;EACpC;;EAEA;AACF;AACA;EACE,MAAMC,eAAeA,CAAC7H,SAAoB,EAAoB;IAC5D,IAAI,CAAC,IAAI,CAACxB,MAAM,CAACuH,YAAY,IAAI,CAAC,IAAA0B,kCAAgB,EAACC,+BAAa,CAAC,EAAE,OAAO,KAAK;IAC/E,MAAMhG,WAAW,GAAG,IAAI,CAACD,cAAc,CAACzB,SAAS,CAAC;IAClD,OAAO0B,WAAW,EAAEqE,YAAY,IAAI,KAAK;EAC3C;;EAEA;AACF;AACA;EACE,MAAM+B,eAAeA,CAAC9H,SAAoB,EAAoB;IAC5D,MAAM0B,WAAW,GAAG,IAAI,CAACD,cAAc,CAACzB,SAAS,CAAC;IAClD,OAAO0B,WAAW,EAAEsE,YAAY,IAAI,KAAK;EAC3C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAcuB,4BAA4BA,CAAC3F,YAAuB,EAAgC;IAChG,MAAM6E,KAAK,GAAG,IAAI,CAACrI,IAAI,CAACqI,KAAK,CAAC7E,YAAY,CAAC;IAC3C;IACA,IAAI,CAAC6E,KAAK,EAAE,OAAO9F,SAAS;IAC5B,MAAM+F,mBAAmB,GAAG,IAAI,CAACpF,sBAAsB,CAACM,YAAY,CAAC;IACrE;IACA,OAAO8E,mBAAmB,EAAEC,SAAS,IAAI,IAAI;EAC/C;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMoB,cAAcA,CAAC/H,SAAoB,EAAoB;IAC3D;IACA,MAAMgI,oBAAoB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;IAE/G,MAAMlH,SAAS,GAAG,MAAM,IAAI,CAACpC,OAAO,CAACsI,gCAAgC,CACnEhH,SAAS,EACTpC,wBAAa,CAACC,EAAE,EAChBoK,wCACF,CAAC;IACD,MAAMC,OAAO,GAAG,IAAI,CAAC9J,IAAI,CAAC+J,UAAU,CAACnI,SAAS,CAAC,CAACoI,IAAI;IACpD,OAAO,CAAC,CAACtH,SAAS,IAAI,CAAC,CAACA,SAAS,CAAC1E,MAAM,IAAI4L,oBAAoB,CAACK,QAAQ,CAACH,OAAO,IAAI,EAAE,CAAC;EAC1F;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMI,cAAcA,CAACtI,SAAoB,EAAwC;IAC/E,MAAMc,SAAS,GAAG,MAAM,IAAI,CAACpC,OAAO,CAACqC,oCAAoC,CACvEf,SAAS,EACTpC,wBAAa,CAACC,EAAE,EAChB0K,qDACF,CAAC;IACD,IAAI,CAACzH,SAAS,IAAI,CAACA,SAAS,CAAC1E,MAAM,EAAE,OAAOuE,SAAS;IAErD,OAAO,KAAIM,kCAAe,EAACH,SAAS,CAAC;EACvC;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAc0H,kBAAkBA,CAACpJ,KAAa,EAAwC;IACpF,MAAMqJ,UAAU,GAAG,IAAAC,4BAAY,EAACtJ,KAAK,CAAC;IACtC;IACA,MAAMuJ,WAAW,GAAG,IAAAC,oCAAyB,EAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAMC,eAAe,GAAG,KAAIC,0BAAe,EAAC,CAAC;IAE7C,IAAIC,OAAO,GAAGF,eAAe,CAACG,UAAU,CAACP,UAAU,EAAEE,WAAW,CAAC;IACjE,IAAI,CAAC,IAAA5D,qBAAU,EAACgE,OAAO,CAAC,EAAE;MACxB;MACA,MAAME,iBAAiB,GAAG,IAAAC,mCAAmB,EAAC9J,KAAK,CAAC;MACpD2J,OAAO,GAAGF,eAAe,CAACG,UAAU,CAACC,iBAAiB,EAAEN,WAAW,CAAC;IACtE;IACA,IAAI,CAAC,IAAA5D,qBAAU,EAACgE,OAAO,CAAC,EAAE;MACxB,OAAOpI,SAAS;IAClB;IACA,MAAMwI,KAAK,GAAGN,eAAe,CAACO,YAAY,CAACL,OAAO,EAAEJ,WAAW,CAAC;IAChE,IAAI,CAACQ,KAAK,IAAI,CAACA,KAAK,CAAC/M,MAAM,EAAE;MAC3B,OAAOuE,SAAS;IAClB;IACA,MAAM0I,aAAa,GAAG,KAAIC,2BAAa,EAACH,KAAK,CAAC;IAE9CE,aAAa,CAACE,uBAAuB,CAACR,OAAO,CAAC;IAC9C,OAAO,KAAI9H,kCAAe,EAACoI,aAAa,CAACG,MAAM,CAAC;EAClD;;EAEA;AACF;AACA;AACA;EACE,MAAMC,8BAA8BA,CAACzJ,SAAoB,EAAwC;IAC/F,MAAMZ,KAAK,GAAG,IAAI,CAAChB,IAAI,CAACsL,QAAQ,CAAC1J,SAAS,CAAC;IAC3C,OAAO,IAAI,CAAC2J,qBAAqB,CAACvK,KAAK,CAAC;EAC1C;;EAEA;AACF;AACA;AACA;EACE,MAAMuK,qBAAqBA,CAACvK,KAAa,EAAwC;IAC/E;IACA,IAAI,IAAI,CAACb,YAAY,CAACqL,SAAS,CAACxK,KAAK,CAAC,EAAE;MACtC,OAAO,IAAI,CAACoJ,kBAAkB,CAACpJ,KAAK,CAAC;IACvC;IACA,MAAMyK,IAAI,GAAG,IAAI,CAACxL,eAAe,CAACyL,OAAO,CAAC,CAAC;IAC3C,MAAMC,aAAa,GAAG,MAAMF,IAAI,CAACG,kBAAkB,CAAC5K,KAAK,CAAC;IAC1D,MAAMwC,YAAY,GAAG,MAAMiI,IAAI,CAACrK,GAAG,CAACuK,aAAa,CAAC;IAClD,IAAI,CAACnI,YAAY,EAAE;MACjB,MAAM,KAAIc,oBAAQ,EAAC,6BAA6BtD,KAAK,EAAE,CAAC;IAC1D;IACA,OAAO,IAAI,CAACkJ,cAAc,CAAC1G,YAAY,CAAC;EAC1C;EAEAqI,OAAOA,CAAA,EAAwB;IAC7B,OAAO,IAAI,CAAChM,WAAW,CAAC0B,MAAM,CAAC,CAAC;EAClC;EAKQuK,iBAAiBA,CAAA,EAAG;IAC1B,MAAMC,aAAa,GAAG,IAAI,CAACxL,SAAS,EAAEyL,IAAI;IAC1C,MAAMC,cAAc,GAAGF,aAAa,GAAG,IAAAzM,YAAI,EAACyM,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE;IACrG,IAAIE,cAAc,EAAE;MAClB,IAAAC,wBAAa,EAACD,cAAc,CAAC;MAC7B,IAAAE,wBAAa,EAAC,IAAA7M,YAAI,EAAC2M,cAAc,EAAE,cAAc,CAAC,EAAE;QAAE/H,IAAI,EAAE;MAAkB,CAAC,CAAC;MAChF,IAAAkI,wBAAa,EAAC,IAAA9M,YAAI,EAAC2M,cAAc,EAAE,UAAU,CAAC,EAAE,sBAAsB,CAAC;MACvE,OAAOA,cAAc;IACvB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEI,SAASA,CACPC,MAAc,EACdC,SAAiC,EACjCC,cAA8B,EAC9BC,OAAe,EACfC,sBAA+B,EAC/B;IACA,MAAMT,cAAc,GAAG,IAAI,CAACH,iBAAiB,CAAC,CAAC;IAC/C,MAAMa,QAAQ,GAAG,IAAAC,4BAAY,EAACN,MAAM,EAAEC,SAAS,EAAEC,cAAc,EAAEE,sBAAsB,EAAET,cAAc,CAAC;IACxG,OAAO,IAAI,CAACY,iBAAiB,CAACF,QAAQ,EAAEF,OAAO,EAAEH,MAAM,CAAC;EAC1D;EAEAO,iBAAiBA,CAACF,QAAgB,EAAEG,SAAiB,EAAER,MAAc,EAAE;IACrE,MAAMS,IAAI,GAAG,IAAAC,qBAAU,EAACL,QAAQ,CAAC;IACjC,MAAMM,UAAU,GAAG,IAAA3N,YAAI,EAACwN,SAAS,EAAE,GAAGR,MAAM,IAAI,IAAI,CAACY,SAAS,KAAK,CAAC;;IAEpE;IACA,IAAI,IAAI,CAACC,SAAS,CAAC/L,GAAG,CAAC6L,UAAU,CAAC,KAAKF,IAAI,EAAE;MAC3C,IAAAX,wBAAa,EAACa,UAAU,EAAEN,QAAQ,CAAC;MACnC,IAAI,CAACQ,SAAS,CAACC,GAAG,CAACH,UAAU,EAAEF,IAAI,CAAC;IACtC;IAEA,OAAOE,UAAU;EACnB;EAIA,MAAcI,gBAAgBA,CAC5B;EACAC,OAAyB,EACN;IACnB;IACA;IACA,CAACA,OAAO,CAAC7N,EAAE,EAAE,GAAG6N,OAAO,CAACC,eAAe,CAAC,CAACtP,OAAO,CAAEuP,KAAK,IAAK;MAC1D,IAAI,CAACrM,aAAa,CAACiM,GAAG,CAACI,KAAK,EAAE,KAAIC,4BAAY,EAACH,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAMI,cAAc,GAAG,MAAM,IAAI,CAACC,iBAAiB,CAACL,OAAO,CAAC;IAC5D,MAAMhM,QAAQ,GAAG,IAAI,CAACzB,WAAW,CAAC0B,MAAM,CAAC,CAAC;IAC1C,MAAMqM,SAAS,GAAG,MAAM,IAAI,CAACpM,eAAe,CAACF,QAAQ,EAAEgM,OAAO,CAACzL,UAAU,EAAEyL,OAAO,CAAC;IAEnF,OAAO,CAAC,GAAGM,SAAS,EAAEF,cAAc,CAAC;EACvC;EAEA,MAAMC,iBAAiBA,CAACL,OAAoC,EAAEO,wBAAkC,GAAG,EAAE,EAAE;IACrG,MAAM;MAAEC,OAAO;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACjO,EAAE,CAACkO,cAAc;IAEvD,MAAM,CAAC9J,IAAI,EAAE+J,MAAM,CAAC,GAAG,IAAI,CAACC,KAAK,CAAC,CAAC;IACnC,MAAMC,QAAQ,GAAG,GAAGF,MAAM,CAACjC,IAAI,IAAIoC,yBAAY,EAAE;IACjD,MAAMC,iBAAiB,GAAG,MAAM,IAAAC,kCAAgB,EAACL,MAAM,EAAEG,yBAAY,CAAC;IACtE,MAAMG,aAAa,GAAG,IAAAC,gCAAc,EAAChP,wBAAa,CAACC,EAAE,EAAEgP,wBAAU,EAAE,EAAE,CAAC;IACtE,MAAMC,kBAAkB,GAAG,IAAApP,YAAI,EAAC2O,MAAM,CAACjC,IAAI,EAAE2C,uBAAU,CAAC;IACxD,MAAMC,cAAc,GAAG,MAAM,IAAI,CAAC7O,KAAK,CAACqB,GAAG,CAAC+M,QAAQ,CAAC;IAErD,IAAIU,UAAU,GAAG,EAAE;;IAEnB;IACA,IAAI,CAACf,OAAO,IAAI,CAAC,IAAAnH,qBAAU,EAAC+H,kBAAkB,CAAC,KAAKL,iBAAiB,KAAKE,aAAa,IAAIR,WAAW,CAAC,EAAE;MACvG;MACAc,UAAU,GAAG,IAAAC,+BAAa,EAACtP,wBAAa,CAACC,EAAE,EAAEgP,wBAAU,EAAE,EAAE,CAAW;IACxE,CAAC,MAAM,IAAI,CAACX,OAAO,IAAI,IAAAnH,qBAAU,EAAC+H,kBAAkB,CAAC,KAAKL,iBAAiB,KAAKO,cAAc,IAAIb,WAAW,CAAC,EAAE;MAC9G;MACAc,UAAU,GAAGH,kBAAkB;IACjC,CAAC,MAAM;MACL;MACA,MAAMK,eAAe,GAAG,MAAM,IAAI,CAACC,cAAc,CAACC,yBAAc,CAAC/K,IAAI,EAAE3B,SAAS,EAAE0L,MAAM,CAAC;MACzF,MAAMiB,eAAe,GAAG,IAAI,CAACC,+BAA+B,CAACJ,eAAe,EAAEzB,OAAO,EAAEO,wBAAwB,CAAC;MAEhH,MAAM,IAAAuB,kCAAqB,EAACF,eAAe,CAAC;MAC5CL,UAAU,GAAGH,kBAAkB;MAC/B,MAAM,IAAI,CAAC3O,KAAK,CAACqN,GAAG,CAACe,QAAQ,EAAEE,iBAAiB,CAAC;IACnD;;IAEA;IACA,MAAMX,cAAc,GAAG,MAAM,IAAA2B,uCAA0B,EAACnL,IAAI,EAAE2K,UAAU,EAAE,IAAI,CAACjP,OAAO,CAACQ,MAAM,CAACkP,QAAQ,CAAC,CAAC,CAAC;IAEzG,OAAO5B,cAAc;EACvB;EAEAlM,eAAeA,CAACF,QAA6B,EAAEO,UAAuB,GAAG,EAAE,EAAEyL,OAAyB,EAAE;IACtG,MAAMvC,KAAK,GAAGzJ,QAAQ,CAACiO,GAAG,CAAC,MAAOC,UAAU,IAAK;MAC/C,MAAMC,mBAAmB,GAAG,MAAMD,UAAU,CAACE,uBAAuB,GAAGpC,OAAO,CAACrF,GAAG,CAAC;MACnF,MAAM0H,WAAW,GAAG,IAAIC,GAAG,CAAC,CAAC;MAC7B,MAAMpD,cAA8B,GAAG;QACrC;QACAvP,OAAO,EAAEwS,mBAAmB;QAC5B,CAACnC,OAAO,CAACuC,aAAa,CAACpQ,EAAE,GAAGgQ;MAC9B,CAAC;MAED,MAAMF,GAAG,GAAG,MAAMC,UAAU,CAACM,YAAY,CAACjO,UAAU,CAAC;MACrD,MAAM6K,sBAAsB,GAAG,IAAI,CAACtE,mBAAmB,CAAC,CAAC,CAACJ,oBAAoB,IAAI,KAAK;MACvF,MAAM+H,UAAU,GAAGR,GAAG,CAACS,QAAQ,CAAC,OAAOhN,KAAK,EAAEpB,SAAS,KAAK;QAC1D,MAAMqO,MAAM,GAAG,IAAI,CAACjQ,IAAI,CAACkI,MAAM,CAACtG,SAAS,CAAC;QAC1C,MAAMsO,WAAW,GAAGD,MAAM,CAAChI,GAAG;QAC9B,MAAMjH,KAAK,GAAGiP,MAAM,CAACxQ,EAAE;QAEvB,IAAI,CAAC+M,cAAc,CAACxL,KAAK,CAAC,IAAI,CAAC2O,WAAW,CAACQ,GAAG,CAACnP,KAAK,CAAC,EAAE;UACrD,MAAMoP,UAAU,GAAG,MAAMZ,UAAU,CAACE,uBAAuB,GAAGO,MAAM,CAAChI,GAAG,CAAC;UACzE,IAAImI,UAAU,EAAE;YACd5D,cAAc,CAACxL,KAAK,CAAC,GAAGoP,UAAU;UACpC;UACAT,WAAW,CAACU,GAAG,CAACrP,KAAK,CAAC;QACxB;QACA,MAAMsP,gBAAgB,GAAGJ,WAAW,CAACK,WAAW,GAAG,CAAC;QACpD,MAAMH,UAAU,GACdE,gBAAgB,EAAEE,2BAA2B,GAAG5O,SAAS,CAAC,IAAI,IAAI,CAAC1B,GAAG,CAACuQ,oBAAoB,CAAC7O,SAAS,CAAC;QACxG,OAAOoB,KAAK,CAACuM,GAAG,CAAE7I,IAAI,IAAK;UACzB,IAAI,CAAC,IAAI,CAACnG,SAAS,IAAI,CAAC+P,gBAAgB,EAAE;YACxC,OAAO5J,IAAI,CAACsF,IAAI;UAClB;UACA,MAAM0E,gBAAgB,GAAGJ,gBAAgB,CAACK,oBAAoB,CAACjK,IAAI,CAACkK,QAAQ,CAAC;UAC7E,OAAO,IAAAtR,YAAI,EAAC,IAAI,CAACiB,SAAS,CAACyL,IAAI,EAAEoE,UAAU,EAAEM,gBAAgB,CAAC;QAChE,CAAC,CAAC;QACF;MACF,CAAC,CAAC;MACF,MAAMG,SAAS,GAAG,MAAMd,UAAU;MAElC,MAAMe,OAAO,GAAG,IAAAxR,YAAI,EAAC,IAAI,CAAC6C,UAAU,EAAEmL,OAAO,CAAC7N,EAAE,CAAC;MACjD,IAAI,CAAC,IAAAkH,qBAAU,EAACmK,OAAO,CAAC,EAAE,IAAAC,oBAAS,EAACD,OAAO,EAAE;QAAEE,SAAS,EAAE;MAAK,CAAC,CAAC;MAEjE,MAAMC,IAAI,GAAG,IAAI,CAAC5E,SAAS,CAACmD,UAAU,CAAClD,MAAM,EAAEuE,SAAS,EAAErE,cAAc,EAAEsE,OAAO,EAAEpE,sBAAsB,CAAC;MAC1G,OAAOuE,IAAI;IACb,CAAC,CAAC;IAEF,OAAOlP,OAAO,CAACmP,GAAG,CAACnG,KAAK,CAAC;EAC3B;;EAEA;AACF;AACA;AACA;EACE,MAAMoG,mBAAmBA,CAAC7D,OAAoC,EAAEO,wBAAkC,GAAG,EAAE,EAAE;IACvG,OAAO,IAAI,CAACF,iBAAiB,CAACL,OAAO,EAAEO,wBAAwB,CAAC;EAClE;EAEA,MAAMmB,cAAcA,CAClBoC,WAAoB,EACpBjN,YAA4B,EAC5B8J,MAAe,EACfoD,IAA4B,EACC;IAC7B,MAAMC,IAAI,GAAGrD,MAAM,IAAI,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtCkD,WAAW,GAAGA,WAAW,IAAIG,kBAAW,CAACrN,IAAI;IAC7C,MAAM6K,eAAe,GAAG,MAAMuC,IAAI,CAACtC,cAAc,CAACoC,WAAW,EAAEjN,YAAY,EAAEkN,IAAI,CAAC;IAClF,OAAOtC,eAAe;EACxB;EAEQb,KAAKA,CAAA,EAAG;IACd,MAAMpO,EAAE,GAAG,IAAI,CAACA,EAAE,CAACoO,KAAK,CAAC,CAAC;IAC1B,IAAI,CAACpO,EAAE,EAAE,MAAM,IAAI0R,KAAK,CAAC,cAAc,CAAC;IACxC,OAAO1R,EAAE;EACX;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACUqP,+BAA+BA,CACrC/L,OAA2B,EAC3BkK,OAAoC,EACpCO,wBAAkC,GAAG,EAAE,EACvC;IACA,IAAI4D,0BAAoC,GAAG,EAAE;IAC7CA,0BAA0B,GAAGnE,OAAO,CAACzL,UAAU,CAAC6P,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACpE,OAAOD,GAAG,CAACE,MAAM,CAACD,IAAI,CAACzO,KAAK,CAACC,OAAO,CAAC0O,GAAG,CAAC;IAC3C,CAAC,EAAEL,0BAA0B,CAAC;IAC9B,MAAMM,WAAW,GAAG1U,MAAM,CAACC,IAAI,CAAC,IAAI,CAACsC,OAAO,CAACQ,MAAM,CAACkP,QAAQ,CAAC,CAAC,CAAC;IAC/D,MAAM0C,mBAAmB,GAAG,IAAAC,cAAI,EAACF,WAAW,CAACF,MAAM,CAACJ,0BAA0B,CAAC,CAAC;IAChF,MAAMS,QAAQ,GAAG9O,OAAO,CAAC3F,MAAM,CAAE0U,MAAM,IAAK;MAC1C,IAAI,CAACA,MAAM,CAACC,KAAK,EAAE;QACjB,OAAO,KAAK;MACd;MACA,OACE,IAAI,CAACjS,YAAY,CAACkS,YAAY,CAACF,MAAM,CAACC,KAAK,CAAC,IAC5CJ,mBAAmB,CAAC/H,QAAQ,CAACkI,MAAM,CAACC,KAAK,CAAC,IAC1CvE,wBAAwB,CAAC5D,QAAQ,CAACkI,MAAM,CAACC,KAAK,CAAC;IAEnD,CAAC,CAAC;IAEF,OAAOF,QAAQ;EACjB;EAEQI,oBAAoBA,CAAA,EAAG;IAC7B,OAAO,CACL,KAAIC,iCAAmB,EAAC,IAAI,EAAE,IAAI,CAACrS,GAAG,EAAE,IAAI,CAACO,kBAAkB,CAAC,EAChE,KAAI+R,uCAAyB,EAAC,IAAI,EAAE,IAAI,CAAC/R,kBAAkB,EAAE,IAAI,CAACD,MAAM,CAAC,CAC1E;EACH;EAiCA4H,mBAAmBA,CAACH,GAAgB,EAAoB;IACtD,MAAM7H,MAAM,GAAG6H,GAAG,EAAEwK,gBAAgB,IAAI,OAAOxK,GAAG,EAAEwK,gBAAgB,KAAK,UAAU,GAAGxK,GAAG,EAAEwK,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC;IAElH,OAAOrS,MAAM;EACf;;EAEA;AACF;AACA;EACEsS,mBAAmBA,CAACzK,GAAgB,EAAoB;IACtD,MAAM0K,iBAAiB,GAAG,IAAI,CAACL,oBAAoB,CAAC,CAAC;IACrD,MAAMnK,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,CAACH,GAAG,CAAC;IACtD,MAAM2K,eAAe,GAAGzK,gBAAgB,EAAEL,YAAY;IACtD,MAAMA,YAAY,GAAG8K,eAAe,IAAI,IAAI,CAACxS,MAAM,CAACyS,gBAAgB,IAAI,KAAK;IAC7E,MAAMC,UAAU,GAAG,IAAI,CAACzS,oBAAoB,CAACkB,MAAM,CAAC,CAAC,CAACsQ,MAAM,CAACc,iBAAiB,CAAC;IAC/E,MAAMI,QAAQ,GAAGD,UAAU,CAACE,IAAI,CAAEC,QAAQ,IAAK;MAC7C,OAAOA,QAAQ,CAAC/O,IAAI,KAAK4D,YAAY;IACvC,CAAC,CAAC;IAEF,IAAI,CAACiL,QAAQ,EAAE,MAAM,KAAIG,sCAAwB,EAACpL,YAAY,CAAC;IAE/D,OAAOiL,QAAQ;EACjB;;EAEA;AACF;AACA;EACEI,wBAAwBA,CAACN,gBAAkC,EAAE;IAC3D,IAAI,CAACxS,oBAAoB,CAAC+S,QAAQ,CAACP,gBAAgB,CAAC;IACpD,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEQ,kBAAkBA,CAAC7D,UAA6B,EAAE;IAChD,IAAI,CAAC3P,WAAW,CAACuT,QAAQ,CAAC5D,UAAU,CAAC;EACvC;EA8BA,aAAa8D,QAAQA;EACnB;EACA,CACEC,OAAO,EACPjT,OAAO,EACPkT,kBAAkB,EAClBC,MAAM,EACN1T,KAAK,EACLC,IAAI,EACJO,SAAS,EACTL,GAAG,EACHwT,MAAM,EACNvT,YAAY,EACZwT,UAAU,EACVlT,kBAAkB,EAClBmT,OAAO,EACPC,OAAO,EACPC,KAAK,EACLC,GAAG,EACHrT,OAAO,CAmBR,EACDN,MAAqB,EACrB,CAACP,WAAW,EAAEQ,oBAAoB,CAAoD,EACtFT,OAAgB,EAChB;IACA,MAAMY,MAAM,GAAGmT,UAAU,CAACK,YAAY,CAACxU,wBAAa,CAACC,EAAE,CAAC;IACxD;IACA,MAAMwU,OAAO,GAAG,IAAIvU,WAAW,CAC7BE,OAAO,EACPC,WAAW,EACX4T,MAAM,EACN1T,KAAK,EACLC,IAAI,EACJwT,kBAAkB,EAClBtT,GAAG,EACHC,YAAY,EACZC,MAAM,EACNC,oBAAoB,EACpBC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,kBAAkB,EAClBC,OACF,CAAC;IAEDqT,GAAG,CAACX,QAAQ,CAAC,KAAIc,qCAAkB,EAACD,OAAO,CAAC,EAAE,KAAIE,+BAAe,EAACF,OAAO,CAAC,CAAC;IAE3E,IAAI1T,SAAS,EACXkT,MAAM,CAACW,mBAAmB,CAAC,KAAIC,8BAAkB,EAAC9T,SAAS,EAAEgT,OAAO,EAAEE,MAAM,EAAEC,MAAM,EAAElT,MAAM,EAAEqT,OAAO,CAAC,CAAC;IAEzGL,kBAAkB,CAACc,aAAa,CAAC,CAC/B,KAAIC,wBAAY,EAACN,OAAO,EAAEzT,MAAM,CAAC,EACjC,KAAIgU,yCAAqB,EAACP,OAAO,EAAEzT,MAAM,CAAC;IAC1C;IACA,KAAIiU,+BAAgB,EAACR,OAAO,EAAEzT,MAAM,CAAC,EACrC,KAAIkU,mCAAkB,EAACT,OAAO,EAAEzT,MAAM,CAAC,CACxC,CAAC;IAEF+S,OAAO,CAACoB,cAAc,CAAC,CACrB;MACEC,KAAK,EAAEX,OAAO,CAAC5G,gBAAgB,CAACwH,IAAI,CAACZ,OAAO;IAC9C,CAAC,CACF,CAAC;IAEF,IAAI,CAAC7T,MAAM,CAAC0U,QAAQ,EAClBxU,OAAO,CAACyU,kBAAkB,CAAC,CACzB,KAAIC,4CAAsB,EAACf,OAAO,EAAEjU,IAAI,EAAEG,YAAY,EAAEM,kBAAkB,EAAED,MAAM,CAAC,EACnF,KAAIyU,uBAAW,EAAC1B,OAAO,EAAEU,OAAO,EAAExT,kBAAkB,EAAED,MAAM,CAAC,EAC7D,KAAI0U,kCAAoB,EAACzB,MAAM,EAAEjT,MAAM,CAAC,CACzC,CAAC;IAEJ,IAAID,SAAS,EAAE;MACbA,SAAS,CAAC4U,sBAAsB,CAAErU,CAAC,IACjCmT,OAAO,CAAChS,qBAAqB,CAACnB,CAAC,EAAGW,iBAAiB,IAAKA,iBAAiB,CAAC4O,GAAG,CAACvP,CAAC,CAAC,CAClF,CAAC;MACDP,SAAS,CAAC6U,uBAAuB,CAAC,MAAOxT,SAAS,IAAK;QACrD,OAAOqS,OAAO,CAAC7M,eAAe,CAACxF,SAAS,CAAC;MAC3C,CAAC,CAAC;MACFrB,SAAS,CAAC8U,yBAAyB,CAAEvU,CAAC,IACpCmT,OAAO,CAAChS,qBAAqB,CAACnB,CAAC,EAAGW,iBAAiB,IAAKA,iBAAiB,CAAC6T,MAAM,CAACxU,CAAC,CAAC,CACrF,CAAC;MACDP,SAAS,CAACgV,yBAAyB,CAAE5T,GAAG,IAAKsS,OAAO,CAACuB,sBAAsB,CAAC7T,GAAG,CAAC,CAAC;IACnF;IACA,IAAImS,KAAK,EAAE;MACTA,KAAK,CAAC2B,0BAA0B,CAAE3U,CAAC,IAAKmT,OAAO,CAAC7M,eAAe,CAACtG,CAAC,CAAC,CAAC;IACrE;IACA,MAAM8D,cAAc,GAAG,KAAI8Q,0BAAc,EAACzB,OAAO,EAAEzT,MAAM,EAAEC,kBAAkB,EAAEqT,KAAK,CAAC;IAErF9T,IAAI,CAAC2V,eAAe,CAAC/Q,cAAc,CAAC;IACpCqP,OAAO,CAACrP,cAAc,GAAGA,cAAc;IAEvCgP,OAAO,CAACR,QAAQ,CAAC,MAAM,IAAAwC,yBAAa,EAAC3B,OAAO,CAAC,CAAC;IAE9C,OAAOA,OAAO;EAChB;AACF;AAAC4B,OAAA,CAAAnW,WAAA,GAAAA,WAAA;AAAAxB,eAAA,CAv+BYwB,WAAW,WA01BP,CAACoW,eAAI,CAACC,QAAQ,CAAoB,CAAC,EAAED,eAAI,CAACC,QAAQ,CAAmB,CAAC,CAAC;AAAA7X,eAAA,CA11B3EwB,WAAW,aA41BL6R,kBAAW;AAAArT,eAAA,CA51BjBwB,WAAW,kBA61BA,CACpBsW,wBAAa,EACbC,wBAAa,EACbC,4BAAe,EACfC,cAAQ,EACRC,oBAAW,EACXC,kBAAU,EACVC,4BAAe,EACfC,gBAAS,EACTC,sBAAY,EACZC,kCAAkB,EAClBC,sBAAY,EACZC,8CAAwB,EACxBC,wBAAa,EACbC,wBAAa,EACbC,oBAAW,EACXC,gBAAS,EACTC,wBAAa,CACd;AAAA9Y,eAAA,CA/2BUwB,WAAW,mBAi3BC;EACrBoV,QAAQ,EAAE,KAAK;EACfnN,YAAY,EAAE;AAChB,CAAC;AAqHHnI,wBAAa,CAACyX,UAAU,CAACvX,WAAW,CAAC","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_builder","data","require","_bundler","_pubsub","_cli","_component","_envs","_harmony","_ui","_cache","_legacy","_bitError","_objectHash","_interopRequireDefault","_lodash","_fsExtra","_path","_pkg","_aspectLoader","_workspace","_logger","_dependencyResolver","_express","_component2","_watcher","_graphql","_scope","_harmonyModules","_exceptions","_generateLink","_previewArtifact","_preview","_preview2","_preview3","_strategies","_executionRef","_preview4","_envPreviewTemplate","_envTemplate","_componentPreview","_preview5","_previewAssets","_preview6","_preBundle","_preBundle2","_preBundleUtils","_generatePreview","_servePreview","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","cache","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","express","Map","Date","now","c","updater","envId","getOrCalculateEnvId","executionRef","executionRefs","get","warn","previews","values","updateLinkFiles","currentComponents","executionCtx","cId","component","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByAspectAndTaskName","PREVIEW_TASK_NAME","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getPreviewAspectConfig","state","aspects","getPreviewData","previewData","doesEnvIncludesOnlyOverview","envComponent","supportsOnlyOverview","doesEnvUseNameParam","supportsUseNameParam","calculateIncludeOnlyOverview","isUsingCoreEnv","getEnvComponent","calculateUseNameParam","generateComponentPreview","componentPattern","name","componentIds","idsByPattern","listIds","BitError","getMany","envsRuntime","createEnvironment","previewResults","run","previewService","serveLocalPreview","port","app","createApp","getDirAndPath","comp","msg","componentPreviewIndex","readComponentsPreview","compParts","split","compToCheck","filePath","part","slice","componentPreviewFolder","envPreviewDir","getEnvLocalPreviewDir","publicDir","use","req","res","next","params","componentId","message","status","send","endsWith","file","existsSync","sendFile","static","server","listen","reject","on","err","consoleSuccess","calcPreviewData","doesScaling","calcDoesScalingForComponent","dataFromEnv","calcPreviewDataFromEnv","envData","calculateDataForEnvComponent","onlyOverview","useNameParam","toStringWithoutVersion","strategyName","COMPONENT_PREVIEW_STRATEGY_NAME","splitComponentBundle","env","getEnv","envPreviewConfig","getEnvPreviewConfig","isEnv","previewAspectConfig","isScaling","calcIsBundledWithEnv","envPreviewData","isBundledWithEnvBackward","ENV_PREVIEW_STRATEGY_NAME","getArtifactsVinylByAspectAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","isNew","isEnvSupportScaling","inWorkspace","hasId","envSupportScaling","calculateIsEnvSupportScaling","isSupportSkipIncludes","isFeatureEnabled","ONLY_OVERVIEW","isCore","skipIncludes","getOnlyOverview","getUseNameParam","isLegacyHeader","ENV_WITH_LEGACY_DOCS","ENV_STRATEGY_ARTIFACT_NAME","envType","getEnvData","type","includes","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","getAspectDir","artifactDef","getEnvTemplateArtifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","getDefs","ensureTempPackage","workspacePath","path","tempPackageDir","ensureDirSync","writeJSONSync","writeFileSync","writeLink","prefix","moduleMap","mainModulesMap","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewEntry","linkFiles","aspectsIdsToNotFilterOut","rebuild","skipUiBuild","runtimeOptions","uiRoot","getUi","cacheKey","RUNTIME_NAME","currentBundleHash","createBundleHash","preBundleHash","readBundleHash","BUNDLE_DIR","workspaceBundleDir","PUBLIC_DIR","lastBundleHash","bundlePath","getBundlePath","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","buildPreBundlePreview","generateBundlePreviewEntry","toObject","map","previewDef","defaultTemplatePath","renderTemplatePathByEnv","visitedEnvs","Set","envDefinition","getModuleMap","withPathsP","asyncMap","envDef","environment","has","modulePath","add","compilerInstance","getCompiler","getPreviewComponentRootPath","getRuntimeModulePath","distRelativePath","getDistPathBySrcPath","relative","withPaths","dirPath","mkdirSync","recursive","link","all","writePreviewRuntime","runtimeName","opts","root","MainRuntime","Error","allComponentContextAspects","reduce","acc","curr","concat","ids","hostAspects","allAspectsToInclude","uniq","filtered","aspect","getId","isCoreAspect","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getPreviewConfig","getBundlingStrategy","defaultStrategies","strategyFromEnv","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","graphql","watcher","scope","cli","createLogger","preview","GeneratePreviewCmd","ServePreviewCmd","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","PreBundlePreviewTask","registerOnComponentAdd","registerOnComponentLoad","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","registerOnCompAspectReCalc","PreviewService","registerService","previewSchema","exports","Slot","withType","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","CacheAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","WatcherAspect","ScopeAspect","CLIAspect","ExpressAspect","addRuntime"],"sources":["preview.main.runtime.ts"],"sourcesContent":["import { ArtifactFactory, BuilderAspect } from '@teambit/builder';\nimport type { BuilderMain } from '@teambit/builder';\nimport { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime, CLIAspect } from '@teambit/cli';\nimport type { CLIMain } from '@teambit/cli';\nimport {\n Component,\n ComponentAspect,\n ComponentMain,\n ComponentMap,\n ComponentID,\n ResolveAspectsOptions,\n} from '@teambit/component';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { EnvsExecutionResult, EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain, UIRoot } from '@teambit/ui';\nimport { CacheAspect, CacheMain } from '@teambit/cache';\nimport { CACHE_ROOT } from '@teambit/legacy.constants';\nimport { BitError } from '@teambit/bit-error';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync, ensureDirSync, writeJSONSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectLoaderAspect, getAspectDir, getAspectDirFromBvm } from '@teambit/aspect-loader';\nimport type { AspectDefinition, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport { WatcherAspect, WatcherMain } from '@teambit/watcher';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { ONLY_OVERVIEW, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink, MainModulesMap } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask, PREVIEW_TASK_NAME } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport {\n EnvBundlingStrategy,\n ComponentBundlingStrategy,\n COMPONENT_STRATEGY_ARTIFACT_NAME,\n COMPONENT_STRATEGY_SIZE_KEY_NAME,\n ENV_PREVIEW_STRATEGY_NAME,\n ENV_STRATEGY_ARTIFACT_NAME,\n COMPONENT_PREVIEW_STRATEGY_NAME,\n} from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\nimport {\n EnvPreviewTemplateTask,\n GENERATE_ENV_TEMPLATE_TASK_NAME,\n getArtifactDef as getEnvTemplateArtifactDef,\n} from './env-preview-template.task';\nimport { EnvTemplateRoute } from './env-template.route';\nimport { ComponentPreviewRoute } from './component-preview.route';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\nimport { PreviewService } from './preview.service';\nimport { PUBLIC_DIR, RUNTIME_NAME, buildPreBundlePreview, generateBundlePreviewEntry } from './pre-bundle';\nimport { BUNDLE_DIR, PreBundlePreviewTask } from './pre-bundle.task';\nimport { createBundleHash, getBundlePath, readBundleHash } from './pre-bundle-utils';\nimport { GeneratePreviewCmd } from './generate-preview.cmd';\nimport { ServePreviewCmd } from './serve-preview.cmd';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\nexport type PreviewStrategyName = 'env' | 'component';\n\nexport type PreviewFiles = {\n files: string[];\n isBundledWithEnv: boolean;\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewVariantConfig = {\n isScaling?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load\n */\nexport type PreviewComponentData = PreviewAnyComponentData & PreviewEnvComponentData;\n\n/**\n * Preview data that stored on the component on load for any component\n */\nexport type PreviewAnyComponentData = {\n doesScaling?: boolean;\n /**\n * The strategy configured by the component's env\n */\n strategyName?: PreviewStrategyName;\n /**\n * Does the component has a bundle for the component itself (separated from the compositions/docs)\n * Calculated by the component's env\n */\n splitComponentBundle?: boolean;\n\n /**\n * don't allow other aspects implementing a preview definition to be included in your preview.\n */\n onlyOverview?: boolean;\n\n /**\n * use name query params to select a specific composition to render.\n */\n useNameParam?: boolean;\n\n /**\n * don't allow other aspects implementing a preview definition to be included in your preview.\n */\n skipIncludes?: boolean;\n};\n\n/**\n * Preview data that stored on the component on load if the component is an env\n */\nexport type PreviewEnvComponentData = {\n isScaling?: boolean;\n supportsOnlyOverview?: boolean;\n supportsUseNameParam?: boolean;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n /**\n * limit concurrent components when running the bundling step for your bundler during generate components preview task.\n * this helps mitigate large memory consumption for the build pipeline. This may increase the overall time for the generate-preview task, but reduce memory footprint.\n * default - no limit.\n */\n maxChunkSize?: number;\n onlyOverview?: boolean;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: PreviewStrategyName;\n splitComponentBundle?: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport type GenerateLinkFn = (prefix: string, componentMap: ComponentMap<string[]>, defaultModule?: string) => string;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private cache: CacheMain,\n\n private envs: EnvsMain,\n\n private componentAspect: ComponentMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain,\n\n private express: ExpressMain\n ) {}\n\n private previewService: PreviewService;\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n getComponentBundleSize(component: Component): ComponentPreviewSize | undefined {\n const data = this.builder.getDataByAspect(component, PreviewAspect.id);\n\n if (!data) return undefined;\n return data[COMPONENT_STRATEGY_SIZE_KEY_NAME];\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts) return undefined;\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * Get a list of all the artifact files generated during the GeneratePreview task\n * @param component\n * @returns\n */\n async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {\n const artifacts = await this.getPreview(component);\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n isBundledWithEnv,\n };\n }\n\n /**\n * Get the preview config of the component.\n * (config that was set by variants or on bitmap)\n * @param component\n * @returns\n */\n getPreviewAspectConfig(component: Component): PreviewVariantConfig | undefined {\n return component.state.aspects.get(PreviewAspect.id)?.config;\n }\n\n /**\n * Get the preview data of the component.\n * (data that was calculated during the on load process)\n * @param component\n * @returns\n */\n getPreviewData(component: Component): PreviewComponentData | undefined {\n const previewData = component.state.aspects.get(PreviewAspect.id)?.data;\n return previewData;\n }\n\n /**\n * check if the current version of env component supports skipping other included previews\n * @param envComponent\n * @returns\n */\n doesEnvIncludesOnlyOverview(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.supportsOnlyOverview;\n }\n\n /**\n * check if the current version of env component supports name query param\n * @param envComponent\n * @returns\n */\n doesEnvUseNameParam(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.supportsUseNameParam;\n }\n\n private async calculateIncludeOnlyOverview(component: Component): Promise<boolean> {\n if (this.envs.isUsingCoreEnv(component)) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.doesEnvIncludesOnlyOverview(envComponent);\n }\n\n private async calculateUseNameParam(component: Component): Promise<boolean> {\n if (this.envs.isUsingCoreEnv(component)) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.doesEnvUseNameParam(envComponent);\n }\n\n async generateComponentPreview(\n componentPattern: string,\n name: string\n ): Promise<EnvsExecutionResult<{ [id: string]: string }>> {\n const componentIds = componentPattern\n ? await this.workspace?.idsByPattern(componentPattern, true)\n : this.workspace?.listIds();\n if (!componentIds) {\n throw new BitError(`unable to find components by the pattern: ${componentPattern}`);\n }\n const components = await this.workspace?.getMany(componentIds);\n if (!components) {\n throw new BitError(`unable to find components by the pattern: ${componentPattern}`);\n }\n const envsRuntime = await this.envs.createEnvironment(components);\n const previewResults = await envsRuntime.run(this.previewService, { name });\n return previewResults;\n }\n\n async serveLocalPreview({ port }: { port: number }): Promise<number> {\n const app = this.express.createApp();\n\n const getDirAndPath = async (comp, msg) => {\n const componentPreviewIndex = await this.previewService.readComponentsPreview(msg);\n const compParts = comp.split('/');\n // go over all combination of parts to find the component\n let compToCheck;\n let filePath;\n for (let i = compParts.length; i > 0; i--) {\n /**\n * Joins the component parts up to the specified index into a single string separated by '/'.\n *\n * @param compParts - An array of component parts.\n * @param i - The index up to which the parts should be joined.\n * @returns A string representing the joined component parts up to the specified index.\n */\n const part = compParts.slice(0, i).join('/');\n if (componentPreviewIndex[part]) {\n compToCheck = part;\n filePath = compParts.slice(i).join('/');\n break;\n }\n }\n const componentPreviewFolder = componentPreviewIndex[compToCheck];\n const envPreviewDir = this.previewService.getEnvLocalPreviewDir(msg, componentPreviewFolder);\n if (!componentPreviewFolder) {\n return [];\n }\n const publicDir = join(envPreviewDir, 'public');\n return [publicDir, filePath];\n };\n\n // const dynamicRouteRegex = '/?[^/@]+(/[^~]*)?';\n // readonly route = `/:componentId(${this.dynamicRouteRegex})/~aspect${this.registerRoute.route}`;\n // app.use(`/:message/:componentId(${dynamicRouteRegex})`, async (req, res, next) => {\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n app.use(`/:message/:componentId(*)`, async (req, res, next) => {\n // const comp = req.query.comp as string;\n // const msg = req.query.message as string;\n let comp = req.params.componentId as string;\n const msg = req.params.message as string;\n // Check if the folderName is provided\n if (!comp) {\n return res.status(400).send('Please specify a comp.');\n }\n\n if (!msg) {\n return res.status(400).send('Please specify a message.');\n }\n\n if (comp.endsWith('/')) {\n comp = comp.slice(0, -1);\n }\n\n const [publicDir, filePath] = await getDirAndPath(comp, msg);\n if (!publicDir) {\n return res.status(404).send('Folder not found.');\n }\n if (filePath) {\n const file = join(publicDir, filePath);\n if (!existsSync(file)) {\n return res.status(404).send('File not found.');\n }\n return res.sendFile(file);\n }\n\n // Serve files from the specified folder\n this.express.static(publicDir)(req, res, next);\n });\n\n const server = await app.listen(port);\n\n return new Promise((resolve, reject) => {\n server.on('error', (err) => {\n reject(err);\n });\n server.on('listening', () => {\n this.logger.consoleSuccess(`Bit preview server is listening on port ${port}`);\n resolve(port);\n });\n });\n }\n\n /**\n * Calculate preview data on component load\n * @param component\n * @returns\n */\n async calcPreviewData(component: Component): Promise<PreviewComponentData> {\n const doesScaling = await this.calcDoesScalingForComponent(component);\n const dataFromEnv = await this.calcPreviewDataFromEnv(component);\n const envData = (await this.calculateDataForEnvComponent(component)) || {};\n const onlyOverview = await this.calculateIncludeOnlyOverview(component);\n const useNameParam = await this.calculateUseNameParam(component);\n\n const data: PreviewComponentData = {\n doesScaling,\n onlyOverview,\n useNameParam,\n ...dataFromEnv,\n ...envData,\n };\n return data;\n }\n\n /**\n * Calculate preview data on component that configured by its env\n * @param component\n * @returns\n */\n async calcPreviewDataFromEnv(\n component: Component\n ): Promise<Omit<PreviewAnyComponentData, 'doesScaling' | 'onlyOverview' | 'useNameParam'> | undefined> {\n // Prevent infinite loop that caused by the fact that the env of the aspect env or the env env is the same as the component\n // so we can't load it since during load we are trying to get env component and load it again\n if (\n component.id.toStringWithoutVersion() === 'teambit.harmony/aspect' ||\n component.id.toStringWithoutVersion() === 'teambit.envs/env'\n ) {\n return {\n strategyName: COMPONENT_PREVIEW_STRATEGY_NAME,\n splitComponentBundle: false,\n };\n }\n\n const env = this.envs.getEnv(component).env;\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const data = {\n strategyName: envPreviewConfig?.strategyName,\n splitComponentBundle: envPreviewConfig?.splitComponentBundle ?? false,\n };\n return data;\n }\n\n /**\n * calculate extra preview data for env components (on load)\n * @param envComponent\n * @returns\n */\n private async calculateDataForEnvComponent(envComponent: Component): Promise<PreviewEnvComponentData | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n\n const data = {\n // default to true if the env doesn't have a preview config\n isScaling: previewAspectConfig?.isScaling ?? true,\n supportsOnlyOverview: true,\n supportsUseNameParam: true,\n };\n return data;\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * This should be used only for calculating the value on load.\n * otherwise, use the isBundledWithEnv function\n * @param component\n * @returns\n */\n async calcIsBundledWithEnv(component: Component): Promise<boolean> {\n const envPreviewData = await this.calcPreviewDataFromEnv(component);\n return envPreviewData?.strategyName !== 'component';\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * @param component\n * @returns\n */\n async isBundledWithEnv(component: Component): Promise<boolean> {\n const data = await this.getPreviewData(component);\n // For components that tagged in the past we didn't store the data, so we calculate it the old way\n // We comparing the strategyName to undefined to cover a specific case when it doesn't exist at all.\n if (!data || data.strategyName === undefined) return this.isBundledWithEnvBackward(component);\n return data.strategyName === ENV_PREVIEW_STRATEGY_NAME;\n }\n\n /**\n * This is a legacy calculation for the isBundledWithEnv\n * This calc is based on the component artifacts which is very expensive operation as it requires to fetch and load the artifacts\n * See the new implementation in the isBundledWithEnv method\n * @param component\n * @returns\n */\n private async isBundledWithEnvBackward(component: Component): Promise<boolean> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n COMPONENT_STRATEGY_ARTIFACT_NAME\n );\n if (!artifacts || !artifacts.length) return true;\n\n return false;\n }\n\n // This used on component load to calc the final result of support is scaling for a given component\n // This calc based on the env, env data, env preview config and more\n // if you want to get the final result use the `doesScaling` method below\n // This should be used only for component load\n private async calcDoesScalingForComponent(component: Component): Promise<boolean> {\n const isBundledWithEnv = await this.calcIsBundledWithEnv(component);\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n // For envs that bundled with the env return true always\n if (isBundledWithEnv) {\n return true;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n return this.isEnvSupportScaling(envComponent);\n }\n\n /**\n * can the current component preview scale in size for different preview sizes.\n * this calculation is based on the env of the component and if the env of the component support it.\n */\n async doesScaling(component: Component): Promise<boolean> {\n const inWorkspace = await this.workspace?.hasId(component.id);\n // Support case when we have the dev server for the env, in that case we calc the data of the env as we can't rely on the env data from the scope\n // since we bundle it for the dev server again\n if (inWorkspace) {\n // if it's a core env and the env template is apart from the component it means the template bundle already contain the scaling functionality\n if (this.envs.isUsingCoreEnv(component)) {\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n // If the component is new, no point to check the is bundle with env (there is no artifacts so it will for sure return false)\n // If it's new, and we are here, it means that we already use a version of the env that support scaling\n const isNew = await component.isNew();\n if (isNew) {\n return true;\n }\n return isBundledWithEnv === false;\n }\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = await this.calculateIsEnvSupportScaling(envComponent);\n return envSupportScaling ?? true;\n }\n const previewData = this.getPreviewData(component);\n if (!previewData) return false;\n // Get the does scaling (the new calculation) or the old calc used in isScaling (between versions (about) 848 and 860)\n if (previewData.doesScaling !== undefined) return previewData.doesScaling;\n // in case this component were tagged with versions between 848 and 860 we need to use the old calculation\n // together with the env calculation\n // In that case it means the component already tagged, so we take the env calc from the env data and not re-calc it\n if (previewData.isScaling) {\n const envComponent = await this.envs.getEnvComponent(component);\n const envSupportScaling = this.isEnvSupportScaling(envComponent);\n return !!envSupportScaling;\n }\n return false;\n }\n\n /**\n * Check if the current version of the env support scaling\n * @param envComponent\n * @returns\n */\n isEnvSupportScaling(envComponent: Component): boolean {\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.isScaling;\n }\n\n async isSupportSkipIncludes(component: Component) {\n if (!this.config.onlyOverview && !isFeatureEnabled(ONLY_OVERVIEW)) return false;\n const isCore = this.envs.isUsingCoreEnv(component);\n if (isCore) return false;\n\n const envComponent = await this.envs.getEnvComponent(component);\n const previewData = this.getPreviewData(envComponent);\n return !!previewData?.skipIncludes;\n }\n\n /**\n * check if the component preview should only include the overview (skipping rendering of the compostions and properties table)\n */\n async getOnlyOverview(component: Component): Promise<boolean> {\n if (!this.config.onlyOverview && !isFeatureEnabled(ONLY_OVERVIEW)) return false;\n const previewData = this.getPreviewData(component);\n return previewData?.onlyOverview ?? false;\n }\n\n /**\n * check if the component preview should include the name query param\n */\n async getUseNameParam(component: Component): Promise<boolean> {\n const previewData = this.getPreviewData(component);\n return previewData?.useNameParam ?? false;\n }\n\n /**\n * This function is calculate the isScaling support flag for the component preview.\n * This is calculated only for the env component and not for the component itself.\n * It should be only used during the (env) component on load.\n * Once the component load, you should only use the `isEnvSupportScaling` to fetch it from the calculated data.\n * If you want to check if an env for a given component support scaling, use the `isScaling` function.\n * @param component\n * @returns\n */\n private async calculateIsEnvSupportScaling(envComponent: Component): Promise<boolean | undefined> {\n const isEnv = this.envs.isEnv(envComponent);\n // If the component is not an env, we don't want to store anything in the data\n if (!isEnv) return undefined;\n const previewAspectConfig = this.getPreviewAspectConfig(envComponent);\n // default to true if the env doesn't have a preview config\n return previewAspectConfig?.isScaling ?? true;\n }\n\n /**\n * Check if the component preview bundle contain the header inside of it (legacy)\n * today we are not including the header inside anymore\n * @param component\n * @returns\n */\n async isLegacyHeader(component: Component): Promise<boolean> {\n // these envs had header in their docs\n const ENV_WITH_LEGACY_DOCS = ['react', 'env', 'aspect', 'lit', 'html', 'node', 'mdx', 'react-native', 'readme'];\n\n const artifacts = await this.builder.getArtifactsVinylByAspectAndName(\n component,\n PreviewAspect.id,\n ENV_STRATEGY_ARTIFACT_NAME\n );\n const envType = this.envs.getEnvData(component).type;\n return !!artifacts && !!artifacts.length && ENV_WITH_LEGACY_DOCS.includes(envType || '');\n }\n\n /**\n * Getting the env template artifact\n * This should be called with the env itself or it will return undefined\n * If you want to get the env template from the env of the component,\n * use: getEnvTemplateFromComponentEnv below\n *\n * @param component\n * @returns\n */\n async getEnvTemplate(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByAspectAndTaskName(\n component,\n PreviewAspect.id,\n GENERATE_ENV_TEMPLATE_TASK_NAME\n );\n if (!artifacts || !artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * This is a special method to get a core env template\n * As the core envs doesn't exist in the scope we need to bring it from other place\n * We will bring it from the core env package files\n */\n private async getCoreEnvTemplate(envId: string): Promise<PreviewArtifact | undefined> {\n const coreEnvDir = getAspectDir(envId);\n // const finalDir = join(coreEnvDir, getEnvTemplateArtifactDirectory());\n const artifactDef = getEnvTemplateArtifactDef()[0];\n const artifactFactory = new ArtifactFactory();\n\n let rootDir = artifactFactory.getRootDir(coreEnvDir, artifactDef);\n if (!existsSync(rootDir)) {\n // fallback to the bvm folder\n const coreEnvDirFromBvm = getAspectDirFromBvm(envId);\n rootDir = artifactFactory.getRootDir(coreEnvDirFromBvm, artifactDef);\n }\n if (!existsSync(rootDir)) {\n return undefined;\n }\n const paths = artifactFactory.resolvePaths(rootDir, artifactDef);\n if (!paths || !paths.length) {\n return undefined;\n }\n const artifactFiles = new ArtifactFiles(paths);\n\n artifactFiles.populateVinylsFromPaths(rootDir);\n return new PreviewArtifact(artifactFiles.vinyls);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateFromComponentEnv(component: Component): Promise<PreviewArtifact | undefined> {\n const envId = this.envs.getEnvId(component);\n return this.getEnvTemplateByEnvId(envId);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateByEnvId(envId: string): Promise<PreviewArtifact | undefined> {\n // Special treatment for core envs\n if (this.aspectLoader.isCoreEnv(envId)) {\n return this.getCoreEnvTemplate(envId);\n }\n const host = this.componentAspect.getHost();\n const resolvedEnvId = await host.resolveComponentId(envId);\n const envComponent = await host.get(resolvedEnvId);\n if (!envComponent) {\n throw new BitError(`can't load env. env id is ${envId}`);\n }\n return this.getEnvTemplate(envComponent);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n private ensureTempPackage() {\n const workspacePath = this.workspace?.path;\n const tempPackageDir = workspacePath ? join(workspacePath, 'node_modules', '@teambit', '_local') : '';\n if (tempPackageDir) {\n ensureDirSync(tempPackageDir);\n writeJSONSync(join(tempPackageDir, 'package.json'), { name: '@teambit/_local' });\n writeFileSync(join(tempPackageDir, 'index.js'), 'module.exports = {};');\n return tempPackageDir;\n }\n }\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(\n prefix: string,\n moduleMap: ComponentMap<string[]>,\n mainModulesMap: MainModulesMap,\n dirName: string,\n isSplitComponentBundle: boolean\n ) {\n const tempPackageDir = this.ensureTempPackage();\n const contents = generateLink(prefix, moduleMap, mainModulesMap, isSplitComponentBundle, tempPackageDir);\n return this.writeLinkContents(contents, dirName, prefix);\n }\n\n writeLinkContents(contents: string, targetDir: string, prefix: string) {\n const hash = objectHash(contents);\n const targetPath = join(targetDir, `${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewEntry(context);\n const previews = this.previewSlot.values();\n const linkFiles = await this.updateLinkFiles(previews, context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n async writePreviewEntry(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const { rebuild, skipUiBuild } = this.ui.runtimeOptions;\n\n const [name, uiRoot] = this.getUi();\n const cacheKey = `${uiRoot.path}|${RUNTIME_NAME}`;\n const currentBundleHash = await createBundleHash(uiRoot, RUNTIME_NAME);\n const preBundleHash = readBundleHash(PreviewAspect.id, BUNDLE_DIR, '');\n const workspaceBundleDir = join(uiRoot.path, PUBLIC_DIR);\n const lastBundleHash = await this.cache.get(cacheKey);\n\n let bundlePath = '';\n\n // ensure the pre-bundle is ready\n if (!rebuild && !existsSync(workspaceBundleDir) && (currentBundleHash === preBundleHash || skipUiBuild)) {\n // use pre-bundle\n bundlePath = getBundlePath(PreviewAspect.id, BUNDLE_DIR, '') as string;\n } else if (!rebuild && existsSync(workspaceBundleDir) && (currentBundleHash === lastBundleHash || skipUiBuild)) {\n // use workspace bundle\n bundlePath = workspaceBundleDir;\n } else {\n // do build\n const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n\n await buildPreBundlePreview(filteredAspects);\n bundlePath = workspaceBundleDir;\n await this.cache.set(cacheKey, currentBundleHash);\n }\n\n // prepare the runtime entry\n const previewRuntime = await generateBundlePreviewEntry(name, bundlePath, this.harmony.config.toObject());\n\n return previewRuntime;\n }\n\n updateLinkFiles(previews: PreviewDefinition[], components: Component[] = [], context: ExecutionContext) {\n const paths = previews.map(async (previewDef) => {\n const defaultTemplatePath = await previewDef.renderTemplatePathByEnv?.(context.env);\n const visitedEnvs = new Set();\n const mainModulesMap: MainModulesMap = {\n // @ts-ignore\n default: defaultTemplatePath,\n [context.envDefinition.id]: defaultTemplatePath,\n };\n\n const map = await previewDef.getModuleMap(components);\n const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\n const withPathsP = map.asyncMap(async (files, component) => {\n const envDef = this.envs.getEnv(component);\n const environment = envDef.env;\n const envId = envDef.id;\n\n if (!mainModulesMap[envId] && !visitedEnvs.has(envId)) {\n const modulePath = await previewDef.renderTemplatePathByEnv?.(envDef.env);\n if (modulePath) {\n mainModulesMap[envId] = modulePath;\n }\n visitedEnvs.add(envId);\n }\n const compilerInstance = environment.getCompiler?.();\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getRuntimeModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n const withPaths = await withPathsP;\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, mainModulesMap, dirPath, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n /**\n * @deprecated\n * use `writePreviewEntry` instead\n */\n async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n return this.writePreviewEntry(context, aspectsIdsToNotFilterOut);\n }\n\n async resolveAspects(\n runtimeName?: string,\n componentIds?: ComponentID[],\n uiRoot?: UIRoot,\n opts?: ResolveAspectsOptions\n ): Promise<AspectDefinition[]> {\n const root = uiRoot || this.getUi()[1];\n runtimeName = runtimeName || MainRuntime.name;\n const resolvedAspects = await root.resolveAspects(runtimeName, componentIds, opts);\n return resolvedAspects;\n }\n\n private getUi() {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n return ui;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(\n aspects: AspectDefinition[],\n context: { components: Component[] },\n aspectsIdsToNotFilterOut: string[] = []\n ) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return (\n this.aspectLoader.isCoreAspect(aspect.getId) ||\n allAspectsToInclude.includes(aspect.getId) ||\n aspectsIdsToNotFilterOut.includes(aspect.getId)\n );\n });\n\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [\n new EnvBundlingStrategy(this, this.pkg, this.dependencyResolver),\n new ComponentBundlingStrategy(this, this.dependencyResolver, this.logger),\n ];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const envId = await this.envs.getOrCalculateEnvId(c);\n\n const executionRef = this.executionRefs.get(envId.toString());\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n const previews = this.previewSlot.values();\n await this.updateLinkFiles(previews, executionRef.currentComponents, executionRef.executionCtx);\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n getEnvPreviewConfig(env?: PreviewEnv): EnvPreviewConfig {\n const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};\n\n return config;\n }\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(env?: PreviewEnv): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const strategyFromEnv = envPreviewConfig?.strategyName;\n const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n CacheAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n WatcherAspect,\n ScopeAspect,\n CLIAspect,\n ExpressAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n onlyOverview: true,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n cache,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n watcher,\n scope,\n cli,\n express,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n CacheMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain,\n WatcherMain,\n ScopeMain,\n CLIMain,\n ExpressMain,\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n // app.registerApp(new PreviewApp());\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n cache,\n envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver,\n express\n );\n\n cli.register(new GeneratePreviewCmd(preview), new ServePreviewCmd(preview));\n\n if (workspace)\n uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger, watcher, graphql));\n\n componentExtension.registerRoute([\n new PreviewRoute(preview, logger),\n new ComponentPreviewRoute(preview, logger),\n // @ts-ignore\n new EnvTemplateRoute(preview, logger),\n new PreviewAssetsRoute(preview, logger),\n ]);\n\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled)\n builder.registerBuildTasks([\n new EnvPreviewTemplateTask(preview, envs, aspectLoader, dependencyResolver, logger),\n new PreviewTask(bundler, preview, dependencyResolver, logger),\n new PreBundlePreviewTask(uiMain, logger),\n ]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentLoad(async (component) => {\n return preview.calcPreviewData(component);\n });\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n if (scope) {\n scope.registerOnCompAspectReCalc((c) => preview.calcPreviewData(c));\n }\n const previewService = new PreviewService(preview, logger, dependencyResolver, scope);\n\n envs.registerService(previewService);\n preview.previewService = previewService;\n\n graphql.register(() => previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"],"mappings":"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","ignoreList":[]}
|
@@ -4,12 +4,16 @@ import { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui
|
|
4
4
|
import { Workspace } from '@teambit/workspace';
|
5
5
|
import { Logger } from '@teambit/logger';
|
6
6
|
import { WatcherMain } from '@teambit/watcher';
|
7
|
+
import { GraphqlMain } from '@teambit/graphql';
|
7
8
|
type ServerState = {
|
8
9
|
isCompiling?: boolean;
|
9
10
|
isReady?: boolean;
|
10
11
|
errors?: Error[];
|
11
12
|
warnings?: Error[];
|
12
13
|
results?: any[];
|
14
|
+
isStarted?: boolean;
|
15
|
+
isCompilationDone?: boolean;
|
16
|
+
isPendingPublish?: boolean;
|
13
17
|
};
|
14
18
|
type ServerStateMap = Record<string, ServerState>;
|
15
19
|
export declare class PreviewStartPlugin implements StartPlugin {
|
@@ -19,10 +23,15 @@ export declare class PreviewStartPlugin implements StartPlugin {
|
|
19
23
|
private pubsub;
|
20
24
|
private logger;
|
21
25
|
private watcher;
|
22
|
-
|
26
|
+
private graphql;
|
23
27
|
previewServers: ComponentServer[];
|
24
28
|
serversState: ServerStateMap;
|
25
29
|
serversMap: Record<string, ComponentServer>;
|
30
|
+
private pendingServers;
|
31
|
+
constructor(workspace: Workspace, bundler: BundlerMain, ui: UiMain, pubsub: PubsubMain, logger: Logger, watcher: WatcherMain, graphql: GraphqlMain);
|
32
|
+
onComponentServerStarted(componentServer: ComponentServer): Promise<void>;
|
33
|
+
private publishServerStarted;
|
34
|
+
onNewDevServersCreated(servers: ComponentServer[]): Promise<void>;
|
26
35
|
initiate(options: StartPluginOptions): Promise<void>;
|
27
36
|
getProxy(): ProxyEntry[];
|
28
37
|
private listenToDevServers;
|
@@ -11,6 +11,13 @@ function _lodash() {
|
|
11
11
|
};
|
12
12
|
return data;
|
13
13
|
}
|
14
|
+
function _bundler() {
|
15
|
+
const data = require("@teambit/bundler");
|
16
|
+
_bundler = function () {
|
17
|
+
return data;
|
18
|
+
};
|
19
|
+
return data;
|
20
|
+
}
|
14
21
|
function _previewCli() {
|
15
22
|
const data = require("@teambit/preview.cli.dev-server-events-listener");
|
16
23
|
_previewCli = function () {
|
@@ -47,22 +54,87 @@ function _chalk() {
|
|
47
54
|
return data;
|
48
55
|
}
|
49
56
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
57
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
58
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
50
59
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
51
60
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
52
61
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
53
62
|
class PreviewStartPlugin {
|
54
|
-
constructor(workspace, bundler, ui, pubsub, logger, watcher) {
|
63
|
+
constructor(workspace, bundler, ui, pubsub, logger, watcher, graphql) {
|
55
64
|
this.workspace = workspace;
|
56
65
|
this.bundler = bundler;
|
57
66
|
this.ui = ui;
|
58
67
|
this.pubsub = pubsub;
|
59
68
|
this.logger = logger;
|
60
69
|
this.watcher = watcher;
|
70
|
+
this.graphql = graphql;
|
61
71
|
_defineProperty(this, "previewServers", []);
|
62
72
|
_defineProperty(this, "serversState", {});
|
63
73
|
_defineProperty(this, "serversMap", {});
|
74
|
+
_defineProperty(this, "pendingServers", new Map());
|
64
75
|
_defineProperty(this, "setReady", void 0);
|
65
76
|
_defineProperty(this, "readyPromise", new Promise(resolve => this.setReady = resolve));
|
77
|
+
this.pubsub.sub(_bundler().BundlerAspect.id, async event => {
|
78
|
+
if (event.type === _bundler().NewDevServersCreatedEvent.TYPE) {
|
79
|
+
await this.onNewDevServersCreated(event.componentsServers);
|
80
|
+
}
|
81
|
+
if (event.type === _bundler().ComponentsServerStartedEvent.TYPE) {
|
82
|
+
await this.onComponentServerStarted(event.componentsServer);
|
83
|
+
}
|
84
|
+
});
|
85
|
+
}
|
86
|
+
async onComponentServerStarted(componentServer) {
|
87
|
+
const startedEnvId = componentServer.context.envRuntime.id;
|
88
|
+
this.serversMap[startedEnvId] = componentServer;
|
89
|
+
const wasPending = this.pendingServers.has(startedEnvId);
|
90
|
+
this.pendingServers.delete(startedEnvId);
|
91
|
+
this.serversState[startedEnvId] = _objectSpread(_objectSpread({}, this.serversState[startedEnvId]), {}, {
|
92
|
+
isStarted: true
|
93
|
+
});
|
94
|
+
const index = this.previewServers.findIndex(s => s.context.envRuntime.id === startedEnvId);
|
95
|
+
if (index >= 0) {
|
96
|
+
this.previewServers[index] = componentServer;
|
97
|
+
} else {
|
98
|
+
this.previewServers.push(componentServer);
|
99
|
+
}
|
100
|
+
const uiServer = this.ui.getUIServer();
|
101
|
+
if (uiServer) {
|
102
|
+
uiServer.addComponentServerProxy(componentServer);
|
103
|
+
if (wasPending) {
|
104
|
+
if (this.serversState[startedEnvId]?.isCompilationDone) {
|
105
|
+
await this.publishServerStarted(componentServer);
|
106
|
+
} else {
|
107
|
+
this.serversState[startedEnvId] = _objectSpread(_objectSpread({}, this.serversState[startedEnvId]), {}, {
|
108
|
+
isPendingPublish: true
|
109
|
+
});
|
110
|
+
this.logger.console(`Server ${startedEnvId} started but waiting for compilation to complete before publishing event.`);
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
async publishServerStarted(server) {
|
116
|
+
await this.graphql.pubsub.publish(_bundler().ComponentServerStartedEvent, {
|
117
|
+
componentServers: server
|
118
|
+
});
|
119
|
+
}
|
120
|
+
async onNewDevServersCreated(servers) {
|
121
|
+
for (const server of servers) {
|
122
|
+
const envId = server.context.envRuntime.id;
|
123
|
+
this.pendingServers.set(envId, server);
|
124
|
+
this.serversState[envId] = {
|
125
|
+
isCompiling: false,
|
126
|
+
isReady: false,
|
127
|
+
isStarted: false,
|
128
|
+
isCompilationDone: false,
|
129
|
+
isPendingPublish: false
|
130
|
+
};
|
131
|
+
try {
|
132
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
133
|
+
server.listen();
|
134
|
+
} catch (err) {
|
135
|
+
this.logger.error(`failed to start server for ${envId}`, err);
|
136
|
+
}
|
137
|
+
}
|
66
138
|
}
|
67
139
|
async initiate(options) {
|
68
140
|
this.listenToDevServers(options.showInternalUrls);
|
@@ -70,7 +142,16 @@ class PreviewStartPlugin {
|
|
70
142
|
// TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.
|
71
143
|
const previewServers = await this.bundler.devServer(components);
|
72
144
|
previewServers.forEach(server => {
|
73
|
-
|
145
|
+
const envId = server.context.envRuntime.id;
|
146
|
+
this.serversMap[envId] = server;
|
147
|
+
this.serversState[envId] = {
|
148
|
+
isCompiling: false,
|
149
|
+
isReady: false,
|
150
|
+
isStarted: false,
|
151
|
+
isCompilationDone: false,
|
152
|
+
isPendingPublish: false
|
153
|
+
};
|
154
|
+
|
74
155
|
// DON'T add wait! this promise never resolves, so it would stop the start process!
|
75
156
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
76
157
|
server.listen();
|
@@ -125,11 +206,11 @@ class PreviewStartPlugin {
|
|
125
206
|
});
|
126
207
|
}
|
127
208
|
handleOnStartCompiling(id) {
|
128
|
-
this.serversState[id] = {
|
209
|
+
this.serversState[id] = _objectSpread(_objectSpread({}, this.serversState[id]), {}, {
|
129
210
|
isCompiling: true
|
130
|
-
};
|
211
|
+
});
|
131
212
|
const spinnerId = getSpinnerId(id);
|
132
|
-
const text = getSpinnerCompilingMessage(this.serversMap[id]);
|
213
|
+
const text = getSpinnerCompilingMessage(this.serversMap[id] || this.pendingServers.get(id));
|
133
214
|
const exists = this.logger.multiSpinner.spinners[spinnerId];
|
134
215
|
if (!exists) {
|
135
216
|
this.logger.multiSpinner.add(spinnerId, {
|
@@ -138,13 +219,14 @@ class PreviewStartPlugin {
|
|
138
219
|
}
|
139
220
|
}
|
140
221
|
handleOnDoneCompiling(id, results, showInternalUrls) {
|
141
|
-
this.serversState[id] = {
|
222
|
+
this.serversState[id] = _objectSpread(_objectSpread({}, this.serversState[id]), {}, {
|
142
223
|
isCompiling: false,
|
143
224
|
isReady: true,
|
225
|
+
isCompilationDone: true,
|
144
226
|
errors: results.errors,
|
145
227
|
warnings: results.warnings
|
146
|
-
};
|
147
|
-
const previewServer = this.serversMap[id];
|
228
|
+
});
|
229
|
+
const previewServer = this.serversMap[id] || this.pendingServers.get(id);
|
148
230
|
const spinnerId = getSpinnerId(id);
|
149
231
|
const spinner = this.logger.multiSpinner.spinners[spinnerId];
|
150
232
|
if (spinner && spinner.isActive()) {
|
@@ -170,6 +252,15 @@ class PreviewStartPlugin {
|
|
170
252
|
}
|
171
253
|
const noneAreCompiling = Object.values(this.serversState).every(x => !x.isCompiling);
|
172
254
|
if (noneAreCompiling) this.setReady();
|
255
|
+
if (this.serversState[id]?.isPendingPublish) {
|
256
|
+
const server = this.serversMap[id];
|
257
|
+
if (server) {
|
258
|
+
this.serversState[id].isPendingPublish = false;
|
259
|
+
this.publishServerStarted(server).catch(err => {
|
260
|
+
this.logger.error(`failed to publish server started event for ${server.context.envRuntime.id}`, err);
|
261
|
+
});
|
262
|
+
}
|
263
|
+
}
|
173
264
|
}
|
174
265
|
get whenReady() {
|
175
266
|
return this.readyPromise;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_previewCli","_previewCli2","_compiler","_watcher","_chalk","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","logger","watcher","Promise","resolve","setReady","initiate","options","listenToDevServers","showInternalUrls","components","getComponentsByUserInput","pattern","previewServers","devServer","forEach","server","serversMap","context","envRuntime","id","listen","watch","spawnTSServer","checkTypes","CheckTypes","None","preCompile","compile","initiator","CompilationInitiator","Start","catch","err","msg","error","console","message","concat","getProxy","proxyConfigs","map","target","port","ws","flatten","SubscribeToEvents","onStart","handleOnStartCompiling","onDone","results","handleOnDoneCompiling","SubscribeToWebpackEvents","serversState","isCompiling","spinnerId","getSpinnerId","text","getSpinnerCompilingMessage","exists","multiSpinner","spinners","add","isReady","errors","warnings","previewServer","spinner","isActive","hasErrors","length","getWarningsWithoutIgnored","hasWarnings","url","getSpinnerDoneMessage","undefined","fail","warn","succeed","noneAreCompiling","values","every","x","whenReady","readyPromise","exports","IGNORE_WARNINGS","filter","warning","find","reg","match","envId","verbose","prefix","chalk","cyan","includedEnvs","relatedContexts","stringifyIncludedEnvs","errorsTxt","join","errorsTxtWithTitle","red","warningsTxt","warningsTxtWithTitle","yellow","urlMessage"],"sources":["preview.start-plugin.tsx"],"sourcesContent":["import { flatten } from 'lodash';\nimport { BundlerMain, ComponentServer } from '@teambit/bundler';\nimport { PubsubMain } from '@teambit/pubsub';\nimport { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';\nimport { Workspace } from '@teambit/workspace';\nimport { SubscribeToEvents } from '@teambit/preview.cli.dev-server-events-listener';\nimport { SubscribeToWebpackEvents } from '@teambit/preview.cli.webpack-events-listener';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { Logger } from '@teambit/logger';\nimport { CheckTypes, WatcherMain } from '@teambit/watcher';\nimport chalk from 'chalk';\n\ntype ServerState = {\n isCompiling?: boolean;\n isReady?: boolean;\n errors?: Error[];\n warnings?: Error[];\n results?: any[];\n};\n\ntype ServerStateMap = Record<string, ServerState>;\n\nexport class PreviewStartPlugin implements StartPlugin {\n constructor(\n private workspace: Workspace,\n private bundler: BundlerMain,\n private ui: UiMain,\n private pubsub: PubsubMain,\n private logger: Logger,\n private watcher: WatcherMain\n ) {}\n\n previewServers: ComponentServer[] = [];\n serversState: ServerStateMap = {};\n serversMap: Record<string, ComponentServer> = {};\n\n async initiate(options: StartPluginOptions) {\n this.listenToDevServers(options.showInternalUrls);\n\n const components = await this.workspace.getComponentsByUserInput(!options.pattern, options.pattern);\n // TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.\n const previewServers = await this.bundler.devServer(components);\n previewServers.forEach((server) => {\n this.serversMap[server.context.envRuntime.id] = server;\n // DON'T add wait! this promise never resolves, so it would stop the start process!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n server.listen();\n });\n this.watcher\n .watch({\n spawnTSServer: true,\n checkTypes: CheckTypes.None,\n preCompile: false,\n compile: true,\n initiator: CompilationInitiator.Start,\n })\n .catch((err) => {\n const msg = `watcher found an error`;\n this.logger.error(msg, err);\n this.logger.console(`${msg}, ${err.message}`);\n });\n this.previewServers = this.previewServers.concat(previewServers);\n }\n\n getProxy(): ProxyEntry[] {\n const proxyConfigs = this.previewServers.map<ProxyEntry[]>((server) => {\n return [\n {\n context: [`/preview/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n },\n {\n context: [`/_hmr/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n ws: true,\n },\n ];\n });\n\n return flatten(proxyConfigs);\n }\n\n // TODO: this should be a part of the devServer\n private listenToDevServers(showInternalUrls?: boolean) {\n // keep state changes immutable!\n SubscribeToEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n // @deprecated\n // for legacy webpack bit report plugin\n SubscribeToWebpackEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n }\n\n private handleOnStartCompiling(id: string) {\n this.serversState[id] = { isCompiling: true };\n const spinnerId = getSpinnerId(id);\n const text = getSpinnerCompilingMessage(this.serversMap[id]);\n const exists = this.logger.multiSpinner.spinners[spinnerId];\n if (!exists) {\n this.logger.multiSpinner.add(spinnerId, { text });\n }\n }\n\n private handleOnDoneCompiling(id: string, results, showInternalUrls?: boolean) {\n this.serversState[id] = {\n isCompiling: false,\n isReady: true,\n errors: results.errors,\n warnings: results.warnings,\n };\n const previewServer = this.serversMap[id];\n const spinnerId = getSpinnerId(id);\n const spinner = this.logger.multiSpinner.spinners[spinnerId];\n if (spinner && spinner.isActive()) {\n const errors = results.errors || [];\n const hasErrors = !!errors.length;\n const warnings = getWarningsWithoutIgnored(results.warnings);\n const hasWarnings = !!warnings.length;\n const url = `http://localhost:${previewServer.port}`;\n const text = getSpinnerDoneMessage(this.serversMap[id], errors, warnings, url, undefined, showInternalUrls);\n if (hasErrors) {\n this.logger.multiSpinner.fail(spinnerId, { text });\n } else if (hasWarnings) {\n this.logger.multiSpinner.warn(spinnerId, { text });\n } else {\n this.logger.multiSpinner.succeed(spinnerId, { text });\n }\n }\n\n const noneAreCompiling = Object.values(this.serversState).every((x) => !x.isCompiling);\n if (noneAreCompiling) this.setReady();\n }\n\n private setReady: () => void;\n private readyPromise = new Promise<void>((resolve) => (this.setReady = resolve));\n get whenReady(): Promise<void> {\n return this.readyPromise;\n }\n}\n\nfunction getWarningsWithoutIgnored(warnings?: Error[]): Error[] {\n if (!warnings || !warnings.length) return [];\n const IGNORE_WARNINGS = [\n // Webpack 5+ has no facility to disable this warning.\n // System.import is used in @angular/core for deprecated string-form lazy routes\n /System.import\\(\\) is deprecated and will be removed soon/i,\n // We need to include all the files in the compilation because we don't know what people will use in their compositions\n /is part of the TypeScript compilation but it's unused/i,\n // https://github.com/webpack-contrib/source-map-loader/blob/b2de4249c7431dd8432da607e08f0f65e9d64219/src/index.js#L83\n /Failed to parse source map from/,\n ];\n warnings.filter((warning) => !IGNORE_WARNINGS.find((reg) => warning?.message?.match(reg)));\n return warnings;\n}\n\nfunction getSpinnerId(envId: string) {\n return `preview-${envId}`;\n}\n\nfunction getSpinnerCompilingMessage(server: ComponentServer, verbose = false) {\n const prefix = 'COMPILING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = `on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n return `${prefix} ${envId} ${includedEnvs}`;\n}\n\nfunction getSpinnerDoneMessage(\n server: ComponentServer,\n errors: Error[],\n warnings: Error[],\n url: string,\n verbose = false,\n showInternalUrls?: boolean\n) {\n const hasErrors = !!errors.length;\n const hasWarnings = !!warnings.length;\n const prefix = hasErrors ? 'FAILED' : 'RUNNING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = ` on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n const errorsTxt = hasErrors ? errors.map((err) => err.message).join('\\n') : '';\n const errorsTxtWithTitle = hasErrors ? chalk.red(`\\nErrors:\\n${errorsTxt}`) : '';\n const warningsTxt = hasWarnings ? warnings.map((warning) => warning.message).join('\\n') : '';\n const warningsTxtWithTitle = hasWarnings ? chalk.yellow(`\\nWarnings:\\n${warningsTxt}`) : '';\n\n const urlMessage = hasErrors || !showInternalUrls ? '' : `at ${chalk.cyan(url)}`;\n return `${prefix} ${envId}${includedEnvs} ${urlMessage} ${errorsTxtWithTitle} ${warningsTxtWithTitle}`;\n}\n\nfunction stringifyIncludedEnvs(includedEnvs: string[] = [], verbose = false) {\n if (includedEnvs.length < 2) return '';\n if (includedEnvs.length > 2 && !verbose) return ` ${includedEnvs.length} other envs`;\n return includedEnvs.join(', ');\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_lodash","data","require","_bundler","_previewCli","_previewCli2","_compiler","_watcher","_chalk","_interopRequireDefault","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","logger","watcher","graphql","Map","Promise","resolve","setReady","sub","BundlerAspect","id","event","type","NewDevServersCreatedEvent","TYPE","onNewDevServersCreated","componentsServers","ComponentsServerStartedEvent","onComponentServerStarted","componentsServer","componentServer","startedEnvId","context","envRuntime","serversMap","wasPending","pendingServers","has","delete","serversState","isStarted","index","previewServers","findIndex","s","uiServer","getUIServer","addComponentServerProxy","isCompilationDone","publishServerStarted","isPendingPublish","console","server","publish","ComponentServerStartedEvent","componentServers","servers","envId","set","isCompiling","isReady","listen","err","error","initiate","options","listenToDevServers","showInternalUrls","components","getComponentsByUserInput","pattern","devServer","watch","spawnTSServer","checkTypes","CheckTypes","None","preCompile","compile","initiator","CompilationInitiator","Start","catch","msg","message","concat","getProxy","proxyConfigs","map","target","port","ws","flatten","SubscribeToEvents","onStart","handleOnStartCompiling","onDone","results","handleOnDoneCompiling","SubscribeToWebpackEvents","spinnerId","getSpinnerId","text","getSpinnerCompilingMessage","get","exists","multiSpinner","spinners","add","errors","warnings","previewServer","spinner","isActive","hasErrors","getWarningsWithoutIgnored","hasWarnings","url","getSpinnerDoneMessage","undefined","fail","warn","succeed","noneAreCompiling","values","every","x","whenReady","readyPromise","exports","IGNORE_WARNINGS","warning","find","reg","match","verbose","prefix","chalk","cyan","includedEnvs","relatedContexts","stringifyIncludedEnvs","errorsTxt","join","errorsTxtWithTitle","red","warningsTxt","warningsTxtWithTitle","yellow","urlMessage"],"sources":["preview.start-plugin.tsx"],"sourcesContent":["import { flatten } from 'lodash';\nimport { BundlerAspect, BundlerMain, ComponentServer, ComponentServerStartedEvent, ComponentsServerStartedEvent, NewDevServersCreatedEvent } from '@teambit/bundler';\nimport { PubsubMain } from '@teambit/pubsub';\nimport { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';\nimport { Workspace } from '@teambit/workspace';\nimport { SubscribeToEvents } from '@teambit/preview.cli.dev-server-events-listener';\nimport { SubscribeToWebpackEvents } from '@teambit/preview.cli.webpack-events-listener';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { Logger } from '@teambit/logger';\nimport { CheckTypes, WatcherMain } from '@teambit/watcher';\nimport { GraphqlMain } from '@teambit/graphql';\nimport chalk from 'chalk';\n\ntype ServerState = {\n isCompiling?: boolean;\n isReady?: boolean;\n errors?: Error[];\n warnings?: Error[];\n results?: any[];\n isStarted?: boolean;\n isCompilationDone?: boolean;\n isPendingPublish?: boolean;\n};\n\ntype ServerStateMap = Record<string, ServerState>;\n\nexport class PreviewStartPlugin implements StartPlugin {\n previewServers: ComponentServer[] = [];\n serversState: ServerStateMap = {};\n serversMap: Record<string, ComponentServer> = {};\n private pendingServers: Map<string, ComponentServer> = new Map();\n\n constructor(\n private workspace: Workspace,\n private bundler: BundlerMain,\n private ui: UiMain,\n private pubsub: PubsubMain,\n private logger: Logger,\n private watcher: WatcherMain,\n private graphql: GraphqlMain\n ) {\n this.pubsub.sub(BundlerAspect.id, async (event) => {\n if (event.type === NewDevServersCreatedEvent.TYPE) {\n await this.onNewDevServersCreated(event.componentsServers);\n }\n if (event.type === ComponentsServerStartedEvent.TYPE) {\n await this.onComponentServerStarted(event.componentsServer);\n }\n });\n }\n\n async onComponentServerStarted(componentServer: ComponentServer) {\n const startedEnvId = componentServer.context.envRuntime.id;\n this.serversMap[startedEnvId] = componentServer;\n const wasPending = this.pendingServers.has(startedEnvId);\n this.pendingServers.delete(startedEnvId);\n\n this.serversState[startedEnvId] = {\n ...this.serversState[startedEnvId],\n isStarted: true\n };\n\n const index = this.previewServers.findIndex(s => s.context.envRuntime.id === startedEnvId);\n if (index >= 0) {\n this.previewServers[index] = componentServer;\n } else {\n this.previewServers.push(componentServer);\n }\n\n const uiServer = this.ui.getUIServer();\n if (uiServer) {\n uiServer.addComponentServerProxy(componentServer);\n \n if (wasPending) {\n if (this.serversState[startedEnvId]?.isCompilationDone) {\n await this.publishServerStarted(componentServer);\n } else {\n this.serversState[startedEnvId] = {\n ...this.serversState[startedEnvId],\n isPendingPublish: true\n };\n this.logger.console(`Server ${startedEnvId} started but waiting for compilation to complete before publishing event.`);\n }\n }\n }\n }\n\n private async publishServerStarted(server: ComponentServer) {\n await this.graphql.pubsub.publish(ComponentServerStartedEvent, {\n componentServers: server,\n });\n }\n\n async onNewDevServersCreated(servers: ComponentServer[]) {\n for (const server of servers) {\n const envId = server.context.envRuntime.id;\n this.pendingServers.set(envId, server);\n \n this.serversState[envId] = {\n isCompiling: false,\n isReady: false,\n isStarted: false,\n isCompilationDone: false,\n isPendingPublish: false\n };\n \n try {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n server.listen();\n } catch (err) {\n this.logger.error(`failed to start server for ${envId}`, err);\n }\n }\n }\n\n async initiate(options: StartPluginOptions) {\n this.listenToDevServers(options.showInternalUrls);\n const components = await this.workspace.getComponentsByUserInput(!options.pattern, options.pattern);\n // TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.\n const previewServers = await this.bundler.devServer(components);\n previewServers.forEach((server) => {\n const envId = server.context.envRuntime.id;\n this.serversMap[envId] = server;\n \n this.serversState[envId] = {\n isCompiling: false,\n isReady: false,\n isStarted: false,\n isCompilationDone: false,\n isPendingPublish: false\n };\n \n // DON'T add wait! this promise never resolves, so it would stop the start process!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n server.listen();\n });\n this.watcher\n .watch({\n spawnTSServer: true,\n checkTypes: CheckTypes.None,\n preCompile: false,\n compile: true,\n initiator: CompilationInitiator.Start,\n })\n .catch((err) => {\n const msg = `watcher found an error`;\n this.logger.error(msg, err);\n this.logger.console(`${msg}, ${err.message}`);\n });\n this.previewServers = this.previewServers.concat(previewServers);\n }\n\n getProxy(): ProxyEntry[] {\n const proxyConfigs = this.previewServers.map<ProxyEntry[]>((server) => {\n return [\n {\n context: [`/preview/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n },\n {\n context: [`/_hmr/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n ws: true,\n },\n ];\n });\n\n return flatten(proxyConfigs);\n }\n\n // TODO: this should be a part of the devServer\n private listenToDevServers(showInternalUrls?: boolean) {\n // keep state changes immutable!\n SubscribeToEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n // @deprecated\n // for legacy webpack bit report plugin\n SubscribeToWebpackEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n }\n\n private handleOnStartCompiling(id: string) {\n this.serversState[id] = { \n ...this.serversState[id],\n isCompiling: true \n };\n const spinnerId = getSpinnerId(id);\n const text = getSpinnerCompilingMessage(this.serversMap[id] || this.pendingServers.get(id));\n const exists = this.logger.multiSpinner.spinners[spinnerId];\n if (!exists) {\n this.logger.multiSpinner.add(spinnerId, { text });\n }\n }\n\n private handleOnDoneCompiling(id: string, results, showInternalUrls?: boolean) {\n this.serversState[id] = {\n ...this.serversState[id],\n isCompiling: false,\n isReady: true,\n isCompilationDone: true,\n errors: results.errors,\n warnings: results.warnings,\n };\n const previewServer = this.serversMap[id] || this.pendingServers.get(id);\n const spinnerId = getSpinnerId(id);\n const spinner = this.logger.multiSpinner.spinners[spinnerId];\n if (spinner && spinner.isActive()) {\n const errors = results.errors || [];\n const hasErrors = !!errors.length;\n const warnings = getWarningsWithoutIgnored(results.warnings);\n const hasWarnings = !!warnings.length;\n const url = `http://localhost:${previewServer.port}`;\n const text = getSpinnerDoneMessage(this.serversMap[id], errors, warnings, url, undefined, showInternalUrls);\n if (hasErrors) {\n this.logger.multiSpinner.fail(spinnerId, { text });\n } else if (hasWarnings) {\n this.logger.multiSpinner.warn(spinnerId, { text });\n } else {\n this.logger.multiSpinner.succeed(spinnerId, { text });\n }\n }\n\n const noneAreCompiling = Object.values(this.serversState).every((x) => !x.isCompiling);\n if (noneAreCompiling) this.setReady();\n if (this.serversState[id]?.isPendingPublish) {\n const server = this.serversMap[id];\n if (server) {\n this.serversState[id].isPendingPublish = false;\n this.publishServerStarted(server).catch((err) => {\n this.logger.error(`failed to publish server started event for ${server.context.envRuntime.id}`, err);\n });\n }\n }\n }\n\n private setReady: () => void;\n private readyPromise = new Promise<void>((resolve) => (this.setReady = resolve));\n get whenReady(): Promise<void> {\n return this.readyPromise;\n }\n}\n\nfunction getWarningsWithoutIgnored(warnings?: Error[]): Error[] {\n if (!warnings || !warnings.length) return [];\n const IGNORE_WARNINGS = [\n // Webpack 5+ has no facility to disable this warning.\n // System.import is used in @angular/core for deprecated string-form lazy routes\n /System.import\\(\\) is deprecated and will be removed soon/i,\n // We need to include all the files in the compilation because we don't know what people will use in their compositions\n /is part of the TypeScript compilation but it's unused/i,\n // https://github.com/webpack-contrib/source-map-loader/blob/b2de4249c7431dd8432da607e08f0f65e9d64219/src/index.js#L83\n /Failed to parse source map from/,\n ];\n warnings.filter((warning) => !IGNORE_WARNINGS.find((reg) => warning?.message?.match(reg)));\n return warnings;\n}\n\nfunction getSpinnerId(envId: string) {\n return `preview-${envId}`;\n}\n\nfunction getSpinnerCompilingMessage(server: ComponentServer, verbose = false) {\n const prefix = 'COMPILING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = `on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n return `${prefix} ${envId} ${includedEnvs}`;\n}\n\nfunction getSpinnerDoneMessage(\n server: ComponentServer,\n errors: Error[],\n warnings: Error[],\n url: string,\n verbose = false,\n showInternalUrls?: boolean\n) {\n const hasErrors = !!errors.length;\n const hasWarnings = !!warnings.length;\n const prefix = hasErrors ? 'FAILED' : 'RUNNING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = ` on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n const errorsTxt = hasErrors ? errors.map((err) => err.message).join('\\n') : '';\n const errorsTxtWithTitle = hasErrors ? chalk.red(`\\nErrors:\\n${errorsTxt}`) : '';\n const warningsTxt = hasWarnings ? warnings.map((warning) => warning.message).join('\\n') : '';\n const warningsTxtWithTitle = hasWarnings ? chalk.yellow(`\\nWarnings:\\n${warningsTxt}`) : '';\n\n const urlMessage = hasErrors || !showInternalUrls ? '' : `at ${chalk.cyan(url)}`;\n return `${prefix} ${envId}${includedEnvs} ${urlMessage} ${errorsTxtWithTitle} ${warningsTxtWithTitle}`;\n}\n\nfunction stringifyIncludedEnvs(includedEnvs: string[] = [], verbose = false) {\n if (includedEnvs.length < 2) return '';\n if (includedEnvs.length > 2 && !verbose) return ` ${includedEnvs.length} other envs`;\n return includedEnvs.join(', ');\n}"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/preview",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.590",
|
4
4
|
"homepage": "https://bit.cloud/teambit/preview/preview",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.preview",
|
8
8
|
"name": "preview",
|
9
|
-
"version": "1.0.
|
9
|
+
"version": "1.0.590"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"mime": "2.5.2",
|
@@ -31,36 +31,36 @@
|
|
31
31
|
"@teambit/bit-error": "0.0.404",
|
32
32
|
"@teambit/preview.cli.dev-server-events-listener": "0.0.1",
|
33
33
|
"@teambit/react.webpack.react-webpack": "1.0.42",
|
34
|
-
"@teambit/express": "0.0.
|
35
|
-
"@teambit/logger": "0.0.
|
34
|
+
"@teambit/express": "0.0.1266",
|
35
|
+
"@teambit/logger": "0.0.1260",
|
36
36
|
"@teambit/ui-foundation.ui.pages.static-error": "0.0.106",
|
37
|
-
"@teambit/builder": "1.0.
|
38
|
-
"@teambit/bundler": "1.0.
|
39
|
-
"@teambit/component": "1.0.
|
37
|
+
"@teambit/builder": "1.0.590",
|
38
|
+
"@teambit/bundler": "1.0.590",
|
39
|
+
"@teambit/component": "1.0.590",
|
40
40
|
"@teambit/preview.ui.component-preview": "1.0.21",
|
41
|
-
"@teambit/aspect-loader": "1.0.
|
42
|
-
"@teambit/cli": "0.0.
|
43
|
-
"@teambit/dependency-resolver": "1.0.
|
44
|
-
"@teambit/envs": "1.0.
|
41
|
+
"@teambit/aspect-loader": "1.0.590",
|
42
|
+
"@teambit/cli": "0.0.1167",
|
43
|
+
"@teambit/dependency-resolver": "1.0.590",
|
44
|
+
"@teambit/envs": "1.0.590",
|
45
45
|
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.500",
|
46
46
|
"@teambit/legacy.constants": "0.0.11",
|
47
47
|
"@teambit/toolbox.crypto.sha1": "0.0.7",
|
48
|
-
"@teambit/ui": "1.0.
|
49
|
-
"@teambit/isolator": "1.0.
|
48
|
+
"@teambit/ui": "1.0.590",
|
49
|
+
"@teambit/isolator": "1.0.590",
|
50
50
|
"@teambit/harmony.modules.harmony-root-generator": "0.0.16",
|
51
51
|
"@teambit/component.sources": "0.0.99",
|
52
52
|
"@teambit/toolbox.path.path": "0.0.8",
|
53
|
-
"@teambit/cache": "0.0.
|
54
|
-
"@teambit/graphql": "1.0.
|
53
|
+
"@teambit/cache": "0.0.1260",
|
54
|
+
"@teambit/graphql": "1.0.590",
|
55
55
|
"@teambit/harmony.modules.feature-toggle": "0.0.19",
|
56
|
-
"@teambit/pkg": "1.0.
|
57
|
-
"@teambit/pubsub": "1.0.
|
58
|
-
"@teambit/scope": "1.0.
|
59
|
-
"@teambit/watcher": "1.0.
|
60
|
-
"@teambit/workspace": "1.0.
|
61
|
-
"@teambit/compiler": "1.0.
|
56
|
+
"@teambit/pkg": "1.0.590",
|
57
|
+
"@teambit/pubsub": "1.0.590",
|
58
|
+
"@teambit/scope": "1.0.590",
|
59
|
+
"@teambit/watcher": "1.0.590",
|
60
|
+
"@teambit/workspace": "1.0.590",
|
61
|
+
"@teambit/compiler": "1.0.590",
|
62
62
|
"@teambit/preview.cli.webpack-events-listener": "0.0.177",
|
63
|
-
"@teambit/webpack": "1.0.
|
63
|
+
"@teambit/webpack": "1.0.590"
|
64
64
|
},
|
65
65
|
"devDependencies": {
|
66
66
|
"@types/mime": "2.0.3",
|
package/preview.start-plugin.tsx
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { flatten } from 'lodash';
|
2
|
-
import { BundlerMain, ComponentServer } from '@teambit/bundler';
|
2
|
+
import { BundlerAspect, BundlerMain, ComponentServer, ComponentServerStartedEvent, ComponentsServerStartedEvent, NewDevServersCreatedEvent } from '@teambit/bundler';
|
3
3
|
import { PubsubMain } from '@teambit/pubsub';
|
4
4
|
import { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';
|
5
5
|
import { Workspace } from '@teambit/workspace';
|
@@ -8,6 +8,7 @@ import { SubscribeToWebpackEvents } from '@teambit/preview.cli.webpack-events-li
|
|
8
8
|
import { CompilationInitiator } from '@teambit/compiler';
|
9
9
|
import { Logger } from '@teambit/logger';
|
10
10
|
import { CheckTypes, WatcherMain } from '@teambit/watcher';
|
11
|
+
import { GraphqlMain } from '@teambit/graphql';
|
11
12
|
import chalk from 'chalk';
|
12
13
|
|
13
14
|
type ServerState = {
|
@@ -16,32 +17,119 @@ type ServerState = {
|
|
16
17
|
errors?: Error[];
|
17
18
|
warnings?: Error[];
|
18
19
|
results?: any[];
|
20
|
+
isStarted?: boolean;
|
21
|
+
isCompilationDone?: boolean;
|
22
|
+
isPendingPublish?: boolean;
|
19
23
|
};
|
20
24
|
|
21
25
|
type ServerStateMap = Record<string, ServerState>;
|
22
26
|
|
23
27
|
export class PreviewStartPlugin implements StartPlugin {
|
28
|
+
previewServers: ComponentServer[] = [];
|
29
|
+
serversState: ServerStateMap = {};
|
30
|
+
serversMap: Record<string, ComponentServer> = {};
|
31
|
+
private pendingServers: Map<string, ComponentServer> = new Map();
|
32
|
+
|
24
33
|
constructor(
|
25
34
|
private workspace: Workspace,
|
26
35
|
private bundler: BundlerMain,
|
27
36
|
private ui: UiMain,
|
28
37
|
private pubsub: PubsubMain,
|
29
38
|
private logger: Logger,
|
30
|
-
private watcher: WatcherMain
|
31
|
-
|
39
|
+
private watcher: WatcherMain,
|
40
|
+
private graphql: GraphqlMain
|
41
|
+
) {
|
42
|
+
this.pubsub.sub(BundlerAspect.id, async (event) => {
|
43
|
+
if (event.type === NewDevServersCreatedEvent.TYPE) {
|
44
|
+
await this.onNewDevServersCreated(event.componentsServers);
|
45
|
+
}
|
46
|
+
if (event.type === ComponentsServerStartedEvent.TYPE) {
|
47
|
+
await this.onComponentServerStarted(event.componentsServer);
|
48
|
+
}
|
49
|
+
});
|
50
|
+
}
|
32
51
|
|
33
|
-
|
34
|
-
|
35
|
-
|
52
|
+
async onComponentServerStarted(componentServer: ComponentServer) {
|
53
|
+
const startedEnvId = componentServer.context.envRuntime.id;
|
54
|
+
this.serversMap[startedEnvId] = componentServer;
|
55
|
+
const wasPending = this.pendingServers.has(startedEnvId);
|
56
|
+
this.pendingServers.delete(startedEnvId);
|
57
|
+
|
58
|
+
this.serversState[startedEnvId] = {
|
59
|
+
...this.serversState[startedEnvId],
|
60
|
+
isStarted: true
|
61
|
+
};
|
62
|
+
|
63
|
+
const index = this.previewServers.findIndex(s => s.context.envRuntime.id === startedEnvId);
|
64
|
+
if (index >= 0) {
|
65
|
+
this.previewServers[index] = componentServer;
|
66
|
+
} else {
|
67
|
+
this.previewServers.push(componentServer);
|
68
|
+
}
|
69
|
+
|
70
|
+
const uiServer = this.ui.getUIServer();
|
71
|
+
if (uiServer) {
|
72
|
+
uiServer.addComponentServerProxy(componentServer);
|
73
|
+
|
74
|
+
if (wasPending) {
|
75
|
+
if (this.serversState[startedEnvId]?.isCompilationDone) {
|
76
|
+
await this.publishServerStarted(componentServer);
|
77
|
+
} else {
|
78
|
+
this.serversState[startedEnvId] = {
|
79
|
+
...this.serversState[startedEnvId],
|
80
|
+
isPendingPublish: true
|
81
|
+
};
|
82
|
+
this.logger.console(`Server ${startedEnvId} started but waiting for compilation to complete before publishing event.`);
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
private async publishServerStarted(server: ComponentServer) {
|
89
|
+
await this.graphql.pubsub.publish(ComponentServerStartedEvent, {
|
90
|
+
componentServers: server,
|
91
|
+
});
|
92
|
+
}
|
93
|
+
|
94
|
+
async onNewDevServersCreated(servers: ComponentServer[]) {
|
95
|
+
for (const server of servers) {
|
96
|
+
const envId = server.context.envRuntime.id;
|
97
|
+
this.pendingServers.set(envId, server);
|
98
|
+
|
99
|
+
this.serversState[envId] = {
|
100
|
+
isCompiling: false,
|
101
|
+
isReady: false,
|
102
|
+
isStarted: false,
|
103
|
+
isCompilationDone: false,
|
104
|
+
isPendingPublish: false
|
105
|
+
};
|
106
|
+
|
107
|
+
try {
|
108
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
109
|
+
server.listen();
|
110
|
+
} catch (err) {
|
111
|
+
this.logger.error(`failed to start server for ${envId}`, err);
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
36
115
|
|
37
116
|
async initiate(options: StartPluginOptions) {
|
38
117
|
this.listenToDevServers(options.showInternalUrls);
|
39
|
-
|
40
118
|
const components = await this.workspace.getComponentsByUserInput(!options.pattern, options.pattern);
|
41
119
|
// TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.
|
42
120
|
const previewServers = await this.bundler.devServer(components);
|
43
121
|
previewServers.forEach((server) => {
|
44
|
-
|
122
|
+
const envId = server.context.envRuntime.id;
|
123
|
+
this.serversMap[envId] = server;
|
124
|
+
|
125
|
+
this.serversState[envId] = {
|
126
|
+
isCompiling: false,
|
127
|
+
isReady: false,
|
128
|
+
isStarted: false,
|
129
|
+
isCompilationDone: false,
|
130
|
+
isPendingPublish: false
|
131
|
+
};
|
132
|
+
|
45
133
|
// DON'T add wait! this promise never resolves, so it would stop the start process!
|
46
134
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
47
135
|
server.listen();
|
@@ -104,9 +192,12 @@ export class PreviewStartPlugin implements StartPlugin {
|
|
104
192
|
}
|
105
193
|
|
106
194
|
private handleOnStartCompiling(id: string) {
|
107
|
-
this.serversState[id] = {
|
195
|
+
this.serversState[id] = {
|
196
|
+
...this.serversState[id],
|
197
|
+
isCompiling: true
|
198
|
+
};
|
108
199
|
const spinnerId = getSpinnerId(id);
|
109
|
-
const text = getSpinnerCompilingMessage(this.serversMap[id]);
|
200
|
+
const text = getSpinnerCompilingMessage(this.serversMap[id] || this.pendingServers.get(id));
|
110
201
|
const exists = this.logger.multiSpinner.spinners[spinnerId];
|
111
202
|
if (!exists) {
|
112
203
|
this.logger.multiSpinner.add(spinnerId, { text });
|
@@ -115,12 +206,14 @@ export class PreviewStartPlugin implements StartPlugin {
|
|
115
206
|
|
116
207
|
private handleOnDoneCompiling(id: string, results, showInternalUrls?: boolean) {
|
117
208
|
this.serversState[id] = {
|
209
|
+
...this.serversState[id],
|
118
210
|
isCompiling: false,
|
119
211
|
isReady: true,
|
212
|
+
isCompilationDone: true,
|
120
213
|
errors: results.errors,
|
121
214
|
warnings: results.warnings,
|
122
215
|
};
|
123
|
-
const previewServer = this.serversMap[id];
|
216
|
+
const previewServer = this.serversMap[id] || this.pendingServers.get(id);
|
124
217
|
const spinnerId = getSpinnerId(id);
|
125
218
|
const spinner = this.logger.multiSpinner.spinners[spinnerId];
|
126
219
|
if (spinner && spinner.isActive()) {
|
@@ -141,6 +234,15 @@ export class PreviewStartPlugin implements StartPlugin {
|
|
141
234
|
|
142
235
|
const noneAreCompiling = Object.values(this.serversState).every((x) => !x.isCompiling);
|
143
236
|
if (noneAreCompiling) this.setReady();
|
237
|
+
if (this.serversState[id]?.isPendingPublish) {
|
238
|
+
const server = this.serversMap[id];
|
239
|
+
if (server) {
|
240
|
+
this.serversState[id].isPendingPublish = false;
|
241
|
+
this.publishServerStarted(server).catch((err) => {
|
242
|
+
this.logger.error(`failed to publish server started event for ${server.context.envRuntime.id}`, err);
|
243
|
+
});
|
244
|
+
}
|
245
|
+
}
|
144
246
|
}
|
145
247
|
|
146
248
|
private setReady: () => void;
|
@@ -208,4 +310,4 @@ function stringifyIncludedEnvs(includedEnvs: string[] = [], verbose = false) {
|
|
208
310
|
if (includedEnvs.length < 2) return '';
|
209
311
|
if (includedEnvs.length > 2 && !verbose) return ` ${includedEnvs.length} other envs`;
|
210
312
|
return includedEnvs.join(', ');
|
211
|
-
}
|
313
|
+
}
|