@teambit/preview 0.0.516 → 0.0.520
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/preview.main.runtime.js +5 -3
- package/dist/preview.main.runtime.js.map +1 -1
- package/dist/preview.start-plugin.d.ts +4 -1
- package/dist/preview.start-plugin.js +17 -12
- package/dist/preview.start-plugin.js.map +1 -1
- package/package-tar/teambit-preview-0.0.520.tgz +0 -0
- package/package.json +20 -20
- package/preview.main.runtime.tsx +4 -4
- package/preview.start-plugin.tsx +19 -11
- package/package-tar/teambit-preview-0.0.516.tgz +0 -0
|
@@ -389,14 +389,16 @@ class PreviewMain {
|
|
|
389
389
|
updateLinkFiles(components = [], context) {
|
|
390
390
|
const previews = this.previewSlot.values();
|
|
391
391
|
const paths = previews.map(async previewDef => {
|
|
392
|
-
var _previewDef$renderTem;
|
|
392
|
+
var _previewDef$renderTem, _environment$getCompi;
|
|
393
393
|
|
|
394
394
|
const templatePath = await ((_previewDef$renderTem = previewDef.renderTemplatePath) === null || _previewDef$renderTem === void 0 ? void 0 : _previewDef$renderTem.call(previewDef, context));
|
|
395
395
|
const map = await previewDef.getModuleMap(components);
|
|
396
396
|
const environment = context.envRuntime.env;
|
|
397
|
-
const compilerInstance = (
|
|
397
|
+
const compilerInstance = (_environment$getCompi = environment.getCompiler) === null || _environment$getCompi === void 0 ? void 0 : _environment$getCompi.call(environment);
|
|
398
398
|
const withPaths = map.map((files, component) => {
|
|
399
|
-
|
|
399
|
+
var _compilerInstance$get;
|
|
400
|
+
|
|
401
|
+
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.getModulePath(component);
|
|
400
402
|
return files.map(file => {
|
|
401
403
|
if (!this.workspace || !compilerInstance) {
|
|
402
404
|
return file.path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["preview.main.runtime.tsx"],"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getPreview","artifacts","getArtifactsVinylByExtension","length","undefined","PreviewArtifact","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","contents","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","paths","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","compilerInstance","getCompiler","withPaths","files","modulePath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","recursive","link","all","getUi","Error","name","uiRoot","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","filtered","filter","aspect","getId","isCoreAspect","includes","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getBundlingStrategy","defaultStrategies","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","registerTarget","entry","bind","disabled","registerBuildTasks","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","addRuntime"],"mappings":"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","sourcesContent":["import { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';\nimport { EnvsAspect, EnvsMain, ExecutionContext, hasCompiler } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectDefinition, AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\nexport type PreviewConfig = {\n bundlingStrategy: string;\n disabled: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtension(component, PreviewAspect.id);\n if (!artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(prefix: string, moduleMap: ComponentMap<string[]>, defaultModule: string | undefined, dirName: string) {\n const contents = generateLink(prefix, moduleMap, defaultModule);\n const hash = objectHash(contents);\n const targetPath = join(dirName, `__${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n\n const compilerInstance = hasCompiler(environment) && environment.getCompiler();\n const withPaths = map.map<string[]>((files, component) => {\n const modulePath = this.pkg.getModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }) {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n const [name, uiRoot] = ui;\n const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(aspects: AspectDefinition[], context: { components: Component[] }) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);\n });\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [new EnvBundlingStrategy(this), new ComponentBundlingStrategy()];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const strategyName = this.config.bundlingStrategy;\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n ];\n\n static defaultConfig = {\n bundlingStrategy: 'env',\n disabled: false,\n };\n\n static async provider(\n [bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub));\n\n componentExtension.registerRoute([new PreviewRoute(preview, logger)]);\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled) builder.registerBuildTasks([new PreviewTask(bundler, preview)]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"]}
|
|
1
|
+
{"version":3,"sources":["preview.main.runtime.tsx"],"names":["noopResult","results","toString","DEFAULT_TEMP_DIR","CACHE_ROOT","PreviewAspect","id","PreviewMain","constructor","harmony","previewSlot","ui","envs","pkg","aspectLoader","config","bundlingStrategySlot","builder","workspace","logger","Map","Date","now","c","updater","env","getEnv","envId","executionRef","executionRefs","get","warn","updateLinkFiles","currentComponents","executionCtx","cId","component","forEach","components","found","Promise","resolve","handleComponentChange","remove","tempFolder","getTempDir","getPreview","artifacts","getArtifactsVinylByExtension","length","undefined","PreviewArtifact","getDefs","values","writeLink","prefix","moduleMap","defaultModule","dirName","contents","hash","targetPath","timestamp","writeHash","set","getPreviewTarget","context","relatedContexts","ctxId","ExecutionRef","previewRuntime","writePreviewRuntime","linkFiles","previews","paths","map","previewDef","templatePath","renderTemplatePath","getModuleMap","environment","envRuntime","compilerInstance","getCompiler","withPaths","files","modulePath","getPreviewComponentRootPath","getModulePath","file","path","distRelativePath","getDistPathBySrcPath","relative","dirPath","recursive","link","all","getUi","Error","name","uiRoot","resolvedAspects","resolveAspects","PreviewRuntime","filteredAspects","filterAspectsByExecutionContext","filePath","generateRoot","aspects","allComponentContextAspects","reduce","acc","curr","concat","state","ids","hostAspects","Object","keys","toObject","allAspectsToInclude","filtered","filter","aspect","getId","isCoreAspect","includes","getDefaultStrategies","EnvBundlingStrategy","ComponentBundlingStrategy","getBundlingStrategy","defaultStrategies","strategyName","bundlingStrategy","strategies","selected","find","strategy","BundlingStrategyNotFound","registerBundlingStrategy","register","registerDefinition","provider","bundler","componentExtension","uiMain","pubsub","loggerMain","createLogger","preview","registerStartPlugin","PreviewStartPlugin","registerRoute","PreviewRoute","registerTarget","entry","bind","disabled","registerBuildTasks","PreviewTask","registerOnComponentAdd","add","registerOnComponentChange","update","registerOnComponentRemove","handleComponentRemoval","Slot","withType","MainRuntime","BundlerAspect","BuilderAspect","ComponentAspect","UIAspect","EnvsAspect","WorkspaceAspect","PkgAspect","PubsubAspect","AspectLoaderAspect","LoggerAspect","addRuntime"],"mappings":"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","sourcesContent":["import { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { BundlerAspect, BundlerMain } from '@teambit/bundler';\nimport { PubsubAspect, PubsubMain } from '@teambit/pubsub';\nimport { MainRuntime } from '@teambit/cli';\nimport { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';\nimport { EnvsAspect, EnvsMain, ExecutionContext } from '@teambit/envs';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { UIAspect, UiMain } from '@teambit/ui';\nimport { CACHE_ROOT } from '@teambit/legacy/dist/constants';\nimport objectHash from 'object-hash';\nimport { uniq } from 'lodash';\nimport { writeFileSync, existsSync, mkdirSync } from 'fs-extra';\nimport { join } from 'path';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { AspectDefinition, AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { LoggerAspect, LoggerMain, Logger } from '@teambit/logger';\nimport { BundlingStrategyNotFound } from './exceptions';\nimport { generateLink } from './generate-link';\nimport { PreviewArtifact } from './preview-artifact';\nimport { PreviewDefinition } from './preview-definition';\nimport { PreviewAspect, PreviewRuntime } from './preview.aspect';\nimport { PreviewRoute } from './preview.route';\nimport { PreviewTask } from './preview.task';\nimport { BundlingStrategy } from './bundling-strategy';\nimport { EnvBundlingStrategy, ComponentBundlingStrategy } from './strategies';\nimport { ExecutionRef } from './execution-ref';\nimport { PreviewStartPlugin } from './preview.start-plugin';\n\nconst noopResult = {\n results: [],\n toString: () => `updating link file`,\n};\n\nconst DEFAULT_TEMP_DIR = join(CACHE_ROOT, PreviewAspect.id);\n\nexport type PreviewDefinitionRegistry = SlotRegistry<PreviewDefinition>;\n\nexport type PreviewConfig = {\n bundlingStrategy: string;\n disabled: boolean;\n};\n\nexport type BundlingStrategySlot = SlotRegistry<BundlingStrategy>;\n\nexport class PreviewMain {\n constructor(\n /**\n * harmony context.\n */\n private harmony: Harmony,\n\n /**\n * slot for preview definitions.\n */\n private previewSlot: PreviewDefinitionRegistry,\n\n private ui: UiMain,\n\n private envs: EnvsMain,\n\n private pkg: PkgMain,\n\n private aspectLoader: AspectLoaderMain,\n\n readonly config: PreviewConfig,\n\n private bundlingStrategySlot: BundlingStrategySlot,\n\n private builder: BuilderMain,\n\n private workspace: Workspace | undefined,\n\n private logger: Logger\n ) {}\n\n get tempFolder(): string {\n return this.workspace?.getTempDir(PreviewAspect.id) || DEFAULT_TEMP_DIR;\n }\n\n async getPreview(component: Component): Promise<PreviewArtifact | undefined> {\n const artifacts = await this.builder.getArtifactsVinylByExtension(component, PreviewAspect.id);\n if (!artifacts.length) return undefined;\n\n return new PreviewArtifact(artifacts);\n }\n\n getDefs(): PreviewDefinition[] {\n return this.previewSlot.values();\n }\n\n private writeHash = new Map<string, string>();\n private timestamp = Date.now();\n\n /**\n * write a link to load custom modules dynamically.\n * @param prefix write\n * @param moduleMap map of components to module paths to require.\n * @param defaultModule\n * @param dirName\n */\n writeLink(prefix: string, moduleMap: ComponentMap<string[]>, defaultModule: string | undefined, dirName: string) {\n const contents = generateLink(prefix, moduleMap, defaultModule);\n const hash = objectHash(contents);\n const targetPath = join(dirName, `__${prefix}-${this.timestamp}.js`);\n\n // write only if link has changed (prevents triggering fs watches)\n if (this.writeHash.get(targetPath) !== hash) {\n writeFileSync(targetPath, contents);\n this.writeHash.set(targetPath, hash);\n }\n\n return targetPath;\n }\n\n private executionRefs = new Map<string, ExecutionRef>();\n\n private async getPreviewTarget(\n /** execution context (of the specific env) */\n context: ExecutionContext\n ): Promise<string[]> {\n // store context for later link-file updates\n // also register related envs that this context is acting on their behalf\n [context.id, ...context.relatedContexts].forEach((ctxId) => {\n this.executionRefs.set(ctxId, new ExecutionRef(context));\n });\n\n const previewRuntime = await this.writePreviewRuntime(context);\n const linkFiles = await this.updateLinkFiles(context.components, context);\n\n return [...linkFiles, previewRuntime];\n }\n\n private updateLinkFiles(components: Component[] = [], context: ExecutionContext) {\n const previews = this.previewSlot.values();\n const paths = previews.map(async (previewDef) => {\n const templatePath = await previewDef.renderTemplatePath?.(context);\n\n const map = await previewDef.getModuleMap(components);\n const environment = context.envRuntime.env;\n const compilerInstance = environment.getCompiler?.();\n const withPaths = map.map<string[]>((files, component) => {\n const modulePath =\n compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getModulePath(component);\n return files.map((file) => {\n if (!this.workspace || !compilerInstance) {\n return file.path;\n }\n const distRelativePath = compilerInstance.getDistPathBySrcPath(file.relative);\n return join(this.workspace.path, modulePath, distRelativePath);\n });\n // return files.map((file) => file.path);\n });\n\n const dirPath = join(this.tempFolder, context.id);\n if (!existsSync(dirPath)) mkdirSync(dirPath, { recursive: true });\n\n const link = this.writeLink(previewDef.prefix, withPaths, templatePath, dirPath);\n return link;\n });\n\n return Promise.all(paths);\n }\n\n async writePreviewRuntime(context: { components: Component[] }) {\n const ui = this.ui.getUi();\n if (!ui) throw new Error('ui not found');\n const [name, uiRoot] = ui;\n const resolvedAspects = await uiRoot.resolveAspects(PreviewRuntime.name);\n const filteredAspects = this.filterAspectsByExecutionContext(resolvedAspects, context);\n const filePath = await this.ui.generateRoot(filteredAspects, name, 'preview', PreviewAspect.id);\n return filePath;\n }\n\n /**\n * Filter the aspects to have only aspects that are:\n * 1. core aspects\n * 2. configured on the host (workspace/scope)\n * 3. used by at least one component from the context\n * @param aspects\n * @param context\n */\n private filterAspectsByExecutionContext(aspects: AspectDefinition[], context: { components: Component[] }) {\n let allComponentContextAspects: string[] = [];\n allComponentContextAspects = context.components.reduce((acc, curr) => {\n return acc.concat(curr.state.aspects.ids);\n }, allComponentContextAspects);\n const hostAspects = Object.keys(this.harmony.config.toObject());\n const allAspectsToInclude = uniq(hostAspects.concat(allComponentContextAspects));\n const filtered = aspects.filter((aspect) => {\n if (!aspect.getId) {\n return false;\n }\n return this.aspectLoader.isCoreAspect(aspect.getId) || allAspectsToInclude.includes(aspect.getId);\n });\n return filtered;\n }\n\n private getDefaultStrategies() {\n return [new EnvBundlingStrategy(this), new ComponentBundlingStrategy()];\n }\n\n // TODO - executionContext should be responsible for updating components list, and emit 'update' events\n // instead we keep track of changes\n private handleComponentChange = async (c: Component, updater: (currentComponents: ExecutionRef) => void) => {\n const env = this.envs.getEnv(c);\n const envId = env.id.toString();\n\n const executionRef = this.executionRefs.get(envId);\n if (!executionRef) {\n this.logger.warn(\n `failed to update link file for component \"${c.id.toString()}\" - could not find execution context for ${envId}`\n );\n return noopResult;\n }\n\n // add / remove / etc\n updater(executionRef);\n\n await this.updateLinkFiles(executionRef.currentComponents, executionRef.executionCtx);\n\n return noopResult;\n };\n\n private handleComponentRemoval = (cId: ComponentID) => {\n let component: Component | undefined;\n this.executionRefs.forEach((components) => {\n const found = components.get(cId);\n if (found) component = found;\n });\n if (!component) return Promise.resolve(noopResult);\n\n return this.handleComponentChange(component, (currentComponents) => currentComponents.remove(cId));\n };\n\n /**\n * return the configured bundling strategy.\n */\n getBundlingStrategy(): BundlingStrategy {\n const defaultStrategies = this.getDefaultStrategies();\n const strategyName = this.config.bundlingStrategy;\n const strategies = this.bundlingStrategySlot.values().concat(defaultStrategies);\n const selected = strategies.find((strategy) => {\n return strategy.name === strategyName;\n });\n\n if (!selected) throw new BundlingStrategyNotFound(strategyName);\n\n return selected;\n }\n\n /**\n * register a new bundling strategy. default available strategies are `env` and ``\n */\n registerBundlingStrategy(bundlingStrategy: BundlingStrategy) {\n this.bundlingStrategySlot.register(bundlingStrategy);\n return this;\n }\n\n /**\n * register a new preview definition.\n */\n registerDefinition(previewDef: PreviewDefinition) {\n this.previewSlot.register(previewDef);\n }\n\n static slots = [Slot.withType<PreviewDefinition>(), Slot.withType<BundlingStrategy>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n BundlerAspect,\n BuilderAspect,\n ComponentAspect,\n UIAspect,\n EnvsAspect,\n WorkspaceAspect,\n PkgAspect,\n PubsubAspect,\n AspectLoaderAspect,\n LoggerAspect,\n ];\n\n static defaultConfig = {\n bundlingStrategy: 'env',\n disabled: false,\n };\n\n static async provider(\n [bundler, builder, componentExtension, uiMain, envs, workspace, pkg, pubsub, aspectLoader, loggerMain]: [\n BundlerMain,\n BuilderMain,\n ComponentMain,\n UiMain,\n EnvsMain,\n Workspace | undefined,\n PkgMain,\n PubsubMain,\n AspectLoaderMain,\n LoggerMain\n ],\n config: PreviewConfig,\n [previewSlot, bundlingStrategySlot]: [PreviewDefinitionRegistry, BundlingStrategySlot],\n harmony: Harmony\n ) {\n const logger = loggerMain.createLogger(PreviewAspect.id);\n\n const preview = new PreviewMain(\n harmony,\n previewSlot,\n uiMain,\n envs,\n pkg,\n aspectLoader,\n config,\n bundlingStrategySlot,\n builder,\n workspace,\n logger\n );\n\n if (workspace) uiMain.registerStartPlugin(new PreviewStartPlugin(workspace, bundler, uiMain, pubsub));\n\n componentExtension.registerRoute([new PreviewRoute(preview, logger)]);\n bundler.registerTarget([\n {\n entry: preview.getPreviewTarget.bind(preview),\n },\n ]);\n\n if (!config.disabled) builder.registerBuildTasks([new PreviewTask(bundler, preview)]);\n\n if (workspace) {\n workspace.registerOnComponentAdd((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.add(c))\n );\n workspace.registerOnComponentChange((c) =>\n preview.handleComponentChange(c, (currentComponents) => currentComponents.update(c))\n );\n workspace.registerOnComponentRemove((cId) => preview.handleComponentRemoval(cId));\n }\n\n return preview;\n }\n}\n\nPreviewAspect.addRuntime(PreviewMain);\n"]}
|
|
@@ -12,7 +12,10 @@ export declare class PreviewStartPlugin implements StartPlugin {
|
|
|
12
12
|
initiate(options: StartPluginOptions): Promise<void>;
|
|
13
13
|
getProxy(): ProxyEntry[];
|
|
14
14
|
private listenToDevServers;
|
|
15
|
+
private setReady;
|
|
16
|
+
private readyPromise;
|
|
17
|
+
get whenReady(): Promise<void>;
|
|
15
18
|
private initialState;
|
|
16
19
|
private updateServers;
|
|
17
|
-
render
|
|
20
|
+
render: () => JSX.Element;
|
|
18
21
|
}
|
|
@@ -76,11 +76,26 @@ class PreviewStartPlugin {
|
|
|
76
76
|
this.ui = ui;
|
|
77
77
|
this.pubsub = pubsub;
|
|
78
78
|
(0, _defineProperty2().default)(this, "previewServers", []);
|
|
79
|
+
(0, _defineProperty2().default)(this, "setReady", void 0);
|
|
80
|
+
(0, _defineProperty2().default)(this, "readyPromise", new Promise(resolve => this.setReady = resolve));
|
|
79
81
|
(0, _defineProperty2().default)(this, "initialState", {});
|
|
80
82
|
(0, _defineProperty2().default)(this, "updateServers", servers => {
|
|
81
83
|
this.initialState = typeof servers === 'function' ? servers(this.initialState) : servers;
|
|
82
84
|
return servers;
|
|
83
85
|
});
|
|
86
|
+
(0, _defineProperty2().default)(this, "render", () => {
|
|
87
|
+
const [servers, setServers] = (0, _react().useState)(this.initialState);
|
|
88
|
+
this.updateServers = setServers;
|
|
89
|
+
this.initialState = {};
|
|
90
|
+
(0, _react().useEffect)(() => {
|
|
91
|
+
const noneAreCompiling = Object.values(servers).every(x => !x.compiling);
|
|
92
|
+
if (noneAreCompiling) this.setReady();
|
|
93
|
+
}, [servers]);
|
|
94
|
+
return /*#__PURE__*/_react().default.createElement(_previewCli().PreviewServerStatus, {
|
|
95
|
+
previewServers: this.previewServers,
|
|
96
|
+
serverStats: servers
|
|
97
|
+
});
|
|
98
|
+
});
|
|
84
99
|
}
|
|
85
100
|
|
|
86
101
|
async initiate(options) {
|
|
@@ -139,18 +154,8 @@ class PreviewStartPlugin {
|
|
|
139
154
|
});
|
|
140
155
|
}
|
|
141
156
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const [servers, setServers] = (0, _react().useState)(this.initialState);
|
|
145
|
-
this.updateServers = setServers;
|
|
146
|
-
this.initialState = {};
|
|
147
|
-
return /*#__PURE__*/_react().default.createElement(_previewCli().PreviewServerStatus, {
|
|
148
|
-
previewServers: this.previewServers,
|
|
149
|
-
serverStats: servers
|
|
150
|
-
});
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
return PreviewPlugin;
|
|
157
|
+
get whenReady() {
|
|
158
|
+
return this.readyPromise;
|
|
154
159
|
}
|
|
155
160
|
|
|
156
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["preview.start-plugin.tsx"],"names":["PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","servers","initialState","initiate","options","listenToDevServers","components","byPattern","pattern","
|
|
1
|
+
{"version":3,"sources":["preview.start-plugin.tsx"],"names":["PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","Promise","resolve","setReady","servers","initialState","setServers","updateServers","noneAreCompiling","Object","values","every","x","compiling","previewServers","initiate","options","listenToDevServers","components","byPattern","pattern","devServer","forEach","server","listen","watcher","watchAll","msgs","onAll","onStart","onReady","onChange","onAdd","onError","onUnlink","concat","getProxy","proxyConfigs","map","context","envRuntime","id","target","port","ws","state","onDone","results","whenReady","readyPromise"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, Dispatch, SetStateAction } from 'react';\nimport { flatten } from 'lodash';\nimport { PreviewServerStatus } from '@teambit/preview.cli.preview-server-status';\nimport { BundlerMain, ComponentServer } from '@teambit/bundler';\nimport { PubsubMain } from '@teambit/pubsub';\nimport { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';\nimport { Workspace } from '@teambit/workspace';\nimport { SubscribeToWebpackEvents, CompilationResult } from '@teambit/preview.cli.webpack-events-listener';\n\ntype CompilationServers = Record<string, CompilationResult>;\ntype ServersSetter = Dispatch<SetStateAction<CompilationServers>>;\n\nexport class PreviewStartPlugin implements StartPlugin {\n constructor(\n private workspace: Workspace,\n private bundler: BundlerMain,\n private ui: UiMain,\n private pubsub: PubsubMain\n ) {}\n\n previewServers: ComponentServer[] = [];\n\n async initiate(options: StartPluginOptions) {\n this.listenToDevServers();\n\n const components = await this.workspace.byPattern(options.pattern || '');\n // TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.\n const previewServers = await this.bundler.devServer(components);\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n previewServers.forEach((server) => server.listen());\n // DON'T add wait! this promise never resolve so it's stop all the start process!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.workspace.watcher.watchAll({\n msgs: {\n onAll: () => {},\n onStart: () => {},\n onReady: () => {},\n onChange: () => {},\n onAdd: () => {},\n onError: () => {},\n onUnlink: () => {},\n },\n });\n this.previewServers = this.previewServers.concat(previewServers);\n }\n\n getProxy(): ProxyEntry[] {\n const proxyConfigs = this.previewServers.map<ProxyEntry[]>((server) => {\n return [\n {\n context: [`/preview/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n },\n {\n context: [`/_hmr/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n ws: true,\n },\n ];\n });\n\n return flatten(proxyConfigs);\n }\n\n // TODO: this should be a part of the devServer\n private listenToDevServers() {\n // keep state changes immutable!\n SubscribeToWebpackEvents(this.pubsub, {\n onStart: (id) => {\n this.updateServers((state) => ({\n ...state,\n [id]: { compiling: true },\n }));\n },\n onDone: (id, results) => {\n this.updateServers((state) => ({\n ...state,\n [id]: results,\n }));\n },\n });\n }\n\n private setReady: () => void;\n private readyPromise = new Promise<void>((resolve) => (this.setReady = resolve));\n get whenReady(): Promise<void> {\n return this.readyPromise;\n }\n\n private initialState: CompilationServers = {};\n // implements react-like setter (value or updater)\n private updateServers: ServersSetter = (servers) => {\n this.initialState = typeof servers === 'function' ? servers(this.initialState) : servers;\n return servers;\n };\n\n render = () => {\n const [servers, setServers] = useState<CompilationServers>(this.initialState);\n this.updateServers = setServers;\n this.initialState = {};\n\n useEffect(() => {\n const noneAreCompiling = Object.values(servers).every((x) => !x.compiling);\n if (noneAreCompiling) this.setReady();\n }, [servers]);\n\n return <PreviewServerStatus previewServers={this.previewServers} serverStats={servers} />;\n };\n}\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.520",
|
|
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.520"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"fs-extra": "10.0.0",
|
|
@@ -17,25 +17,25 @@
|
|
|
17
17
|
"mime": "2.5.2",
|
|
18
18
|
"@babel/runtime": "7.12.18",
|
|
19
19
|
"core-js": "^3.0.0",
|
|
20
|
-
"@teambit/builder": "0.0.
|
|
21
|
-
"@teambit/bundler": "0.0.
|
|
22
|
-
"@teambit/component": "0.0.
|
|
23
|
-
"@teambit/envs": "0.0.
|
|
24
|
-
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.
|
|
25
|
-
"@teambit/aspect-loader": "0.0.
|
|
20
|
+
"@teambit/builder": "0.0.520",
|
|
21
|
+
"@teambit/bundler": "0.0.520",
|
|
22
|
+
"@teambit/component": "0.0.520",
|
|
23
|
+
"@teambit/envs": "0.0.520",
|
|
24
|
+
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.442",
|
|
25
|
+
"@teambit/aspect-loader": "0.0.520",
|
|
26
26
|
"@teambit/cli": "0.0.379",
|
|
27
|
-
"@teambit/logger": "0.0.
|
|
28
|
-
"@teambit/pkg": "0.0.
|
|
29
|
-
"@teambit/pubsub": "0.0.
|
|
30
|
-
"@teambit/ui": "0.0.
|
|
31
|
-
"@teambit/workspace": "0.0.
|
|
27
|
+
"@teambit/logger": "0.0.449",
|
|
28
|
+
"@teambit/pkg": "0.0.520",
|
|
29
|
+
"@teambit/pubsub": "0.0.520",
|
|
30
|
+
"@teambit/ui": "0.0.520",
|
|
31
|
+
"@teambit/workspace": "0.0.520",
|
|
32
32
|
"@teambit/component-id": "0.0.369",
|
|
33
|
-
"@teambit/express": "0.0.
|
|
34
|
-
"@teambit/ui-foundation.ui.pages.static-error": "0.0.
|
|
35
|
-
"@teambit/preview.cli.preview-server-status": "0.0.
|
|
36
|
-
"@teambit/preview.cli.webpack-events-listener": "0.0.
|
|
37
|
-
"@teambit/compiler": "0.0.
|
|
38
|
-
"@teambit/isolator": "0.0.
|
|
33
|
+
"@teambit/express": "0.0.453",
|
|
34
|
+
"@teambit/ui-foundation.ui.pages.static-error": "0.0.29",
|
|
35
|
+
"@teambit/preview.cli.preview-server-status": "0.0.447",
|
|
36
|
+
"@teambit/preview.cli.webpack-events-listener": "0.0.118",
|
|
37
|
+
"@teambit/compiler": "0.0.520",
|
|
38
|
+
"@teambit/isolator": "0.0.520",
|
|
39
39
|
"@teambit/bit-error": "0.0.365"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@types/jest": "^26.0.0",
|
|
50
50
|
"@types/react-dom": "^17.0.5",
|
|
51
51
|
"@types/node": "12.20.4",
|
|
52
|
-
"@teambit/preview.aspect-docs.preview": "0.0.
|
|
52
|
+
"@teambit/preview.aspect-docs.preview": "0.0.85"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"@teambit/legacy": "1.0.76",
|
package/preview.main.runtime.tsx
CHANGED
|
@@ -3,7 +3,7 @@ import { BundlerAspect, BundlerMain } from '@teambit/bundler';
|
|
|
3
3
|
import { PubsubAspect, PubsubMain } from '@teambit/pubsub';
|
|
4
4
|
import { MainRuntime } from '@teambit/cli';
|
|
5
5
|
import { Component, ComponentAspect, ComponentMain, ComponentMap, ComponentID } from '@teambit/component';
|
|
6
|
-
import { EnvsAspect, EnvsMain, ExecutionContext
|
|
6
|
+
import { EnvsAspect, EnvsMain, ExecutionContext } from '@teambit/envs';
|
|
7
7
|
import { Slot, SlotRegistry, Harmony } from '@teambit/harmony';
|
|
8
8
|
import { UIAspect, UiMain } from '@teambit/ui';
|
|
9
9
|
import { CACHE_ROOT } from '@teambit/legacy/dist/constants';
|
|
@@ -138,10 +138,10 @@ export class PreviewMain {
|
|
|
138
138
|
|
|
139
139
|
const map = await previewDef.getModuleMap(components);
|
|
140
140
|
const environment = context.envRuntime.env;
|
|
141
|
-
|
|
142
|
-
const compilerInstance = hasCompiler(environment) && environment.getCompiler();
|
|
141
|
+
const compilerInstance = environment.getCompiler?.();
|
|
143
142
|
const withPaths = map.map<string[]>((files, component) => {
|
|
144
|
-
const modulePath =
|
|
143
|
+
const modulePath =
|
|
144
|
+
compilerInstance?.getPreviewComponentRootPath?.(component) || this.pkg.getModulePath(component);
|
|
145
145
|
return files.map((file) => {
|
|
146
146
|
if (!this.workspace || !compilerInstance) {
|
|
147
147
|
return file.path;
|
package/preview.start-plugin.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useEffect, Dispatch, SetStateAction } from 'react';
|
|
2
2
|
import { flatten } from 'lodash';
|
|
3
3
|
import { PreviewServerStatus } from '@teambit/preview.cli.preview-server-status';
|
|
4
4
|
import { BundlerMain, ComponentServer } from '@teambit/bundler';
|
|
@@ -8,6 +8,7 @@ import { Workspace } from '@teambit/workspace';
|
|
|
8
8
|
import { SubscribeToWebpackEvents, CompilationResult } from '@teambit/preview.cli.webpack-events-listener';
|
|
9
9
|
|
|
10
10
|
type CompilationServers = Record<string, CompilationResult>;
|
|
11
|
+
type ServersSetter = Dispatch<SetStateAction<CompilationServers>>;
|
|
11
12
|
|
|
12
13
|
export class PreviewStartPlugin implements StartPlugin {
|
|
13
14
|
constructor(
|
|
@@ -80,22 +81,29 @@ export class PreviewStartPlugin implements StartPlugin {
|
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
83
|
|
|
84
|
+
private setReady: () => void;
|
|
85
|
+
private readyPromise = new Promise<void>((resolve) => (this.setReady = resolve));
|
|
86
|
+
get whenReady(): Promise<void> {
|
|
87
|
+
return this.readyPromise;
|
|
88
|
+
}
|
|
89
|
+
|
|
83
90
|
private initialState: CompilationServers = {};
|
|
84
91
|
// implements react-like setter (value or updater)
|
|
85
|
-
private updateServers:
|
|
92
|
+
private updateServers: ServersSetter = (servers) => {
|
|
86
93
|
this.initialState = typeof servers === 'function' ? servers(this.initialState) : servers;
|
|
87
94
|
return servers;
|
|
88
95
|
};
|
|
89
96
|
|
|
90
|
-
render() {
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.initialState = {};
|
|
97
|
+
render = () => {
|
|
98
|
+
const [servers, setServers] = useState<CompilationServers>(this.initialState);
|
|
99
|
+
this.updateServers = setServers;
|
|
100
|
+
this.initialState = {};
|
|
95
101
|
|
|
96
|
-
|
|
97
|
-
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
const noneAreCompiling = Object.values(servers).every((x) => !x.compiling);
|
|
104
|
+
if (noneAreCompiling) this.setReady();
|
|
105
|
+
}, [servers]);
|
|
98
106
|
|
|
99
|
-
return
|
|
100
|
-
}
|
|
107
|
+
return <PreviewServerStatus previewServers={this.previewServers} serverStats={servers} />;
|
|
108
|
+
};
|
|
101
109
|
}
|
|
Binary file
|