@teambit/preview 0.0.531 → 0.0.535

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.
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "PreviewNotFound", {
6
+ Object.defineProperty(exports, "BundlingStrategyNotFound", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _previewNotFound().PreviewNotFound;
9
+ return _bundlingStrategyNotFound().BundlingStrategyNotFound;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "PreviewArtifactNotFound", {
@@ -15,10 +15,10 @@ Object.defineProperty(exports, "PreviewArtifactNotFound", {
15
15
  return _previewArtifactNotFound().PreviewArtifactNotFound;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "BundlingStrategyNotFound", {
18
+ Object.defineProperty(exports, "PreviewNotFound", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _bundlingStrategyNotFound().BundlingStrategyNotFound;
21
+ return _previewNotFound().PreviewNotFound;
22
22
  }
23
23
  });
24
24
 
package/dist/index.js CHANGED
@@ -8,16 +8,16 @@ var _exportNames = {
8
8
  PreviewRuntime: true,
9
9
  PreviewDefinition: true
10
10
  };
11
- Object.defineProperty(exports, "default", {
11
+ Object.defineProperty(exports, "PreviewAspect", {
12
12
  enumerable: true,
13
13
  get: function () {
14
14
  return _preview().PreviewAspect;
15
15
  }
16
16
  });
17
- Object.defineProperty(exports, "PreviewAspect", {
17
+ Object.defineProperty(exports, "PreviewDefinition", {
18
18
  enumerable: true,
19
19
  get: function () {
20
- return _preview().PreviewAspect;
20
+ return _previewDefinition().PreviewDefinition;
21
21
  }
22
22
  });
23
23
  Object.defineProperty(exports, "PreviewRuntime", {
@@ -26,10 +26,10 @@ Object.defineProperty(exports, "PreviewRuntime", {
26
26
  return _preview().PreviewRuntime;
27
27
  }
28
28
  });
29
- Object.defineProperty(exports, "PreviewDefinition", {
29
+ Object.defineProperty(exports, "default", {
30
30
  enumerable: true,
31
31
  get: function () {
32
- return _previewDefinition().PreviewDefinition;
32
+ return _preview().PreviewAspect;
33
33
  }
34
34
  });
35
35
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.PreviewAspect = exports.PreviewRuntime = void 0;
6
+ exports.default = exports.PreviewRuntime = exports.PreviewAspect = void 0;
7
7
 
8
8
  function _harmony() {
9
9
  const data = require("@teambit/harmony");
@@ -494,7 +494,7 @@ class PreviewMain {
494
494
  static async provider([bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain], config, [previewSlot, bundlingStrategySlot], harmony) {
495
495
  const logger = loggerMain.createLogger(_preview().PreviewAspect.id);
496
496
  const preview = new PreviewMain(harmony, previewSlot, uiMain, envs, pkg, aspectLoader, config, bundlingStrategySlot, builder, workspace, logger);
497
- if (workspace) uiMain.registerStartPlugin(new (_preview4().PreviewStartPlugin)(workspace, bundler, uiMain, pubsub));
497
+ if (workspace) uiMain.registerStartPlugin(new (_preview4().PreviewStartPlugin)(workspace, bundler, uiMain, pubsub, logger));
498
498
  componentExtension.registerRoute([new (_preview2().PreviewRoute)(preview, logger)]);
499
499
  bundler.registerTarget([{
500
500
  entry: preview.getPreviewTarget.bind(preview)
@@ -1 +1 @@
1
- {"version":3,"sources":["preview.main.runtime.tsx"],"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getPreview","artifacts","getArtifactsVinylByExtension","length","undefined","PreviewArtifact","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","contents","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","paths","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","compilerInstance","getCompiler","withPaths","files","modulePath","getPreviewComponentRootPath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","recursive","link","all","getUi","Error","name","uiRoot","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","filtered","filter","aspect","getId","isCoreAspect","includes","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getBundlingStrategy","defaultStrategies","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","registerTarget","entry","bind","disabled","registerBuildTasks","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","addRuntime"],"mappings":"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","sourcesContent":["import { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';\nimport { EnvsAspect, EnvsMain, ExecutionContext } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectDefinition, AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink } 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 } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\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 PreviewConfig = {\n bundlingStrategy: string;\n disabled: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\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 envs: EnvsMain,\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\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtension(component, PreviewAspect.id);\n if (!artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\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 /**\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(prefix: string, moduleMap: ComponentMap<string[]>, defaultModule: string | undefined, dirName: string) {\n const contents = generateLink(prefix, moduleMap, defaultModule);\n const hash = objectHash(contents);\n const targetPath = join(dirName, `__${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.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n const compilerInstance = environment.getCompiler?.();\n const withPaths = map.map<string[]>((files, component) => {\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getModulePath(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\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, templatePath, dirPath);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }) {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n const [name, uiRoot] = ui;\n const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\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(aspects: AspectDefinition[], context: { components: Component[] }) {\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 this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);\n });\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [new EnvBundlingStrategy(this), new ComponentBundlingStrategy()];\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 env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\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\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\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 /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const strategyName = this.config.bundlingStrategy;\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 EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n ];\n\n static defaultConfig = {\n bundlingStrategy: 'env',\n disabled: false,\n };\n\n static async provider(\n [bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub));\n\n componentExtension.registerRoute([new PreviewRoute(preview, logger)]);\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled) builder.registerBuildTasks([new PreviewTask(bundler, preview)]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"]}
1
+ {"version":3,"sources":["preview.main.runtime.tsx"],"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getPreview","artifacts","getArtifactsVinylByExtension","length","undefined","PreviewArtifact","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","contents","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","paths","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","compilerInstance","getCompiler","withPaths","files","modulePath","getPreviewComponentRootPath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","recursive","link","all","getUi","Error","name","uiRoot","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","filtered","filter","aspect","getId","isCoreAspect","includes","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getBundlingStrategy","defaultStrategies","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","registerTarget","entry","bind","disabled","registerBuildTasks","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","addRuntime"],"mappings":"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","sourcesContent":["import { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';\nimport { EnvsAspect, EnvsMain, ExecutionContext } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectDefinition, AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink } 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 } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\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 PreviewConfig = {\n bundlingStrategy: string;\n disabled: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\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 envs: EnvsMain,\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\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtension(component, PreviewAspect.id);\n if (!artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\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 /**\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(prefix: string, moduleMap: ComponentMap<string[]>, defaultModule: string | undefined, dirName: string) {\n const contents = generateLink(prefix, moduleMap, defaultModule);\n const hash = objectHash(contents);\n const targetPath = join(dirName, `__${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.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n const compilerInstance = environment.getCompiler?.();\n const withPaths = map.map<string[]>((files, component) => {\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getModulePath(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\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, templatePath, dirPath);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }) {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n const [name, uiRoot] = ui;\n const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\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(aspects: AspectDefinition[], context: { components: Component[] }) {\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 this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);\n });\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [new EnvBundlingStrategy(this), new ComponentBundlingStrategy()];\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 env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\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\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\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 /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const strategyName = this.config.bundlingStrategy;\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 EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n ];\n\n static defaultConfig = {\n bundlingStrategy: 'env',\n disabled: false,\n };\n\n static async provider(\n [bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));\n\n componentExtension.registerRoute([new PreviewRoute(preview, logger)]);\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled) builder.registerBuildTasks([new PreviewTask(bundler, preview)]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"]}
@@ -13,8 +13,8 @@ require("core-js/modules/web.url.js");
13
13
  Object.defineProperty(exports, "__esModule", {
14
14
  value: true
15
15
  });
16
- exports.linkModules = linkModules;
17
16
  exports.PreviewPreview = void 0;
17
+ exports.linkModules = linkModules;
18
18
 
19
19
  function _defineProperty2() {
20
20
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -2,12 +2,14 @@ import { BundlerMain, ComponentServer } from '@teambit/bundler';
2
2
  import { PubsubMain } from '@teambit/pubsub';
3
3
  import { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';
4
4
  import { Workspace } from '@teambit/workspace';
5
+ import { Logger } from '@teambit/logger';
5
6
  export declare class PreviewStartPlugin implements StartPlugin {
6
7
  private workspace;
7
8
  private bundler;
8
9
  private ui;
9
10
  private pubsub;
10
- constructor(workspace: Workspace, bundler: BundlerMain, ui: UiMain, pubsub: PubsubMain);
11
+ private logger;
12
+ constructor(workspace: Workspace, bundler: BundlerMain, ui: UiMain, pubsub: PubsubMain, logger: Logger);
11
13
  previewServers: ComponentServer[];
12
14
  initiate(options: StartPluginOptions): Promise<void>;
13
15
  getProxy(): ProxyEntry[];
@@ -51,6 +51,16 @@ function _previewCli() {
51
51
  return data;
52
52
  }
53
53
 
54
+ function _workspace() {
55
+ const data = require("@teambit/workspace");
56
+
57
+ _workspace = function () {
58
+ return data;
59
+ };
60
+
61
+ return data;
62
+ }
63
+
54
64
  function _previewCli2() {
55
65
  const data = require("@teambit/preview.cli.webpack-events-listener");
56
66
 
@@ -80,11 +90,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
80
90
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
81
91
 
82
92
  class PreviewStartPlugin {
83
- constructor(workspace, bundler, ui, pubsub) {
93
+ constructor(workspace, bundler, ui, pubsub, logger) {
84
94
  this.workspace = workspace;
85
95
  this.bundler = bundler;
86
96
  this.ui = ui;
87
97
  this.pubsub = pubsub;
98
+ this.logger = logger;
88
99
  (0, _defineProperty2().default)(this, "previewServers", []);
89
100
  (0, _defineProperty2().default)(this, "setReady", void 0);
90
101
  (0, _defineProperty2().default)(this, "readyPromise", new Promise(resolve => this.setReady = resolve));
@@ -115,11 +126,11 @@ class PreviewStartPlugin {
115
126
  const previewServers = await this.bundler.devServer(components); // eslint-disable-next-line @typescript-eslint/no-misused-promises
116
127
 
117
128
  previewServers.forEach(server => server.listen()); // DON'T add wait! this promise never resolve so it's stop all the start process!
118
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
119
129
 
120
130
  this.workspace.watcher.watchAll({
121
- checkTypes: true,
122
- skipPreCompilation: true,
131
+ spawnTSServer: true,
132
+ checkTypes: _workspace().CheckTypes.None,
133
+ preCompile: false,
123
134
  msgs: {
124
135
  onAll: () => {},
125
136
  onStart: () => {},
@@ -130,6 +141,10 @@ class PreviewStartPlugin {
130
141
  onUnlink: () => {}
131
142
  },
132
143
  initiator: _compiler().CompilationInitiator.Start
144
+ }).catch(err => {
145
+ const msg = `watcher found an error`;
146
+ this.logger.error(msg, err);
147
+ this.logger.console(`${msg}, ${err.message}`);
133
148
  });
134
149
  this.previewServers = this.previewServers.concat(previewServers);
135
150
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["preview.start-plugin.tsx"],"names":["PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","Promise","resolve","setReady","servers","initialState","setServers","updateServers","noneAreCompiling","Object","values","every","x","compiling","previewServers","initiate","options","listenToDevServers","components","byPattern","pattern","devServer","forEach","server","listen","watcher","watchAll","checkTypes","skipPreCompilation","msgs","onAll","onStart","onReady","onChange","onAdd","onError","onUnlink","initiator","CompilationInitiator","Start","concat","getProxy","proxyConfigs","map","context","envRuntime","id","target","port","ws","state","onDone","results","whenReady","readyPromise"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;;AAKO,MAAMA,kBAAN,CAAgD;AACrDC,EAAAA,WAAW,CACDC,SADC,EAEDC,OAFC,EAGDC,EAHC,EAIDC,MAJC,EAKT;AAAA,SAJQH,SAIR,GAJQA,SAIR;AAAA,SAHQC,OAGR,GAHQA,OAGR;AAAA,SAFQC,EAER,GAFQA,EAER;AAAA,SADQC,MACR,GADQA,MACR;AAAA,4DAEkC,EAFlC;AAAA;AAAA,0DAqEqB,IAAIC,OAAJ,CAAmBC,OAAD,IAAc,KAAKC,QAAL,GAAgBD,OAAhD,CArErB;AAAA,0DA0EyC,EA1EzC;AAAA,2DA4EsCE,OAAD,IAAa;AAClD,WAAKC,YAAL,GAAoB,OAAOD,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAAC,KAAKC,YAAN,CAAvC,GAA6DD,OAAjF;AACA,aAAOA,OAAP;AACD,KA/EC;AAAA,oDAiFO,MAAM;AACb,YAAM,CAACA,OAAD,EAAUE,UAAV,IAAwB,uBAA6B,KAAKD,YAAlC,CAA9B;AACA,WAAKE,aAAL,GAAqBD,UAArB;AACA,WAAKD,YAAL,GAAoB,EAApB;AAEA,8BAAU,MAAM;AACd,cAAMG,gBAAgB,GAAGC,MAAM,CAACC,MAAP,CAAcN,OAAd,EAAuBO,KAAvB,CAA8BC,CAAD,IAAO,CAACA,CAAC,CAACC,SAAvC,CAAzB;AACA,YAAIL,gBAAJ,EAAsB,KAAKL,QAAL;AACvB,OAHD,EAGG,CAACC,OAAD,CAHH;AAKA,0BAAO,+BAAC,iCAAD;AAAqB,QAAA,cAAc,EAAE,KAAKU,cAA1C;AAA0D,QAAA,WAAW,EAAEV;AAAvE,QAAP;AACD,KA5FC;AAAE;;AAIU,QAARW,QAAQ,CAACC,OAAD,EAA8B;AAC1C,SAAKC,kBAAL;AAEA,UAAMC,UAAU,GAAG,MAAM,KAAKrB,SAAL,CAAesB,SAAf,CAAyBH,OAAO,CAACI,OAAR,IAAmB,EAA5C,CAAzB,CAH0C,CAI1C;;AACA,UAAMN,cAAc,GAAG,MAAM,KAAKhB,OAAL,CAAauB,SAAb,CAAuBH,UAAvB,CAA7B,CAL0C,CAM1C;;AACAJ,IAAAA,cAAc,CAACQ,OAAf,CAAwBC,MAAD,IAAYA,MAAM,CAACC,MAAP,EAAnC,EAP0C,CAQ1C;AACA;;AACA,SAAK3B,SAAL,CAAe4B,OAAf,CAAuBC,QAAvB,CAAgC;AAC9BC,MAAAA,UAAU,EAAE,IADkB;AAE9BC,MAAAA,kBAAkB,EAAE,IAFU;AAG9BC,MAAAA,IAAI,EAAE;AACJC,QAAAA,KAAK,EAAE,MAAM,CAAE,CADX;AAEJC,QAAAA,OAAO,EAAE,MAAM,CAAE,CAFb;AAGJC,QAAAA,OAAO,EAAE,MAAM,CAAE,CAHb;AAIJC,QAAAA,QAAQ,EAAE,MAAM,CAAE,CAJd;AAKJC,QAAAA,KAAK,EAAE,MAAM,CAAE,CALX;AAMJC,QAAAA,OAAO,EAAE,MAAM,CAAE,CANb;AAOJC,QAAAA,QAAQ,EAAE,MAAM,CAAE;AAPd,OAHwB;AAY9BC,MAAAA,SAAS,EAAEC,iCAAqBC;AAZF,KAAhC;AAcA,SAAKzB,cAAL,GAAsB,KAAKA,cAAL,CAAoB0B,MAApB,CAA2B1B,cAA3B,CAAtB;AACD;;AAED2B,EAAAA,QAAQ,GAAiB;AACvB,UAAMC,YAAY,GAAG,KAAK5B,cAAL,CAAoB6B,GAApB,CAAuCpB,MAAD,IAAY;AACrE,aAAO,CACL;AACEqB,QAAAA,OAAO,EAAE,CAAE,YAAWrB,MAAM,CAACqB,OAAP,CAAeC,UAAf,CAA0BC,EAAG,EAA1C,CADX;AAEEC,QAAAA,MAAM,EAAG,oBAAmBxB,MAAM,CAACyB,IAAK;AAF1C,OADK,EAKL;AACEJ,QAAAA,OAAO,EAAE,CAAE,SAAQrB,MAAM,CAACqB,OAAP,CAAeC,UAAf,CAA0BC,EAAG,EAAvC,CADX;AAEEC,QAAAA,MAAM,EAAG,oBAAmBxB,MAAM,CAACyB,IAAK,EAF1C;AAGEC,QAAAA,EAAE,EAAE;AAHN,OALK,CAAP;AAWD,KAZoB,CAArB;AAcA,WAAO,uBAAQP,YAAR,CAAP;AACD,GArDoD,CAuDrD;;;AACQzB,EAAAA,kBAAkB,GAAG;AAC3B;AACA,iDAAyB,KAAKjB,MAA9B,EAAsC;AACpC+B,MAAAA,OAAO,EAAGe,EAAD,IAAQ;AACf,aAAKvC,aAAL,CAAoB2C,KAAD,oCACdA,KADc;AAEjB,WAACJ,EAAD,GAAM;AAAEjC,YAAAA,SAAS,EAAE;AAAb;AAFW,UAAnB;AAID,OANmC;AAOpCsC,MAAAA,MAAM,EAAE,CAACL,EAAD,EAAKM,OAAL,KAAiB;AACvB,aAAK7C,aAAL,CAAoB2C,KAAD,oCACdA,KADc;AAEjB,WAACJ,EAAD,GAAMM;AAFW,UAAnB;AAID;AAZmC,KAAtC;AAcD;;AAIY,MAATC,SAAS,GAAkB;AAC7B,WAAO,KAAKC,YAAZ;AACD;;AA9EoD","sourcesContent":["import React, { useState, useEffect, Dispatch, SetStateAction } from 'react';\nimport { flatten } from 'lodash';\nimport { PreviewServerStatus } from '@teambit/preview.cli.preview-server-status';\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 { SubscribeToWebpackEvents, CompilationResult } from '@teambit/preview.cli.webpack-events-listener';\nimport { CompilationInitiator } from '@teambit/compiler';\n\ntype CompilationServers = Record<string, CompilationResult>;\ntype ServersSetter = Dispatch<SetStateAction<CompilationServers>>;\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 ) {}\n\n previewServers: ComponentServer[] = [];\n\n async initiate(options: StartPluginOptions) {\n this.listenToDevServers();\n\n const components = await this.workspace.byPattern(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 // eslint-disable-next-line @typescript-eslint/no-misused-promises\n previewServers.forEach((server) => server.listen());\n // DON'T add wait! this promise never resolve so it's stop all the start process!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.workspace.watcher.watchAll({\n checkTypes: true,\n skipPreCompilation: true,\n msgs: {\n onAll: () => {},\n onStart: () => {},\n onReady: () => {},\n onChange: () => {},\n onAdd: () => {},\n onError: () => {},\n onUnlink: () => {},\n },\n initiator: CompilationInitiator.Start,\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() {\n // keep state changes immutable!\n SubscribeToWebpackEvents(this.pubsub, {\n onStart: (id) => {\n this.updateServers((state) => ({\n ...state,\n [id]: { compiling: true },\n }));\n },\n onDone: (id, results) => {\n this.updateServers((state) => ({\n ...state,\n [id]: results,\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 private initialState: CompilationServers = {};\n // implements react-like setter (value or updater)\n private updateServers: ServersSetter = (servers) => {\n this.initialState = typeof servers === 'function' ? servers(this.initialState) : servers;\n return servers;\n };\n\n render = () => {\n const [servers, setServers] = useState<CompilationServers>(this.initialState);\n this.updateServers = setServers;\n this.initialState = {};\n\n useEffect(() => {\n const noneAreCompiling = Object.values(servers).every((x) => !x.compiling);\n if (noneAreCompiling) this.setReady();\n }, [servers]);\n\n return <PreviewServerStatus previewServers={this.previewServers} serverStats={servers} />;\n };\n}\n"]}
1
+ {"version":3,"sources":["preview.start-plugin.tsx"],"names":["PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","logger","Promise","resolve","setReady","servers","initialState","setServers","updateServers","noneAreCompiling","Object","values","every","x","compiling","previewServers","initiate","options","listenToDevServers","components","byPattern","pattern","devServer","forEach","server","listen","watcher","watchAll","spawnTSServer","checkTypes","CheckTypes","None","preCompile","msgs","onAll","onStart","onReady","onChange","onAdd","onError","onUnlink","initiator","CompilationInitiator","Start","catch","err","msg","error","console","message","concat","getProxy","proxyConfigs","map","context","envRuntime","id","target","port","ws","state","onDone","results","whenReady","readyPromise"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, Dispatch, SetStateAction } from 'react';\nimport { flatten } from 'lodash';\nimport { PreviewServerStatus } from '@teambit/preview.cli.preview-server-status';\nimport { BundlerMain, ComponentServer } from '@teambit/bundler';\nimport { PubsubMain } from '@teambit/pubsub';\nimport { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';\nimport { Workspace, CheckTypes } from '@teambit/workspace';\nimport { SubscribeToWebpackEvents, CompilationResult } from '@teambit/preview.cli.webpack-events-listener';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { Logger } from '@teambit/logger';\n\ntype CompilationServers = Record<string, CompilationResult>;\ntype ServersSetter = Dispatch<SetStateAction<CompilationServers>>;\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 ) {}\n\n previewServers: ComponentServer[] = [];\n\n async initiate(options: StartPluginOptions) {\n this.listenToDevServers();\n\n const components = await this.workspace.byPattern(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 // eslint-disable-next-line @typescript-eslint/no-misused-promises\n previewServers.forEach((server) => server.listen());\n // DON'T add wait! this promise never resolve so it's stop all the start process!\n this.workspace.watcher\n .watchAll({\n spawnTSServer: true,\n checkTypes: CheckTypes.None,\n preCompile: false,\n msgs: {\n onAll: () => {},\n onStart: () => {},\n onReady: () => {},\n onChange: () => {},\n onAdd: () => {},\n onError: () => {},\n onUnlink: () => {},\n },\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() {\n // keep state changes immutable!\n SubscribeToWebpackEvents(this.pubsub, {\n onStart: (id) => {\n this.updateServers((state) => ({\n ...state,\n [id]: { compiling: true },\n }));\n },\n onDone: (id, results) => {\n this.updateServers((state) => ({\n ...state,\n [id]: results,\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 private initialState: CompilationServers = {};\n // implements react-like setter (value or updater)\n private updateServers: ServersSetter = (servers) => {\n this.initialState = typeof servers === 'function' ? servers(this.initialState) : servers;\n return servers;\n };\n\n render = () => {\n const [servers, setServers] = useState<CompilationServers>(this.initialState);\n this.updateServers = setServers;\n this.initialState = {};\n\n useEffect(() => {\n const noneAreCompiling = Object.values(servers).every((x) => !x.compiling);\n if (noneAreCompiling) this.setReady();\n }, [servers]);\n\n return <PreviewServerStatus previewServers={this.previewServers} serverStats={servers} />;\n };\n}\n"]}
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "EnvBundlingStrategy", {
6
+ Object.defineProperty(exports, "ComponentBundlingStrategy", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _envStrategy().EnvBundlingStrategy;
9
+ return _componentStrategy().ComponentBundlingStrategy;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "ComponentBundlingStrategy", {
12
+ Object.defineProperty(exports, "EnvBundlingStrategy", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _componentStrategy().ComponentBundlingStrategy;
15
+ return _envStrategy().EnvBundlingStrategy;
16
16
  }
17
17
  });
18
18
 
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/preview",
3
- "version": "0.0.531",
3
+ "version": "0.0.535",
4
4
  "homepage": "https://bit.dev/teambit/preview/preview",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.preview",
8
8
  "name": "preview",
9
- "version": "0.0.531"
9
+ "version": "0.0.535"
10
10
  },
11
11
  "dependencies": {
12
12
  "fs-extra": "10.0.0",
@@ -17,25 +17,25 @@
17
17
  "mime": "2.5.2",
18
18
  "@babel/runtime": "7.12.18",
19
19
  "core-js": "^3.0.0",
20
- "@teambit/builder": "0.0.531",
21
- "@teambit/bundler": "0.0.531",
22
- "@teambit/component": "0.0.531",
23
- "@teambit/envs": "0.0.531",
24
- "@teambit/toolbox.path.to-windows-compatible-path": "0.0.446",
25
- "@teambit/aspect-loader": "0.0.531",
20
+ "@teambit/builder": "0.0.535",
21
+ "@teambit/bundler": "0.0.535",
22
+ "@teambit/component": "0.0.535",
23
+ "@teambit/envs": "0.0.535",
24
+ "@teambit/toolbox.path.to-windows-compatible-path": "0.0.448",
25
+ "@teambit/aspect-loader": "0.0.535",
26
26
  "@teambit/cli": "0.0.380",
27
- "@teambit/logger": "0.0.455",
28
- "@teambit/pkg": "0.0.531",
29
- "@teambit/pubsub": "0.0.531",
30
- "@teambit/ui": "0.0.531",
31
- "@teambit/workspace": "0.0.531",
27
+ "@teambit/logger": "0.0.457",
28
+ "@teambit/pkg": "0.0.535",
29
+ "@teambit/pubsub": "0.0.535",
30
+ "@teambit/ui": "0.0.535",
31
+ "@teambit/workspace": "0.0.535",
32
32
  "@teambit/component-id": "0.0.370",
33
- "@teambit/express": "0.0.459",
34
- "@teambit/ui-foundation.ui.pages.static-error": "0.0.33",
35
- "@teambit/compiler": "0.0.531",
36
- "@teambit/preview.cli.preview-server-status": "0.0.452",
37
- "@teambit/preview.cli.webpack-events-listener": "0.0.122",
38
- "@teambit/isolator": "0.0.531",
33
+ "@teambit/express": "0.0.461",
34
+ "@teambit/ui-foundation.ui.pages.static-error": "0.0.35",
35
+ "@teambit/compiler": "0.0.535",
36
+ "@teambit/preview.cli.preview-server-status": "0.0.454",
37
+ "@teambit/preview.cli.webpack-events-listener": "0.0.124",
38
+ "@teambit/isolator": "0.0.535",
39
39
  "@teambit/bit-error": "0.0.366"
40
40
  },
41
41
  "devDependencies": {
@@ -49,7 +49,7 @@
49
49
  "@types/jest": "^26.0.0",
50
50
  "@types/react-dom": "^17.0.5",
51
51
  "@types/node": "12.20.4",
52
- "@teambit/preview.aspect-docs.preview": "0.0.91"
52
+ "@teambit/preview.aspect-docs.preview": "0.0.93"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "@teambit/legacy": "1.0.76",
@@ -318,7 +318,7 @@ export class PreviewMain {
318
318
  logger
319
319
  );
320
320
 
321
- if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub));
321
+ if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));
322
322
 
323
323
  componentExtension.registerRoute([new PreviewRoute(preview, logger)]);
324
324
  bundler.registerTarget([
@@ -4,9 +4,10 @@ import { PreviewServerStatus } from '@teambit/preview.cli.preview-server-status'
4
4
  import { BundlerMain, ComponentServer } from '@teambit/bundler';
5
5
  import { PubsubMain } from '@teambit/pubsub';
6
6
  import { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';
7
- import { Workspace } from '@teambit/workspace';
7
+ import { Workspace, CheckTypes } from '@teambit/workspace';
8
8
  import { SubscribeToWebpackEvents, CompilationResult } from '@teambit/preview.cli.webpack-events-listener';
9
9
  import { CompilationInitiator } from '@teambit/compiler';
10
+ import { Logger } from '@teambit/logger';
10
11
 
11
12
  type CompilationServers = Record<string, CompilationResult>;
12
13
  type ServersSetter = Dispatch<SetStateAction<CompilationServers>>;
@@ -16,7 +17,8 @@ export class PreviewStartPlugin implements StartPlugin {
16
17
  private workspace: Workspace,
17
18
  private bundler: BundlerMain,
18
19
  private ui: UiMain,
19
- private pubsub: PubsubMain
20
+ private pubsub: PubsubMain,
21
+ private logger: Logger
20
22
  ) {}
21
23
 
22
24
  previewServers: ComponentServer[] = [];
@@ -30,21 +32,27 @@ export class PreviewStartPlugin implements StartPlugin {
30
32
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
31
33
  previewServers.forEach((server) => server.listen());
32
34
  // DON'T add wait! this promise never resolve so it's stop all the start process!
33
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
34
- this.workspace.watcher.watchAll({
35
- checkTypes: true,
36
- skipPreCompilation: true,
37
- msgs: {
38
- onAll: () => {},
39
- onStart: () => {},
40
- onReady: () => {},
41
- onChange: () => {},
42
- onAdd: () => {},
43
- onError: () => {},
44
- onUnlink: () => {},
45
- },
46
- initiator: CompilationInitiator.Start,
47
- });
35
+ this.workspace.watcher
36
+ .watchAll({
37
+ spawnTSServer: true,
38
+ checkTypes: CheckTypes.None,
39
+ preCompile: false,
40
+ msgs: {
41
+ onAll: () => {},
42
+ onStart: () => {},
43
+ onReady: () => {},
44
+ onChange: () => {},
45
+ onAdd: () => {},
46
+ onError: () => {},
47
+ onUnlink: () => {},
48
+ },
49
+ initiator: CompilationInitiator.Start,
50
+ })
51
+ .catch((err) => {
52
+ const msg = `watcher found an error`;
53
+ this.logger.error(msg, err);
54
+ this.logger.console(`${msg}, ${err.message}`);
55
+ });
48
56
  this.previewServers = this.previewServers.concat(previewServers);
49
57
  }
50
58