@teambit/preview 0.0.633 → 0.0.637

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.
@@ -1 +1 @@
1
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.633/dist/preview.docs.mdx')]
1
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.637/dist/preview.docs.mdx')]
@@ -127,8 +127,10 @@ class EnvPreviewTemplateTask {
127
127
  // const entries = Object.keys(module).map((key) => module.exposes[key]);
128
128
 
129
129
  const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);
130
- if (!capsule) throw new Error('no capsule found');
131
- const previewRoot = await this.preview.writePreviewRuntime(context);
130
+ if (!capsule) throw new Error('no capsule found'); // Passing here the env itself to make sure it's preview runtime will be part of the preview root file
131
+ // that's needed to make sure the providers register there are running correctly
132
+
133
+ const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);
132
134
  const previewModules = await this.getPreviewModules(envComponent); // const templatesFile = previewModules.map((template) => {
133
135
  // return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);
134
136
  // });
@@ -1 +1 @@
1
- {"version":3,"sources":["env-preview-template.task.ts"],"names":["GENERATE_ENV_TEMPLATE_TASK_NAME","PREVIEW_ROOT_CHUNK_NAME","PEERS_CHUNK_NAME","EnvPreviewTemplateTask","constructor","preview","envs","execute","context","previewDefs","getDefs","htmlConfig","generateHtmlConfig","dev","targets","Promise","all","components","map","component","envDef","getEnvFromComponent","undefined","env","bundlingStrategy","getBundlingStrategy","name","envComponent","envPreviewConfig","getEnvPreviewConfig","isSplitComponentBundle","splitComponentBundle","envGetDeps","getDependencies","envComponentPeers","Object","keys","peerDependencies","envHostDeps","getHostDependencies","peers","concat","capsule","capsuleNetwork","graphCapsules","getCapsule","id","Error","previewRoot","writePreviewRuntime","previewModules","getPreviewModules","outputPath","computeOutputPath","entries","getEntries","runtimeChunkName","html","chunking","splitChunks","length","componentsResults","bundlerContext","assign","entry","externalizePeer","development","bundler","getBundler","bundlerResults","run","results","computeResults","previewRootChunkName","peersChunkName","options","htmlConfigs","previewModule","generateHtmlConfigForPreviewDef","previewDef","previewDeps","include","chunks","prefix","includePeers","unshift","config","title","templateContent","minify","filename","previewRootEntry","import","peersRootEntry","reduce","acc","module","linkFile","writeLink","ComponentMap","create","path","dependOn","result","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","getEnv","modules","def","renderTemplatePathByEnv","getArtifactDirectory","CAPSULE_ARTIFACTS_DIR","globPatterns","rootDir"],"mappings":"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","sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n ComponentResult,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { Capsule } from '@teambit/isolator';\nimport { Bundler, BundlerContext, BundlerEntryMap, BundlerHtmlConfig, BundlerResult, Target } from '@teambit/bundler';\nimport type { EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { compact } from 'lodash';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport type { PreviewMain } from './preview.main.runtime';\nimport { PreviewDefinition } from '.';\nimport { html } from './webpack';\n\nexport type ModuleExpose = {\n name: string;\n path: string;\n include?: string[];\n};\n\nexport const GENERATE_ENV_TEMPLATE_TASK_NAME = 'GenerateEnvTemplate';\nexport const PREVIEW_ROOT_CHUNK_NAME = 'previewRoot';\nexport const PEERS_CHUNK_NAME = 'peers';\n\nexport class EnvPreviewTemplateTask implements BuildTask {\n aspectId = 'teambit.preview/preview';\n name = GENERATE_ENV_TEMPLATE_TASK_NAME;\n location: TaskLocation = 'end';\n // readonly dependencies = [CompilerAspect.id];\n\n constructor(private preview: PreviewMain, private envs: EnvsMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const previewDefs = this.preview.getDefs();\n const htmlConfig = this.generateHtmlConfig(previewDefs, PREVIEW_ROOT_CHUNK_NAME, PEERS_CHUNK_NAME, {\n dev: context.dev,\n });\n const targets: Target[] = compact(\n await Promise.all(\n context.components.map(async (component) => {\n const envDef = this.envs.getEnvFromComponent(component);\n if (!envDef) return undefined;\n const env = envDef.env;\n const bundlingStrategy = this.preview.getBundlingStrategy(envDef.env);\n if (bundlingStrategy.name === 'env') {\n return undefined;\n }\n const envComponent = component;\n const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);\n const isSplitComponentBundle = envPreviewConfig.splitComponentBundle ?? false;\n const envGetDeps = (await env.getDependencies()) || {};\n const envComponentPeers = Object.keys(envGetDeps.peerDependencies || {}) || [];\n const envHostDeps = env.getHostDependencies() || [];\n const peers = envComponentPeers.concat(envHostDeps);\n\n // const module = await this.getPreviewModule(envComponent);\n // const entries = Object.keys(module).map((key) => module.exposes[key]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);\n if (!capsule) throw new Error('no capsule found');\n const previewRoot = await this.preview.writePreviewRuntime(context);\n const previewModules = await this.getPreviewModules(envComponent);\n // const templatesFile = previewModules.map((template) => {\n // return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);\n // });\n const outputPath = this.computeOutputPath(context, envComponent);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n const entries = this.getEntries(previewModules, capsule, previewRoot, isSplitComponentBundle, peers);\n\n // const entries = this.getEntries(\n // previewModules.concat({\n // name: 'main',\n // path: previewRoot,\n // })\n // );\n\n return {\n // entries: templatesFile.concat(previewRoot),\n peers,\n runtimeChunkName: 'runtime',\n html: htmlConfig,\n entries,\n chunking: {\n splitChunks: true,\n },\n components: [envComponent],\n outputPath,\n // modules: [module],\n };\n })\n )\n );\n\n if (!targets.length) return { componentsResults: [] };\n const bundlerContext: BundlerContext = Object.assign({}, context, {\n targets,\n entry: [],\n externalizePeer: false,\n development: context.dev,\n });\n\n const bundler: Bundler = await context.env.getBundler(bundlerContext);\n const bundlerResults = await bundler.run();\n const results = await this.computeResults(bundlerContext, bundlerResults);\n return results;\n }\n\n private generateHtmlConfig(\n previewDefs: PreviewDefinition[],\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig[] {\n const htmlConfigs = previewDefs.map((previewModule) =>\n this.generateHtmlConfigForPreviewDef(previewModule, previewRootChunkName, peersChunkName, options)\n );\n return htmlConfigs;\n }\n\n private generateHtmlConfigForPreviewDef(\n previewDef: PreviewDefinition,\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig {\n const previewDeps = previewDef.include || [];\n const chunks = [...previewDeps, previewDef.prefix, previewRootChunkName];\n if (previewDef.includePeers) {\n chunks.unshift(peersChunkName);\n }\n\n const config = {\n title: 'Preview',\n templateContent: html('Preview'),\n minify: options?.dev ?? true,\n chunks,\n filename: `${previewDef.prefix}.html`,\n };\n return config;\n }\n\n getEntries(\n previewModules: ModuleExpose[],\n capsule: Capsule,\n previewRoot: string,\n isSplitComponentBundle = false,\n peers: string[] = []\n ): BundlerEntryMap {\n const previewRootEntry = {\n filename: 'preview-root.[chunkhash].js',\n import: previewRoot,\n };\n\n const peersRootEntry = {\n filename: 'peers.[chunkhash].js',\n import: peers,\n };\n\n const entries = previewModules.reduce(\n (acc, module) => {\n const linkFile = this.preview.writeLink(\n module.name,\n ComponentMap.create([]),\n module.path,\n capsule.path,\n isSplitComponentBundle\n );\n acc[module.name] = {\n // filename: `${module.name}.[contenthash].js`,\n filename: `${module.name}.[chunkhash].js`,\n // filename: `${module.name}.js`,\n import: linkFile,\n // library: {\n // name: module.name,\n // type: 'umd',\n // },\n };\n if (module.include) {\n acc[module.name].dependOn = module.include;\n }\n return acc;\n },\n { [PREVIEW_ROOT_CHUNK_NAME]: previewRootEntry, [PEERS_CHUNK_NAME]: peersRootEntry }\n );\n\n return entries;\n\n // const mergedEntries = return entriesArr.reduce((entriesMap, entry) => {\n // entriesMap[entry.library.name] = entry;\n // return entriesMap;\n // }, {previewRoot: previewRootEntry});\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const result = results[0];\n\n const componentsResults: ComponentResult[] = result.components.map((component) => {\n return {\n component,\n errors: result.errors.map((err) => (typeof err === 'string' ? err : err.message)),\n warning: result.warnings,\n startTime: result.startTime,\n endTime: result.endTime,\n };\n });\n\n const artifacts = getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n async getPreviewModules(envComponent: Component): Promise<ModuleExpose[]> {\n const env = this.envs.getEnv(envComponent);\n const previewDefs = this.preview.getDefs();\n const modules = compact(\n await Promise.all(\n previewDefs.map(async (def) => {\n if (!def.renderTemplatePathByEnv) return undefined;\n return {\n name: def.prefix,\n path: await def.renderTemplatePathByEnv(env.env),\n include: def.include,\n };\n })\n )\n );\n\n return modules;\n }\n\n private computeOutputPath(context: BuildContext, component: Component) {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('no capsule found');\n return join(capsule.path, getArtifactDirectory());\n }\n\n // private async getPreviewModule(envComponent: Component): Promise<ModuleTarget> {\n // const env = this.envs.getEnv(envComponent);\n // const previewDefs = this.preview.getDefs();\n // const modules = compact(await Promise.all(previewDefs.map(async (def) => {\n // if (!def.renderTemplatePathByEnv) return undefined;\n // return [def.prefix, await def.renderTemplatePathByEnv(env.env)];\n // })));\n\n // const exposes = modules.reduce((exposesAcc, [prefix, path]) => {\n // const internalPath = `./${prefix}`;\n // exposesAcc[internalPath] = path;\n // return exposesAcc;\n // }, {});\n\n // return {\n // component: envComponent,\n // exposes\n // };\n // }\n}\n\nexport function getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, 'env-template');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'env-template',\n // globPatterns: [`${getArtifactDirectory()}/**`],\n globPatterns: ['**'],\n rootDir: getArtifactDirectory(),\n // context: env,\n },\n ];\n}\n"]}
1
+ {"version":3,"sources":["env-preview-template.task.ts"],"names":["GENERATE_ENV_TEMPLATE_TASK_NAME","PREVIEW_ROOT_CHUNK_NAME","PEERS_CHUNK_NAME","EnvPreviewTemplateTask","constructor","preview","envs","execute","context","previewDefs","getDefs","htmlConfig","generateHtmlConfig","dev","targets","Promise","all","components","map","component","envDef","getEnvFromComponent","undefined","env","bundlingStrategy","getBundlingStrategy","name","envComponent","envPreviewConfig","getEnvPreviewConfig","isSplitComponentBundle","splitComponentBundle","envGetDeps","getDependencies","envComponentPeers","Object","keys","peerDependencies","envHostDeps","getHostDependencies","peers","concat","capsule","capsuleNetwork","graphCapsules","getCapsule","id","Error","previewRoot","writePreviewRuntime","toString","previewModules","getPreviewModules","outputPath","computeOutputPath","entries","getEntries","runtimeChunkName","html","chunking","splitChunks","length","componentsResults","bundlerContext","assign","entry","externalizePeer","development","bundler","getBundler","bundlerResults","run","results","computeResults","previewRootChunkName","peersChunkName","options","htmlConfigs","previewModule","generateHtmlConfigForPreviewDef","previewDef","previewDeps","include","chunks","prefix","includePeers","unshift","config","title","templateContent","minify","filename","previewRootEntry","import","peersRootEntry","reduce","acc","module","linkFile","writeLink","ComponentMap","create","path","dependOn","result","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","getEnv","modules","def","renderTemplatePathByEnv","getArtifactDirectory","CAPSULE_ARTIFACTS_DIR","globPatterns","rootDir"],"mappings":"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","sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n ComponentResult,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { Capsule } from '@teambit/isolator';\nimport { Bundler, BundlerContext, BundlerEntryMap, BundlerHtmlConfig, BundlerResult, Target } from '@teambit/bundler';\nimport type { EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { compact } from 'lodash';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport type { PreviewMain } from './preview.main.runtime';\nimport { PreviewDefinition } from '.';\nimport { html } from './webpack';\n\nexport type ModuleExpose = {\n name: string;\n path: string;\n include?: string[];\n};\n\nexport const GENERATE_ENV_TEMPLATE_TASK_NAME = 'GenerateEnvTemplate';\nexport const PREVIEW_ROOT_CHUNK_NAME = 'previewRoot';\nexport const PEERS_CHUNK_NAME = 'peers';\n\nexport class EnvPreviewTemplateTask implements BuildTask {\n aspectId = 'teambit.preview/preview';\n name = GENERATE_ENV_TEMPLATE_TASK_NAME;\n location: TaskLocation = 'end';\n // readonly dependencies = [CompilerAspect.id];\n\n constructor(private preview: PreviewMain, private envs: EnvsMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const previewDefs = this.preview.getDefs();\n const htmlConfig = this.generateHtmlConfig(previewDefs, PREVIEW_ROOT_CHUNK_NAME, PEERS_CHUNK_NAME, {\n dev: context.dev,\n });\n const targets: Target[] = compact(\n await Promise.all(\n context.components.map(async (component) => {\n const envDef = this.envs.getEnvFromComponent(component);\n if (!envDef) return undefined;\n const env = envDef.env;\n const bundlingStrategy = this.preview.getBundlingStrategy(envDef.env);\n if (bundlingStrategy.name === 'env') {\n return undefined;\n }\n const envComponent = component;\n const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);\n const isSplitComponentBundle = envPreviewConfig.splitComponentBundle ?? false;\n const envGetDeps = (await env.getDependencies()) || {};\n const envComponentPeers = Object.keys(envGetDeps.peerDependencies || {}) || [];\n const envHostDeps = env.getHostDependencies() || [];\n const peers = envComponentPeers.concat(envHostDeps);\n\n // const module = await this.getPreviewModule(envComponent);\n // const entries = Object.keys(module).map((key) => module.exposes[key]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);\n if (!capsule) throw new Error('no capsule found');\n // Passing here the env itself to make sure it's preview runtime will be part of the preview root file\n // that's needed to make sure the providers register there are running correctly\n const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);\n const previewModules = await this.getPreviewModules(envComponent);\n // const templatesFile = previewModules.map((template) => {\n // return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);\n // });\n const outputPath = this.computeOutputPath(context, envComponent);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n const entries = this.getEntries(previewModules, capsule, previewRoot, isSplitComponentBundle, peers);\n\n // const entries = this.getEntries(\n // previewModules.concat({\n // name: 'main',\n // path: previewRoot,\n // })\n // );\n\n return {\n // entries: templatesFile.concat(previewRoot),\n peers,\n runtimeChunkName: 'runtime',\n html: htmlConfig,\n entries,\n chunking: {\n splitChunks: true,\n },\n components: [envComponent],\n outputPath,\n // modules: [module],\n };\n })\n )\n );\n\n if (!targets.length) return { componentsResults: [] };\n const bundlerContext: BundlerContext = Object.assign({}, context, {\n targets,\n entry: [],\n externalizePeer: false,\n development: context.dev,\n });\n\n const bundler: Bundler = await context.env.getBundler(bundlerContext);\n const bundlerResults = await bundler.run();\n const results = await this.computeResults(bundlerContext, bundlerResults);\n return results;\n }\n\n private generateHtmlConfig(\n previewDefs: PreviewDefinition[],\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig[] {\n const htmlConfigs = previewDefs.map((previewModule) =>\n this.generateHtmlConfigForPreviewDef(previewModule, previewRootChunkName, peersChunkName, options)\n );\n return htmlConfigs;\n }\n\n private generateHtmlConfigForPreviewDef(\n previewDef: PreviewDefinition,\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig {\n const previewDeps = previewDef.include || [];\n const chunks = [...previewDeps, previewDef.prefix, previewRootChunkName];\n if (previewDef.includePeers) {\n chunks.unshift(peersChunkName);\n }\n\n const config = {\n title: 'Preview',\n templateContent: html('Preview'),\n minify: options?.dev ?? true,\n chunks,\n filename: `${previewDef.prefix}.html`,\n };\n return config;\n }\n\n getEntries(\n previewModules: ModuleExpose[],\n capsule: Capsule,\n previewRoot: string,\n isSplitComponentBundle = false,\n peers: string[] = []\n ): BundlerEntryMap {\n const previewRootEntry = {\n filename: 'preview-root.[chunkhash].js',\n import: previewRoot,\n };\n\n const peersRootEntry = {\n filename: 'peers.[chunkhash].js',\n import: peers,\n };\n\n const entries = previewModules.reduce(\n (acc, module) => {\n const linkFile = this.preview.writeLink(\n module.name,\n ComponentMap.create([]),\n module.path,\n capsule.path,\n isSplitComponentBundle\n );\n acc[module.name] = {\n // filename: `${module.name}.[contenthash].js`,\n filename: `${module.name}.[chunkhash].js`,\n // filename: `${module.name}.js`,\n import: linkFile,\n // library: {\n // name: module.name,\n // type: 'umd',\n // },\n };\n if (module.include) {\n acc[module.name].dependOn = module.include;\n }\n return acc;\n },\n { [PREVIEW_ROOT_CHUNK_NAME]: previewRootEntry, [PEERS_CHUNK_NAME]: peersRootEntry }\n );\n\n return entries;\n\n // const mergedEntries = return entriesArr.reduce((entriesMap, entry) => {\n // entriesMap[entry.library.name] = entry;\n // return entriesMap;\n // }, {previewRoot: previewRootEntry});\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const result = results[0];\n\n const componentsResults: ComponentResult[] = result.components.map((component) => {\n return {\n component,\n errors: result.errors.map((err) => (typeof err === 'string' ? err : err.message)),\n warning: result.warnings,\n startTime: result.startTime,\n endTime: result.endTime,\n };\n });\n\n const artifacts = getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n async getPreviewModules(envComponent: Component): Promise<ModuleExpose[]> {\n const env = this.envs.getEnv(envComponent);\n const previewDefs = this.preview.getDefs();\n const modules = compact(\n await Promise.all(\n previewDefs.map(async (def) => {\n if (!def.renderTemplatePathByEnv) return undefined;\n return {\n name: def.prefix,\n path: await def.renderTemplatePathByEnv(env.env),\n include: def.include,\n };\n })\n )\n );\n\n return modules;\n }\n\n private computeOutputPath(context: BuildContext, component: Component) {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('no capsule found');\n return join(capsule.path, getArtifactDirectory());\n }\n\n // private async getPreviewModule(envComponent: Component): Promise<ModuleTarget> {\n // const env = this.envs.getEnv(envComponent);\n // const previewDefs = this.preview.getDefs();\n // const modules = compact(await Promise.all(previewDefs.map(async (def) => {\n // if (!def.renderTemplatePathByEnv) return undefined;\n // return [def.prefix, await def.renderTemplatePathByEnv(env.env)];\n // })));\n\n // const exposes = modules.reduce((exposesAcc, [prefix, path]) => {\n // const internalPath = `./${prefix}`;\n // exposesAcc[internalPath] = path;\n // return exposesAcc;\n // }, {});\n\n // return {\n // component: envComponent,\n // exposes\n // };\n // }\n}\n\nexport function getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, 'env-template');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'env-template',\n // globPatterns: [`${getArtifactDirectory()}/**`],\n globPatterns: ['**'],\n rootDir: getArtifactDirectory(),\n // context: env,\n },\n ];\n}\n"]}
@@ -17,6 +17,7 @@ import { BundlingStrategy } from './bundling-strategy';
17
17
  export declare type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;
18
18
  declare type PreviewFiles = {
19
19
  files: string[];
20
+ isBundledWithEnv: boolean;
20
21
  };
21
22
  export declare type ComponentPreviewSizedFile = Asset;
22
23
  export declare type ComponentPreviewSize = {
@@ -127,7 +128,7 @@ export declare class PreviewMain {
127
128
  private updateLinkFiles;
128
129
  writePreviewRuntime(context: {
129
130
  components: Component[];
130
- }): Promise<string>;
131
+ }, aspectsIdsToNotFilterOut?: string[]): Promise<string>;
131
132
  /**
132
133
  * Filter the aspects to have only aspects that are:
133
134
  * 1. core aspects
@@ -465,9 +465,11 @@ class PreviewMain {
465
465
 
466
466
  async getPreviewFiles(component) {
467
467
  const artifacts = await this.getPreview(component);
468
+ const isBundledWithEnv = await this.isBundledWithEnv(component);
468
469
  if (!artifacts) return undefined;
469
470
  return {
470
- files: artifacts.getPaths()
471
+ files: artifacts.getPaths(),
472
+ isBundledWithEnv
471
473
  };
472
474
  }
473
475
  /**
@@ -640,12 +642,12 @@ class PreviewMain {
640
642
  return Promise.all(paths);
641
643
  }
642
644
 
643
- async writePreviewRuntime(context) {
645
+ async writePreviewRuntime(context, aspectsIdsToNotFilterOut = []) {
644
646
  const ui = this.ui.getUi();
645
647
  if (!ui) throw new Error('ui not found');
646
648
  const [name, uiRoot] = ui;
647
649
  const resolvedAspects = await uiRoot.resolveAspects(_preview().PreviewRuntime.name);
648
- const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);
650
+ const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);
649
651
  const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', _preview().PreviewAspect.id);
650
652
  return filePath;
651
653
  }
@@ -659,7 +661,7 @@ class PreviewMain {
659
661
  */
660
662
 
661
663
 
662
- filterAspectsByExecutionContext(aspects, context) {
664
+ filterAspectsByExecutionContext(aspects, context, aspectsIdsToNotFilterOut = []) {
663
665
  let allComponentContextAspects = [];
664
666
  allComponentContextAspects = context.components.reduce((acc, curr) => {
665
667
  return acc.concat(curr.state.aspects.ids);
@@ -671,7 +673,7 @@ class PreviewMain {
671
673
  return false;
672
674
  }
673
675
 
674
- return this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);
676
+ return this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId) || aspectsIdsToNotFilterOut.includes(aspect.getId);
675
677
  });
676
678
  return filtered;
677
679
  }
@@ -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","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","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","data","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByExtensionAndTaskName","PREVIEW_TASK_NAME","length","PreviewArtifact","getPreviewFiles","files","getPaths","isBundledWithEnv","getArtifactsVinylByExtensionAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","artifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","coreEnvDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","envComponent","BitError","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","isSplitComponentBundle","contents","writeLinkContents","targetDir","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","getEnvPreviewConfig","splitComponentBundle","compilerInstance","getCompiler","withPaths","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","getPreviewConfig","getBundlingStrategy","defaultStrategies","envPreviewConfig","strategyFromEnv","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","graphql","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;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","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 { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } 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 } 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 GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\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, PREVIEW_TASK_NAME } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } 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 { COMPONENT_STRATEGY_ARTIFACT_NAME, COMPONENT_STRATEGY_SIZE_KEY_NAME } from './strategies/component-strategy';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\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\ntype PreviewFiles = {\n files: string[];\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n totalAssets: number;\n total: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: string;\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.getArtifactsVinylByExtensionAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts || !artifacts.length) 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 if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n };\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 artifacts = await this.builder.getArtifactsVinylByExtensionAndName(\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 /**\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.getArtifactsVinylByExtensionAndTaskName(\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 defaultModule: string | undefined,\n dirName: string,\n isSplitComponentBundle: boolean\n ) {\n const contents = generateLink(prefix, moduleMap, defaultModule, 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 templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\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, isSplitComponentBundle);\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(this, this.pkg, this.dependencyResolver)];\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 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 ];\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 ]: [\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 ],\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) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));\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([new EnvPreviewTemplateTask(preview, envs), 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 graphql.register(previewSchema(preview));\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","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","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","data","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByExtensionAndTaskName","PREVIEW_TASK_NAME","length","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getArtifactsVinylByExtensionAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","artifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","coreEnvDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","envComponent","BitError","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","isSplitComponentBundle","contents","writeLinkContents","targetDir","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","getEnvPreviewConfig","splitComponentBundle","compilerInstance","getCompiler","withPaths","modulePath","getPreviewComponentRootPath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","recursive","link","all","aspectsIdsToNotFilterOut","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","getPreviewConfig","getBundlingStrategy","defaultStrategies","envPreviewConfig","strategyFromEnv","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","graphql","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;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","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 { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } 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 } 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 GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\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, PREVIEW_TASK_NAME } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } 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 { COMPONENT_STRATEGY_ARTIFACT_NAME, COMPONENT_STRATEGY_SIZE_KEY_NAME } from './strategies/component-strategy';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\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\ntype 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 totalAssets: number;\n total: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: string;\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.getArtifactsVinylByExtensionAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts || !artifacts.length) 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 * 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 artifacts = await this.builder.getArtifactsVinylByExtensionAndName(\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 /**\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.getArtifactsVinylByExtensionAndTaskName(\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 defaultModule: string | undefined,\n dirName: string,\n isSplitComponentBundle: boolean\n ) {\n const contents = generateLink(prefix, moduleMap, defaultModule, 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 templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\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, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\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, aspectsIdsToNotFilterOut);\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(\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 [new EnvBundlingStrategy(this), new ComponentBundlingStrategy(this, this.pkg, this.dependencyResolver)];\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 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 ];\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 ]: [\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 ],\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) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));\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([new EnvPreviewTemplateTask(preview, envs), 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 graphql.register(previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"]}
@@ -174,7 +174,12 @@ class PreviewPreview {
174
174
 
175
175
  async fetchComponentPreview(id, name) {
176
176
  let previewFile;
177
- const allFiles = await this.fetchComponentPreviewFiles(id, name);
177
+ const allFiles = await this.fetchComponentPreviewFiles(id, name); // It's a component bundled with the env
178
+
179
+ if (allFiles === null) {
180
+ return Promise.resolve(undefined);
181
+ }
182
+
178
183
  allFiles.forEach(file => {
179
184
  // We want to run the preview file always last
180
185
  if (file.endsWith('-preview.js')) {
@@ -207,7 +212,11 @@ class PreviewPreview {
207
212
  throw new (_exceptions().PreviewNotFound)(previewName);
208
213
  }
209
214
 
210
- const parsed = await res.json();
215
+ const parsed = await res.json(); // This is component bundled with the env, no reason to bring the files, as they will be the files of the env
216
+
217
+ if (parsed.isBundledWithEnv) {
218
+ return null;
219
+ }
211
220
 
212
221
  if (!parsed.files || !parsed.files.length) {
213
222
  throw new (_exceptions().PreviewNotFound)(previewName);
@@ -1 +1 @@
1
- {"version":3,"sources":["preview.preview.runtime.tsx"],"names":["PREVIEW_MODULES","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","previewName","componentId","getLocation","name","getDefault","preview","getPreview","PreviewNotFound","includesAll","Promise","all","include","map","prevName","includedPreview","undefined","selectPreviewModel","fullName","getPreviewModule","includes","filter","module","render","getRenderingContext","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","componentMap","component","fetchComponentPreview","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","forEach","file","endsWith","addComponentFileElement","resolve","reject","previewScriptElement","getPreviewScriptElement","document","head","appendChild","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","previewAssetsRoute","stringId","toString","url","res","status","parsed","json","files","length","script","createElement","setAttribute","previewRoute","src","link","href","onload","componentPreview","toStringWithoutVersion","targetPreview","registerPreview","register","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","get","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","linkModules","defaultModule","isSplitComponentBundle","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nconst PREVIEW_MODULES: Record<string, PreviewModule> = {};\n\nexport type RenderingContextProvider = () => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n /**\n * render the preview.\n */\n render = async () => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n const includesAll = await Promise.all(\n (preview.include || []).map(async (prevName) => {\n const includedPreview = this.getPreview(prevName);\n if (!includedPreview) return undefined;\n\n return includedPreview.selectPreviewModel?.(\n componentId.fullName,\n await this.getPreviewModule(prevName, componentId)\n );\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n\n return preview.render(\n componentId.fullName,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext()\n );\n };\n\n async getPreviewModule(name: string, id: ComponentID): Promise<PreviewModule> {\n if (PREVIEW_MODULES[name].componentMap[id.fullName]) return PREVIEW_MODULES[name];\n // if (!window[name]) throw new PreviewNotFound(name);\n // const isSplitComponentBundle = PREVIEW_MODULES[name].isSplitComponentBundle ?? false;\n // const component = window[id.toStringWithoutVersion()];\n const component: any = await this.fetchComponentPreview(id, name);\n\n return {\n mainModule: PREVIEW_MODULES[name].mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string) {\n let previewFile;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n allFiles.forEach((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n } else {\n this.addComponentFileElement(id, file);\n }\n });\n return new Promise((resolve, reject) => {\n const previewScriptElement = this.getPreviewScriptElement(id, name, previewFile, resolve, reject);\n document.head.appendChild(previewScriptElement);\n });\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n return this.addComponentFileLinkElement(id, previewBundleFileName);\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[]> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src;\n document.head.appendChild(script);\n return script;\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const link = document.createElement('link');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n link.setAttribute('href', href);\n if (previewBundleFileName.endsWith('.css')) {\n link.setAttribute('rel', 'stylesheet');\n }\n document.head.appendChild(link);\n return link;\n }\n\n private getPreviewScriptElement(id: ComponentID, name: string, previewBundleFileName: string, resolve, reject) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n // const previewRoute = `~aspect/preview`;\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src; // generate path to remote scope. [scope url]/\n script.onload = () => {\n const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];\n if (!componentPreview) return reject(new PreviewNotFound(name));\n const targetPreview = componentPreview[name];\n if (!targetPreview) return resolve(undefined);\n\n return resolve(targetPreview);\n };\n return script;\n }\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext() {\n return new RenderingContext(this.renderingContextSlot);\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nexport function linkModules(\n previewName: string,\n defaultModule: any,\n isSplitComponentBundle: boolean,\n componentMap: { [key: string]: any }\n) {\n PREVIEW_MODULES[previewName] = {\n mainModule: defaultModule,\n isSplitComponentBundle,\n componentMap,\n };\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"]}
1
+ {"version":3,"sources":["preview.preview.runtime.tsx"],"names":["PREVIEW_MODULES","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","previewName","componentId","getLocation","name","getDefault","preview","getPreview","PreviewNotFound","includesAll","Promise","all","include","map","prevName","includedPreview","undefined","selectPreviewModel","fullName","getPreviewModule","includes","filter","module","render","getRenderingContext","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","componentMap","component","fetchComponentPreview","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","resolve","forEach","file","endsWith","addComponentFileElement","reject","previewScriptElement","getPreviewScriptElement","document","head","appendChild","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","previewAssetsRoute","stringId","toString","url","res","status","parsed","json","isBundledWithEnv","files","length","script","createElement","setAttribute","previewRoute","src","link","href","onload","componentPreview","toStringWithoutVersion","targetPreview","registerPreview","register","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","get","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","linkModules","defaultModule","isSplitComponentBundle","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nconst PREVIEW_MODULES: Record<string, PreviewModule> = {};\n\nexport type RenderingContextProvider = () => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n /**\n * render the preview.\n */\n render = async () => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n const includesAll = await Promise.all(\n (preview.include || []).map(async (prevName) => {\n const includedPreview = this.getPreview(prevName);\n if (!includedPreview) return undefined;\n\n return includedPreview.selectPreviewModel?.(\n componentId.fullName,\n await this.getPreviewModule(prevName, componentId)\n );\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n\n return preview.render(\n componentId.fullName,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext()\n );\n };\n\n async getPreviewModule(name: string, id: ComponentID): Promise<PreviewModule> {\n if (PREVIEW_MODULES[name].componentMap[id.fullName]) return PREVIEW_MODULES[name];\n // if (!window[name]) throw new PreviewNotFound(name);\n // const isSplitComponentBundle = PREVIEW_MODULES[name].isSplitComponentBundle ?? false;\n // const component = window[id.toStringWithoutVersion()];\n const component: any = await this.fetchComponentPreview(id, name);\n\n return {\n mainModule: PREVIEW_MODULES[name].mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string) {\n let previewFile;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n // It's a component bundled with the env\n if (allFiles === null) {\n return Promise.resolve(undefined);\n }\n allFiles.forEach((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n } else {\n this.addComponentFileElement(id, file);\n }\n });\n return new Promise((resolve, reject) => {\n const previewScriptElement = this.getPreviewScriptElement(id, name, previewFile, resolve, reject);\n document.head.appendChild(previewScriptElement);\n });\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n return this.addComponentFileLinkElement(id, previewBundleFileName);\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n // This is component bundled with the env, no reason to bring the files, as they will be the files of the env\n if (parsed.isBundledWithEnv) {\n return null;\n }\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src;\n document.head.appendChild(script);\n return script;\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const link = document.createElement('link');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n link.setAttribute('href', href);\n if (previewBundleFileName.endsWith('.css')) {\n link.setAttribute('rel', 'stylesheet');\n }\n document.head.appendChild(link);\n return link;\n }\n\n private getPreviewScriptElement(id: ComponentID, name: string, previewBundleFileName: string, resolve, reject) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n // const previewRoute = `~aspect/preview`;\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src; // generate path to remote scope. [scope url]/\n script.onload = () => {\n const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];\n if (!componentPreview) return reject(new PreviewNotFound(name));\n const targetPreview = componentPreview[name];\n if (!targetPreview) return resolve(undefined);\n\n return resolve(targetPreview);\n };\n return script;\n }\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext() {\n return new RenderingContext(this.renderingContextSlot);\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nexport function linkModules(\n previewName: string,\n defaultModule: any,\n isSplitComponentBundle: boolean,\n componentMap: { [key: string]: any }\n) {\n PREVIEW_MODULES[previewName] = {\n mainModule: defaultModule,\n isSplitComponentBundle,\n componentMap,\n };\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/preview",
3
- "version": "0.0.633",
3
+ "version": "0.0.637",
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.633"
9
+ "version": "0.0.637"
10
10
  },
11
11
  "dependencies": {
12
12
  "mime": "2.5.2",
@@ -21,23 +21,23 @@
21
21
  "@teambit/express": "0.0.528",
22
22
  "@teambit/logger": "0.0.524",
23
23
  "@teambit/ui-foundation.ui.pages.static-error": "0.0.70",
24
- "@teambit/builder": "0.0.633",
25
- "@teambit/bundler": "0.0.633",
26
- "@teambit/component": "0.0.633",
27
- "@teambit/envs": "0.0.633",
28
- "@teambit/isolator": "0.0.633",
24
+ "@teambit/builder": "0.0.637",
25
+ "@teambit/bundler": "0.0.637",
26
+ "@teambit/component": "0.0.637",
27
+ "@teambit/envs": "0.0.637",
28
+ "@teambit/isolator": "0.0.637",
29
29
  "@teambit/toolbox.path.to-windows-compatible-path": "0.0.482",
30
- "@teambit/aspect-loader": "0.0.633",
30
+ "@teambit/aspect-loader": "0.0.637",
31
31
  "@teambit/bit-error": "0.0.394",
32
32
  "@teambit/cli": "0.0.434",
33
- "@teambit/dependency-resolver": "0.0.633",
34
- "@teambit/graphql": "0.0.633",
35
- "@teambit/pkg": "0.0.633",
36
- "@teambit/pubsub": "0.0.633",
37
- "@teambit/ui": "0.0.633",
38
- "@teambit/workspace": "0.0.633",
33
+ "@teambit/dependency-resolver": "0.0.637",
34
+ "@teambit/graphql": "0.0.637",
35
+ "@teambit/pkg": "0.0.637",
36
+ "@teambit/pubsub": "0.0.637",
37
+ "@teambit/ui": "0.0.637",
38
+ "@teambit/workspace": "0.0.637",
39
39
  "@teambit/component-id": "0.0.400",
40
- "@teambit/compiler": "0.0.633",
40
+ "@teambit/compiler": "0.0.637",
41
41
  "@teambit/preview.cli.preview-server-status": "0.0.490",
42
42
  "@teambit/preview.cli.webpack-events-listener": "0.0.160"
43
43
  },
@@ -56,6 +56,7 @@ export type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;
56
56
 
57
57
  type PreviewFiles = {
58
58
  files: string[];
59
+ isBundledWithEnv: boolean;
59
60
  };
60
61
 
61
62
  export type ComponentPreviewSizedFile = Asset;
@@ -149,9 +150,11 @@ export class PreviewMain {
149
150
  */
150
151
  async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {
151
152
  const artifacts = await this.getPreview(component);
153
+ const isBundledWithEnv = await this.isBundledWithEnv(component);
152
154
  if (!artifacts) return undefined;
153
155
  return {
154
156
  files: artifacts.getPaths(),
157
+ isBundledWithEnv,
155
158
  };
156
159
  }
157
160
 
@@ -337,12 +340,12 @@ export class PreviewMain {
337
340
  return Promise.all(paths);
338
341
  }
339
342
 
340
- async writePreviewRuntime(context: { components: Component[] }) {
343
+ async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {
341
344
  const ui = this.ui.getUi();
342
345
  if (!ui) throw new Error('ui not found');
343
346
  const [name, uiRoot] = ui;
344
347
  const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);
345
- const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);
348
+ const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);
346
349
  const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);
347
350
  return filePath;
348
351
  }
@@ -355,7 +358,11 @@ export class PreviewMain {
355
358
  * @param aspects
356
359
  * @param context
357
360
  */
358
- private filterAspectsByExecutionContext(aspects: AspectDefinition[], context: { components: Component[] }) {
361
+ private filterAspectsByExecutionContext(
362
+ aspects: AspectDefinition[],
363
+ context: { components: Component[] },
364
+ aspectsIdsToNotFilterOut: string[] = []
365
+ ) {
359
366
  let allComponentContextAspects: string[] = [];
360
367
  allComponentContextAspects = context.components.reduce((acc, curr) => {
361
368
  return acc.concat(curr.state.aspects.ids);
@@ -366,8 +373,13 @@ export class PreviewMain {
366
373
  if (!aspect.getId) {
367
374
  return false;
368
375
  }
369
- return this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);
376
+ return (
377
+ this.aspectLoader.isCoreAspect(aspect.getId) ||
378
+ allAspectsToInclude.includes(aspect.getId) ||
379
+ aspectsIdsToNotFilterOut.includes(aspect.getId)
380
+ );
370
381
  });
382
+
371
383
  return filtered;
372
384
  }
373
385
 
@@ -93,6 +93,10 @@ export class PreviewPreview {
93
93
  async fetchComponentPreview(id: ComponentID, name: string) {
94
94
  let previewFile;
95
95
  const allFiles = await this.fetchComponentPreviewFiles(id, name);
96
+ // It's a component bundled with the env
97
+ if (allFiles === null) {
98
+ return Promise.resolve(undefined);
99
+ }
96
100
  allFiles.forEach((file) => {
97
101
  // We want to run the preview file always last
98
102
  if (file.endsWith('-preview.js')) {
@@ -114,7 +118,7 @@ export class PreviewPreview {
114
118
  return this.addComponentFileLinkElement(id, previewBundleFileName);
115
119
  }
116
120
 
117
- private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[]> {
121
+ private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {
118
122
  const previewAssetsRoute = `~aspect/preview-assets`;
119
123
  const stringId = id.toString();
120
124
  const url = `/api/${stringId}/${previewAssetsRoute}`;
@@ -124,6 +128,10 @@ export class PreviewPreview {
124
128
  throw new PreviewNotFound(previewName);
125
129
  }
126
130
  const parsed = await res.json();
131
+ // This is component bundled with the env, no reason to bring the files, as they will be the files of the env
132
+ if (parsed.isBundledWithEnv) {
133
+ return null;
134
+ }
127
135
  if (!parsed.files || !parsed.files.length) {
128
136
  throw new PreviewNotFound(previewName);
129
137
  }