@teambit/ui 0.0.1047 → 0.0.1049

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 (31) hide show
  1. package/artifacts/ui-bundle/.hash +1 -0
  2. package/artifacts/ui-bundle/public/bit/asset-manifest.json +17 -0
  3. package/artifacts/ui-bundle/public/bit/index.html +1 -0
  4. package/artifacts/ui-bundle/public/bit/service-worker.js +1 -0
  5. package/artifacts/ui-bundle/public/bit/static/css/993.01dc88ad.css +1 -0
  6. package/artifacts/ui-bundle/public/bit/static/js/993.627d063a.js +683 -0
  7. package/artifacts/ui-bundle/public/bit/static/js/993.627d063a.js.LICENSE.txt +237 -0
  8. package/artifacts/ui-bundle/public/bit/static/js/main.93c00764.js +1 -0
  9. package/artifacts/ui-bundle/public/bit/static/js/runtime-main.ccd79175.js +1 -0
  10. package/artifacts/ui-bundle/public/bit/workbox-67feafc0.js +1 -0
  11. package/dist/bundle-ui.task.d.ts +22 -0
  12. package/dist/bundle-ui.task.js +97 -0
  13. package/dist/bundle-ui.task.js.map +1 -0
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.js +28 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/{preview-1683084947241.js → preview-1683430915272.js} +2 -2
  18. package/dist/ui.main.runtime.d.ts +2 -1
  19. package/dist/ui.main.runtime.js +10 -3
  20. package/dist/ui.main.runtime.js.map +1 -1
  21. package/dist/webpack/webpack.base.config.d.ts +1 -1
  22. package/dist/webpack/webpack.base.config.js +2 -2
  23. package/dist/webpack/webpack.base.config.js.map +1 -1
  24. package/dist/webpack/webpack.browser.config.d.ts +1 -1
  25. package/dist/webpack/webpack.browser.config.js +5 -5
  26. package/dist/webpack/webpack.browser.config.js.map +1 -1
  27. package/package-tar/teambit-ui-0.0.1049.tgz +0 -0
  28. package/package.json +17 -15
  29. package/webpack/webpack.base.config.ts +2 -2
  30. package/webpack/webpack.browser.config.ts +5 -5
  31. package/package-tar/teambit-ui-0.0.1047.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","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","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): 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, 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 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","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,2 +1,2 @@
1
1
  import { Configuration } from 'webpack';
2
- export default function createWebpackConfig(workspaceDir: string, entryFiles: string[], publicDir?: string): Configuration;
2
+ export default function createWebpackConfig(outputDir: string, entryFiles: string[], publicDir?: string): Configuration;
@@ -111,7 +111,7 @@ const isEnvProduction = true;
111
111
  // This is the production and development configuration.
112
112
  // It is focused on developer experience, fast rebuilds, and a minimal bundle.
113
113
  // eslint-disable-next-line complexity
114
- function createWebpackConfig(workspaceDir, entryFiles, publicDir = 'public') {
114
+ function createWebpackConfig(outputDir, entryFiles, publicDir = 'public') {
115
115
  // Variable used for enabling profiling in Production
116
116
  // passed into alias object. Uses a flag if passed into the build command
117
117
  const isEnvProductionProfile = process.argv.includes('--profile');
@@ -133,7 +133,7 @@ function createWebpackConfig(workspaceDir, entryFiles, publicDir = 'public') {
133
133
  },
134
134
  output: {
135
135
  // The build folder.
136
- path: _path().default.join(workspaceDir, publicDir),
136
+ path: _path().default.join(outputDir, publicDir),
137
137
  // default value
138
138
 
139
139
  filename: 'static/js/[name].[contenthash:8].js',
@@ -1 +1 @@
1
- {"version":3,"names":["baseStyleLoadersOptions","injectingLoader","MiniCssExtractPlugin","loader","cssLoaderPath","require","resolve","postCssLoaderPath","postCssConfig","moduleFileExtensions","shouldUseSourceMap","process","env","GENERATE_SOURCEMAP","imageInlineSizeLimit","parseInt","IMAGE_INLINE_SIZE_LIMIT","isEnvProduction","createWebpackConfig","workspaceDir","entryFiles","publicDir","isEnvProductionProfile","argv","includes","stats","children","errorDetails","mode","entry","main","output","path","join","filename","chunkFilename","extensions","map","ext","alias","react","fallback","module","fallbacks","dgram","dns","fs","stream","http2","net","tls","child_process","strictExportPresence","rules","test","fullySpecified","oneOf","stylesRegexps","cssNoModulesRegex","use","generateStyleLoaders","merge","cssLoaderOpts","importLoaders","sourceMap","sideEffects","type","parser","dataUrlCondition","maxSize","generator","options","babelrc","configFile","customize","cacheDirectory","cacheCompression","compact","sourceType","cssModuleRegex","modules","getLocalIdent","getCSSModuleLocalIdent","sassNoModuleRegex","preProcessOptions","resolveUrlLoaderPath","preProcessorPath","sassModuleRegex","lessNoModuleRegex","lessModuleRegex","exclude","plugins","WebpackManifestPlugin","fileName","generate","seed","files","entrypoints","manifestFiles","reduce","manifest","file","name","entrypointFiles","filter","endsWith","webpack","IgnorePlugin","resourceRegExp","contextRegExp","WorkboxWebpackPlugin","GenerateSW","clientsClaim","maximumFileSizeToCacheInBytes","navigateFallback","navigateFallbackDenylist","RegExp","Boolean","performance"],"sources":["webpack.base.config.ts"],"sourcesContent":["import { merge } from 'lodash';\nimport webpack, { Configuration } from 'webpack';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport { WebpackManifestPlugin } from 'webpack-manifest-plugin';\nimport WorkboxWebpackPlugin from 'workbox-webpack-plugin';\nimport getCSSModuleLocalIdent from 'react-dev-utils/getCSSModuleLocalIdent';\nimport path from 'path';\nimport * as stylesRegexps from '@teambit/webpack.modules.style-regexps';\nimport { generateStyleLoaders } from '@teambit/webpack.modules.generate-style-loaders';\nimport { fallbacks } from '@teambit/webpack';\nimport { postCssConfig } from './postcss.config';\n\nconst baseStyleLoadersOptions = {\n injectingLoader: MiniCssExtractPlugin.loader,\n cssLoaderPath: require.resolve('css-loader'),\n postCssLoaderPath: require.resolve('postcss-loader'),\n postCssConfig,\n};\n\nconst moduleFileExtensions = [\n 'web.mjs',\n 'mjs',\n 'web.js',\n 'js',\n 'web.ts',\n 'ts',\n 'web.tsx',\n 'tsx',\n 'json',\n 'web.jsx',\n 'jsx',\n];\n\n// Source maps are resource heavy and can cause out of memory issue for large source files.\nconst shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';\n\nconst imageInlineSizeLimit = parseInt(process.env.IMAGE_INLINE_SIZE_LIMIT || '10000');\n\nconst isEnvProduction = true;\n\n// This is the production and development configuration.\n// It is focused on developer experience, fast rebuilds, and a minimal bundle.\n// eslint-disable-next-line complexity\nexport default function createWebpackConfig(\n workspaceDir: string,\n entryFiles: string[],\n publicDir = 'public'\n): Configuration {\n // Variable used for enabling profiling in Production\n // passed into alias object. Uses a flag if passed into the build command\n const isEnvProductionProfile = process.argv.includes('--profile');\n\n // We will provide `paths.publicUrlOrPath` to our app\n // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.\n // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.\n // Get environment variables to inject into our app.\n // const env = getClientEnvironment(publicUrlOrPath.slice(0, -1));\n\n return {\n stats: {\n children: true,\n errorDetails: true,\n },\n mode: 'production',\n entry: {\n main: entryFiles,\n },\n\n output: {\n // The build folder.\n path: path.join(workspaceDir, publicDir), // default value\n\n filename: 'static/js/[name].[contenthash:8].js',\n // TODO: remove this when upgrading to webpack 5\n // futureEmitAssets: true,\n // There are also additional JS chunk files if you use code splitting.\n chunkFilename: 'static/js/[name].[contenthash:8].chunk.js',\n // this defaults to 'window', but by setting it to 'this' then\n // module chunks which are built will work in web workers as well.\n // Commented out to use the default (self) as according to tobias with webpack5 self is working with workers as well\n // globalObject: 'this',\n },\n\n resolve: {\n // These are the reasonable defaults supported by the Node ecosystem.\n // We also include JSX as a common component filename extension to support\n // some tools, although we do not recommend using it, see:\n // https://github.com/facebook/create-react-app/issues/290\n // `web` extension prefixes have been added for better support\n // for React Native Web.\n extensions: moduleFileExtensions.map((ext) => `.${ext}`),\n\n alias: {\n // TODO: @uri please remember to remove after publishing evangelist and base-ui\n react: require.resolve('react'),\n 'react-dom/server': require.resolve('react-dom/server'),\n 'react-dom': require.resolve('react-dom'),\n // Allows for better profiling with ReactDevTools\n ...(isEnvProductionProfile && {\n 'react-dom$': 'react-dom/profiling',\n 'scheduler/tracing': 'scheduler/tracing-profiling',\n }),\n },\n fallback: {\n module: false,\n path: fallbacks.path,\n dgram: false,\n dns: false,\n fs: false,\n stream: false,\n http2: false,\n net: false,\n tls: false,\n child_process: false,\n process: fallbacks.process,\n },\n },\n module: {\n strictExportPresence: true,\n rules: [\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n // Disable require.ensure as it's not a standard language feature.\n // { parser: { requireEnsure: false } },\n {\n // \"oneOf\" will traverse all following loaders until one will\n // match the requirements. When no loader matches it will fall\n // back to the \"file\" loader at the end of the loader list.\n oneOf: [\n // \"postcss\" loader applies autoprefixer to our CSS.\n // \"css\" loader resolves paths in CSS and adds assets as dependencies.\n // \"style\" loader turns CSS into JS modules that inject <style> tags.\n // In production, we use MiniCSSExtractPlugin to extract that CSS\n // to a file, but in development \"style\" loader enables hot editing\n // of CSS.\n // By default we support CSS Modules with the extension .module.css\n {\n test: stylesRegexps.cssNoModulesRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // \"url\" loader works like \"file\" loader except that it embeds assets\n // smaller than specified limit in bytes as data URLs to avoid requests.\n // A missing `test` is equivalent to a match.\n {\n test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/, /\\.svg$/],\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: imageInlineSizeLimit,\n },\n },\n },\n {\n test: /\\.(woff(2)?|ttf|eot|svg)(\\?v=\\d+\\.\\d+\\.\\d+)?$/,\n type: 'asset',\n generator: {\n filename: 'static/fonts/[hash][ext][query]',\n },\n },\n // Process application JS with Babel.\n // The preset includes JSX, Flow, TypeScript, and some ESnext features.\n {\n test: /\\.(js|mjs|jsx|ts|tsx)$/,\n loader: require.resolve('babel-loader'),\n options: {\n babelrc: false,\n configFile: false,\n customize: require.resolve('babel-preset-react-app/webpack-overrides'),\n // This is a feature of `babel-loader` for webpack (not Babel itself).\n // It enables caching results in ./node_modules/.cache/babel-loader/\n // directory for faster rebuilds.\n cacheDirectory: true,\n // See #6846 for context on why cacheCompression is disabled\n cacheCompression: false,\n compact: isEnvProduction,\n sourceType: 'unambiguous',\n },\n },\n // Process any JS outside of the app with Babel.\n // Unlike the application JS, we only compile the standard ES features.\n // Probably not needed in our use case\n // {\n // test: /\\.(js|mjs)$/,\n // exclude: /@babel(?:\\/|\\\\{1,2})runtime/,\n // loader: require.resolve('babel-loader'),\n // options: {\n // babelrc: false,\n // configFile: false,\n // compact: false,\n // presets: [[require.resolve('babel-preset-react-app/dependencies'), { helpers: true }]],\n // cacheDirectory: true,\n // // See #6846 for context on why cacheCompression is disabled\n // cacheCompression: false,\n\n // // Babel sourcemaps are needed for debugging into node_modules\n // // code. Without the options below, debuggers like VSCode\n // // show incorrect code and set breakpoints on the wrong lines.\n // sourceMaps: shouldUseSourceMap,\n // inputSourceMap: shouldUseSourceMap,\n // },\n // },\n\n // Adds support for CSS Modules (https://github.com/css-modules/css-modules)\n // using the extension .module.css\n {\n test: stylesRegexps.cssModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n })\n ),\n },\n // Opt-in support for SASS (using .scss or .sass extensions).\n // By default we support SASS Modules with the\n // extensions .module.scss or .module.sass\n {\n test: stylesRegexps.sassNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // Adds support for CSS Modules, but using SASS\n // using the extension .module.scss or .module.sass\n {\n test: stylesRegexps.sassModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n },\n {\n test: stylesRegexps.lessNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n {\n test: stylesRegexps.lessModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n },\n // \"file\" loader makes sure those assets get served by WebpackDevServer.\n // When you `import` an asset, you get its (virtual) filename.\n // In production, they would get copied to the `build` folder.\n // This loader doesn't use a \"test\" so it will catch all modules\n // that fall through the other loaders.\n {\n // Exclude `js` files to keep \"css\" loader working as it injects\n // its runtime that would otherwise be processed through \"file\" loader.\n // Also exclude `html` and `json` extensions so they get processed\n // by webpacks internal loaders.\n exclude: [/\\.(js|mjs|jsx|ts|tsx)$/, /\\.html$/, /\\.json$/, /\\.css$/],\n type: 'asset/resource',\n },\n // ** STOP ** Are you adding a new loader?\n // Make sure to add the new loader(s) before the \"file\" loader.\n ],\n },\n ],\n },\n plugins: [\n new MiniCssExtractPlugin({\n // Options similar to the same options in webpackOptions.output\n // both options are optional\n filename: 'static/css/[name].[contenthash:8].css',\n chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',\n }),\n // Generate an asset manifest file with the following content:\n // - \"files\" key: Mapping of all asset filenames to their corresponding\n // output file so that tools can pick it up without having to parse\n // `index.html`\n // can be used to reconstruct the HTML if necessary\n new WebpackManifestPlugin({\n fileName: 'asset-manifest.json',\n generate: (seed, files, entrypoints) => {\n const manifestFiles = files.reduce((manifest, file) => {\n manifest[file.name] = file.path;\n return manifest;\n }, seed);\n const entrypointFiles = entrypoints.main.filter((fileName) => !fileName.endsWith('.map'));\n\n // @ts-ignore - https://github.com/shellscape/webpack-manifest-plugin/issues/276\n return {\n files: manifestFiles,\n entrypoints: entrypointFiles,\n } as Record<string, string>;\n },\n }),\n // Moment.js is an extremely popular library that bundles large locale files\n // by default due to how webpack interprets its code. This is a practical\n // solution that requires the user to opt into importing specific locales.\n // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack\n // You can remove this if you don't use Moment.js:\n new webpack.IgnorePlugin({\n resourceRegExp: /^\\.\\/locale$/,\n contextRegExp: /moment$/,\n }),\n // Generate a service worker script that will precache, and keep up to date,\n // the HTML & assets that are part of the webpack build.\n isEnvProduction &&\n new WorkboxWebpackPlugin.GenerateSW({\n clientsClaim: true,\n maximumFileSizeToCacheInBytes: 5000000,\n exclude: [/\\.map$/, /asset-manifest\\.json$/],\n // importWorkboxFrom: 'cdn',\n navigateFallback: 'public/index.html',\n navigateFallbackDenylist: [\n // Exclude URLs starting with /_, as they're likely an API call\n new RegExp('^/_'),\n // Exclude any URLs whose last part seems to be a file extension\n // as they're likely a resource and not a SPA route.\n // URLs containing a \"?\" character won't be blacklisted as they're likely\n // a route with query params (e.g. auth callbacks).\n new RegExp('/[^/?]+\\\\.[^/]+$'),\n ],\n }),\n ].filter(Boolean),\n // Some libraries import Node modules but don't use them in the browser.\n // Tell webpack to provide empty mocks for them so importing them works.\n // Turn off performance processing because we utilize\n // our own hints via the FileSizeReporter\n performance: false,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["baseStyleLoadersOptions","injectingLoader","MiniCssExtractPlugin","loader","cssLoaderPath","require","resolve","postCssLoaderPath","postCssConfig","moduleFileExtensions","shouldUseSourceMap","process","env","GENERATE_SOURCEMAP","imageInlineSizeLimit","parseInt","IMAGE_INLINE_SIZE_LIMIT","isEnvProduction","createWebpackConfig","outputDir","entryFiles","publicDir","isEnvProductionProfile","argv","includes","stats","children","errorDetails","mode","entry","main","output","path","join","filename","chunkFilename","extensions","map","ext","alias","react","fallback","module","fallbacks","dgram","dns","fs","stream","http2","net","tls","child_process","strictExportPresence","rules","test","fullySpecified","oneOf","stylesRegexps","cssNoModulesRegex","use","generateStyleLoaders","merge","cssLoaderOpts","importLoaders","sourceMap","sideEffects","type","parser","dataUrlCondition","maxSize","generator","options","babelrc","configFile","customize","cacheDirectory","cacheCompression","compact","sourceType","cssModuleRegex","modules","getLocalIdent","getCSSModuleLocalIdent","sassNoModuleRegex","preProcessOptions","resolveUrlLoaderPath","preProcessorPath","sassModuleRegex","lessNoModuleRegex","lessModuleRegex","exclude","plugins","WebpackManifestPlugin","fileName","generate","seed","files","entrypoints","manifestFiles","reduce","manifest","file","name","entrypointFiles","filter","endsWith","webpack","IgnorePlugin","resourceRegExp","contextRegExp","WorkboxWebpackPlugin","GenerateSW","clientsClaim","maximumFileSizeToCacheInBytes","navigateFallback","navigateFallbackDenylist","RegExp","Boolean","performance"],"sources":["webpack.base.config.ts"],"sourcesContent":["import { merge } from 'lodash';\nimport webpack, { Configuration } from 'webpack';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport { WebpackManifestPlugin } from 'webpack-manifest-plugin';\nimport WorkboxWebpackPlugin from 'workbox-webpack-plugin';\nimport getCSSModuleLocalIdent from 'react-dev-utils/getCSSModuleLocalIdent';\nimport path from 'path';\nimport * as stylesRegexps from '@teambit/webpack.modules.style-regexps';\nimport { generateStyleLoaders } from '@teambit/webpack.modules.generate-style-loaders';\nimport { fallbacks } from '@teambit/webpack';\nimport { postCssConfig } from './postcss.config';\n\nconst baseStyleLoadersOptions = {\n injectingLoader: MiniCssExtractPlugin.loader,\n cssLoaderPath: require.resolve('css-loader'),\n postCssLoaderPath: require.resolve('postcss-loader'),\n postCssConfig,\n};\n\nconst moduleFileExtensions = [\n 'web.mjs',\n 'mjs',\n 'web.js',\n 'js',\n 'web.ts',\n 'ts',\n 'web.tsx',\n 'tsx',\n 'json',\n 'web.jsx',\n 'jsx',\n];\n\n// Source maps are resource heavy and can cause out of memory issue for large source files.\nconst shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';\n\nconst imageInlineSizeLimit = parseInt(process.env.IMAGE_INLINE_SIZE_LIMIT || '10000');\n\nconst isEnvProduction = true;\n\n// This is the production and development configuration.\n// It is focused on developer experience, fast rebuilds, and a minimal bundle.\n// eslint-disable-next-line complexity\nexport default function createWebpackConfig(\n outputDir: string,\n entryFiles: string[],\n publicDir = 'public'\n): Configuration {\n // Variable used for enabling profiling in Production\n // passed into alias object. Uses a flag if passed into the build command\n const isEnvProductionProfile = process.argv.includes('--profile');\n\n // We will provide `paths.publicUrlOrPath` to our app\n // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.\n // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.\n // Get environment variables to inject into our app.\n // const env = getClientEnvironment(publicUrlOrPath.slice(0, -1));\n\n return {\n stats: {\n children: true,\n errorDetails: true,\n },\n mode: 'production',\n entry: {\n main: entryFiles,\n },\n\n output: {\n // The build folder.\n path: path.join(outputDir, publicDir), // default value\n\n filename: 'static/js/[name].[contenthash:8].js',\n // TODO: remove this when upgrading to webpack 5\n // futureEmitAssets: true,\n // There are also additional JS chunk files if you use code splitting.\n chunkFilename: 'static/js/[name].[contenthash:8].chunk.js',\n // this defaults to 'window', but by setting it to 'this' then\n // module chunks which are built will work in web workers as well.\n // Commented out to use the default (self) as according to tobias with webpack5 self is working with workers as well\n // globalObject: 'this',\n },\n\n resolve: {\n // These are the reasonable defaults supported by the Node ecosystem.\n // We also include JSX as a common component filename extension to support\n // some tools, although we do not recommend using it, see:\n // https://github.com/facebook/create-react-app/issues/290\n // `web` extension prefixes have been added for better support\n // for React Native Web.\n extensions: moduleFileExtensions.map((ext) => `.${ext}`),\n\n alias: {\n // TODO: @uri please remember to remove after publishing evangelist and base-ui\n react: require.resolve('react'),\n 'react-dom/server': require.resolve('react-dom/server'),\n 'react-dom': require.resolve('react-dom'),\n // Allows for better profiling with ReactDevTools\n ...(isEnvProductionProfile && {\n 'react-dom$': 'react-dom/profiling',\n 'scheduler/tracing': 'scheduler/tracing-profiling',\n }),\n },\n fallback: {\n module: false,\n path: fallbacks.path,\n dgram: false,\n dns: false,\n fs: false,\n stream: false,\n http2: false,\n net: false,\n tls: false,\n child_process: false,\n process: fallbacks.process,\n },\n },\n module: {\n strictExportPresence: true,\n rules: [\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n // Disable require.ensure as it's not a standard language feature.\n // { parser: { requireEnsure: false } },\n {\n // \"oneOf\" will traverse all following loaders until one will\n // match the requirements. When no loader matches it will fall\n // back to the \"file\" loader at the end of the loader list.\n oneOf: [\n // \"postcss\" loader applies autoprefixer to our CSS.\n // \"css\" loader resolves paths in CSS and adds assets as dependencies.\n // \"style\" loader turns CSS into JS modules that inject <style> tags.\n // In production, we use MiniCSSExtractPlugin to extract that CSS\n // to a file, but in development \"style\" loader enables hot editing\n // of CSS.\n // By default we support CSS Modules with the extension .module.css\n {\n test: stylesRegexps.cssNoModulesRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // \"url\" loader works like \"file\" loader except that it embeds assets\n // smaller than specified limit in bytes as data URLs to avoid requests.\n // A missing `test` is equivalent to a match.\n {\n test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/, /\\.svg$/],\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: imageInlineSizeLimit,\n },\n },\n },\n {\n test: /\\.(woff(2)?|ttf|eot|svg)(\\?v=\\d+\\.\\d+\\.\\d+)?$/,\n type: 'asset',\n generator: {\n filename: 'static/fonts/[hash][ext][query]',\n },\n },\n // Process application JS with Babel.\n // The preset includes JSX, Flow, TypeScript, and some ESnext features.\n {\n test: /\\.(js|mjs|jsx|ts|tsx)$/,\n loader: require.resolve('babel-loader'),\n options: {\n babelrc: false,\n configFile: false,\n customize: require.resolve('babel-preset-react-app/webpack-overrides'),\n // This is a feature of `babel-loader` for webpack (not Babel itself).\n // It enables caching results in ./node_modules/.cache/babel-loader/\n // directory for faster rebuilds.\n cacheDirectory: true,\n // See #6846 for context on why cacheCompression is disabled\n cacheCompression: false,\n compact: isEnvProduction,\n sourceType: 'unambiguous',\n },\n },\n // Process any JS outside of the app with Babel.\n // Unlike the application JS, we only compile the standard ES features.\n // Probably not needed in our use case\n // {\n // test: /\\.(js|mjs)$/,\n // exclude: /@babel(?:\\/|\\\\{1,2})runtime/,\n // loader: require.resolve('babel-loader'),\n // options: {\n // babelrc: false,\n // configFile: false,\n // compact: false,\n // presets: [[require.resolve('babel-preset-react-app/dependencies'), { helpers: true }]],\n // cacheDirectory: true,\n // // See #6846 for context on why cacheCompression is disabled\n // cacheCompression: false,\n\n // // Babel sourcemaps are needed for debugging into node_modules\n // // code. Without the options below, debuggers like VSCode\n // // show incorrect code and set breakpoints on the wrong lines.\n // sourceMaps: shouldUseSourceMap,\n // inputSourceMap: shouldUseSourceMap,\n // },\n // },\n\n // Adds support for CSS Modules (https://github.com/css-modules/css-modules)\n // using the extension .module.css\n {\n test: stylesRegexps.cssModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n })\n ),\n },\n // Opt-in support for SASS (using .scss or .sass extensions).\n // By default we support SASS Modules with the\n // extensions .module.scss or .module.sass\n {\n test: stylesRegexps.sassNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n // Adds support for CSS Modules, but using SASS\n // using the extension .module.scss or .module.sass\n {\n test: stylesRegexps.sassModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 3,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('sass-loader'),\n },\n })\n ),\n },\n {\n test: stylesRegexps.lessNoModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n // Don't consider CSS imports dead code even if the\n // containing package claims to have no side effects.\n // Remove this when webpack adds a warning or an error for this.\n // See https://github.com/webpack/webpack/issues/6571\n sideEffects: true,\n },\n {\n test: stylesRegexps.lessModuleRegex,\n use: generateStyleLoaders(\n merge({}, baseStyleLoadersOptions, {\n cssLoaderOpts: {\n importLoaders: 1,\n sourceMap: isEnvProduction || shouldUseSourceMap,\n modules: {\n getLocalIdent: getCSSModuleLocalIdent,\n },\n },\n shouldUseSourceMap: isEnvProduction || shouldUseSourceMap,\n preProcessOptions: {\n resolveUrlLoaderPath: require.resolve('resolve-url-loader'),\n preProcessorPath: require.resolve('less-loader'),\n },\n })\n ),\n },\n // \"file\" loader makes sure those assets get served by WebpackDevServer.\n // When you `import` an asset, you get its (virtual) filename.\n // In production, they would get copied to the `build` folder.\n // This loader doesn't use a \"test\" so it will catch all modules\n // that fall through the other loaders.\n {\n // Exclude `js` files to keep \"css\" loader working as it injects\n // its runtime that would otherwise be processed through \"file\" loader.\n // Also exclude `html` and `json` extensions so they get processed\n // by webpacks internal loaders.\n exclude: [/\\.(js|mjs|jsx|ts|tsx)$/, /\\.html$/, /\\.json$/, /\\.css$/],\n type: 'asset/resource',\n },\n // ** STOP ** Are you adding a new loader?\n // Make sure to add the new loader(s) before the \"file\" loader.\n ],\n },\n ],\n },\n plugins: [\n new MiniCssExtractPlugin({\n // Options similar to the same options in webpackOptions.output\n // both options are optional\n filename: 'static/css/[name].[contenthash:8].css',\n chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',\n }),\n // Generate an asset manifest file with the following content:\n // - \"files\" key: Mapping of all asset filenames to their corresponding\n // output file so that tools can pick it up without having to parse\n // `index.html`\n // can be used to reconstruct the HTML if necessary\n new WebpackManifestPlugin({\n fileName: 'asset-manifest.json',\n generate: (seed, files, entrypoints) => {\n const manifestFiles = files.reduce((manifest, file) => {\n manifest[file.name] = file.path;\n return manifest;\n }, seed);\n const entrypointFiles = entrypoints.main.filter((fileName) => !fileName.endsWith('.map'));\n\n // @ts-ignore - https://github.com/shellscape/webpack-manifest-plugin/issues/276\n return {\n files: manifestFiles,\n entrypoints: entrypointFiles,\n } as Record<string, string>;\n },\n }),\n // Moment.js is an extremely popular library that bundles large locale files\n // by default due to how webpack interprets its code. This is a practical\n // solution that requires the user to opt into importing specific locales.\n // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack\n // You can remove this if you don't use Moment.js:\n new webpack.IgnorePlugin({\n resourceRegExp: /^\\.\\/locale$/,\n contextRegExp: /moment$/,\n }),\n // Generate a service worker script that will precache, and keep up to date,\n // the HTML & assets that are part of the webpack build.\n isEnvProduction &&\n new WorkboxWebpackPlugin.GenerateSW({\n clientsClaim: true,\n maximumFileSizeToCacheInBytes: 5000000,\n exclude: [/\\.map$/, /asset-manifest\\.json$/],\n // importWorkboxFrom: 'cdn',\n navigateFallback: 'public/index.html',\n navigateFallbackDenylist: [\n // Exclude URLs starting with /_, as they're likely an API call\n new RegExp('^/_'),\n // Exclude any URLs whose last part seems to be a file extension\n // as they're likely a resource and not a SPA route.\n // URLs containing a \"?\" character won't be blacklisted as they're likely\n // a route with query params (e.g. auth callbacks).\n new RegExp('/[^/?]+\\\\.[^/]+$'),\n ],\n }),\n ].filter(Boolean),\n // Some libraries import Node modules but don't use them in the browser.\n // Tell webpack to provide empty mocks for them so importing them works.\n // Turn off performance processing because we utilize\n // our own hints via the FileSizeReporter\n performance: false,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAiD;AAAA;AAAA;AAAA;AAEjD,MAAMA,uBAAuB,GAAG;EAC9BC,eAAe,EAAEC,+BAAoB,CAACC,MAAM;EAC5CC,aAAa,EAAEC,OAAO,CAACC,OAAO,CAAC,YAAY,CAAC;EAC5CC,iBAAiB,EAAEF,OAAO,CAACC,OAAO,CAAC,gBAAgB,CAAC;EACpDE,aAAa,EAAbA;AACF,CAAC;AAED,MAAMC,oBAAoB,GAAG,CAC3B,SAAS,EACT,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,CACN;;AAED;AACA,MAAMC,kBAAkB,GAAGC,OAAO,CAACC,GAAG,CAACC,kBAAkB,KAAK,OAAO;AAErE,MAAMC,oBAAoB,GAAGC,QAAQ,CAACJ,OAAO,CAACC,GAAG,CAACI,uBAAuB,IAAI,OAAO,CAAC;AAErF,MAAMC,eAAe,GAAG,IAAI;;AAE5B;AACA;AACA;AACe,SAASC,mBAAmB,CACzCC,SAAiB,EACjBC,UAAoB,EACpBC,SAAS,GAAG,QAAQ,EACL;EACf;EACA;EACA,MAAMC,sBAAsB,GAAGX,OAAO,CAACY,IAAI,CAACC,QAAQ,CAAC,WAAW,CAAC;;EAEjE;EACA;EACA;EACA;EACA;;EAEA,OAAO;IACLC,KAAK,EAAE;MACLC,QAAQ,EAAE,IAAI;MACdC,YAAY,EAAE;IAChB,CAAC;IACDC,IAAI,EAAE,YAAY;IAClBC,KAAK,EAAE;MACLC,IAAI,EAAEV;IACR,CAAC;IAEDW,MAAM,EAAE;MACN;MACAC,IAAI,EAAEA,eAAI,CAACC,IAAI,CAACd,SAAS,EAAEE,SAAS,CAAC;MAAE;;MAEvCa,QAAQ,EAAE,qCAAqC;MAC/C;MACA;MACA;MACAC,aAAa,EAAE;MACf;MACA;MACA;MACA;IACF,CAAC;;IAED7B,OAAO,EAAE;MACP;MACA;MACA;MACA;MACA;MACA;MACA8B,UAAU,EAAE3B,oBAAoB,CAAC4B,GAAG,CAAEC,GAAG,IAAM,IAAGA,GAAI,EAAC,CAAC;MAExDC,KAAK;QACH;QACAC,KAAK,EAAEnC,OAAO,CAACC,OAAO,CAAC,OAAO,CAAC;QAC/B,kBAAkB,EAAED,OAAO,CAACC,OAAO,CAAC,kBAAkB,CAAC;QACvD,WAAW,EAAED,OAAO,CAACC,OAAO,CAAC,WAAW;MAAC,GAErCgB,sBAAsB,IAAI;QAC5B,YAAY,EAAE,qBAAqB;QACnC,mBAAmB,EAAE;MACvB,CAAC,CACF;MACDmB,QAAQ,EAAE;QACRC,MAAM,EAAE,KAAK;QACbV,IAAI,EAAEW,qBAAS,CAACX,IAAI;QACpBY,KAAK,EAAE,KAAK;QACZC,GAAG,EAAE,KAAK;QACVC,EAAE,EAAE,KAAK;QACTC,MAAM,EAAE,KAAK;QACbC,KAAK,EAAE,KAAK;QACZC,GAAG,EAAE,KAAK;QACVC,GAAG,EAAE,KAAK;QACVC,aAAa,EAAE,KAAK;QACpBxC,OAAO,EAAEgC,qBAAS,CAAChC;MACrB;IACF,CAAC;IACD+B,MAAM,EAAE;MACNU,oBAAoB,EAAE,IAAI;MAC1BC,KAAK,EAAE,CACL;QACEC,IAAI,EAAE,QAAQ;QACdhD,OAAO,EAAE;UACPiD,cAAc,EAAE;QAClB;MACF,CAAC;MACD;MACA;MACA;QACE;QACA;QACA;QACAC,KAAK,EAAE;QACL;QACA;QACA;QACA;QACA;QACA;QACA;QACA;UACEF,IAAI,EAAEG,aAAa,GAACC,iBAAiB;UACrCC,GAAG,EAAE,IAAAC,uCAAoB,EACvB,IAAAC,eAAK,EAAC,CAAC,CAAC,EAAE7D,uBAAuB,EAAE;YACjC8D,aAAa,EAAE;cACbC,aAAa,EAAE,CAAC;cAChBC,SAAS,EAAE/C,eAAe,IAAIP;YAChC;UACF,CAAC,CAAC,CACH;UACD;UACA;UACA;UACA;UACAuD,WAAW,EAAE;QACf,CAAC;QACD;QACA;QACA;QACA;UACEX,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC;UAC1DY,IAAI,EAAE,OAAO;UACbC,MAAM,EAAE;YACNC,gBAAgB,EAAE;cAChBC,OAAO,EAAEvD;YACX;UACF;QACF,CAAC,EACD;UACEwC,IAAI,EAAE,+CAA+C;UACrDY,IAAI,EAAE,OAAO;UACbI,SAAS,EAAE;YACTpC,QAAQ,EAAE;UACZ;QACF,CAAC;QACD;QACA;QACA;UACEoB,IAAI,EAAE,wBAAwB;UAC9BnD,MAAM,EAAEE,OAAO,CAACC,OAAO,CAAC,cAAc,CAAC;UACvCiE,OAAO,EAAE;YACPC,OAAO,EAAE,KAAK;YACdC,UAAU,EAAE,KAAK;YACjBC,SAAS,EAAErE,OAAO,CAACC,OAAO,CAAC,0CAA0C,CAAC;YACtE;YACA;YACA;YACAqE,cAAc,EAAE,IAAI;YACpB;YACAC,gBAAgB,EAAE,KAAK;YACvBC,OAAO,EAAE5D,eAAe;YACxB6D,UAAU,EAAE;UACd;QACF,CAAC;QACD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;UACExB,IAAI,EAAEG,aAAa,GAACsB,cAAc;UAClCpB,GAAG,EAAE,IAAAC,uCAAoB,EACvB,IAAAC,eAAK,EAAC,CAAC,CAAC,EAAE7D,uBAAuB,EAAE;YACjC8D,aAAa,EAAE;cACbC,aAAa,EAAE,CAAC;cAChBC,SAAS,EAAE/C,eAAe,IAAIP,kBAAkB;cAChDsE,OAAO,EAAE;gBACPC,aAAa,EAAEC;cACjB;YACF,CAAC;YACDxE,kBAAkB,EAAEO,eAAe,IAAIP;UACzC,CAAC,CAAC;QAEN,CAAC;QACD;QACA;QACA;QACA;UACE4C,IAAI,EAAEG,aAAa,GAAC0B,iBAAiB;UACrCxB,GAAG,EAAE,IAAAC,uCAAoB,EACvB,IAAAC,eAAK,EAAC,CAAC,CAAC,EAAE7D,uBAAuB,EAAE;YACjC8D,aAAa,EAAE;cACbC,aAAa,EAAE,CAAC;cAChBC,SAAS,EAAE/C,eAAe,IAAIP;YAChC,CAAC;YACDA,kBAAkB,EAAEO,eAAe,IAAIP,kBAAkB;YACzD0E,iBAAiB,EAAE;cACjBC,oBAAoB,EAAEhF,OAAO,CAACC,OAAO,CAAC,oBAAoB,CAAC;cAC3DgF,gBAAgB,EAAEjF,OAAO,CAACC,OAAO,CAAC,aAAa;YACjD;UACF,CAAC,CAAC,CACH;UACD;UACA;UACA;UACA;UACA2D,WAAW,EAAE;QACf,CAAC;QACD;QACA;QACA;UACEX,IAAI,EAAEG,aAAa,GAAC8B,eAAe;UACnC5B,GAAG,EAAE,IAAAC,uCAAoB,EACvB,IAAAC,eAAK,EAAC,CAAC,CAAC,EAAE7D,uBAAuB,EAAE;YACjC8D,aAAa,EAAE;cACbC,aAAa,EAAE,CAAC;cAChBC,SAAS,EAAE/C,eAAe,IAAIP,kBAAkB;cAChDsE,OAAO,EAAE;gBACPC,aAAa,EAAEC;cACjB;YACF,CAAC;YACDxE,kBAAkB,EAAEO,eAAe,IAAIP,kBAAkB;YACzD0E,iBAAiB,EAAE;cACjBC,oBAAoB,EAAEhF,OAAO,CAACC,OAAO,CAAC,oBAAoB,CAAC;cAC3DgF,gBAAgB,EAAEjF,OAAO,CAACC,OAAO,CAAC,aAAa;YACjD;UACF,CAAC,CAAC;QAEN,CAAC,EACD;UACEgD,IAAI,EAAEG,aAAa,GAAC+B,iBAAiB;UACrC7B,GAAG,EAAE,IAAAC,uCAAoB,EACvB,IAAAC,eAAK,EAAC,CAAC,CAAC,EAAE7D,uBAAuB,EAAE;YACjC8D,aAAa,EAAE;cACbC,aAAa,EAAE,CAAC;cAChBC,SAAS,EAAE/C,eAAe,IAAIP;YAChC,CAAC;YACDA,kBAAkB,EAAEO,eAAe,IAAIP,kBAAkB;YACzD0E,iBAAiB,EAAE;cACjBC,oBAAoB,EAAEhF,OAAO,CAACC,OAAO,CAAC,oBAAoB,CAAC;cAC3DgF,gBAAgB,EAAEjF,OAAO,CAACC,OAAO,CAAC,aAAa;YACjD;UACF,CAAC,CAAC,CACH;UACD;UACA;UACA;UACA;UACA2D,WAAW,EAAE;QACf,CAAC,EACD;UACEX,IAAI,EAAEG,aAAa,GAACgC,eAAe;UACnC9B,GAAG,EAAE,IAAAC,uCAAoB,EACvB,IAAAC,eAAK,EAAC,CAAC,CAAC,EAAE7D,uBAAuB,EAAE;YACjC8D,aAAa,EAAE;cACbC,aAAa,EAAE,CAAC;cAChBC,SAAS,EAAE/C,eAAe,IAAIP,kBAAkB;cAChDsE,OAAO,EAAE;gBACPC,aAAa,EAAEC;cACjB;YACF,CAAC;YACDxE,kBAAkB,EAAEO,eAAe,IAAIP,kBAAkB;YACzD0E,iBAAiB,EAAE;cACjBC,oBAAoB,EAAEhF,OAAO,CAACC,OAAO,CAAC,oBAAoB,CAAC;cAC3DgF,gBAAgB,EAAEjF,OAAO,CAACC,OAAO,CAAC,aAAa;YACjD;UACF,CAAC,CAAC;QAEN,CAAC;QACD;QACA;QACA;QACA;QACA;QACA;UACE;UACA;UACA;UACA;UACAoF,OAAO,EAAE,CAAC,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;UACnExB,IAAI,EAAE;QACR;QACA;QACA;QAAA;MAEJ,CAAC;IAEL,CAAC;;IACDyB,OAAO,EAAE,CACP,KAAIzF,+BAAoB,EAAC;MACvB;MACA;MACAgC,QAAQ,EAAE,uCAAuC;MACjDC,aAAa,EAAE;IACjB,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA,KAAIyD,8CAAqB,EAAC;MACxBC,QAAQ,EAAE,qBAAqB;MAC/BC,QAAQ,EAAE,CAACC,IAAI,EAAEC,KAAK,EAAEC,WAAW,KAAK;QACtC,MAAMC,aAAa,GAAGF,KAAK,CAACG,MAAM,CAAC,CAACC,QAAQ,EAAEC,IAAI,KAAK;UACrDD,QAAQ,CAACC,IAAI,CAACC,IAAI,CAAC,GAAGD,IAAI,CAACrE,IAAI;UAC/B,OAAOoE,QAAQ;QACjB,CAAC,EAAEL,IAAI,CAAC;QACR,MAAMQ,eAAe,GAAGN,WAAW,CAACnE,IAAI,CAAC0E,MAAM,CAAEX,QAAQ,IAAK,CAACA,QAAQ,CAACY,QAAQ,CAAC,MAAM,CAAC,CAAC;;QAEzF;QACA,OAAO;UACLT,KAAK,EAAEE,aAAa;UACpBD,WAAW,EAAEM;QACf,CAAC;MACH;IACF,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA,KAAIG,kBAAO,CAACC,YAAY,EAAC;MACvBC,cAAc,EAAE,cAAc;MAC9BC,aAAa,EAAE;IACjB,CAAC,CAAC;IACF;IACA;IACA5F,eAAe,IACb,KAAI6F,+BAAoB,CAACC,UAAU,EAAC;MAClCC,YAAY,EAAE,IAAI;MAClBC,6BAA6B,EAAE,OAAO;MACtCvB,OAAO,EAAE,CAAC,QAAQ,EAAE,uBAAuB,CAAC;MAC5C;MACAwB,gBAAgB,EAAE,mBAAmB;MACrCC,wBAAwB,EAAE;MACxB;MACA,IAAIC,MAAM,CAAC,KAAK,CAAC;MACjB;MACA;MACA;MACA;MACA,IAAIA,MAAM,CAAC,kBAAkB,CAAC;IAElC,CAAC,CAAC,CACL,CAACZ,MAAM,CAACa,OAAO,CAAC;IACjB;IACA;IACA;IACA;IACAC,WAAW,EAAE;EACf,CAAC;AACH"}
@@ -1,2 +1,2 @@
1
1
  import { Configuration } from 'webpack';
2
- export default function createWebpackConfig(workspaceDir: string, entryFiles: string[], title: string, publicDir: string): Configuration;
2
+ export default function createWebpackConfig(outputDir: string, entryFiles: string[], title: string, publicDir: string): Configuration;
@@ -70,18 +70,18 @@ function _webpackBase() {
70
70
  };
71
71
  return data;
72
72
  }
73
- function createWebpackConfig(workspaceDir, entryFiles, title, publicDir) {
74
- const baseConfig = (0, _webpackBase().default)(workspaceDir, entryFiles);
75
- const browserConfig = createBrowserConfig(workspaceDir, title, publicDir);
73
+ function createWebpackConfig(outputDir, entryFiles, title, publicDir) {
74
+ const baseConfig = (0, _webpackBase().default)(outputDir, entryFiles);
75
+ const browserConfig = createBrowserConfig(outputDir, title, publicDir);
76
76
  const combined = (0, _webpackMerge().merge)(baseConfig, browserConfig);
77
77
  return combined;
78
78
  }
79
- function createBrowserConfig(workspaceDir, title, publicDir) {
79
+ function createBrowserConfig(outputDir, title, publicDir) {
80
80
  const browserConfig = {
81
81
  // target: 'web', // already default
82
82
 
83
83
  output: {
84
- path: _path().default.resolve(workspaceDir, publicDir),
84
+ path: _path().default.resolve(outputDir, publicDir),
85
85
  // webpack uses `publicPath` to determine where the app is being served from.
86
86
  // It requires a trailing slash, or the file assets will get an incorrect path.
87
87
  // We inferred the "public path" (such as / or /my-project) from homepage.
@@ -1 +1 @@
1
- {"version":3,"names":["createWebpackConfig","workspaceDir","entryFiles","title","publicDir","baseConfig","createBaseConfig","browserConfig","createBrowserConfig","combined","merge","output","path","resolve","publicPath","optimization","minimize","minimizer","TerserPlugin","terserOptions","keep_classnames","RegExp","parse","ecma","compress","warnings","comparisons","inline","mangle","safari10","comments","ascii_only","CssMinimizerPlugin","minimizerOptions","preset","minifyFontValues","removeQuotes","splitChunks","chunks","name","runtimeChunk","entrypoint","plugins","HtmlWebpackPlugin","inject","templateContent","html","minify","removeComments","collapseWhitespace","removeRedundantAttributes","useShortDoctype","removeEmptyAttributes","removeStyleLinkTypeAttributes","keepClosingSlash","minifyJS","minifyCSS","minifyURLs","ProvidePlugin","process","fallbacksProvidePluginConfig"],"sources":["webpack.browser.config.ts"],"sourcesContent":["import { Configuration, ProvidePlugin } from 'webpack';\nimport TerserPlugin from 'terser-webpack-plugin';\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin';\nimport path from 'path';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport { merge } from 'webpack-merge';\nimport { fallbacksProvidePluginConfig } from '@teambit/webpack';\n\nimport { html } from './html';\nimport createBaseConfig from './webpack.base.config';\n\nexport default function createWebpackConfig(\n workspaceDir: string,\n entryFiles: string[],\n title: string,\n publicDir: string\n): Configuration {\n const baseConfig = createBaseConfig(workspaceDir, entryFiles);\n const browserConfig = createBrowserConfig(workspaceDir, title, publicDir);\n\n const combined = merge(baseConfig, browserConfig);\n\n return combined;\n}\n\nfunction createBrowserConfig(workspaceDir: string, title: string, publicDir: string) {\n const browserConfig: Configuration = {\n // target: 'web', // already default\n\n output: {\n path: path.resolve(workspaceDir, publicDir),\n // webpack uses `publicPath` to determine where the app is being served from.\n // It requires a trailing slash, or the file assets will get an incorrect path.\n // We inferred the \"public path\" (such as / or /my-project) from homepage.\n publicPath: '/',\n },\n\n optimization: {\n minimize: true,\n minimizer: [\n // This is only used in production mode\n new TerserPlugin({\n terserOptions: {\n // this ensures the Class Names for all Schema Classes is not minimized\n // so that schemaObjToClass can match the correct Class Name during runtime\n keep_classnames: new RegExp('.*(Schema)$'),\n parse: {\n // We want terser to parse ecma 8 code. However, we don't want it\n // to apply any minification steps that turns valid ecma 5 code\n // into invalid ecma 5 code. This is why the 'compress' and 'output'\n // sections only apply transformations that are ecma 5 safe\n // https://github.com/facebook/create-react-app/pull/4234\n ecma: 8,\n },\n compress: {\n ecma: 5,\n warnings: false,\n // Disabled because of an issue with Uglify breaking seemingly valid code:\n // https://github.com/facebook/create-react-app/issues/2376\n // Pending further investigation:\n // https://github.com/mishoo/UglifyJS2/issues/2011\n comparisons: false,\n // Disabled because of an issue with Terser breaking valid code:\n // https://github.com/facebook/create-react-app/issues/5250\n // Pending further investigation:\n // https://github.com/terser-js/terser/issues/120\n inline: 2,\n },\n mangle: {\n safari10: true,\n },\n output: {\n ecma: 5,\n comments: false,\n // Turned on because emoji and regex is not minified properly using default\n // https://github.com/facebook/create-react-app/issues/2488\n ascii_only: true,\n },\n },\n }),\n new CssMinimizerPlugin({\n minimizerOptions: {\n preset: [\n 'default',\n {\n minifyFontValues: { removeQuotes: false },\n },\n ],\n },\n }),\n ],\n // Automatically split vendor and commons\n // https://twitter.com/wSokra/status/969633336732905474\n // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366\n splitChunks: {\n chunks: 'all',\n name: false,\n },\n // Keep the runtime chunk separated to enable long term caching\n // https://twitter.com/wSokra/status/969679223278505985\n // https://github.com/facebook/create-react-app/issues/5358\n runtimeChunk: {\n name: (entrypoint) => `runtime-${entrypoint.name}`,\n },\n },\n\n plugins: [\n new HtmlWebpackPlugin({\n inject: true,\n templateContent: html(title),\n\n minify: {\n removeComments: true,\n collapseWhitespace: true,\n removeRedundantAttributes: true,\n useShortDoctype: true,\n removeEmptyAttributes: true,\n removeStyleLinkTypeAttributes: true,\n keepClosingSlash: true,\n minifyJS: true,\n minifyCSS: true,\n minifyURLs: true,\n },\n }),\n new ProvidePlugin({ process: fallbacksProvidePluginConfig.process }),\n ],\n };\n\n return browserConfig;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["createWebpackConfig","outputDir","entryFiles","title","publicDir","baseConfig","createBaseConfig","browserConfig","createBrowserConfig","combined","merge","output","path","resolve","publicPath","optimization","minimize","minimizer","TerserPlugin","terserOptions","keep_classnames","RegExp","parse","ecma","compress","warnings","comparisons","inline","mangle","safari10","comments","ascii_only","CssMinimizerPlugin","minimizerOptions","preset","minifyFontValues","removeQuotes","splitChunks","chunks","name","runtimeChunk","entrypoint","plugins","HtmlWebpackPlugin","inject","templateContent","html","minify","removeComments","collapseWhitespace","removeRedundantAttributes","useShortDoctype","removeEmptyAttributes","removeStyleLinkTypeAttributes","keepClosingSlash","minifyJS","minifyCSS","minifyURLs","ProvidePlugin","process","fallbacksProvidePluginConfig"],"sources":["webpack.browser.config.ts"],"sourcesContent":["import { Configuration, ProvidePlugin } from 'webpack';\nimport TerserPlugin from 'terser-webpack-plugin';\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin';\nimport path from 'path';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport { merge } from 'webpack-merge';\nimport { fallbacksProvidePluginConfig } from '@teambit/webpack';\n\nimport { html } from './html';\nimport createBaseConfig from './webpack.base.config';\n\nexport default function createWebpackConfig(\n outputDir: string,\n entryFiles: string[],\n title: string,\n publicDir: string\n): Configuration {\n const baseConfig = createBaseConfig(outputDir, entryFiles);\n const browserConfig = createBrowserConfig(outputDir, title, publicDir);\n\n const combined = merge(baseConfig, browserConfig);\n\n return combined;\n}\n\nfunction createBrowserConfig(outputDir: string, title: string, publicDir: string) {\n const browserConfig: Configuration = {\n // target: 'web', // already default\n\n output: {\n path: path.resolve(outputDir, publicDir),\n // webpack uses `publicPath` to determine where the app is being served from.\n // It requires a trailing slash, or the file assets will get an incorrect path.\n // We inferred the \"public path\" (such as / or /my-project) from homepage.\n publicPath: '/',\n },\n\n optimization: {\n minimize: true,\n minimizer: [\n // This is only used in production mode\n new TerserPlugin({\n terserOptions: {\n // this ensures the Class Names for all Schema Classes is not minimized\n // so that schemaObjToClass can match the correct Class Name during runtime\n keep_classnames: new RegExp('.*(Schema)$'),\n parse: {\n // We want terser to parse ecma 8 code. However, we don't want it\n // to apply any minification steps that turns valid ecma 5 code\n // into invalid ecma 5 code. This is why the 'compress' and 'output'\n // sections only apply transformations that are ecma 5 safe\n // https://github.com/facebook/create-react-app/pull/4234\n ecma: 8,\n },\n compress: {\n ecma: 5,\n warnings: false,\n // Disabled because of an issue with Uglify breaking seemingly valid code:\n // https://github.com/facebook/create-react-app/issues/2376\n // Pending further investigation:\n // https://github.com/mishoo/UglifyJS2/issues/2011\n comparisons: false,\n // Disabled because of an issue with Terser breaking valid code:\n // https://github.com/facebook/create-react-app/issues/5250\n // Pending further investigation:\n // https://github.com/terser-js/terser/issues/120\n inline: 2,\n },\n mangle: {\n safari10: true,\n },\n output: {\n ecma: 5,\n comments: false,\n // Turned on because emoji and regex is not minified properly using default\n // https://github.com/facebook/create-react-app/issues/2488\n ascii_only: true,\n },\n },\n }),\n new CssMinimizerPlugin({\n minimizerOptions: {\n preset: [\n 'default',\n {\n minifyFontValues: { removeQuotes: false },\n },\n ],\n },\n }),\n ],\n // Automatically split vendor and commons\n // https://twitter.com/wSokra/status/969633336732905474\n // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366\n splitChunks: {\n chunks: 'all',\n name: false,\n },\n // Keep the runtime chunk separated to enable long term caching\n // https://twitter.com/wSokra/status/969679223278505985\n // https://github.com/facebook/create-react-app/issues/5358\n runtimeChunk: {\n name: (entrypoint) => `runtime-${entrypoint.name}`,\n },\n },\n\n plugins: [\n new HtmlWebpackPlugin({\n inject: true,\n templateContent: html(title),\n\n minify: {\n removeComments: true,\n collapseWhitespace: true,\n removeRedundantAttributes: true,\n useShortDoctype: true,\n removeEmptyAttributes: true,\n removeStyleLinkTypeAttributes: true,\n keepClosingSlash: true,\n minifyJS: true,\n minifyCSS: true,\n minifyURLs: true,\n },\n }),\n new ProvidePlugin({ process: fallbacksProvidePluginConfig.process }),\n ],\n };\n\n return browserConfig;\n}\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.1047",
3
+ "version": "0.0.1049",
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.1047"
9
+ "version": "0.0.1049"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -53,26 +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/aspect-loader": "0.0.1047",
56
+ "@teambit/builder": "0.0.1049",
57
+ "@teambit/isolator": "0.0.1049",
58
+ "@teambit/logger": "0.0.799",
59
+ "@teambit/aspect-loader": "0.0.1049",
57
60
  "@teambit/toolbox.path.to-windows-compatible-path": "0.0.490",
58
61
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.500",
59
62
  "@teambit/bit-error": "0.0.402",
60
- "@teambit/cli": "0.0.705",
61
- "@teambit/logger": "0.0.798",
63
+ "@teambit/cli": "0.0.706",
62
64
  "@teambit/ui-foundation.cli.ui-server-console": "0.0.499",
63
- "@teambit/bundler": "0.0.1047",
64
- "@teambit/component": "0.0.1047",
65
- "@teambit/express": "0.0.803",
66
- "@teambit/graphql": "0.0.1047",
65
+ "@teambit/bundler": "0.0.1049",
66
+ "@teambit/component": "0.0.1049",
67
+ "@teambit/express": "0.0.804",
68
+ "@teambit/graphql": "0.0.1049",
67
69
  "@teambit/toolbox.network.get-port": "0.0.121",
68
- "@teambit/aspect": "0.0.1047",
69
- "@teambit/cache": "0.0.798",
70
- "@teambit/pubsub": "0.0.1047",
71
- "@teambit/react-router": "0.0.1047",
70
+ "@teambit/aspect": "0.0.1049",
71
+ "@teambit/cache": "0.0.799",
72
+ "@teambit/pubsub": "0.0.1049",
73
+ "@teambit/react-router": "0.0.1049",
72
74
  "@teambit/ui-foundation.ui.global-loader": "0.0.497",
73
75
  "@teambit/webpack.modules.generate-style-loaders": "0.0.110",
74
76
  "@teambit/webpack.modules.style-regexps": "0.0.139",
75
- "@teambit/webpack": "0.0.1047"
77
+ "@teambit/webpack": "0.0.1049"
76
78
  },
77
79
  "devDependencies": {
78
80
  "@types/lodash": "4.14.165",
@@ -93,7 +95,7 @@
93
95
  "peerDependencies": {
94
96
  "@apollo/client": "^3.6.0",
95
97
  "react-router-dom": "^6.0.0",
96
- "@teambit/legacy": "1.0.484",
98
+ "@teambit/legacy": "1.0.486",
97
99
  "react": "^16.8.0 || ^17.0.0",
98
100
  "react-dom": "^16.8.0 || ^17.0.0"
99
101
  },
@@ -42,7 +42,7 @@ const isEnvProduction = true;
42
42
  // It is focused on developer experience, fast rebuilds, and a minimal bundle.
43
43
  // eslint-disable-next-line complexity
44
44
  export default function createWebpackConfig(
45
- workspaceDir: string,
45
+ outputDir: string,
46
46
  entryFiles: string[],
47
47
  publicDir = 'public'
48
48
  ): Configuration {
@@ -68,7 +68,7 @@ export default function createWebpackConfig(
68
68
 
69
69
  output: {
70
70
  // The build folder.
71
- path: path.join(workspaceDir, publicDir), // default value
71
+ path: path.join(outputDir, publicDir), // default value
72
72
 
73
73
  filename: 'static/js/[name].[contenthash:8].js',
74
74
  // TODO: remove this when upgrading to webpack 5
@@ -10,25 +10,25 @@ import { html } from './html';
10
10
  import createBaseConfig from './webpack.base.config';
11
11
 
12
12
  export default function createWebpackConfig(
13
- workspaceDir: string,
13
+ outputDir: string,
14
14
  entryFiles: string[],
15
15
  title: string,
16
16
  publicDir: string
17
17
  ): Configuration {
18
- const baseConfig = createBaseConfig(workspaceDir, entryFiles);
19
- const browserConfig = createBrowserConfig(workspaceDir, title, publicDir);
18
+ const baseConfig = createBaseConfig(outputDir, entryFiles);
19
+ const browserConfig = createBrowserConfig(outputDir, title, publicDir);
20
20
 
21
21
  const combined = merge(baseConfig, browserConfig);
22
22
 
23
23
  return combined;
24
24
  }
25
25
 
26
- function createBrowserConfig(workspaceDir: string, title: string, publicDir: string) {
26
+ function createBrowserConfig(outputDir: string, title: string, publicDir: string) {
27
27
  const browserConfig: Configuration = {
28
28
  // target: 'web', // already default
29
29
 
30
30
  output: {
31
- path: path.resolve(workspaceDir, publicDir),
31
+ path: path.resolve(outputDir, publicDir),
32
32
  // webpack uses `publicPath` to determine where the app is being served from.
33
33
  // It requires a trailing slash, or the file assets will get an incorrect path.
34
34
  // We inferred the "public path" (such as / or /my-project) from homepage.
Binary file