@teambit/ui 0.0.880 → 0.0.882

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/create-root.js +2 -26
  2. package/dist/create-root.js.map +1 -1
  3. package/dist/events/index.js +0 -2
  4. package/dist/events/index.js.map +1 -1
  5. package/dist/events/ui-server-started-event.js +1 -12
  6. package/dist/events/ui-server-started-event.js.map +1 -1
  7. package/dist/exceptions/index.js +0 -6
  8. package/dist/exceptions/index.js.map +1 -1
  9. package/dist/exceptions/unknown-build-error.js +0 -3
  10. package/dist/exceptions/unknown-build-error.js.map +1 -1
  11. package/dist/exceptions/unknown-ui.js +0 -5
  12. package/dist/exceptions/unknown-ui.js.map +1 -1
  13. package/dist/index.js +0 -14
  14. package/dist/index.js.map +1 -1
  15. package/dist/ssr-middleware/index.js +0 -3
  16. package/dist/ssr-middleware/index.js.map +1 -1
  17. package/dist/ssr-middleware/ssr-middleware.js +0 -39
  18. package/dist/ssr-middleware/ssr-middleware.js.map +1 -1
  19. package/dist/start.cmd.js +8 -30
  20. package/dist/start.cmd.js.map +1 -1
  21. package/dist/ui/client-context.js +1 -27
  22. package/dist/ui/client-context.js.map +1 -1
  23. package/dist/ui-build.cmd.js +0 -13
  24. package/dist/ui-build.cmd.js.map +1 -1
  25. package/dist/ui-server.js +22 -83
  26. package/dist/ui-server.js.map +1 -1
  27. package/dist/ui.aspect.js +0 -6
  28. package/dist/ui.aspect.js.map +1 -1
  29. package/dist/ui.cli.rt.js +1 -0
  30. package/dist/ui.cli.rt.js.map +1 -1
  31. package/dist/ui.composition.js +0 -6
  32. package/dist/ui.composition.js.map +1 -1
  33. package/dist/ui.main.runtime.js +15 -150
  34. package/dist/ui.main.runtime.js.map +1 -1
  35. package/dist/ui.runtime.js +1 -0
  36. package/dist/ui.runtime.js.map +1 -1
  37. package/dist/ui.ui.runtime.js +9 -49
  38. package/dist/ui.ui.runtime.js.map +1 -1
  39. package/dist/webpack/html.js +0 -1
  40. package/dist/webpack/html.js.map +1 -1
  41. package/dist/webpack/postcss.config.js +7 -3
  42. package/dist/webpack/postcss.config.js.map +1 -1
  43. package/dist/webpack/webpack.base.config.js +45 -65
  44. package/dist/webpack/webpack.base.config.js.map +1 -1
  45. package/dist/webpack/webpack.browser.config.js +3 -31
  46. package/dist/webpack/webpack.browser.config.js.map +1 -1
  47. package/dist/webpack/webpack.dev.config.js +25 -63
  48. package/dist/webpack/webpack.dev.config.js.map +1 -1
  49. package/dist/webpack/webpack.ssr.config.js +5 -14
  50. package/dist/webpack/webpack.ssr.config.js.map +1 -1
  51. package/package-tar/teambit-ui-0.0.882.tgz +0 -0
  52. package/package.json +15 -15
  53. package/{preview-1666312873430.js → preview-1666496165706.js} +2 -2
  54. package/package-tar/teambit-ui-0.0.880.tgz +0 -0
@@ -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","debug","maybeUiRoot","getUi","UnknownUI","possibleUis","ssr","buildOptions","mainEntry","generateRoot","resolveAspects","UIRuntime","browserConfig","createWebpackConfig","path","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","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","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","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\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): 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\n const browserConfig = createWebpackConfig(uiRoot.path, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(uiRoot.path, [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 }: 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 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 ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n config || this.harmony.config.toObject()\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 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 cli.register(new StartCmd(ui, logger), new UIBuildCmd(ui));\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","debug","maybeUiRoot","getUi","UnknownUI","possibleUis","ssr","buildOptions","mainEntry","generateRoot","resolveAspects","UIRuntime","browserConfig","createWebpackConfig","path","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","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","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","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\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): 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\n const browserConfig = createWebpackConfig(uiRoot.path, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(uiRoot.path, [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 }: 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 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 ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n config || this.harmony.config.toObject()\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 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 cli.register(new StartCmd(ui, logger), new UIBuildCmd(ui));\n return ui;\n }\n}\n\nUIAspect.addRuntime(UiMain);\n"],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  // import { ChangeLogUI } from '../changelog/changelog.ui';
6
6
  // import { ComponentUI } from '../component';
7
7
  // import { CompositionsUI } from '../compositions/compositions.ui';
8
+
8
9
  // /**
9
10
  // * configure all core extensions
10
11
  // * TODO: pass all other extensions from above.
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["ui.runtime.ts"],"sourcesContent":["// import harmony from '@teambit/harmony';\n// import { UIRuntimeExtension } from './ui.ui';\n// import { DocsUI } from '../docs/docs.ui';\n// import { TesterUI } from '../tester/tester.ui';\n// import { ChangeLogUI } from '../changelog/changelog.ui';\n// import { ComponentUI } from '../component';\n// import { CompositionsUI } from '../compositions/compositions.ui';\n\n// /**\n// * configure all core extensions\n// * TODO: pass all other extensions from above.\n// */\n// harmony\n// .run([UIRuntimeExtension, TesterUI, ChangeLogUI, CompositionsUI, DocsUI, ComponentUI])\n// .then(() => {\n// const uiExtension = harmony.get<UIRuntimeExtension>('UIRuntimeExtension');\n// uiExtension.render();\n// })\n// .catch((err) => {\n// throw err;\n// });\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"names":[],"sources":["ui.runtime.ts"],"sourcesContent":["// import harmony from '@teambit/harmony';\n// import { UIRuntimeExtension } from './ui.ui';\n// import { DocsUI } from '../docs/docs.ui';\n// import { TesterUI } from '../tester/tester.ui';\n// import { ChangeLogUI } from '../changelog/changelog.ui';\n// import { ComponentUI } from '../component';\n// import { CompositionsUI } from '../compositions/compositions.ui';\n\n// /**\n// * configure all core extensions\n// * TODO: pass all other extensions from above.\n// */\n// harmony\n// .run([UIRuntimeExtension, TesterUI, ChangeLogUI, CompositionsUI, DocsUI, ComponentUI])\n// .then(() => {\n// const uiExtension = harmony.get<UIRuntimeExtension>('UIRuntimeExtension');\n// uiExtension.render();\n// })\n// .catch((err) => {\n// throw err;\n// });\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA"}
@@ -1,100 +1,70 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.iterator.js");
6
-
7
5
  require("core-js/modules/es.promise.js");
8
-
9
6
  Object.defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
9
  exports.UiUI = void 0;
13
-
14
10
  function _defineProperty2() {
15
11
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
12
  _defineProperty2 = function () {
18
13
  return data;
19
14
  };
20
-
21
15
  return data;
22
16
  }
23
-
24
17
  function _graphql() {
25
18
  const data = require("@teambit/graphql");
26
-
27
19
  _graphql = function () {
28
20
  return data;
29
21
  };
30
-
31
22
  return data;
32
23
  }
33
-
34
24
  function _harmony() {
35
25
  const data = require("@teambit/harmony");
36
-
37
26
  _harmony = function () {
38
27
  return data;
39
28
  };
40
-
41
29
  return data;
42
30
  }
43
-
44
31
  function _reactRouter() {
45
32
  const data = require("@teambit/react-router");
46
-
47
33
  _reactRouter = function () {
48
34
  return data;
49
35
  };
50
-
51
36
  return data;
52
37
  }
53
-
54
38
  function _reactRendering() {
55
39
  const data = require("@teambit/react.rendering.ssr");
56
-
57
40
  _reactRendering = function () {
58
41
  return data;
59
42
  };
60
-
61
43
  return data;
62
44
  }
63
-
64
45
  function _react() {
65
46
  const data = _interopRequireDefault(require("react"));
66
-
67
47
  _react = function () {
68
48
  return data;
69
49
  };
70
-
71
50
  return data;
72
51
  }
73
-
74
52
  function _ui() {
75
53
  const data = require("./ui.aspect");
76
-
77
54
  _ui = function () {
78
55
  return data;
79
56
  };
80
-
81
57
  return data;
82
58
  }
83
-
84
59
  function _clientContext() {
85
60
  const data = require("./ui/client-context");
86
-
87
61
  _clientContext = function () {
88
62
  return data;
89
63
  };
90
-
91
64
  return data;
92
65
  }
93
-
94
66
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
95
-
96
67
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
97
-
98
68
  /**
99
69
  * extension
100
70
  */
@@ -107,10 +77,8 @@ class UiUI {
107
77
  /**
108
78
  * ui root registry.
109
79
  */
110
- uiRootSlot,
111
- /** slot for overlay ui elements */
112
- hudSlot,
113
- /** hooks into the ssr render process */
80
+ uiRootSlot, /** slot for overlay ui elements */
81
+ hudSlot, /** hooks into the ssr render process */
114
82
  renderPluginsSlot) {
115
83
  this.router = router;
116
84
  this.uiRootSlot = uiRootSlot;
@@ -120,9 +88,8 @@ class UiUI {
120
88
  this.hudSlot.register(element);
121
89
  });
122
90
  }
123
- /** render and rehydrate client-side */
124
-
125
91
 
92
+ /** render and rehydrate client-side */
126
93
  async render(rootExtension) {
127
94
  const rootFactory = this.getRoot(rootExtension);
128
95
  if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);
@@ -133,9 +100,8 @@ class UiUI {
133
100
  const reactSsr = new (_reactRendering().BrowserRenderer)(lifecyclePlugins);
134
101
  await reactSsr.render( /*#__PURE__*/_react().default.createElement(_clientContext().ClientContext, null, hudItems, routes));
135
102
  }
136
- /** render dehydrated server-side */
137
-
138
103
 
104
+ /** render dehydrated server-side */
139
105
  async renderSsr(rootExtension, ssrContent) {
140
106
  const rootFactory = this.getRoot(rootExtension);
141
107
  if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);
@@ -147,8 +113,8 @@ class UiUI {
147
113
  const fullHtml = await reactSsr.render( /*#__PURE__*/_react().default.createElement(_clientContext().ClientContext, null, hudItems, routes), ssrContent);
148
114
  return fullHtml;
149
115
  }
150
- /** adds elements to the Heads Up Display */
151
116
 
117
+ /** adds elements to the Heads Up Display */
152
118
 
153
119
  /**
154
120
  * adds global context at the ui root
@@ -159,45 +125,39 @@ class UiUI {
159
125
  reactContext: context
160
126
  });
161
127
  }
162
-
163
128
  registerRoot(uiRoot) {
164
129
  return this.uiRootSlot.register(uiRoot);
165
130
  }
166
-
167
131
  registerRenderHooks(plugin) {
168
132
  return this.renderPluginsSlot.register(plugin);
169
133
  }
170
-
171
134
  getLifecyclePlugins() {
172
135
  const lifecyclePlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {
173
- if (plugin.key) return plugin; // for backward compatibility
136
+ if (plugin.key) return plugin;
174
137
 
138
+ // for backward compatibility
175
139
  return _objectSpread(_objectSpread({}, plugin), {}, {
176
140
  key
177
141
  });
178
- }); // react-router should register its plugin, when we can reverse it's dependency to depend on Ui
142
+ });
179
143
 
144
+ // react-router should register its plugin, when we can reverse it's dependency to depend on Ui
180
145
  lifecyclePlugins.unshift(this.router.renderPlugin);
181
146
  return lifecyclePlugins;
182
147
  }
183
-
184
148
  getRoot(rootExtension) {
185
149
  return this.uiRootSlot.get(rootExtension);
186
150
  }
187
-
188
151
  static async provider([GraphqlUi, router], config, [uiRootSlot, hudSlot, renderLifecycleSlot]) {
189
152
  const uiUi = new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot);
190
153
  if (GraphqlUi) uiUi.registerRenderHooks(GraphqlUi.renderPlugins);
191
154
  return uiUi;
192
155
  }
193
-
194
156
  }
195
-
196
157
  exports.UiUI = UiUI;
197
158
  (0, _defineProperty2().default)(UiUI, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
198
159
  (0, _defineProperty2().default)(UiUI, "dependencies", [_graphql().GraphqlAspect, _reactRouter().ReactRouterAspect]);
199
160
  (0, _defineProperty2().default)(UiUI, "runtime", _ui().UIRuntime);
200
-
201
161
  _ui().UIAspect.addRuntime(UiUI);
202
162
 
203
163
  //# sourceMappingURL=ui.ui.runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["UiUI","constructor","router","uiRootSlot","hudSlot","renderPluginsSlot","element","register","render","rootExtension","rootFactory","getRoot","Error","uiRoot","routes","renderRoutes","hudItems","values","lifecyclePlugins","getLifecyclePlugins","reactSsr","BrowserRenderer","renderSsr","ssrContent","ServerRenderer","fullHtml","registerContext","context","reactContext","registerRoot","registerRenderHooks","plugin","toArray","map","key","unshift","renderPlugin","get","provider","GraphqlUi","config","renderLifecycleSlot","uiUi","renderPlugins","Slot","withType","GraphqlAspect","ReactRouterAspect","UIRuntime","UIAspect","addRuntime"],"sources":["ui.ui.runtime.tsx"],"sourcesContent":["import type { GraphqlUI } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport type { ReactRouterUI } from '@teambit/react-router';\nimport { ReactRouterAspect } from '@teambit/react-router';\nimport { ServerRenderer, BrowserRenderer } from '@teambit/react.rendering.ssr';\nimport type { SsrSession, RenderPlugin, ContextProps } from '@teambit/react.rendering.ssr';\n\nimport React, { ReactNode, ComponentType } from 'react';\n\nimport { UIRootFactory } from './ui-root.ui';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport { ClientContext } from './ui/client-context';\n\ntype HudSlot = SlotRegistry<ReactNode>;\ntype RenderPluginsSlot = SlotRegistry<RenderPlugin<any, any>>;\ntype UIRootRegistry = SlotRegistry<UIRootFactory>;\n\n/**\n * extension\n */\nexport class UiUI {\n constructor(\n /**\n * react-router extension.\n */\n private router: ReactRouterUI,\n /**\n * ui root registry.\n */\n private uiRootSlot: UIRootRegistry,\n /** slot for overlay ui elements */\n private hudSlot: HudSlot,\n /** hooks into the ssr render process */\n private renderPluginsSlot: RenderPluginsSlot\n ) {}\n\n /** render and rehydrate client-side */\n async render(rootExtension: string): Promise<void> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new BrowserRenderer(lifecyclePlugins);\n await reactSsr.render(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>\n );\n }\n\n /** render dehydrated server-side */\n async renderSsr(rootExtension: string, ssrContent: SsrSession): Promise<string> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new ServerRenderer(lifecyclePlugins);\n const fullHtml = await reactSsr.render(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>,\n ssrContent\n );\n\n return fullHtml;\n }\n\n /** adds elements to the Heads Up Display */\n registerHudItem = (element: ReactNode) => {\n this.hudSlot.register(element);\n };\n\n /**\n * adds global context at the ui root\n * @deprecated replace with `.registerRenderHooks({ reactContext })`.\n */\n registerContext<T>(context: ComponentType<ContextProps<T>>) {\n this.renderPluginsSlot.register({ reactContext: context });\n }\n\n registerRoot(uiRoot: UIRootFactory) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n registerRenderHooks<T, Y>(plugin: RenderPlugin<T, Y>) {\n return this.renderPluginsSlot.register(plugin);\n }\n\n private getLifecyclePlugins() {\n const lifecyclePlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {\n if (plugin.key) return plugin;\n\n // for backward compatibility\n return { ...plugin, key };\n });\n\n // react-router should register its plugin, when we can reverse it's dependency to depend on Ui\n lifecyclePlugins.unshift(this.router.renderPlugin);\n\n return lifecyclePlugins;\n }\n\n private getRoot(rootExtension: string) {\n return this.uiRootSlot.get(rootExtension);\n }\n\n static slots = [Slot.withType<UIRootFactory>(), Slot.withType<ReactNode>(), Slot.withType<RenderPlugin>()];\n\n static dependencies = [GraphqlAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static async provider(\n [GraphqlUi, router]: [GraphqlUI, ReactRouterUI],\n config,\n [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]\n ) {\n const uiUi = new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot);\n\n if (GraphqlUi) uiUi.registerRenderHooks(GraphqlUi.renderPlugins);\n\n return uiUi;\n }\n}\n\nUIAspect.addRuntime(UiUI);\n"],"mappings":"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"}
1
+ {"version":3,"names":["UiUI","constructor","router","uiRootSlot","hudSlot","renderPluginsSlot","element","register","render","rootExtension","rootFactory","getRoot","Error","uiRoot","routes","renderRoutes","hudItems","values","lifecyclePlugins","getLifecyclePlugins","reactSsr","BrowserRenderer","renderSsr","ssrContent","ServerRenderer","fullHtml","registerContext","context","reactContext","registerRoot","registerRenderHooks","plugin","toArray","map","key","unshift","renderPlugin","get","provider","GraphqlUi","config","renderLifecycleSlot","uiUi","renderPlugins","Slot","withType","GraphqlAspect","ReactRouterAspect","UIRuntime","UIAspect","addRuntime"],"sources":["ui.ui.runtime.tsx"],"sourcesContent":["import type { GraphqlUI } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport type { ReactRouterUI } from '@teambit/react-router';\nimport { ReactRouterAspect } from '@teambit/react-router';\nimport { ServerRenderer, BrowserRenderer } from '@teambit/react.rendering.ssr';\nimport type { SsrSession, RenderPlugin, ContextProps } from '@teambit/react.rendering.ssr';\n\nimport React, { ReactNode, ComponentType } from 'react';\n\nimport { UIRootFactory } from './ui-root.ui';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport { ClientContext } from './ui/client-context';\n\ntype HudSlot = SlotRegistry<ReactNode>;\ntype RenderPluginsSlot = SlotRegistry<RenderPlugin<any, any>>;\ntype UIRootRegistry = SlotRegistry<UIRootFactory>;\n\n/**\n * extension\n */\nexport class UiUI {\n constructor(\n /**\n * react-router extension.\n */\n private router: ReactRouterUI,\n /**\n * ui root registry.\n */\n private uiRootSlot: UIRootRegistry,\n /** slot for overlay ui elements */\n private hudSlot: HudSlot,\n /** hooks into the ssr render process */\n private renderPluginsSlot: RenderPluginsSlot\n ) {}\n\n /** render and rehydrate client-side */\n async render(rootExtension: string): Promise<void> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new BrowserRenderer(lifecyclePlugins);\n await reactSsr.render(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>\n );\n }\n\n /** render dehydrated server-side */\n async renderSsr(rootExtension: string, ssrContent: SsrSession): Promise<string> {\n const rootFactory = this.getRoot(rootExtension);\n if (!rootFactory) throw new Error(`root: ${rootExtension} was not found`);\n\n const uiRoot = rootFactory();\n const routes = this.router.renderRoutes(uiRoot.routes);\n const hudItems = this.hudSlot.values();\n const lifecyclePlugins = this.getLifecyclePlugins();\n\n const reactSsr = new ServerRenderer(lifecyclePlugins);\n const fullHtml = await reactSsr.render(\n <ClientContext>\n {hudItems}\n {routes}\n </ClientContext>,\n ssrContent\n );\n\n return fullHtml;\n }\n\n /** adds elements to the Heads Up Display */\n registerHudItem = (element: ReactNode) => {\n this.hudSlot.register(element);\n };\n\n /**\n * adds global context at the ui root\n * @deprecated replace with `.registerRenderHooks({ reactContext })`.\n */\n registerContext<T>(context: ComponentType<ContextProps<T>>) {\n this.renderPluginsSlot.register({ reactContext: context });\n }\n\n registerRoot(uiRoot: UIRootFactory) {\n return this.uiRootSlot.register(uiRoot);\n }\n\n registerRenderHooks<T, Y>(plugin: RenderPlugin<T, Y>) {\n return this.renderPluginsSlot.register(plugin);\n }\n\n private getLifecyclePlugins() {\n const lifecyclePlugins = this.renderPluginsSlot.toArray().map(([key, plugin]) => {\n if (plugin.key) return plugin;\n\n // for backward compatibility\n return { ...plugin, key };\n });\n\n // react-router should register its plugin, when we can reverse it's dependency to depend on Ui\n lifecyclePlugins.unshift(this.router.renderPlugin);\n\n return lifecyclePlugins;\n }\n\n private getRoot(rootExtension: string) {\n return this.uiRootSlot.get(rootExtension);\n }\n\n static slots = [Slot.withType<UIRootFactory>(), Slot.withType<ReactNode>(), Slot.withType<RenderPlugin>()];\n\n static dependencies = [GraphqlAspect, ReactRouterAspect];\n\n static runtime = UIRuntime;\n\n static async provider(\n [GraphqlUi, router]: [GraphqlUI, ReactRouterUI],\n config,\n [uiRootSlot, hudSlot, renderLifecycleSlot]: [UIRootRegistry, HudSlot, RenderPluginsSlot]\n ) {\n const uiUi = new UiUI(router, uiRootSlot, hudSlot, renderLifecycleSlot);\n\n if (GraphqlUi) uiUi.registerRenderHooks(GraphqlUi.renderPlugins);\n\n return uiUi;\n }\n}\n\nUIAspect.addRuntime(UiUI);\n"],"mappings":"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"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.html = html;
7
-
8
7
  /** fallback html template for the main UI, in case ssr is not active */
9
8
  function html(title, withDevTools) {
10
9
  return () => `
@@ -1 +1 @@
1
- {"version":3,"names":["html","title","withDevTools"],"sources":["html.ts"],"sourcesContent":["/** fallback html template for the main UI, in case ssr is not active */\nexport function html(title: string, withDevTools?: boolean) {\n return () => `\n <!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>${title}</title>\n <script>\n // Allow to use react dev-tools inside the examples\n ${\n withDevTools\n ? ''\n : 'try { window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__; } catch {}'\n }\n </script>\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n </html> \n `;\n}\n"],"mappings":";;;;;;;AAAA;AACO,SAASA,IAAT,CAAcC,KAAd,EAA6BC,YAA7B,EAAqD;EAC1D,OAAO,MAAO;AAChB;AACA;AACA;AACA;AACA;AACA,eAAeD,KAAM;AACrB;AACA;AACA,QACQC,YAAY,GACR,EADQ,GAER,wGACL;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GApBE;AAqBD"}
1
+ {"version":3,"names":["html","title","withDevTools"],"sources":["html.ts"],"sourcesContent":["/** fallback html template for the main UI, in case ssr is not active */\nexport function html(title: string, withDevTools?: boolean) {\n return () => `\n <!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>${title}</title>\n <script>\n // Allow to use react dev-tools inside the examples\n ${\n withDevTools\n ? ''\n : 'try { window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__; } catch {}'\n }\n </script>\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n </html> \n `;\n}\n"],"mappings":";;;;;;AAAA;AACO,SAASA,IAAI,CAACC,KAAa,EAAEC,YAAsB,EAAE;EAC1D,OAAO,MAAO;AAChB;AACA;AACA;AACA;AACA;AACA,eAAeD,KAAM;AACrB;AACA;AACA,QACQC,YAAY,GACR,EAAE,GACF,wGACL;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH"}
@@ -5,18 +5,22 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.postCssConfig = void 0;
7
7
  // import postcssFlexbugsFixes from 'postcss-flexbugs-fixes';
8
+
8
9
  const postCssConfig = {
9
10
  // Necessary for external CSS imports to work
10
11
  // https://github.com/facebook/create-react-app/issues/2677
11
12
  ident: 'postcss',
12
- plugins: [// eslint-disable-next-line global-require
13
- require.resolve('postcss-flexbugs-fixes'), // eslint-disable-next-line global-require
13
+ plugins: [
14
+ // eslint-disable-next-line global-require
15
+ require.resolve('postcss-flexbugs-fixes'),
16
+ // eslint-disable-next-line global-require
14
17
  require('postcss-preset-env')({
15
18
  autoprefixer: {
16
19
  flexbox: 'no-2009'
17
20
  },
18
21
  stage: 3
19
- }), // Adds PostCSS Normalize as the reset css with default options,
22
+ }),
23
+ // Adds PostCSS Normalize as the reset css with default options,
20
24
  // so that it honors browserslist config in package.json
21
25
  // which in turn let's users customize the target behavior as per their needs.
22
26
  require.resolve('postcss-normalize')]
@@ -1 +1 @@
1
- {"version":3,"names":["postCssConfig","ident","plugins","require","resolve","autoprefixer","flexbox","stage"],"sources":["postcss.config.ts"],"sourcesContent":["// import postcssFlexbugsFixes from 'postcss-flexbugs-fixes';\n\nexport const postCssConfig = {\n // Necessary for external CSS imports to work\n // https://github.com/facebook/create-react-app/issues/2677\n ident: 'postcss',\n plugins: [\n // eslint-disable-next-line global-require\n require.resolve('postcss-flexbugs-fixes'),\n // eslint-disable-next-line global-require\n require('postcss-preset-env')({\n autoprefixer: {\n flexbox: 'no-2009',\n },\n stage: 3,\n }),\n // Adds PostCSS Normalize as the reset css with default options,\n // so that it honors browserslist config in package.json\n // which in turn let's users customize the target behavior as per their needs.\n require.resolve('postcss-normalize'),\n ],\n};\n"],"mappings":";;;;;;AAAA;AAEO,MAAMA,aAAa,GAAG;EAC3B;EACA;EACAC,KAAK,EAAE,SAHoB;EAI3BC,OAAO,EAAE,CACP;EACAC,OAAO,CAACC,OAAR,CAAgB,wBAAhB,CAFO,EAGP;EACAD,OAAO,CAAC,oBAAD,CAAP,CAA8B;IAC5BE,YAAY,EAAE;MACZC,OAAO,EAAE;IADG,CADc;IAI5BC,KAAK,EAAE;EAJqB,CAA9B,CAJO,EAUP;EACA;EACA;EACAJ,OAAO,CAACC,OAAR,CAAgB,mBAAhB,CAbO;AAJkB,CAAtB"}
1
+ {"version":3,"names":["postCssConfig","ident","plugins","require","resolve","autoprefixer","flexbox","stage"],"sources":["postcss.config.ts"],"sourcesContent":["// import postcssFlexbugsFixes from 'postcss-flexbugs-fixes';\n\nexport const postCssConfig = {\n // Necessary for external CSS imports to work\n // https://github.com/facebook/create-react-app/issues/2677\n ident: 'postcss',\n plugins: [\n // eslint-disable-next-line global-require\n require.resolve('postcss-flexbugs-fixes'),\n // eslint-disable-next-line global-require\n require('postcss-preset-env')({\n autoprefixer: {\n flexbox: 'no-2009',\n },\n stage: 3,\n }),\n // Adds PostCSS Normalize as the reset css with default options,\n // so that it honors browserslist config in package.json\n // which in turn let's users customize the target behavior as per their needs.\n require.resolve('postcss-normalize'),\n ],\n};\n"],"mappings":";;;;;;AAAA;;AAEO,MAAMA,aAAa,GAAG;EAC3B;EACA;EACAC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE;EACP;EACAC,OAAO,CAACC,OAAO,CAAC,wBAAwB,CAAC;EACzC;EACAD,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5BE,YAAY,EAAE;MACZC,OAAO,EAAE;IACX,CAAC;IACDC,KAAK,EAAE;EACT,CAAC,CAAC;EACF;EACA;EACA;EACAJ,OAAO,CAACC,OAAO,CAAC,mBAAmB,CAAC;AAExC,CAAC;AAAC"}