@teambit/preview 1.0.106 → 1.0.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/artifact-file-middleware.ts +66 -0
  2. package/bundling-strategy.ts +30 -0
  3. package/component-preview.route.ts +52 -0
  4. package/component-preview.ts +3 -0
  5. package/dist/artifact-file-middleware.d.ts +2 -2
  6. package/dist/artifact-file-middleware.js +2 -2
  7. package/dist/artifact-file-middleware.js.map +1 -1
  8. package/dist/bundler/chunks.d.ts +1 -1
  9. package/dist/bundler/html-plugin.js +1 -1
  10. package/dist/bundler/html-plugin.js.map +1 -1
  11. package/dist/bundling-strategy.d.ts +2 -2
  12. package/dist/env-preview-template.task.d.ts +1 -1
  13. package/dist/env-preview-template.task.js +1 -1
  14. package/dist/env-preview-template.task.js.map +1 -1
  15. package/dist/env-template.route.d.ts +1 -1
  16. package/dist/execution-ref.d.ts +1 -1
  17. package/dist/generate-link.d.ts +1 -1
  18. package/dist/gql/fetch-component-aspects.d.ts +1 -1
  19. package/dist/{preview-1703505948637.js → preview-1703647408454.js} +2 -2
  20. package/dist/preview-artifact.d.ts +2 -2
  21. package/dist/preview-env.d.ts +1 -1
  22. package/dist/preview-modules.d.ts +1 -1
  23. package/dist/preview.composition.d.ts +2 -2
  24. package/dist/preview.main.runtime.d.ts +14 -14
  25. package/dist/preview.main.runtime.js +17 -24
  26. package/dist/preview.main.runtime.js.map +1 -1
  27. package/dist/preview.preview.runtime.d.ts +5 -5
  28. package/dist/preview.preview.runtime.js +5 -8
  29. package/dist/preview.preview.runtime.js.map +1 -1
  30. package/dist/preview.service.d.ts +1 -1
  31. package/dist/preview.service.js +1 -1
  32. package/dist/preview.service.js.map +1 -1
  33. package/dist/preview.start-plugin.d.ts +2 -2
  34. package/dist/rendering-context.d.ts +3 -3
  35. package/dist/rendering-context.js +1 -1
  36. package/dist/rendering-context.js.map +1 -1
  37. package/dist/size-event.d.ts +1 -1
  38. package/dist/strategies/component-strategy.d.ts +1 -1
  39. package/dist/strategies/component-strategy.js +12 -15
  40. package/dist/strategies/component-strategy.js.map +1 -1
  41. package/dist/strategies/env-strategy.js +1 -1
  42. package/dist/strategies/env-strategy.js.map +1 -1
  43. package/dist/strategies/generate-component-link.d.ts +1 -1
  44. package/dist/types/preview-module.d.ts +3 -3
  45. package/env-preview-template.task.ts +280 -0
  46. package/env-template.route.ts +72 -0
  47. package/execution-ref.ts +25 -0
  48. package/generate-link.ts +73 -0
  49. package/index.ts +18 -0
  50. package/mk-temp-dir.ts +7 -0
  51. package/package.json +31 -38
  52. package/preview-artifact.ts +24 -0
  53. package/preview-assets.route.ts +36 -0
  54. package/preview-context.ts +5 -0
  55. package/preview-definition.ts +41 -0
  56. package/preview-env.ts +46 -0
  57. package/preview-type.ts +36 -0
  58. package/preview.aspect.ts +12 -0
  59. package/preview.graphql.ts +48 -0
  60. package/preview.route.ts +58 -0
  61. package/preview.task.ts +85 -0
  62. package/preview.ts +13 -0
  63. package/rendering-context.ts +16 -0
  64. package/size-event.ts +14 -0
  65. package/tsconfig.json +16 -21
  66. package/types/asset.d.ts +15 -3
@@ -347,8 +347,7 @@ class PreviewMain {
347
347
  });
348
348
  }
349
349
  get tempFolder() {
350
- var _this$workspace;
351
- return ((_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.getTempDir(_preview().PreviewAspect.id)) || DEFAULT_TEMP_DIR;
350
+ return this.workspace?.getTempDir(_preview().PreviewAspect.id) || DEFAULT_TEMP_DIR;
352
351
  }
353
352
  getComponentBundleSize(component) {
354
353
  const data = this.builder.getDataByAspect(component, _preview().PreviewAspect.id);
@@ -383,8 +382,7 @@ class PreviewMain {
383
382
  * @returns
384
383
  */
385
384
  getPreviewAspectConfig(component) {
386
- var _component$state$aspe;
387
- return (_component$state$aspe = component.state.aspects.get(_preview().PreviewAspect.id)) === null || _component$state$aspe === void 0 ? void 0 : _component$state$aspe.config;
385
+ return component.state.aspects.get(_preview().PreviewAspect.id)?.config;
388
386
  }
389
387
 
390
388
  /**
@@ -394,8 +392,7 @@ class PreviewMain {
394
392
  * @returns
395
393
  */
396
394
  getPreviewData(component) {
397
- var _component$state$aspe2;
398
- const previewData = (_component$state$aspe2 = component.state.aspects.get(_preview().PreviewAspect.id)) === null || _component$state$aspe2 === void 0 ? void 0 : _component$state$aspe2.data;
395
+ const previewData = component.state.aspects.get(_preview().PreviewAspect.id)?.data;
399
396
  return previewData;
400
397
  }
401
398
 
@@ -431,8 +428,8 @@ class PreviewMain {
431
428
  const env = this.envs.getEnv(component).env;
432
429
  const envPreviewConfig = this.getEnvPreviewConfig(env);
433
430
  const data = {
434
- strategyName: envPreviewConfig === null || envPreviewConfig === void 0 ? void 0 : envPreviewConfig.strategyName,
435
- splitComponentBundle: (envPreviewConfig === null || envPreviewConfig === void 0 ? void 0 : envPreviewConfig.splitComponentBundle) ?? false
431
+ strategyName: envPreviewConfig?.strategyName,
432
+ splitComponentBundle: envPreviewConfig?.splitComponentBundle ?? false
436
433
  };
437
434
  return data;
438
435
  }
@@ -449,7 +446,7 @@ class PreviewMain {
449
446
  const previewAspectConfig = this.getPreviewAspectConfig(envComponent);
450
447
  const data = {
451
448
  // default to true if the env doesn't have a preview config
452
- isScaling: (previewAspectConfig === null || previewAspectConfig === void 0 ? void 0 : previewAspectConfig.isScaling) ?? true
449
+ isScaling: previewAspectConfig?.isScaling ?? true
453
450
  // disalbe it for now, we will re-enable it later
454
451
  // skipIncludes: true,
455
452
  };
@@ -466,7 +463,7 @@ class PreviewMain {
466
463
  */
467
464
  async calcIsBundledWithEnv(component) {
468
465
  const envPreviewData = await this.calcPreviewDataFromEnv(component);
469
- return (envPreviewData === null || envPreviewData === void 0 ? void 0 : envPreviewData.strategyName) !== 'component';
466
+ return envPreviewData?.strategyName !== 'component';
470
467
  }
471
468
 
472
469
  /**
@@ -525,8 +522,7 @@ class PreviewMain {
525
522
  * this calculation is based on the env of the component and if the env of the component support it.
526
523
  */
527
524
  async doesScaling(component) {
528
- var _this$workspace2;
529
- const inWorkspace = await ((_this$workspace2 = this.workspace) === null || _this$workspace2 === void 0 ? void 0 : _this$workspace2.hasId(component.id));
525
+ const inWorkspace = await this.workspace?.hasId(component.id);
530
526
  // 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
531
527
  // since we bundle it for the dev server again
532
528
  if (inWorkspace) {
@@ -567,14 +563,14 @@ class PreviewMain {
567
563
  */
568
564
  isEnvSupportScaling(envComponent) {
569
565
  const previewData = this.getPreviewData(envComponent);
570
- return !!(previewData !== null && previewData !== void 0 && previewData.isScaling);
566
+ return !!previewData?.isScaling;
571
567
  }
572
568
  async isSupportSkipIncludes(component) {
573
569
  const isCore = this.envs.isUsingCoreEnv(component);
574
570
  if (isCore) return false;
575
571
  const envComponent = await this.envs.getEnvComponent(component);
576
572
  const previewData = this.getPreviewData(envComponent);
577
- return !!(previewData !== null && previewData !== void 0 && previewData.skipIncludes);
573
+ return !!previewData?.skipIncludes;
578
574
  }
579
575
 
580
576
  /**
@@ -592,7 +588,7 @@ class PreviewMain {
592
588
  if (!isEnv) return undefined;
593
589
  const previewAspectConfig = this.getPreviewAspectConfig(envComponent);
594
590
  // default to true if the env doesn't have a preview config
595
- return (previewAspectConfig === null || previewAspectConfig === void 0 ? void 0 : previewAspectConfig.isScaling) ?? true;
591
+ return previewAspectConfig?.isScaling ?? true;
596
592
  }
597
593
 
598
594
  /**
@@ -717,8 +713,7 @@ class PreviewMain {
717
713
  updateLinkFiles(components = [], context) {
718
714
  const previews = this.previewSlot.values();
719
715
  const paths = previews.map(async previewDef => {
720
- var _previewDef$renderTem;
721
- const defaultTemplatePath = await ((_previewDef$renderTem = previewDef.renderTemplatePathByEnv) === null || _previewDef$renderTem === void 0 ? void 0 : _previewDef$renderTem.call(previewDef, context.env));
716
+ const defaultTemplatePath = await previewDef.renderTemplatePathByEnv?.(context.env);
722
717
  const visitedEnvs = new Set();
723
718
  const mainModulesMap = {
724
719
  // @ts-ignore
@@ -728,20 +723,18 @@ class PreviewMain {
728
723
  const map = await previewDef.getModuleMap(components);
729
724
  const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;
730
725
  const withPathsP = map.asyncMap(async (files, component) => {
731
- var _environment$getCompi, _compilerInstance$get;
732
726
  const envDef = this.envs.getEnv(component);
733
727
  const environment = envDef.env;
734
728
  const envId = envDef.id;
735
729
  if (!mainModulesMap[envId] && !visitedEnvs.has(envId)) {
736
- var _previewDef$renderTem2;
737
- const modulePath = await ((_previewDef$renderTem2 = previewDef.renderTemplatePathByEnv) === null || _previewDef$renderTem2 === void 0 ? void 0 : _previewDef$renderTem2.call(previewDef, envDef.env));
730
+ const modulePath = await previewDef.renderTemplatePathByEnv?.(envDef.env);
738
731
  if (modulePath) {
739
732
  mainModulesMap[envId] = modulePath;
740
733
  }
741
734
  visitedEnvs.add(envId);
742
735
  }
743
- const compilerInstance = (_environment$getCompi = environment.getCompiler) === null || _environment$getCompi === void 0 ? void 0 : _environment$getCompi.call(environment);
744
- const modulePath = (compilerInstance === null || compilerInstance === void 0 || (_compilerInstance$get = compilerInstance.getPreviewComponentRootPath) === null || _compilerInstance$get === void 0 ? void 0 : _compilerInstance$get.call(compilerInstance, component)) || this.pkg.getRuntimeModulePath(component);
736
+ const compilerInstance = environment.getCompiler?.();
737
+ const modulePath = compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getRuntimeModulePath(component);
745
738
  return files.map(file => {
746
739
  if (!this.workspace || !compilerInstance) {
747
740
  return file.path;
@@ -807,7 +800,7 @@ class PreviewMain {
807
800
  return [new (_strategies().EnvBundlingStrategy)(this, this.pkg, this.dependencyResolver), new (_strategies().ComponentBundlingStrategy)(this, this.pkg, this.dependencyResolver)];
808
801
  }
809
802
  getEnvPreviewConfig(env) {
810
- const config = env !== null && env !== void 0 && env.getPreviewConfig && typeof (env === null || env === void 0 ? void 0 : env.getPreviewConfig) === 'function' ? env === null || env === void 0 ? void 0 : env.getPreviewConfig() : {};
803
+ const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};
811
804
  return config;
812
805
  }
813
806
 
@@ -817,7 +810,7 @@ class PreviewMain {
817
810
  getBundlingStrategy(env) {
818
811
  const defaultStrategies = this.getDefaultStrategies();
819
812
  const envPreviewConfig = this.getEnvPreviewConfig(env);
820
- const strategyFromEnv = envPreviewConfig === null || envPreviewConfig === void 0 ? void 0 : envPreviewConfig.strategyName;
813
+ const strategyFromEnv = envPreviewConfig?.strategyName;
821
814
  const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';
822
815
  const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);
823
816
  const selected = strategies.find(strategy => {
@@ -1 +1 @@
1
- {"version":3,"names":["_builder","data","require","_bundler","_pubsub","_cli","_component","_envs","_harmony","_ui","_constants","_bitError","_objectHash","_interopRequireDefault","_lodash","_fsExtra","_path","_pkg","_aspectLoader","_workspace","_logger","_dependencyResolver","_artifactFiles","_watcher","_graphql","_scope","_exceptions","_generateLink","_previewArtifact","_preview","_preview2","_preview3","_strategies","_executionRef","_preview4","_envPreviewTemplate","_envTemplate","_componentPreview","_preview5","_previewAssets","_preview6","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","_this$workspace","getTempDir","getComponentBundleSize","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByAspectAndTaskName","PREVIEW_TASK_NAME","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getPreviewAspectConfig","_component$state$aspe","state","aspects","getPreviewData","_component$state$aspe2","previewData","calcPreviewData","doesScaling","calcDoesScalingForComponent","dataFromEnv","calcPreviewDataFromEnv","envData","calculateDataForEnvComponent","toStringWithoutVersion","strategyName","COMPONENT_PREVIEW_STRATEGY_NAME","splitComponentBundle","envPreviewConfig","getEnvPreviewConfig","envComponent","isEnv","previewAspectConfig","isScaling","calcIsBundledWithEnv","envPreviewData","isBundledWithEnvBackward","ENV_PREVIEW_STRATEGY_NAME","getArtifactsVinylByAspectAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","isUsingCoreEnv","isNew","getEnvComponent","isEnvSupportScaling","_this$workspace2","inWorkspace","hasId","envSupportScaling","calculateIsEnvSupportScaling","isSupportSkipIncludes","isCore","skipIncludes","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","existsSync","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","BitError","getDefs","values","writeLink","prefix","moduleMap","mainModulesMap","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","writeFileSync","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","_previewDef$renderTem","defaultTemplatePath","renderTemplatePathByEnv","visitedEnvs","Set","envDefinition","getModuleMap","withPathsP","asyncMap","_environment$getCompi","_compilerInstance$get","envDef","environment","has","_previewDef$renderTem2","modulePath","add","compilerInstance","getCompiler","getPreviewComponentRootPath","getRuntimeModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","withPaths","dirPath","mkdirSync","recursive","link","all","aspectsIdsToNotFilterOut","name","uiRoot","getUi","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","runtimeName","componentIds","opts","root","MainRuntime","Error","allComponentContextAspects","reduce","acc","curr","concat","ids","hostAspects","toObject","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","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","registerOnComponentAdd","registerOnComponentLoad","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","registerOnCompAspectReCalc","registerService","PreviewService","previewSchema","exports","Slot","withType","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","WatcherAspect","ScopeAspect","addRuntime"],"sources":["preview.main.runtime.tsx"],"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 } 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 { EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain, UIRoot } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\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 { 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 { ArtifactFiles } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport WatcherAspect, { WatcherMain } from '@teambit/watcher';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\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';\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 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};\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};\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 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\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 * 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 data: PreviewComponentData = {\n doesScaling,\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'> | 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 // 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\n const data = {\n // default to true if the env doesn't have a preview config\n isScaling: previewAspectConfig?.isScaling ?? true,\n // disalbe it for now, we will re-enable it later\n // skipIncludes: 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 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 * 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 /**\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 contents = generateLink(prefix, moduleMap, mainModulesMap, isSplitComponentBundle);\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.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 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 async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const [name, uiRoot] = this.getUi();\n const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\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.pkg, this.dependencyResolver),\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 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 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 EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n WatcherAspect,\n ScopeAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n watcher,\n scope,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain,\n WatcherMain,\n ScopeMain\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 envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver\n );\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 ]);\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\n envs.registerService(new PreviewService());\n\n graphql.register(previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_builder","data","require","_bundler","_pubsub","_cli","_component","_envs","_harmony","_ui","_constants","_bitError","_objectHash","_interopRequireDefault","_lodash","_fsExtra","_path","_pkg","_aspectLoader","_workspace","_logger","_dependencyResolver","_artifactFiles","_watcher","_graphql","_scope","_exceptions","_generateLink","_previewArtifact","_preview","_preview2","_preview3","_strategies","_executionRef","_preview4","_envPreviewTemplate","_envTemplate","_componentPreview","_preview5","_previewAssets","_preview6","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","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","calcPreviewData","doesScaling","calcDoesScalingForComponent","dataFromEnv","calcPreviewDataFromEnv","envData","calculateDataForEnvComponent","toStringWithoutVersion","strategyName","COMPONENT_PREVIEW_STRATEGY_NAME","splitComponentBundle","envPreviewConfig","getEnvPreviewConfig","envComponent","isEnv","previewAspectConfig","isScaling","calcIsBundledWithEnv","envPreviewData","isBundledWithEnvBackward","ENV_PREVIEW_STRATEGY_NAME","getArtifactsVinylByAspectAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","isUsingCoreEnv","isNew","getEnvComponent","isEnvSupportScaling","inWorkspace","hasId","envSupportScaling","calculateIsEnvSupportScaling","isSupportSkipIncludes","isCore","skipIncludes","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","existsSync","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","BitError","getDefs","values","writeLink","prefix","moduleMap","mainModulesMap","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","writeFileSync","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","defaultTemplatePath","renderTemplatePathByEnv","visitedEnvs","Set","envDefinition","getModuleMap","withPathsP","asyncMap","envDef","environment","has","modulePath","add","compilerInstance","getCompiler","getPreviewComponentRootPath","getRuntimeModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","withPaths","dirPath","mkdirSync","recursive","link","all","aspectsIdsToNotFilterOut","name","uiRoot","getUi","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","runtimeName","componentIds","opts","root","MainRuntime","Error","allComponentContextAspects","reduce","acc","curr","concat","ids","hostAspects","toObject","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","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","registerOnComponentAdd","registerOnComponentLoad","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","registerOnCompAspectReCalc","registerService","PreviewService","previewSchema","exports","Slot","withType","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","WatcherAspect","ScopeAspect","addRuntime"],"sources":["preview.main.runtime.tsx"],"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 } 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 { EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain, UIRoot } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\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 { 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 { ArtifactFiles } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport WatcherAspect, { WatcherMain } from '@teambit/watcher';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\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';\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 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};\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};\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 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\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 * 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 data: PreviewComponentData = {\n doesScaling,\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'> | 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 // 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\n const data = {\n // default to true if the env doesn't have a preview config\n isScaling: previewAspectConfig?.isScaling ?? true,\n // disalbe it for now, we will re-enable it later\n // skipIncludes: 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 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 * 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 /**\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 contents = generateLink(prefix, moduleMap, mainModulesMap, isSplitComponentBundle);\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.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 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 async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const [name, uiRoot] = this.getUi();\n const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\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.pkg, this.dependencyResolver),\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 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 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 EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n WatcherAspect,\n ScopeAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n watcher,\n scope,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain,\n WatcherMain,\n ScopeMain\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 envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver\n );\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 ]);\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\n envs.registerService(new PreviewService());\n\n graphql.register(previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"],"mappings":"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"}
@@ -5,14 +5,14 @@ import { PreviewType } from './preview-type';
5
5
  import { ModuleFile, PreviewModule } from './types/preview-module';
6
6
  import { RenderingContext } from './rendering-context';
7
7
  export { linkModules } from './preview-modules';
8
- export declare type PreviewSlot = SlotRegistry<PreviewType>;
9
- export declare type RenderingContextOptions = {
8
+ export type PreviewSlot = SlotRegistry<PreviewType>;
9
+ export type RenderingContextOptions = {
10
10
  aspectsFilter?: string[];
11
11
  };
12
- export declare type RenderingContextProvider = (options: RenderingContextOptions) => {
12
+ export type RenderingContextProvider = (options: RenderingContextOptions) => {
13
13
  [key: string]: any;
14
14
  };
15
- export declare type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;
15
+ export type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;
16
16
  export declare class PreviewPreview {
17
17
  /**
18
18
  * register to pubsub
@@ -66,7 +66,7 @@ export declare class PreviewPreview {
66
66
  registerRenderContext(renderContext: RenderingContextProvider): this;
67
67
  getDefault(): string;
68
68
  private getPreview;
69
- getParam(query: string, param: string): string | null;
69
+ getParam(query: string, param: string): string;
70
70
  getQuery(): string;
71
71
  private getLocation;
72
72
  static runtime: import("@teambit/harmony").RuntimeDefinition;
@@ -154,11 +154,10 @@ class PreviewPreview {
154
154
  throw new (_exceptions().PreviewNotFound)(previewName);
155
155
  }
156
156
  const includesAll = await Promise.all((preview.include || []).map(async inclPreviewName => {
157
- var _includedPreview$sele;
158
157
  const includedPreview = this.getPreview(inclPreviewName);
159
158
  if (!includedPreview) return undefined;
160
159
  const inclPreviewModule = await this.getPreviewModule(inclPreviewName, componentId);
161
- return (_includedPreview$sele = includedPreview.selectPreviewModel) === null || _includedPreview$sele === void 0 ? void 0 : _includedPreview$sele.call(includedPreview, componentId.fullName, inclPreviewModule);
160
+ return includedPreview.selectPreviewModel?.(componentId.fullName, inclPreviewModule);
162
161
  }));
163
162
 
164
163
  // remove `includes` (including compositions) when skipIncludes = true.
@@ -187,7 +186,6 @@ class PreviewPreview {
187
186
  });
188
187
  }
189
188
  isReady() {
190
- var _preview$include;
191
189
  const {
192
190
  previewName
193
191
  } = this.getLocation();
@@ -195,7 +193,7 @@ class PreviewPreview {
195
193
  if (!_previewModules().PREVIEW_MODULES.has(name)) return false;
196
194
  const preview = this.getPreview(name);
197
195
  if (!preview) return false;
198
- const includedReady = ((_preview$include = preview.include) === null || _preview$include === void 0 ? void 0 : _preview$include.every(included => _previewModules().PREVIEW_MODULES.has(included))) ?? true;
196
+ const includedReady = preview.include?.every(included => _previewModules().PREVIEW_MODULES.has(included)) ?? true;
199
197
  if (!includedReady) return false;
200
198
  return true;
201
199
  }
@@ -209,8 +207,7 @@ class PreviewPreview {
209
207
  window.document.body.style.maxWidth = `${viewPort}px`;
210
208
  }
211
209
  reportSize() {
212
- var _window, _window2;
213
- if (!((_window = window) !== null && _window !== void 0 && _window.parent) || !((_window2 = window) !== null && _window2 !== void 0 && _window2.document)) return;
210
+ if (!window?.parent || !window?.document) return;
214
211
  // TODO: discuss with gilad for a better way to resolve page loaded here.
215
212
 
216
213
  const sendPubsubEvent = () => {
@@ -277,7 +274,7 @@ class PreviewPreview {
277
274
  // TODO - should we load assets other than .css / .js?
278
275
  // if (previewBundleFileName.endsWith('.css')) {
279
276
  this.addComponentFileLinkElement(id, previewBundleFileName).catch(err => {
280
- throw new Error(`[preview.preview] failed loading asset "${previewBundleFileName}". Error - "${err === null || err === void 0 ? void 0 : err.toString()}"`);
277
+ throw new Error(`[preview.preview] failed loading asset "${previewBundleFileName}". Error - "${err?.toString()}"`);
281
278
  });
282
279
 
283
280
  // do NOT await non js assets, as they might never load (like images), and not critical for rendering.
@@ -358,7 +355,7 @@ class PreviewPreview {
358
355
  getDefault() {
359
356
  const previews = this.previewSlot.values();
360
357
  const defaultOne = previews.find(previewCandidate => previewCandidate.default);
361
- return (defaultOne === null || defaultOne === void 0 ? void 0 : defaultOne.name) || previews[0].name;
358
+ return defaultOne?.name || previews[0].name;
362
359
  }
363
360
  getPreview(previewName) {
364
361
  const previews = this.previewSlot.values();