@teambit/preview 0.0.621 → 0.0.629
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__preview-1642994756471.js +1 -0
- package/dist/artifact-file-middleware.d.ts +12 -0
- package/dist/artifact-file-middleware.js +81 -0
- package/dist/artifact-file-middleware.js.map +1 -0
- package/dist/bundling-strategy.d.ts +6 -1
- package/dist/component-preview.route.d.ts +20 -0
- package/dist/component-preview.route.js +83 -0
- package/dist/component-preview.route.js.map +1 -0
- package/dist/env-preview-template.task.d.ts +42 -0
- package/dist/env-preview-template.task.js +309 -0
- package/dist/env-preview-template.task.js.map +1 -0
- package/dist/env-template.route.d.ts +26 -0
- package/dist/env-template.route.js +89 -0
- package/dist/env-template.route.js.map +1 -0
- package/dist/generate-link.d.ts +1 -1
- package/dist/generate-link.js +3 -3
- package/dist/generate-link.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/preview-artifact.d.ts +2 -0
- package/dist/preview-artifact.js +21 -0
- package/dist/preview-artifact.js.map +1 -1
- package/dist/preview-assets.route.d.ts +19 -0
- package/dist/preview-assets.route.js +66 -0
- package/dist/preview-assets.route.js.map +1 -0
- package/dist/preview-definition.d.ts +16 -3
- package/dist/preview.graphql.d.ts +8 -1
- package/dist/preview.graphql.js +13 -2
- package/dist/preview.graphql.js.map +1 -1
- package/dist/preview.main.runtime.d.ts +78 -11
- package/dist/preview.main.runtime.js +251 -18
- package/dist/preview.main.runtime.js.map +1 -1
- package/dist/preview.preview.runtime.d.ts +11 -2
- package/dist/preview.preview.runtime.js +124 -6
- package/dist/preview.preview.runtime.js.map +1 -1
- package/dist/preview.route.d.ts +3 -7
- package/dist/preview.route.js +22 -21
- package/dist/preview.route.js.map +1 -1
- package/dist/preview.task.d.ts +2 -2
- package/dist/preview.task.js +25 -24
- package/dist/preview.task.js.map +1 -1
- package/dist/strategies/component-strategy.d.ts +52 -12
- package/dist/strategies/component-strategy.js +348 -20
- package/dist/strategies/component-strategy.js.map +1 -1
- package/dist/strategies/env-strategy.d.ts +7 -5
- package/dist/strategies/env-strategy.js +27 -1
- package/dist/strategies/env-strategy.js.map +1 -1
- package/dist/strategies/generate-component-link.d.ts +5 -0
- package/dist/strategies/generate-component-link.js +25 -0
- package/dist/strategies/generate-component-link.js.map +1 -0
- package/dist/types/preview-module.d.ts +1 -0
- package/dist/webpack/html.d.ts +2 -0
- package/dist/webpack/html.js +31 -0
- package/dist/webpack/html.js.map +1 -0
- package/dist/webpack/index.d.ts +1 -0
- package/dist/webpack/index.js +23 -0
- package/dist/webpack/index.js.map +1 -0
- package/package-tar/teambit-preview-0.0.629.tgz +0 -0
- package/package.json +29 -26
- package/preview.main.runtime.tsx +235 -23
- package/preview.preview.runtime.tsx +123 -7
- package/strategies/component-strategy.ts +329 -23
- package/strategies/env-strategy.ts +28 -10
- package/strategies/generate-component-link.ts +19 -0
- package/types/preview-module.ts +2 -0
- package/webpack/html.ts +22 -0
- package/webpack/index.ts +1 -0
- package/package-tar/teambit-preview-0.0.621.tgz +0 -0
|
@@ -111,6 +111,16 @@ function _constants() {
|
|
|
111
111
|
return data;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
function _bitError() {
|
|
115
|
+
const data = require("@teambit/bit-error");
|
|
116
|
+
|
|
117
|
+
_bitError = function () {
|
|
118
|
+
return data;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
return data;
|
|
122
|
+
}
|
|
123
|
+
|
|
114
124
|
function _objectHash() {
|
|
115
125
|
const data = _interopRequireDefault(require("object-hash"));
|
|
116
126
|
|
|
@@ -191,6 +201,36 @@ function _logger() {
|
|
|
191
201
|
return data;
|
|
192
202
|
}
|
|
193
203
|
|
|
204
|
+
function _dependencyResolver() {
|
|
205
|
+
const data = require("@teambit/dependency-resolver");
|
|
206
|
+
|
|
207
|
+
_dependencyResolver = function () {
|
|
208
|
+
return data;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
return data;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function _artifactFiles() {
|
|
215
|
+
const data = require("@teambit/legacy/dist/consumer/component/sources/artifact-files");
|
|
216
|
+
|
|
217
|
+
_artifactFiles = function () {
|
|
218
|
+
return data;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
return data;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function _graphql() {
|
|
225
|
+
const data = _interopRequireDefault(require("@teambit/graphql"));
|
|
226
|
+
|
|
227
|
+
_graphql = function () {
|
|
228
|
+
return data;
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
return data;
|
|
232
|
+
}
|
|
233
|
+
|
|
194
234
|
function _exceptions() {
|
|
195
235
|
const data = require("./exceptions");
|
|
196
236
|
|
|
@@ -281,6 +321,66 @@ function _preview4() {
|
|
|
281
321
|
return data;
|
|
282
322
|
}
|
|
283
323
|
|
|
324
|
+
function _envPreviewTemplate() {
|
|
325
|
+
const data = require("./env-preview-template.task");
|
|
326
|
+
|
|
327
|
+
_envPreviewTemplate = function () {
|
|
328
|
+
return data;
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
return data;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
function _envTemplate() {
|
|
335
|
+
const data = require("./env-template.route");
|
|
336
|
+
|
|
337
|
+
_envTemplate = function () {
|
|
338
|
+
return data;
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
return data;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
function _componentPreview() {
|
|
345
|
+
const data = require("./component-preview.route");
|
|
346
|
+
|
|
347
|
+
_componentPreview = function () {
|
|
348
|
+
return data;
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
return data;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
function _componentStrategy() {
|
|
355
|
+
const data = require("./strategies/component-strategy");
|
|
356
|
+
|
|
357
|
+
_componentStrategy = function () {
|
|
358
|
+
return data;
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
return data;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
function _preview5() {
|
|
365
|
+
const data = require("./preview.graphql");
|
|
366
|
+
|
|
367
|
+
_preview5 = function () {
|
|
368
|
+
return data;
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
return data;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
function _previewAssets() {
|
|
375
|
+
const data = require("./preview-assets.route");
|
|
376
|
+
|
|
377
|
+
_previewAssets = function () {
|
|
378
|
+
return data;
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
return data;
|
|
382
|
+
}
|
|
383
|
+
|
|
284
384
|
const noopResult = {
|
|
285
385
|
results: [],
|
|
286
386
|
toString: () => `updating link file`
|
|
@@ -296,11 +396,12 @@ class PreviewMain {
|
|
|
296
396
|
/**
|
|
297
397
|
* slot for preview definitions.
|
|
298
398
|
*/
|
|
299
|
-
previewSlot, ui, envs, pkg, aspectLoader, config, bundlingStrategySlot, builder, workspace, logger) {
|
|
399
|
+
previewSlot, ui, envs, componentAspect, pkg, aspectLoader, config, bundlingStrategySlot, builder, workspace, logger, dependencyResolver) {
|
|
300
400
|
this.harmony = harmony;
|
|
301
401
|
this.previewSlot = previewSlot;
|
|
302
402
|
this.ui = ui;
|
|
303
403
|
this.envs = envs;
|
|
404
|
+
this.componentAspect = componentAspect;
|
|
304
405
|
this.pkg = pkg;
|
|
305
406
|
this.aspectLoader = aspectLoader;
|
|
306
407
|
this.config = config;
|
|
@@ -308,6 +409,7 @@ class PreviewMain {
|
|
|
308
409
|
this.builder = builder;
|
|
309
410
|
this.workspace = workspace;
|
|
310
411
|
this.logger = logger;
|
|
412
|
+
this.dependencyResolver = dependencyResolver;
|
|
311
413
|
(0, _defineProperty2().default)(this, "writeHash", new Map());
|
|
312
414
|
(0, _defineProperty2().default)(this, "timestamp", Date.now());
|
|
313
415
|
(0, _defineProperty2().default)(this, "executionRefs", new Map());
|
|
@@ -343,11 +445,126 @@ class PreviewMain {
|
|
|
343
445
|
return ((_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.getTempDir(_preview().PreviewAspect.id)) || DEFAULT_TEMP_DIR;
|
|
344
446
|
}
|
|
345
447
|
|
|
448
|
+
getComponentBundleSize(component) {
|
|
449
|
+
const data = this.builder.getDataByAspect(component, _preview().PreviewAspect.id);
|
|
450
|
+
if (!data) return undefined;
|
|
451
|
+
return data[_componentStrategy().COMPONENT_STRATEGY_SIZE_KEY_NAME];
|
|
452
|
+
}
|
|
453
|
+
|
|
346
454
|
async getPreview(component) {
|
|
347
|
-
const artifacts = await this.builder.
|
|
348
|
-
if (!artifacts.length) return undefined;
|
|
455
|
+
const artifacts = await this.builder.getArtifactsVinylByExtensionAndTaskName(component, _preview().PreviewAspect.id, _preview3().PREVIEW_TASK_NAME);
|
|
456
|
+
if (!artifacts || !artifacts.length) return undefined;
|
|
349
457
|
return new (_previewArtifact().PreviewArtifact)(artifacts);
|
|
350
458
|
}
|
|
459
|
+
/**
|
|
460
|
+
* Get a list of all the artifact files generated during the GeneratePreview task
|
|
461
|
+
* @param component
|
|
462
|
+
* @returns
|
|
463
|
+
*/
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
async getPreviewFiles(component) {
|
|
467
|
+
const artifacts = await this.getPreview(component);
|
|
468
|
+
if (!artifacts) return undefined;
|
|
469
|
+
return {
|
|
470
|
+
files: artifacts.getPaths()
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Check if the component preview bundle contain the env as part of the bundle or only the component code
|
|
475
|
+
* (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)
|
|
476
|
+
* @param component
|
|
477
|
+
* @returns
|
|
478
|
+
*/
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
async isBundledWithEnv(component) {
|
|
482
|
+
const artifacts = await this.builder.getArtifactsVinylByExtensionAndName(component, _preview().PreviewAspect.id, _componentStrategy().COMPONENT_STRATEGY_ARTIFACT_NAME);
|
|
483
|
+
if (!artifacts || !artifacts.length) return true;
|
|
484
|
+
return false;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Getting the env template artifact
|
|
488
|
+
* This should be called with the env itself or it will return undefined
|
|
489
|
+
* If you want to get the env template from the env of the component,
|
|
490
|
+
* use: getEnvTemplateFromComponentEnv below
|
|
491
|
+
*
|
|
492
|
+
* @param component
|
|
493
|
+
* @returns
|
|
494
|
+
*/
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
async getEnvTemplate(component) {
|
|
498
|
+
const artifacts = await this.builder.getArtifactsVinylByExtensionAndTaskName(component, _preview().PreviewAspect.id, _envPreviewTemplate().GENERATE_ENV_TEMPLATE_TASK_NAME);
|
|
499
|
+
if (!artifacts || !artifacts.length) return undefined;
|
|
500
|
+
return new (_previewArtifact().PreviewArtifact)(artifacts);
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* This is a special method to get a core env template
|
|
504
|
+
* As the core envs doesn't exist in the scope we need to bring it from other place
|
|
505
|
+
* We will bring it from the core env package files
|
|
506
|
+
*/
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
async getCoreEnvTemplate(envId) {
|
|
510
|
+
const coreEnvDir = (0, _aspectLoader().getAspectDir)(envId); // const finalDir = join(coreEnvDir, getEnvTemplateArtifactDirectory());
|
|
511
|
+
|
|
512
|
+
const artifactDef = (0, _envPreviewTemplate().getArtifactDef)()[0];
|
|
513
|
+
const artifactFactory = new (_builder().ArtifactFactory)();
|
|
514
|
+
let rootDir = artifactFactory.getRootDir(coreEnvDir, artifactDef);
|
|
515
|
+
|
|
516
|
+
if (!(0, _fsExtra().existsSync)(rootDir)) {
|
|
517
|
+
// fallback to the bvm folder
|
|
518
|
+
const coreEnvDirFromBvm = (0, _aspectLoader().getAspectDirFromBvm)(envId);
|
|
519
|
+
rootDir = artifactFactory.getRootDir(coreEnvDirFromBvm, artifactDef);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
if (!(0, _fsExtra().existsSync)(rootDir)) {
|
|
523
|
+
return undefined;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
const paths = artifactFactory.resolvePaths(rootDir, artifactDef);
|
|
527
|
+
|
|
528
|
+
if (!paths || !paths.length) {
|
|
529
|
+
return undefined;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
const artifactFiles = new (_artifactFiles().ArtifactFiles)(paths);
|
|
533
|
+
artifactFiles.populateVinylsFromPaths(rootDir);
|
|
534
|
+
return new (_previewArtifact().PreviewArtifact)(artifactFiles.vinyls);
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* This will fetch the component env, then will take the env template from the component env
|
|
538
|
+
* @param component
|
|
539
|
+
*/
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
async getEnvTemplateFromComponentEnv(component) {
|
|
543
|
+
const envId = this.envs.getEnvId(component);
|
|
544
|
+
return this.getEnvTemplateByEnvId(envId);
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* This will fetch the component env, then will take the env template from the component env
|
|
548
|
+
* @param component
|
|
549
|
+
*/
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
async getEnvTemplateByEnvId(envId) {
|
|
553
|
+
// Special treatment for core envs
|
|
554
|
+
if (this.aspectLoader.isCoreEnv(envId)) {
|
|
555
|
+
return this.getCoreEnvTemplate(envId);
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
const host = this.componentAspect.getHost();
|
|
559
|
+
const resolvedEnvId = await host.resolveComponentId(envId);
|
|
560
|
+
const envComponent = await host.get(resolvedEnvId);
|
|
561
|
+
|
|
562
|
+
if (!envComponent) {
|
|
563
|
+
throw new (_bitError().BitError)(`can't load env. env id is ${envId}`);
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
return this.getEnvTemplate(envComponent);
|
|
567
|
+
}
|
|
351
568
|
|
|
352
569
|
getDefs() {
|
|
353
570
|
return this.previewSlot.values();
|
|
@@ -360,10 +577,14 @@ class PreviewMain {
|
|
|
360
577
|
* @param defaultModule
|
|
361
578
|
* @param dirName
|
|
362
579
|
*/
|
|
363
|
-
writeLink(prefix, moduleMap, defaultModule, dirName) {
|
|
364
|
-
const contents = (0, _generateLink().generateLink)(prefix, moduleMap, defaultModule);
|
|
580
|
+
writeLink(prefix, moduleMap, defaultModule, dirName, isSplitComponentBundle) {
|
|
581
|
+
const contents = (0, _generateLink().generateLink)(prefix, moduleMap, defaultModule, isSplitComponentBundle);
|
|
582
|
+
return this.writeLinkContents(contents, dirName, prefix);
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
writeLinkContents(contents, targetDir, prefix) {
|
|
365
586
|
const hash = (0, _objectHash().default)(contents);
|
|
366
|
-
const targetPath = (0, _path().join)(
|
|
587
|
+
const targetPath = (0, _path().join)(targetDir, `__${prefix}-${this.timestamp}.js`); // write only if link has changed (prevents triggering fs watches)
|
|
367
588
|
|
|
368
589
|
if (this.writeHash.get(targetPath) !== hash) {
|
|
369
590
|
(0, _fsExtra().writeFileSync)(targetPath, contents);
|
|
@@ -389,11 +610,12 @@ class PreviewMain {
|
|
|
389
610
|
updateLinkFiles(components = [], context) {
|
|
390
611
|
const previews = this.previewSlot.values();
|
|
391
612
|
const paths = previews.map(async previewDef => {
|
|
392
|
-
var _previewDef$renderTem, _environment$getCompi;
|
|
613
|
+
var _previewDef$renderTem, _this$getEnvPreviewCo, _environment$getCompi;
|
|
393
614
|
|
|
394
615
|
const templatePath = await ((_previewDef$renderTem = previewDef.renderTemplatePath) === null || _previewDef$renderTem === void 0 ? void 0 : _previewDef$renderTem.call(previewDef, context));
|
|
395
616
|
const map = await previewDef.getModuleMap(components);
|
|
396
617
|
const environment = context.envRuntime.env;
|
|
618
|
+
const isSplitComponentBundle = (_this$getEnvPreviewCo = this.getEnvPreviewConfig().splitComponentBundle) !== null && _this$getEnvPreviewCo !== void 0 ? _this$getEnvPreviewCo : false;
|
|
397
619
|
const compilerInstance = (_environment$getCompi = environment.getCompiler) === null || _environment$getCompi === void 0 ? void 0 : _environment$getCompi.call(environment);
|
|
398
620
|
const withPaths = map.map((files, component) => {
|
|
399
621
|
var _compilerInstance$get;
|
|
@@ -412,7 +634,7 @@ class PreviewMain {
|
|
|
412
634
|
if (!(0, _fsExtra().existsSync)(dirPath)) (0, _fsExtra().mkdirSync)(dirPath, {
|
|
413
635
|
recursive: true
|
|
414
636
|
});
|
|
415
|
-
const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath);
|
|
637
|
+
const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath, isSplitComponentBundle);
|
|
416
638
|
return link;
|
|
417
639
|
});
|
|
418
640
|
return Promise.all(paths);
|
|
@@ -455,17 +677,25 @@ class PreviewMain {
|
|
|
455
677
|
}
|
|
456
678
|
|
|
457
679
|
getDefaultStrategies() {
|
|
458
|
-
return [new (_strategies().EnvBundlingStrategy)(this), new (_strategies().ComponentBundlingStrategy)()];
|
|
680
|
+
return [new (_strategies().EnvBundlingStrategy)(this), new (_strategies().ComponentBundlingStrategy)(this, this.pkg, this.dependencyResolver)];
|
|
459
681
|
} // TODO - executionContext should be responsible for updating components list, and emit 'update' events
|
|
460
682
|
// instead we keep track of changes
|
|
461
683
|
|
|
462
684
|
|
|
685
|
+
getEnvPreviewConfig(env) {
|
|
686
|
+
const config = env !== null && env !== void 0 && env.getPreviewConfig && typeof (env === null || env === void 0 ? void 0 : env.getPreviewConfig) === 'function' ? env === null || env === void 0 ? void 0 : env.getPreviewConfig() : {};
|
|
687
|
+
return config;
|
|
688
|
+
}
|
|
463
689
|
/**
|
|
464
690
|
* return the configured bundling strategy.
|
|
465
691
|
*/
|
|
466
|
-
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
getBundlingStrategy(env) {
|
|
467
695
|
const defaultStrategies = this.getDefaultStrategies();
|
|
468
|
-
const
|
|
696
|
+
const envPreviewConfig = this.getEnvPreviewConfig(env);
|
|
697
|
+
const strategyFromEnv = envPreviewConfig === null || envPreviewConfig === void 0 ? void 0 : envPreviewConfig.strategyName;
|
|
698
|
+
const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';
|
|
469
699
|
const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);
|
|
470
700
|
const selected = strategies.find(strategy => {
|
|
471
701
|
return strategy.name === strategyName;
|
|
@@ -491,15 +721,18 @@ class PreviewMain {
|
|
|
491
721
|
this.previewSlot.register(previewDef);
|
|
492
722
|
}
|
|
493
723
|
|
|
494
|
-
static async provider(
|
|
495
|
-
|
|
496
|
-
const
|
|
724
|
+
static async provider( // eslint-disable-next-line max-len
|
|
725
|
+
[bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain, dependencyResolver, graphql], config, [previewSlot, bundlingStrategySlot], harmony) {
|
|
726
|
+
const logger = loggerMain.createLogger(_preview().PreviewAspect.id); // app.registerApp(new PreviewApp());
|
|
727
|
+
|
|
728
|
+
const preview = new PreviewMain(harmony, previewSlot, uiMain, envs, componentExtension, pkg, aspectLoader, config, bundlingStrategySlot, builder, workspace, logger, dependencyResolver);
|
|
497
729
|
if (workspace) uiMain.registerStartPlugin(new (_preview4().PreviewStartPlugin)(workspace, bundler, uiMain, pubsub, logger));
|
|
498
|
-
componentExtension.registerRoute([new (_preview2().PreviewRoute)(preview, logger)
|
|
730
|
+
componentExtension.registerRoute([new (_preview2().PreviewRoute)(preview, logger), new (_componentPreview().ComponentPreviewRoute)(preview, logger), // @ts-ignore
|
|
731
|
+
new (_envTemplate().EnvTemplateRoute)(preview, logger), new (_previewAssets().PreviewAssetsRoute)(preview, logger)]);
|
|
499
732
|
bundler.registerTarget([{
|
|
500
733
|
entry: preview.getPreviewTarget.bind(preview)
|
|
501
734
|
}]);
|
|
502
|
-
if (!config.disabled) builder.registerBuildTasks([new (_preview3().PreviewTask)(bundler, preview)]);
|
|
735
|
+
if (!config.disabled) builder.registerBuildTasks([new (_envPreviewTemplate().EnvPreviewTemplateTask)(preview, envs), new (_preview3().PreviewTask)(bundler, preview)]);
|
|
503
736
|
|
|
504
737
|
if (workspace) {
|
|
505
738
|
workspace.registerOnComponentAdd(c => preview.handleComponentChange(c, currentComponents => currentComponents.add(c)));
|
|
@@ -507,6 +740,7 @@ class PreviewMain {
|
|
|
507
740
|
workspace.registerOnComponentRemove(cId => preview.handleComponentRemoval(cId));
|
|
508
741
|
}
|
|
509
742
|
|
|
743
|
+
graphql.register((0, _preview5().previewSchema)(preview));
|
|
510
744
|
return preview;
|
|
511
745
|
}
|
|
512
746
|
|
|
@@ -515,9 +749,8 @@ class PreviewMain {
|
|
|
515
749
|
exports.PreviewMain = PreviewMain;
|
|
516
750
|
(0, _defineProperty2().default)(PreviewMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType()]);
|
|
517
751
|
(0, _defineProperty2().default)(PreviewMain, "runtime", _cli().MainRuntime);
|
|
518
|
-
(0, _defineProperty2().default)(PreviewMain, "dependencies", [_bundler().BundlerAspect, _builder().BuilderAspect, _component().ComponentAspect, _ui().UIAspect, _envs().EnvsAspect, _workspace().default, _pkg().PkgAspect, _pubsub().PubsubAspect, _aspectLoader().AspectLoaderAspect, _logger().LoggerAspect]);
|
|
752
|
+
(0, _defineProperty2().default)(PreviewMain, "dependencies", [_bundler().BundlerAspect, _builder().BuilderAspect, _component().ComponentAspect, _ui().UIAspect, _envs().EnvsAspect, _workspace().default, _pkg().PkgAspect, _pubsub().PubsubAspect, _aspectLoader().AspectLoaderAspect, _logger().LoggerAspect, _dependencyResolver().DependencyResolverAspect, _graphql().default]);
|
|
519
753
|
(0, _defineProperty2().default)(PreviewMain, "defaultConfig", {
|
|
520
|
-
bundlingStrategy: 'env',
|
|
521
754
|
disabled: false
|
|
522
755
|
});
|
|
523
756
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["preview.main.runtime.tsx"],"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getPreview","artifacts","getArtifactsVinylByExtension","length","undefined","PreviewArtifact","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","contents","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","paths","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","compilerInstance","getCompiler","withPaths","files","modulePath","getPreviewComponentRootPath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","recursive","link","all","getUi","Error","name","uiRoot","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","filtered","filter","aspect","getId","isCoreAspect","includes","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getBundlingStrategy","defaultStrategies","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","registerTarget","entry","bind","disabled","registerBuildTasks","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","addRuntime"],"mappings":"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","sourcesContent":["import { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';\nimport { EnvsAspect, EnvsMain, ExecutionContext } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectDefinition, AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\nexport type PreviewConfig = {\n bundlingStrategy: string;\n disabled: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtension(component, PreviewAspect.id);\n if (!artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(prefix: string, moduleMap: ComponentMap<string[]>, defaultModule: string | undefined, dirName: string) {\n const contents = generateLink(prefix, moduleMap, defaultModule);\n const hash = objectHash(contents);\n const targetPath = join(dirName, `__${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n const compilerInstance = environment.getCompiler?.();\n const withPaths = map.map<string[]>((files, component) => {\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }) {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n const [name, uiRoot] = ui;\n const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(aspects: AspectDefinition[], context: { components: Component[] }) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);\n });\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [new EnvBundlingStrategy(this), new ComponentBundlingStrategy()];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const strategyName = this.config.bundlingStrategy;\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n ];\n\n static defaultConfig = {\n bundlingStrategy: 'env',\n disabled: false,\n };\n\n static async provider(\n [bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));\n\n componentExtension.registerRoute([new PreviewRoute(preview, logger)]);\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled) builder.registerBuildTasks([new PreviewTask(bundler, preview)]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"]}
|
|
1
|
+
{"version":3,"sources":["preview.main.runtime.tsx"],"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","data","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByExtensionAndTaskName","PREVIEW_TASK_NAME","length","PreviewArtifact","getPreviewFiles","files","getPaths","isBundledWithEnv","getArtifactsVinylByExtensionAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","artifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","coreEnvDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","envComponent","BitError","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","isSplitComponentBundle","contents","writeLinkContents","targetDir","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","getEnvPreviewConfig","splitComponentBundle","compilerInstance","getCompiler","withPaths","modulePath","getPreviewComponentRootPath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","recursive","link","all","getUi","Error","name","uiRoot","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","filtered","filter","aspect","getId","isCoreAspect","includes","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getPreviewConfig","getBundlingStrategy","defaultStrategies","envPreviewConfig","strategyFromEnv","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","graphql","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","ComponentPreviewRoute","EnvTemplateRoute","PreviewAssetsRoute","registerTarget","entry","bind","disabled","registerBuildTasks","EnvPreviewTemplateTask","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","addRuntime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;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","sourcesContent":["import { ArtifactFactory, BuilderAspect } from '@teambit/builder';\nimport type { BuilderMain } from '@teambit/builder';\nimport { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectLoaderAspect, getAspectDir, getAspectDirFromBvm } from '@teambit/aspect-loader';\nimport type { AspectDefinition, AspectLoaderMain } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ArtifactFiles } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask, PREVIEW_TASK_NAME } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\nimport {\n EnvPreviewTemplateTask,\n GENERATE_ENV_TEMPLATE_TASK_NAME,\n getArtifactDef as getEnvTemplateArtifactDef,\n} from './env-preview-template.task';\nimport { EnvTemplateRoute } from './env-template.route';\nimport { ComponentPreviewRoute } from './component-preview.route';\nimport { COMPONENT_STRATEGY_ARTIFACT_NAME, COMPONENT_STRATEGY_SIZE_KEY_NAME } from './strategies/component-strategy';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\ntype PreviewFiles = {\n files: string[];\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n totalAssets: number;\n total: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: string;\n splitComponentBundle?: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport type GenerateLinkFn = (prefix: string, componentMap: ComponentMap<string[]>, defaultModule?: string) => string;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private componentAspect: ComponentMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n getComponentBundleSize(component: Component): ComponentPreviewSize | undefined {\n const data = this.builder.getDataByAspect(component, PreviewAspect.id);\n\n if (!data) return undefined;\n return data[COMPONENT_STRATEGY_SIZE_KEY_NAME];\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts || !artifacts.length) return undefined;\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * Get a list of all the artifact files generated during the GeneratePreview task\n * @param component\n * @returns\n */\n async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {\n const artifacts = await this.getPreview(component);\n if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n };\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * @param component\n * @returns\n */\n async isBundledWithEnv(component: Component): Promise<boolean> {\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndName(\n component,\n PreviewAspect.id,\n COMPONENT_STRATEGY_ARTIFACT_NAME\n );\n if (!artifacts || !artifacts.length) return true;\n\n return false;\n }\n\n /**\n * Getting the env template artifact\n * This should be called with the env itself or it will return undefined\n * If you want to get the env template from the env of the component,\n * use: getEnvTemplateFromComponentEnv below\n *\n * @param component\n * @returns\n */\n async getEnvTemplate(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndTaskName(\n component,\n PreviewAspect.id,\n GENERATE_ENV_TEMPLATE_TASK_NAME\n );\n if (!artifacts || !artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * This is a special method to get a core env template\n * As the core envs doesn't exist in the scope we need to bring it from other place\n * We will bring it from the core env package files\n */\n private async getCoreEnvTemplate(envId: string): Promise<PreviewArtifact | undefined> {\n const coreEnvDir = getAspectDir(envId);\n // const finalDir = join(coreEnvDir, getEnvTemplateArtifactDirectory());\n const artifactDef = getEnvTemplateArtifactDef()[0];\n const artifactFactory = new ArtifactFactory();\n\n let rootDir = artifactFactory.getRootDir(coreEnvDir, artifactDef);\n if (!existsSync(rootDir)) {\n // fallback to the bvm folder\n const coreEnvDirFromBvm = getAspectDirFromBvm(envId);\n rootDir = artifactFactory.getRootDir(coreEnvDirFromBvm, artifactDef);\n }\n if (!existsSync(rootDir)) {\n return undefined;\n }\n const paths = artifactFactory.resolvePaths(rootDir, artifactDef);\n if (!paths || !paths.length) {\n return undefined;\n }\n const artifactFiles = new ArtifactFiles(paths);\n\n artifactFiles.populateVinylsFromPaths(rootDir);\n return new PreviewArtifact(artifactFiles.vinyls);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateFromComponentEnv(component: Component): Promise<PreviewArtifact | undefined> {\n const envId = this.envs.getEnvId(component);\n return this.getEnvTemplateByEnvId(envId);\n }\n\n /**\n * This will fetch the component env, then will take the env template from the component env\n * @param component\n */\n async getEnvTemplateByEnvId(envId: string): Promise<PreviewArtifact | undefined> {\n // Special treatment for core envs\n if (this.aspectLoader.isCoreEnv(envId)) {\n return this.getCoreEnvTemplate(envId);\n }\n const host = this.componentAspect.getHost();\n const resolvedEnvId = await host.resolveComponentId(envId);\n const envComponent = await host.get(resolvedEnvId);\n if (!envComponent) {\n throw new BitError(`can't load env. env id is ${envId}`);\n }\n return this.getEnvTemplate(envComponent);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(\n prefix: string,\n moduleMap: ComponentMap<string[]>,\n defaultModule: string | undefined,\n dirName: string,\n isSplitComponentBundle: boolean\n ) {\n const contents = generateLink(prefix, moduleMap, defaultModule, isSplitComponentBundle);\n return this.writeLinkContents(contents, dirName, prefix);\n }\n\n writeLinkContents(contents: string, targetDir: string, prefix: string) {\n const hash = objectHash(contents);\n const targetPath = join(targetDir, `__${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n const isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\n const compilerInstance = environment.getCompiler?.();\n const withPaths = map.map<string[]>((files, component) => {\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }) {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n const [name, uiRoot] = ui;\n const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(aspects: AspectDefinition[], context: { components: Component[] }) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);\n });\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [new EnvBundlingStrategy(this), new ComponentBundlingStrategy(this, this.pkg, this.dependencyResolver)];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n getEnvPreviewConfig(env?: PreviewEnv): EnvPreviewConfig {\n const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};\n\n return config;\n }\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(env?: PreviewEnv): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const strategyFromEnv = envPreviewConfig?.strategyName;\n const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n // app.registerApp(new PreviewApp());\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));\n\n componentExtension.registerRoute([\n new PreviewRoute(preview, logger),\n new ComponentPreviewRoute(preview, logger),\n // @ts-ignore\n new EnvTemplateRoute(preview, logger),\n new PreviewAssetsRoute(preview, logger),\n ]);\n\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled)\n builder.registerBuildTasks([new EnvPreviewTemplateTask(preview, envs), new PreviewTask(bundler, preview)]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n\n graphql.register(previewSchema(preview));\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { PubsubPreview } from '@teambit/pubsub';
|
|
2
2
|
import { SlotRegistry } from '@teambit/harmony';
|
|
3
|
+
import { ComponentID } from '@teambit/component-id';
|
|
3
4
|
import { PreviewType } from './preview-type';
|
|
5
|
+
import { PreviewModule } from './types/preview-module';
|
|
4
6
|
import { RenderingContext } from './rendering-context';
|
|
5
7
|
export declare type PreviewSlot = SlotRegistry<PreviewType>;
|
|
6
8
|
export declare type RenderingContextProvider = () => {
|
|
@@ -30,7 +32,14 @@ export declare class PreviewPreview {
|
|
|
30
32
|
/**
|
|
31
33
|
* render the preview.
|
|
32
34
|
*/
|
|
33
|
-
render: () => void
|
|
35
|
+
render: () => Promise<void>;
|
|
36
|
+
getPreviewModule(name: string, id: ComponentID): Promise<PreviewModule>;
|
|
37
|
+
fetchComponentPreview(id: ComponentID, name: string): Promise<unknown>;
|
|
38
|
+
private addComponentFileElement;
|
|
39
|
+
private fetchComponentPreviewFiles;
|
|
40
|
+
private addComponentFileScriptElement;
|
|
41
|
+
private addComponentFileLinkElement;
|
|
42
|
+
private getPreviewScriptElement;
|
|
34
43
|
/**
|
|
35
44
|
* register a new preview.
|
|
36
45
|
*/
|
|
@@ -53,6 +62,6 @@ export declare class PreviewPreview {
|
|
|
53
62
|
static slots: (((registerFn: () => string) => SlotRegistry<PreviewType>) | ((registerFn: () => string) => SlotRegistry<RenderingContextProvider>))[];
|
|
54
63
|
static provider([pubsub]: [PubsubPreview], config: any, [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]): Promise<PreviewPreview>;
|
|
55
64
|
}
|
|
56
|
-
export declare function linkModules(previewName: string, defaultModule: any, componentMap: {
|
|
65
|
+
export declare function linkModules(previewName: string, defaultModule: any, isSplitComponentBundle: boolean, componentMap: {
|
|
57
66
|
[key: string]: any;
|
|
58
67
|
}): void;
|