@teambit/preview 0.0.802 → 0.0.803
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/dist/env-preview-template.task.js +5 -1
- package/dist/env-preview-template.task.js.map +1 -1
- package/dist/preview.main.runtime.d.ts +5 -3
- package/dist/preview.main.runtime.js +16 -5
- package/dist/preview.main.runtime.js.map +1 -1
- package/package-tar/teambit-preview-0.0.803.tgz +0 -0
- package/package.json +19 -19
- package/{preview-1659151732866.js → preview-1659271062546.js} +2 -2
- package/preview.main.runtime.tsx +23 -7
- package/package-tar/teambit-preview-0.0.802.tgz +0 -0
|
@@ -247,6 +247,10 @@ class EnvPreviewTemplateTask {
|
|
|
247
247
|
});
|
|
248
248
|
const outputPath = this.computeOutputPath(context, envComponent);
|
|
249
249
|
if (!(0, _fsExtra().existsSync)(outputPath)) (0, _fsExtra().mkdirpSync)(outputPath);
|
|
250
|
+
const resolvedEnvAspects = await this.preview.resolveAspects(undefined, [envComponent.id], undefined, {
|
|
251
|
+
requestedOnly: true
|
|
252
|
+
});
|
|
253
|
+
const hostRootDir = resolvedEnvAspects[0].aspectPath;
|
|
250
254
|
return {
|
|
251
255
|
peers,
|
|
252
256
|
html: htmlConfig,
|
|
@@ -258,7 +262,7 @@ class EnvPreviewTemplateTask {
|
|
|
258
262
|
outputPath,
|
|
259
263
|
|
|
260
264
|
/* It's a path to the root of the host component. */
|
|
261
|
-
|
|
265
|
+
hostRootDir,
|
|
262
266
|
hostDependencies: peers,
|
|
263
267
|
aliasHostDependencies: true
|
|
264
268
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GENERATE_ENV_TEMPLATE_TASK_NAME","EnvPreviewTemplateTask","constructor","preview","envs","aspectLoader","dependencyResolver","logger","execute","context","previewDefs","getDefs","htmlConfig","map","previewModule","generateHtmlConfig","dev","originalSeedersIds","capsuleNetwork","originalSeedersCapsules","c","component","id","toString","grouped","Promise","all","components","length","includes","undefined","envDef","getEnvFromComponent","env","bundlingStrategy","getBundlingStrategy","name","target","getEnvTargetFromComponent","shouldUseDefaultBundler","envToGetBundler","getEnvsEnvDefinition","groupEnvId","targets","push","isEmpty","componentsResults","runBundlerForGroups","groups","bundlerContext","Object","assign","entry","development","metaData","initiator","envId","bundlerResults","mapSeries","entries","targetsGroup","bundler","getTemplateBundler","bundlerResult","run","results","computeResults","flatten","isCoreEnv","envComponent","envPreviewConfig","getEnvPreviewConfig","peers","getPeerDependenciesListFromEnv","capsule","graphCapsules","getCapsule","Error","previewRoot","writePreviewRuntime","generateEntries","splitComponentBundle","workDir","path","outputPath","computeOutputPath","existsSync","mkdirpSync","html","chunking","splitChunks","hostDependencies","aliasHostDependencies","previewModules","getPreviewModules","previewEntries","rest","linkFile","writeLink","ComponentMap","create","peerLink","writePeerLink","generateTemplateEntries","previewRootPath","allResults","result","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","modules","compact","def","renderTemplatePathByEnv","prefix","include","join","getArtifactDirectory","CAPSULE_ARTIFACTS_DIR","globPatterns","rootDir"],"sources":["env-preview-template.task.ts"],"sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n ComponentResult,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport mapSeries from 'p-map-series';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { Bundler, BundlerContext, BundlerHtmlConfig, BundlerResult, Target } from '@teambit/bundler';\nimport type { EnvDefinition, Environment, EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { compact, flatten, isEmpty } from 'lodash';\nimport { Logger } from '@teambit/logger';\nimport { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport type { PreviewMain } from './preview.main.runtime';\nimport { generateTemplateEntries } from './bundler/chunks';\nimport { generateHtmlConfig } from './bundler/html-plugin';\nimport { writePeerLink } from './bundler/create-peers-link';\n\nexport type ModuleExpose = {\n name: string;\n path: string;\n include?: string[];\n};\n\ntype TargetsGroup = {\n env: Environment;\n envToGetBundler: Environment;\n targets: Target[];\n};\ntype TargetsGroupMap = {\n [envId: string]: TargetsGroup;\n};\n\nexport const GENERATE_ENV_TEMPLATE_TASK_NAME = 'GenerateEnvTemplate';\n\nexport class EnvPreviewTemplateTask implements BuildTask {\n aspectId = 'teambit.preview/preview';\n name = GENERATE_ENV_TEMPLATE_TASK_NAME;\n location: TaskLocation = 'end';\n // readonly dependencies = [CompilerAspect.id];\n\n constructor(\n private preview: PreviewMain,\n private envs: EnvsMain,\n private aspectLoader: AspectLoaderMain,\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger\n ) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const previewDefs = this.preview.getDefs();\n const htmlConfig = previewDefs.map((previewModule) => generateHtmlConfig(previewModule, { dev: context.dev }));\n const originalSeedersIds = context.capsuleNetwork.originalSeedersCapsules.map((c) => c.component.id.toString());\n const grouped: TargetsGroupMap = {};\n await Promise.all(\n context.components.map(async (component) => {\n // Do not run over other components in the graph. it make the process much longer with no need\n if (originalSeedersIds && originalSeedersIds.length && !originalSeedersIds.includes(component.id.toString())) {\n return undefined;\n }\n const envDef = this.envs.getEnvFromComponent(component);\n if (!envDef) return undefined;\n const env = envDef.env;\n const bundlingStrategy = this.preview.getBundlingStrategy(envDef.env);\n if (bundlingStrategy.name === 'env') {\n return undefined;\n }\n const target = await this.getEnvTargetFromComponent(context, component, envDef, htmlConfig);\n if (!target) return undefined;\n const shouldUseDefaultBundler = this.shouldUseDefaultBundler(envDef);\n let envToGetBundler = this.envs.getEnvsEnvDefinition().env;\n let groupEnvId = 'default';\n if (!shouldUseDefaultBundler) {\n envToGetBundler = env;\n groupEnvId = envDef.id;\n }\n if (!grouped[groupEnvId]) {\n grouped[groupEnvId] = {\n env,\n envToGetBundler,\n targets: [target],\n };\n } else {\n grouped[groupEnvId].targets.push(target);\n }\n return undefined;\n })\n );\n if (isEmpty(grouped)) {\n return { componentsResults: [] };\n }\n\n return this.runBundlerForGroups(context, grouped);\n }\n\n private async runBundlerForGroups(context: BuildContext, groups: TargetsGroupMap): Promise<BuiltTaskResult> {\n const bundlerContext: BundlerContext = Object.assign(context, {\n targets: [],\n entry: [],\n development: context.dev,\n metaData: {\n initiator: `${GENERATE_ENV_TEMPLATE_TASK_NAME} task`,\n envId: context.id,\n },\n });\n const bundlerResults = await mapSeries(Object.entries(groups), async ([, targetsGroup]) => {\n bundlerContext.targets = targetsGroup.targets;\n const bundler: Bundler = await targetsGroup.envToGetBundler.getTemplateBundler(bundlerContext);\n const bundlerResult = await bundler.run();\n return bundlerResult;\n });\n\n const results = await this.computeResults(bundlerContext, flatten(bundlerResults));\n return results;\n }\n\n private shouldUseDefaultBundler(envDef: EnvDefinition): boolean {\n if (this.aspectLoader.isCoreEnv(envDef.id) && envDef.id !== 'teambit.react/react-native') return true;\n const env = envDef.env;\n if (env.getTemplateBundler && typeof env.getTemplateBundler === 'function') return false;\n return true;\n }\n\n private async getEnvTargetFromComponent(\n context: BuildContext,\n envComponent: Component,\n envDef: EnvDefinition,\n htmlConfig: BundlerHtmlConfig[]\n ): Promise<Target | undefined> {\n const env = envDef.env;\n const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);\n\n const peers = await this.dependencyResolver.getPeerDependenciesListFromEnv(env);\n // const module = await this.getPreviewModule(envComponent);\n // const entries = Object.keys(module).map((key) => module.exposes[key]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);\n if (!capsule) throw new Error('no capsule found');\n // Passing here the env itself to make sure it's preview runtime will be part of the preview root file\n // that's needed to make sure the providers register there are running correctly\n const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);\n const entries = await this.generateEntries({\n envDef,\n splitComponentBundle: envPreviewConfig.splitComponentBundle ?? false,\n workDir: capsule.path,\n peers,\n previewRoot,\n });\n\n const outputPath = this.computeOutputPath(context, envComponent);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n\n return {\n peers,\n html: htmlConfig,\n entries,\n chunking: { splitChunks: true },\n components: [envComponent],\n outputPath,\n /* It's a path to the root of the host component. */\n // hostRootDir, handle this\n hostDependencies: peers,\n aliasHostDependencies: true,\n };\n }\n\n private async generateEntries({\n previewRoot,\n workDir,\n peers,\n envDef,\n splitComponentBundle,\n }: {\n previewRoot: string;\n workDir: string;\n peers: string[];\n envDef: EnvDefinition;\n splitComponentBundle: boolean;\n }) {\n const previewModules = await this.getPreviewModules(envDef);\n const previewEntries = previewModules.map(({ name, path, ...rest }) => {\n const linkFile = this.preview.writeLink(name, ComponentMap.create([]), path, workDir, splitComponentBundle);\n\n return { name, path, ...rest, entry: linkFile };\n });\n const peerLink = await writePeerLink(peers, workDir);\n\n const entries = generateTemplateEntries({\n peers: peerLink,\n previewRootPath: previewRoot,\n previewModules: previewEntries,\n });\n return entries;\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const allResults = results.map((result) => {\n const componentsResults: ComponentResult[] = result.components.map((component) => {\n return {\n component,\n errors: result.errors.map((err) => (typeof err === 'string' ? err : err.message)),\n warning: result.warnings,\n startTime: result.startTime,\n endTime: result.endTime,\n };\n });\n return componentsResults;\n });\n\n const componentsResults = flatten(allResults);\n\n const artifacts = getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n private async getPreviewModules(envDef: EnvDefinition): Promise<ModuleExpose[]> {\n const previewDefs = this.preview.getDefs();\n\n const modules = compact(\n await Promise.all(\n previewDefs.map(async (def) => {\n if (!def.renderTemplatePathByEnv) return undefined;\n return {\n name: def.prefix,\n path: await def.renderTemplatePathByEnv(envDef.env),\n include: def.include,\n };\n })\n )\n );\n\n return modules;\n }\n\n private computeOutputPath(context: BuildContext, component: Component) {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('no capsule found');\n return join(capsule.path, getArtifactDirectory());\n }\n}\n\nexport function getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, 'env-template');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'env-template',\n globPatterns: ['**'],\n rootDir: getArtifactDirectory(),\n },\n ];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAQA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AAiBO,MAAMA,+BAA+B,GAAG,qBAAxC;;;AAEA,MAAMC,sBAAN,CAAkD;EAIvD;EAEAC,WAAW,CACDC,OADC,EAEDC,IAFC,EAGDC,YAHC,EAIDC,kBAJC,EAKDC,MALC,EAMT;IAAA,KALQJ,OAKR,GALQA,OAKR;IAAA,KAJQC,IAIR,GAJQA,IAIR;IAAA,KAHQC,YAGR,GAHQA,YAGR;IAAA,KAFQC,kBAER,GAFQA,kBAER;IAAA,KADQC,MACR,GADQA,MACR;IAAA,kDAXS,yBAWT;IAAA,8CAVKP,+BAUL;IAAA,kDATuB,KASvB;EAAE;;EAES,MAAPQ,OAAO,CAACC,OAAD,EAAkD;IAC7D,MAAMC,WAAW,GAAG,KAAKP,OAAL,CAAaQ,OAAb,EAApB;IACA,MAAMC,UAAU,GAAGF,WAAW,CAACG,GAAZ,CAAiBC,aAAD,IAAmB,IAAAC,gCAAA,EAAmBD,aAAnB,EAAkC;MAAEE,GAAG,EAAEP,OAAO,CAACO;IAAf,CAAlC,CAAnC,CAAnB;IACA,MAAMC,kBAAkB,GAAGR,OAAO,CAACS,cAAR,CAAuBC,uBAAvB,CAA+CN,GAA/C,CAAoDO,CAAD,IAAOA,CAAC,CAACC,SAAF,CAAYC,EAAZ,CAAeC,QAAf,EAA1D,CAA3B;IACA,MAAMC,OAAwB,GAAG,EAAjC;IACA,MAAMC,OAAO,CAACC,GAAR,CACJjB,OAAO,CAACkB,UAAR,CAAmBd,GAAnB,CAAuB,MAAOQ,SAAP,IAAqB;MAC1C;MACA,IAAIJ,kBAAkB,IAAIA,kBAAkB,CAACW,MAAzC,IAAmD,CAACX,kBAAkB,CAACY,QAAnB,CAA4BR,SAAS,CAACC,EAAV,CAAaC,QAAb,EAA5B,CAAxD,EAA8G;QAC5G,OAAOO,SAAP;MACD;;MACD,MAAMC,MAAM,GAAG,KAAK3B,IAAL,CAAU4B,mBAAV,CAA8BX,SAA9B,CAAf;MACA,IAAI,CAACU,MAAL,EAAa,OAAOD,SAAP;MACb,MAAMG,GAAG,GAAGF,MAAM,CAACE,GAAnB;MACA,MAAMC,gBAAgB,GAAG,KAAK/B,OAAL,CAAagC,mBAAb,CAAiCJ,MAAM,CAACE,GAAxC,CAAzB;;MACA,IAAIC,gBAAgB,CAACE,IAAjB,KAA0B,KAA9B,EAAqC;QACnC,OAAON,SAAP;MACD;;MACD,MAAMO,MAAM,GAAG,MAAM,KAAKC,yBAAL,CAA+B7B,OAA/B,EAAwCY,SAAxC,EAAmDU,MAAnD,EAA2DnB,UAA3D,CAArB;MACA,IAAI,CAACyB,MAAL,EAAa,OAAOP,SAAP;MACb,MAAMS,uBAAuB,GAAG,KAAKA,uBAAL,CAA6BR,MAA7B,CAAhC;MACA,IAAIS,eAAe,GAAG,KAAKpC,IAAL,CAAUqC,oBAAV,GAAiCR,GAAvD;MACA,IAAIS,UAAU,GAAG,SAAjB;;MACA,IAAI,CAACH,uBAAL,EAA8B;QAC5BC,eAAe,GAAGP,GAAlB;QACAS,UAAU,GAAGX,MAAM,CAACT,EAApB;MACD;;MACD,IAAI,CAACE,OAAO,CAACkB,UAAD,CAAZ,EAA0B;QACxBlB,OAAO,CAACkB,UAAD,CAAP,GAAsB;UACpBT,GADoB;UAEpBO,eAFoB;UAGpBG,OAAO,EAAE,CAACN,MAAD;QAHW,CAAtB;MAKD,CAND,MAMO;QACLb,OAAO,CAACkB,UAAD,CAAP,CAAoBC,OAApB,CAA4BC,IAA5B,CAAiCP,MAAjC;MACD;;MACD,OAAOP,SAAP;IACD,CA/BD,CADI,CAAN;;IAkCA,IAAI,IAAAe,iBAAA,EAAQrB,OAAR,CAAJ,EAAsB;MACpB,OAAO;QAAEsB,iBAAiB,EAAE;MAArB,CAAP;IACD;;IAED,OAAO,KAAKC,mBAAL,CAAyBtC,OAAzB,EAAkCe,OAAlC,CAAP;EACD;;EAEgC,MAAnBuB,mBAAmB,CAACtC,OAAD,EAAwBuC,MAAxB,EAA2E;IAC1G,MAAMC,cAA8B,GAAGC,MAAM,CAACC,MAAP,CAAc1C,OAAd,EAAuB;MAC5DkC,OAAO,EAAE,EADmD;MAE5DS,KAAK,EAAE,EAFqD;MAG5DC,WAAW,EAAE5C,OAAO,CAACO,GAHuC;MAI5DsC,QAAQ,EAAE;QACRC,SAAS,EAAG,GAAEvD,+BAAgC,OADtC;QAERwD,KAAK,EAAE/C,OAAO,CAACa;MAFP;IAJkD,CAAvB,CAAvC;IASA,MAAMmC,cAAc,GAAG,MAAM,IAAAC,qBAAA,EAAUR,MAAM,CAACS,OAAP,CAAeX,MAAf,CAAV,EAAkC,OAAO,GAAGY,YAAH,CAAP,KAA4B;MACzFX,cAAc,CAACN,OAAf,GAAyBiB,YAAY,CAACjB,OAAtC;MACA,MAAMkB,OAAgB,GAAG,MAAMD,YAAY,CAACpB,eAAb,CAA6BsB,kBAA7B,CAAgDb,cAAhD,CAA/B;MACA,MAAMc,aAAa,GAAG,MAAMF,OAAO,CAACG,GAAR,EAA5B;MACA,OAAOD,aAAP;IACD,CAL4B,CAA7B;IAOA,MAAME,OAAO,GAAG,MAAM,KAAKC,cAAL,CAAoBjB,cAApB,EAAoC,IAAAkB,iBAAA,EAAQV,cAAR,CAApC,CAAtB;IACA,OAAOQ,OAAP;EACD;;EAEO1B,uBAAuB,CAACR,MAAD,EAAiC;IAC9D,IAAI,KAAK1B,YAAL,CAAkB+D,SAAlB,CAA4BrC,MAAM,CAACT,EAAnC,KAA0CS,MAAM,CAACT,EAAP,KAAc,4BAA5D,EAA0F,OAAO,IAAP;IAC1F,MAAMW,GAAG,GAAGF,MAAM,CAACE,GAAnB;IACA,IAAIA,GAAG,CAAC6B,kBAAJ,IAA0B,OAAO7B,GAAG,CAAC6B,kBAAX,KAAkC,UAAhE,EAA4E,OAAO,KAAP;IAC5E,OAAO,IAAP;EACD;;EAEsC,MAAzBxB,yBAAyB,CACrC7B,OADqC,EAErC4D,YAFqC,EAGrCtC,MAHqC,EAIrCnB,UAJqC,EAKR;IAAA;;IAC7B,MAAMqB,GAAG,GAAGF,MAAM,CAACE,GAAnB;IACA,MAAMqC,gBAAgB,GAAG,KAAKnE,OAAL,CAAaoE,mBAAb,CAAiCxC,MAAM,CAACE,GAAxC,CAAzB;IAEA,MAAMuC,KAAK,GAAG,MAAM,KAAKlE,kBAAL,CAAwBmE,8BAAxB,CAAuDxC,GAAvD,CAApB,CAJ6B,CAK7B;IACA;;IACA,MAAMyC,OAAO,GAAGjE,OAAO,CAACS,cAAR,CAAuByD,aAAvB,CAAqCC,UAArC,CAAgDP,YAAY,CAAC/C,EAA7D,CAAhB;IACA,IAAI,CAACoD,OAAL,EAAc,MAAM,IAAIG,KAAJ,CAAU,kBAAV,CAAN,CARe,CAS7B;IACA;;IACA,MAAMC,WAAW,GAAG,MAAM,KAAK3E,OAAL,CAAa4E,mBAAb,CAAiCtE,OAAjC,EAA0C,CAAC4D,YAAY,CAAC/C,EAAb,CAAgBC,QAAhB,EAAD,CAA1C,CAA1B;IACA,MAAMoC,OAAO,GAAG,MAAM,KAAKqB,eAAL,CAAqB;MACzCjD,MADyC;MAEzCkD,oBAAoB,2BAAEX,gBAAgB,CAACW,oBAAnB,yEAA2C,KAFtB;MAGzCC,OAAO,EAAER,OAAO,CAACS,IAHwB;MAIzCX,KAJyC;MAKzCM;IALyC,CAArB,CAAtB;IAQA,MAAMM,UAAU,GAAG,KAAKC,iBAAL,CAAuB5E,OAAvB,EAAgC4D,YAAhC,CAAnB;IACA,IAAI,CAAC,IAAAiB,qBAAA,EAAWF,UAAX,CAAL,EAA6B,IAAAG,qBAAA,EAAWH,UAAX;IAE7B,OAAO;MACLZ,KADK;MAELgB,IAAI,EAAE5E,UAFD;MAGL+C,OAHK;MAIL8B,QAAQ,EAAE;QAAEC,WAAW,EAAE;MAAf,CAJL;MAKL/D,UAAU,EAAE,CAAC0C,YAAD,CALP;MAMLe,UANK;;MAOL;MACA;MACAO,gBAAgB,EAAEnB,KATb;MAULoB,qBAAqB,EAAE;IAVlB,CAAP;EAYD;;EAE4B,MAAfZ,eAAe,CAAC;IAC5BF,WAD4B;IAE5BI,OAF4B;IAG5BV,KAH4B;IAI5BzC,MAJ4B;IAK5BkD;EAL4B,CAAD,EAY1B;IACD,MAAMY,cAAc,GAAG,MAAM,KAAKC,iBAAL,CAAuB/D,MAAvB,CAA7B;IACA,MAAMgE,cAAc,GAAGF,cAAc,CAAChF,GAAf,CAAmB,QAA6B;MAAA,IAA5B;QAAEuB,IAAF;QAAQ+C;MAAR,CAA4B;MAAA,IAAXa,IAAW;MACrE,MAAMC,QAAQ,GAAG,KAAK9F,OAAL,CAAa+F,SAAb,CAAuB9D,IAAvB,EAA6B+D,yBAAA,CAAaC,MAAb,CAAoB,EAApB,CAA7B,EAAsDjB,IAAtD,EAA4DD,OAA5D,EAAqED,oBAArE,CAAjB;MAEA;QAAS7C,IAAT;QAAe+C;MAAf,GAAwBa,IAAxB;QAA8B5C,KAAK,EAAE6C;MAArC;IACD,CAJsB,CAAvB;IAKA,MAAMI,QAAQ,GAAG,MAAM,IAAAC,gCAAA,EAAc9B,KAAd,EAAqBU,OAArB,CAAvB;IAEA,MAAMvB,OAAO,GAAG,IAAA4C,iCAAA,EAAwB;MACtC/B,KAAK,EAAE6B,QAD+B;MAEtCG,eAAe,EAAE1B,WAFqB;MAGtCe,cAAc,EAAEE;IAHsB,CAAxB,CAAhB;IAKA,OAAOpC,OAAP;EACD;;EAEmB,MAAdO,cAAc,CAACzD,OAAD,EAA0BwD,OAA1B,EAAoD;IACtE,MAAMwC,UAAU,GAAGxC,OAAO,CAACpD,GAAR,CAAa6F,MAAD,IAAY;MACzC,MAAM5D,iBAAoC,GAAG4D,MAAM,CAAC/E,UAAP,CAAkBd,GAAlB,CAAuBQ,SAAD,IAAe;QAChF,OAAO;UACLA,SADK;UAELsF,MAAM,EAAED,MAAM,CAACC,MAAP,CAAc9F,GAAd,CAAmB+F,GAAD,IAAU,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCA,GAAG,CAACC,OAAhE,CAFH;UAGLC,OAAO,EAAEJ,MAAM,CAACK,QAHX;UAILC,SAAS,EAAEN,MAAM,CAACM,SAJb;UAKLC,OAAO,EAAEP,MAAM,CAACO;QALX,CAAP;MAOD,CAR4C,CAA7C;MASA,OAAOnE,iBAAP;IACD,CAXkB,CAAnB;IAaA,MAAMA,iBAAiB,GAAG,IAAAqB,iBAAA,EAAQsC,UAAR,CAA1B;IAEA,MAAMS,SAAS,GAAGC,cAAc,EAAhC;IAEA,OAAO;MACLrE,iBADK;MAELoE;IAFK,CAAP;EAID;;EAE8B,MAAjBpB,iBAAiB,CAAC/D,MAAD,EAAiD;IAC9E,MAAMrB,WAAW,GAAG,KAAKP,OAAL,CAAaQ,OAAb,EAApB;IAEA,MAAMyG,OAAO,GAAG,IAAAC,iBAAA,EACd,MAAM5F,OAAO,CAACC,GAAR,CACJhB,WAAW,CAACG,GAAZ,CAAgB,MAAOyG,GAAP,IAAe;MAC7B,IAAI,CAACA,GAAG,CAACC,uBAAT,EAAkC,OAAOzF,SAAP;MAClC,OAAO;QACLM,IAAI,EAAEkF,GAAG,CAACE,MADL;QAELrC,IAAI,EAAE,MAAMmC,GAAG,CAACC,uBAAJ,CAA4BxF,MAAM,CAACE,GAAnC,CAFP;QAGLwF,OAAO,EAAEH,GAAG,CAACG;MAHR,CAAP;IAKD,CAPD,CADI,CADQ,CAAhB;IAaA,OAAOL,OAAP;EACD;;EAEO/B,iBAAiB,CAAC5E,OAAD,EAAwBY,SAAxB,EAA8C;IACrE,MAAMqD,OAAO,GAAGjE,OAAO,CAACS,cAAR,CAAuByD,aAAvB,CAAqCC,UAArC,CAAgDvD,SAAS,CAACC,EAA1D,CAAhB;IACA,IAAI,CAACoD,OAAL,EAAc,MAAM,IAAIG,KAAJ,CAAU,kBAAV,CAAN;IACd,OAAO,IAAA6C,YAAA,EAAKhD,OAAO,CAACS,IAAb,EAAmBwC,oBAAoB,EAAvC,CAAP;EACD;;AA9MsD;;;;AAiNlD,SAASA,oBAAT,GAAgC;EACrC,OAAO,IAAAD,YAAA,EAAKE,gCAAL,EAA4B,cAA5B,CAAP;AACD;;AAEM,SAAST,cAAT,GAA0B;EAC/B,OAAO,CACL;IACE/E,IAAI,EAAE,cADR;IAEEyF,YAAY,EAAE,CAAC,IAAD,CAFhB;IAGEC,OAAO,EAAEH,oBAAoB;EAH/B,CADK,CAAP;AAOD"}
|
|
1
|
+
{"version":3,"names":["GENERATE_ENV_TEMPLATE_TASK_NAME","EnvPreviewTemplateTask","constructor","preview","envs","aspectLoader","dependencyResolver","logger","execute","context","previewDefs","getDefs","htmlConfig","map","previewModule","generateHtmlConfig","dev","originalSeedersIds","capsuleNetwork","originalSeedersCapsules","c","component","id","toString","grouped","Promise","all","components","length","includes","undefined","envDef","getEnvFromComponent","env","bundlingStrategy","getBundlingStrategy","name","target","getEnvTargetFromComponent","shouldUseDefaultBundler","envToGetBundler","getEnvsEnvDefinition","groupEnvId","targets","push","isEmpty","componentsResults","runBundlerForGroups","groups","bundlerContext","Object","assign","entry","development","metaData","initiator","envId","bundlerResults","mapSeries","entries","targetsGroup","bundler","getTemplateBundler","bundlerResult","run","results","computeResults","flatten","isCoreEnv","envComponent","envPreviewConfig","getEnvPreviewConfig","peers","getPeerDependenciesListFromEnv","capsule","graphCapsules","getCapsule","Error","previewRoot","writePreviewRuntime","generateEntries","splitComponentBundle","workDir","path","outputPath","computeOutputPath","existsSync","mkdirpSync","resolvedEnvAspects","resolveAspects","requestedOnly","hostRootDir","aspectPath","html","chunking","splitChunks","hostDependencies","aliasHostDependencies","previewModules","getPreviewModules","previewEntries","rest","linkFile","writeLink","ComponentMap","create","peerLink","writePeerLink","generateTemplateEntries","previewRootPath","allResults","result","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","modules","compact","def","renderTemplatePathByEnv","prefix","include","join","getArtifactDirectory","CAPSULE_ARTIFACTS_DIR","globPatterns","rootDir"],"sources":["env-preview-template.task.ts"],"sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n ComponentResult,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport mapSeries from 'p-map-series';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { Bundler, BundlerContext, BundlerHtmlConfig, BundlerResult, Target } from '@teambit/bundler';\nimport type { EnvDefinition, Environment, EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { compact, flatten, isEmpty } from 'lodash';\nimport { Logger } from '@teambit/logger';\nimport { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport type { PreviewMain } from './preview.main.runtime';\nimport { generateTemplateEntries } from './bundler/chunks';\nimport { generateHtmlConfig } from './bundler/html-plugin';\nimport { writePeerLink } from './bundler/create-peers-link';\n\nexport type ModuleExpose = {\n name: string;\n path: string;\n include?: string[];\n};\n\ntype TargetsGroup = {\n env: Environment;\n envToGetBundler: Environment;\n targets: Target[];\n};\ntype TargetsGroupMap = {\n [envId: string]: TargetsGroup;\n};\n\nexport const GENERATE_ENV_TEMPLATE_TASK_NAME = 'GenerateEnvTemplate';\n\nexport class EnvPreviewTemplateTask implements BuildTask {\n aspectId = 'teambit.preview/preview';\n name = GENERATE_ENV_TEMPLATE_TASK_NAME;\n location: TaskLocation = 'end';\n // readonly dependencies = [CompilerAspect.id];\n\n constructor(\n private preview: PreviewMain,\n private envs: EnvsMain,\n private aspectLoader: AspectLoaderMain,\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger\n ) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const previewDefs = this.preview.getDefs();\n const htmlConfig = previewDefs.map((previewModule) => generateHtmlConfig(previewModule, { dev: context.dev }));\n const originalSeedersIds = context.capsuleNetwork.originalSeedersCapsules.map((c) => c.component.id.toString());\n const grouped: TargetsGroupMap = {};\n await Promise.all(\n context.components.map(async (component) => {\n // Do not run over other components in the graph. it make the process much longer with no need\n if (originalSeedersIds && originalSeedersIds.length && !originalSeedersIds.includes(component.id.toString())) {\n return undefined;\n }\n const envDef = this.envs.getEnvFromComponent(component);\n if (!envDef) return undefined;\n const env = envDef.env;\n const bundlingStrategy = this.preview.getBundlingStrategy(envDef.env);\n if (bundlingStrategy.name === 'env') {\n return undefined;\n }\n const target = await this.getEnvTargetFromComponent(context, component, envDef, htmlConfig);\n if (!target) return undefined;\n const shouldUseDefaultBundler = this.shouldUseDefaultBundler(envDef);\n let envToGetBundler = this.envs.getEnvsEnvDefinition().env;\n let groupEnvId = 'default';\n if (!shouldUseDefaultBundler) {\n envToGetBundler = env;\n groupEnvId = envDef.id;\n }\n if (!grouped[groupEnvId]) {\n grouped[groupEnvId] = {\n env,\n envToGetBundler,\n targets: [target],\n };\n } else {\n grouped[groupEnvId].targets.push(target);\n }\n return undefined;\n })\n );\n if (isEmpty(grouped)) {\n return { componentsResults: [] };\n }\n\n return this.runBundlerForGroups(context, grouped);\n }\n\n private async runBundlerForGroups(context: BuildContext, groups: TargetsGroupMap): Promise<BuiltTaskResult> {\n const bundlerContext: BundlerContext = Object.assign(context, {\n targets: [],\n entry: [],\n development: context.dev,\n metaData: {\n initiator: `${GENERATE_ENV_TEMPLATE_TASK_NAME} task`,\n envId: context.id,\n },\n });\n const bundlerResults = await mapSeries(Object.entries(groups), async ([, targetsGroup]) => {\n bundlerContext.targets = targetsGroup.targets;\n const bundler: Bundler = await targetsGroup.envToGetBundler.getTemplateBundler(bundlerContext);\n const bundlerResult = await bundler.run();\n return bundlerResult;\n });\n\n const results = await this.computeResults(bundlerContext, flatten(bundlerResults));\n return results;\n }\n\n private shouldUseDefaultBundler(envDef: EnvDefinition): boolean {\n if (this.aspectLoader.isCoreEnv(envDef.id) && envDef.id !== 'teambit.react/react-native') return true;\n const env = envDef.env;\n if (env.getTemplateBundler && typeof env.getTemplateBundler === 'function') return false;\n return true;\n }\n\n private async getEnvTargetFromComponent(\n context: BuildContext,\n envComponent: Component,\n envDef: EnvDefinition,\n htmlConfig: BundlerHtmlConfig[]\n ): Promise<Target | undefined> {\n const env = envDef.env;\n const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);\n\n const peers = await this.dependencyResolver.getPeerDependenciesListFromEnv(env);\n // const module = await this.getPreviewModule(envComponent);\n // const entries = Object.keys(module).map((key) => module.exposes[key]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);\n if (!capsule) throw new Error('no capsule found');\n // Passing here the env itself to make sure it's preview runtime will be part of the preview root file\n // that's needed to make sure the providers register there are running correctly\n const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);\n const entries = await this.generateEntries({\n envDef,\n splitComponentBundle: envPreviewConfig.splitComponentBundle ?? false,\n workDir: capsule.path,\n peers,\n previewRoot,\n });\n\n const outputPath = this.computeOutputPath(context, envComponent);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n const resolvedEnvAspects = await this.preview.resolveAspects(undefined, [envComponent.id], undefined, {\n requestedOnly: true,\n });\n const hostRootDir = resolvedEnvAspects[0].aspectPath;\n\n return {\n peers,\n html: htmlConfig,\n entries,\n chunking: { splitChunks: true },\n components: [envComponent],\n outputPath,\n /* It's a path to the root of the host component. */\n hostRootDir,\n hostDependencies: peers,\n aliasHostDependencies: true,\n };\n }\n\n private async generateEntries({\n previewRoot,\n workDir,\n peers,\n envDef,\n splitComponentBundle,\n }: {\n previewRoot: string;\n workDir: string;\n peers: string[];\n envDef: EnvDefinition;\n splitComponentBundle: boolean;\n }) {\n const previewModules = await this.getPreviewModules(envDef);\n const previewEntries = previewModules.map(({ name, path, ...rest }) => {\n const linkFile = this.preview.writeLink(name, ComponentMap.create([]), path, workDir, splitComponentBundle);\n\n return { name, path, ...rest, entry: linkFile };\n });\n const peerLink = await writePeerLink(peers, workDir);\n\n const entries = generateTemplateEntries({\n peers: peerLink,\n previewRootPath: previewRoot,\n previewModules: previewEntries,\n });\n return entries;\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const allResults = results.map((result) => {\n const componentsResults: ComponentResult[] = result.components.map((component) => {\n return {\n component,\n errors: result.errors.map((err) => (typeof err === 'string' ? err : err.message)),\n warning: result.warnings,\n startTime: result.startTime,\n endTime: result.endTime,\n };\n });\n return componentsResults;\n });\n\n const componentsResults = flatten(allResults);\n\n const artifacts = getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n private async getPreviewModules(envDef: EnvDefinition): Promise<ModuleExpose[]> {\n const previewDefs = this.preview.getDefs();\n\n const modules = compact(\n await Promise.all(\n previewDefs.map(async (def) => {\n if (!def.renderTemplatePathByEnv) return undefined;\n return {\n name: def.prefix,\n path: await def.renderTemplatePathByEnv(envDef.env),\n include: def.include,\n };\n })\n )\n );\n\n return modules;\n }\n\n private computeOutputPath(context: BuildContext, component: Component) {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('no capsule found');\n return join(capsule.path, getArtifactDirectory());\n }\n}\n\nexport function getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, 'env-template');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'env-template',\n globPatterns: ['**'],\n rootDir: getArtifactDirectory(),\n },\n ];\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { BuilderMain } from '@teambit/builder';
|
|
2
2
|
import { Asset, BundlerMain } from '@teambit/bundler';
|
|
3
3
|
import { PubsubMain } from '@teambit/pubsub';
|
|
4
|
-
import { Component, ComponentMain, ComponentMap } from '@teambit/component';
|
|
4
|
+
import { Component, ComponentMain, ComponentMap, ComponentID, ResolveAspectsOptions } from '@teambit/component';
|
|
5
5
|
import type { EnvsMain, PreviewEnv } from '@teambit/envs';
|
|
6
6
|
import { SlotRegistry, Harmony } from '@teambit/harmony';
|
|
7
|
-
import { UiMain } from '@teambit/ui';
|
|
7
|
+
import { UiMain, UIRoot } from '@teambit/ui';
|
|
8
8
|
import { PkgMain } from '@teambit/pkg';
|
|
9
|
-
import type { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
9
|
+
import type { AspectDefinition, AspectLoaderMain } from '@teambit/aspect-loader';
|
|
10
10
|
import { Workspace } from '@teambit/workspace';
|
|
11
11
|
import { LoggerMain, Logger } from '@teambit/logger';
|
|
12
12
|
import type { DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
@@ -145,6 +145,8 @@ export declare class PreviewMain {
|
|
|
145
145
|
writePreviewRuntime(context: {
|
|
146
146
|
components: Component[];
|
|
147
147
|
}, aspectsIdsToNotFilterOut?: string[]): Promise<string>;
|
|
148
|
+
resolveAspects(runtimeName?: string, componentIds?: ComponentID[], uiRoot?: UIRoot, opts?: ResolveAspectsOptions): Promise<AspectDefinition[]>;
|
|
149
|
+
private getUi;
|
|
148
150
|
/**
|
|
149
151
|
* Filter the aspects to have only aspects that are:
|
|
150
152
|
* 1. core aspects
|
|
@@ -647,7 +647,7 @@ class PreviewMain {
|
|
|
647
647
|
|
|
648
648
|
const environment = this.envs.getEnv(component).env;
|
|
649
649
|
const compilerInstance = (_environment$getCompi = environment.getCompiler) === null || _environment$getCompi === void 0 ? void 0 : _environment$getCompi.call(environment);
|
|
650
|
-
const modulePath = (compilerInstance === null || compilerInstance === void 0 ? void 0 : (_compilerInstance$get = compilerInstance.getPreviewComponentRootPath) === null || _compilerInstance$get === void 0 ? void 0 : _compilerInstance$get.call(compilerInstance, component)) || this.pkg.
|
|
650
|
+
const modulePath = (compilerInstance === null || compilerInstance === void 0 ? void 0 : (_compilerInstance$get = compilerInstance.getPreviewComponentRootPath) === null || _compilerInstance$get === void 0 ? void 0 : _compilerInstance$get.call(compilerInstance, component)) || this.pkg.getRuntimeModulePath(component);
|
|
651
651
|
return files.map(file => {
|
|
652
652
|
if (!this.workspace || !compilerInstance) {
|
|
653
653
|
return file.path;
|
|
@@ -668,14 +668,25 @@ class PreviewMain {
|
|
|
668
668
|
}
|
|
669
669
|
|
|
670
670
|
async writePreviewRuntime(context, aspectsIdsToNotFilterOut = []) {
|
|
671
|
-
const
|
|
672
|
-
|
|
673
|
-
const [name, uiRoot] = ui;
|
|
674
|
-
const resolvedAspects = await uiRoot.resolveAspects(_preview().PreviewRuntime.name);
|
|
671
|
+
const [name, uiRoot] = this.getUi();
|
|
672
|
+
const resolvedAspects = await this.resolveAspects(_preview().PreviewRuntime.name, undefined, uiRoot);
|
|
675
673
|
const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);
|
|
676
674
|
const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', _preview().PreviewAspect.id);
|
|
677
675
|
return filePath;
|
|
678
676
|
}
|
|
677
|
+
|
|
678
|
+
async resolveAspects(runtimeName, componentIds, uiRoot, opts) {
|
|
679
|
+
const root = uiRoot || this.getUi()[1];
|
|
680
|
+
runtimeName = runtimeName || _cli().MainRuntime.name;
|
|
681
|
+
const resolvedAspects = await root.resolveAspects(runtimeName, componentIds, opts);
|
|
682
|
+
return resolvedAspects;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
getUi() {
|
|
686
|
+
const ui = this.ui.getUi();
|
|
687
|
+
if (!ui) throw new Error('ui not found');
|
|
688
|
+
return ui;
|
|
689
|
+
}
|
|
679
690
|
/**
|
|
680
691
|
* Filter the aspects to have only aspects that are:
|
|
681
692
|
* 1. core aspects
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","data","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByExtensionAndTaskName","PREVIEW_TASK_NAME","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getArtifactsVinylByExtensionAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","length","isLegacyHeader","ENV_WITH_LEGACY_DOCS","ENV_STRATEGY_ARTIFACT_NAME","envType","getEnvData","type","includes","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","getAspectDir","artifactDef","getEnvTemplateArtifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","existsSync","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","envComponent","BitError","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","writeFileSync","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","templatePath","renderTemplatePath","getModuleMap","getEnvPreviewConfig","splitComponentBundle","withPaths","environment","compilerInstance","getCompiler","modulePath","getPreviewComponentRootPath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","mkdirSync","recursive","link","all","aspectsIdsToNotFilterOut","getUi","Error","name","uiRoot","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","uniq","filtered","filter","aspect","getId","isCoreAspect","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","previewSchema","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","addRuntime"],"sources":["preview.main.runtime.tsx"],"sourcesContent":["import { ArtifactFactory, BuilderAspect } from '@teambit/builder';\nimport type { BuilderMain } from '@teambit/builder';\nimport { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { 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 { ENV_STRATEGY_ARTIFACT_NAME } from './strategies/env-strategy';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\ntype PreviewFiles = {\n files: string[];\n isBundledWithEnv: boolean;\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n /**\n * limit concurrent components when running the bundling step for your bundler during generate components preview task.\n * this helps mitigate large memory consumption for the build pipeline. This may increase the overall time for the generate-preview task, but reduce memory footprint.\n * default - no limit.\n */\n maxChunkSize?: number;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: string;\n splitComponentBundle?: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport type GenerateLinkFn = (prefix: string, componentMap: ComponentMap<string[]>, defaultModule?: string) => string;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private componentAspect: ComponentMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n getComponentBundleSize(component: Component): ComponentPreviewSize | undefined {\n const data = this.builder.getDataByAspect(component, PreviewAspect.id);\n\n if (!data) return undefined;\n return data[COMPONENT_STRATEGY_SIZE_KEY_NAME];\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts) return undefined;\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * Get a list of all the artifact files generated during the GeneratePreview task\n * @param component\n * @returns\n */\n async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {\n const artifacts = await this.getPreview(component);\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n isBundledWithEnv,\n };\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * @param component\n * @returns\n */\n async isBundledWithEnv(component: Component): Promise<boolean> {\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndName(\n component,\n PreviewAspect.id,\n COMPONENT_STRATEGY_ARTIFACT_NAME\n );\n if (!artifacts || !artifacts.length) return true;\n\n return false;\n }\n\n /**\n * Check if the component preview bundle contain the header inside of it (legacy)\n * today we are not including the header inside anymore\n * @param component\n * @returns\n */\n async isLegacyHeader(component: Component): Promise<boolean> {\n // these envs had header in their docs\n const ENV_WITH_LEGACY_DOCS = ['react', 'env', 'aspect', 'lit', 'html', 'node', 'mdx', 'react-native', 'readme'];\n\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndName(\n component,\n PreviewAspect.id,\n ENV_STRATEGY_ARTIFACT_NAME\n );\n const envType = this.envs.getEnvData(component).type;\n return !!artifacts && !!artifacts.length && ENV_WITH_LEGACY_DOCS.includes(envType);\n }\n\n /**\n * Getting the env template artifact\n * This should be called with the env itself or it will return undefined\n * If you want to get the env template from the env of the component,\n * use: getEnvTemplateFromComponentEnv below\n *\n * @param component\n * @returns\n */\n async getEnvTemplate(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.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 isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\n const withPaths = map.map<string[]>((files, component) => {\n const environment = this.envs.getEnv(component).env;\n const compilerInstance = environment.getCompiler?.();\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n const [name, uiRoot] = ui;\n const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(\n aspects: AspectDefinition[],\n context: { components: Component[] },\n aspectsIdsToNotFilterOut: string[] = []\n ) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return (\n this.aspectLoader.isCoreAspect(aspect.getId) ||\n allAspectsToInclude.includes(aspect.getId) ||\n aspectsIdsToNotFilterOut.includes(aspect.getId)\n );\n });\n\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [\n new EnvBundlingStrategy(this, this.pkg, this.dependencyResolver),\n new ComponentBundlingStrategy(this, this.pkg, this.dependencyResolver),\n ];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n getEnvPreviewConfig(env?: PreviewEnv): EnvPreviewConfig {\n const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};\n\n return config;\n }\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(env?: PreviewEnv): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const strategyFromEnv = envPreviewConfig?.strategyName;\n const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n // app.registerApp(new PreviewApp());\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));\n\n componentExtension.registerRoute([\n new PreviewRoute(preview, logger),\n new ComponentPreviewRoute(preview, logger),\n // @ts-ignore\n new EnvTemplateRoute(preview, logger),\n new PreviewAssetsRoute(preview, logger),\n ]);\n\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled)\n builder.registerBuildTasks([\n new EnvPreviewTemplateTask(preview, envs, aspectLoader, dependencyResolver, logger),\n new PreviewTask(bundler, preview, dependencyResolver, logger),\n ]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;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"}
|
|
1
|
+
{"version":3,"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","join","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","componentAspect","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","dependencyResolver","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getComponentBundleSize","data","getDataByAspect","undefined","COMPONENT_STRATEGY_SIZE_KEY_NAME","getPreview","artifacts","getArtifactsVinylByExtensionAndTaskName","PREVIEW_TASK_NAME","PreviewArtifact","getPreviewFiles","isBundledWithEnv","files","getPaths","getArtifactsVinylByExtensionAndName","COMPONENT_STRATEGY_ARTIFACT_NAME","length","isLegacyHeader","ENV_WITH_LEGACY_DOCS","ENV_STRATEGY_ARTIFACT_NAME","envType","getEnvData","type","includes","getEnvTemplate","GENERATE_ENV_TEMPLATE_TASK_NAME","getCoreEnvTemplate","coreEnvDir","getAspectDir","artifactDef","getEnvTemplateArtifactDef","artifactFactory","ArtifactFactory","rootDir","getRootDir","existsSync","coreEnvDirFromBvm","getAspectDirFromBvm","paths","resolvePaths","artifactFiles","ArtifactFiles","populateVinylsFromPaths","vinyls","getEnvTemplateFromComponentEnv","getEnvId","getEnvTemplateByEnvId","isCoreEnv","host","getHost","resolvedEnvId","resolveComponentId","envComponent","BitError","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","isSplitComponentBundle","contents","generateLink","writeLinkContents","targetDir","hash","objectHash","targetPath","timestamp","writeHash","writeFileSync","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","map","previewDef","templatePath","renderTemplatePath","getModuleMap","getEnvPreviewConfig","splitComponentBundle","withPaths","environment","compilerInstance","getCompiler","modulePath","getPreviewComponentRootPath","getRuntimeModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","mkdirSync","recursive","link","all","aspectsIdsToNotFilterOut","name","uiRoot","getUi","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","runtimeName","componentIds","opts","root","MainRuntime","Error","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","uniq","filtered","filter","aspect","getId","isCoreAspect","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","previewSchema","Slot","withType","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","DependencyResolverAspect","GraphqlAspect","addRuntime"],"sources":["preview.main.runtime.tsx"],"sourcesContent":["import { ArtifactFactory, BuilderAspect } from '@teambit/builder';\nimport type { BuilderMain } from '@teambit/builder';\nimport { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID, ResolveAspectsOptions } from '@teambit/component';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain, UIRoot } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectLoaderAspect, getAspectDir, getAspectDirFromBvm } from '@teambit/aspect-loader';\nimport type { AspectDefinition, AspectLoaderMain } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ArtifactFiles } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport 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 { ENV_STRATEGY_ARTIFACT_NAME } from './strategies/env-strategy';\nimport { previewSchema } from './preview.graphql';\nimport { PreviewAssetsRoute } from './preview-assets.route';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\ntype PreviewFiles = {\n files: string[];\n isBundledWithEnv: boolean;\n};\n\nexport type ComponentPreviewSizedFile = Asset;\n\nexport type ComponentPreviewSize = {\n files: ComponentPreviewSizedFile[];\n assets: ComponentPreviewSizedFile[];\n totalFiles: number;\n compressedTotalFiles?: number;\n totalAssets: number;\n compressedTotalAssets?: number;\n total: number;\n compressedTotal?: number;\n};\n\nexport type ComponentPreviewMetaData = {\n size?: ComponentPreviewSize;\n};\n\nexport type PreviewConfig = {\n bundlingStrategy?: string;\n disabled: boolean;\n /**\n * limit concurrent components when running the bundling step for your bundler during generate components preview task.\n * this helps mitigate large memory consumption for the build pipeline. This may increase the overall time for the generate-preview task, but reduce memory footprint.\n * default - no limit.\n */\n maxChunkSize?: number;\n};\n\nexport type EnvPreviewConfig = {\n strategyName?: string;\n splitComponentBundle?: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport type GenerateLinkFn = (prefix: string, componentMap: ComponentMap<string[]>, defaultModule?: string) => string;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private componentAspect: ComponentMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n getComponentBundleSize(component: Component): ComponentPreviewSize | undefined {\n const data = this.builder.getDataByAspect(component, PreviewAspect.id);\n\n if (!data) return undefined;\n return data[COMPONENT_STRATEGY_SIZE_KEY_NAME];\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndTaskName(\n component,\n PreviewAspect.id,\n PREVIEW_TASK_NAME\n );\n if (!artifacts) return undefined;\n return new PreviewArtifact(artifacts);\n }\n\n /**\n * Get a list of all the artifact files generated during the GeneratePreview task\n * @param component\n * @returns\n */\n async getPreviewFiles(component: Component): Promise<PreviewFiles | undefined> {\n const artifacts = await this.getPreview(component);\n const isBundledWithEnv = await this.isBundledWithEnv(component);\n if (!artifacts) return undefined;\n return {\n files: artifacts.getPaths(),\n isBundledWithEnv,\n };\n }\n\n /**\n * Check if the component preview bundle contain the env as part of the bundle or only the component code\n * (we used in the past to bundle them together, there might also be specific envs which still uses the env strategy)\n * @param component\n * @returns\n */\n async isBundledWithEnv(component: Component): Promise<boolean> {\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndName(\n component,\n PreviewAspect.id,\n COMPONENT_STRATEGY_ARTIFACT_NAME\n );\n if (!artifacts || !artifacts.length) return true;\n\n return false;\n }\n\n /**\n * Check if the component preview bundle contain the header inside of it (legacy)\n * today we are not including the header inside anymore\n * @param component\n * @returns\n */\n async isLegacyHeader(component: Component): Promise<boolean> {\n // these envs had header in their docs\n const ENV_WITH_LEGACY_DOCS = ['react', 'env', 'aspect', 'lit', 'html', 'node', 'mdx', 'react-native', 'readme'];\n\n const artifacts = await this.builder.getArtifactsVinylByExtensionAndName(\n component,\n PreviewAspect.id,\n ENV_STRATEGY_ARTIFACT_NAME\n );\n const envType = this.envs.getEnvData(component).type;\n return !!artifacts && !!artifacts.length && ENV_WITH_LEGACY_DOCS.includes(envType);\n }\n\n /**\n * Getting the env template artifact\n * This should be called with the env itself or it will return undefined\n * If you want to get the env template from the env of the component,\n * use: getEnvTemplateFromComponentEnv below\n *\n * @param component\n * @returns\n */\n async getEnvTemplate(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.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 isSplitComponentBundle = this.getEnvPreviewConfig().splitComponentBundle ?? false;\n const withPaths = map.map<string[]>((files, component) => {\n const environment = this.envs.getEnv(component).env;\n const compilerInstance = environment.getCompiler?.();\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getRuntimeModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath, isSplitComponentBundle);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {\n const [name, uiRoot] = this.getUi();\n const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n async resolveAspects(\n runtimeName?: string,\n componentIds?: ComponentID[],\n uiRoot?: UIRoot,\n opts?: ResolveAspectsOptions\n ): Promise<AspectDefinition[]> {\n const root = uiRoot || this.getUi()[1];\n runtimeName = runtimeName || MainRuntime.name;\n const resolvedAspects = await root.resolveAspects(runtimeName, componentIds, opts);\n return resolvedAspects;\n }\n\n private getUi() {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n return ui;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(\n aspects: AspectDefinition[],\n context: { components: Component[] },\n aspectsIdsToNotFilterOut: string[] = []\n ) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return (\n this.aspectLoader.isCoreAspect(aspect.getId) ||\n allAspectsToInclude.includes(aspect.getId) ||\n aspectsIdsToNotFilterOut.includes(aspect.getId)\n );\n });\n\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [\n new EnvBundlingStrategy(this, this.pkg, this.dependencyResolver),\n new ComponentBundlingStrategy(this, this.pkg, this.dependencyResolver),\n ];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n getEnvPreviewConfig(env?: PreviewEnv): EnvPreviewConfig {\n const config = env?.getPreviewConfig && typeof env?.getPreviewConfig === 'function' ? env?.getPreviewConfig() : {};\n\n return config;\n }\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(env?: PreviewEnv): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const envPreviewConfig = this.getEnvPreviewConfig(env);\n const strategyFromEnv = envPreviewConfig?.strategyName;\n const strategyName = strategyFromEnv || this.config.bundlingStrategy || 'env';\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n DependencyResolverAspect,\n GraphqlAspect,\n ];\n\n static defaultConfig = {\n disabled: false,\n };\n\n static async provider(\n // eslint-disable-next-line max-len\n [\n bundler,\n builder,\n componentExtension,\n uiMain,\n envs,\n workspace,\n pkg,\n pubsub,\n aspectLoader,\n loggerMain,\n dependencyResolver,\n graphql,\n ]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain,\n DependencyResolverMain,\n GraphqlMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n // app.registerApp(new PreviewApp());\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n componentExtension,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger,\n dependencyResolver\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub, logger));\n\n componentExtension.registerRoute([\n new PreviewRoute(preview, logger),\n new ComponentPreviewRoute(preview, logger),\n // @ts-ignore\n new EnvTemplateRoute(preview, logger),\n new PreviewAssetsRoute(preview, logger),\n ]);\n\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled)\n builder.registerBuildTasks([\n new EnvPreviewTemplateTask(preview, envs, aspectLoader, dependencyResolver, logger),\n new PreviewTask(bundler, preview, dependencyResolver, logger),\n ]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/preview",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.803",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/preview/preview",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.preview",
|
|
8
8
|
"name": "preview",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.803"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"mime": "2.5.2",
|
|
@@ -23,28 +23,28 @@
|
|
|
23
23
|
"@babel/runtime": "7.12.18",
|
|
24
24
|
"core-js": "^3.0.0",
|
|
25
25
|
"@teambit/harmony": "0.3.3",
|
|
26
|
-
"@teambit/express": "0.0.
|
|
27
|
-
"@teambit/logger": "0.0.
|
|
26
|
+
"@teambit/express": "0.0.633",
|
|
27
|
+
"@teambit/logger": "0.0.628",
|
|
28
28
|
"@teambit/ui-foundation.ui.pages.static-error": "0.0.74",
|
|
29
|
-
"@teambit/builder": "0.0.
|
|
30
|
-
"@teambit/bundler": "0.0.
|
|
31
|
-
"@teambit/component": "0.0.
|
|
32
|
-
"@teambit/aspect-loader": "0.0.
|
|
33
|
-
"@teambit/dependency-resolver": "0.0.
|
|
34
|
-
"@teambit/envs": "0.0.
|
|
29
|
+
"@teambit/builder": "0.0.803",
|
|
30
|
+
"@teambit/bundler": "0.0.803",
|
|
31
|
+
"@teambit/component": "0.0.803",
|
|
32
|
+
"@teambit/aspect-loader": "0.0.803",
|
|
33
|
+
"@teambit/dependency-resolver": "0.0.803",
|
|
34
|
+
"@teambit/envs": "0.0.803",
|
|
35
35
|
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.483",
|
|
36
36
|
"@teambit/component-id": "0.0.405",
|
|
37
37
|
"@teambit/bit-error": "0.0.394",
|
|
38
|
-
"@teambit/cli": "0.0.
|
|
39
|
-
"@teambit/graphql": "0.0.
|
|
40
|
-
"@teambit/pkg": "0.0.
|
|
41
|
-
"@teambit/pubsub": "0.0.
|
|
42
|
-
"@teambit/ui": "0.0.
|
|
43
|
-
"@teambit/workspace": "0.0.
|
|
44
|
-
"@teambit/compiler": "0.0.
|
|
38
|
+
"@teambit/cli": "0.0.535",
|
|
39
|
+
"@teambit/graphql": "0.0.803",
|
|
40
|
+
"@teambit/pkg": "0.0.803",
|
|
41
|
+
"@teambit/pubsub": "0.0.803",
|
|
42
|
+
"@teambit/ui": "0.0.803",
|
|
43
|
+
"@teambit/workspace": "0.0.803",
|
|
44
|
+
"@teambit/compiler": "0.0.803",
|
|
45
45
|
"@teambit/preview.cli.preview-server-status": "0.0.492",
|
|
46
46
|
"@teambit/preview.cli.webpack-events-listener": "0.0.161",
|
|
47
|
-
"@teambit/isolator": "0.0.
|
|
47
|
+
"@teambit/isolator": "0.0.803"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/mime": "2.0.3",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@teambit/preview.aspect-docs.preview": "0.0.139"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
|
-
"@teambit/legacy": "1.0.
|
|
65
|
+
"@teambit/legacy": "1.0.317",
|
|
66
66
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
67
67
|
"react": "^16.8.0 || ^17.0.0"
|
|
68
68
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.803/dist/preview.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.803/dist/preview.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
package/preview.main.runtime.tsx
CHANGED
|
@@ -3,11 +3,11 @@ import type { BuilderMain } from '@teambit/builder';
|
|
|
3
3
|
import { Asset, BundlerAspect, BundlerMain } from '@teambit/bundler';
|
|
4
4
|
import { PubsubAspect, PubsubMain } from '@teambit/pubsub';
|
|
5
5
|
import { MainRuntime } from '@teambit/cli';
|
|
6
|
-
import { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';
|
|
6
|
+
import { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID, ResolveAspectsOptions } from '@teambit/component';
|
|
7
7
|
import { EnvsAspect } from '@teambit/envs';
|
|
8
8
|
import type { EnvsMain, ExecutionContext, PreviewEnv } from '@teambit/envs';
|
|
9
9
|
import { Slot, SlotRegistry, Harmony } from '@teambit/harmony';
|
|
10
|
-
import { UIAspect, UiMain } from '@teambit/ui';
|
|
10
|
+
import { UIAspect, UiMain, UIRoot } from '@teambit/ui';
|
|
11
11
|
import { CACHE_ROOT } from '@teambit/legacy/dist/constants';
|
|
12
12
|
import { BitError } from '@teambit/bit-error';
|
|
13
13
|
import objectHash from 'object-hash';
|
|
@@ -348,7 +348,7 @@ export class PreviewMain {
|
|
|
348
348
|
const environment = this.envs.getEnv(component).env;
|
|
349
349
|
const compilerInstance = environment.getCompiler?.();
|
|
350
350
|
const modulePath =
|
|
351
|
-
compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.
|
|
351
|
+
compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getRuntimeModulePath(component);
|
|
352
352
|
return files.map((file) => {
|
|
353
353
|
if (!this.workspace || !compilerInstance) {
|
|
354
354
|
return file.path;
|
|
@@ -370,15 +370,31 @@ export class PreviewMain {
|
|
|
370
370
|
}
|
|
371
371
|
|
|
372
372
|
async writePreviewRuntime(context: { components: Component[] }, aspectsIdsToNotFilterOut: string[] = []) {
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
const [name, uiRoot] = ui;
|
|
376
|
-
const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);
|
|
373
|
+
const [name, uiRoot] = this.getUi();
|
|
374
|
+
const resolvedAspects = await this.resolveAspects(PreviewRuntime.name, undefined, uiRoot);
|
|
377
375
|
const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context, aspectsIdsToNotFilterOut);
|
|
378
376
|
const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);
|
|
379
377
|
return filePath;
|
|
380
378
|
}
|
|
381
379
|
|
|
380
|
+
async resolveAspects(
|
|
381
|
+
runtimeName?: string,
|
|
382
|
+
componentIds?: ComponentID[],
|
|
383
|
+
uiRoot?: UIRoot,
|
|
384
|
+
opts?: ResolveAspectsOptions
|
|
385
|
+
): Promise<AspectDefinition[]> {
|
|
386
|
+
const root = uiRoot || this.getUi()[1];
|
|
387
|
+
runtimeName = runtimeName || MainRuntime.name;
|
|
388
|
+
const resolvedAspects = await root.resolveAspects(runtimeName, componentIds, opts);
|
|
389
|
+
return resolvedAspects;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
private getUi() {
|
|
393
|
+
const ui = this.ui.getUi();
|
|
394
|
+
if (!ui) throw new Error('ui not found');
|
|
395
|
+
return ui;
|
|
396
|
+
}
|
|
397
|
+
|
|
382
398
|
/**
|
|
383
399
|
* Filter the aspects to have only aspects that are:
|
|
384
400
|
* 1. core aspects
|
|
Binary file
|