@teambit/ui 0.0.670 → 0.0.673
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/start.cmd.js +4 -4
- package/dist/start.cmd.js.map +1 -1
- package/dist/ui.main.runtime.d.ts +0 -1
- package/dist/ui.main.runtime.js +0 -15
- package/dist/ui.main.runtime.js.map +1 -1
- package/package-tar/teambit-ui-0.0.673.tgz +0 -0
- package/package.json +14 -17
- package/{preview-1646882648682.js → preview-1647141743465.js} +1 -1
- package/start.cmd.tsx +2 -2
- package/dist/open-browser.d.ts +0 -19
- package/dist/open-browser.js +0 -201
- package/dist/open-browser.js.map +0 -1
- package/package-tar/teambit-ui-0.0.670.tgz +0 -0
package/dist/start.cmd.js
CHANGED
|
@@ -31,10 +31,10 @@ function _react() {
|
|
|
31
31
|
return data;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
function
|
|
35
|
-
const data = _interopRequireDefault(require("
|
|
34
|
+
function _openBrowser() {
|
|
35
|
+
const data = _interopRequireDefault(require("react-dev-utils/openBrowser"));
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
_openBrowser = function () {
|
|
38
38
|
return data;
|
|
39
39
|
};
|
|
40
40
|
|
|
@@ -108,7 +108,7 @@ class StartCmd {
|
|
|
108
108
|
|
|
109
109
|
if (!((_server$buildOptions = server.buildOptions) !== null && _server$buildOptions !== void 0 && _server$buildOptions.launchBrowserOnStart)) return undefined;
|
|
110
110
|
await server.whenReady;
|
|
111
|
-
return (0,
|
|
111
|
+
return (0, _openBrowser().default)(this.ui.publicUrl || server.fullUrl);
|
|
112
112
|
}).catch(error => this.logger.error(error));
|
|
113
113
|
} // DO NOT CHANGE THIS - this meant to be an async hook.
|
|
114
114
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
package/dist/start.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["start.cmd.tsx"],"names":["StartCmd","constructor","ui","logger","render","uiRootName","userPattern","dev","port","rebuild","verbose","noBrowser","skipCompilation","off","appName","getUiName","invokePreStart","uiServer","createRuntime","pattern","then","server","buildOptions","launchBrowserOnStart","undefined","whenReady","publicUrl","fullUrl","catch","error","invokeOnStart","clearConsole"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAaO,MAAMA,QAAN,CAAkC;AAevCC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,EAJC,EAMDC,MANC,EAOT;AAAA,SAHQD,EAGR,GAHQA,EAGR;AAAA,SADQC,MACR,GADQA,MACR;AAAA,kDArBK,wBAqBL;AAAA,yDApBY,iEAoBZ;AAAA,mDAnBM,GAmBN;AAAA,mDAlBM,aAkBN;AAAA,8DAjBiB,EAiBjB;AAAA,qDAhBQ,CACR,CAAC,GAAD,EAAM,KAAN,EAAa,8BAAb,CADQ,EAER,CAAC,GAAD,EAAM,eAAN,EAAuB,wBAAvB,CAFQ,EAGR,CAAC,GAAD,EAAM,SAAN,EAAiB,gBAAjB,CAHQ,EAIR,CAAC,GAAD,EAAM,SAAN,EAAiB,8DAAjB,CAJQ,EAKR,CAAC,EAAD,EAAK,YAAL,EAAmB,8CAAnB,CALQ,EAMR,CAAC,EAAD,EAAK,kBAAL,EAAyB,0DAAzB,CANQ,CAgBR;AAAE,GAtBmC,CAwBvC;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEY,QAANC,MAAM,CACV,CAACC,UAAD,EAAaC,WAAb,CADU,EAEV;AAAEC,IAAAA,GAAF;AAAOC,IAAAA,IAAP;AAAaC,IAAAA,OAAb;AAAsBC,IAAAA,OAAtB;AAA+BC,IAAAA,SAA/B;AAA0CC,IAAAA;AAA1C,GAFU,EAGmB;AAC7B,SAAKT,MAAL,CAAYU,GAAZ;AACA,UAAMC,OAAO,GAAG,KAAKZ,EAAL,CAAQa,SAAR,CAAkBV,UAAlB,CAAhB;AACA,UAAM,KAAKH,EAAL,CAAQc,cAAR,CAAuB;AAAEJ,MAAAA;AAAF,KAAvB,CAAN;AACA,UAAMK,QAAQ,GAAG,KAAKf,EAAL,CAAQgB,aAAR,CAAsB;AACrCb,MAAAA,UADqC;AAErCc,MAAAA,OAAO,EAAEb,WAF4B;AAGrCC,MAAAA,GAHqC;AAIrCC,MAAAA,IAAI,EAAE,CAACA,IAJ8B;AAKrCC,MAAAA,OALqC;AAMrCC,MAAAA;AANqC,KAAtB,CAAjB;;AASA,QAAI,CAACC,SAAL,EAAgB;AACdM,MAAAA,QAAQ,CACLG,IADH,CACQ,MAAOC,MAAP,IAAkB;AAAA;;AACtB,YAAI,0BAACA,MAAM,CAACC,YAAR,iDAAC,qBAAqBC,oBAAtB,CAAJ,EAAgD,OAAOC,SAAP;AAEhD,cAAMH,MAAM,CAACI,SAAb;AAEA,eAAO,
|
|
1
|
+
{"version":3,"sources":["start.cmd.tsx"],"names":["StartCmd","constructor","ui","logger","render","uiRootName","userPattern","dev","port","rebuild","verbose","noBrowser","skipCompilation","off","appName","getUiName","invokePreStart","uiServer","createRuntime","pattern","then","server","buildOptions","launchBrowserOnStart","undefined","whenReady","publicUrl","fullUrl","catch","error","invokeOnStart","clearConsole"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAaO,MAAMA,QAAN,CAAkC;AAevCC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,EAJC,EAMDC,MANC,EAOT;AAAA,SAHQD,EAGR,GAHQA,EAGR;AAAA,SADQC,MACR,GADQA,MACR;AAAA,kDArBK,wBAqBL;AAAA,yDApBY,iEAoBZ;AAAA,mDAnBM,GAmBN;AAAA,mDAlBM,aAkBN;AAAA,8DAjBiB,EAiBjB;AAAA,qDAhBQ,CACR,CAAC,GAAD,EAAM,KAAN,EAAa,8BAAb,CADQ,EAER,CAAC,GAAD,EAAM,eAAN,EAAuB,wBAAvB,CAFQ,EAGR,CAAC,GAAD,EAAM,SAAN,EAAiB,gBAAjB,CAHQ,EAIR,CAAC,GAAD,EAAM,SAAN,EAAiB,8DAAjB,CAJQ,EAKR,CAAC,EAAD,EAAK,YAAL,EAAmB,8CAAnB,CALQ,EAMR,CAAC,EAAD,EAAK,kBAAL,EAAyB,0DAAzB,CANQ,CAgBR;AAAE,GAtBmC,CAwBvC;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAEY,QAANC,MAAM,CACV,CAACC,UAAD,EAAaC,WAAb,CADU,EAEV;AAAEC,IAAAA,GAAF;AAAOC,IAAAA,IAAP;AAAaC,IAAAA,OAAb;AAAsBC,IAAAA,OAAtB;AAA+BC,IAAAA,SAA/B;AAA0CC,IAAAA;AAA1C,GAFU,EAGmB;AAC7B,SAAKT,MAAL,CAAYU,GAAZ;AACA,UAAMC,OAAO,GAAG,KAAKZ,EAAL,CAAQa,SAAR,CAAkBV,UAAlB,CAAhB;AACA,UAAM,KAAKH,EAAL,CAAQc,cAAR,CAAuB;AAAEJ,MAAAA;AAAF,KAAvB,CAAN;AACA,UAAMK,QAAQ,GAAG,KAAKf,EAAL,CAAQgB,aAAR,CAAsB;AACrCb,MAAAA,UADqC;AAErCc,MAAAA,OAAO,EAAEb,WAF4B;AAGrCC,MAAAA,GAHqC;AAIrCC,MAAAA,IAAI,EAAE,CAACA,IAJ8B;AAKrCC,MAAAA,OALqC;AAMrCC,MAAAA;AANqC,KAAtB,CAAjB;;AASA,QAAI,CAACC,SAAL,EAAgB;AACdM,MAAAA,QAAQ,CACLG,IADH,CACQ,MAAOC,MAAP,IAAkB;AAAA;;AACtB,YAAI,0BAACA,MAAM,CAACC,YAAR,iDAAC,qBAAqBC,oBAAtB,CAAJ,EAAgD,OAAOC,SAAP;AAEhD,cAAMH,MAAM,CAACI,SAAb;AAEA,eAAO,4BAAY,KAAKvB,EAAL,CAAQwB,SAAR,IAAqBL,MAAM,CAACM,OAAxC,CAAP;AACD,OAPH,EAQGC,KARH,CAQUC,KAAD,IAAW,KAAK1B,MAAL,CAAY0B,KAAZ,CAAkBA,KAAlB,CARpB;AASD,KAvB4B,CAyB7B;AACA;;;AACA,SAAK3B,EAAL,CAAQ4B,aAAR;AACA,SAAK5B,EAAL,CAAQ6B,YAAR;AAEA,wBAAO,+BAAC,kCAAD;AAAiB,MAAA,OAAO,EAAEjB,OAA1B;AAAmC,MAAA,cAAc,EAAEG,QAAnD;AAA6D,MAAA,GAAG,EAAE,KAAKf,EAAL,CAAQwB;AAA1E,MAAP;AACD;;AA1EsC","sourcesContent":["import React from 'react';\nimport openBrowser from 'react-dev-utils/openBrowser';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { Logger } from '@teambit/logger';\nimport { UIServerConsole } from '@teambit/ui-foundation.cli.ui-server-console';\nimport type { UiMain } from './ui.main.runtime';\n\ntype StartArgs = [uiName: string, userPattern: string];\ntype StartFlags = {\n dev: boolean;\n port: string;\n rebuild: boolean;\n verbose: boolean;\n noBrowser: boolean;\n skipCompilation: boolean;\n};\n\nexport class StartCmd implements Command {\n name = 'start [type] [pattern]';\n description = 'Start a dev environment for a workspace or a specific component';\n alias = 'c';\n group = 'development';\n shortDescription = '';\n options = [\n ['d', 'dev', 'start UI server in dev mode.'],\n ['p', 'port [number]', 'port of the UI server.'],\n ['r', 'rebuild', 'rebuild the UI'],\n ['v', 'verbose', 'showing verbose output for inspection and prints stack trace'],\n ['', 'no-browser', 'do not automatically open browser when ready'],\n ['', 'skip-compilation', 'skip the auto-compilation before starting the web-server'],\n ] as CommandOptions;\n\n constructor(\n /**\n * access to the extension instance.\n */\n private ui: UiMain,\n\n private logger: Logger\n ) {}\n\n // async report([uiRootName, userPattern]: StartArgs, { dev, port, rebuild, verbose }: StartFlags): Promise<string> {\n // this.logger.off();\n // const pattern = userPattern && userPattern.toString();\n\n // const uiServer = await this.ui.createRuntime({\n // uiRootName,\n // pattern,\n // dev,\n // port: port ? parseInt(port) : undefined,\n // rebuild,\n // verbose,\n // });\n\n // return `Bit server has started on port ${uiServer.port}`;\n // }\n\n async render(\n [uiRootName, userPattern]: StartArgs,\n { dev, port, rebuild, verbose, noBrowser, skipCompilation }: StartFlags\n ): Promise<React.ReactElement> {\n this.logger.off();\n const appName = this.ui.getUiName(uiRootName);\n await this.ui.invokePreStart({ skipCompilation });\n const uiServer = this.ui.createRuntime({\n uiRootName,\n pattern: userPattern,\n dev,\n port: +port,\n rebuild,\n verbose,\n });\n\n if (!noBrowser) {\n uiServer\n .then(async (server) => {\n if (!server.buildOptions?.launchBrowserOnStart) return undefined;\n\n await server.whenReady;\n\n return openBrowser(this.ui.publicUrl || server.fullUrl);\n })\n .catch((error) => this.logger.error(error));\n }\n\n // DO NOT CHANGE THIS - this meant to be an async hook.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.ui.invokeOnStart();\n this.ui.clearConsole();\n\n return <UIServerConsole appName={appName} futureUiServer={uiServer} url={this.ui.publicUrl} />;\n }\n}\n"]}
|
|
@@ -228,7 +228,6 @@ export declare class UiMain {
|
|
|
228
228
|
clearConsole(): void;
|
|
229
229
|
buildIfNoBundle(name: string, uiRoot: UIRoot): Promise<void>;
|
|
230
230
|
get publicUrl(): string | undefined;
|
|
231
|
-
private openBrowser;
|
|
232
231
|
static defaultConfig: UIConfig;
|
|
233
232
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
234
233
|
static dependencies: import("@teambit/harmony").Aspect[];
|
package/dist/ui.main.runtime.js
CHANGED
|
@@ -243,16 +243,6 @@ function _ui() {
|
|
|
243
243
|
return data;
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
function _openBrowser() {
|
|
247
|
-
const data = require("./open-browser");
|
|
248
|
-
|
|
249
|
-
_openBrowser = function () {
|
|
250
|
-
return data;
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
return data;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
246
|
function _webpackBrowser() {
|
|
257
247
|
const data = _interopRequireDefault(require("./webpack/webpack.browser.config"));
|
|
258
248
|
|
|
@@ -659,11 +649,6 @@ class UiMain {
|
|
|
659
649
|
return this.config.publicUrl;
|
|
660
650
|
}
|
|
661
651
|
|
|
662
|
-
async openBrowser(url) {
|
|
663
|
-
const openBrowser = new (_openBrowser().OpenBrowser)(this.logger);
|
|
664
|
-
openBrowser.open(url);
|
|
665
|
-
}
|
|
666
|
-
|
|
667
652
|
static async provider([pubsub, cli, graphql, express, componentExtension, cache, loggerMain], config, [uiRootSlot, preStartSlot, onStartSlot, publicDirOverwriteSlot, buildMethodOverwriteSlot, proxyGetterSlot], harmony) {
|
|
668
653
|
// aspectExtension.registerRuntime(new RuntimeDefinition('ui', []))
|
|
669
654
|
const logger = loggerMain.createLogger(_ui().UIAspect.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui.main.runtime.ts"],"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","path","ssrConfig","filter","x","compiler","compilerRun","run","bind","results","UnknownBuildError","hasErrors","clearConsole","Error","toString","registerStartPlugin","startPlugin","register","initiatePlugins","options","plugins","values","Promise","all","map","plugin","initiate","createRuntime","pattern","dev","port","rebuild","verbose","isHost","setHostPriority","uiServer","UIServer","create","uiRootExtension","ui","startPlugins","addSignalListener","portRange","buildUI","start","pub","UIAspect","id","createUiServerStartedEvent","host","process","on","exit","getPort","selectPort","registerPreStart","preStartFn","registerOnStart","onStartFn","registerBuildUIOverwrite","fn","registerPublicDirOverwrite","getOverwriteBuildFn","buildMethodOverwrite","undefined","overwritePublic","invokePreStart","preStartOpts","promises","invokeOnStart","registerUiRoot","get","uis","length","priority","getUiName","createLink","aspectDefs","rootExtensionName","runtimeName","rootAspect","contents","toObject","filepath","__dirname","fs","existsSync","outputFileSync","from","to","usedPorts","Port","set","concat","overwrite","hash","buildIfChanged","buildIfNoBundle","buildUiHash","runtime","aspects","sort","a","b","aspectPath","aspect","runtimePath","join","force","hashed","console","chalk","cyan","configFile","stdout","write","platform","output","pathExistsSync","publicUrl","openBrowser","url","OpenBrowser","open","provider","cli","loggerMain","proxyGetterSlot","createLogger","StartCmd","UIBuildCmd","MainRuntime","PubsubAspect","CLIAspect","GraphqlAspect","ExpressAspect","ComponentAspect","CacheAspect","LoggerAspect","Slot","withType","addRuntime"],"mappings":"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","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 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 { OpenBrowser } from './open-browser';\nimport createWebpackConfig from './webpack/webpack.browser.config';\nimport createSsrWebpackConfig from './webpack/webpack.ssr.config';\nimport { StartPlugin, StartPluginOptions } from './start-plugin';\n\nexport type UIDeps = [PubsubMain, CLIMain, GraphqlMain, ExpressMain, ComponentMain, CacheMain, LoggerMain, AspectMain];\n\nexport type UIRootRegistry = SlotRegistry<UIRoot>;\n\nexport type PreStart = (preStartOpts: PreStartOpts) => Promise<void>;\n\nexport type PreStartOpts = { skipCompilation?: boolean };\n\nexport type OnStart = () => Promise<undefined | ComponentType<{}>>;\n\nexport type StartPluginSlot = SlotRegistry<StartPlugin>;\n\nexport type PublicDirOverwrite = (uiRoot: UIRoot) => Promise<string | undefined>;\n\nexport type BuildMethodOverwrite = (name: string, uiRoot: UIRoot, rebuild?: boolean) => Promise<string>;\n\nexport type PreStartSlot = SlotRegistry<PreStart>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\n\nexport type PublicDirOverwriteSlot = SlotRegistry<PublicDirOverwrite>;\n\nexport type BuildMethodOverwriteSlot = SlotRegistry<BuildMethodOverwrite>;\n\nexport type UIConfig = {\n /**\n * port for the UI root to use.\n */\n port?: number;\n\n /**\n * port range for the UI root to use.\n */\n portRange: [number, number];\n\n /**\n * host for the UI root\n */\n host: string;\n\n /**\n * directory in workspace to use for public assets.\n * always relative to the workspace root directory.\n */\n publicDir: string;\n\n /** the url to display when server is listening. Note that bit does not provide proxying to this url */\n publicUrl?: string;\n};\n\nexport type RuntimeOptions = {\n /**\n * determine whether to initiate on verbose mode.\n */\n verbose?: boolean;\n\n /**\n * name of the UI root to load.\n */\n uiRootName?: string;\n\n /**\n * component selector pattern to load.\n */\n pattern?: string;\n\n /**\n * determine whether to start a dev server (defaults to false).\n */\n dev?: boolean;\n\n /**\n * port of the config.\n */\n port?: number;\n\n /**\n * determine whether to rebuild the UI before start.\n */\n rebuild?: boolean;\n};\n\nexport class UiMain {\n constructor(\n /**\n * Pubsub extension.\n */\n private pubsub: PubsubMain,\n\n private config: UIConfig,\n\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * slot registry of ui roots.\n */\n private uiRootSlot: UIRootRegistry,\n\n /**\n * express extension.\n */\n private express: ExpressMain,\n\n /**\n * pre-start slot\n */\n private preStartSlot: PreStartSlot,\n\n /**\n * on start slot\n */\n private onStartSlot: OnStartSlot,\n\n /**\n * Overwrite the public dir Slot\n */\n private publicDirOverwriteSlot: PublicDirOverwriteSlot,\n\n /**\n * Overwrite the build ui method\n */\n private buildMethodOverwriteSlot: BuildMethodOverwriteSlot,\n\n /**\n * component extension.\n */\n private componentExtension: ComponentMain,\n\n /**\n * ui logger instance.\n */\n private cache: CacheMain,\n\n /**\n * ui logger instance.\n */\n private logger: Logger,\n\n private harmony: Harmony,\n\n private startPluginSlot: StartPluginSlot\n ) {}\n\n async publicDir(uiRoot: UIRoot) {\n const overwriteFn = this.getOverwritePublic();\n if (overwriteFn) {\n const hasDir = await overwriteFn(uiRoot);\n if (hasDir) return hasDir;\n }\n\n if (this.config.publicDir.startsWith('/')) {\n return this.config.publicDir.substring(1);\n }\n\n return this.config.publicDir;\n }\n\n private getUiByName(name: string) {\n const roots = this.uiRootSlot.toArray();\n const [, root] =\n roots.find(([, uiRoot]) => {\n return uiRoot.name === name;\n }) || [];\n\n return root;\n }\n\n /**\n * create a build of the given UI root.\n */\n async build(uiRootName?: string): Promise<webpack.MultiStats | undefined> {\n // TODO: change to MultiStats from webpack once they export it in their types\n this.logger.debug(`build, uiRootName: \"${uiRootName}\"`);\n const maybeUiRoot = this.getUi(uiRootName);\n\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n const [name, uiRoot] = maybeUiRoot;\n\n // TODO: @uri refactor all dev server related code to use the bundler extension instead.\n const ssr = uiRoot.buildOptions?.ssr || false;\n const mainEntry = await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name);\n\n const browserConfig = createWebpackConfig(uiRoot.path, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(uiRoot.path, [mainEntry], await this.publicDir(uiRoot));\n\n const config = [browserConfig, ssrConfig].filter((x) => !!x) as webpack.Configuration[];\n const compiler = webpack(config);\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" running webpack`);\n const compilerRun = promisify(compiler.run.bind(compiler));\n const results = await compilerRun();\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" completed webpack`);\n if (!results) throw new UnknownBuildError();\n if (results?.hasErrors()) {\n this.clearConsole();\n throw new Error(results?.toString());\n }\n\n return results;\n }\n\n registerStartPlugin(startPlugin: StartPlugin) {\n this.startPluginSlot.register(startPlugin);\n return this;\n }\n\n private async initiatePlugins(options: StartPluginOptions) {\n const plugins = this.startPluginSlot.values();\n await Promise.all(plugins.map((plugin) => plugin.initiate(options)));\n return plugins;\n }\n\n /**\n * create a Bit UI runtime.\n */\n async createRuntime({ uiRootName, pattern, dev, port, rebuild, verbose }: RuntimeOptions) {\n const maybeUiRoot = this.getUi(uiRootName);\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n\n const [name, uiRoot] = maybeUiRoot;\n\n const plugins = await this.initiatePlugins({\n verbose,\n pattern,\n });\n\n if (this.componentExtension.isHost(name)) this.componentExtension.setHostPriority(name);\n\n const uiServer = UIServer.create({\n express: this.express,\n graphql: this.graphql,\n uiRoot,\n uiRootExtension: name,\n ui: this,\n logger: this.logger,\n publicDir: await this.publicDir(uiRoot),\n startPlugins: plugins,\n });\n\n // Adding signal listeners to make sure we immediately close the process on sigint / sigterm (otherwise webpack dev server closing will take time)\n this.addSignalListener();\n if (dev) {\n await uiServer.dev({ portRange: port || this.config.portRange });\n } else {\n await this.buildUI(name, uiRoot, rebuild);\n await uiServer.start({ portRange: port || this.config.portRange });\n }\n\n this.pubsub.pub(UIAspect.id, this.createUiServerStartedEvent(this.config.host, uiServer.port, uiRoot));\n\n return uiServer;\n }\n\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\n }\n\n async getPort(port?: number): Promise<number> {\n if (port) return port;\n return this.config.port || this.selectPort();\n }\n\n /**\n * Events\n */\n private createUiServerStartedEvent = (targetHost, targetPort, uiRoot) => {\n return new UiServerStartedEvent(Date.now(), targetHost, targetPort, uiRoot);\n };\n\n /**\n * pre-start events are triggered and *completed* before the webserver started.\n * (the promise is awaited)\n */\n registerPreStart(preStartFn: PreStart) {\n this.preStartSlot.register(preStartFn);\n }\n\n /**\n * bind to ui server start event.\n */\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerBuildUIOverwrite(fn: BuildMethodOverwrite) {\n this.buildMethodOverwriteSlot.register(fn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerPublicDirOverwrite(fn: PublicDirOverwrite) {\n this.publicDirOverwriteSlot.register(fn);\n return this;\n }\n\n private getOverwriteBuildFn() {\n const buildMethodOverwrite = this.buildMethodOverwriteSlot.toArray();\n if (buildMethodOverwrite[0]) {\n const [, fn] = buildMethodOverwrite[0];\n return fn;\n }\n return undefined;\n }\n\n private getOverwritePublic() {\n const overwritePublic = this.publicDirOverwriteSlot.toArray();\n if (overwritePublic[0]) {\n const [, fn] = overwritePublic[0];\n return fn;\n }\n return undefined;\n }\n\n async invokePreStart(preStartOpts: PreStartOpts): Promise<void> {\n const promises = this.preStartSlot.values().map((fn) => fn(preStartOpts));\n await Promise.all(promises);\n }\n\n async invokeOnStart(): Promise<ComponentType[]> {\n const promises = this.onStartSlot.values().map((fn) => fn());\n const startPlugins = await Promise.all(promises);\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 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 ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n this.harmony.config.toObject()\n );\n const filepath = resolve(join(__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 private async openBrowser(url: string) {\n const openBrowser = new OpenBrowser(this.logger);\n openBrowser.open(url);\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"]}
|
|
1
|
+
{"version":3,"sources":["ui.main.runtime.ts"],"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","path","ssrConfig","filter","x","compiler","compilerRun","run","bind","results","UnknownBuildError","hasErrors","clearConsole","Error","toString","registerStartPlugin","startPlugin","register","initiatePlugins","options","plugins","values","Promise","all","map","plugin","initiate","createRuntime","pattern","dev","port","rebuild","verbose","isHost","setHostPriority","uiServer","UIServer","create","uiRootExtension","ui","startPlugins","addSignalListener","portRange","buildUI","start","pub","UIAspect","id","createUiServerStartedEvent","host","process","on","exit","getPort","selectPort","registerPreStart","preStartFn","registerOnStart","onStartFn","registerBuildUIOverwrite","fn","registerPublicDirOverwrite","getOverwriteBuildFn","buildMethodOverwrite","undefined","overwritePublic","invokePreStart","preStartOpts","promises","invokeOnStart","registerUiRoot","get","uis","length","priority","getUiName","createLink","aspectDefs","rootExtensionName","runtimeName","rootAspect","contents","toObject","filepath","__dirname","fs","existsSync","outputFileSync","from","to","usedPorts","Port","set","concat","overwrite","hash","buildIfChanged","buildIfNoBundle","buildUiHash","runtime","aspects","sort","a","b","aspectPath","aspect","runtimePath","join","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"],"mappings":"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","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 fs from 'fs-extra';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { join, resolve } from 'path';\nimport { promisify } from 'util';\nimport webpack from 'webpack';\nimport { UiServerStartedEvent } from './events';\nimport { createRoot } from './create-root';\nimport { UnknownUI, UnknownBuildError } from './exceptions';\nimport { StartCmd } from './start.cmd';\nimport { UIBuildCmd } from './ui-build.cmd';\nimport { UIRoot } from './ui-root';\nimport { UIServer } from './ui-server';\nimport { UIAspect, UIRuntime } from './ui.aspect';\nimport createWebpackConfig from './webpack/webpack.browser.config';\nimport createSsrWebpackConfig from './webpack/webpack.ssr.config';\nimport { StartPlugin, StartPluginOptions } from './start-plugin';\n\nexport type UIDeps = [PubsubMain, CLIMain, GraphqlMain, ExpressMain, ComponentMain, CacheMain, LoggerMain, AspectMain];\n\nexport type UIRootRegistry = SlotRegistry<UIRoot>;\n\nexport type PreStart = (preStartOpts: PreStartOpts) => Promise<void>;\n\nexport type PreStartOpts = { skipCompilation?: boolean };\n\nexport type OnStart = () => Promise<undefined | ComponentType<{}>>;\n\nexport type StartPluginSlot = SlotRegistry<StartPlugin>;\n\nexport type PublicDirOverwrite = (uiRoot: UIRoot) => Promise<string | undefined>;\n\nexport type BuildMethodOverwrite = (name: string, uiRoot: UIRoot, rebuild?: boolean) => Promise<string>;\n\nexport type PreStartSlot = SlotRegistry<PreStart>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\n\nexport type PublicDirOverwriteSlot = SlotRegistry<PublicDirOverwrite>;\n\nexport type BuildMethodOverwriteSlot = SlotRegistry<BuildMethodOverwrite>;\n\nexport type UIConfig = {\n /**\n * port for the UI root to use.\n */\n port?: number;\n\n /**\n * port range for the UI root to use.\n */\n portRange: [number, number];\n\n /**\n * host for the UI root\n */\n host: string;\n\n /**\n * directory in workspace to use for public assets.\n * always relative to the workspace root directory.\n */\n publicDir: string;\n\n /** the url to display when server is listening. Note that bit does not provide proxying to this url */\n publicUrl?: string;\n};\n\nexport type RuntimeOptions = {\n /**\n * determine whether to initiate on verbose mode.\n */\n verbose?: boolean;\n\n /**\n * name of the UI root to load.\n */\n uiRootName?: string;\n\n /**\n * component selector pattern to load.\n */\n pattern?: string;\n\n /**\n * determine whether to start a dev server (defaults to false).\n */\n dev?: boolean;\n\n /**\n * port of the config.\n */\n port?: number;\n\n /**\n * determine whether to rebuild the UI before start.\n */\n rebuild?: boolean;\n};\n\nexport class UiMain {\n constructor(\n /**\n * Pubsub extension.\n */\n private pubsub: PubsubMain,\n\n private config: UIConfig,\n\n /**\n * graphql extension.\n */\n private graphql: GraphqlMain,\n\n /**\n * slot registry of ui roots.\n */\n private uiRootSlot: UIRootRegistry,\n\n /**\n * express extension.\n */\n private express: ExpressMain,\n\n /**\n * pre-start slot\n */\n private preStartSlot: PreStartSlot,\n\n /**\n * on start slot\n */\n private onStartSlot: OnStartSlot,\n\n /**\n * Overwrite the public dir Slot\n */\n private publicDirOverwriteSlot: PublicDirOverwriteSlot,\n\n /**\n * Overwrite the build ui method\n */\n private buildMethodOverwriteSlot: BuildMethodOverwriteSlot,\n\n /**\n * component extension.\n */\n private componentExtension: ComponentMain,\n\n /**\n * ui logger instance.\n */\n private cache: CacheMain,\n\n /**\n * ui logger instance.\n */\n private logger: Logger,\n\n private harmony: Harmony,\n\n private startPluginSlot: StartPluginSlot\n ) {}\n\n async publicDir(uiRoot: UIRoot) {\n const overwriteFn = this.getOverwritePublic();\n if (overwriteFn) {\n const hasDir = await overwriteFn(uiRoot);\n if (hasDir) return hasDir;\n }\n\n if (this.config.publicDir.startsWith('/')) {\n return this.config.publicDir.substring(1);\n }\n\n return this.config.publicDir;\n }\n\n private getUiByName(name: string) {\n const roots = this.uiRootSlot.toArray();\n const [, root] =\n roots.find(([, uiRoot]) => {\n return uiRoot.name === name;\n }) || [];\n\n return root;\n }\n\n /**\n * create a build of the given UI root.\n */\n async build(uiRootName?: string): Promise<webpack.MultiStats | undefined> {\n // TODO: change to MultiStats from webpack once they export it in their types\n this.logger.debug(`build, uiRootName: \"${uiRootName}\"`);\n const maybeUiRoot = this.getUi(uiRootName);\n\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n const [name, uiRoot] = maybeUiRoot;\n\n // TODO: @uri refactor all dev server related code to use the bundler extension instead.\n const ssr = uiRoot.buildOptions?.ssr || false;\n const mainEntry = await this.generateRoot(await uiRoot.resolveAspects(UIRuntime.name), name);\n\n const browserConfig = createWebpackConfig(uiRoot.path, [mainEntry], uiRoot.name, await this.publicDir(uiRoot));\n const ssrConfig = ssr && createSsrWebpackConfig(uiRoot.path, [mainEntry], await this.publicDir(uiRoot));\n\n const config = [browserConfig, ssrConfig].filter((x) => !!x) as webpack.Configuration[];\n const compiler = webpack(config);\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" running webpack`);\n const compilerRun = promisify(compiler.run.bind(compiler));\n const results = await compilerRun();\n this.logger.debug(`build, uiRootName: \"${uiRootName}\" completed webpack`);\n if (!results) throw new UnknownBuildError();\n if (results?.hasErrors()) {\n this.clearConsole();\n throw new Error(results?.toString());\n }\n\n return results;\n }\n\n registerStartPlugin(startPlugin: StartPlugin) {\n this.startPluginSlot.register(startPlugin);\n return this;\n }\n\n private async initiatePlugins(options: StartPluginOptions) {\n const plugins = this.startPluginSlot.values();\n await Promise.all(plugins.map((plugin) => plugin.initiate(options)));\n return plugins;\n }\n\n /**\n * create a Bit UI runtime.\n */\n async createRuntime({ uiRootName, pattern, dev, port, rebuild, verbose }: RuntimeOptions) {\n const maybeUiRoot = this.getUi(uiRootName);\n if (!maybeUiRoot) throw new UnknownUI(uiRootName, this.possibleUis());\n\n const [name, uiRoot] = maybeUiRoot;\n\n const plugins = await this.initiatePlugins({\n verbose,\n pattern,\n });\n\n if (this.componentExtension.isHost(name)) this.componentExtension.setHostPriority(name);\n\n const uiServer = UIServer.create({\n express: this.express,\n graphql: this.graphql,\n uiRoot,\n uiRootExtension: name,\n ui: this,\n logger: this.logger,\n publicDir: await this.publicDir(uiRoot),\n startPlugins: plugins,\n });\n\n // Adding signal listeners to make sure we immediately close the process on sigint / sigterm (otherwise webpack dev server closing will take time)\n this.addSignalListener();\n if (dev) {\n await uiServer.dev({ portRange: port || this.config.portRange });\n } else {\n await this.buildUI(name, uiRoot, rebuild);\n await uiServer.start({ portRange: port || this.config.portRange });\n }\n\n this.pubsub.pub(UIAspect.id, this.createUiServerStartedEvent(this.config.host, uiServer.port, uiRoot));\n\n return uiServer;\n }\n\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\n }\n\n async getPort(port?: number): Promise<number> {\n if (port) return port;\n return this.config.port || this.selectPort();\n }\n\n /**\n * Events\n */\n private createUiServerStartedEvent = (targetHost, targetPort, uiRoot) => {\n return new UiServerStartedEvent(Date.now(), targetHost, targetPort, uiRoot);\n };\n\n /**\n * pre-start events are triggered and *completed* before the webserver started.\n * (the promise is awaited)\n */\n registerPreStart(preStartFn: PreStart) {\n this.preStartSlot.register(preStartFn);\n }\n\n /**\n * bind to ui server start event.\n */\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerBuildUIOverwrite(fn: BuildMethodOverwrite) {\n this.buildMethodOverwriteSlot.register(fn);\n return this;\n }\n\n /**\n * overwrite the build ui function\n */\n registerPublicDirOverwrite(fn: PublicDirOverwrite) {\n this.publicDirOverwriteSlot.register(fn);\n return this;\n }\n\n private getOverwriteBuildFn() {\n const buildMethodOverwrite = this.buildMethodOverwriteSlot.toArray();\n if (buildMethodOverwrite[0]) {\n const [, fn] = buildMethodOverwrite[0];\n return fn;\n }\n return undefined;\n }\n\n private getOverwritePublic() {\n const overwritePublic = this.publicDirOverwriteSlot.toArray();\n if (overwritePublic[0]) {\n const [, fn] = overwritePublic[0];\n return fn;\n }\n return undefined;\n }\n\n async invokePreStart(preStartOpts: PreStartOpts): Promise<void> {\n const promises = this.preStartSlot.values().map((fn) => fn(preStartOpts));\n await Promise.all(promises);\n }\n\n async invokeOnStart(): Promise<ComponentType[]> {\n const promises = this.onStartSlot.values().map((fn) => fn());\n const startPlugins = await Promise.all(promises);\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 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 ) {\n const contents = await createRoot(\n aspectDefs,\n rootExtensionName,\n rootAspect,\n runtimeName,\n this.harmony.config.toObject()\n );\n const filepath = resolve(join(__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"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.673",
|
|
4
4
|
"homepage": "https://bit.dev/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.
|
|
9
|
+
"version": "0.0.673"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
13
|
-
"
|
|
14
|
-
"cross-spawn": "7.0.3",
|
|
15
|
-
"open": "7.4.2",
|
|
13
|
+
"react-dev-utils": "11.0.4",
|
|
16
14
|
"webpack-dev-server": "4.1.0",
|
|
17
15
|
"react-router-dom": "5.2.0",
|
|
18
16
|
"express-history-api-fallback": "2.2.1",
|
|
@@ -20,12 +18,12 @@
|
|
|
20
18
|
"http-proxy": "1.18.1",
|
|
21
19
|
"webpack": "5.51.1",
|
|
22
20
|
"@teambit/harmony": "0.2.11",
|
|
21
|
+
"chalk": "2.4.2",
|
|
23
22
|
"fs-extra": "10.0.0",
|
|
24
23
|
"lodash.compact": "3.0.1",
|
|
25
24
|
"webpack-merge": "5.8.0",
|
|
26
25
|
"postcss-preset-env": "6.7.0",
|
|
27
26
|
"mini-css-extract-plugin": "2.2.2",
|
|
28
|
-
"react-dev-utils": "11.0.4",
|
|
29
27
|
"webpack-manifest-plugin": "4.0.2",
|
|
30
28
|
"workbox-webpack-plugin": "6.2.4",
|
|
31
29
|
"css-minimizer-webpack-plugin": "3.0.2",
|
|
@@ -54,33 +52,33 @@
|
|
|
54
52
|
"@teambit/base-ui.loaders.loader-ribbon": "1.0.0",
|
|
55
53
|
"@teambit/base-ui.theme.fonts.roboto": "1.0.0",
|
|
56
54
|
"@teambit/base-ui.theme.theme-provider": "1.0.1",
|
|
57
|
-
"@teambit/aspect-loader": "0.0.
|
|
55
|
+
"@teambit/aspect-loader": "0.0.673",
|
|
58
56
|
"@teambit/toolbox.path.to-windows-compatible-path": "0.0.483",
|
|
59
57
|
"@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.487",
|
|
60
|
-
"@teambit/logger": "0.0.542",
|
|
61
58
|
"@teambit/cli": "0.0.452",
|
|
59
|
+
"@teambit/logger": "0.0.542",
|
|
62
60
|
"@teambit/ui-foundation.cli.ui-server-console": "0.0.490",
|
|
63
|
-
"@teambit/bundler": "0.0.
|
|
64
|
-
"@teambit/component": "0.0.
|
|
61
|
+
"@teambit/bundler": "0.0.673",
|
|
62
|
+
"@teambit/component": "0.0.673",
|
|
65
63
|
"@teambit/express": "0.0.546",
|
|
66
|
-
"@teambit/graphql": "0.0.
|
|
64
|
+
"@teambit/graphql": "0.0.673",
|
|
67
65
|
"@teambit/toolbox.network.get-port": "0.0.113",
|
|
68
|
-
"@teambit/aspect": "0.0.
|
|
66
|
+
"@teambit/aspect": "0.0.673",
|
|
69
67
|
"@teambit/cache": "0.0.542",
|
|
70
|
-
"@teambit/pubsub": "0.0.
|
|
71
|
-
"@teambit/react-router": "0.0.
|
|
68
|
+
"@teambit/pubsub": "0.0.673",
|
|
69
|
+
"@teambit/react-router": "0.0.673",
|
|
72
70
|
"@teambit/ui-foundation.ui.rendering.html": "0.0.69",
|
|
73
71
|
"@teambit/design.theme.icons-font": "1.0.10",
|
|
74
72
|
"@teambit/design.ui.tooltip": "0.0.352",
|
|
75
73
|
"@teambit/ui-foundation.ui.global-loader": "0.0.486",
|
|
76
74
|
"@teambit/webpack.modules.generate-style-loaders": "0.0.103",
|
|
77
75
|
"@teambit/webpack.modules.style-regexps": "0.0.132",
|
|
78
|
-
"@teambit/webpack": "0.0.
|
|
76
|
+
"@teambit/webpack": "0.0.673"
|
|
79
77
|
},
|
|
80
78
|
"devDependencies": {
|
|
81
79
|
"@types/lodash": "4.14.165",
|
|
82
|
-
"@types/cross-spawn": "6.0.2",
|
|
83
80
|
"@types/react": "^17.0.8",
|
|
81
|
+
"@types/react-dev-utils": "9.0.10",
|
|
84
82
|
"@types/webpack-dev-server": "4.0.3",
|
|
85
83
|
"@types/react-router-dom": "5.1.7",
|
|
86
84
|
"@types/express": "4.17.9",
|
|
@@ -89,7 +87,6 @@
|
|
|
89
87
|
"@types/lodash.compact": "3.0.6",
|
|
90
88
|
"@types/react-dom": "^17.0.5",
|
|
91
89
|
"@types/mini-css-extract-plugin": "2.2.0",
|
|
92
|
-
"@types/react-dev-utils": "9.0.10",
|
|
93
90
|
"@types/postcss-normalize": "9.0.1",
|
|
94
91
|
"@types/node": "12.20.4",
|
|
95
92
|
"@types/mocha": "9.1.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.ui-foundation_ui@0.0.
|
|
1
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.ui-foundation_ui@0.0.673/dist/ui.docs.md')]
|
package/start.cmd.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import openBrowser from 'react-dev-utils/openBrowser';
|
|
3
3
|
import { Command, CommandOptions } from '@teambit/cli';
|
|
4
4
|
import { Logger } from '@teambit/logger';
|
|
5
5
|
import { UIServerConsole } from '@teambit/ui-foundation.cli.ui-server-console';
|
|
@@ -78,7 +78,7 @@ export class StartCmd implements Command {
|
|
|
78
78
|
|
|
79
79
|
await server.whenReady;
|
|
80
80
|
|
|
81
|
-
return
|
|
81
|
+
return openBrowser(this.ui.publicUrl || server.fullUrl);
|
|
82
82
|
})
|
|
83
83
|
.catch((error) => this.logger.error(error));
|
|
84
84
|
}
|
package/dist/open-browser.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Logger } from '@teambit/logger';
|
|
2
|
-
export declare class OpenBrowser {
|
|
3
|
-
private logger;
|
|
4
|
-
constructor(logger: Logger);
|
|
5
|
-
OSX_CHROME: string;
|
|
6
|
-
Actions: Readonly<{
|
|
7
|
-
NONE: number;
|
|
8
|
-
BROWSER: number;
|
|
9
|
-
SCRIPT: number;
|
|
10
|
-
}>;
|
|
11
|
-
/**
|
|
12
|
-
* Reads the BROWSER environment variable and decides what to do with it. Returns
|
|
13
|
-
* true if it opened a browser or ran a node.js script, otherwise false.
|
|
14
|
-
*/
|
|
15
|
-
open(url: string): boolean;
|
|
16
|
-
private getBrowserEnv;
|
|
17
|
-
private executeNodeScript;
|
|
18
|
-
private startBrowserProcess;
|
|
19
|
-
}
|
package/dist/open-browser.js
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("core-js/modules/es.array.iterator.js");
|
|
6
|
-
|
|
7
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
8
|
-
|
|
9
|
-
Object.defineProperty(exports, "__esModule", {
|
|
10
|
-
value: true
|
|
11
|
-
});
|
|
12
|
-
exports.OpenBrowser = void 0;
|
|
13
|
-
|
|
14
|
-
function _defineProperty2() {
|
|
15
|
-
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
|
|
17
|
-
_defineProperty2 = function () {
|
|
18
|
-
return data;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
return data;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function _child_process() {
|
|
25
|
-
const data = require("child_process");
|
|
26
|
-
|
|
27
|
-
_child_process = function () {
|
|
28
|
-
return data;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
return data;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function _chalk() {
|
|
35
|
-
const data = _interopRequireDefault(require("chalk"));
|
|
36
|
-
|
|
37
|
-
_chalk = function () {
|
|
38
|
-
return data;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
return data;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function _crossSpawn() {
|
|
45
|
-
const data = _interopRequireDefault(require("cross-spawn"));
|
|
46
|
-
|
|
47
|
-
_crossSpawn = function () {
|
|
48
|
-
return data;
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
return data;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function _open() {
|
|
55
|
-
const data = _interopRequireDefault(require("open"));
|
|
56
|
-
|
|
57
|
-
_open = function () {
|
|
58
|
-
return data;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
return data;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
class OpenBrowser {
|
|
65
|
-
constructor(logger) {
|
|
66
|
-
this.logger = logger;
|
|
67
|
-
(0, _defineProperty2().default)(this, "OSX_CHROME", 'google chrome');
|
|
68
|
-
(0, _defineProperty2().default)(this, "Actions", Object.freeze({
|
|
69
|
-
NONE: 0,
|
|
70
|
-
BROWSER: 1,
|
|
71
|
-
SCRIPT: 2
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Reads the BROWSER environment variable and decides what to do with it. Returns
|
|
77
|
-
* true if it opened a browser or ran a node.js script, otherwise false.
|
|
78
|
-
*/
|
|
79
|
-
open(url) {
|
|
80
|
-
const {
|
|
81
|
-
action,
|
|
82
|
-
value,
|
|
83
|
-
args
|
|
84
|
-
} = this.getBrowserEnv();
|
|
85
|
-
|
|
86
|
-
switch (action) {
|
|
87
|
-
case this.Actions.NONE:
|
|
88
|
-
// Special case: BROWSER="none" will prevent opening completely.
|
|
89
|
-
return false;
|
|
90
|
-
|
|
91
|
-
case this.Actions.SCRIPT:
|
|
92
|
-
return this.executeNodeScript(value, url);
|
|
93
|
-
|
|
94
|
-
case this.Actions.BROWSER:
|
|
95
|
-
return this.startBrowserProcess(value, url, args);
|
|
96
|
-
|
|
97
|
-
default:
|
|
98
|
-
throw new Error('Not implemented.');
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
getBrowserEnv() {
|
|
103
|
-
// Attempt to honor this environment variable.
|
|
104
|
-
// It is specific to the operating system.
|
|
105
|
-
// See https://github.com/sindresorhus/open#app for documentation.
|
|
106
|
-
const value = process.env.BROWSER;
|
|
107
|
-
const args = process.env.BROWSER_ARGS ? process.env.BROWSER_ARGS.split(' ') : [];
|
|
108
|
-
let action;
|
|
109
|
-
|
|
110
|
-
if (!value) {
|
|
111
|
-
// Default.
|
|
112
|
-
action = this.Actions.BROWSER;
|
|
113
|
-
} else if (value.toLowerCase().endsWith('.js')) {
|
|
114
|
-
action = this.Actions.SCRIPT;
|
|
115
|
-
} else if (value.toLowerCase() === 'none') {
|
|
116
|
-
action = this.Actions.NONE;
|
|
117
|
-
} else {
|
|
118
|
-
action = this.Actions.BROWSER;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return {
|
|
122
|
-
action,
|
|
123
|
-
value,
|
|
124
|
-
args
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
executeNodeScript(scriptPath, url) {
|
|
129
|
-
const extraArgs = process.argv.slice(2);
|
|
130
|
-
const child = (0, _crossSpawn().default)(process.execPath, [scriptPath, ...extraArgs, url], {
|
|
131
|
-
stdio: 'inherit'
|
|
132
|
-
});
|
|
133
|
-
child.on('close', code => {
|
|
134
|
-
if (code !== 0) {
|
|
135
|
-
this.logger.info(_chalk().default.red('The script specified as BROWSER environment variable failed.'));
|
|
136
|
-
this.logger.info(`${_chalk().default.cyan(scriptPath)} exited with code ${code}.`);
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
startBrowserProcess(browser, url, args) {
|
|
143
|
-
// If we're on OS X, the user hasn't specifically
|
|
144
|
-
// requested a different browser, we can try opening
|
|
145
|
-
// Chrome with AppleScript. This lets us reuse an
|
|
146
|
-
// existing tab when possible instead of creating a new one.
|
|
147
|
-
const shouldTryOpenChromiumWithAppleScript = process.platform === 'darwin' && (typeof browser !== 'string' || browser === this.OSX_CHROME);
|
|
148
|
-
|
|
149
|
-
if (shouldTryOpenChromiumWithAppleScript) {
|
|
150
|
-
// Will use the first open browser found from list
|
|
151
|
-
const supportedChromiumBrowsers = ['Google Chrome Canary', 'Google Chrome', 'Microsoft Edge', 'Brave Browser', 'Vivaldi', 'Chromium'];
|
|
152
|
-
|
|
153
|
-
for (const chromiumBrowser of supportedChromiumBrowsers) {
|
|
154
|
-
try {
|
|
155
|
-
// Try our best to reuse existing tab
|
|
156
|
-
// on OSX Chromium-based browser with AppleScript
|
|
157
|
-
(0, _child_process().execSync)(`ps cax | grep "${chromiumBrowser}"`);
|
|
158
|
-
(0, _child_process().execSync)(`osascript openChrome.applescript "${encodeURI(url)}" "${chromiumBrowser}"`, {
|
|
159
|
-
cwd: __dirname,
|
|
160
|
-
stdio: 'ignore'
|
|
161
|
-
});
|
|
162
|
-
return true;
|
|
163
|
-
} catch (err) {// Ignore errors.
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
} // Another special case: on OS X, check if BROWSER has been set to "open".
|
|
167
|
-
// In this case, instead of passing `open` to `opn` (which won't work),
|
|
168
|
-
// just ignore it (thus ensuring the intended behavior, i.e. opening the system browser):
|
|
169
|
-
// https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (process.platform === 'darwin' && browser === 'open') {
|
|
173
|
-
browser = undefined;
|
|
174
|
-
} // If there are arguments, they must be passed as array with the browser
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
if (typeof browser === 'string' && args.length > 0) {
|
|
178
|
-
browser = [browser].concat(args);
|
|
179
|
-
} // Fallback to open
|
|
180
|
-
// (It will always open new tab)
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
try {
|
|
184
|
-
const options = {
|
|
185
|
-
app: browser,
|
|
186
|
-
wait: false,
|
|
187
|
-
url: true
|
|
188
|
-
};
|
|
189
|
-
(0, _open().default)(url, options).catch(() => {}); // Prevent `unhandledRejection` error.
|
|
190
|
-
|
|
191
|
-
return true;
|
|
192
|
-
} catch (err) {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
exports.OpenBrowser = OpenBrowser;
|
|
200
|
-
|
|
201
|
-
//# sourceMappingURL=open-browser.js.map
|
package/dist/open-browser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["open-browser.ts"],"names":["OpenBrowser","constructor","logger","Object","freeze","NONE","BROWSER","SCRIPT","open","url","action","value","args","getBrowserEnv","Actions","executeNodeScript","startBrowserProcess","Error","process","env","BROWSER_ARGS","split","toLowerCase","endsWith","scriptPath","extraArgs","argv","slice","child","execPath","stdio","on","code","info","chalk","red","cyan","browser","shouldTryOpenChromiumWithAppleScript","platform","OSX_CHROME","supportedChromiumBrowsers","chromiumBrowser","encodeURI","cwd","__dirname","err","undefined","length","concat","options","app","wait","catch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,WAAN,CAAkB;AACvBC,EAAAA,WAAW,CAASC,MAAT,EAAyB;AAAA,SAAhBA,MAAgB,GAAhBA,MAAgB;AAAA,wDACvB,eADuB;AAAA,qDAG1BC,MAAM,CAACC,MAAP,CAAc;AACtBC,MAAAA,IAAI,EAAE,CADgB;AAEtBC,MAAAA,OAAO,EAAE,CAFa;AAGtBC,MAAAA,MAAM,EAAE;AAHc,KAAd,CAH0B;AAAE;;AAStC;AACF;AACA;AACA;AACEC,EAAAA,IAAI,CAACC,GAAD,EAAc;AAChB,UAAM;AAAEC,MAAAA,MAAF;AAAUC,MAAAA,KAAV;AAAiBC,MAAAA;AAAjB,QAA0B,KAAKC,aAAL,EAAhC;;AACA,YAAQH,MAAR;AACE,WAAK,KAAKI,OAAL,CAAaT,IAAlB;AACE;AACA,eAAO,KAAP;;AACF,WAAK,KAAKS,OAAL,CAAaP,MAAlB;AACE,eAAO,KAAKQ,iBAAL,CAAuBJ,KAAvB,EAA8BF,GAA9B,CAAP;;AACF,WAAK,KAAKK,OAAL,CAAaR,OAAlB;AACE,eAAO,KAAKU,mBAAL,CAAyBL,KAAzB,EAAgCF,GAAhC,EAAqCG,IAArC,CAAP;;AACF;AACE,cAAM,IAAIK,KAAJ,CAAU,kBAAV,CAAN;AATJ;AAWD;;AAEOJ,EAAAA,aAAa,GAAG;AACtB;AACA;AACA;AACA,UAAMF,KAAK,GAAGO,OAAO,CAACC,GAAR,CAAYb,OAA1B;AACA,UAAMM,IAAI,GAAGM,OAAO,CAACC,GAAR,CAAYC,YAAZ,GAA2BF,OAAO,CAACC,GAAR,CAAYC,YAAZ,CAAyBC,KAAzB,CAA+B,GAA/B,CAA3B,GAAiE,EAA9E;AACA,QAAIX,MAAJ;;AACA,QAAI,CAACC,KAAL,EAAY;AACV;AACAD,MAAAA,MAAM,GAAG,KAAKI,OAAL,CAAaR,OAAtB;AACD,KAHD,MAGO,IAAIK,KAAK,CAACW,WAAN,GAAoBC,QAApB,CAA6B,KAA7B,CAAJ,EAAyC;AAC9Cb,MAAAA,MAAM,GAAG,KAAKI,OAAL,CAAaP,MAAtB;AACD,KAFM,MAEA,IAAII,KAAK,CAACW,WAAN,OAAwB,MAA5B,EAAoC;AACzCZ,MAAAA,MAAM,GAAG,KAAKI,OAAL,CAAaT,IAAtB;AACD,KAFM,MAEA;AACLK,MAAAA,MAAM,GAAG,KAAKI,OAAL,CAAaR,OAAtB;AACD;;AACD,WAAO;AAAEI,MAAAA,MAAF;AAAUC,MAAAA,KAAV;AAAiBC,MAAAA;AAAjB,KAAP;AACD;;AAEOG,EAAAA,iBAAiB,CAACS,UAAD,EAAaf,GAAb,EAAkB;AACzC,UAAMgB,SAAS,GAAGP,OAAO,CAACQ,IAAR,CAAaC,KAAb,CAAmB,CAAnB,CAAlB;AACA,UAAMC,KAAK,GAAG,2BAAMV,OAAO,CAACW,QAAd,EAAwB,CAACL,UAAD,EAAa,GAAGC,SAAhB,EAA2BhB,GAA3B,CAAxB,EAAyD;AACrEqB,MAAAA,KAAK,EAAE;AAD8D,KAAzD,CAAd;AAGAF,IAAAA,KAAK,CAACG,EAAN,CAAS,OAAT,EAAmBC,IAAD,IAAU;AAC1B,UAAIA,IAAI,KAAK,CAAb,EAAgB;AACd,aAAK9B,MAAL,CAAY+B,IAAZ,CAAiBC,iBAAMC,GAAN,CAAU,8DAAV,CAAjB;AACA,aAAKjC,MAAL,CAAY+B,IAAZ,CAAkB,GAAEC,iBAAME,IAAN,CAAWZ,UAAX,CAAuB,qBAAoBQ,IAAK,GAApE;AACD;AACF,KALD;AAMA,WAAO,IAAP;AACD;;AAEOhB,EAAAA,mBAAmB,CAACqB,OAAD,EAAe5B,GAAf,EAA4BG,IAA5B,EAAuC;AAChE;AACA;AACA;AACA;AACA,UAAM0B,oCAAoC,GACxCpB,OAAO,CAACqB,QAAR,KAAqB,QAArB,KAAkC,OAAOF,OAAP,KAAmB,QAAnB,IAA+BA,OAAO,KAAK,KAAKG,UAAlF,CADF;;AAGA,QAAIF,oCAAJ,EAA0C;AACxC;AACA,YAAMG,yBAAyB,GAAG,CAChC,sBADgC,EAEhC,eAFgC,EAGhC,gBAHgC,EAIhC,eAJgC,EAKhC,SALgC,EAMhC,UANgC,CAAlC;;AASA,WAAK,MAAMC,eAAX,IAA8BD,yBAA9B,EAAyD;AACvD,YAAI;AACF;AACA;AACA,yCAAU,kBAAiBC,eAAgB,GAA3C;AACA,yCAAU,qCAAoCC,SAAS,CAAClC,GAAD,CAAM,MAAKiC,eAAgB,GAAlF,EAAsF;AACpFE,YAAAA,GAAG,EAAEC,SAD+E;AAEpFf,YAAAA,KAAK,EAAE;AAF6E,WAAtF;AAIA,iBAAO,IAAP;AACD,SATD,CASE,OAAOgB,GAAP,EAAiB,CACjB;AACD;AACF;AACF,KAjC+D,CAmChE;AACA;AACA;AACA;;;AACA,QAAI5B,OAAO,CAACqB,QAAR,KAAqB,QAArB,IAAiCF,OAAO,KAAK,MAAjD,EAAyD;AACvDA,MAAAA,OAAO,GAAGU,SAAV;AACD,KAzC+D,CA2ChE;;;AACA,QAAI,OAAOV,OAAP,KAAmB,QAAnB,IAA+BzB,IAAI,CAACoC,MAAL,GAAc,CAAjD,EAAoD;AAClDX,MAAAA,OAAO,GAAG,CAACA,OAAD,EAAUY,MAAV,CAAiBrC,IAAjB,CAAV;AACD,KA9C+D,CAgDhE;AACA;;;AACA,QAAI;AACF,YAAMsC,OAAO,GAAG;AAAEC,QAAAA,GAAG,EAAEd,OAAP;AAAgBe,QAAAA,IAAI,EAAE,KAAtB;AAA6B3C,QAAAA,GAAG,EAAE;AAAlC,OAAhB;AACA,2BAAKA,GAAL,EAAUyC,OAAV,EAAmBG,KAAnB,CAAyB,MAAM,CAAE,CAAjC,EAFE,CAEkC;;AACpC,aAAO,IAAP;AACD,KAJD,CAIE,OAAOP,GAAP,EAAiB;AACjB,aAAO,KAAP;AACD;AACF;;AAxHsB","sourcesContent":["import { execSync } from 'child_process';\nimport chalk from 'chalk';\nimport spawn from 'cross-spawn';\nimport open from 'open';\nimport { Logger } from '@teambit/logger';\n\nexport class OpenBrowser {\n constructor(private logger: Logger) {}\n OSX_CHROME = 'google chrome';\n\n Actions = Object.freeze({\n NONE: 0,\n BROWSER: 1,\n SCRIPT: 2,\n });\n\n /**\n * Reads the BROWSER environment variable and decides what to do with it. Returns\n * true if it opened a browser or ran a node.js script, otherwise false.\n */\n open(url: string) {\n const { action, value, args } = this.getBrowserEnv();\n switch (action) {\n case this.Actions.NONE:\n // Special case: BROWSER=\"none\" will prevent opening completely.\n return false;\n case this.Actions.SCRIPT:\n return this.executeNodeScript(value, url);\n case this.Actions.BROWSER:\n return this.startBrowserProcess(value, url, args);\n default:\n throw new Error('Not implemented.');\n }\n }\n\n private getBrowserEnv() {\n // Attempt to honor this environment variable.\n // It is specific to the operating system.\n // See https://github.com/sindresorhus/open#app for documentation.\n const value = process.env.BROWSER;\n const args = process.env.BROWSER_ARGS ? process.env.BROWSER_ARGS.split(' ') : [];\n let action;\n if (!value) {\n // Default.\n action = this.Actions.BROWSER;\n } else if (value.toLowerCase().endsWith('.js')) {\n action = this.Actions.SCRIPT;\n } else if (value.toLowerCase() === 'none') {\n action = this.Actions.NONE;\n } else {\n action = this.Actions.BROWSER;\n }\n return { action, value, args };\n }\n\n private executeNodeScript(scriptPath, url) {\n const extraArgs = process.argv.slice(2);\n const child = spawn(process.execPath, [scriptPath, ...extraArgs, url], {\n stdio: 'inherit',\n });\n child.on('close', (code) => {\n if (code !== 0) {\n this.logger.info(chalk.red('The script specified as BROWSER environment variable failed.'));\n this.logger.info(`${chalk.cyan(scriptPath)} exited with code ${code}.`);\n }\n });\n return true;\n }\n\n private startBrowserProcess(browser: any, url: string, args: any) {\n // If we're on OS X, the user hasn't specifically\n // requested a different browser, we can try opening\n // Chrome with AppleScript. This lets us reuse an\n // existing tab when possible instead of creating a new one.\n const shouldTryOpenChromiumWithAppleScript =\n process.platform === 'darwin' && (typeof browser !== 'string' || browser === this.OSX_CHROME);\n\n if (shouldTryOpenChromiumWithAppleScript) {\n // Will use the first open browser found from list\n const supportedChromiumBrowsers = [\n 'Google Chrome Canary',\n 'Google Chrome',\n 'Microsoft Edge',\n 'Brave Browser',\n 'Vivaldi',\n 'Chromium',\n ];\n\n for (const chromiumBrowser of supportedChromiumBrowsers) {\n try {\n // Try our best to reuse existing tab\n // on OSX Chromium-based browser with AppleScript\n execSync(`ps cax | grep \"${chromiumBrowser}\"`);\n execSync(`osascript openChrome.applescript \"${encodeURI(url)}\" \"${chromiumBrowser}\"`, {\n cwd: __dirname,\n stdio: 'ignore',\n });\n return true;\n } catch (err: any) {\n // Ignore errors.\n }\n }\n }\n\n // Another special case: on OS X, check if BROWSER has been set to \"open\".\n // In this case, instead of passing `open` to `opn` (which won't work),\n // just ignore it (thus ensuring the intended behavior, i.e. opening the system browser):\n // https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768\n if (process.platform === 'darwin' && browser === 'open') {\n browser = undefined;\n }\n\n // If there are arguments, they must be passed as array with the browser\n if (typeof browser === 'string' && args.length > 0) {\n browser = [browser].concat(args);\n }\n\n // Fallback to open\n // (It will always open new tab)\n try {\n const options = { app: browser, wait: false, url: true };\n open(url, options).catch(() => {}); // Prevent `unhandledRejection` error.\n return true;\n } catch (err: any) {\n return false;\n }\n }\n}\n"]}
|
|
Binary file
|