@teambit/ui 0.0.1050 → 0.0.1052

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.
@@ -15,6 +15,20 @@ function _defineProperty2() {
15
15
  };
16
16
  return data;
17
17
  }
18
+ function _fs() {
19
+ const data = require("fs");
20
+ _fs = function () {
21
+ return data;
22
+ };
23
+ return data;
24
+ }
25
+ function _aspectLoader() {
26
+ const data = require("@teambit/aspect-loader");
27
+ _aspectLoader = function () {
28
+ return data;
29
+ };
30
+ return data;
31
+ }
18
32
  function _cache() {
19
33
  const data = require("@teambit/cache");
20
34
  _cache = function () {
@@ -190,6 +204,13 @@ function _webpackSsr() {
190
204
  };
191
205
  return data;
192
206
  }
207
+ function _bundleUi() {
208
+ const data = require("./bundle-ui.task");
209
+ _bundleUi = function () {
210
+ return data;
211
+ };
212
+ return data;
213
+ }
193
214
  class UiMain {
194
215
  constructor(
195
216
  /**
@@ -250,6 +271,7 @@ class UiMain {
250
271
  this.logger = logger;
251
272
  this.harmony = harmony;
252
273
  this.startPluginSlot = startPluginSlot;
274
+ (0, _defineProperty2().default)(this, "_isBundleUiServed", false);
253
275
  (0, _defineProperty2().default)(this, "createUiServerStartedEvent", (targetHost, targetPort, uiRoot) => {
254
276
  return new (_events().UiServerStartedEvent)(Date.now(), targetHost, targetPort, uiRoot);
255
277
  });
@@ -333,6 +355,7 @@ class UiMain {
333
355
  pattern
334
356
  });
335
357
  if (this.componentExtension.isHost(name)) this.componentExtension.setHostPriority(name);
358
+ const publicDir = await this.publicDir(uiRoot);
336
359
  const uiServer = _uiServer().UIServer.create({
337
360
  express: this.express,
338
361
  graphql: this.graphql,
@@ -340,7 +363,7 @@ class UiMain {
340
363
  uiRootExtension: name,
341
364
  ui: this,
342
365
  logger: this.logger,
343
- publicDir: await this.publicDir(uiRoot),
366
+ publicDir,
344
367
  startPlugins: plugins
345
368
  });
346
369
 
@@ -352,8 +375,11 @@ class UiMain {
352
375
  });
353
376
  } else {
354
377
  if (!skipUiBuild) await this.buildUI(name, uiRoot, rebuild);
378
+ const bundleUiPublicPath = (0, _path().join)(this.getBundleUiPath(), publicDir);
379
+ const bundleUiRoot = this._isBundleUiServed && (0, _fs().existsSync)(bundleUiPublicPath) ? bundleUiPublicPath : undefined;
355
380
  await uiServer.start({
356
- portRange: port || this.config.portRange
381
+ portRange: port || this.config.portRange,
382
+ bundleUiRoot
357
383
  });
358
384
  }
359
385
  this.pubsub.pub(_ui().UIAspect.id, this.createUiServerStartedEvent(this.config.host, uiServer.port, uiRoot));
@@ -490,51 +516,80 @@ class UiMain {
490
516
  this.logger.debug(`buildUI, name ${name}`);
491
517
  const overwrite = this.getOverwriteBuildFn();
492
518
  if (overwrite) return overwrite(name, uiRoot, rebuild);
493
- const hash = await this.buildIfChanged(name, uiRoot, rebuild);
519
+ this._isBundleUiServed = await this.shouldServeBundleUi(uiRoot, rebuild);
520
+ await this.buildIfChanged(name, uiRoot, rebuild);
494
521
  await this.buildIfNoBundle(name, uiRoot);
495
- return hash;
522
+ return '';
523
+ }
524
+ async shouldServeBundleUi(uiRoot, force) {
525
+ var _uiRoot$buildOptions2;
526
+ if (!((_uiRoot$buildOptions2 = uiRoot.buildOptions) !== null && _uiRoot$buildOptions2 !== void 0 && _uiRoot$buildOptions2.prebundle)) {
527
+ return false;
528
+ }
529
+ const currentBundleUiHash = await this.createBundleUiHash(uiRoot);
530
+ const cachedBundleUiHash = this.readBundleUiHash();
531
+ const isLocalBuildAvailable = (0, _fs().existsSync)((0, _path().join)(uiRoot.path, await this.publicDir(uiRoot)));
532
+ return currentBundleUiHash === cachedBundleUiHash && !isLocalBuildAvailable && !force;
533
+ }
534
+ async buildIfChanged(name, uiRoot, force) {
535
+ this.logger.debug(`buildIfChanged, name ${name}`);
536
+ if (this._isBundleUiServed) {
537
+ this.logger.debug(`buildIfChanged, name ${name}, returned from ui bundle cache`);
538
+ return false;
539
+ }
540
+ const currentBuildUiHash = await this.createBuildUiHash(uiRoot);
541
+ const cachedBuildUiHash = await this.cache.get(uiRoot.path);
542
+ if (currentBuildUiHash === cachedBuildUiHash && !force) {
543
+ this.logger.debug(`buildIfChanged, name ${name}, returned from ui build cache`);
544
+ return false;
545
+ }
546
+ if (!cachedBuildUiHash) {
547
+ this.logger.console(`Building UI assets for '${_chalk().default.cyan(uiRoot.name)}' in target directory: ${_chalk().default.cyan(await this.publicDir(uiRoot))}. The first time we build the UI it may take a few minutes.`);
548
+ } else {
549
+ this.logger.console(`Rebuilding UI assets for '${_chalk().default.cyan(uiRoot.name)} in target directory: ${_chalk().default.cyan(await this.publicDir(uiRoot))}' as ${uiRoot.configFile} has been changed.`);
550
+ }
551
+ await this.build(name);
552
+ await this.cache.set(uiRoot.path, currentBuildUiHash);
553
+ return true;
496
554
  }
497
- async buildUiHash(uiRoot, runtime = 'ui') {
555
+ async createBuildUiHash(uiRoot, runtime = 'ui') {
498
556
  const aspects = await uiRoot.resolveAspects(runtime);
499
557
  aspects.sort((a, b) => a.aspectPath > b.aspectPath ? 1 : -1);
500
- const hash = aspects.map(aspect => {
558
+ const aspectPathStrings = aspects.map(aspect => {
501
559
  return [aspect.aspectPath, aspect.runtimePath].join('');
502
560
  });
503
- return (0, _utils().sha1)(hash.join(''));
561
+ return (0, _utils().sha1)(aspectPathStrings.join(''));
504
562
  }
505
- async getBundleUiHash(uiRoot, runtime = 'ui') {
563
+ async createBundleUiHash(uiRoot, runtime = 'ui') {
506
564
  const aspects = await uiRoot.resolveAspects(runtime);
507
565
  aspects.sort((a, b) => (a.getId || a.aspectPath) > (b.getId || b.aspectPath) ? 1 : -1);
508
566
  const aspectIds = aspects.map(aspect => aspect.getId || aspect.aspectPath);
509
567
  return (0, _utils().sha1)(aspectIds.join(''));
510
568
  }
511
- async buildIfChanged(name, uiRoot, force) {
512
- this.logger.debug(`buildIfChanged, name ${name}`);
513
- const hash = await this.buildUiHash(uiRoot);
514
- const hashed = await this.cache.get(uiRoot.path);
515
- if (hash === hashed && !force) {
516
- this.logger.debug(`buildIfChanged, name ${name}, returned from cache`);
517
- return hash;
569
+ readBundleUiHash() {
570
+ const bundleUiPathFromBvm = this.getBundleUiPath();
571
+ const hashFilePath = (0, _path().join)(bundleUiPathFromBvm, _bundleUi().BUNDLE_UI_HASH_FILENAME);
572
+ if ((0, _fs().existsSync)(hashFilePath)) {
573
+ return (0, _fs().readFileSync)(hashFilePath).toString();
518
574
  }
519
- if (!hashed) {
520
- this.logger.console(`Building UI assets for '${_chalk().default.cyan(uiRoot.name)}' in target directory: ${_chalk().default.cyan(await this.publicDir(uiRoot))}. The first time we build the UI it may take a few minutes.`);
521
- } else {
522
- this.logger.console(`Rebuilding UI assets for '${_chalk().default.cyan(uiRoot.name)} in target directory: ${_chalk().default.cyan(await this.publicDir(uiRoot))}' as ${uiRoot.configFile} has been changed.`);
523
- }
524
- await this.build(name);
525
- await this.cache.set(uiRoot.path, hash);
526
- return hash;
575
+ return '';
527
576
  }
528
- clearConsole() {
529
- process.stdout.write(process.platform === 'win32' ? '\x1B[2J\x1B[0f' : '\x1B[2J\x1B[3J\x1B[H');
577
+ getBundleUiPath() {
578
+ const uiPathFromBvm = (0, _aspectLoader().getAspectDirFromBvm)(_ui().UIAspect.id);
579
+ return (0, _path().join)(uiPathFromBvm, _bundleUi().BundleUiTask.getArtifactDirectory());
530
580
  }
531
581
  async buildIfNoBundle(name, uiRoot) {
532
582
  var _config$output;
583
+ if (this._isBundleUiServed) return false;
533
584
  const config = (0, _webpackBrowser().default)(uiRoot.path, [await this.generateRoot(await uiRoot.resolveAspects(_ui().UIRuntime.name), name)], uiRoot.name, await this.publicDir(uiRoot));
534
- if ((_config$output = config.output) !== null && _config$output !== void 0 && _config$output.path && _fsExtra().default.pathExistsSync(config.output.path)) return;
535
- const hash = await this.buildUiHash(uiRoot);
585
+ if ((_config$output = config.output) !== null && _config$output !== void 0 && _config$output.path && _fsExtra().default.pathExistsSync(config.output.path)) return false;
586
+ const hash = await this.createBuildUiHash(uiRoot);
536
587
  await this.build(name);
537
588
  await this.cache.set(uiRoot.path, hash);
589
+ return true;
590
+ }
591
+ clearConsole() {
592
+ process.stdout.write(process.platform === 'win32' ? '\x1B[2J\x1B[0f' : '\x1B[2J\x1B[3J\x1B[H');
538
593
  }
539
594
  get publicUrl() {
540
595
  return this.config.publicUrl;
@@ -1 +1 @@
1
- {"version":3,"names":["UiMain","constructor","pubsub","config","graphql","uiRootSlot","express","preStartSlot","onStartSlot","publicDirOverwriteSlot","buildMethodOverwriteSlot","componentExtension","cache","logger","harmony","startPluginSlot","targetHost","targetPort","uiRoot","UiServerStartedEvent","Date","now","publicDir","overwriteFn","getOverwritePublic","hasDir","startsWith","substring","getUiByName","name","roots","toArray","root","find","build","uiRootName","customOutputPath","debug","maybeUiRoot","getUi","UnknownUI","possibleUis","ssr","buildOptions","mainEntry","generateRoot","resolveAspects","UIRuntime","outputPath","path","browserConfig","createWebpackConfig","ssrConfig","createSsrWebpackConfig","filter","x","compiler","webpack","compilerRun","promisify","run","bind","results","UnknownBuildError","hasErrors","clearConsole","Error","toString","registerStartPlugin","startPlugin","register","initiatePlugins","options","plugins","values","pMapSeries","plugin","initiate","createRuntime","pattern","dev","port","rebuild","verbose","skipUiBuild","isHost","setHostPriority","uiServer","UIServer","create","uiRootExtension","ui","startPlugins","addSignalListener","portRange","buildUI","start","pub","UIAspect","id","createUiServerStartedEvent","host","process","on","exit","getPort","selectPort","registerPreStart","preStartFn","registerOnStart","onStartFn","registerBuildUIOverwrite","fn","registerPublicDirOverwrite","getOverwriteBuildFn","buildMethodOverwrite","undefined","overwritePublic","invokePreStart","preStartOpts","onPreStartFuncs","invokeOnStart","onStartFuncs","registerUiRoot","get","uis","length","priority","isHostAvailable","Boolean","getHost","getUiName","map","createLink","aspectDefs","rootExtensionName","createRoot","runtimeName","rootAspect","ignoreVersion","contents","toObject","filepath","resolve","join","__dirname","sha1","fs","existsSync","outputFileSync","from","to","usedPorts","Port","set","concat","overwrite","hash","buildIfChanged","buildIfNoBundle","buildUiHash","runtime","aspects","sort","a","b","aspectPath","aspect","runtimePath","getBundleUiHash","getId","aspectIds","force","hashed","console","chalk","cyan","configFile","stdout","write","platform","output","pathExistsSync","publicUrl","provider","cli","loggerMain","proxyGetterSlot","createLogger","StartCmd","UIBuildCmd","MainRuntime","PubsubAspect","CLIAspect","GraphqlAspect","ExpressAspect","ComponentAspect","CacheAspect","LoggerAspect","Slot","withType","addRuntime"],"sources":["ui.main.runtime.ts"],"sourcesContent":["import type { AspectMain } from '@teambit/aspect';\nimport { ComponentType } from 'react';\nimport { AspectDefinition } from '@teambit/aspect-loader';\nimport { CacheAspect, CacheMain } from '@teambit/cache';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport type { ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport chalk from 'chalk';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport PubsubAspect, { PubsubMain } from '@teambit/pubsub';\nimport { sha1 } from '@teambit/legacy/dist/utils';\nimport pMapSeries from 'p-map-series';\nimport fs from 'fs-extra';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { join, resolve } from 'path';\nimport { promisify } from 'util';\nimport webpack from 'webpack';\nimport { UiServerStartedEvent } from './events';\nimport { createRoot } from './create-root';\nimport { UnknownUI, UnknownBuildError } from './exceptions';\nimport { StartCmd } from './start.cmd';\nimport { UIBuildCmd } from './ui-build.cmd';\nimport { UIRoot } from './ui-root';\nimport { UIServer } from './ui-server';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport createWebpackConfig from './webpack/webpack.browser.config';\nimport createSsrWebpackConfig from './webpack/webpack.ssr.config';\nimport { StartPlugin, StartPluginOptions } from './start-plugin';\n\nexport type UIDeps = [PubsubMain, CLIMain, GraphqlMain, ExpressMain, ComponentMain, CacheMain, LoggerMain, AspectMain];\n\nexport type UIRootRegistry = SlotRegistry<UIRoot>;\n\nexport type PreStart = (preStartOpts: PreStartOpts) => Promise<void>;\n\nexport type PreStartOpts = { skipCompilation?: boolean };\n\nexport type OnStart = () => Promise<undefined | ComponentType<{}>>;\n\nexport type StartPluginSlot = SlotRegistry<StartPlugin>;\n\nexport type PublicDirOverwrite = (uiRoot: UIRoot) => Promise<string | undefined>;\n\nexport type BuildMethodOverwrite = (name: string, uiRoot: UIRoot, rebuild?: boolean) => Promise<string>;\n\nexport type PreStartSlot = SlotRegistry<PreStart>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\n\nexport type PublicDirOverwriteSlot = SlotRegistry<PublicDirOverwrite>;\n\nexport type BuildMethodOverwriteSlot = SlotRegistry<BuildMethodOverwrite>;\n\nexport type UIConfig = {\n /**\n * port for the UI root to use.\n */\n port?: number;\n\n /**\n * port range for the UI root to use.\n */\n portRange: [number, number];\n\n /**\n * host for the UI root\n */\n host: string;\n\n /**\n * directory in workspace to use for public assets.\n * always relative to the workspace root directory.\n */\n publicDir: string;\n\n /** the url to display when server is listening. Note that bit does not provide proxying to this url */\n publicUrl?: string;\n};\n\nexport type RuntimeOptions = {\n /**\n * determine whether to initiate on verbose mode.\n */\n verbose?: boolean;\n\n /**\n * name of the UI root to load.\n */\n uiRootName?: string;\n\n /**\n * component selector pattern to load.\n */\n pattern?: string;\n\n /**\n * determine whether to start a dev server (defaults to false).\n */\n dev?: boolean;\n\n /**\n * port of the config.\n */\n port?: number;\n\n /**\n * determine whether to rebuild the UI before start.\n */\n rebuild?: boolean;\n\n /**\n * skip build the UI before start\n */\n skipUiBuild?: boolean;\n};\n\nexport class UiMain {\n constructor(\n /**\n * Pubsub extension.\n */\n private pubsub: PubsubMain,\n\n private config: UIConfig,\n\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * slot registry of ui roots.\n */\n private uiRootSlot: UIRootRegistry,\n\n /**\n * express extension.\n */\n private express: ExpressMain,\n\n /**\n * pre-start slot\n */\n private preStartSlot: PreStartSlot,\n\n /**\n * on start slot\n */\n private onStartSlot: OnStartSlot,\n\n /**\n * Overwrite the public dir Slot\n */\n private publicDirOverwriteSlot: PublicDirOverwriteSlot,\n\n /**\n * Overwrite the build ui method\n */\n private buildMethodOverwriteSlot: BuildMethodOverwriteSlot,\n\n /**\n * component extension.\n */\n private componentExtension: ComponentMain,\n\n /**\n * ui logger instance.\n */\n private cache: CacheMain,\n\n /**\n * ui logger instance.\n */\n private logger: Logger,\n\n private harmony: Harmony,\n\n private startPluginSlot: StartPluginSlot\n ) {}\n\n async publicDir(uiRoot: UIRoot) {\n const overwriteFn = this.getOverwritePublic();\n if (overwriteFn) {\n const hasDir = await overwriteFn(uiRoot);\n if (hasDir) return hasDir;\n }\n\n if (this.config.publicDir.startsWith('/')) {\n return this.config.publicDir.substring(1);\n }\n\n return this.config.publicDir;\n }\n\n private getUiByName(name: string) {\n const roots = this.uiRootSlot.toArray();\n const [, root] =\n roots.find(([, uiRoot]) => {\n return uiRoot.name === name;\n }) || [];\n\n return root;\n }\n\n /**\n * create a build of the given UI root.\n */\n async build(uiRootName?: string, customOutputPath?: string): Promise<webpack.MultiStats | undefined> {\n // TODO: change to MultiStats from webpack once they export it in their types\n this.logger.debug(`build, uiRootName: \"${uiRootName}\"`);\n const maybeUiRoot = this.getUi(uiRootName);\n\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n const [name, uiRoot] = maybeUiRoot;\n\n // TODO: @uri refactor all dev server related code to use the bundler extension instead.\n const ssr = uiRoot.buildOptions?.ssr || false;\n const mainEntry = await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name);\n const outputPath = customOutputPath || uiRoot.path;\n\n const browserConfig = createWebpackConfig(outputPath, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(outputPath, [mainEntry], await this.publicDir(uiRoot));\n\n const config = [browserConfig, ssrConfig].filter((x) => !!x) as webpack.Configuration[];\n const compiler = webpack(config);\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" running webpack`);\n const compilerRun = promisify(compiler.run.bind(compiler));\n const results = await compilerRun();\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" completed webpack`);\n if (!results) throw new UnknownBuildError();\n if (results?.hasErrors()) {\n this.clearConsole();\n throw new Error(results?.toString());\n }\n\n return results;\n }\n\n registerStartPlugin(startPlugin: StartPlugin) {\n this.startPluginSlot.register(startPlugin);\n return this;\n }\n\n private async initiatePlugins(options: StartPluginOptions) {\n const plugins = this.startPluginSlot.values();\n await pMapSeries(plugins, (plugin) => plugin.initiate(options));\n return plugins;\n }\n\n /**\n * create a Bit UI runtime.\n */\n async createRuntime({ uiRootName, pattern, dev, port, rebuild, verbose, skipUiBuild }: RuntimeOptions) {\n const maybeUiRoot = this.getUi(uiRootName);\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n\n const [name, uiRoot] = maybeUiRoot;\n\n const plugins = await this.initiatePlugins({\n verbose,\n pattern,\n });\n\n if (this.componentExtension.isHost(name)) this.componentExtension.setHostPriority(name);\n\n const uiServer = UIServer.create({\n express: this.express,\n graphql: this.graphql,\n uiRoot,\n uiRootExtension: name,\n ui: this,\n logger: this.logger,\n publicDir: await this.publicDir(uiRoot),\n startPlugins: plugins,\n });\n\n // Adding signal listeners to make sure we immediately close the process on sigint / sigterm (otherwise webpack dev server closing will take time)\n this.addSignalListener();\n if (dev) {\n await uiServer.dev({ portRange: port || this.config.portRange });\n } else {\n if (!skipUiBuild) await this.buildUI(name, uiRoot, rebuild);\n await uiServer.start({ portRange: port || this.config.portRange });\n }\n\n this.pubsub.pub(UIAspect.id, this.createUiServerStartedEvent(this.config.host, uiServer.port, uiRoot));\n\n return uiServer;\n }\n\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\n }\n\n async getPort(port?: number): Promise<number> {\n if (port) return port;\n return this.config.port || this.selectPort();\n }\n\n /**\n * Events\n */\n private createUiServerStartedEvent = (targetHost, targetPort, uiRoot) => {\n return new UiServerStartedEvent(Date.now(), targetHost, targetPort, uiRoot);\n };\n\n /**\n * pre-start events are triggered and *completed* before the webserver started.\n * (the promise is awaited)\n */\n registerPreStart(preStartFn: PreStart) {\n this.preStartSlot.register(preStartFn);\n }\n\n /**\n * bind to ui server start event.\n */\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerBuildUIOverwrite(fn: BuildMethodOverwrite) {\n this.buildMethodOverwriteSlot.register(fn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerPublicDirOverwrite(fn: PublicDirOverwrite) {\n this.publicDirOverwriteSlot.register(fn);\n return this;\n }\n\n private getOverwriteBuildFn() {\n const buildMethodOverwrite = this.buildMethodOverwriteSlot.toArray();\n if (buildMethodOverwrite[0]) {\n const [, fn] = buildMethodOverwrite[0];\n return fn;\n }\n return undefined;\n }\n\n private getOverwritePublic() {\n const overwritePublic = this.publicDirOverwriteSlot.toArray();\n if (overwritePublic[0]) {\n const [, fn] = overwritePublic[0];\n return fn;\n }\n return undefined;\n }\n\n async invokePreStart(preStartOpts: PreStartOpts): Promise<void> {\n const onPreStartFuncs = this.preStartSlot.values();\n await pMapSeries(onPreStartFuncs, async (fn) => fn(preStartOpts));\n }\n\n async invokeOnStart(): Promise<ComponentType[]> {\n const onStartFuncs = this.onStartSlot.values();\n const startPlugins = await pMapSeries(onStartFuncs, async (fn) => fn());\n return startPlugins.filter((plugin) => !!plugin) as ComponentType[];\n }\n\n /**\n * register a UI slot.\n */\n registerUiRoot(uiRoot: UIRoot) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n /**\n * get a UI runtime instance.\n */\n getUi(uiRootName?: string): [string, UIRoot] | undefined {\n if (uiRootName) {\n const root = this.uiRootSlot.get(uiRootName) || this.getUiByName(uiRootName);\n if (!root) return undefined;\n return [uiRootName, root];\n }\n const uis = this.uiRootSlot.toArray();\n if (uis.length === 1) return uis[0];\n return uis.find(([, root]) => root.priority);\n }\n\n isHostAvailable(): boolean {\n return Boolean(this.componentExtension.getHost());\n }\n\n getUiName(uiRootName?: string): string | undefined {\n const [, ui] = this.getUi(uiRootName) || [];\n if (!ui) return undefined;\n\n return ui.name;\n }\n\n private possibleUis() {\n return this.uiRootSlot.toArray().map(([id]) => id);\n }\n\n createLink(aspectDefs: AspectDefinition[], rootExtensionName: string) {\n return createRoot(aspectDefs, rootExtensionName);\n }\n\n /**\n * generate the root file of the UI runtime.\n */\n async generateRoot(\n aspectDefs: AspectDefinition[],\n rootExtensionName: string,\n runtimeName = UIRuntime.name,\n rootAspect = UIAspect.id,\n config?: object,\n path?: string,\n ignoreVersion?: boolean\n ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n config || this.harmony.config.toObject(),\n ignoreVersion\n );\n const filepath = resolve(join(path || __dirname, `${runtimeName}.root${sha1(contents)}.js`));\n if (fs.existsSync(filepath)) return filepath;\n fs.outputFileSync(filepath, contents);\n return filepath;\n }\n\n private async selectPort() {\n const [from, to] = this.config.portRange;\n const usedPorts = (await this.cache.get<number[]>(`${from}${to}`)) || [];\n const port = await Port.getPort(from, to, usedPorts);\n // this will lock the port for 1 min to avoid race conditions\n await this.cache.set(`${from}${to}`, usedPorts.concat(port), 5000);\n return port;\n }\n\n private async buildUI(name: string, uiRoot: UIRoot, rebuild?: boolean): Promise<string> {\n this.logger.debug(`buildUI, name ${name}`);\n const overwrite = this.getOverwriteBuildFn();\n if (overwrite) return overwrite(name, uiRoot, rebuild);\n const hash = await this.buildIfChanged(name, uiRoot, rebuild);\n await this.buildIfNoBundle(name, uiRoot);\n return hash;\n }\n\n async buildUiHash(uiRoot: UIRoot, runtime = 'ui'): Promise<string> {\n const aspects = await uiRoot.resolveAspects(runtime);\n aspects.sort((a, b) => (a.aspectPath > b.aspectPath ? 1 : -1));\n const hash = aspects.map((aspect) => {\n return [aspect.aspectPath, aspect.runtimePath].join('');\n });\n return sha1(hash.join(''));\n }\n\n async getBundleUiHash(uiRoot: UIRoot, runtime = 'ui'): Promise<string> {\n const aspects = await uiRoot.resolveAspects(runtime);\n aspects.sort((a, b) => ((a.getId || a.aspectPath) > (b.getId || b.aspectPath) ? 1 : -1));\n const aspectIds = aspects.map((aspect) => aspect.getId || aspect.aspectPath);\n return sha1(aspectIds.join(''));\n }\n\n async buildIfChanged(name: string, uiRoot: UIRoot, force: boolean | undefined): Promise<string> {\n this.logger.debug(`buildIfChanged, name ${name}`);\n const hash = await this.buildUiHash(uiRoot);\n const hashed = await this.cache.get(uiRoot.path);\n if (hash === hashed && !force) {\n this.logger.debug(`buildIfChanged, name ${name}, returned from cache`);\n return hash;\n }\n if (!hashed) {\n this.logger.console(\n `Building UI assets for '${chalk.cyan(uiRoot.name)}' in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}. The first time we build the UI it may take a few minutes.`\n );\n } else {\n this.logger.console(\n `Rebuilding UI assets for '${chalk.cyan(uiRoot.name)} in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}' as ${uiRoot.configFile} has been changed.`\n );\n }\n\n await this.build(name);\n await this.cache.set(uiRoot.path, hash);\n return hash;\n }\n\n clearConsole() {\n process.stdout.write(process.platform === 'win32' ? '\\x1B[2J\\x1B[0f' : '\\x1B[2J\\x1B[3J\\x1B[H');\n }\n\n async buildIfNoBundle(name: string, uiRoot: UIRoot) {\n const config = createWebpackConfig(\n uiRoot.path,\n [await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name)],\n uiRoot.name,\n await this.publicDir(uiRoot)\n );\n if (config.output?.path && fs.pathExistsSync(config.output.path)) return;\n const hash = await this.buildUiHash(uiRoot);\n await this.build(name);\n await this.cache.set(uiRoot.path, hash);\n }\n\n get publicUrl() {\n return this.config.publicUrl;\n }\n\n static defaultConfig: UIConfig = {\n publicDir: 'public/bit',\n portRange: [3000, 3100],\n host: 'localhost',\n };\n\n static runtime = MainRuntime;\n static dependencies = [\n PubsubAspect,\n CLIAspect,\n GraphqlAspect,\n ExpressAspect,\n ComponentAspect,\n CacheAspect,\n LoggerAspect,\n ];\n\n static slots = [\n Slot.withType<UIRoot>(),\n Slot.withType<PreStart>(),\n Slot.withType<OnStart>(),\n Slot.withType<PublicDirOverwriteSlot>(),\n Slot.withType<BuildMethodOverwriteSlot>(),\n Slot.withType<StartPlugin>(),\n ];\n\n static async provider(\n [pubsub, cli, graphql, express, componentExtension, cache, loggerMain]: UIDeps,\n config,\n [uiRootSlot, preStartSlot, onStartSlot, publicDirOverwriteSlot, buildMethodOverwriteSlot, proxyGetterSlot]: [\n UIRootRegistry,\n PreStartSlot,\n OnStartSlot,\n PublicDirOverwriteSlot,\n BuildMethodOverwriteSlot,\n StartPluginSlot\n ],\n harmony: Harmony\n ) {\n // aspectExtension.registerRuntime(new RuntimeDefinition('ui', []))\n const logger = loggerMain.createLogger(UIAspect.id);\n\n const ui = new UiMain(\n pubsub,\n config,\n graphql,\n uiRootSlot,\n express,\n preStartSlot,\n onStartSlot,\n publicDirOverwriteSlot,\n buildMethodOverwriteSlot,\n componentExtension,\n cache,\n logger,\n harmony,\n proxyGetterSlot\n );\n\n cli.register(new StartCmd(ui, logger), new UIBuildCmd(ui));\n\n return ui;\n }\n}\n\nUIAspect.addRuntime(UiMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["UiMain","constructor","pubsub","config","graphql","uiRootSlot","express","preStartSlot","onStartSlot","publicDirOverwriteSlot","buildMethodOverwriteSlot","componentExtension","cache","logger","harmony","startPluginSlot","targetHost","targetPort","uiRoot","UiServerStartedEvent","Date","now","publicDir","overwriteFn","getOverwritePublic","hasDir","startsWith","substring","getUiByName","name","roots","toArray","root","find","build","uiRootName","customOutputPath","debug","maybeUiRoot","getUi","UnknownUI","possibleUis","ssr","buildOptions","mainEntry","generateRoot","resolveAspects","UIRuntime","outputPath","path","browserConfig","createWebpackConfig","ssrConfig","createSsrWebpackConfig","filter","x","compiler","webpack","compilerRun","promisify","run","bind","results","UnknownBuildError","hasErrors","clearConsole","Error","toString","registerStartPlugin","startPlugin","register","initiatePlugins","options","plugins","values","pMapSeries","plugin","initiate","createRuntime","pattern","dev","port","rebuild","verbose","skipUiBuild","isHost","setHostPriority","uiServer","UIServer","create","uiRootExtension","ui","startPlugins","addSignalListener","portRange","buildUI","bundleUiPublicPath","join","getBundleUiPath","bundleUiRoot","_isBundleUiServed","existsSync","undefined","start","pub","UIAspect","id","createUiServerStartedEvent","host","process","on","exit","getPort","selectPort","registerPreStart","preStartFn","registerOnStart","onStartFn","registerBuildUIOverwrite","fn","registerPublicDirOverwrite","getOverwriteBuildFn","buildMethodOverwrite","overwritePublic","invokePreStart","preStartOpts","onPreStartFuncs","invokeOnStart","onStartFuncs","registerUiRoot","get","uis","length","priority","isHostAvailable","Boolean","getHost","getUiName","map","createLink","aspectDefs","rootExtensionName","createRoot","runtimeName","rootAspect","ignoreVersion","contents","toObject","filepath","resolve","__dirname","sha1","fs","outputFileSync","from","to","usedPorts","Port","set","concat","overwrite","shouldServeBundleUi","buildIfChanged","buildIfNoBundle","force","prebundle","currentBundleUiHash","createBundleUiHash","cachedBundleUiHash","readBundleUiHash","isLocalBuildAvailable","currentBuildUiHash","createBuildUiHash","cachedBuildUiHash","console","chalk","cyan","configFile","runtime","aspects","sort","a","b","aspectPath","aspectPathStrings","aspect","runtimePath","getId","aspectIds","bundleUiPathFromBvm","hashFilePath","BUNDLE_UI_HASH_FILENAME","readFileSync","uiPathFromBvm","getAspectDirFromBvm","BundleUiTask","getArtifactDirectory","output","pathExistsSync","hash","stdout","write","platform","publicUrl","provider","cli","loggerMain","proxyGetterSlot","createLogger","StartCmd","UIBuildCmd","MainRuntime","PubsubAspect","CLIAspect","GraphqlAspect","ExpressAspect","ComponentAspect","CacheAspect","LoggerAspect","Slot","withType","addRuntime"],"sources":["ui.main.runtime.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { ComponentType } from 'react';\nimport type { AspectMain } from '@teambit/aspect';\nimport { AspectDefinition, getAspectDirFromBvm } from '@teambit/aspect-loader';\nimport { CacheAspect, CacheMain } from '@teambit/cache';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport type { ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport chalk from 'chalk';\nimport { Slot, SlotRegistry, Harmony } from '@teambit/harmony';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport PubsubAspect, { PubsubMain } from '@teambit/pubsub';\nimport { sha1 } from '@teambit/legacy/dist/utils';\nimport pMapSeries from 'p-map-series';\nimport fs from 'fs-extra';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { join, resolve } from 'path';\nimport { promisify } from 'util';\nimport webpack from 'webpack';\nimport { UiServerStartedEvent } from './events';\nimport { createRoot } from './create-root';\nimport { UnknownUI, UnknownBuildError } from './exceptions';\nimport { StartCmd } from './start.cmd';\nimport { UIBuildCmd } from './ui-build.cmd';\nimport { UIRoot } from './ui-root';\nimport { UIServer } from './ui-server';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport createWebpackConfig from './webpack/webpack.browser.config';\nimport createSsrWebpackConfig from './webpack/webpack.ssr.config';\nimport { StartPlugin, StartPluginOptions } from './start-plugin';\nimport { BundleUiTask, BUNDLE_UI_HASH_FILENAME } from './bundle-ui.task';\n\nexport type UIDeps = [PubsubMain, CLIMain, GraphqlMain, ExpressMain, ComponentMain, CacheMain, LoggerMain, AspectMain];\n\nexport type UIRootRegistry = SlotRegistry<UIRoot>;\n\nexport type PreStart = (preStartOpts: PreStartOpts) => Promise<void>;\n\nexport type PreStartOpts = { skipCompilation?: boolean };\n\nexport type OnStart = () => Promise<undefined | ComponentType<{}>>;\n\nexport type StartPluginSlot = SlotRegistry<StartPlugin>;\n\nexport type PublicDirOverwrite = (uiRoot: UIRoot) => Promise<string | undefined>;\n\nexport type BuildMethodOverwrite = (name: string, uiRoot: UIRoot, rebuild?: boolean) => Promise<string>;\n\nexport type PreStartSlot = SlotRegistry<PreStart>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\n\nexport type PublicDirOverwriteSlot = SlotRegistry<PublicDirOverwrite>;\n\nexport type BuildMethodOverwriteSlot = SlotRegistry<BuildMethodOverwrite>;\n\nexport type UIConfig = {\n /**\n * port for the UI root to use.\n */\n port?: number;\n\n /**\n * port range for the UI root to use.\n */\n portRange: [number, number];\n\n /**\n * host for the UI root\n */\n host: string;\n\n /**\n * directory in workspace to use for public assets.\n * always relative to the workspace root directory.\n */\n publicDir: string;\n\n /** the url to display when server is listening. Note that bit does not provide proxying to this url */\n publicUrl?: string;\n};\n\nexport type RuntimeOptions = {\n /**\n * determine whether to initiate on verbose mode.\n */\n verbose?: boolean;\n\n /**\n * name of the UI root to load.\n */\n uiRootName?: string;\n\n /**\n * component selector pattern to load.\n */\n pattern?: string;\n\n /**\n * determine whether to start a dev server (defaults to false).\n */\n dev?: boolean;\n\n /**\n * port of the config.\n */\n port?: number;\n\n /**\n * determine whether to rebuild the UI before start.\n */\n rebuild?: boolean;\n\n /**\n * skip build the UI before start\n */\n skipUiBuild?: boolean;\n};\n\nexport class UiMain {\n private _isBundleUiServed = false;\n\n constructor(\n /**\n * Pubsub extension.\n */\n private pubsub: PubsubMain,\n\n private config: UIConfig,\n\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * slot registry of ui roots.\n */\n private uiRootSlot: UIRootRegistry,\n\n /**\n * express extension.\n */\n private express: ExpressMain,\n\n /**\n * pre-start slot\n */\n private preStartSlot: PreStartSlot,\n\n /**\n * on start slot\n */\n private onStartSlot: OnStartSlot,\n\n /**\n * Overwrite the public dir Slot\n */\n private publicDirOverwriteSlot: PublicDirOverwriteSlot,\n\n /**\n * Overwrite the build ui method\n */\n private buildMethodOverwriteSlot: BuildMethodOverwriteSlot,\n\n /**\n * component extension.\n */\n private componentExtension: ComponentMain,\n\n /**\n * ui logger instance.\n */\n private cache: CacheMain,\n\n /**\n * ui logger instance.\n */\n private logger: Logger,\n\n private harmony: Harmony,\n\n private startPluginSlot: StartPluginSlot\n ) {}\n\n async publicDir(uiRoot: UIRoot) {\n const overwriteFn = this.getOverwritePublic();\n if (overwriteFn) {\n const hasDir = await overwriteFn(uiRoot);\n if (hasDir) return hasDir;\n }\n\n if (this.config.publicDir.startsWith('/')) {\n return this.config.publicDir.substring(1);\n }\n\n return this.config.publicDir;\n }\n\n private getUiByName(name: string) {\n const roots = this.uiRootSlot.toArray();\n const [, root] =\n roots.find(([, uiRoot]) => {\n return uiRoot.name === name;\n }) || [];\n\n return root;\n }\n\n /**\n * create a build of the given UI root.\n */\n async build(uiRootName?: string, customOutputPath?: string): Promise<webpack.MultiStats | undefined> {\n // TODO: change to MultiStats from webpack once they export it in their types\n this.logger.debug(`build, uiRootName: \"${uiRootName}\"`);\n const maybeUiRoot = this.getUi(uiRootName);\n\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n const [name, uiRoot] = maybeUiRoot;\n\n // TODO: @uri refactor all dev server related code to use the bundler extension instead.\n const ssr = uiRoot.buildOptions?.ssr || false;\n const mainEntry = await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name);\n const outputPath = customOutputPath || uiRoot.path;\n\n const browserConfig = createWebpackConfig(outputPath, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(outputPath, [mainEntry], await this.publicDir(uiRoot));\n\n const config = [browserConfig, ssrConfig].filter((x) => !!x) as webpack.Configuration[];\n const compiler = webpack(config);\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" running webpack`);\n const compilerRun = promisify(compiler.run.bind(compiler));\n const results = await compilerRun();\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" completed webpack`);\n if (!results) throw new UnknownBuildError();\n if (results?.hasErrors()) {\n this.clearConsole();\n throw new Error(results?.toString());\n }\n\n return results;\n }\n\n registerStartPlugin(startPlugin: StartPlugin) {\n this.startPluginSlot.register(startPlugin);\n return this;\n }\n\n private async initiatePlugins(options: StartPluginOptions) {\n const plugins = this.startPluginSlot.values();\n await pMapSeries(plugins, (plugin) => plugin.initiate(options));\n return plugins;\n }\n\n /**\n * create a Bit UI runtime.\n */\n async createRuntime({ uiRootName, pattern, dev, port, rebuild, verbose, skipUiBuild }: RuntimeOptions) {\n const maybeUiRoot = this.getUi(uiRootName);\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n\n const [name, uiRoot] = maybeUiRoot;\n\n const plugins = await this.initiatePlugins({\n verbose,\n pattern,\n });\n\n if (this.componentExtension.isHost(name)) this.componentExtension.setHostPriority(name);\n\n const publicDir = await this.publicDir(uiRoot);\n const uiServer = UIServer.create({\n express: this.express,\n graphql: this.graphql,\n uiRoot,\n uiRootExtension: name,\n ui: this,\n logger: this.logger,\n publicDir,\n startPlugins: plugins,\n });\n\n // Adding signal listeners to make sure we immediately close the process on sigint / sigterm (otherwise webpack dev server closing will take time)\n this.addSignalListener();\n if (dev) {\n await uiServer.dev({ portRange: port || this.config.portRange });\n } else {\n if (!skipUiBuild) await this.buildUI(name, uiRoot, rebuild);\n const bundleUiPublicPath = join(this.getBundleUiPath(), publicDir);\n const bundleUiRoot = this._isBundleUiServed && existsSync(bundleUiPublicPath) ? bundleUiPublicPath : undefined;\n await uiServer.start({ portRange: port || this.config.portRange, bundleUiRoot });\n }\n\n this.pubsub.pub(UIAspect.id, this.createUiServerStartedEvent(this.config.host, uiServer.port, uiRoot));\n\n return uiServer;\n }\n\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\n }\n\n async getPort(port?: number): Promise<number> {\n if (port) return port;\n return this.config.port || this.selectPort();\n }\n\n /**\n * Events\n */\n private createUiServerStartedEvent = (targetHost, targetPort, uiRoot) => {\n return new UiServerStartedEvent(Date.now(), targetHost, targetPort, uiRoot);\n };\n\n /**\n * pre-start events are triggered and *completed* before the webserver started.\n * (the promise is awaited)\n */\n registerPreStart(preStartFn: PreStart) {\n this.preStartSlot.register(preStartFn);\n }\n\n /**\n * bind to ui server start event.\n */\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerBuildUIOverwrite(fn: BuildMethodOverwrite) {\n this.buildMethodOverwriteSlot.register(fn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerPublicDirOverwrite(fn: PublicDirOverwrite) {\n this.publicDirOverwriteSlot.register(fn);\n return this;\n }\n\n private getOverwriteBuildFn() {\n const buildMethodOverwrite = this.buildMethodOverwriteSlot.toArray();\n if (buildMethodOverwrite[0]) {\n const [, fn] = buildMethodOverwrite[0];\n return fn;\n }\n return undefined;\n }\n\n private getOverwritePublic() {\n const overwritePublic = this.publicDirOverwriteSlot.toArray();\n if (overwritePublic[0]) {\n const [, fn] = overwritePublic[0];\n return fn;\n }\n return undefined;\n }\n\n async invokePreStart(preStartOpts: PreStartOpts): Promise<void> {\n const onPreStartFuncs = this.preStartSlot.values();\n await pMapSeries(onPreStartFuncs, async (fn) => fn(preStartOpts));\n }\n\n async invokeOnStart(): Promise<ComponentType[]> {\n const onStartFuncs = this.onStartSlot.values();\n const startPlugins = await pMapSeries(onStartFuncs, async (fn) => fn());\n return startPlugins.filter((plugin) => !!plugin) as ComponentType[];\n }\n\n /**\n * register a UI slot.\n */\n registerUiRoot(uiRoot: UIRoot) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n /**\n * get a UI runtime instance.\n */\n getUi(uiRootName?: string): [string, UIRoot] | undefined {\n if (uiRootName) {\n const root = this.uiRootSlot.get(uiRootName) || this.getUiByName(uiRootName);\n if (!root) return undefined;\n return [uiRootName, root];\n }\n const uis = this.uiRootSlot.toArray();\n if (uis.length === 1) return uis[0];\n return uis.find(([, root]) => root.priority);\n }\n\n isHostAvailable(): boolean {\n return Boolean(this.componentExtension.getHost());\n }\n\n getUiName(uiRootName?: string): string | undefined {\n const [, ui] = this.getUi(uiRootName) || [];\n if (!ui) return undefined;\n\n return ui.name;\n }\n\n private possibleUis() {\n return this.uiRootSlot.toArray().map(([id]) => id);\n }\n\n createLink(aspectDefs: AspectDefinition[], rootExtensionName: string) {\n return createRoot(aspectDefs, rootExtensionName);\n }\n\n /**\n * generate the root file of the UI runtime.\n */\n async generateRoot(\n aspectDefs: AspectDefinition[],\n rootExtensionName: string,\n runtimeName = UIRuntime.name,\n rootAspect = UIAspect.id,\n config?: object,\n path?: string,\n ignoreVersion?: boolean\n ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n config || this.harmony.config.toObject(),\n ignoreVersion\n );\n const filepath = resolve(join(path || __dirname, `${runtimeName}.root${sha1(contents)}.js`));\n if (fs.existsSync(filepath)) return filepath;\n fs.outputFileSync(filepath, contents);\n return filepath;\n }\n\n private async selectPort() {\n const [from, to] = this.config.portRange;\n const usedPorts = (await this.cache.get<number[]>(`${from}${to}`)) || [];\n const port = await Port.getPort(from, to, usedPorts);\n // this will lock the port for 1 min to avoid race conditions\n await this.cache.set(`${from}${to}`, usedPorts.concat(port), 5000);\n return port;\n }\n\n private async buildUI(name: string, uiRoot: UIRoot, rebuild?: boolean): Promise<string> {\n this.logger.debug(`buildUI, name ${name}`);\n\n const overwrite = this.getOverwriteBuildFn();\n if (overwrite) return overwrite(name, uiRoot, rebuild);\n\n this._isBundleUiServed = await this.shouldServeBundleUi(uiRoot, rebuild);\n await this.buildIfChanged(name, uiRoot, rebuild);\n await this.buildIfNoBundle(name, uiRoot);\n return '';\n }\n\n private async shouldServeBundleUi(uiRoot: UIRoot, force: boolean | undefined): Promise<boolean> {\n if (!uiRoot.buildOptions?.prebundle) {\n return false;\n }\n\n const currentBundleUiHash = await this.createBundleUiHash(uiRoot);\n const cachedBundleUiHash = this.readBundleUiHash();\n const isLocalBuildAvailable = existsSync(join(uiRoot.path, await this.publicDir(uiRoot)));\n\n return currentBundleUiHash === cachedBundleUiHash && !isLocalBuildAvailable && !force;\n }\n\n private async buildIfChanged(name: string, uiRoot: UIRoot, force: boolean | undefined): Promise<boolean> {\n this.logger.debug(`buildIfChanged, name ${name}`);\n\n if (this._isBundleUiServed) {\n this.logger.debug(`buildIfChanged, name ${name}, returned from ui bundle cache`);\n return false;\n }\n\n const currentBuildUiHash = await this.createBuildUiHash(uiRoot);\n const cachedBuildUiHash = await this.cache.get(uiRoot.path);\n if (currentBuildUiHash === cachedBuildUiHash && !force) {\n this.logger.debug(`buildIfChanged, name ${name}, returned from ui build cache`);\n return false;\n }\n\n if (!cachedBuildUiHash) {\n this.logger.console(\n `Building UI assets for '${chalk.cyan(uiRoot.name)}' in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}. The first time we build the UI it may take a few minutes.`\n );\n } else {\n this.logger.console(\n `Rebuilding UI assets for '${chalk.cyan(uiRoot.name)} in target directory: ${chalk.cyan(\n await this.publicDir(uiRoot)\n )}' as ${uiRoot.configFile} has been changed.`\n );\n }\n\n await this.build(name);\n await this.cache.set(uiRoot.path, currentBuildUiHash);\n return true;\n }\n\n private async createBuildUiHash(uiRoot: UIRoot, runtime = 'ui'): Promise<string> {\n const aspects = await uiRoot.resolveAspects(runtime);\n aspects.sort((a, b) => (a.aspectPath > b.aspectPath ? 1 : -1));\n const aspectPathStrings = aspects.map((aspect) => {\n return [aspect.aspectPath, aspect.runtimePath].join('');\n });\n return sha1(aspectPathStrings.join(''));\n }\n\n async createBundleUiHash(uiRoot: UIRoot, runtime = 'ui'): Promise<string> {\n const aspects = await uiRoot.resolveAspects(runtime);\n aspects.sort((a, b) => ((a.getId || a.aspectPath) > (b.getId || b.aspectPath) ? 1 : -1));\n const aspectIds = aspects.map((aspect) => aspect.getId || aspect.aspectPath);\n return sha1(aspectIds.join(''));\n }\n\n private readBundleUiHash() {\n const bundleUiPathFromBvm = this.getBundleUiPath();\n const hashFilePath = join(bundleUiPathFromBvm, BUNDLE_UI_HASH_FILENAME);\n if (existsSync(hashFilePath)) {\n return readFileSync(hashFilePath).toString();\n }\n return '';\n }\n\n private getBundleUiPath() {\n const uiPathFromBvm = getAspectDirFromBvm(UIAspect.id);\n return join(uiPathFromBvm, BundleUiTask.getArtifactDirectory());\n }\n\n private async buildIfNoBundle(name: string, uiRoot: UIRoot): Promise<boolean> {\n if (this._isBundleUiServed) return false;\n\n const config = createWebpackConfig(\n uiRoot.path,\n [await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name)],\n uiRoot.name,\n await this.publicDir(uiRoot)\n );\n if (config.output?.path && fs.pathExistsSync(config.output.path)) return false;\n const hash = await this.createBuildUiHash(uiRoot);\n await this.build(name);\n await this.cache.set(uiRoot.path, hash);\n return true;\n }\n\n clearConsole() {\n process.stdout.write(process.platform === 'win32' ? '\\x1B[2J\\x1B[0f' : '\\x1B[2J\\x1B[3J\\x1B[H');\n }\n\n get publicUrl() {\n return this.config.publicUrl;\n }\n\n static defaultConfig: UIConfig = {\n publicDir: 'public/bit',\n portRange: [3000, 3100],\n host: 'localhost',\n };\n\n static runtime = MainRuntime;\n static dependencies = [\n PubsubAspect,\n CLIAspect,\n GraphqlAspect,\n ExpressAspect,\n ComponentAspect,\n CacheAspect,\n LoggerAspect,\n ];\n\n static slots = [\n Slot.withType<UIRoot>(),\n Slot.withType<PreStart>(),\n Slot.withType<OnStart>(),\n Slot.withType<PublicDirOverwriteSlot>(),\n Slot.withType<BuildMethodOverwriteSlot>(),\n Slot.withType<StartPlugin>(),\n ];\n\n static async provider(\n [pubsub, cli, graphql, express, componentExtension, cache, loggerMain]: UIDeps,\n config,\n [uiRootSlot, preStartSlot, onStartSlot, publicDirOverwriteSlot, buildMethodOverwriteSlot, proxyGetterSlot]: [\n UIRootRegistry,\n PreStartSlot,\n OnStartSlot,\n PublicDirOverwriteSlot,\n BuildMethodOverwriteSlot,\n StartPluginSlot\n ],\n harmony: Harmony\n ) {\n // aspectExtension.registerRuntime(new RuntimeDefinition('ui', []))\n const logger = loggerMain.createLogger(UIAspect.id);\n\n const ui = new UiMain(\n pubsub,\n config,\n graphql,\n uiRootSlot,\n express,\n preStartSlot,\n onStartSlot,\n publicDirOverwriteSlot,\n buildMethodOverwriteSlot,\n componentExtension,\n cache,\n logger,\n harmony,\n proxyGetterSlot\n );\n\n cli.register(new StartCmd(ui, logger), new UIBuildCmd(ui));\n\n return ui;\n }\n}\n\nUIAspect.addRuntime(UiMain);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/ui",
3
- "version": "0.0.1050",
3
+ "version": "0.0.1052",
4
4
  "homepage": "https://bit.cloud/teambit/ui-foundation/ui",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.ui-foundation",
8
8
  "name": "ui",
9
- "version": "0.0.1050"
9
+ "version": "0.0.1052"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -53,28 +53,28 @@
53
53
  "@teambit/design.theme.icons-font": "2.0.26",
54
54
  "@teambit/design.themes.theme-toggler": "0.1.3",
55
55
  "@teambit/design.ui.tooltip": "0.0.361",
56
- "@teambit/builder": "0.0.1050",
57
- "@teambit/isolator": "0.0.1050",
58
- "@teambit/logger": "0.0.799",
59
- "@teambit/aspect-loader": "0.0.1050",
56
+ "@teambit/builder": "0.0.1052",
57
+ "@teambit/isolator": "0.0.1052",
58
+ "@teambit/logger": "0.0.801",
59
+ "@teambit/aspect-loader": "0.0.1052",
60
60
  "@teambit/toolbox.path.to-windows-compatible-path": "0.0.490",
61
61
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.500",
62
62
  "@teambit/bit-error": "0.0.402",
63
- "@teambit/cli": "0.0.706",
63
+ "@teambit/cli": "0.0.708",
64
64
  "@teambit/ui-foundation.cli.ui-server-console": "0.0.499",
65
- "@teambit/bundler": "0.0.1050",
66
- "@teambit/component": "0.0.1050",
67
- "@teambit/express": "0.0.804",
68
- "@teambit/graphql": "0.0.1050",
65
+ "@teambit/bundler": "0.0.1052",
66
+ "@teambit/component": "0.0.1052",
67
+ "@teambit/express": "0.0.806",
68
+ "@teambit/graphql": "0.0.1052",
69
69
  "@teambit/toolbox.network.get-port": "0.0.121",
70
- "@teambit/aspect": "0.0.1050",
71
- "@teambit/cache": "0.0.799",
72
- "@teambit/pubsub": "0.0.1050",
73
- "@teambit/react-router": "0.0.1050",
70
+ "@teambit/aspect": "0.0.1052",
71
+ "@teambit/cache": "0.0.801",
72
+ "@teambit/pubsub": "0.0.1052",
73
+ "@teambit/react-router": "0.0.1052",
74
74
  "@teambit/ui-foundation.ui.global-loader": "0.0.497",
75
75
  "@teambit/webpack.modules.generate-style-loaders": "0.0.110",
76
76
  "@teambit/webpack.modules.style-regexps": "0.0.139",
77
- "@teambit/webpack": "0.0.1050"
77
+ "@teambit/webpack": "0.0.1052"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@types/lodash": "4.14.165",
@@ -95,7 +95,7 @@
95
95
  "peerDependencies": {
96
96
  "@apollo/client": "^3.6.0",
97
97
  "react-router-dom": "^6.0.0",
98
- "@teambit/legacy": "1.0.486",
98
+ "@teambit/legacy": "1.0.488",
99
99
  "react": "^16.8.0 || ^17.0.0",
100
100
  "react-dom": "^16.8.0 || ^17.0.0"
101
101
  },
package/ui-root.tsx CHANGED
@@ -24,6 +24,7 @@ export interface UIRoot extends ComponentDir {
24
24
  buildOptions?: {
25
25
  ssr?: boolean;
26
26
  launchBrowserOnStart?: boolean;
27
+ prebundle?: boolean;
27
28
  };
28
29
 
29
30
  /**
Binary file