@teambit/preview 0.0.674 → 0.0.677

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,4 +1,5 @@
1
1
  import { BuildContext, BuiltTaskResult, BuildTask, TaskLocation, ComponentResult } from '@teambit/builder';
2
+ import { AspectLoaderMain } from '@teambit/aspect-loader';
2
3
  import { Capsule } from '@teambit/isolator';
3
4
  import { BundlerContext, BundlerEntryMap, BundlerResult } from '@teambit/bundler';
4
5
  import type { EnvDefinition, EnvsMain } from '@teambit/envs';
@@ -14,11 +15,15 @@ export declare const PEERS_CHUNK_NAME = "peers";
14
15
  export declare class EnvPreviewTemplateTask implements BuildTask {
15
16
  private preview;
16
17
  private envs;
18
+ private aspectLoader;
17
19
  aspectId: string;
18
20
  name: string;
19
21
  location: TaskLocation;
20
- constructor(preview: PreviewMain, envs: EnvsMain);
22
+ constructor(preview: PreviewMain, envs: EnvsMain, aspectLoader: AspectLoaderMain);
21
23
  execute(context: BuildContext): Promise<BuiltTaskResult>;
24
+ private runBundlerForGroups;
25
+ private shouldUseDefaultBundler;
26
+ private getEnvTargetFromComponent;
22
27
  private generateHtmlConfig;
23
28
  private generateHtmlConfigForPreviewDef;
24
29
  getEntries(previewModules: ModuleExpose[], capsule: Capsule, previewRoot: string, isSplitComponentBundle?: boolean, peers?: string[]): BundlerEntryMap;
@@ -33,6 +33,16 @@ function _builder() {
33
33
  return data;
34
34
  }
35
35
 
36
+ function _pMapSeries() {
37
+ const data = _interopRequireDefault(require("p-map-series"));
38
+
39
+ _pMapSeries = function () {
40
+ return data;
41
+ };
42
+
43
+ return data;
44
+ }
45
+
36
46
  function _component() {
37
47
  const data = require("@teambit/component");
38
48
 
@@ -92,9 +102,10 @@ exports.PEERS_CHUNK_NAME = PEERS_CHUNK_NAME;
92
102
 
93
103
  class EnvPreviewTemplateTask {
94
104
  // readonly dependencies = [CompilerAspect.id];
95
- constructor(preview, envs) {
105
+ constructor(preview, envs, aspectLoader) {
96
106
  this.preview = preview;
97
107
  this.envs = envs;
108
+ this.aspectLoader = aspectLoader;
98
109
  (0, _defineProperty2().default)(this, "aspectId", 'teambit.preview/preview');
99
110
  (0, _defineProperty2().default)(this, "name", GENERATE_ENV_TEMPLATE_TASK_NAME);
100
111
  (0, _defineProperty2().default)(this, "location", 'end');
@@ -105,8 +116,13 @@ class EnvPreviewTemplateTask {
105
116
  const htmlConfig = this.generateHtmlConfig(previewDefs, PREVIEW_ROOT_CHUNK_NAME, PEERS_CHUNK_NAME, {
106
117
  dev: context.dev
107
118
  });
108
- const targets = (0, _lodash().compact)(await Promise.all(context.components.map(async component => {
109
- var _envPreviewConfig$spl;
119
+ const originalSeedersIds = context.capsuleNetwork.originalSeedersCapsules.map(c => c.component.id.toString());
120
+ const grouped = {};
121
+ await Promise.all(context.components.map(async component => {
122
+ // Do not run over other components in the graph. it make the process much longer with no need
123
+ if (originalSeedersIds && originalSeedersIds.length && !originalSeedersIds.includes(component.id.toString())) {
124
+ return undefined;
125
+ }
110
126
 
111
127
  const envDef = this.envs.getEnvFromComponent(component);
112
128
  if (!envDef) return undefined;
@@ -117,62 +133,110 @@ class EnvPreviewTemplateTask {
117
133
  return undefined;
118
134
  }
119
135
 
120
- const envComponent = component;
121
- const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);
122
- const isSplitComponentBundle = (_envPreviewConfig$spl = envPreviewConfig.splitComponentBundle) !== null && _envPreviewConfig$spl !== void 0 ? _envPreviewConfig$spl : false;
123
- const envGetDeps = (await env.getDependencies()) || {};
124
- const envComponentPeers = Object.keys(envGetDeps.peerDependencies || {}) || [];
125
- const envHostDeps = env.getHostDependencies() || [];
126
- const peers = envComponentPeers.concat(envHostDeps); // const module = await this.getPreviewModule(envComponent);
127
- // const entries = Object.keys(module).map((key) => module.exposes[key]);
128
-
129
- const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);
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()]);
134
- const previewModules = await this.getPreviewModules(envDef); // const templatesFile = previewModules.map((template) => {
135
- // return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);
136
- // });
137
-
138
- const outputPath = this.computeOutputPath(context, envComponent);
139
- if (!(0, _fsExtra().existsSync)(outputPath)) (0, _fsExtra().mkdirpSync)(outputPath);
140
- const entries = this.getEntries(previewModules, capsule, previewRoot, isSplitComponentBundle, peers); // const entries = this.getEntries(
141
- // previewModules.concat({
142
- // name: 'main',
143
- // path: previewRoot,
144
- // })
145
- // );
136
+ const target = await this.getEnvTargetFromComponent(context, component, envDef, htmlConfig);
137
+ if (!target) return undefined;
138
+ const shouldUseDefaultBundler = this.shouldUseDefaultBundler(envDef);
139
+ let envToGetBundler = this.envs.getEnvsEnvDefinition().env;
140
+ let groupEnvId = 'default';
146
141
 
147
- return {
148
- // entries: templatesFile.concat(previewRoot),
149
- peers,
150
- runtimeChunkName: 'runtime',
151
- html: htmlConfig,
152
- entries,
153
- chunking: {
154
- splitChunks: true
155
- },
156
- components: [envComponent],
157
- outputPath // modules: [module],
142
+ if (!shouldUseDefaultBundler) {
143
+ envToGetBundler = env;
144
+ groupEnvId = envDef.id;
145
+ }
158
146
 
147
+ if (!grouped[groupEnvId]) {
148
+ grouped[groupEnvId] = {
149
+ env: envToGetBundler,
150
+ targets: [target]
151
+ };
152
+ } else {
153
+ grouped[groupEnvId].targets.push(target);
154
+ }
155
+
156
+ return undefined;
157
+ }));
158
+
159
+ if ((0, _lodash().isEmpty)(grouped)) {
160
+ return {
161
+ componentsResults: []
159
162
  };
160
- })));
161
- if (!targets.length) return {
162
- componentsResults: []
163
- };
163
+ }
164
+
165
+ return this.runBundlerForGroups(context, grouped);
166
+ }
167
+
168
+ async runBundlerForGroups(context, groups) {
164
169
  const bundlerContext = Object.assign((0, _lodash().cloneDeep)(context), {
165
- targets,
170
+ targets: [],
166
171
  entry: [],
167
172
  externalizePeer: false,
168
173
  development: context.dev
169
174
  });
170
- const bundler = await context.env.getBundler(bundlerContext);
171
- const bundlerResults = await bundler.run();
172
- const results = await this.computeResults(bundlerContext, bundlerResults);
175
+ const bundlerResults = await (0, _pMapSeries().default)(Object.entries(groups), async ([, targetsGroup]) => {
176
+ bundlerContext.targets = targetsGroup.targets;
177
+ const bundler = await targetsGroup.env.getTemplateBundler(bundlerContext);
178
+ const bundlerResult = await bundler.run();
179
+ return bundlerResult;
180
+ });
181
+ const results = await this.computeResults(bundlerContext, (0, _lodash().flatten)(bundlerResults));
173
182
  return results;
174
183
  }
175
184
 
185
+ shouldUseDefaultBundler(envDef) {
186
+ if (this.aspectLoader.isCoreEnv(envDef.id)) return true;
187
+ const env = envDef.env;
188
+ if (env.getTemplateBundler && typeof env.getTemplateBundler === 'function') return false;
189
+ return true;
190
+ }
191
+
192
+ async getEnvTargetFromComponent(context, envComponent, envDef, htmlConfig) {
193
+ var _envPreviewConfig$spl;
194
+
195
+ const env = envDef.env;
196
+ const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);
197
+ const isSplitComponentBundle = (_envPreviewConfig$spl = envPreviewConfig.splitComponentBundle) !== null && _envPreviewConfig$spl !== void 0 ? _envPreviewConfig$spl : false;
198
+ let peers;
199
+
200
+ if (env.getHostDependencies && typeof env.getHostDependencies === 'function') {
201
+ peers = (await env.getHostDependencies()) || [];
202
+ } else {
203
+ const envComponentPeers = Object.keys((await env.getDependencies()).peerDependencies || {}) || [];
204
+ let additionalHostDeps = [];
205
+
206
+ if (env.getAdditionalHostDependencies && typeof env.getAdditionalHostDependencies === 'function') {
207
+ additionalHostDeps = await env.getAdditionalHostDependencies();
208
+ }
209
+
210
+ peers = envComponentPeers.concat(additionalHostDeps);
211
+ } // const module = await this.getPreviewModule(envComponent);
212
+ // const entries = Object.keys(module).map((key) => module.exposes[key]);
213
+
214
+
215
+ const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);
216
+ 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
217
+ // that's needed to make sure the providers register there are running correctly
218
+
219
+ const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);
220
+ const previewModules = await this.getPreviewModules(envDef); // const templatesFile = previewModules.map((template) => {
221
+ // return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);
222
+ // });
223
+
224
+ const outputPath = this.computeOutputPath(context, envComponent);
225
+ if (!(0, _fsExtra().existsSync)(outputPath)) (0, _fsExtra().mkdirpSync)(outputPath);
226
+ const entries = this.getEntries(previewModules, capsule, previewRoot, isSplitComponentBundle, peers);
227
+ return {
228
+ peers,
229
+ runtimeChunkName: 'runtime',
230
+ html: htmlConfig,
231
+ entries,
232
+ chunking: {
233
+ splitChunks: true
234
+ },
235
+ components: [envComponent],
236
+ outputPath
237
+ };
238
+ }
239
+
176
240
  generateHtmlConfig(previewDefs, previewRootChunkName, peersChunkName, options) {
177
241
  const htmlConfigs = previewDefs.map(previewModule => this.generateHtmlConfigForPreviewDef(previewModule, previewRootChunkName, peersChunkName, options));
178
242
  return htmlConfigs;
@@ -229,23 +293,23 @@ class EnvPreviewTemplateTask {
229
293
  [PREVIEW_ROOT_CHUNK_NAME]: previewRootEntry,
230
294
  [PEERS_CHUNK_NAME]: peersRootEntry
231
295
  });
232
- return entries; // const mergedEntries = return entriesArr.reduce((entriesMap, entry) => {
233
- // entriesMap[entry.library.name] = entry;
234
- // return entriesMap;
235
- // }, {previewRoot: previewRootEntry});
296
+ return entries;
236
297
  }
237
298
 
238
299
  async computeResults(context, results) {
239
- const result = results[0];
240
- const componentsResults = result.components.map(component => {
241
- return {
242
- component,
243
- errors: result.errors.map(err => typeof err === 'string' ? err : err.message),
244
- warning: result.warnings,
245
- startTime: result.startTime,
246
- endTime: result.endTime
247
- };
300
+ const allResults = results.map(result => {
301
+ const componentsResults = result.components.map(component => {
302
+ return {
303
+ component,
304
+ errors: result.errors.map(err => typeof err === 'string' ? err : err.message),
305
+ warning: result.warnings,
306
+ startTime: result.startTime,
307
+ endTime: result.endTime
308
+ };
309
+ });
310
+ return componentsResults;
248
311
  });
312
+ const componentsResults = (0, _lodash().flatten)(allResults);
249
313
  const artifacts = getArtifactDef();
250
314
  return {
251
315
  componentsResults,
@@ -270,24 +334,7 @@ class EnvPreviewTemplateTask {
270
334
  const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);
271
335
  if (!capsule) throw new Error('no capsule found');
272
336
  return (0, _path().join)(capsule.path, getArtifactDirectory());
273
- } // private async getPreviewModule(envComponent: Component): Promise<ModuleTarget> {
274
- // const env = this.envs.getEnv(envComponent);
275
- // const previewDefs = this.preview.getDefs();
276
- // const modules = compact(await Promise.all(previewDefs.map(async (def) => {
277
- // if (!def.renderTemplatePathByEnv) return undefined;
278
- // return [def.prefix, await def.renderTemplatePathByEnv(env.env)];
279
- // })));
280
- // const exposes = modules.reduce((exposesAcc, [prefix, path]) => {
281
- // const internalPath = `./${prefix}`;
282
- // exposesAcc[internalPath] = path;
283
- // return exposesAcc;
284
- // }, {});
285
- // return {
286
- // component: envComponent,
287
- // exposes
288
- // };
289
- // }
290
-
337
+ }
291
338
 
292
339
  }
293
340
 
@@ -300,10 +347,8 @@ function getArtifactDirectory() {
300
347
  function getArtifactDef() {
301
348
  return [{
302
349
  name: 'env-template',
303
- // globPatterns: [`${getArtifactDirectory()}/**`],
304
350
  globPatterns: ['**'],
305
- rootDir: getArtifactDirectory() // context: env,
306
-
351
+ rootDir: getArtifactDirectory()
307
352
  }];
308
353
  }
309
354
 
@@ -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","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","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 { EnvDefinition, EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { cloneDeep, 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(envDef);\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(cloneDeep(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(envDef: EnvDefinition): Promise<ModuleExpose[]> {\n const previewDefs = this.preview.getDefs();\n\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(envDef.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","aspectLoader","execute","context","previewDefs","getDefs","htmlConfig","generateHtmlConfig","dev","originalSeedersIds","capsuleNetwork","originalSeedersCapsules","map","c","component","id","toString","grouped","Promise","all","components","length","includes","undefined","envDef","getEnvFromComponent","env","bundlingStrategy","getBundlingStrategy","name","target","getEnvTargetFromComponent","shouldUseDefaultBundler","envToGetBundler","getEnvsEnvDefinition","groupEnvId","targets","push","componentsResults","runBundlerForGroups","groups","bundlerContext","Object","assign","entry","externalizePeer","development","bundlerResults","entries","targetsGroup","bundler","getTemplateBundler","bundlerResult","run","results","computeResults","isCoreEnv","envComponent","envPreviewConfig","getEnvPreviewConfig","isSplitComponentBundle","splitComponentBundle","peers","getHostDependencies","envComponentPeers","keys","getDependencies","peerDependencies","additionalHostDeps","getAdditionalHostDependencies","concat","capsule","graphCapsules","getCapsule","Error","previewRoot","writePreviewRuntime","previewModules","getPreviewModules","outputPath","computeOutputPath","getEntries","runtimeChunkName","html","chunking","splitChunks","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","allResults","result","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","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 mapSeries from 'p-map-series';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { Capsule } from '@teambit/isolator';\nimport { Bundler, BundlerContext, BundlerEntryMap, BundlerHtmlConfig, BundlerResult, Target } from '@teambit/bundler';\nimport type { EnvDefinition, Environment, EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { cloneDeep, compact, flatten, isEmpty } 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\ntype TargetsGroup = {\n env: Environment;\n targets: Target[];\n};\ntype TargetsGroupMap = {\n [envId: string]: TargetsGroup;\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, private aspectLoader: AspectLoaderMain) {}\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 originalSeedersIds = context.capsuleNetwork.originalSeedersCapsules.map((c) => c.component.id.toString());\n const grouped: TargetsGroupMap = {};\n await Promise.all(\n context.components.map(async (component) => {\n // Do not run over other components in the graph. it make the process much longer with no need\n if (originalSeedersIds && originalSeedersIds.length && !originalSeedersIds.includes(component.id.toString())) {\n return undefined;\n }\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 target = await this.getEnvTargetFromComponent(context, component, envDef, htmlConfig);\n if (!target) return undefined;\n const shouldUseDefaultBundler = this.shouldUseDefaultBundler(envDef);\n let envToGetBundler = this.envs.getEnvsEnvDefinition().env;\n let groupEnvId = 'default';\n if (!shouldUseDefaultBundler) {\n envToGetBundler = env;\n groupEnvId = envDef.id;\n }\n if (!grouped[groupEnvId]) {\n grouped[groupEnvId] = {\n env: envToGetBundler,\n targets: [target],\n };\n } else {\n grouped[groupEnvId].targets.push(target);\n }\n return undefined;\n })\n );\n if (isEmpty(grouped)) {\n return { componentsResults: [] };\n }\n\n return this.runBundlerForGroups(context, grouped);\n }\n\n private async runBundlerForGroups(context: BuildContext, groups: TargetsGroupMap): Promise<BuiltTaskResult> {\n const bundlerContext: BundlerContext = Object.assign(cloneDeep(context), {\n targets: [],\n entry: [],\n externalizePeer: false,\n development: context.dev,\n });\n const bundlerResults = await mapSeries(Object.entries(groups), async ([, targetsGroup]) => {\n bundlerContext.targets = targetsGroup.targets;\n const bundler: Bundler = await targetsGroup.env.getTemplateBundler(bundlerContext);\n const bundlerResult = await bundler.run();\n return bundlerResult;\n });\n\n const results = await this.computeResults(bundlerContext, flatten(bundlerResults));\n return results;\n }\n\n private shouldUseDefaultBundler(envDef: EnvDefinition): boolean {\n if (this.aspectLoader.isCoreEnv(envDef.id)) return true;\n const env = envDef.env;\n if (env.getTemplateBundler && typeof env.getTemplateBundler === 'function') return false;\n return true;\n }\n\n private async getEnvTargetFromComponent(\n context: BuildContext,\n envComponent: Component,\n envDef: EnvDefinition,\n htmlConfig: BundlerHtmlConfig[]\n ): Promise<Target | undefined> {\n const env = envDef.env;\n const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);\n const isSplitComponentBundle = envPreviewConfig.splitComponentBundle ?? false;\n let peers;\n if (env.getHostDependencies && typeof env.getHostDependencies === 'function') {\n peers = (await env.getHostDependencies()) || [];\n } else {\n const envComponentPeers = Object.keys((await env.getDependencies()).peerDependencies || {}) || [];\n let additionalHostDeps = [];\n if (env.getAdditionalHostDependencies && typeof env.getAdditionalHostDependencies === 'function') {\n additionalHostDeps = await env.getAdditionalHostDependencies();\n }\n peers = envComponentPeers.concat(additionalHostDeps);\n }\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(envDef);\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 return {\n peers,\n runtimeChunkName: 'runtime',\n html: htmlConfig,\n entries,\n chunking: {\n splitChunks: true,\n },\n components: [envComponent],\n outputPath,\n };\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\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const allResults = results.map((result) => {\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 return componentsResults;\n });\n\n const componentsResults = flatten(allResults);\n\n const artifacts = getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n async getPreviewModules(envDef: EnvDefinition): Promise<ModuleExpose[]> {\n const previewDefs = this.preview.getDefs();\n\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(envDef.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\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: ['**'],\n rootDir: getArtifactDirectory(),\n },\n ];\n}\n"]}
@@ -734,7 +734,7 @@ class PreviewMain {
734
734
  bundler.registerTarget([{
735
735
  entry: preview.getPreviewTarget.bind(preview)
736
736
  }]);
737
- if (!config.disabled) builder.registerBuildTasks([new (_envPreviewTemplate().EnvPreviewTemplateTask)(preview, envs), new (_preview3().PreviewTask)(bundler, preview)]);
737
+ if (!config.disabled) builder.registerBuildTasks([new (_envPreviewTemplate().EnvPreviewTemplateTask)(preview, envs, aspectLoader), new (_preview3().PreviewTask)(bundler, preview)]);
738
738
 
739
739
  if (workspace) {
740
740
  workspace.registerOnComponentAdd(c => preview.handleComponentChange(c, currentComponents => currentComponents.add(c)));
@@ -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","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getArtifactsVinylByExtensionAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","length","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;;AAKA;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,MAAMA,UAAU,GAAG;AACjBC,EAAAA,OAAO,EAAE,EADQ;AAEjBC,EAAAA,QAAQ,EAAE,MAAO;AAFA,CAAnB;AAKA,MAAMC,gBAAgB,GAAG,kBAAKC,uBAAL,EAAiBC,yBAAcC,EAA/B,CAAzB;;AAwCO,MAAMC,WAAN,CAAkB;AACvBC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,OAJC;AAMT;AACJ;AACA;AACYC,EAAAA,WATC,EAWDC,EAXC,EAaDC,IAbC,EAeDC,eAfC,EAiBDC,GAjBC,EAmBDC,YAnBC,EAqBAC,MArBA,EAuBDC,oBAvBC,EAyBDC,OAzBC,EA2BDC,SA3BC,EA6BDC,MA7BC,EA+BDC,kBA/BC,EAgCT;AAAA,SA5BQZ,OA4BR,GA5BQA,OA4BR;AAAA,SAvBQC,WAuBR,GAvBQA,WAuBR;AAAA,SArBQC,EAqBR,GArBQA,EAqBR;AAAA,SAnBQC,IAmBR,GAnBQA,IAmBR;AAAA,SAjBQC,eAiBR,GAjBQA,eAiBR;AAAA,SAfQC,GAeR,GAfQA,GAeR;AAAA,SAbQC,YAaR,GAbQA,YAaR;AAAA,SAXSC,MAWT,GAXSA,MAWT;AAAA,SATQC,oBASR,GATQA,oBASR;AAAA,SAPQC,OAOR,GAPQA,OAOR;AAAA,SALQC,SAKR,GALQA,SAKR;AAAA,SAHQC,MAGR,GAHQA,MAGR;AAAA,SADQC,kBACR,GADQA,kBACR;AAAA,uDAwIkB,IAAIC,GAAJ,EAxIlB;AAAA,uDAyIkBC,IAAI,CAACC,GAAL,EAzIlB;AAAA,2DA0KsB,IAAIF,GAAJ,EA1KtB;AAAA,mEA6Q8B,OAAOG,CAAP,EAAqBC,OAArB,KAA4E;AAC1G,YAAMC,GAAG,GAAG,KAAKf,IAAL,CAAUgB,MAAV,CAAiBH,CAAjB,CAAZ;AACA,YAAMI,KAAK,GAAGF,GAAG,CAACrB,EAAJ,CAAOJ,QAAP,EAAd;AAEA,YAAM4B,YAAY,GAAG,KAAKC,aAAL,CAAmBC,GAAnB,CAAuBH,KAAvB,CAArB;;AACA,UAAI,CAACC,YAAL,EAAmB;AACjB,aAAKV,MAAL,CAAYa,IAAZ,CACG,6CAA4CR,CAAC,CAACnB,EAAF,CAAKJ,QAAL,EAAgB,4CAA2C2B,KAAM,EADhH;AAGA,eAAO7B,UAAP;AACD,OAVyG,CAY1G;;;AACA0B,MAAAA,OAAO,CAACI,YAAD,CAAP;AAEA,YAAM,KAAKI,eAAL,CAAqBJ,YAAY,CAACK,iBAAlC,EAAqDL,YAAY,CAACM,YAAlE,CAAN;AAEA,aAAOpC,UAAP;AACD,KA/RC;AAAA,oEAiSgCqC,GAAD,IAAsB;AACrD,UAAIC,SAAJ;AACA,WAAKP,aAAL,CAAmBQ,OAAnB,CAA4BC,UAAD,IAAgB;AACzC,cAAMC,KAAK,GAAGD,UAAU,CAACR,GAAX,CAAeK,GAAf,CAAd;AACA,YAAII,KAAJ,EAAWH,SAAS,GAAGG,KAAZ;AACZ,OAHD;AAIA,UAAI,CAACH,SAAL,EAAgB,OAAOI,OAAO,CAACC,OAAR,CAAgB3C,UAAhB,CAAP;AAEhB,aAAO,KAAK4C,qBAAL,CAA2BN,SAA3B,EAAuCH,iBAAD,IAAuBA,iBAAiB,CAACU,MAAlB,CAAyBR,GAAzB,CAA7D,CAAP;AACD,KA1SC;AAAE;;AAEU,MAAVS,UAAU,GAAW;AAAA;;AACvB,WAAO,yBAAK3B,SAAL,oEAAgB4B,UAAhB,CAA2B1C,yBAAcC,EAAzC,MAAgDH,gBAAvD;AACD;;AAED6C,EAAAA,sBAAsB,CAACV,SAAD,EAAyD;AAC7E,UAAMW,IAAI,GAAG,KAAK/B,OAAL,CAAagC,eAAb,CAA6BZ,SAA7B,EAAwCjC,yBAAcC,EAAtD,CAAb;AAEA,QAAI,CAAC2C,IAAL,EAAW,OAAOE,SAAP;AACX,WAAOF,IAAI,CAACG,qDAAD,CAAX;AACD;;AAEe,QAAVC,UAAU,CAACf,SAAD,EAA6D;AAC3E,UAAMgB,SAAS,GAAG,MAAM,KAAKpC,OAAL,CAAaqC,uCAAb,CACtBjB,SADsB,EAEtBjC,yBAAcC,EAFQ,EAGtBkD,6BAHsB,CAAxB;AAKA,QAAI,CAACF,SAAL,EAAgB,OAAOH,SAAP;AAChB,WAAO,KAAIM,kCAAJ,EAAoBH,SAApB,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;AACuB,QAAfI,eAAe,CAACpB,SAAD,EAA0D;AAC7E,UAAMgB,SAAS,GAAG,MAAM,KAAKD,UAAL,CAAgBf,SAAhB,CAAxB;AACA,UAAMqB,gBAAgB,GAAG,MAAM,KAAKA,gBAAL,CAAsBrB,SAAtB,CAA/B;AACA,QAAI,CAACgB,SAAL,EAAgB,OAAOH,SAAP;AAChB,WAAO;AACLS,MAAAA,KAAK,EAAEN,SAAS,CAACO,QAAV,EADF;AAELF,MAAAA;AAFK,KAAP;AAID;AAED;AACF;AACA;AACA;AACA;AACA;;;AACwB,QAAhBA,gBAAgB,CAACrB,SAAD,EAAyC;AAC7D,UAAMgB,SAAS,GAAG,MAAM,KAAKpC,OAAL,CAAa4C,mCAAb,CACtBxB,SADsB,EAEtBjC,yBAAcC,EAFQ,EAGtByD,qDAHsB,CAAxB;AAKA,QAAI,CAACT,SAAD,IAAc,CAACA,SAAS,CAACU,MAA7B,EAAqC,OAAO,IAAP;AAErC,WAAO,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACsB,QAAdC,cAAc,CAAC3B,SAAD,EAA6D;AAC/E,UAAMgB,SAAS,GAAG,MAAM,KAAKpC,OAAL,CAAaqC,uCAAb,CACtBjB,SADsB,EAEtBjC,yBAAcC,EAFQ,EAGtB4D,qDAHsB,CAAxB;AAKA,QAAI,CAACZ,SAAD,IAAc,CAACA,SAAS,CAACU,MAA7B,EAAqC,OAAOb,SAAP;AAErC,WAAO,KAAIM,kCAAJ,EAAoBH,SAApB,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;AACkC,QAAlBa,kBAAkB,CAACtC,KAAD,EAAsD;AACpF,UAAMuC,UAAU,GAAG,kCAAavC,KAAb,CAAnB,CADoF,CAEpF;;AACA,UAAMwC,WAAW,GAAG,4CAA4B,CAA5B,CAApB;AACA,UAAMC,eAAe,GAAG,KAAIC,0BAAJ,GAAxB;AAEA,QAAIC,OAAO,GAAGF,eAAe,CAACG,UAAhB,CAA2BL,UAA3B,EAAuCC,WAAvC,CAAd;;AACA,QAAI,CAAC,2BAAWG,OAAX,CAAL,EAA0B;AACxB;AACA,YAAME,iBAAiB,GAAG,yCAAoB7C,KAApB,CAA1B;AACA2C,MAAAA,OAAO,GAAGF,eAAe,CAACG,UAAhB,CAA2BC,iBAA3B,EAA8CL,WAA9C,CAAV;AACD;;AACD,QAAI,CAAC,2BAAWG,OAAX,CAAL,EAA0B;AACxB,aAAOrB,SAAP;AACD;;AACD,UAAMwB,KAAK,GAAGL,eAAe,CAACM,YAAhB,CAA6BJ,OAA7B,EAAsCH,WAAtC,CAAd;;AACA,QAAI,CAACM,KAAD,IAAU,CAACA,KAAK,CAACX,MAArB,EAA6B;AAC3B,aAAOb,SAAP;AACD;;AACD,UAAM0B,aAAa,GAAG,KAAIC,8BAAJ,EAAkBH,KAAlB,CAAtB;AAEAE,IAAAA,aAAa,CAACE,uBAAd,CAAsCP,OAAtC;AACA,WAAO,KAAIf,kCAAJ,EAAoBoB,aAAa,CAACG,MAAlC,CAAP;AACD;AAED;AACF;AACA;AACA;;;AACsC,QAA9BC,8BAA8B,CAAC3C,SAAD,EAA6D;AAC/F,UAAMT,KAAK,GAAG,KAAKjB,IAAL,CAAUsE,QAAV,CAAmB5C,SAAnB,CAAd;AACA,WAAO,KAAK6C,qBAAL,CAA2BtD,KAA3B,CAAP;AACD;AAED;AACF;AACA;AACA;;;AAC6B,QAArBsD,qBAAqB,CAACtD,KAAD,EAAsD;AAC/E;AACA,QAAI,KAAKd,YAAL,CAAkBqE,SAAlB,CAA4BvD,KAA5B,CAAJ,EAAwC;AACtC,aAAO,KAAKsC,kBAAL,CAAwBtC,KAAxB,CAAP;AACD;;AACD,UAAMwD,IAAI,GAAG,KAAKxE,eAAL,CAAqByE,OAArB,EAAb;AACA,UAAMC,aAAa,GAAG,MAAMF,IAAI,CAACG,kBAAL,CAAwB3D,KAAxB,CAA5B;AACA,UAAM4D,YAAY,GAAG,MAAMJ,IAAI,CAACrD,GAAL,CAASuD,aAAT,CAA3B;;AACA,QAAI,CAACE,YAAL,EAAmB;AACjB,YAAM,KAAIC,oBAAJ,EAAc,6BAA4B7D,KAAM,EAAhD,CAAN;AACD;;AACD,WAAO,KAAKoC,cAAL,CAAoBwB,YAApB,CAAP;AACD;;AAEDE,EAAAA,OAAO,GAAwB;AAC7B,WAAO,KAAKjF,WAAL,CAAiBkF,MAAjB,EAAP;AACD;;AAKD;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,SAAS,CACPC,MADO,EAEPC,SAFO,EAGPC,aAHO,EAIPC,OAJO,EAKPC,sBALO,EAMP;AACA,UAAMC,QAAQ,GAAG,kCAAaL,MAAb,EAAqBC,SAArB,EAAgCC,aAAhC,EAA+CE,sBAA/C,CAAjB;AACA,WAAO,KAAKE,iBAAL,CAAuBD,QAAvB,EAAiCF,OAAjC,EAA0CH,MAA1C,CAAP;AACD;;AAEDM,EAAAA,iBAAiB,CAACD,QAAD,EAAmBE,SAAnB,EAAsCP,MAAtC,EAAsD;AACrE,UAAMQ,IAAI,GAAG,2BAAWH,QAAX,CAAb;AACA,UAAMI,UAAU,GAAG,kBAAKF,SAAL,EAAiB,GAAEP,MAAO,IAAG,KAAKU,SAAU,KAA5C,CAAnB,CAFqE,CAIrE;;AACA,QAAI,KAAKC,SAAL,CAAezE,GAAf,CAAmBuE,UAAnB,MAAmCD,IAAvC,EAA6C;AAC3C,oCAAcC,UAAd,EAA0BJ,QAA1B;AACA,WAAKM,SAAL,CAAeC,GAAf,CAAmBH,UAAnB,EAA+BD,IAA/B;AACD;;AAED,WAAOC,UAAP;AACD;;AAI6B,QAAhBI,gBAAgB;AAC5B;AACAC,EAAAA,OAF4B,EAGT;AACnB;AACA;AACA,KAACA,OAAO,CAACtG,EAAT,EAAa,GAAGsG,OAAO,CAACC,eAAxB,EAAyCtE,OAAzC,CAAkDuE,KAAD,IAAW;AAC1D,WAAK/E,aAAL,CAAmB2E,GAAnB,CAAuBI,KAAvB,EAA8B,KAAIC,4BAAJ,EAAiBH,OAAjB,CAA9B;AACD,KAFD;AAIA,UAAMI,cAAc,GAAG,MAAM,KAAKC,mBAAL,CAAyBL,OAAzB,CAA7B;AACA,UAAMM,SAAS,GAAG,MAAM,KAAKhF,eAAL,CAAqB0E,OAAO,CAACpE,UAA7B,EAAyCoE,OAAzC,CAAxB;AAEA,WAAO,CAAC,GAAGM,SAAJ,EAAeF,cAAf,CAAP;AACD;;AAEO9E,EAAAA,eAAe,CAACM,UAAuB,GAAG,EAA3B,EAA+BoE,OAA/B,EAA0D;AAC/E,UAAMO,QAAQ,GAAG,KAAKzG,WAAL,CAAiBkF,MAAjB,EAAjB;AACA,UAAMjB,KAAK,GAAGwC,QAAQ,CAACC,GAAT,CAAa,MAAOC,UAAP,IAAsB;AAAA;;AAC/C,YAAMC,YAAY,GAAG,gCAAMD,UAAU,CAACE,kBAAjB,0DAAM,2BAAAF,UAAU,EAAsBT,OAAtB,CAAhB,CAArB;AAEA,YAAMQ,GAAG,GAAG,MAAMC,UAAU,CAACG,YAAX,CAAwBhF,UAAxB,CAAlB;AACA,YAAMiF,WAAW,GAAGb,OAAO,CAACc,UAAR,CAAmB/F,GAAvC;AACA,YAAMuE,sBAAsB,4BAAG,KAAKyB,mBAAL,GAA2BC,oBAA9B,yEAAsD,KAAlF;AACA,YAAMC,gBAAgB,4BAAGJ,WAAW,CAACK,WAAf,0DAAG,2BAAAL,WAAW,CAApC;AACA,YAAMM,SAAS,GAAGX,GAAG,CAACA,GAAJ,CAAkB,CAACxD,KAAD,EAAQtB,SAAR,KAAsB;AAAA;;AACxD,cAAM0F,UAAU,GACd,CAAAH,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,qCAAAA,gBAAgB,CAAEI,2BAAlB,qFAAAJ,gBAAgB,EAAgCvF,SAAhC,CAAhB,KAA8D,KAAKxB,GAAL,CAASoH,aAAT,CAAuB5F,SAAvB,CADhE;AAEA,eAAOsB,KAAK,CAACwD,GAAN,CAAWe,IAAD,IAAU;AACzB,cAAI,CAAC,KAAKhH,SAAN,IAAmB,CAAC0G,gBAAxB,EAA0C;AACxC,mBAAOM,IAAI,CAACC,IAAZ;AACD;;AACD,gBAAMC,gBAAgB,GAAGR,gBAAgB,CAACS,oBAAjB,CAAsCH,IAAI,CAACI,QAA3C,CAAzB;AACA,iBAAO,kBAAK,KAAKpH,SAAL,CAAeiH,IAApB,EAA0BJ,UAA1B,EAAsCK,gBAAtC,CAAP;AACD,SANM,CAAP,CAHwD,CAUxD;AACD,OAXiB,CAAlB;AAaA,YAAMG,OAAO,GAAG,kBAAK,KAAK1F,UAAV,EAAsB8D,OAAO,CAACtG,EAA9B,CAAhB;AACA,UAAI,CAAC,2BAAWkI,OAAX,CAAL,EAA0B,0BAAUA,OAAV,EAAmB;AAAEC,QAAAA,SAAS,EAAE;AAAb,OAAnB;AAE1B,YAAMC,IAAI,GAAG,KAAK7C,SAAL,CAAewB,UAAU,CAACvB,MAA1B,EAAkCiC,SAAlC,EAA6CT,YAA7C,EAA2DkB,OAA3D,EAAoEtC,sBAApE,CAAb;AACA,aAAOwC,IAAP;AACD,KAzBa,CAAd;AA2BA,WAAOhG,OAAO,CAACiG,GAAR,CAAYhE,KAAZ,CAAP;AACD;;AAEwB,QAAnBsC,mBAAmB,CAACL,OAAD,EAAuCgC,wBAAkC,GAAG,EAA5E,EAAgF;AACvG,UAAMjI,EAAE,GAAG,KAAKA,EAAL,CAAQkI,KAAR,EAAX;AACA,QAAI,CAAClI,EAAL,EAAS,MAAM,IAAImI,KAAJ,CAAU,cAAV,CAAN;AACT,UAAM,CAACC,IAAD,EAAOC,MAAP,IAAiBrI,EAAvB;AACA,UAAMsI,eAAe,GAAG,MAAMD,MAAM,CAACE,cAAP,CAAsBC,0BAAeJ,IAArC,CAA9B;AACA,UAAMK,eAAe,GAAG,KAAKC,+BAAL,CAAqCJ,eAArC,EAAsDrC,OAAtD,EAA+DgC,wBAA/D,CAAxB;AACA,UAAMU,QAAQ,GAAG,MAAM,KAAK3I,EAAL,CAAQ4I,YAAR,CAAqBH,eAArB,EAAsCL,IAAtC,EAA4C,SAA5C,EAAuD1I,yBAAcC,EAArE,CAAvB;AACA,WAAOgJ,QAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACUD,EAAAA,+BAA+B,CACrCG,OADqC,EAErC5C,OAFqC,EAGrCgC,wBAAkC,GAAG,EAHA,EAIrC;AACA,QAAIa,0BAAoC,GAAG,EAA3C;AACAA,IAAAA,0BAA0B,GAAG7C,OAAO,CAACpE,UAAR,CAAmBkH,MAAnB,CAA0B,CAACC,GAAD,EAAMC,IAAN,KAAe;AACpE,aAAOD,GAAG,CAACE,MAAJ,CAAWD,IAAI,CAACE,KAAL,CAAWN,OAAX,CAAmBO,GAA9B,CAAP;AACD,KAF4B,EAE1BN,0BAF0B,CAA7B;AAGA,UAAMO,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAY,KAAKzJ,OAAL,CAAaO,MAAb,CAAoBmJ,QAApB,EAAZ,CAApB;AACA,UAAMC,mBAAmB,GAAG,oBAAKJ,WAAW,CAACH,MAAZ,CAAmBJ,0BAAnB,CAAL,CAA5B;AACA,UAAMY,QAAQ,GAAGb,OAAO,CAACc,MAAR,CAAgBC,MAAD,IAAY;AAC1C,UAAI,CAACA,MAAM,CAACC,KAAZ,EAAmB;AACjB,eAAO,KAAP;AACD;;AACD,aACE,KAAKzJ,YAAL,CAAkB0J,YAAlB,CAA+BF,MAAM,CAACC,KAAtC,KACAJ,mBAAmB,CAACM,QAApB,CAA6BH,MAAM,CAACC,KAApC,CADA,IAEA5B,wBAAwB,CAAC8B,QAAzB,CAAkCH,MAAM,CAACC,KAAzC,CAHF;AAKD,KATgB,CAAjB;AAWA,WAAOH,QAAP;AACD;;AAEOM,EAAAA,oBAAoB,GAAG;AAC7B,WAAO,CAAC,KAAIC,iCAAJ,EAAwB,IAAxB,CAAD,EAAgC,KAAIC,uCAAJ,EAA8B,IAA9B,EAAoC,KAAK/J,GAAzC,EAA8C,KAAKO,kBAAnD,CAAhC,CAAP;AACD,GA1SsB,CA4SvB;AACA;;;AAgCAsG,EAAAA,mBAAmB,CAAChG,GAAD,EAAqC;AACtD,UAAMX,MAAM,GAAGW,GAAG,SAAH,IAAAA,GAAG,WAAH,IAAAA,GAAG,CAAEmJ,gBAAL,IAAyB,QAAOnJ,GAAP,aAAOA,GAAP,uBAAOA,GAAG,CAAEmJ,gBAAZ,MAAiC,UAA1D,GAAuEnJ,GAAvE,aAAuEA,GAAvE,uBAAuEA,GAAG,CAAEmJ,gBAAL,EAAvE,GAAiG,EAAhH;AAEA,WAAO9J,MAAP;AACD;AAED;AACF;AACA;;;AACE+J,EAAAA,mBAAmB,CAACpJ,GAAD,EAAqC;AACtD,UAAMqJ,iBAAiB,GAAG,KAAKL,oBAAL,EAA1B;AACA,UAAMM,gBAAgB,GAAG,KAAKtD,mBAAL,CAAyBhG,GAAzB,CAAzB;AACA,UAAMuJ,eAAe,GAAGD,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,CAAEE,YAA1C;AACA,UAAMA,YAAY,GAAGD,eAAe,IAAI,KAAKlK,MAAL,CAAYoK,gBAA/B,IAAmD,KAAxE;AACA,UAAMC,UAAU,GAAG,KAAKpK,oBAAL,CAA0B2E,MAA1B,GAAmCiE,MAAnC,CAA0CmB,iBAA1C,CAAnB;AACA,UAAMM,QAAQ,GAAGD,UAAU,CAACE,IAAX,CAAiBC,QAAD,IAAc;AAC7C,aAAOA,QAAQ,CAACzC,IAAT,KAAkBoC,YAAzB;AACD,KAFgB,CAAjB;AAIA,QAAI,CAACG,QAAL,EAAe,MAAM,KAAIG,sCAAJ,EAA6BN,YAA7B,CAAN;AAEf,WAAOG,QAAP;AACD;AAED;AACF;AACA;;;AACEI,EAAAA,wBAAwB,CAACN,gBAAD,EAAqC;AAC3D,SAAKnK,oBAAL,CAA0B0K,QAA1B,CAAmCP,gBAAnC;AACA,WAAO,IAAP;AACD;AAED;AACF;AACA;;;AACEQ,EAAAA,kBAAkB,CAACvE,UAAD,EAAgC;AAChD,SAAK3G,WAAL,CAAiBiL,QAAjB,CAA0BtE,UAA1B;AACD;;AAwBoB,eAARwE,QAAQ,EACnB;AACA,GACEC,OADF,EAEE5K,OAFF,EAGE6K,kBAHF,EAIEC,MAJF,EAKEpL,IALF,EAMEO,SANF,EAOEL,GAPF,EAQEmL,MARF,EASElL,YATF,EAUEmL,UAVF,EAWE7K,kBAXF,EAYE8K,OAZF,CAFmB,EA6BnBnL,MA7BmB,EA8BnB,CAACN,WAAD,EAAcO,oBAAd,CA9BmB,EA+BnBR,OA/BmB,EAgCnB;AACA,UAAMW,MAAM,GAAG8K,UAAU,CAACE,YAAX,CAAwB/L,yBAAcC,EAAtC,CAAf,CADA,CAEA;;AACA,UAAM+L,OAAO,GAAG,IAAI9L,WAAJ,CACdE,OADc,EAEdC,WAFc,EAGdsL,MAHc,EAIdpL,IAJc,EAKdmL,kBALc,EAMdjL,GANc,EAOdC,YAPc,EAQdC,MARc,EASdC,oBATc,EAUdC,OAVc,EAWdC,SAXc,EAYdC,MAZc,EAadC,kBAbc,CAAhB;AAgBA,QAAIF,SAAJ,EAAe6K,MAAM,CAACM,mBAAP,CAA2B,KAAIC,8BAAJ,EAAuBpL,SAAvB,EAAkC2K,OAAlC,EAA2CE,MAA3C,EAAmDC,MAAnD,EAA2D7K,MAA3D,CAA3B;AAEf2K,IAAAA,kBAAkB,CAACS,aAAnB,CAAiC,CAC/B,KAAIC,wBAAJ,EAAiBJ,OAAjB,EAA0BjL,MAA1B,CAD+B,EAE/B,KAAIsL,yCAAJ,EAA0BL,OAA1B,EAAmCjL,MAAnC,CAF+B,EAG/B;AACA,SAAIuL,+BAAJ,EAAqBN,OAArB,EAA8BjL,MAA9B,CAJ+B,EAK/B,KAAIwL,mCAAJ,EAAuBP,OAAvB,EAAgCjL,MAAhC,CAL+B,CAAjC;AAQA0K,IAAAA,OAAO,CAACe,cAAR,CAAuB,CACrB;AACEC,MAAAA,KAAK,EAAET,OAAO,CAAC1F,gBAAR,CAAyBoG,IAAzB,CAA8BV,OAA9B;AADT,KADqB,CAAvB;AAMA,QAAI,CAACrL,MAAM,CAACgM,QAAZ,EACE9L,OAAO,CAAC+L,kBAAR,CAA2B,CAAC,KAAIC,4CAAJ,EAA2Bb,OAA3B,EAAoCzL,IAApC,CAAD,EAA4C,KAAIuM,uBAAJ,EAAgBrB,OAAhB,EAAyBO,OAAzB,CAA5C,CAA3B;;AAEF,QAAIlL,SAAJ,EAAe;AACbA,MAAAA,SAAS,CAACiM,sBAAV,CAAkC3L,CAAD,IAC/B4K,OAAO,CAACzJ,qBAAR,CAA8BnB,CAA9B,EAAkCU,iBAAD,IAAuBA,iBAAiB,CAACkL,GAAlB,CAAsB5L,CAAtB,CAAxD,CADF;AAGAN,MAAAA,SAAS,CAACmM,yBAAV,CAAqC7L,CAAD,IAClC4K,OAAO,CAACzJ,qBAAR,CAA8BnB,CAA9B,EAAkCU,iBAAD,IAAuBA,iBAAiB,CAACoL,MAAlB,CAAyB9L,CAAzB,CAAxD,CADF;AAGAN,MAAAA,SAAS,CAACqM,yBAAV,CAAqCnL,GAAD,IAASgK,OAAO,CAACoB,sBAAR,CAA+BpL,GAA/B,CAA7C;AACD;;AAED8J,IAAAA,OAAO,CAACR,QAAR,CAAiB,+BAAcU,OAAd,CAAjB;AAEA,WAAOA,OAAP;AACD;;AA7dsB;;;gCAAZ9L,W,WAoXI,CAACmN,gBAAKC,QAAL,EAAD,EAAqCD,gBAAKC,QAAL,EAArC,C;gCApXJpN,W,aAsXMqN,kB;gCAtXNrN,W,kBAuXW,CACpBsN,wBADoB,EAEpBC,wBAFoB,EAGpBC,4BAHoB,EAIpBC,cAJoB,EAKpBC,kBALoB,EAMpBC,oBANoB,EAOpBC,gBAPoB,EAQpBC,sBARoB,EASpBC,kCAToB,EAUpBC,sBAVoB,EAWpBC,8CAXoB,EAYpBC,kBAZoB,C;gCAvXXjO,W,mBAsYY;AACrByM,EAAAA,QAAQ,EAAE;AADW,C;;AA0FzB3M,yBAAcoO,UAAd,CAAyBlO,WAAzB","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 compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type 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) 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"]}
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","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getArtifactsVinylByExtensionAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","length","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 compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type 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) 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([\n new EnvPreviewTemplateTask(preview, envs, aspectLoader),\n new PreviewTask(bundler, preview),\n ]);\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"]}
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "@teambit/preview",
3
- "version": "0.0.674",
3
+ "version": "0.0.677",
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.674"
9
+ "version": "0.0.677"
10
10
  },
11
11
  "dependencies": {
12
12
  "mime": "2.5.2",
13
13
  "fs-extra": "10.0.0",
14
14
  "lodash": "4.17.21",
15
+ "p-map-series": "2.1.0",
15
16
  "@teambit/harmony": "0.2.11",
16
17
  "graphql-tag": "2.12.1",
17
18
  "object-hash": "2.1.1",
@@ -20,26 +21,26 @@
20
21
  "graphql-request": "3.4.0",
21
22
  "@babel/runtime": "7.12.18",
22
23
  "core-js": "^3.0.0",
23
- "@teambit/express": "0.0.548",
24
- "@teambit/logger": "0.0.544",
24
+ "@teambit/express": "0.0.549",
25
+ "@teambit/logger": "0.0.545",
25
26
  "@teambit/ui-foundation.ui.pages.static-error": "0.0.71",
26
- "@teambit/builder": "0.0.674",
27
- "@teambit/bundler": "0.0.674",
28
- "@teambit/component": "0.0.674",
29
- "@teambit/envs": "0.0.674",
30
- "@teambit/isolator": "0.0.674",
27
+ "@teambit/builder": "0.0.677",
28
+ "@teambit/bundler": "0.0.677",
29
+ "@teambit/component": "0.0.677",
30
+ "@teambit/aspect-loader": "0.0.677",
31
+ "@teambit/envs": "0.0.677",
32
+ "@teambit/isolator": "0.0.677",
31
33
  "@teambit/toolbox.path.to-windows-compatible-path": "0.0.483",
32
34
  "@teambit/component-id": "0.0.401",
33
- "@teambit/aspect-loader": "0.0.674",
34
35
  "@teambit/bit-error": "0.0.394",
35
- "@teambit/cli": "0.0.452",
36
- "@teambit/dependency-resolver": "0.0.674",
37
- "@teambit/graphql": "0.0.674",
38
- "@teambit/pkg": "0.0.674",
39
- "@teambit/pubsub": "0.0.674",
40
- "@teambit/ui": "0.0.674",
41
- "@teambit/workspace": "0.0.674",
42
- "@teambit/compiler": "0.0.674",
36
+ "@teambit/cli": "0.0.453",
37
+ "@teambit/dependency-resolver": "0.0.677",
38
+ "@teambit/graphql": "0.0.677",
39
+ "@teambit/pkg": "0.0.677",
40
+ "@teambit/pubsub": "0.0.677",
41
+ "@teambit/ui": "0.0.677",
42
+ "@teambit/workspace": "0.0.677",
43
+ "@teambit/compiler": "0.0.677",
43
44
  "@teambit/preview.cli.preview-server-status": "0.0.491",
44
45
  "@teambit/preview.cli.webpack-events-listener": "0.0.161"
45
46
  },
@@ -58,7 +59,7 @@
58
59
  "@teambit/preview.aspect-docs.preview": "0.0.134"
59
60
  },
60
61
  "peerDependencies": {
61
- "@teambit/legacy": "1.0.231",
62
+ "@teambit/legacy": "1.0.232",
62
63
  "react-dom": "^16.8.0 || ^17.0.0",
63
64
  "react": "^16.8.0 || ^17.0.0"
64
65
  },
@@ -86,7 +87,7 @@
86
87
  "react": "-"
87
88
  },
88
89
  "peerDependencies": {
89
- "@teambit/legacy": "1.0.231",
90
+ "@teambit/legacy": "1.0.232",
90
91
  "react-dom": "^16.8.0 || ^17.0.0",
91
92
  "react": "^16.8.0 || ^17.0.0"
92
93
  }
@@ -1 +1 @@
1
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.674/dist/preview.docs.mdx')]
1
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.677/dist/preview.docs.mdx')]
@@ -552,7 +552,10 @@ export class PreviewMain {
552
552
  ]);
553
553
 
554
554
  if (!config.disabled)
555
- builder.registerBuildTasks([new EnvPreviewTemplateTask(preview, envs), new PreviewTask(bundler, preview)]);
555
+ builder.registerBuildTasks([
556
+ new EnvPreviewTemplateTask(preview, envs, aspectLoader),
557
+ new PreviewTask(bundler, preview),
558
+ ]);
556
559
 
557
560
  if (workspace) {
558
561
  workspace.registerOnComponentAdd((c) =>