@teambit/preview 0.0.664 → 0.0.667
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{__preview-1646191436076.js → __preview-1646623282945.js} +1 -1
- package/dist/env-preview-template.task.d.ts +2 -3
- package/dist/env-preview-template.task.js +3 -4
- package/dist/env-preview-template.task.js.map +1 -1
- package/dist/preview-type.d.ts +2 -1
- package/dist/preview.preview.runtime.js +1 -1
- package/dist/preview.preview.runtime.js.map +1 -1
- package/package-tar/teambit-preview-0.0.667.tgz +0 -0
- package/package.json +16 -16
- package/preview.preview.runtime.tsx +1 -1
- package/package-tar/teambit-preview-0.0.664.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.
|
|
1
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.667/dist/preview.docs.mdx')]
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { BuildContext, BuiltTaskResult, BuildTask, TaskLocation, ComponentResult } from '@teambit/builder';
|
|
2
|
-
import { Component } from '@teambit/component';
|
|
3
2
|
import { Capsule } from '@teambit/isolator';
|
|
4
3
|
import { BundlerContext, BundlerEntryMap, BundlerResult } from '@teambit/bundler';
|
|
5
|
-
import type { EnvsMain } from '@teambit/envs';
|
|
4
|
+
import type { EnvDefinition, EnvsMain } from '@teambit/envs';
|
|
6
5
|
import type { PreviewMain } from './preview.main.runtime';
|
|
7
6
|
export declare type ModuleExpose = {
|
|
8
7
|
name: string;
|
|
@@ -31,7 +30,7 @@ export declare class EnvPreviewTemplateTask implements BuildTask {
|
|
|
31
30
|
rootDir: string;
|
|
32
31
|
}[];
|
|
33
32
|
}>;
|
|
34
|
-
getPreviewModules(
|
|
33
|
+
getPreviewModules(envDef: EnvDefinition): Promise<ModuleExpose[]>;
|
|
35
34
|
private computeOutputPath;
|
|
36
35
|
}
|
|
37
36
|
export declare function getArtifactDirectory(): string;
|
|
@@ -131,7 +131,7 @@ class EnvPreviewTemplateTask {
|
|
|
131
131
|
// that's needed to make sure the providers register there are running correctly
|
|
132
132
|
|
|
133
133
|
const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);
|
|
134
|
-
const previewModules = await this.getPreviewModules(
|
|
134
|
+
const previewModules = await this.getPreviewModules(envDef); // const templatesFile = previewModules.map((template) => {
|
|
135
135
|
// return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);
|
|
136
136
|
// });
|
|
137
137
|
|
|
@@ -253,14 +253,13 @@ class EnvPreviewTemplateTask {
|
|
|
253
253
|
};
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
async getPreviewModules(
|
|
257
|
-
const env = this.envs.getEnv(envComponent);
|
|
256
|
+
async getPreviewModules(envDef) {
|
|
258
257
|
const previewDefs = this.preview.getDefs();
|
|
259
258
|
const modules = (0, _lodash().compact)(await Promise.all(previewDefs.map(async def => {
|
|
260
259
|
if (!def.renderTemplatePathByEnv) return undefined;
|
|
261
260
|
return {
|
|
262
261
|
name: def.prefix,
|
|
263
|
-
path: await def.renderTemplatePathByEnv(
|
|
262
|
+
path: await def.renderTemplatePathByEnv(envDef.env),
|
|
264
263
|
include: def.include
|
|
265
264
|
};
|
|
266
265
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["env-preview-template.task.ts"],"names":["GENERATE_ENV_TEMPLATE_TASK_NAME","PREVIEW_ROOT_CHUNK_NAME","PEERS_CHUNK_NAME","EnvPreviewTemplateTask","constructor","preview","envs","execute","context","previewDefs","getDefs","htmlConfig","generateHtmlConfig","dev","targets","Promise","all","components","map","component","envDef","getEnvFromComponent","undefined","env","bundlingStrategy","getBundlingStrategy","name","envComponent","envPreviewConfig","getEnvPreviewConfig","isSplitComponentBundle","splitComponentBundle","envGetDeps","getDependencies","envComponentPeers","Object","keys","peerDependencies","envHostDeps","getHostDependencies","peers","concat","capsule","capsuleNetwork","graphCapsules","getCapsule","id","Error","previewRoot","writePreviewRuntime","toString","previewModules","getPreviewModules","outputPath","computeOutputPath","entries","getEntries","runtimeChunkName","html","chunking","splitChunks","length","componentsResults","bundlerContext","assign","entry","externalizePeer","development","bundler","getBundler","bundlerResults","run","results","computeResults","previewRootChunkName","peersChunkName","options","htmlConfigs","previewModule","generateHtmlConfigForPreviewDef","previewDef","previewDeps","include","chunks","prefix","includePeers","unshift","config","title","templateContent","minify","filename","previewRootEntry","import","peersRootEntry","reduce","acc","module","linkFile","writeLink","ComponentMap","create","path","dependOn","result","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","getEnv","modules","def","renderTemplatePathByEnv","getArtifactDirectory","CAPSULE_ARTIFACTS_DIR","globPatterns","rootDir"],"mappings":"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","sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n ComponentResult,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { Capsule } from '@teambit/isolator';\nimport { Bundler, BundlerContext, BundlerEntryMap, BundlerHtmlConfig, BundlerResult, Target } from '@teambit/bundler';\nimport type { EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { cloneDeep, compact } from 'lodash';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport type { PreviewMain } from './preview.main.runtime';\nimport { PreviewDefinition } from '.';\nimport { html } from './webpack';\n\nexport type ModuleExpose = {\n name: string;\n path: string;\n include?: string[];\n};\n\nexport const GENERATE_ENV_TEMPLATE_TASK_NAME = 'GenerateEnvTemplate';\nexport const PREVIEW_ROOT_CHUNK_NAME = 'previewRoot';\nexport const PEERS_CHUNK_NAME = 'peers';\n\nexport class EnvPreviewTemplateTask implements BuildTask {\n aspectId = 'teambit.preview/preview';\n name = GENERATE_ENV_TEMPLATE_TASK_NAME;\n location: TaskLocation = 'end';\n // readonly dependencies = [CompilerAspect.id];\n\n constructor(private preview: PreviewMain, private envs: EnvsMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const previewDefs = this.preview.getDefs();\n const htmlConfig = this.generateHtmlConfig(previewDefs, PREVIEW_ROOT_CHUNK_NAME, PEERS_CHUNK_NAME, {\n dev: context.dev,\n });\n const targets: Target[] = compact(\n await Promise.all(\n context.components.map(async (component) => {\n const envDef = this.envs.getEnvFromComponent(component);\n if (!envDef) return undefined;\n const env = envDef.env;\n const bundlingStrategy = this.preview.getBundlingStrategy(envDef.env);\n if (bundlingStrategy.name === 'env') {\n return undefined;\n }\n const envComponent = component;\n const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);\n const isSplitComponentBundle = envPreviewConfig.splitComponentBundle ?? false;\n const envGetDeps = (await env.getDependencies()) || {};\n const envComponentPeers = Object.keys(envGetDeps.peerDependencies || {}) || [];\n const envHostDeps = env.getHostDependencies() || [];\n const peers = envComponentPeers.concat(envHostDeps);\n\n // const module = await this.getPreviewModule(envComponent);\n // const entries = Object.keys(module).map((key) => module.exposes[key]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);\n if (!capsule) throw new Error('no capsule found');\n // Passing here the env itself to make sure it's preview runtime will be part of the preview root file\n // that's needed to make sure the providers register there are running correctly\n const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);\n const previewModules = await this.getPreviewModules(envComponent);\n // const templatesFile = previewModules.map((template) => {\n // return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);\n // });\n const outputPath = this.computeOutputPath(context, envComponent);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n const entries = this.getEntries(previewModules, capsule, previewRoot, isSplitComponentBundle, peers);\n\n // const entries = this.getEntries(\n // previewModules.concat({\n // name: 'main',\n // path: previewRoot,\n // })\n // );\n\n return {\n // entries: templatesFile.concat(previewRoot),\n peers,\n runtimeChunkName: 'runtime',\n html: htmlConfig,\n entries,\n chunking: {\n splitChunks: true,\n },\n components: [envComponent],\n outputPath,\n // modules: [module],\n };\n })\n )\n );\n\n if (!targets.length) return { componentsResults: [] };\n const bundlerContext: BundlerContext = Object.assign(cloneDeep(context), {\n targets,\n entry: [],\n externalizePeer: false,\n development: context.dev,\n });\n\n const bundler: Bundler = await context.env.getBundler(bundlerContext);\n const bundlerResults = await bundler.run();\n const results = await this.computeResults(bundlerContext, bundlerResults);\n return results;\n }\n\n private generateHtmlConfig(\n previewDefs: PreviewDefinition[],\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig[] {\n const htmlConfigs = previewDefs.map((previewModule) =>\n this.generateHtmlConfigForPreviewDef(previewModule, previewRootChunkName, peersChunkName, options)\n );\n return htmlConfigs;\n }\n\n private generateHtmlConfigForPreviewDef(\n previewDef: PreviewDefinition,\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig {\n const previewDeps = previewDef.include || [];\n const chunks = [...previewDeps, previewDef.prefix, previewRootChunkName];\n if (previewDef.includePeers) {\n chunks.unshift(peersChunkName);\n }\n\n const config = {\n title: 'Preview',\n templateContent: html('Preview'),\n minify: options?.dev ?? true,\n chunks,\n filename: `${previewDef.prefix}.html`,\n };\n return config;\n }\n\n getEntries(\n previewModules: ModuleExpose[],\n capsule: Capsule,\n previewRoot: string,\n isSplitComponentBundle = false,\n peers: string[] = []\n ): BundlerEntryMap {\n const previewRootEntry = {\n filename: 'preview-root.[chunkhash].js',\n import: previewRoot,\n };\n\n const peersRootEntry = {\n filename: 'peers.[chunkhash].js',\n import: peers,\n };\n\n const entries = previewModules.reduce(\n (acc, module) => {\n const linkFile = this.preview.writeLink(\n module.name,\n ComponentMap.create([]),\n module.path,\n capsule.path,\n isSplitComponentBundle\n );\n acc[module.name] = {\n // filename: `${module.name}.[contenthash].js`,\n filename: `${module.name}.[chunkhash].js`,\n // filename: `${module.name}.js`,\n import: linkFile,\n // library: {\n // name: module.name,\n // type: 'umd',\n // },\n };\n if (module.include) {\n acc[module.name].dependOn = module.include;\n }\n return acc;\n },\n { [PREVIEW_ROOT_CHUNK_NAME]: previewRootEntry, [PEERS_CHUNK_NAME]: peersRootEntry }\n );\n\n return entries;\n\n // const mergedEntries = return entriesArr.reduce((entriesMap, entry) => {\n // entriesMap[entry.library.name] = entry;\n // return entriesMap;\n // }, {previewRoot: previewRootEntry});\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const result = results[0];\n\n const componentsResults: ComponentResult[] = result.components.map((component) => {\n return {\n component,\n errors: result.errors.map((err) => (typeof err === 'string' ? err : err.message)),\n warning: result.warnings,\n startTime: result.startTime,\n endTime: result.endTime,\n };\n });\n\n const artifacts = getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n async getPreviewModules(envComponent: Component): Promise<ModuleExpose[]> {\n const env = this.envs.getEnv(envComponent);\n const previewDefs = this.preview.getDefs();\n const modules = compact(\n await Promise.all(\n previewDefs.map(async (def) => {\n if (!def.renderTemplatePathByEnv) return undefined;\n return {\n name: def.prefix,\n path: await def.renderTemplatePathByEnv(env.env),\n include: def.include,\n };\n })\n )\n );\n\n return modules;\n }\n\n private computeOutputPath(context: BuildContext, component: Component) {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('no capsule found');\n return join(capsule.path, getArtifactDirectory());\n }\n\n // private async getPreviewModule(envComponent: Component): Promise<ModuleTarget> {\n // const env = this.envs.getEnv(envComponent);\n // const previewDefs = this.preview.getDefs();\n // const modules = compact(await Promise.all(previewDefs.map(async (def) => {\n // if (!def.renderTemplatePathByEnv) return undefined;\n // return [def.prefix, await def.renderTemplatePathByEnv(env.env)];\n // })));\n\n // const exposes = modules.reduce((exposesAcc, [prefix, path]) => {\n // const internalPath = `./${prefix}`;\n // exposesAcc[internalPath] = path;\n // return exposesAcc;\n // }, {});\n\n // return {\n // component: envComponent,\n // exposes\n // };\n // }\n}\n\nexport function getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, 'env-template');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'env-template',\n // globPatterns: [`${getArtifactDirectory()}/**`],\n globPatterns: ['**'],\n rootDir: getArtifactDirectory(),\n // context: env,\n },\n ];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["env-preview-template.task.ts"],"names":["GENERATE_ENV_TEMPLATE_TASK_NAME","PREVIEW_ROOT_CHUNK_NAME","PEERS_CHUNK_NAME","EnvPreviewTemplateTask","constructor","preview","envs","execute","context","previewDefs","getDefs","htmlConfig","generateHtmlConfig","dev","targets","Promise","all","components","map","component","envDef","getEnvFromComponent","undefined","env","bundlingStrategy","getBundlingStrategy","name","envComponent","envPreviewConfig","getEnvPreviewConfig","isSplitComponentBundle","splitComponentBundle","envGetDeps","getDependencies","envComponentPeers","Object","keys","peerDependencies","envHostDeps","getHostDependencies","peers","concat","capsule","capsuleNetwork","graphCapsules","getCapsule","id","Error","previewRoot","writePreviewRuntime","toString","previewModules","getPreviewModules","outputPath","computeOutputPath","entries","getEntries","runtimeChunkName","html","chunking","splitChunks","length","componentsResults","bundlerContext","assign","entry","externalizePeer","development","bundler","getBundler","bundlerResults","run","results","computeResults","previewRootChunkName","peersChunkName","options","htmlConfigs","previewModule","generateHtmlConfigForPreviewDef","previewDef","previewDeps","include","chunks","prefix","includePeers","unshift","config","title","templateContent","minify","filename","previewRootEntry","import","peersRootEntry","reduce","acc","module","linkFile","writeLink","ComponentMap","create","path","dependOn","result","errors","err","message","warning","warnings","startTime","endTime","artifacts","getArtifactDef","modules","def","renderTemplatePathByEnv","getArtifactDirectory","CAPSULE_ARTIFACTS_DIR","globPatterns","rootDir"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAQA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAQO,MAAMA,+BAA+B,GAAG,qBAAxC;;AACA,MAAMC,uBAAuB,GAAG,aAAhC;;AACA,MAAMC,gBAAgB,GAAG,OAAzB;;;AAEA,MAAMC,sBAAN,CAAkD;AAIvD;AAEAC,EAAAA,WAAW,CAASC,OAAT,EAAuCC,IAAvC,EAAuD;AAAA,SAA9CD,OAA8C,GAA9CA,OAA8C;AAAA,SAAhBC,IAAgB,GAAhBA,IAAgB;AAAA,sDALvD,yBAKuD;AAAA,kDAJ3DN,+BAI2D;AAAA,sDAHzC,KAGyC;AAAE;;AAEvD,QAAPO,OAAO,CAACC,OAAD,EAAkD;AAC7D,UAAMC,WAAW,GAAG,KAAKJ,OAAL,CAAaK,OAAb,EAApB;AACA,UAAMC,UAAU,GAAG,KAAKC,kBAAL,CAAwBH,WAAxB,EAAqCR,uBAArC,EAA8DC,gBAA9D,EAAgF;AACjGW,MAAAA,GAAG,EAAEL,OAAO,CAACK;AADoF,KAAhF,CAAnB;AAGA,UAAMC,OAAiB,GAAG,uBACxB,MAAMC,OAAO,CAACC,GAAR,CACJR,OAAO,CAACS,UAAR,CAAmBC,GAAnB,CAAuB,MAAOC,SAAP,IAAqB;AAAA;;AAC1C,YAAMC,MAAM,GAAG,KAAKd,IAAL,CAAUe,mBAAV,CAA8BF,SAA9B,CAAf;AACA,UAAI,CAACC,MAAL,EAAa,OAAOE,SAAP;AACb,YAAMC,GAAG,GAAGH,MAAM,CAACG,GAAnB;AACA,YAAMC,gBAAgB,GAAG,KAAKnB,OAAL,CAAaoB,mBAAb,CAAiCL,MAAM,CAACG,GAAxC,CAAzB;;AACA,UAAIC,gBAAgB,CAACE,IAAjB,KAA0B,KAA9B,EAAqC;AACnC,eAAOJ,SAAP;AACD;;AACD,YAAMK,YAAY,GAAGR,SAArB;AACA,YAAMS,gBAAgB,GAAG,KAAKvB,OAAL,CAAawB,mBAAb,CAAiCT,MAAM,CAACG,GAAxC,CAAzB;AACA,YAAMO,sBAAsB,4BAAGF,gBAAgB,CAACG,oBAApB,yEAA4C,KAAxE;AACA,YAAMC,UAAU,GAAG,CAAC,MAAMT,GAAG,CAACU,eAAJ,EAAP,KAAiC,EAApD;AACA,YAAMC,iBAAiB,GAAGC,MAAM,CAACC,IAAP,CAAYJ,UAAU,CAACK,gBAAX,IAA+B,EAA3C,KAAkD,EAA5E;AACA,YAAMC,WAAW,GAAGf,GAAG,CAACgB,mBAAJ,MAA6B,EAAjD;AACA,YAAMC,KAAK,GAAGN,iBAAiB,CAACO,MAAlB,CAAyBH,WAAzB,CAAd,CAd0C,CAgB1C;AACA;;AACA,YAAMI,OAAO,GAAGlC,OAAO,CAACmC,cAAR,CAAuBC,aAAvB,CAAqCC,UAArC,CAAgDlB,YAAY,CAACmB,EAA7D,CAAhB;AACA,UAAI,CAACJ,OAAL,EAAc,MAAM,IAAIK,KAAJ,CAAU,kBAAV,CAAN,CAnB4B,CAoB1C;AACA;;AACA,YAAMC,WAAW,GAAG,MAAM,KAAK3C,OAAL,CAAa4C,mBAAb,CAAiCzC,OAAjC,EAA0C,CAACmB,YAAY,CAACmB,EAAb,CAAgBI,QAAhB,EAAD,CAA1C,CAA1B;AACA,YAAMC,cAAc,GAAG,MAAM,KAAKC,iBAAL,CAAuBhC,MAAvB,CAA7B,CAvB0C,CAwB1C;AACA;AACA;;AACA,YAAMiC,UAAU,GAAG,KAAKC,iBAAL,CAAuB9C,OAAvB,EAAgCmB,YAAhC,CAAnB;AACA,UAAI,CAAC,2BAAW0B,UAAX,CAAL,EAA6B,2BAAWA,UAAX;AAC7B,YAAME,OAAO,GAAG,KAAKC,UAAL,CAAgBL,cAAhB,EAAgCT,OAAhC,EAAyCM,WAAzC,EAAsDlB,sBAAtD,EAA8EU,KAA9E,CAAhB,CA7B0C,CA+B1C;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAO;AACL;AACAA,QAAAA,KAFK;AAGLiB,QAAAA,gBAAgB,EAAE,SAHb;AAILC,QAAAA,IAAI,EAAE/C,UAJD;AAKL4C,QAAAA,OALK;AAMLI,QAAAA,QAAQ,EAAE;AACRC,UAAAA,WAAW,EAAE;AADL,SANL;AASL3C,QAAAA,UAAU,EAAE,CAACU,YAAD,CATP;AAUL0B,QAAAA,UAVK,CAWL;;AAXK,OAAP;AAaD,KAnDD,CADI,CADkB,CAA1B;AAyDA,QAAI,CAACvC,OAAO,CAAC+C,MAAb,EAAqB,OAAO;AAAEC,MAAAA,iBAAiB,EAAE;AAArB,KAAP;AACrB,UAAMC,cAA8B,GAAG5B,MAAM,CAAC6B,MAAP,CAAc,yBAAUxD,OAAV,CAAd,EAAkC;AACvEM,MAAAA,OADuE;AAEvEmD,MAAAA,KAAK,EAAE,EAFgE;AAGvEC,MAAAA,eAAe,EAAE,KAHsD;AAIvEC,MAAAA,WAAW,EAAE3D,OAAO,CAACK;AAJkD,KAAlC,CAAvC;AAOA,UAAMuD,OAAgB,GAAG,MAAM5D,OAAO,CAACe,GAAR,CAAY8C,UAAZ,CAAuBN,cAAvB,CAA/B;AACA,UAAMO,cAAc,GAAG,MAAMF,OAAO,CAACG,GAAR,EAA7B;AACA,UAAMC,OAAO,GAAG,MAAM,KAAKC,cAAL,CAAoBV,cAApB,EAAoCO,cAApC,CAAtB;AACA,WAAOE,OAAP;AACD;;AAEO5D,EAAAA,kBAAkB,CACxBH,WADwB,EAExBiE,oBAFwB,EAGxBC,cAHwB,EAIxBC,OAJwB,EAKH;AACrB,UAAMC,WAAW,GAAGpE,WAAW,CAACS,GAAZ,CAAiB4D,aAAD,IAClC,KAAKC,+BAAL,CAAqCD,aAArC,EAAoDJ,oBAApD,EAA0EC,cAA1E,EAA0FC,OAA1F,CADkB,CAApB;AAGA,WAAOC,WAAP;AACD;;AAEOE,EAAAA,+BAA+B,CACrCC,UADqC,EAErCN,oBAFqC,EAGrCC,cAHqC,EAIrCC,OAJqC,EAKlB;AAAA;;AACnB,UAAMK,WAAW,GAAGD,UAAU,CAACE,OAAX,IAAsB,EAA1C;AACA,UAAMC,MAAM,GAAG,CAAC,GAAGF,WAAJ,EAAiBD,UAAU,CAACI,MAA5B,EAAoCV,oBAApC,CAAf;;AACA,QAAIM,UAAU,CAACK,YAAf,EAA6B;AAC3BF,MAAAA,MAAM,CAACG,OAAP,CAAeX,cAAf;AACD;;AAED,UAAMY,MAAM,GAAG;AACbC,MAAAA,KAAK,EAAE,SADM;AAEbC,MAAAA,eAAe,EAAE,qBAAK,SAAL,CAFJ;AAGbC,MAAAA,MAAM,kBAAEd,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAE/D,GAAX,uDAAkB,IAHX;AAIbsE,MAAAA,MAJa;AAKbQ,MAAAA,QAAQ,EAAG,GAAEX,UAAU,CAACI,MAAO;AALlB,KAAf;AAOA,WAAOG,MAAP;AACD;;AAED/B,EAAAA,UAAU,CACRL,cADQ,EAERT,OAFQ,EAGRM,WAHQ,EAIRlB,sBAAsB,GAAG,KAJjB,EAKRU,KAAe,GAAG,EALV,EAMS;AACjB,UAAMoD,gBAAgB,GAAG;AACvBD,MAAAA,QAAQ,EAAE,6BADa;AAEvBE,MAAAA,MAAM,EAAE7C;AAFe,KAAzB;AAKA,UAAM8C,cAAc,GAAG;AACrBH,MAAAA,QAAQ,EAAE,sBADW;AAErBE,MAAAA,MAAM,EAAErD;AAFa,KAAvB;AAKA,UAAMe,OAAO,GAAGJ,cAAc,CAAC4C,MAAf,CACd,CAACC,GAAD,EAAMC,MAAN,KAAiB;AACf,YAAMC,QAAQ,GAAG,KAAK7F,OAAL,CAAa8F,SAAb,CACfF,MAAM,CAACvE,IADQ,EAEf0E,0BAAaC,MAAb,CAAoB,EAApB,CAFe,EAGfJ,MAAM,CAACK,IAHQ,EAIf5D,OAAO,CAAC4D,IAJO,EAKfxE,sBALe,CAAjB;AAOAkE,MAAAA,GAAG,CAACC,MAAM,CAACvE,IAAR,CAAH,GAAmB;AACjB;AACAiE,QAAAA,QAAQ,EAAG,GAAEM,MAAM,CAACvE,IAAK,iBAFR;AAGjB;AACAmE,QAAAA,MAAM,EAAEK,QAJS,CAKjB;AACA;AACA;AACA;;AARiB,OAAnB;;AAUA,UAAID,MAAM,CAACf,OAAX,EAAoB;AAClBc,QAAAA,GAAG,CAACC,MAAM,CAACvE,IAAR,CAAH,CAAiB6E,QAAjB,GAA4BN,MAAM,CAACf,OAAnC;AACD;;AACD,aAAOc,GAAP;AACD,KAvBa,EAwBd;AAAE,OAAC/F,uBAAD,GAA2B2F,gBAA7B;AAA+C,OAAC1F,gBAAD,GAAoB4F;AAAnE,KAxBc,CAAhB;AA2BA,WAAOvC,OAAP,CAtCiB,CAwCjB;AACA;AACA;AACA;AACD;;AAEmB,QAAdkB,cAAc,CAACjE,OAAD,EAA0BgE,OAA1B,EAAoD;AACtE,UAAMgC,MAAM,GAAGhC,OAAO,CAAC,CAAD,CAAtB;AAEA,UAAMV,iBAAoC,GAAG0C,MAAM,CAACvF,UAAP,CAAkBC,GAAlB,CAAuBC,SAAD,IAAe;AAChF,aAAO;AACLA,QAAAA,SADK;AAELsF,QAAAA,MAAM,EAAED,MAAM,CAACC,MAAP,CAAcvF,GAAd,CAAmBwF,GAAD,IAAU,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCA,GAAG,CAACC,OAAhE,CAFH;AAGLC,QAAAA,OAAO,EAAEJ,MAAM,CAACK,QAHX;AAILC,QAAAA,SAAS,EAAEN,MAAM,CAACM,SAJb;AAKLC,QAAAA,OAAO,EAAEP,MAAM,CAACO;AALX,OAAP;AAOD,KAR4C,CAA7C;AAUA,UAAMC,SAAS,GAAGC,cAAc,EAAhC;AAEA,WAAO;AACLnD,MAAAA,iBADK;AAELkD,MAAAA;AAFK,KAAP;AAID;;AAEsB,QAAjB5D,iBAAiB,CAAChC,MAAD,EAAiD;AACtE,UAAMX,WAAW,GAAG,KAAKJ,OAAL,CAAaK,OAAb,EAApB;AAEA,UAAMwG,OAAO,GAAG,uBACd,MAAMnG,OAAO,CAACC,GAAR,CACJP,WAAW,CAACS,GAAZ,CAAgB,MAAOiG,GAAP,IAAe;AAC7B,UAAI,CAACA,GAAG,CAACC,uBAAT,EAAkC,OAAO9F,SAAP;AAClC,aAAO;AACLI,QAAAA,IAAI,EAAEyF,GAAG,CAAC/B,MADL;AAELkB,QAAAA,IAAI,EAAE,MAAMa,GAAG,CAACC,uBAAJ,CAA4BhG,MAAM,CAACG,GAAnC,CAFP;AAGL2D,QAAAA,OAAO,EAAEiC,GAAG,CAACjC;AAHR,OAAP;AAKD,KAPD,CADI,CADQ,CAAhB;AAaA,WAAOgC,OAAP;AACD;;AAEO5D,EAAAA,iBAAiB,CAAC9C,OAAD,EAAwBW,SAAxB,EAA8C;AACrE,UAAMuB,OAAO,GAAGlC,OAAO,CAACmC,cAAR,CAAuBC,aAAvB,CAAqCC,UAArC,CAAgD1B,SAAS,CAAC2B,EAA1D,CAAhB;AACA,QAAI,CAACJ,OAAL,EAAc,MAAM,IAAIK,KAAJ,CAAU,kBAAV,CAAN;AACd,WAAO,kBAAKL,OAAO,CAAC4D,IAAb,EAAmBe,oBAAoB,EAAvC,CAAP;AACD,GAtNsD,CAwNvD;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;AA1OuD;;;;AA6OlD,SAASA,oBAAT,GAAgC;AACrC,SAAO,kBAAKC,gCAAL,EAA4B,cAA5B,CAAP;AACD;;AAEM,SAASL,cAAT,GAA0B;AAC/B,SAAO,CACL;AACEvF,IAAAA,IAAI,EAAE,cADR;AAEE;AACA6F,IAAAA,YAAY,EAAE,CAAC,IAAD,CAHhB;AAIEC,IAAAA,OAAO,EAAEH,oBAAoB,EAJ/B,CAKE;;AALF,GADK,CAAP;AASD","sourcesContent":["import {\n BuildContext,\n BuiltTaskResult,\n BuildTask,\n TaskLocation,\n ComponentResult,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { Capsule } from '@teambit/isolator';\nimport { Bundler, BundlerContext, BundlerEntryMap, BundlerHtmlConfig, BundlerResult, Target } from '@teambit/bundler';\nimport type { EnvDefinition, EnvsMain } from '@teambit/envs';\nimport { join } from 'path';\nimport { cloneDeep, compact } from 'lodash';\nimport { existsSync, mkdirpSync } from 'fs-extra';\nimport type { PreviewMain } from './preview.main.runtime';\nimport { PreviewDefinition } from '.';\nimport { html } from './webpack';\n\nexport type ModuleExpose = {\n name: string;\n path: string;\n include?: string[];\n};\n\nexport const GENERATE_ENV_TEMPLATE_TASK_NAME = 'GenerateEnvTemplate';\nexport const PREVIEW_ROOT_CHUNK_NAME = 'previewRoot';\nexport const PEERS_CHUNK_NAME = 'peers';\n\nexport class EnvPreviewTemplateTask implements BuildTask {\n aspectId = 'teambit.preview/preview';\n name = GENERATE_ENV_TEMPLATE_TASK_NAME;\n location: TaskLocation = 'end';\n // readonly dependencies = [CompilerAspect.id];\n\n constructor(private preview: PreviewMain, private envs: EnvsMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const previewDefs = this.preview.getDefs();\n const htmlConfig = this.generateHtmlConfig(previewDefs, PREVIEW_ROOT_CHUNK_NAME, PEERS_CHUNK_NAME, {\n dev: context.dev,\n });\n const targets: Target[] = compact(\n await Promise.all(\n context.components.map(async (component) => {\n const envDef = this.envs.getEnvFromComponent(component);\n if (!envDef) return undefined;\n const env = envDef.env;\n const bundlingStrategy = this.preview.getBundlingStrategy(envDef.env);\n if (bundlingStrategy.name === 'env') {\n return undefined;\n }\n const envComponent = component;\n const envPreviewConfig = this.preview.getEnvPreviewConfig(envDef.env);\n const isSplitComponentBundle = envPreviewConfig.splitComponentBundle ?? false;\n const envGetDeps = (await env.getDependencies()) || {};\n const envComponentPeers = Object.keys(envGetDeps.peerDependencies || {}) || [];\n const envHostDeps = env.getHostDependencies() || [];\n const peers = envComponentPeers.concat(envHostDeps);\n\n // const module = await this.getPreviewModule(envComponent);\n // const entries = Object.keys(module).map((key) => module.exposes[key]);\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(envComponent.id);\n if (!capsule) throw new Error('no capsule found');\n // Passing here the env itself to make sure it's preview runtime will be part of the preview root file\n // that's needed to make sure the providers register there are running correctly\n const previewRoot = await this.preview.writePreviewRuntime(context, [envComponent.id.toString()]);\n const previewModules = await this.getPreviewModules(envDef);\n // const templatesFile = previewModules.map((template) => {\n // return this.preview.writeLink(template.name, ComponentMap.create([]), template.path, capsule.path);\n // });\n const outputPath = this.computeOutputPath(context, envComponent);\n if (!existsSync(outputPath)) mkdirpSync(outputPath);\n const entries = this.getEntries(previewModules, capsule, previewRoot, isSplitComponentBundle, peers);\n\n // const entries = this.getEntries(\n // previewModules.concat({\n // name: 'main',\n // path: previewRoot,\n // })\n // );\n\n return {\n // entries: templatesFile.concat(previewRoot),\n peers,\n runtimeChunkName: 'runtime',\n html: htmlConfig,\n entries,\n chunking: {\n splitChunks: true,\n },\n components: [envComponent],\n outputPath,\n // modules: [module],\n };\n })\n )\n );\n\n if (!targets.length) return { componentsResults: [] };\n const bundlerContext: BundlerContext = Object.assign(cloneDeep(context), {\n targets,\n entry: [],\n externalizePeer: false,\n development: context.dev,\n });\n\n const bundler: Bundler = await context.env.getBundler(bundlerContext);\n const bundlerResults = await bundler.run();\n const results = await this.computeResults(bundlerContext, bundlerResults);\n return results;\n }\n\n private generateHtmlConfig(\n previewDefs: PreviewDefinition[],\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig[] {\n const htmlConfigs = previewDefs.map((previewModule) =>\n this.generateHtmlConfigForPreviewDef(previewModule, previewRootChunkName, peersChunkName, options)\n );\n return htmlConfigs;\n }\n\n private generateHtmlConfigForPreviewDef(\n previewDef: PreviewDefinition,\n previewRootChunkName: string,\n peersChunkName: string,\n options: { dev?: boolean }\n ): BundlerHtmlConfig {\n const previewDeps = previewDef.include || [];\n const chunks = [...previewDeps, previewDef.prefix, previewRootChunkName];\n if (previewDef.includePeers) {\n chunks.unshift(peersChunkName);\n }\n\n const config = {\n title: 'Preview',\n templateContent: html('Preview'),\n minify: options?.dev ?? true,\n chunks,\n filename: `${previewDef.prefix}.html`,\n };\n return config;\n }\n\n getEntries(\n previewModules: ModuleExpose[],\n capsule: Capsule,\n previewRoot: string,\n isSplitComponentBundle = false,\n peers: string[] = []\n ): BundlerEntryMap {\n const previewRootEntry = {\n filename: 'preview-root.[chunkhash].js',\n import: previewRoot,\n };\n\n const peersRootEntry = {\n filename: 'peers.[chunkhash].js',\n import: peers,\n };\n\n const entries = previewModules.reduce(\n (acc, module) => {\n const linkFile = this.preview.writeLink(\n module.name,\n ComponentMap.create([]),\n module.path,\n capsule.path,\n isSplitComponentBundle\n );\n acc[module.name] = {\n // filename: `${module.name}.[contenthash].js`,\n filename: `${module.name}.[chunkhash].js`,\n // filename: `${module.name}.js`,\n import: linkFile,\n // library: {\n // name: module.name,\n // type: 'umd',\n // },\n };\n if (module.include) {\n acc[module.name].dependOn = module.include;\n }\n return acc;\n },\n { [PREVIEW_ROOT_CHUNK_NAME]: previewRootEntry, [PEERS_CHUNK_NAME]: peersRootEntry }\n );\n\n return entries;\n\n // const mergedEntries = return entriesArr.reduce((entriesMap, entry) => {\n // entriesMap[entry.library.name] = entry;\n // return entriesMap;\n // }, {previewRoot: previewRootEntry});\n }\n\n async computeResults(context: BundlerContext, results: BundlerResult[]) {\n const result = results[0];\n\n const componentsResults: ComponentResult[] = result.components.map((component) => {\n return {\n component,\n errors: result.errors.map((err) => (typeof err === 'string' ? err : err.message)),\n warning: result.warnings,\n startTime: result.startTime,\n endTime: result.endTime,\n };\n });\n\n const artifacts = getArtifactDef();\n\n return {\n componentsResults,\n artifacts,\n };\n }\n\n async getPreviewModules(envDef: EnvDefinition): Promise<ModuleExpose[]> {\n const previewDefs = this.preview.getDefs();\n\n const modules = compact(\n await Promise.all(\n previewDefs.map(async (def) => {\n if (!def.renderTemplatePathByEnv) return undefined;\n return {\n name: def.prefix,\n path: await def.renderTemplatePathByEnv(envDef.env),\n include: def.include,\n };\n })\n )\n );\n\n return modules;\n }\n\n private computeOutputPath(context: BuildContext, component: Component) {\n const capsule = context.capsuleNetwork.graphCapsules.getCapsule(component.id);\n if (!capsule) throw new Error('no capsule found');\n return join(capsule.path, getArtifactDirectory());\n }\n\n // private async getPreviewModule(envComponent: Component): Promise<ModuleTarget> {\n // const env = this.envs.getEnv(envComponent);\n // const previewDefs = this.preview.getDefs();\n // const modules = compact(await Promise.all(previewDefs.map(async (def) => {\n // if (!def.renderTemplatePathByEnv) return undefined;\n // return [def.prefix, await def.renderTemplatePathByEnv(env.env)];\n // })));\n\n // const exposes = modules.reduce((exposesAcc, [prefix, path]) => {\n // const internalPath = `./${prefix}`;\n // exposesAcc[internalPath] = path;\n // return exposesAcc;\n // }, {});\n\n // return {\n // component: envComponent,\n // exposes\n // };\n // }\n}\n\nexport function getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, 'env-template');\n}\n\nexport function getArtifactDef() {\n return [\n {\n name: 'env-template',\n // globPatterns: [`${getArtifactDirectory()}/**`],\n globPatterns: ['**'],\n rootDir: getArtifactDirectory(),\n // context: env,\n },\n ];\n}\n"]}
|
package/dist/preview-type.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ComponentID } from '@teambit/component-id';
|
|
1
2
|
import { RenderingContext } from './rendering-context';
|
|
2
3
|
import { PreviewModule } from './types/preview-module';
|
|
3
4
|
export interface PreviewType {
|
|
@@ -8,7 +9,7 @@ export interface PreviewType {
|
|
|
8
9
|
/**
|
|
9
10
|
* preview render method.
|
|
10
11
|
*/
|
|
11
|
-
render(componentId:
|
|
12
|
+
render(componentId: ComponentID, linkedModules: PreviewModule<any>, includedPreviews: string[], renderingContext: RenderingContext): void;
|
|
12
13
|
/**
|
|
13
14
|
* determine if this will be the default preview to render.
|
|
14
15
|
*/
|
|
@@ -141,7 +141,7 @@ class PreviewPreview {
|
|
|
141
141
|
return (_includedPreview$sele = includedPreview.selectPreviewModel) === null || _includedPreview$sele === void 0 ? void 0 : _includedPreview$sele.call(includedPreview, componentId.fullName, await this.getPreviewModule(prevName, componentId, name));
|
|
142
142
|
}));
|
|
143
143
|
const includes = includesAll.filter(module => !!module);
|
|
144
|
-
return preview.render(componentId
|
|
144
|
+
return preview.render(componentId, await this.getPreviewModule(name, componentId), includes, this.getRenderingContext());
|
|
145
145
|
});
|
|
146
146
|
this.registerClickPubSub();
|
|
147
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["preview.preview.runtime.tsx"],"names":["PREVIEW_MODULES","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","previewName","componentId","getLocation","name","getDefault","preview","getPreview","PreviewNotFound","includesAll","Promise","all","include","map","prevName","includedPreview","undefined","selectPreviewModel","fullName","getPreviewModule","includes","filter","module","render","getRenderingContext","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","parentPreviewName","componentMap","component","fetchComponentPreview","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","resolve","forEach","file","endsWith","addComponentFileElement","reject","previewScriptElement","getPreviewScriptElement","document","head","appendChild","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","previewAssetsRoute","stringId","toString","url","res","status","parsed","json","isBundledWithEnv","files","length","script","createElement","setAttribute","previewRoute","src","link","href","onload","componentPreview","toStringWithoutVersion","targetPreview","registerPreview","register","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","get","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","linkModules","defaultModule","isSplitComponentBundle","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nconst PREVIEW_MODULES: Record<string, PreviewModule> = {};\n\nexport type RenderingContextProvider = () => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n /**\n * render the preview.\n */\n render = async () => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n const includesAll = await Promise.all(\n (preview.include || []).map(async (prevName) => {\n const includedPreview = this.getPreview(prevName);\n if (!includedPreview) return undefined;\n\n return includedPreview.selectPreviewModel?.(\n componentId.fullName,\n await this.getPreviewModule(prevName, componentId, name)\n );\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n\n return preview.render(\n componentId.fullName,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext()\n );\n };\n\n async getPreviewModule(name: string, id: ComponentID, parentPreviewName?: string): Promise<PreviewModule> {\n if (PREVIEW_MODULES[name].componentMap[id.fullName]) return PREVIEW_MODULES[name];\n let component;\n // Handle case when there is overview but no composition on the workspace dev server\n if (!parentPreviewName || !PREVIEW_MODULES[parentPreviewName].componentMap[id.fullName]) {\n // if (!window[name]) throw new PreviewNotFound(name);\n // const isSplitComponentBundle = PREVIEW_MODULES[name].isSplitComponentBundle ?? false;\n // const component = window[id.toStringWithoutVersion()];\n component = await this.fetchComponentPreview(id, name);\n }\n\n return {\n mainModule: PREVIEW_MODULES[name].mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string) {\n let previewFile;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n // It's a component bundled with the env\n if (allFiles === null) {\n return Promise.resolve(undefined);\n }\n allFiles.forEach((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n } else {\n this.addComponentFileElement(id, file);\n }\n });\n return new Promise((resolve, reject) => {\n const previewScriptElement = this.getPreviewScriptElement(id, name, previewFile, resolve, reject);\n document.head.appendChild(previewScriptElement);\n });\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n return this.addComponentFileLinkElement(id, previewBundleFileName);\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n // This is component bundled with the env, no reason to bring the files, as they will be the files of the env\n if (parsed.isBundledWithEnv) {\n return null;\n }\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src;\n document.head.appendChild(script);\n return script;\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const link = document.createElement('link');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n link.setAttribute('href', href);\n if (previewBundleFileName.endsWith('.css')) {\n link.setAttribute('rel', 'stylesheet');\n }\n document.head.appendChild(link);\n return link;\n }\n\n private getPreviewScriptElement(id: ComponentID, name: string, previewBundleFileName: string, resolve, reject) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n // const previewRoute = `~aspect/preview`;\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src; // generate path to remote scope. [scope url]/\n script.onload = () => {\n const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];\n if (!componentPreview) return reject(new PreviewNotFound(name));\n const targetPreview = componentPreview[name];\n if (!targetPreview) return resolve(undefined);\n\n return resolve(targetPreview);\n };\n return script;\n }\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext() {\n return new RenderingContext(this.renderingContextSlot);\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nexport function linkModules(\n previewName: string,\n defaultModule: any,\n isSplitComponentBundle: boolean,\n componentMap: { [key: string]: any }\n) {\n PREVIEW_MODULES[previewName] = {\n mainModule: defaultModule,\n isSplitComponentBundle,\n componentMap,\n };\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"]}
|
|
1
|
+
{"version":3,"sources":["preview.preview.runtime.tsx"],"names":["PREVIEW_MODULES","PreviewPreview","constructor","pubsub","previewSlot","renderingContextSlot","previewName","componentId","getLocation","name","getDefault","preview","getPreview","PreviewNotFound","includesAll","Promise","all","include","map","prevName","includedPreview","undefined","selectPreviewModel","fullName","getPreviewModule","includes","filter","module","render","getRenderingContext","registerClickPubSub","window","addEventListener","e","timestamp","Date","now","clickEvent","Object","assign","pub","PreviewAspect","id","ClickInsideAnIframeEvent","parentPreviewName","componentMap","component","fetchComponentPreview","mainModule","previewFile","allFiles","fetchComponentPreviewFiles","resolve","forEach","file","endsWith","addComponentFileElement","reject","previewScriptElement","getPreviewScriptElement","document","head","appendChild","previewBundleFileName","addComponentFileScriptElement","addComponentFileLinkElement","previewAssetsRoute","stringId","toString","url","res","status","parsed","json","isBundledWithEnv","files","length","script","createElement","setAttribute","previewRoute","src","link","href","onload","componentPreview","toStringWithoutVersion","targetPreview","registerPreview","register","RenderingContext","registerRenderContext","renderContext","previews","values","defaultOne","find","previewCandidate","default","getParam","query","param","params","URLSearchParams","get","withoutHash","location","hash","substring","before","after","split","ComponentID","tryFromString","provider","config","PreviewRuntime","PubsubAspect","Slot","withType","linkModules","defaultModule","isSplitComponentBundle","addRuntime"],"mappings":"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","sourcesContent":["import PubsubAspect, { PubsubPreview } from '@teambit/pubsub';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentID } from '@teambit/component-id';\nimport crossFetch from 'cross-fetch';\n\nimport { PreviewNotFound } from './exceptions';\nimport { PreviewType } from './preview-type';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { ClickInsideAnIframeEvent } from './events';\nimport { PreviewModule } from './types/preview-module';\nimport { RenderingContext } from './rendering-context';\n\nexport type PreviewSlot = SlotRegistry<PreviewType>;\n\nconst PREVIEW_MODULES: Record<string, PreviewModule> = {};\n\nexport type RenderingContextProvider = () => { [key: string]: any };\nexport type RenderingContextSlot = SlotRegistry<RenderingContextProvider>;\n\nexport class PreviewPreview {\n constructor(\n /**\n * register to pubsub\n */\n private pubsub: PubsubPreview,\n\n /**\n * preview slot.\n */\n private previewSlot: PreviewSlot,\n\n private renderingContextSlot: RenderingContextSlot\n ) {\n this.registerClickPubSub();\n }\n\n private registerClickPubSub() {\n window.addEventListener('click', (e) => {\n const timestamp = Date.now();\n const clickEvent = Object.assign({}, e);\n this.pubsub.pub(PreviewAspect.id, new ClickInsideAnIframeEvent(timestamp, clickEvent));\n });\n }\n\n /**\n * render the preview.\n */\n render = async () => {\n const { previewName, componentId } = this.getLocation();\n const name = previewName || this.getDefault();\n\n const preview = this.getPreview(name);\n if (!preview || !componentId) {\n throw new PreviewNotFound(previewName);\n }\n const includesAll = await Promise.all(\n (preview.include || []).map(async (prevName) => {\n const includedPreview = this.getPreview(prevName);\n if (!includedPreview) return undefined;\n\n return includedPreview.selectPreviewModel?.(\n componentId.fullName,\n await this.getPreviewModule(prevName, componentId, name)\n );\n })\n );\n\n const includes = includesAll.filter((module) => !!module);\n\n return preview.render(\n componentId,\n await this.getPreviewModule(name, componentId),\n includes,\n this.getRenderingContext()\n );\n };\n\n async getPreviewModule(name: string, id: ComponentID, parentPreviewName?: string): Promise<PreviewModule> {\n if (PREVIEW_MODULES[name].componentMap[id.fullName]) return PREVIEW_MODULES[name];\n let component;\n // Handle case when there is overview but no composition on the workspace dev server\n if (!parentPreviewName || !PREVIEW_MODULES[parentPreviewName].componentMap[id.fullName]) {\n // if (!window[name]) throw new PreviewNotFound(name);\n // const isSplitComponentBundle = PREVIEW_MODULES[name].isSplitComponentBundle ?? false;\n // const component = window[id.toStringWithoutVersion()];\n component = await this.fetchComponentPreview(id, name);\n }\n\n return {\n mainModule: PREVIEW_MODULES[name].mainModule,\n componentMap: {\n [id.fullName]: component,\n },\n };\n }\n\n async fetchComponentPreview(id: ComponentID, name: string) {\n let previewFile;\n const allFiles = await this.fetchComponentPreviewFiles(id, name);\n // It's a component bundled with the env\n if (allFiles === null) {\n return Promise.resolve(undefined);\n }\n allFiles.forEach((file) => {\n // We want to run the preview file always last\n if (file.endsWith('-preview.js')) {\n previewFile = file;\n } else {\n this.addComponentFileElement(id, file);\n }\n });\n return new Promise((resolve, reject) => {\n const previewScriptElement = this.getPreviewScriptElement(id, name, previewFile, resolve, reject);\n document.head.appendChild(previewScriptElement);\n });\n }\n\n private addComponentFileElement(id: ComponentID, previewBundleFileName: string) {\n if (previewBundleFileName.endsWith('.js')) {\n return this.addComponentFileScriptElement(id, previewBundleFileName);\n }\n return this.addComponentFileLinkElement(id, previewBundleFileName);\n }\n\n private async fetchComponentPreviewFiles(id: ComponentID, previewName: string): Promise<string[] | null> {\n const previewAssetsRoute = `~aspect/preview-assets`;\n const stringId = id.toString();\n const url = `/api/${stringId}/${previewAssetsRoute}`;\n\n const res = await crossFetch(url);\n if (res.status >= 400) {\n throw new PreviewNotFound(previewName);\n }\n const parsed = await res.json();\n // This is component bundled with the env, no reason to bring the files, as they will be the files of the env\n if (parsed.isBundledWithEnv) {\n return null;\n }\n if (!parsed.files || !parsed.files.length) {\n throw new PreviewNotFound(previewName);\n }\n return parsed.files;\n }\n\n private addComponentFileScriptElement(id: ComponentID, previewBundleFileName: string) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src;\n document.head.appendChild(script);\n return script;\n }\n\n private addComponentFileLinkElement(id: ComponentID, previewBundleFileName: string) {\n const link = document.createElement('link');\n const stringId = id.toString();\n const previewRoute = `~aspect/component-preview`;\n const href = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n link.setAttribute('href', href);\n if (previewBundleFileName.endsWith('.css')) {\n link.setAttribute('rel', 'stylesheet');\n }\n document.head.appendChild(link);\n return link;\n }\n\n private getPreviewScriptElement(id: ComponentID, name: string, previewBundleFileName: string, resolve, reject) {\n const script = document.createElement('script');\n script.setAttribute('defer', 'defer');\n const stringId = id.toString();\n // const previewRoute = `~aspect/preview`;\n const previewRoute = `~aspect/component-preview`;\n const src = `/api/${stringId}/${previewRoute}/${previewBundleFileName}`;\n script.src = src; // generate path to remote scope. [scope url]/\n script.onload = () => {\n const componentPreview = window[`${id.toStringWithoutVersion()}-preview`];\n if (!componentPreview) return reject(new PreviewNotFound(name));\n const targetPreview = componentPreview[name];\n if (!targetPreview) return resolve(undefined);\n\n return resolve(targetPreview);\n };\n return script;\n }\n\n /**\n * register a new preview.\n */\n registerPreview(preview: PreviewType) {\n this.previewSlot.register(preview);\n return this;\n }\n\n /**\n * get the preview rendering context.\n */\n getRenderingContext() {\n return new RenderingContext(this.renderingContextSlot);\n }\n\n /**\n * allows aspects to add rendering contexts.\n * render context is available through all preview definitions.\n */\n registerRenderContext(renderContext: RenderingContextProvider) {\n this.renderingContextSlot.register(renderContext);\n return this;\n }\n\n getDefault() {\n const previews = this.previewSlot.values();\n const defaultOne = previews.find((previewCandidate) => previewCandidate.default);\n\n return defaultOne?.name || previews[0].name;\n }\n\n private getPreview(previewName: string): undefined | PreviewType {\n const previews = this.previewSlot.values();\n const preview = previews.find((previewCandidate) => previewCandidate.name === previewName);\n\n return preview;\n }\n\n private getParam(query: string, param: string) {\n const params = new URLSearchParams(query);\n return params.get(param);\n }\n\n private getLocation() {\n const withoutHash = window.location.hash.substring(1);\n const [before, after] = withoutHash.split('?');\n\n return {\n previewName: this.getParam(after, 'preview'),\n componentId: ComponentID.tryFromString(before),\n };\n }\n\n static runtime = PreviewRuntime;\n\n static dependencies = [PubsubAspect];\n\n static slots = [Slot.withType<PreviewType>(), Slot.withType<RenderingContextProvider>()];\n\n static async provider(\n [pubsub]: [PubsubPreview],\n config,\n [previewSlot, renderingContextSlot]: [PreviewSlot, RenderingContextSlot]\n ) {\n const preview = new PreviewPreview(pubsub, previewSlot, renderingContextSlot);\n\n window.addEventListener('hashchange', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n preview.render();\n });\n\n return preview;\n }\n}\n\nexport function linkModules(\n previewName: string,\n defaultModule: any,\n isSplitComponentBundle: boolean,\n componentMap: { [key: string]: any }\n) {\n PREVIEW_MODULES[previewName] = {\n mainModule: defaultModule,\n isSplitComponentBundle,\n componentMap,\n };\n}\n\nPreviewAspect.addRuntime(PreviewPreview);\n"]}
|
|
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.667",
|
|
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.667"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"mime": "2.5.2",
|
|
@@ -21,23 +21,23 @@
|
|
|
21
21
|
"@teambit/express": "0.0.544",
|
|
22
22
|
"@teambit/logger": "0.0.540",
|
|
23
23
|
"@teambit/ui-foundation.ui.pages.static-error": "0.0.71",
|
|
24
|
-
"@teambit/builder": "0.0.
|
|
25
|
-
"@teambit/bundler": "0.0.
|
|
26
|
-
"@teambit/component": "0.0.
|
|
27
|
-
"@teambit/envs": "0.0.
|
|
28
|
-
"@teambit/isolator": "0.0.
|
|
24
|
+
"@teambit/builder": "0.0.667",
|
|
25
|
+
"@teambit/bundler": "0.0.667",
|
|
26
|
+
"@teambit/component": "0.0.667",
|
|
27
|
+
"@teambit/envs": "0.0.667",
|
|
28
|
+
"@teambit/isolator": "0.0.667",
|
|
29
29
|
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.483",
|
|
30
|
-
"@teambit/
|
|
30
|
+
"@teambit/component-id": "0.0.401",
|
|
31
|
+
"@teambit/aspect-loader": "0.0.667",
|
|
31
32
|
"@teambit/bit-error": "0.0.394",
|
|
32
33
|
"@teambit/cli": "0.0.450",
|
|
33
|
-
"@teambit/dependency-resolver": "0.0.
|
|
34
|
-
"@teambit/graphql": "0.0.
|
|
35
|
-
"@teambit/pkg": "0.0.
|
|
36
|
-
"@teambit/pubsub": "0.0.
|
|
37
|
-
"@teambit/ui": "0.0.
|
|
38
|
-
"@teambit/workspace": "0.0.
|
|
39
|
-
"@teambit/
|
|
40
|
-
"@teambit/compiler": "0.0.664",
|
|
34
|
+
"@teambit/dependency-resolver": "0.0.667",
|
|
35
|
+
"@teambit/graphql": "0.0.667",
|
|
36
|
+
"@teambit/pkg": "0.0.667",
|
|
37
|
+
"@teambit/pubsub": "0.0.667",
|
|
38
|
+
"@teambit/ui": "0.0.667",
|
|
39
|
+
"@teambit/workspace": "0.0.667",
|
|
40
|
+
"@teambit/compiler": "0.0.667",
|
|
41
41
|
"@teambit/preview.cli.preview-server-status": "0.0.491",
|
|
42
42
|
"@teambit/preview.cli.webpack-events-listener": "0.0.161"
|
|
43
43
|
},
|
|
Binary file
|