@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.
Files changed (68) hide show
  1. package/__preview-1642994756471.js +1 -0
  2. package/dist/artifact-file-middleware.d.ts +12 -0
  3. package/dist/artifact-file-middleware.js +81 -0
  4. package/dist/artifact-file-middleware.js.map +1 -0
  5. package/dist/bundling-strategy.d.ts +6 -1
  6. package/dist/component-preview.route.d.ts +20 -0
  7. package/dist/component-preview.route.js +83 -0
  8. package/dist/component-preview.route.js.map +1 -0
  9. package/dist/env-preview-template.task.d.ts +42 -0
  10. package/dist/env-preview-template.task.js +309 -0
  11. package/dist/env-preview-template.task.js.map +1 -0
  12. package/dist/env-template.route.d.ts +26 -0
  13. package/dist/env-template.route.js +89 -0
  14. package/dist/env-template.route.js.map +1 -0
  15. package/dist/generate-link.d.ts +1 -1
  16. package/dist/generate-link.js +3 -3
  17. package/dist/generate-link.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/preview-artifact.d.ts +2 -0
  21. package/dist/preview-artifact.js +21 -0
  22. package/dist/preview-artifact.js.map +1 -1
  23. package/dist/preview-assets.route.d.ts +19 -0
  24. package/dist/preview-assets.route.js +66 -0
  25. package/dist/preview-assets.route.js.map +1 -0
  26. package/dist/preview-definition.d.ts +16 -3
  27. package/dist/preview.graphql.d.ts +8 -1
  28. package/dist/preview.graphql.js +13 -2
  29. package/dist/preview.graphql.js.map +1 -1
  30. package/dist/preview.main.runtime.d.ts +78 -11
  31. package/dist/preview.main.runtime.js +251 -18
  32. package/dist/preview.main.runtime.js.map +1 -1
  33. package/dist/preview.preview.runtime.d.ts +11 -2
  34. package/dist/preview.preview.runtime.js +124 -6
  35. package/dist/preview.preview.runtime.js.map +1 -1
  36. package/dist/preview.route.d.ts +3 -7
  37. package/dist/preview.route.js +22 -21
  38. package/dist/preview.route.js.map +1 -1
  39. package/dist/preview.task.d.ts +2 -2
  40. package/dist/preview.task.js +25 -24
  41. package/dist/preview.task.js.map +1 -1
  42. package/dist/strategies/component-strategy.d.ts +52 -12
  43. package/dist/strategies/component-strategy.js +348 -20
  44. package/dist/strategies/component-strategy.js.map +1 -1
  45. package/dist/strategies/env-strategy.d.ts +7 -5
  46. package/dist/strategies/env-strategy.js +27 -1
  47. package/dist/strategies/env-strategy.js.map +1 -1
  48. package/dist/strategies/generate-component-link.d.ts +5 -0
  49. package/dist/strategies/generate-component-link.js +25 -0
  50. package/dist/strategies/generate-component-link.js.map +1 -0
  51. package/dist/types/preview-module.d.ts +1 -0
  52. package/dist/webpack/html.d.ts +2 -0
  53. package/dist/webpack/html.js +31 -0
  54. package/dist/webpack/html.js.map +1 -0
  55. package/dist/webpack/index.d.ts +1 -0
  56. package/dist/webpack/index.js +23 -0
  57. package/dist/webpack/index.js.map +1 -0
  58. package/package-tar/teambit-preview-0.0.629.tgz +0 -0
  59. package/package.json +29 -26
  60. package/preview.main.runtime.tsx +235 -23
  61. package/preview.preview.runtime.tsx +123 -7
  62. package/strategies/component-strategy.ts +329 -23
  63. package/strategies/env-strategy.ts +28 -10
  64. package/strategies/generate-component-link.ts +19 -0
  65. package/types/preview-module.ts +2 -0
  66. package/webpack/html.ts +22 -0
  67. package/webpack/index.ts +1 -0
  68. package/package-tar/teambit-preview-0.0.621.tgz +0 -0
@@ -6,10 +6,14 @@ require("core-js/modules/es.array.iterator.js");
6
6
 
7
7
  require("core-js/modules/es.promise.js");
8
8
 
9
+ require("core-js/modules/es.regexp.exec.js");
10
+
11
+ require("core-js/modules/es.string.replace.js");
12
+
9
13
  Object.defineProperty(exports, "__esModule", {
10
14
  value: true
11
15
  });
12
- exports.ComponentBundlingStrategy = void 0;
16
+ exports.PREVIEW_CHUNK_SUFFIX = exports.PREVIEW_CHUNK_FILENAME_SUFFIX = exports.ComponentBundlingStrategy = exports.COMPONENT_STRATEGY_SIZE_KEY_NAME = exports.COMPONENT_STRATEGY_ARTIFACT_NAME = exports.COMPONENT_CHUNK_SUFFIX = exports.COMPONENT_CHUNK_FILENAME_SUFFIX = void 0;
13
17
 
14
18
  function _defineProperty2() {
15
19
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -21,37 +25,361 @@ function _defineProperty2() {
21
25
  return data;
22
26
  }
23
27
 
28
+ function _fs() {
29
+ const data = require("fs");
30
+
31
+ _fs = function () {
32
+ return data;
33
+ };
34
+
35
+ return data;
36
+ }
37
+
38
+ function _path() {
39
+ const data = require("path");
40
+
41
+ _path = function () {
42
+ return data;
43
+ };
44
+
45
+ return data;
46
+ }
47
+
48
+ function _fsExtra() {
49
+ const data = require("fs-extra");
50
+
51
+ _fsExtra = function () {
52
+ return data;
53
+ };
54
+
55
+ return data;
56
+ }
57
+
58
+ function _lodash() {
59
+ const data = require("lodash");
60
+
61
+ _lodash = function () {
62
+ return data;
63
+ };
64
+
65
+ return data;
66
+ }
67
+
68
+ function _builder() {
69
+ const data = require("@teambit/builder");
70
+
71
+ _builder = function () {
72
+ return data;
73
+ };
74
+
75
+ return data;
76
+ }
77
+
78
+ function _bitError() {
79
+ const data = require("@teambit/bit-error");
80
+
81
+ _bitError = function () {
82
+ return data;
83
+ };
84
+
85
+ return data;
86
+ }
87
+
88
+ function _generateComponentLink() {
89
+ const data = require("./generate-component-link");
90
+
91
+ _generateComponentLink = function () {
92
+ return data;
93
+ };
94
+
95
+ return data;
96
+ }
97
+
98
+ const PREVIEW_CHUNK_SUFFIX = 'preview';
99
+ exports.PREVIEW_CHUNK_SUFFIX = PREVIEW_CHUNK_SUFFIX;
100
+ const COMPONENT_CHUNK_SUFFIX = 'component';
101
+ exports.COMPONENT_CHUNK_SUFFIX = COMPONENT_CHUNK_SUFFIX;
102
+ const PREVIEW_CHUNK_FILENAME_SUFFIX = `${PREVIEW_CHUNK_SUFFIX}.js`;
103
+ exports.PREVIEW_CHUNK_FILENAME_SUFFIX = PREVIEW_CHUNK_FILENAME_SUFFIX;
104
+ const COMPONENT_CHUNK_FILENAME_SUFFIX = `${COMPONENT_CHUNK_SUFFIX}.js`;
105
+ exports.COMPONENT_CHUNK_FILENAME_SUFFIX = COMPONENT_CHUNK_FILENAME_SUFFIX;
106
+ const COMPONENT_STRATEGY_SIZE_KEY_NAME = 'size';
107
+ exports.COMPONENT_STRATEGY_SIZE_KEY_NAME = COMPONENT_STRATEGY_SIZE_KEY_NAME;
108
+ const COMPONENT_STRATEGY_ARTIFACT_NAME = 'preview-component';
109
+ /**
110
+ * bundles all components in a given env into the same bundle.
111
+ */
112
+
113
+ exports.COMPONENT_STRATEGY_ARTIFACT_NAME = COMPONENT_STRATEGY_ARTIFACT_NAME;
114
+
24
115
  class ComponentBundlingStrategy {
25
- constructor() {
116
+ constructor(preview, pkg, dependencyResolver) {
117
+ this.preview = preview;
118
+ this.pkg = pkg;
119
+ this.dependencyResolver = dependencyResolver;
26
120
  (0, _defineProperty2().default)(this, "name", 'component');
27
121
  }
28
122
 
29
- computeTargets(context, previewDefs, previewTask) {
30
- return Promise.all(context.capsuleNetwork.graphCapsules.map(async capsule => {
123
+ async computeTargets(context, previewDefs) {
124
+ const outputPath = this.getOutputPath(context);
125
+ if (!(0, _fsExtra().existsSync)(outputPath)) (0, _fsExtra().mkdirpSync)(outputPath); // const entriesArr = flatten(
126
+ // await Promise.all(
127
+ // context.capsuleNetwork.seedersCapsules.map((capsule) => {
128
+ // return this.computeComponentEntry(previewDefs, capsule.component, context);
129
+ // }, {})
130
+ // )
131
+ // );
132
+
133
+ const entriesArr = await Promise.all(context.capsuleNetwork.seedersCapsules.map(capsule => {
134
+ return this.computeComponentEntry(previewDefs, capsule.component, context);
135
+ }, {}));
136
+ const entries = entriesArr.reduce((entriesMap, entry) => {
137
+ // entriesMap[entry.library.name] = entry;
138
+ Object.assign(entriesMap, entry);
139
+ return entriesMap;
140
+ }, {}); // const entries = entriesArr.reduce((entriesMap, entry) => {
141
+ // entriesMap[entry.library.name] = entry;
142
+ // return entriesMap;
143
+ // }, {});
144
+ // const modules = await Promise.all(entriesArr.map(async (entry) => {
145
+ // const dependencies = await this.dependencyResolver.getDependencies(entry.component);
146
+ // const manifest = dependencies.toDependenciesManifest();
147
+ // const peer = Object.entries(manifest.peerDependencies || {}).reduce((acc, [packageName, version]) => {
148
+ // acc[packageName] = {
149
+ // singleton: true,
150
+ // requiredVersion: version
151
+ // };
152
+ // return acc;
153
+ // }, {});
154
+ // // console.log(entry);
155
+ // return {
156
+ // name: entry.library.name,
157
+ // exposes: {
158
+ // '.': entry.import || ''
159
+ // },
160
+ // shared: {
161
+ // ...manifest.dependencies,
162
+ // ...peer
163
+ // },
164
+ // };
165
+ // }));
166
+
167
+ return [{
168
+ // entries: await this.computePaths(outputPath, previewDefs, context),
169
+ entries,
170
+ components: context.components,
171
+ outputPath // modules,
172
+
173
+ }];
174
+ }
175
+
176
+ async computeComponentEntry(previewDefs, component, context) {
177
+ const path = await this.computePaths(previewDefs, context, component);
178
+ const [componentPath] = this.getPaths(context, component, [component.mainFile]);
179
+ const componentPreviewChunkId = this.getComponentChunkId(component.id, 'preview');
180
+ const entries = {
181
+ [componentPreviewChunkId]: {
182
+ filename: this.getComponentChunkFileName(component.id.toString({
183
+ fsCompatible: true,
184
+ ignoreVersion: true
185
+ }), 'preview'),
186
+ import: path,
187
+ // dependOn: component.id.toStringWithoutVersion(),
188
+ library: {
189
+ name: componentPreviewChunkId,
190
+ type: 'umd'
191
+ }
192
+ }
193
+ };
194
+
195
+ if (context.splitComponentBundle) {
196
+ const componentChunkId = component.id.toStringWithoutVersion();
197
+ entries[componentChunkId] = {
198
+ filename: this.getComponentChunkFileName(component.id.toString({
199
+ fsCompatible: true,
200
+ ignoreVersion: true
201
+ }), 'component'),
202
+ import: componentPath,
203
+ library: {
204
+ name: componentChunkId,
205
+ type: 'umd'
206
+ }
207
+ };
208
+ }
209
+
210
+ return entries;
211
+ }
212
+
213
+ getComponentChunkId(componentId, type) {
214
+ const id = type === 'component' ? componentId.toStringWithoutVersion() : `${componentId.toStringWithoutVersion()}-${PREVIEW_CHUNK_SUFFIX}`;
215
+ return id;
216
+ }
217
+
218
+ getComponentChunkFileName(idstr, type) {
219
+ const suffix = type === 'component' ? COMPONENT_CHUNK_FILENAME_SUFFIX : PREVIEW_CHUNK_FILENAME_SUFFIX;
220
+ return `${idstr}-${suffix}`;
221
+ }
222
+
223
+ getAssetAbsolutePath(context, asset) {
224
+ const path = this.getOutputPath(context);
225
+ return (0, _path().join)(path, 'public', asset.name);
226
+ }
227
+
228
+ copyAssetsToCapsules(context, result) {
229
+ context.components.forEach(component => {
230
+ const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);
231
+ if (!capsule) return;
232
+ const files = this.findAssetsForComponent(component, result.assets, result.entriesAssetsMap || {});
233
+ if (!files) return;
234
+ files.forEach(asset => {
235
+ const filePath = this.getAssetAbsolutePath(context, asset);
236
+ const contents = (0, _fs().readFileSync)(filePath); // const exists = capsule.fs.existsSync(this.getArtifactDirectory());
237
+ // if (!exists) capsule.fs.mkdirSync(this.getArtifactDirectory());
238
+ // We don't use the mkdirSync as it uses the capsule fs which uses memfs, which doesn't know to handle nested none existing folders
239
+
240
+ (0, _fsExtra().mkdirpSync)((0, _path().join)(capsule.path, this.getArtifactDirectory()));
241
+ const filename = (0, _path().basename)(asset.name); // let filename = asset.name;
242
+ // if (filePath.endsWith('.css')){
243
+ // filename = this.getCssFileName(capsule.component.id);
244
+ // }
245
+
246
+ capsule.fs.writeFileSync((0, _path().join)(this.getArtifactDirectory(), filename), contents);
247
+ });
248
+ });
249
+ } // private getCssFileName(componentId: ComponentID): string {
250
+ // return `${componentId.toString({ ignoreVersion: true, fsCompatible: true })}.css`;
251
+ // }
252
+
253
+
254
+ findAssetsForComponent(component, assets, entriesAssetsMap) {
255
+ var _entriesAssetsMap$com, _entriesAssetsMap$com2, _entriesAssetsMap$com3, _entriesAssetsMap$com4;
256
+
257
+ if (!assets) return undefined;
258
+ const componentEntryId = component.id.toStringWithoutVersion();
259
+ const componentPreviewEntryId = this.getComponentChunkId(component.id, 'preview');
260
+ const componentFiles = ((_entriesAssetsMap$com = entriesAssetsMap[componentEntryId]) === null || _entriesAssetsMap$com === void 0 ? void 0 : _entriesAssetsMap$com.assets) || [];
261
+ const componentAuxiliaryFiles = ((_entriesAssetsMap$com2 = entriesAssetsMap[componentEntryId]) === null || _entriesAssetsMap$com2 === void 0 ? void 0 : _entriesAssetsMap$com2.auxiliaryAssets) || [];
262
+ const componentPreviewFiles = ((_entriesAssetsMap$com3 = entriesAssetsMap[componentPreviewEntryId]) === null || _entriesAssetsMap$com3 === void 0 ? void 0 : _entriesAssetsMap$com3.assets) || [];
263
+ const componentPreviewAuxiliaryFiles = ((_entriesAssetsMap$com4 = entriesAssetsMap[componentPreviewEntryId]) === null || _entriesAssetsMap$com4 === void 0 ? void 0 : _entriesAssetsMap$com4.auxiliaryAssets) || [];
264
+ const files = componentFiles.concat(componentAuxiliaryFiles).concat(componentPreviewFiles).concat(componentPreviewAuxiliaryFiles);
265
+ return files;
266
+ }
267
+
268
+ getArtifactDirectory() {
269
+ return (0, _path().join)(_builder().CAPSULE_ARTIFACTS_DIR, 'preview');
270
+ }
271
+
272
+ computeComponentMetadata(context, result, component) {
273
+ var _result$entriesAssets, _result$entriesAssets2, _result$entriesAssets3, _result$entriesAssets4;
274
+
275
+ const componentEntryId = component.id.toStringWithoutVersion();
276
+
277
+ if (!(result !== null && result !== void 0 && result.entriesAssetsMap) || !(result !== null && result !== void 0 && result.entriesAssetsMap[componentEntryId])) {
278
+ return {};
279
+ }
280
+
281
+ const files = (((_result$entriesAssets = result.entriesAssetsMap[componentEntryId]) === null || _result$entriesAssets === void 0 ? void 0 : _result$entriesAssets.assets) || []).map(file => {
31
282
  return {
32
- entries: await previewTask.computePaths(capsule, previewDefs, context),
33
- components: [capsule.component],
34
- outputPath: capsule.path
283
+ name: (0, _path().basename)(file.name),
284
+ size: file.size
35
285
  };
36
- }));
286
+ });
287
+ const filesTotalSize = ((_result$entriesAssets2 = result.entriesAssetsMap[componentEntryId]) === null || _result$entriesAssets2 === void 0 ? void 0 : _result$entriesAssets2.assetsSize) || 0;
288
+ const assets = (((_result$entriesAssets3 = result.entriesAssetsMap[componentEntryId]) === null || _result$entriesAssets3 === void 0 ? void 0 : _result$entriesAssets3.auxiliaryAssets) || []).map(file => {
289
+ return {
290
+ name: (0, _path().basename)(file.name),
291
+ size: file.size
292
+ };
293
+ });
294
+ const assetsTotalSize = ((_result$entriesAssets4 = result.entriesAssetsMap[componentEntryId]) === null || _result$entriesAssets4 === void 0 ? void 0 : _result$entriesAssets4.auxiliaryAssetsSize) || 0;
295
+ const totalSize = filesTotalSize + assetsTotalSize;
296
+ const metadata = {
297
+ [COMPONENT_STRATEGY_SIZE_KEY_NAME]: {
298
+ files,
299
+ assets,
300
+ totalFiles: filesTotalSize,
301
+ totalAssets: assetsTotalSize,
302
+ total: totalSize
303
+ }
304
+ };
305
+ return metadata;
37
306
  }
38
307
 
39
- async computeResults(context, results, previewTask) {
308
+ async computeResults(context, results) {
309
+ const result = results[0];
310
+ this.copyAssetsToCapsules(context, result);
311
+ const componentsResults = result.components.map(component => {
312
+ const metadata = this.computeComponentMetadata(context, result, component);
313
+ return {
314
+ component,
315
+ metadata,
316
+ errors: result.errors.map(err => typeof err === 'string' ? err : err.message),
317
+ warning: result.warnings,
318
+ startTime: result.startTime,
319
+ endTime: result.endTime
320
+ };
321
+ });
322
+ const artifacts = this.getArtifactDef();
40
323
  return {
41
- componentsResults: results.map(result => {
42
- return {
43
- errors: result.errors,
44
- component: result.components[0],
45
- warning: result.warnings
46
- };
47
- }),
48
- artifacts: [{
49
- name: 'preview',
50
- globPatterns: [previewTask.getPreviewDirectory(context)]
51
- }]
324
+ componentsResults,
325
+ artifacts
52
326
  };
53
327
  }
54
328
 
329
+ getArtifactDef() {
330
+ // eslint-disable-next-line @typescript-eslint/prefer-as-const
331
+ // const env: 'env' = 'env';
332
+ // const rootDir = this.getDirName(context);
333
+ return [{
334
+ name: COMPONENT_STRATEGY_ARTIFACT_NAME,
335
+ globPatterns: ['**'],
336
+ rootDir: this.getArtifactDirectory() // context: env,
337
+
338
+ }];
339
+ }
340
+
341
+ getDirName(context) {
342
+ const envName = context.id.replace('/', '__');
343
+ return `${envName}-preview`;
344
+ }
345
+
346
+ getOutputPath(context) {
347
+ return (0, _path().resolve)(`${context.capsuleNetwork.capsulesRootDir}/${this.getDirName(context)}`);
348
+ }
349
+
350
+ getPaths(context, component, files) {
351
+ const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);
352
+ if (!capsule) return [];
353
+ const compiler = context.env.getCompiler();
354
+ return files.map(file => (0, _path().join)(capsule.path, compiler.getDistPathBySrcPath(file.relative)));
355
+ }
356
+
357
+ getComponentOutputPath(capsule) {
358
+ return (0, _path().resolve)(`${capsule.path}`);
359
+ }
360
+
361
+ async computePaths(defs, context, component) {
362
+ // const previewMain = await this.preview.writePreviewRuntime(context);
363
+ const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id); // if (!capsule) return undefined;
364
+
365
+ if (!capsule) throw new (_bitError().BitError)(`could not find capsule for component ${component.id.toString()} during compute paths to bundle`);
366
+ const moduleMapsPromise = defs.map(async previewDef => {
367
+ const moduleMap = await previewDef.getModuleMap([component]);
368
+ const maybeFiles = moduleMap.get(component);
369
+ if (!maybeFiles || !capsule) return [];
370
+ const [, files] = maybeFiles;
371
+ const compiledPaths = this.getPaths(context, component, files); // const files = flatten(paths.toArray().map(([, file]) => file));
372
+
373
+ return {
374
+ prefix: previewDef.prefix,
375
+ paths: compiledPaths
376
+ };
377
+ });
378
+ const moduleMaps = (0, _lodash().flatten)(await Promise.all(moduleMapsPromise));
379
+ const contents = (0, _generateComponentLink().generateComponentLink)(moduleMaps);
380
+ return this.preview.writeLinkContents(contents, this.getComponentOutputPath(capsule), 'preview'); // return flatten(moduleMaps);
381
+ }
382
+
55
383
  }
56
384
 
57
385
  exports.ComponentBundlingStrategy = ComponentBundlingStrategy;
@@ -1 +1 @@
1
- {"version":3,"sources":["component-strategy.ts"],"names":["ComponentBundlingStrategy","computeTargets","context","previewDefs","previewTask","Promise","all","capsuleNetwork","graphCapsules","map","capsule","entries","computePaths","components","component","outputPath","path","computeResults","results","componentsResults","result","errors","warning","warnings","artifacts","name","globPatterns","getPreviewDirectory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAMA,yBAAN,CAA4D;AAAA;AAAA,kDAC1D,WAD0D;AAAA;;AAGjEC,EAAAA,cAAc,CAACC,OAAD,EAAwBC,WAAxB,EAA0DC,WAA1D,EAAuG;AACnH,WAAOC,OAAO,CAACC,GAAR,CACLJ,OAAO,CAACK,cAAR,CAAuBC,aAAvB,CAAqCC,GAArC,CAAyC,MAAOC,OAAP,IAAmB;AAC1D,aAAO;AACLC,QAAAA,OAAO,EAAE,MAAMP,WAAW,CAACQ,YAAZ,CAAyBF,OAAzB,EAAkCP,WAAlC,EAA+CD,OAA/C,CADV;AAELW,QAAAA,UAAU,EAAE,CAACH,OAAO,CAACI,SAAT,CAFP;AAGLC,QAAAA,UAAU,EAAEL,OAAO,CAACM;AAHf,OAAP;AAKD,KAND,CADK,CAAP;AASD;;AAEmB,QAAdC,cAAc,CAACf,OAAD,EAA0BgB,OAA1B,EAAoDd,WAApD,EAA8E;AAChG,WAAO;AACLe,MAAAA,iBAAiB,EAAED,OAAO,CAACT,GAAR,CAAaW,MAAD,IAAY;AACzC,eAAO;AACLC,UAAAA,MAAM,EAAED,MAAM,CAACC,MADV;AAELP,UAAAA,SAAS,EAAEM,MAAM,CAACP,UAAP,CAAkB,CAAlB,CAFN;AAGLS,UAAAA,OAAO,EAAEF,MAAM,CAACG;AAHX,SAAP;AAKD,OANkB,CADd;AAQLC,MAAAA,SAAS,EAAE,CAAC;AAAEC,QAAAA,IAAI,EAAE,SAAR;AAAmBC,QAAAA,YAAY,EAAE,CAACtB,WAAW,CAACuB,mBAAZ,CAAgCzB,OAAhC,CAAD;AAAjC,OAAD;AARN,KAAP;AAUD;;AA1BgE","sourcesContent":["import { BuildContext } from '@teambit/builder';\nimport { Target, BundlerResult, BundlerContext } from '@teambit/bundler';\nimport { BundlingStrategy } from '../bundling-strategy';\nimport { PreviewDefinition } from '../preview-definition';\nimport { PreviewTask } from '../preview.task';\n\nexport class ComponentBundlingStrategy implements BundlingStrategy {\n name = 'component';\n\n computeTargets(context: BuildContext, previewDefs: PreviewDefinition[], previewTask: PreviewTask): Promise<Target[]> {\n return Promise.all(\n context.capsuleNetwork.graphCapsules.map(async (capsule) => {\n return {\n entries: await previewTask.computePaths(capsule, previewDefs, context),\n components: [capsule.component],\n outputPath: capsule.path,\n };\n })\n );\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[], previewTask: PreviewTask) {\n return {\n componentsResults: results.map((result) => {\n return {\n errors: result.errors,\n component: result.components[0],\n warning: result.warnings,\n };\n }),\n artifacts: [{ name: 'preview', globPatterns: [previewTask.getPreviewDirectory(context)] }],\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["component-strategy.ts"],"names":["PREVIEW_CHUNK_SUFFIX","COMPONENT_CHUNK_SUFFIX","PREVIEW_CHUNK_FILENAME_SUFFIX","COMPONENT_CHUNK_FILENAME_SUFFIX","COMPONENT_STRATEGY_SIZE_KEY_NAME","COMPONENT_STRATEGY_ARTIFACT_NAME","ComponentBundlingStrategy","constructor","preview","pkg","dependencyResolver","computeTargets","context","previewDefs","outputPath","getOutputPath","entriesArr","Promise","all","capsuleNetwork","seedersCapsules","map","capsule","computeComponentEntry","component","entries","reduce","entriesMap","entry","Object","assign","components","path","computePaths","componentPath","getPaths","mainFile","componentPreviewChunkId","getComponentChunkId","id","filename","getComponentChunkFileName","toString","fsCompatible","ignoreVersion","import","library","name","type","splitComponentBundle","componentChunkId","toStringWithoutVersion","componentId","idstr","suffix","getAssetAbsolutePath","asset","copyAssetsToCapsules","result","forEach","graphCapsules","getCapsule","files","findAssetsForComponent","assets","entriesAssetsMap","filePath","contents","getArtifactDirectory","fs","writeFileSync","undefined","componentEntryId","componentPreviewEntryId","componentFiles","componentAuxiliaryFiles","auxiliaryAssets","componentPreviewFiles","componentPreviewAuxiliaryFiles","concat","CAPSULE_ARTIFACTS_DIR","computeComponentMetadata","file","size","filesTotalSize","assetsSize","assetsTotalSize","auxiliaryAssetsSize","totalSize","metadata","totalFiles","totalAssets","total","computeResults","results","componentsResults","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","globPatterns","rootDir","getDirName","envName","replace","capsulesRootDir","compiler","env","getCompiler","getDistPathBySrcPath","relative","getComponentOutputPath","defs","BitError","moduleMapsPromise","previewDef","moduleMap","getModuleMap","maybeFiles","get","compiledPaths","prefix","paths","moduleMaps","writeLinkContents"],"mappings":"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","sourcesContent":["import { readFileSync } from 'fs';\nimport { join, resolve, basename } from 'path';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport { Component } from '@teambit/component';\nimport { ComponentID } from '@teambit/component-id';\nimport { flatten } from 'lodash';\nimport { Compiler } from '@teambit/compiler';\nimport type { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport type { Capsule } from '@teambit/isolator';\nimport { CAPSULE_ARTIFACTS_DIR, ComponentResult } from '@teambit/builder';\nimport type { PkgMain } from '@teambit/pkg';\nimport { BitError } from '@teambit/bit-error';\nimport type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport type { BundlerResult, BundlerContext, Asset, BundlerEntryMap, EntriesAssetsMap } from '@teambit/bundler';\nimport { BundlingStrategy, ComputeTargetsContext } from '../bundling-strategy';\nimport type { PreviewDefinition } from '../preview-definition';\nimport type { ComponentPreviewMetaData, PreviewMain } from '../preview.main.runtime';\nimport { generateComponentLink } from './generate-component-link';\n\nexport const PREVIEW_CHUNK_SUFFIX = 'preview';\nexport const COMPONENT_CHUNK_SUFFIX = 'component';\nexport const PREVIEW_CHUNK_FILENAME_SUFFIX = `${PREVIEW_CHUNK_SUFFIX}.js`;\nexport const COMPONENT_CHUNK_FILENAME_SUFFIX = `${COMPONENT_CHUNK_SUFFIX}.js`;\n\nexport const COMPONENT_STRATEGY_SIZE_KEY_NAME = 'size';\nexport const COMPONENT_STRATEGY_ARTIFACT_NAME = 'preview-component';\n/**\n * bundles all components in a given env into the same bundle.\n */\nexport class ComponentBundlingStrategy implements BundlingStrategy {\n name = 'component';\n\n constructor(private preview: PreviewMain, private pkg: PkgMain, private dependencyResolver: DependencyResolverMain) {}\n\n async computeTargets(context: ComputeTargetsContext, previewDefs: PreviewDefinition[]) {\n const outputPath = this.getOutputPath(context);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n\n // const entriesArr = flatten(\n // await Promise.all(\n // context.capsuleNetwork.seedersCapsules.map((capsule) => {\n // return this.computeComponentEntry(previewDefs, capsule.component, context);\n // }, {})\n // )\n // );\n\n const entriesArr = await Promise.all(\n context.capsuleNetwork.seedersCapsules.map((capsule) => {\n return this.computeComponentEntry(previewDefs, capsule.component, context);\n }, {})\n );\n\n const entries: BundlerEntryMap = entriesArr.reduce((entriesMap, entry) => {\n // entriesMap[entry.library.name] = entry;\n Object.assign(entriesMap, entry);\n return entriesMap;\n }, {});\n // const entries = entriesArr.reduce((entriesMap, entry) => {\n // entriesMap[entry.library.name] = entry;\n // return entriesMap;\n // }, {});\n\n // const modules = await Promise.all(entriesArr.map(async (entry) => {\n // const dependencies = await this.dependencyResolver.getDependencies(entry.component);\n // const manifest = dependencies.toDependenciesManifest();\n // const peer = Object.entries(manifest.peerDependencies || {}).reduce((acc, [packageName, version]) => {\n // acc[packageName] = {\n // singleton: true,\n // requiredVersion: version\n // };\n\n // return acc;\n // }, {});\n // // console.log(entry);\n // return {\n // name: entry.library.name,\n // exposes: {\n // '.': entry.import || ''\n // },\n // shared: {\n // ...manifest.dependencies,\n // ...peer\n // },\n // };\n // }));\n\n return [\n {\n // entries: await this.computePaths(outputPath, previewDefs, context),\n entries,\n components: context.components,\n outputPath,\n // modules,\n },\n ];\n }\n\n async computeComponentEntry(previewDefs: PreviewDefinition[], component: Component, context: ComputeTargetsContext) {\n const path = await this.computePaths(previewDefs, context, component);\n const [componentPath] = this.getPaths(context, component, [component.mainFile]);\n const componentPreviewChunkId = this.getComponentChunkId(component.id, 'preview');\n\n const entries = {\n [componentPreviewChunkId]: {\n filename: this.getComponentChunkFileName(\n component.id.toString({\n fsCompatible: true,\n ignoreVersion: true,\n }),\n 'preview'\n ),\n import: path,\n // dependOn: component.id.toStringWithoutVersion(),\n library: {\n name: componentPreviewChunkId,\n type: 'umd',\n },\n },\n };\n if (context.splitComponentBundle) {\n const componentChunkId = component.id.toStringWithoutVersion();\n entries[componentChunkId] = {\n filename: this.getComponentChunkFileName(\n component.id.toString({\n fsCompatible: true,\n ignoreVersion: true,\n }),\n 'component'\n ),\n import: componentPath,\n library: {\n name: componentChunkId,\n type: 'umd',\n },\n };\n }\n return entries;\n }\n\n private getComponentChunkId(componentId: ComponentID, type: 'component' | 'preview') {\n const id =\n type === 'component'\n ? componentId.toStringWithoutVersion()\n : `${componentId.toStringWithoutVersion()}-${PREVIEW_CHUNK_SUFFIX}`;\n return id;\n }\n\n private getComponentChunkFileName(idstr: string, type: 'component' | 'preview') {\n const suffix = type === 'component' ? COMPONENT_CHUNK_FILENAME_SUFFIX : PREVIEW_CHUNK_FILENAME_SUFFIX;\n return `${idstr}-${suffix}`;\n }\n\n private getAssetAbsolutePath(context: BundlerContext, asset: Asset): string {\n const path = this.getOutputPath(context);\n return join(path, 'public', asset.name);\n }\n\n copyAssetsToCapsules(context: BundlerContext, result: BundlerResult) {\n context.components.forEach((component) => {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) return;\n const files = this.findAssetsForComponent(component, result.assets, result.entriesAssetsMap || {});\n if (!files) return;\n\n files.forEach((asset) => {\n const filePath = this.getAssetAbsolutePath(context, asset);\n const contents = readFileSync(filePath);\n // const exists = capsule.fs.existsSync(this.getArtifactDirectory());\n // if (!exists) capsule.fs.mkdirSync(this.getArtifactDirectory());\n // We don't use the mkdirSync as it uses the capsule fs which uses memfs, which doesn't know to handle nested none existing folders\n mkdirpSync(join(capsule.path, this.getArtifactDirectory()));\n const filename = basename(asset.name);\n // let filename = asset.name;\n // if (filePath.endsWith('.css')){\n // filename = this.getCssFileName(capsule.component.id);\n // }\n capsule.fs.writeFileSync(join(this.getArtifactDirectory(), filename), contents);\n });\n });\n }\n\n // private getCssFileName(componentId: ComponentID): string {\n // return `${componentId.toString({ ignoreVersion: true, fsCompatible: true })}.css`;\n // }\n\n private findAssetsForComponent(\n component: Component,\n assets: Asset[],\n entriesAssetsMap: EntriesAssetsMap\n ): Asset[] | undefined {\n if (!assets) return undefined;\n\n const componentEntryId = component.id.toStringWithoutVersion();\n const componentPreviewEntryId = this.getComponentChunkId(component.id, 'preview');\n const componentFiles = entriesAssetsMap[componentEntryId]?.assets || [];\n const componentAuxiliaryFiles = entriesAssetsMap[componentEntryId]?.auxiliaryAssets || [];\n const componentPreviewFiles = entriesAssetsMap[componentPreviewEntryId]?.assets || [];\n const componentPreviewAuxiliaryFiles = entriesAssetsMap[componentPreviewEntryId]?.auxiliaryAssets || [];\n\n const files = componentFiles\n .concat(componentAuxiliaryFiles)\n .concat(componentPreviewFiles)\n .concat(componentPreviewAuxiliaryFiles);\n return files;\n }\n\n private getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, 'preview');\n }\n\n private computeComponentMetadata(\n context: BundlerContext,\n result: BundlerResult,\n component: Component\n ): ComponentPreviewMetaData {\n const componentEntryId = component.id.toStringWithoutVersion();\n if (!result?.entriesAssetsMap || !result?.entriesAssetsMap[componentEntryId]) {\n return {};\n }\n const files = (result.entriesAssetsMap[componentEntryId]?.assets || []).map((file) => {\n return {\n name: basename(file.name),\n size: file.size,\n };\n });\n const filesTotalSize = result.entriesAssetsMap[componentEntryId]?.assetsSize || 0;\n const assets = (result.entriesAssetsMap[componentEntryId]?.auxiliaryAssets || []).map((file) => {\n return {\n name: basename(file.name),\n size: file.size,\n };\n });\n const assetsTotalSize = result.entriesAssetsMap[componentEntryId]?.auxiliaryAssetsSize || 0;\n const totalSize = filesTotalSize + assetsTotalSize;\n\n const metadata = {\n [COMPONENT_STRATEGY_SIZE_KEY_NAME]: {\n files,\n assets,\n totalFiles: filesTotalSize,\n totalAssets: assetsTotalSize,\n total: totalSize,\n },\n };\n return metadata;\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const result = results[0];\n\n this.copyAssetsToCapsules(context, result);\n\n const componentsResults: ComponentResult[] = result.components.map((component) => {\n const metadata = this.computeComponentMetadata(context, result, component);\n return {\n component,\n metadata,\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 = this.getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n private getArtifactDef() {\n // eslint-disable-next-line @typescript-eslint/prefer-as-const\n // const env: 'env' = 'env';\n // const rootDir = this.getDirName(context);\n\n return [\n {\n name: COMPONENT_STRATEGY_ARTIFACT_NAME,\n globPatterns: ['**'],\n rootDir: this.getArtifactDirectory(),\n // context: env,\n },\n ];\n }\n\n getDirName(context: ComputeTargetsContext) {\n const envName = context.id.replace('/', '__');\n return `${envName}-preview`;\n }\n\n private getOutputPath(context: ComputeTargetsContext) {\n return resolve(`${context.capsuleNetwork.capsulesRootDir}/${this.getDirName(context)}`);\n }\n\n private getPaths(context: ComputeTargetsContext, component: Component, files: AbstractVinyl[]) {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) return [];\n const compiler: Compiler = context.env.getCompiler();\n return files.map((file) => join(capsule.path, compiler.getDistPathBySrcPath(file.relative)));\n }\n\n private getComponentOutputPath(capsule: Capsule) {\n return resolve(`${capsule.path}`);\n }\n\n private async computePaths(\n defs: PreviewDefinition[],\n context: ComputeTargetsContext,\n component: Component\n ): Promise<string> {\n // const previewMain = await this.preview.writePreviewRuntime(context);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n // if (!capsule) return undefined;\n if (!capsule)\n throw new BitError(\n `could not find capsule for component ${component.id.toString()} during compute paths to bundle`\n );\n const moduleMapsPromise = defs.map(async (previewDef) => {\n const moduleMap = await previewDef.getModuleMap([component]);\n const maybeFiles = moduleMap.get(component);\n if (!maybeFiles || !capsule) return [];\n const [, files] = maybeFiles;\n const compiledPaths = this.getPaths(context, component, files);\n // const files = flatten(paths.toArray().map(([, file]) => file));\n\n return {\n prefix: previewDef.prefix,\n paths: compiledPaths,\n };\n });\n\n const moduleMaps = flatten(await Promise.all(moduleMapsPromise));\n\n const contents = generateComponentLink(moduleMaps);\n return this.preview.writeLinkContents(contents, this.getComponentOutputPath(capsule), 'preview');\n // return flatten(moduleMaps);\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { BuildContext, ComponentResult } from '@teambit/builder';
2
- import { BundlerResult, BundlerContext } from '@teambit/bundler';
3
- import { BundlingStrategy } from '../bundling-strategy';
1
+ import { ComponentResult } from '@teambit/builder';
2
+ import { BundlerContext, BundlerHtmlConfig, BundlerResult } from '@teambit/bundler';
3
+ import type { BundlingStrategy, ComputeTargetsContext } from '../bundling-strategy';
4
4
  import { PreviewDefinition } from '../preview-definition';
5
5
  import { PreviewMain } from '../preview.main.runtime';
6
6
  /**
@@ -10,11 +10,13 @@ export declare class EnvBundlingStrategy implements BundlingStrategy {
10
10
  private preview;
11
11
  name: string;
12
12
  constructor(preview: PreviewMain);
13
- computeTargets(context: BuildContext, previewDefs: PreviewDefinition[]): Promise<{
13
+ computeTargets(context: ComputeTargetsContext, previewDefs: PreviewDefinition[]): Promise<{
14
14
  entries: string[];
15
+ html: BundlerHtmlConfig[];
15
16
  components: import("@teambit/component").Component[];
16
17
  outputPath: string;
17
18
  }[]>;
19
+ private generateHtmlConfig;
18
20
  computeResults(context: BundlerContext, results: BundlerResult[]): Promise<{
19
21
  componentsResults: ComponentResult[];
20
22
  artifacts: {
@@ -25,7 +27,7 @@ export declare class EnvBundlingStrategy implements BundlingStrategy {
25
27
  }[];
26
28
  }>;
27
29
  private getArtifactDef;
28
- getDirName(context: BuildContext): string;
30
+ getDirName(context: ComputeTargetsContext): string;
29
31
  private getOutputPath;
30
32
  private getPaths;
31
33
  private computePaths;
@@ -65,6 +65,16 @@ function _component() {
65
65
  return data;
66
66
  }
67
67
 
68
+ function _webpack() {
69
+ const data = require("../webpack");
70
+
71
+ _webpack = function () {
72
+ return data;
73
+ };
74
+
75
+ return data;
76
+ }
77
+
68
78
  /**
69
79
  * bundles all components in a given env into the same bundle.
70
80
  */
@@ -77,13 +87,29 @@ class EnvBundlingStrategy {
77
87
  async computeTargets(context, previewDefs) {
78
88
  const outputPath = this.getOutputPath(context);
79
89
  if (!(0, _fsExtra().existsSync)(outputPath)) (0, _fsExtra().mkdirpSync)(outputPath);
90
+ const htmlConfig = this.generateHtmlConfig({
91
+ dev: context.dev
92
+ });
80
93
  return [{
81
94
  entries: await this.computePaths(outputPath, previewDefs, context),
95
+ html: [htmlConfig],
82
96
  components: context.components,
83
97
  outputPath
84
98
  }];
85
99
  }
86
100
 
101
+ generateHtmlConfig(options) {
102
+ var _options$dev;
103
+
104
+ const config = {
105
+ title: 'Preview',
106
+ templateContent: (0, _webpack().html)('Preview'),
107
+ cache: false,
108
+ minify: (_options$dev = options === null || options === void 0 ? void 0 : options.dev) !== null && _options$dev !== void 0 ? _options$dev : true
109
+ };
110
+ return config;
111
+ }
112
+
87
113
  async computeResults(context, results) {
88
114
  const result = results[0];
89
115
  const componentsResults = result.components.map(component => {
@@ -143,7 +169,7 @@ class EnvBundlingStrategy {
143
169
  });
144
170
 
145
171
  const template = previewDef.renderTemplatePath ? await previewDef.renderTemplatePath(context) : 'undefined';
146
- const link = this.preview.writeLink(previewDef.prefix, paths, previewDef.renderTemplatePath ? await previewDef.renderTemplatePath(context) : undefined, outputPath);
172
+ const link = this.preview.writeLink(previewDef.prefix, paths, previewDef.renderTemplatePath ? await previewDef.renderTemplatePath(context) : undefined, outputPath, false);
147
173
  const files = (0, _lodash().flatten)(paths.toArray().map(([, file]) => file)).concat([link]);
148
174
  if (template) return files.concat([template]);
149
175
  return files;
@@ -1 +1 @@
1
- {"version":3,"sources":["env-strategy.ts"],"names":["EnvBundlingStrategy","constructor","preview","computeTargets","context","previewDefs","outputPath","getOutputPath","entries","computePaths","components","computeResults","results","result","componentsResults","map","component","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","env","rootDir","getDirName","name","globPatterns","envName","id","replace","capsuleNetwork","capsulesRootDir","getPaths","files","capsule","compiler","getCompiler","file","path","getDistPathBySrcPath","relative","defs","previewMain","writePreviewRuntime","moduleMapsPromise","previewDef","moduleMap","getModuleMap","paths","ComponentMap","as","graphCapsules","getCapsule","maybeFiles","get","compiledPaths","template","renderTemplatePath","link","writeLink","prefix","undefined","toArray","concat","moduleMaps","Promise","all"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;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;;AAUA;AACA;AACA;AACO,MAAMA,mBAAN,CAAsD;AAG3DC,EAAAA,WAAW,CAASC,OAAT,EAA+B;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AAAA,kDAFnC,KAEmC;AAAE;;AAExB,QAAdC,cAAc,CAACC,OAAD,EAAwBC,WAAxB,EAA0D;AAC5E,UAAMC,UAAU,GAAG,KAAKC,aAAL,CAAmBH,OAAnB,CAAnB;AACA,QAAI,CAAC,2BAAWE,UAAX,CAAL,EAA6B,2BAAWA,UAAX;AAE7B,WAAO,CACL;AACEE,MAAAA,OAAO,EAAE,MAAM,KAAKC,YAAL,CAAkBH,UAAlB,EAA8BD,WAA9B,EAA2CD,OAA3C,CADjB;AAEEM,MAAAA,UAAU,EAAEN,OAAO,CAACM,UAFtB;AAGEJ,MAAAA;AAHF,KADK,CAAP;AAOD;;AAEmB,QAAdK,cAAc,CAACP,OAAD,EAA0BQ,OAA1B,EAAoD;AACtE,UAAMC,MAAM,GAAGD,OAAO,CAAC,CAAD,CAAtB;AAEA,UAAME,iBAAoC,GAAGD,MAAM,CAACH,UAAP,CAAkBK,GAAlB,CAAuBC,SAAD,IAAe;AAChF,aAAO;AACLA,QAAAA,SADK;AAELC,QAAAA,MAAM,EAAEJ,MAAM,CAACI,MAAP,CAAcF,GAAd,CAAmBG,GAAD,IAAU,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCA,GAAG,CAACC,OAAhE,CAFH;AAGLC,QAAAA,OAAO,EAAEP,MAAM,CAACQ,QAHX;AAILC,QAAAA,SAAS,EAAET,MAAM,CAACS,SAJb;AAKLC,QAAAA,OAAO,EAAEV,MAAM,CAACU;AALX,OAAP;AAOD,KAR4C,CAA7C;AAUA,UAAMC,SAAS,GAAG,KAAKC,cAAL,CAAoBrB,OAApB,CAAlB;AAEA,WAAO;AACLU,MAAAA,iBADK;AAELU,MAAAA;AAFK,KAAP;AAID;;AAEOC,EAAAA,cAAc,CAACrB,OAAD,EAAwB;AAC5C;AACA,UAAMsB,GAAU,GAAG,KAAnB;AACA,UAAMC,OAAO,GAAG,KAAKC,UAAL,CAAgBxB,OAAhB,CAAhB;AAEA,WAAO,CACL;AACEyB,MAAAA,IAAI,EAAE,SADR;AAEEC,MAAAA,YAAY,EAAE,CAAC,WAAD,CAFhB;AAGEH,MAAAA,OAHF;AAIEvB,MAAAA,OAAO,EAAEsB;AAJX,KADK,CAAP;AAQD;;AAEDE,EAAAA,UAAU,CAACxB,OAAD,EAAwB;AAChC,UAAM2B,OAAO,GAAG3B,OAAO,CAAC4B,EAAR,CAAWC,OAAX,CAAmB,GAAnB,EAAwB,IAAxB,CAAhB;AACA,WAAQ,GAAEF,OAAQ,UAAlB;AACD;;AAEOxB,EAAAA,aAAa,CAACH,OAAD,EAAwB;AAC3C,WAAO,qBAAS,GAAEA,OAAO,CAAC8B,cAAR,CAAuBC,eAAgB,IAAG,KAAKP,UAAL,CAAgBxB,OAAhB,CAAyB,EAA9E,CAAP;AACD;;AAEOgC,EAAAA,QAAQ,CAAChC,OAAD,EAAwBiC,KAAxB,EAAgDC,OAAhD,EAAkE;AAChF,UAAMC,QAAkB,GAAGnC,OAAO,CAACsB,GAAR,CAAYc,WAAZ,EAA3B;AACA,WAAOH,KAAK,CAACtB,GAAN,CAAW0B,IAAD,IAAU,kBAAKH,OAAO,CAACI,IAAb,EAAmBH,QAAQ,CAACI,oBAAT,CAA8BF,IAAI,CAACG,QAAnC,CAAnB,CAApB,CAAP;AACD;;AAEyB,QAAZnC,YAAY,CAACH,UAAD,EAAqBuC,IAArB,EAAgDzC,OAAhD,EAA0F;AAClH,UAAM0C,WAAW,GAAG,MAAM,KAAK5C,OAAL,CAAa6C,mBAAb,CAAiC3C,OAAjC,CAA1B;AACA,UAAM4C,iBAAiB,GAAGH,IAAI,CAAC9B,GAAL,CAAS,MAAOkC,UAAP,IAAsB;AACvD,YAAMC,SAAS,GAAG,MAAMD,UAAU,CAACE,YAAX,CAAwB/C,OAAO,CAACM,UAAhC,CAAxB;;AAEA,YAAM0C,KAAK,GAAGC,0BAAaC,EAAb,CAAgBlD,OAAO,CAACM,UAAxB,EAAqCM,SAAD,IAAe;AAC/D,cAAMsB,OAAO,GAAGlC,OAAO,CAAC8B,cAAR,CAAuBqB,aAAvB,CAAqCC,UAArC,CAAgDxC,SAAS,CAACgB,EAA1D,CAAhB;AACA,cAAMyB,UAAU,GAAGP,SAAS,CAACQ,GAAV,CAAc1C,SAAd,CAAnB;AACA,YAAI,CAACyC,UAAD,IAAe,CAACnB,OAApB,EAA6B,OAAO,EAAP;AAC7B,cAAM,GAAGD,KAAH,IAAYoB,UAAlB;AACA,cAAME,aAAa,GAAG,KAAKvB,QAAL,CAAchC,OAAd,EAAuBiC,KAAvB,EAA8BC,OAA9B,CAAtB;AACA,eAAOqB,aAAP;AACD,OAPa,CAAd;;AASA,YAAMC,QAAQ,GAAGX,UAAU,CAACY,kBAAX,GAAgC,MAAMZ,UAAU,CAACY,kBAAX,CAA8BzD,OAA9B,CAAtC,GAA+E,WAAhG;AAEA,YAAM0D,IAAI,GAAG,KAAK5D,OAAL,CAAa6D,SAAb,CACXd,UAAU,CAACe,MADA,EAEXZ,KAFW,EAGXH,UAAU,CAACY,kBAAX,GAAgC,MAAMZ,UAAU,CAACY,kBAAX,CAA8BzD,OAA9B,CAAtC,GAA+E6D,SAHpE,EAIX3D,UAJW,CAAb;AAOA,YAAM+B,KAAK,GAAG,uBAAQe,KAAK,CAACc,OAAN,GAAgBnD,GAAhB,CAAoB,CAAC,GAAG0B,IAAH,CAAD,KAAcA,IAAlC,CAAR,EAAiD0B,MAAjD,CAAwD,CAACL,IAAD,CAAxD,CAAd;AAEA,UAAIF,QAAJ,EAAc,OAAOvB,KAAK,CAAC8B,MAAN,CAAa,CAACP,QAAD,CAAb,CAAP;AACd,aAAOvB,KAAP;AACD,KAzByB,CAA1B;AA2BA,UAAM+B,UAAU,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYtB,iBAAZ,CAAzB;AAEA,WAAO,uBAAQoB,UAAU,CAACD,MAAX,CAAkB,CAACrB,WAAD,CAAlB,CAAR,CAAP;AACD;;AApG0D","sourcesContent":["import { join, resolve } from 'path';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport { flatten } from 'lodash';\nimport { ComponentMap } from '@teambit/component';\nimport { Compiler } from '@teambit/compiler';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { Capsule } from '@teambit/isolator';\nimport { BuildContext, ComponentResult } from '@teambit/builder';\nimport { BundlerResult, BundlerContext } from '@teambit/bundler';\nimport { BundlingStrategy } from '../bundling-strategy';\nimport { PreviewDefinition } from '../preview-definition';\nimport { PreviewMain } from '../preview.main.runtime';\n\n/**\n * bundles all components in a given env into the same bundle.\n */\nexport class EnvBundlingStrategy implements BundlingStrategy {\n name = 'env';\n\n constructor(private preview: PreviewMain) {}\n\n async computeTargets(context: BuildContext, previewDefs: PreviewDefinition[]) {\n const outputPath = this.getOutputPath(context);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n\n return [\n {\n entries: await this.computePaths(outputPath, previewDefs, context),\n components: context.components,\n outputPath,\n },\n ];\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 = this.getArtifactDef(context);\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n private getArtifactDef(context: BuildContext) {\n // eslint-disable-next-line @typescript-eslint/prefer-as-const\n const env: 'env' = 'env';\n const rootDir = this.getDirName(context);\n\n return [\n {\n name: 'preview',\n globPatterns: ['public/**'],\n rootDir,\n context: env,\n },\n ];\n }\n\n getDirName(context: BuildContext) {\n const envName = context.id.replace('/', '__');\n return `${envName}-preview`;\n }\n\n private getOutputPath(context: BuildContext) {\n return resolve(`${context.capsuleNetwork.capsulesRootDir}/${this.getDirName(context)}`);\n }\n\n private getPaths(context: BuildContext, files: AbstractVinyl[], capsule: Capsule) {\n const compiler: Compiler = context.env.getCompiler();\n return files.map((file) => join(capsule.path, compiler.getDistPathBySrcPath(file.relative)));\n }\n\n private async computePaths(outputPath: string, defs: PreviewDefinition[], context: BuildContext): Promise<string[]> {\n const previewMain = await this.preview.writePreviewRuntime(context);\n const moduleMapsPromise = defs.map(async (previewDef) => {\n const moduleMap = await previewDef.getModuleMap(context.components);\n\n const paths = ComponentMap.as(context.components, (component) => {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n const maybeFiles = moduleMap.get(component);\n if (!maybeFiles || !capsule) return [];\n const [, files] = maybeFiles;\n const compiledPaths = this.getPaths(context, files, capsule);\n return compiledPaths;\n });\n\n const template = previewDef.renderTemplatePath ? await previewDef.renderTemplatePath(context) : 'undefined';\n\n const link = this.preview.writeLink(\n previewDef.prefix,\n paths,\n previewDef.renderTemplatePath ? await previewDef.renderTemplatePath(context) : undefined,\n outputPath\n );\n\n const files = flatten(paths.toArray().map(([, file]) => file)).concat([link]);\n\n if (template) return files.concat([template]);\n return files;\n });\n\n const moduleMaps = await Promise.all(moduleMapsPromise);\n\n return flatten(moduleMaps.concat([previewMain]));\n }\n}\n"]}
1
+ {"version":3,"sources":["env-strategy.ts"],"names":["EnvBundlingStrategy","constructor","preview","computeTargets","context","previewDefs","outputPath","getOutputPath","htmlConfig","generateHtmlConfig","dev","entries","computePaths","html","components","options","config","title","templateContent","cache","minify","computeResults","results","result","componentsResults","map","component","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","env","rootDir","getDirName","name","globPatterns","envName","id","replace","capsuleNetwork","capsulesRootDir","getPaths","files","capsule","compiler","getCompiler","file","path","getDistPathBySrcPath","relative","defs","previewMain","writePreviewRuntime","moduleMapsPromise","previewDef","moduleMap","getModuleMap","paths","ComponentMap","as","graphCapsules","getCapsule","maybeFiles","get","compiledPaths","template","renderTemplatePath","link","writeLink","prefix","undefined","toArray","concat","moduleMaps","Promise","all"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;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;;AASA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AACA;AACA;AACO,MAAMA,mBAAN,CAAsD;AAG3DC,EAAAA,WAAW,CAASC,OAAT,EAA+B;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AAAA,kDAFnC,KAEmC;AAAE;;AAExB,QAAdC,cAAc,CAACC,OAAD,EAAiCC,WAAjC,EAAmE;AACrF,UAAMC,UAAU,GAAG,KAAKC,aAAL,CAAmBH,OAAnB,CAAnB;AACA,QAAI,CAAC,2BAAWE,UAAX,CAAL,EAA6B,2BAAWA,UAAX;AAC7B,UAAME,UAAU,GAAG,KAAKC,kBAAL,CAAwB;AAAEC,MAAAA,GAAG,EAAEN,OAAO,CAACM;AAAf,KAAxB,CAAnB;AAEA,WAAO,CACL;AACEC,MAAAA,OAAO,EAAE,MAAM,KAAKC,YAAL,CAAkBN,UAAlB,EAA8BD,WAA9B,EAA2CD,OAA3C,CADjB;AAEES,MAAAA,IAAI,EAAE,CAACL,UAAD,CAFR;AAGEM,MAAAA,UAAU,EAAEV,OAAO,CAACU,UAHtB;AAIER,MAAAA;AAJF,KADK,CAAP;AAQD;;AAEOG,EAAAA,kBAAkB,CAACM,OAAD,EAAgD;AAAA;;AACxE,UAAMC,MAAM,GAAG;AACbC,MAAAA,KAAK,EAAE,SADM;AAEbC,MAAAA,eAAe,EAAE,qBAAK,SAAL,CAFJ;AAGbC,MAAAA,KAAK,EAAE,KAHM;AAIbC,MAAAA,MAAM,kBAAEL,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEL,GAAX,uDAAkB;AAJX,KAAf;AAMA,WAAOM,MAAP;AACD;;AAEmB,QAAdK,cAAc,CAACjB,OAAD,EAA0BkB,OAA1B,EAAoD;AACtE,UAAMC,MAAM,GAAGD,OAAO,CAAC,CAAD,CAAtB;AAEA,UAAME,iBAAoC,GAAGD,MAAM,CAACT,UAAP,CAAkBW,GAAlB,CAAuBC,SAAD,IAAe;AAChF,aAAO;AACLA,QAAAA,SADK;AAELC,QAAAA,MAAM,EAAEJ,MAAM,CAACI,MAAP,CAAcF,GAAd,CAAmBG,GAAD,IAAU,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCA,GAAG,CAACC,OAAhE,CAFH;AAGLC,QAAAA,OAAO,EAAEP,MAAM,CAACQ,QAHX;AAILC,QAAAA,SAAS,EAAET,MAAM,CAACS,SAJb;AAKLC,QAAAA,OAAO,EAAEV,MAAM,CAACU;AALX,OAAP;AAOD,KAR4C,CAA7C;AAUA,UAAMC,SAAS,GAAG,KAAKC,cAAL,CAAoB/B,OAApB,CAAlB;AAEA,WAAO;AACLoB,MAAAA,iBADK;AAELU,MAAAA;AAFK,KAAP;AAID;;AAEOC,EAAAA,cAAc,CAAC/B,OAAD,EAAiC;AACrD;AACA,UAAMgC,GAAU,GAAG,KAAnB;AACA,UAAMC,OAAO,GAAG,KAAKC,UAAL,CAAgBlC,OAAhB,CAAhB;AAEA,WAAO,CACL;AACEmC,MAAAA,IAAI,EAAE,SADR;AAEEC,MAAAA,YAAY,EAAE,CAAC,WAAD,CAFhB;AAGEH,MAAAA,OAHF;AAIEjC,MAAAA,OAAO,EAAEgC;AAJX,KADK,CAAP;AAQD;;AAEDE,EAAAA,UAAU,CAAClC,OAAD,EAAiC;AACzC,UAAMqC,OAAO,GAAGrC,OAAO,CAACsC,EAAR,CAAWC,OAAX,CAAmB,GAAnB,EAAwB,IAAxB,CAAhB;AACA,WAAQ,GAAEF,OAAQ,UAAlB;AACD;;AAEOlC,EAAAA,aAAa,CAACH,OAAD,EAAiC;AACpD,WAAO,qBAAS,GAAEA,OAAO,CAACwC,cAAR,CAAuBC,eAAgB,IAAG,KAAKP,UAAL,CAAgBlC,OAAhB,CAAyB,EAA9E,CAAP;AACD;;AAEO0C,EAAAA,QAAQ,CAAC1C,OAAD,EAAiC2C,KAAjC,EAAyDC,OAAzD,EAA2E;AACzF,UAAMC,QAAkB,GAAG7C,OAAO,CAACgC,GAAR,CAAYc,WAAZ,EAA3B;AACA,WAAOH,KAAK,CAACtB,GAAN,CAAW0B,IAAD,IAAU,kBAAKH,OAAO,CAACI,IAAb,EAAmBH,QAAQ,CAACI,oBAAT,CAA8BF,IAAI,CAACG,QAAnC,CAAnB,CAApB,CAAP;AACD;;AAEyB,QAAZ1C,YAAY,CACxBN,UADwB,EAExBiD,IAFwB,EAGxBnD,OAHwB,EAIL;AACnB,UAAMoD,WAAW,GAAG,MAAM,KAAKtD,OAAL,CAAauD,mBAAb,CAAiCrD,OAAjC,CAA1B;AACA,UAAMsD,iBAAiB,GAAGH,IAAI,CAAC9B,GAAL,CAAS,MAAOkC,UAAP,IAAsB;AACvD,YAAMC,SAAS,GAAG,MAAMD,UAAU,CAACE,YAAX,CAAwBzD,OAAO,CAACU,UAAhC,CAAxB;;AAEA,YAAMgD,KAAK,GAAGC,0BAAaC,EAAb,CAAgB5D,OAAO,CAACU,UAAxB,EAAqCY,SAAD,IAAe;AAC/D,cAAMsB,OAAO,GAAG5C,OAAO,CAACwC,cAAR,CAAuBqB,aAAvB,CAAqCC,UAArC,CAAgDxC,SAAS,CAACgB,EAA1D,CAAhB;AACA,cAAMyB,UAAU,GAAGP,SAAS,CAACQ,GAAV,CAAc1C,SAAd,CAAnB;AACA,YAAI,CAACyC,UAAD,IAAe,CAACnB,OAApB,EAA6B,OAAO,EAAP;AAC7B,cAAM,GAAGD,KAAH,IAAYoB,UAAlB;AACA,cAAME,aAAa,GAAG,KAAKvB,QAAL,CAAc1C,OAAd,EAAuB2C,KAAvB,EAA8BC,OAA9B,CAAtB;AACA,eAAOqB,aAAP;AACD,OAPa,CAAd;;AASA,YAAMC,QAAQ,GAAGX,UAAU,CAACY,kBAAX,GAAgC,MAAMZ,UAAU,CAACY,kBAAX,CAA8BnE,OAA9B,CAAtC,GAA+E,WAAhG;AAEA,YAAMoE,IAAI,GAAG,KAAKtE,OAAL,CAAauE,SAAb,CACXd,UAAU,CAACe,MADA,EAEXZ,KAFW,EAGXH,UAAU,CAACY,kBAAX,GAAgC,MAAMZ,UAAU,CAACY,kBAAX,CAA8BnE,OAA9B,CAAtC,GAA+EuE,SAHpE,EAIXrE,UAJW,EAKX,KALW,CAAb;AAQA,YAAMyC,KAAK,GAAG,uBAAQe,KAAK,CAACc,OAAN,GAAgBnD,GAAhB,CAAoB,CAAC,GAAG0B,IAAH,CAAD,KAAcA,IAAlC,CAAR,EAAiD0B,MAAjD,CAAwD,CAACL,IAAD,CAAxD,CAAd;AAEA,UAAIF,QAAJ,EAAc,OAAOvB,KAAK,CAAC8B,MAAN,CAAa,CAACP,QAAD,CAAb,CAAP;AACd,aAAOvB,KAAP;AACD,KA1ByB,CAA1B;AA4BA,UAAM+B,UAAU,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYtB,iBAAZ,CAAzB;AAEA,WAAO,uBAAQoB,UAAU,CAACD,MAAX,CAAkB,CAACrB,WAAD,CAAlB,CAAR,CAAP;AACD;;AArH0D","sourcesContent":["import { join, resolve } from 'path';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport { flatten } from 'lodash';\nimport { ComponentMap } from '@teambit/component';\nimport { Compiler } from '@teambit/compiler';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { Capsule } from '@teambit/isolator';\nimport { ComponentResult } from '@teambit/builder';\nimport { BundlerContext, BundlerHtmlConfig, BundlerResult } from '@teambit/bundler';\nimport type { BundlingStrategy, ComputeTargetsContext } from '../bundling-strategy';\nimport { PreviewDefinition } from '../preview-definition';\nimport { PreviewMain } from '../preview.main.runtime';\nimport { html } from '../webpack';\n\n/**\n * bundles all components in a given env into the same bundle.\n */\nexport class EnvBundlingStrategy implements BundlingStrategy {\n name = 'env';\n\n constructor(private preview: PreviewMain) {}\n\n async computeTargets(context: ComputeTargetsContext, previewDefs: PreviewDefinition[]) {\n const outputPath = this.getOutputPath(context);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n const htmlConfig = this.generateHtmlConfig({ dev: context.dev });\n\n return [\n {\n entries: await this.computePaths(outputPath, previewDefs, context),\n html: [htmlConfig],\n components: context.components,\n outputPath,\n },\n ];\n }\n\n private generateHtmlConfig(options: { dev?: boolean }): BundlerHtmlConfig {\n const config = {\n title: 'Preview',\n templateContent: html('Preview'),\n cache: false,\n minify: options?.dev ?? true,\n };\n return config;\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 = this.getArtifactDef(context);\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n private getArtifactDef(context: ComputeTargetsContext) {\n // eslint-disable-next-line @typescript-eslint/prefer-as-const\n const env: 'env' = 'env';\n const rootDir = this.getDirName(context);\n\n return [\n {\n name: 'preview',\n globPatterns: ['public/**'],\n rootDir,\n context: env,\n },\n ];\n }\n\n getDirName(context: ComputeTargetsContext) {\n const envName = context.id.replace('/', '__');\n return `${envName}-preview`;\n }\n\n private getOutputPath(context: ComputeTargetsContext) {\n return resolve(`${context.capsuleNetwork.capsulesRootDir}/${this.getDirName(context)}`);\n }\n\n private getPaths(context: ComputeTargetsContext, files: AbstractVinyl[], capsule: Capsule) {\n const compiler: Compiler = context.env.getCompiler();\n return files.map((file) => join(capsule.path, compiler.getDistPathBySrcPath(file.relative)));\n }\n\n private async computePaths(\n outputPath: string,\n defs: PreviewDefinition[],\n context: ComputeTargetsContext\n ): Promise<string[]> {\n const previewMain = await this.preview.writePreviewRuntime(context);\n const moduleMapsPromise = defs.map(async (previewDef) => {\n const moduleMap = await previewDef.getModuleMap(context.components);\n\n const paths = ComponentMap.as(context.components, (component) => {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n const maybeFiles = moduleMap.get(component);\n if (!maybeFiles || !capsule) return [];\n const [, files] = maybeFiles;\n const compiledPaths = this.getPaths(context, files, capsule);\n return compiledPaths;\n });\n\n const template = previewDef.renderTemplatePath ? await previewDef.renderTemplatePath(context) : 'undefined';\n\n const link = this.preview.writeLink(\n previewDef.prefix,\n paths,\n previewDef.renderTemplatePath ? await previewDef.renderTemplatePath(context) : undefined,\n outputPath,\n false\n );\n\n const files = flatten(paths.toArray().map(([, file]) => file)).concat([link]);\n\n if (template) return files.concat([template]);\n return files;\n });\n\n const moduleMaps = await Promise.all(moduleMapsPromise);\n\n return flatten(moduleMaps.concat([previewMain]));\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export declare type ModuleVar = {
2
+ prefix: string;
3
+ paths: string[];
4
+ };
5
+ export declare function generateComponentLink(modules: ModuleVar[]): string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateComponentLink = generateComponentLink;
7
+
8
+ function _toolboxPath() {
9
+ const data = require("@teambit/toolbox.path.to-windows-compatible-path");
10
+
11
+ _toolboxPath = function () {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ function generateComponentLink(modules) {
19
+ return `${modules.map(moduleVar => {
20
+ return `export const ${moduleVar.prefix} = [${moduleVar.paths.map(path => `require('${(0, _toolboxPath().toWindowsCompatiblePath)(path)}')`).join(', ')}]`; // return `export { * as ${moduleVar.prefix} } from '${toWindowsCompatiblePath(moduleVar.paths)}'`;
21
+ }).join('\n')}
22
+ `;
23
+ }
24
+
25
+ //# sourceMappingURL=generate-component-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["generate-component-link.ts"],"names":["generateComponentLink","modules","map","moduleVar","prefix","paths","path","join"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAOO,SAASA,qBAAT,CAA+BC,OAA/B,EAA6D;AAClE,SAAQ,GAAEA,OAAO,CACdC,GADO,CACFC,SAAD,IAAe;AAClB,WAAQ,gBAAeA,SAAS,CAACC,MAAO,OAAMD,SAAS,CAACE,KAAV,CAC3CH,GAD2C,CACtCI,IAAD,IAAW,YAAW,4CAAwBA,IAAxB,CAA8B,IADb,EAE3CC,IAF2C,CAEtC,IAFsC,CAEhC,GAFd,CADkB,CAKlB;AACD,GAPO,EAQPA,IARO,CAQF,IARE,CAQI;AAChB,CATE;AAUD","sourcesContent":["import { toWindowsCompatiblePath } from '@teambit/toolbox.path.to-windows-compatible-path';\n\nexport type ModuleVar = {\n prefix: string;\n paths: string[];\n};\n\nexport function generateComponentLink(modules: ModuleVar[]): string {\n return `${modules\n .map((moduleVar) => {\n return `export const ${moduleVar.prefix} = [${moduleVar.paths\n .map((path) => `require('${toWindowsCompatiblePath(path)}')`)\n .join(', ')}]`;\n\n // return `export { * as ${moduleVar.prefix} } from '${toWindowsCompatiblePath(moduleVar.paths)}'`;\n })\n .join('\\n')}\n`;\n}\n"]}
@@ -8,6 +8,7 @@ export declare type PreviewModule<T = any> = {
8
8
  mainModule: {
9
9
  default: (...args: any[]) => void;
10
10
  };
11
+ isSplitComponentBundle?: boolean;
11
12
  };
12
13
  /** single preview module, e.g. compositions file */
13
14
  export declare type ModuleFile<T = any> = Record<string, T>;
@@ -0,0 +1,2 @@
1
+ /** html template for Previews (docs, compositions, etc) */
2
+ export declare function html(title: string): string;