@teambit/application 0.0.283 → 0.0.287

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.
@@ -1,8 +1,9 @@
1
1
  import { CLIMain } from '@teambit/cli';
2
2
  import { AspectLoaderMain } from '@teambit/aspect-loader';
3
3
  import { SlotRegistry } from '@teambit/harmony';
4
+ import { Workspace } from '@teambit/workspace';
4
5
  import { BuilderMain } from '@teambit/builder';
5
- import { LoggerMain } from '@teambit/logger';
6
+ import { Logger, LoggerMain } from '@teambit/logger';
6
7
  import { EnvsMain } from '@teambit/envs';
7
8
  import { ComponentMain, ComponentID } from '@teambit/component';
8
9
  import { ApplicationType } from './application-type';
@@ -31,7 +32,9 @@ export declare class ApplicationMain {
31
32
  private componentAspect;
32
33
  private appService;
33
34
  private aspectLoader;
34
- constructor(appSlot: ApplicationSlot, appTypeSlot: ApplicationTypeSlot, deploymentProviderSlot: DeploymentProviderSlot, envs: EnvsMain, componentAspect: ComponentMain, appService: AppService, aspectLoader: AspectLoaderMain);
35
+ private workspace;
36
+ private logger;
37
+ constructor(appSlot: ApplicationSlot, appTypeSlot: ApplicationTypeSlot, deploymentProviderSlot: DeploymentProviderSlot, envs: EnvsMain, componentAspect: ComponentMain, appService: AppService, aspectLoader: AspectLoaderMain, workspace: Workspace, logger: Logger);
35
38
  /**
36
39
  * register a new app.
37
40
  */
@@ -65,7 +68,9 @@ export declare class ApplicationMain {
65
68
  */
66
69
  getAppOrThrow(appName: string): Application;
67
70
  private computeOptions;
68
- runApp(appName: string, options?: Partial<ServeAppOptions>): Promise<{
71
+ runApp(appName: string, options?: Partial<ServeAppOptions> & {
72
+ skipWatch?: boolean;
73
+ }): Promise<{
69
74
  app: Application;
70
75
  port: number | void;
71
76
  }>;
@@ -77,12 +82,13 @@ export declare class ApplicationMain {
77
82
  static runtime: import("@teambit/harmony").RuntimeDefinition;
78
83
  static dependencies: import("@teambit/harmony").Aspect[];
79
84
  static slots: (((registerFn: () => string) => SlotRegistry<ApplicationType<unknown>[]>) | ((registerFn: () => string) => SlotRegistry<Application[]>) | ((registerFn: () => string) => SlotRegistry<DeploymentProvider[]>))[];
80
- static provider([cli, loggerAspect, builder, envs, component, aspectLoader]: [
85
+ static provider([cli, loggerAspect, builder, envs, component, aspectLoader, workspace]: [
81
86
  CLIMain,
82
87
  LoggerMain,
83
88
  BuilderMain,
84
89
  EnvsMain,
85
90
  ComponentMain,
86
- AspectLoaderMain
91
+ AspectLoaderMain,
92
+ Workspace
87
93
  ], config: ApplicationAspectConfig, [appTypeSlot, appSlot, deploymentProviderSlot]: [ApplicationTypeSlot, ApplicationSlot, DeploymentProviderSlot]): Promise<ApplicationMain>;
88
94
  }
@@ -61,6 +61,16 @@ function _harmony() {
61
61
  return data;
62
62
  }
63
63
 
64
+ function _workspace() {
65
+ const data = _interopRequireDefault(require("@teambit/workspace"));
66
+
67
+ _workspace = function () {
68
+ return data;
69
+ };
70
+
71
+ return data;
72
+ }
73
+
64
74
  function _builder() {
65
75
  const data = require("@teambit/builder");
66
76
 
@@ -210,7 +220,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
210
220
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
211
221
 
212
222
  class ApplicationMain {
213
- constructor(appSlot, appTypeSlot, deploymentProviderSlot, envs, componentAspect, appService, aspectLoader) {
223
+ constructor(appSlot, appTypeSlot, deploymentProviderSlot, envs, componentAspect, appService, aspectLoader, workspace, logger) {
214
224
  this.appSlot = appSlot;
215
225
  this.appTypeSlot = appTypeSlot;
216
226
  this.deploymentProviderSlot = deploymentProviderSlot;
@@ -218,6 +228,8 @@ class ApplicationMain {
218
228
  this.componentAspect = componentAspect;
219
229
  this.appService = appService;
220
230
  this.aspectLoader = aspectLoader;
231
+ this.workspace = workspace;
232
+ this.logger = logger;
221
233
  }
222
234
  /**
223
235
  * register a new app.
@@ -310,6 +322,16 @@ class ApplicationMain {
310
322
  const context = await this.createAppContext(appName);
311
323
  if (!context) throw new (_exceptions().AppNotFound)(appName);
312
324
  const port = await app.run(context);
325
+
326
+ if (!options.skipWatch) {
327
+ this.workspace.watcher.watchAll({
328
+ preCompile: false
329
+ }).catch(err => {
330
+ // don't throw an error, we don't want to break the "run" process
331
+ this.logger.error(`compilation failed`, err);
332
+ });
333
+ }
334
+
313
335
  return {
314
336
  app,
315
337
  port
@@ -345,10 +367,10 @@ class ApplicationMain {
345
367
  });
346
368
  }
347
369
 
348
- static async provider([cli, loggerAspect, builder, envs, component, aspectLoader], config, [appTypeSlot, appSlot, deploymentProviderSlot]) {
370
+ static async provider([cli, loggerAspect, builder, envs, component, aspectLoader, workspace], config, [appTypeSlot, appSlot, deploymentProviderSlot]) {
349
371
  const logger = loggerAspect.createLogger(_application().ApplicationAspect.id);
350
372
  const appService = new (_application2().AppService)();
351
- const application = new ApplicationMain(appSlot, appTypeSlot, deploymentProviderSlot, envs, component, appService, aspectLoader);
373
+ const application = new ApplicationMain(appSlot, appTypeSlot, deploymentProviderSlot, envs, component, appService, aspectLoader, workspace, logger);
352
374
  const appCmd = new (_app().AppCmd)();
353
375
  appCmd.commands = [new (_app().AppListCmd)(application)];
354
376
  aspectLoader.registerPlugins([new (_app2().AppPlugin)(appSlot)]);
@@ -364,7 +386,7 @@ class ApplicationMain {
364
386
 
365
387
  exports.ApplicationMain = ApplicationMain;
366
388
  (0, _defineProperty2().default)(ApplicationMain, "runtime", _cli().MainRuntime);
367
- (0, _defineProperty2().default)(ApplicationMain, "dependencies", [_cli().CLIAspect, _logger().LoggerAspect, _builder().BuilderAspect, _envs().EnvsAspect, _component().default, _aspectLoader().AspectLoaderAspect]);
389
+ (0, _defineProperty2().default)(ApplicationMain, "dependencies", [_cli().CLIAspect, _logger().LoggerAspect, _builder().BuilderAspect, _envs().EnvsAspect, _component().default, _aspectLoader().AspectLoaderAspect, _workspace().default]);
368
390
  (0, _defineProperty2().default)(ApplicationMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType(), _harmony().Slot.withType()]);
369
391
 
370
392
  _application().ApplicationAspect.addRuntime(ApplicationMain);
@@ -1 +1 @@
1
- {"version":3,"sources":["application.main.runtime.ts"],"names":["ApplicationMain","constructor","appSlot","appTypeSlot","deploymentProviderSlot","envs","componentAspect","appService","aspectLoader","registerApp","app","register","listApps","values","mapApps","toArray","listAppsById","id","undefined","get","toString","getApp","appName","apps","find","name","registerAppType","appType","plugin","AppTypePlugin","registerPlugins","getAppAspect","getAppOrThrow","AppNotFound","computeOptions","opts","defaultOpts","dev","defaultPortRange","runApp","options","context","createAppContext","port","run","getAppIdOrThrow","maybeApp","ComponentID","fromString","host","getHost","components","list","component","c","isEqual","env","createEnvironment","res","results","data","Object","assign","appComponent","provider","cli","loggerAspect","builder","config","logger","createLogger","ApplicationAspect","AppService","application","appCmd","AppCmd","commands","AppListCmd","AppPlugin","registerBuildTasks","AppsBuildTask","registerSnapTasks","DeployTask","registerTagTasks","registerGroup","RunCmd","AppListCmdDeprecated","MainRuntime","CLIAspect","LoggerAspect","BuilderAspect","EnvsAspect","ComponentAspect","AspectLoaderAspect","Slot","withType","addRuntime"],"mappings":"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","sourcesContent":["import { MainRuntime, CLIMain, CLIAspect } from '@teambit/cli';\nimport { flatten, cloneDeep } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport ComponentAspect, { ComponentMain, ComponentID } from '@teambit/component';\nimport { ApplicationType } from './application-type';\nimport { Application } from './application';\nimport { DeploymentProvider } from './deployment-provider';\nimport { AppNotFound } from './exceptions';\nimport { ApplicationAspect } from './application.aspect';\nimport { AppListCmdDeprecated } from './app-list.cmd';\nimport { AppsBuildTask } from './build.task';\nimport { RunCmd } from './run.cmd';\nimport { AppService } from './application.service';\nimport { AppCmd, AppListCmd } from './app.cmd';\nimport { AppPlugin } from './app.plugin';\nimport { AppTypePlugin } from './app-type.plugin';\nimport { AppContext } from './app-context';\nimport { DeployTask } from './deploy.task';\n\nexport type ApplicationTypeSlot = SlotRegistry<ApplicationType<unknown>[]>;\nexport type ApplicationSlot = SlotRegistry<Application[]>;\nexport type DeploymentProviderSlot = SlotRegistry<DeploymentProvider[]>;\n\nexport type ApplicationAspectConfig = {};\n\nexport type ServeAppOptions = {\n /**\n * default port range used to serve applications.\n */\n defaultPortRange?: number[];\n\n /**\n * determine whether to start the application in dev mode.\n */\n dev: boolean;\n};\n\nexport class ApplicationMain {\n constructor(\n private appSlot: ApplicationSlot,\n private appTypeSlot: ApplicationTypeSlot,\n private deploymentProviderSlot: DeploymentProviderSlot,\n private envs: EnvsMain,\n private componentAspect: ComponentMain,\n private appService: AppService,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n /**\n * register a new app.\n */\n registerApp(app: Application) {\n this.appSlot.register([app]);\n return this;\n }\n\n /**\n * list all registered apps.\n */\n listApps(): Application[] {\n return flatten(this.appSlot.values());\n }\n\n /**\n * map all apps by component ID.\n */\n mapApps() {\n return this.appSlot.toArray();\n }\n\n /**\n * list apps by a component id.\n */\n listAppsById(id?: ComponentID): Application[] | undefined {\n if (!id) return undefined;\n return this.appSlot.get(id.toString());\n }\n\n /**\n * get an app.\n */\n getApp(appName: string, id?: ComponentID): Application | undefined {\n const apps = this.listAppsById(id) || this.listApps();\n return apps.find((app) => app.name === appName);\n }\n\n /**\n * registers a new app and sets a plugin for it.\n */\n registerAppType<T>(appType: ApplicationType<T>) {\n const plugin = new AppTypePlugin(`*.${appType.name}.*`, appType, this.appSlot);\n this.aspectLoader.registerPlugins([plugin]);\n this.appTypeSlot.register([appType]);\n return this;\n }\n\n /**\n * get an app AspectId.\n */\n getAppAspect(appName: string): string | undefined {\n return this.appSlot.toArray().find(([, apps]) => apps.find((app) => app.name === appName))?.[0];\n }\n\n /**\n * get app to throw.\n */\n getAppOrThrow(appName: string) {\n const app = this.getApp(appName);\n if (!app) throw new AppNotFound(appName);\n return app;\n }\n\n private computeOptions(opts: Partial<ServeAppOptions>) {\n const defaultOpts: ServeAppOptions = {\n dev: false,\n defaultPortRange: [3100, 3500],\n };\n\n return {\n defaultOpts,\n ...opts,\n };\n }\n\n async runApp(appName: string, options: Partial<ServeAppOptions> = {}) {\n const app = this.getAppOrThrow(appName);\n this.computeOptions(options);\n const context = await this.createAppContext(appName);\n if (!context) throw new AppNotFound(appName);\n const port = await app.run(context);\n return { app, port };\n }\n\n /**\n * get the component ID of a certain app.\n */\n getAppIdOrThrow(appName: string) {\n const maybeApp = this.appSlot.toArray().find(([, apps]) => {\n return apps.find((app) => app.name === appName);\n });\n\n if (!maybeApp) throw new AppNotFound(appName);\n return ComponentID.fromString(maybeApp[0]);\n }\n\n private async createAppContext(appName: string): Promise<AppContext> {\n const host = this.componentAspect.getHost();\n const components = await host.list();\n const id = this.getAppIdOrThrow(appName);\n const component = components.find((c) => c.id.isEqual(id));\n if (!component) throw new AppNotFound(appName);\n // console.log(comp)\n\n const env = await this.envs.createEnvironment([component]);\n const res = await env.run(this.appService);\n const context = res.results[0].data;\n if (!context) throw new AppNotFound(appName);\n return Object.assign(cloneDeep(context), {\n appName,\n appComponent: component,\n });\n }\n\n static runtime = MainRuntime;\n static dependencies = [CLIAspect, LoggerAspect, BuilderAspect, EnvsAspect, ComponentAspect, AspectLoaderAspect];\n\n static slots = [\n Slot.withType<ApplicationType<unknown>[]>(),\n Slot.withType<Application[]>(),\n Slot.withType<DeploymentProvider[]>(),\n ];\n\n static async provider(\n [cli, loggerAspect, builder, envs, component, aspectLoader]: [\n CLIMain,\n LoggerMain,\n BuilderMain,\n EnvsMain,\n ComponentMain,\n AspectLoaderMain\n ],\n config: ApplicationAspectConfig,\n [appTypeSlot, appSlot, deploymentProviderSlot]: [ApplicationTypeSlot, ApplicationSlot, DeploymentProviderSlot]\n ) {\n const logger = loggerAspect.createLogger(ApplicationAspect.id);\n const appService = new AppService();\n const application = new ApplicationMain(\n appSlot,\n appTypeSlot,\n deploymentProviderSlot,\n envs,\n component,\n appService,\n aspectLoader\n );\n const appCmd = new AppCmd();\n appCmd.commands = [new AppListCmd(application)];\n aspectLoader.registerPlugins([new AppPlugin(appSlot)]);\n builder.registerBuildTasks([new AppsBuildTask(application)]);\n builder.registerSnapTasks([new DeployTask(application, builder)]);\n builder.registerTagTasks([new DeployTask(application, builder)]);\n cli.registerGroup('apps', 'Applications');\n cli.register(new RunCmd(application, logger), new AppListCmdDeprecated(application), appCmd);\n\n return application;\n }\n}\n\nApplicationAspect.addRuntime(ApplicationMain);\n"]}
1
+ {"version":3,"sources":["application.main.runtime.ts"],"names":["ApplicationMain","constructor","appSlot","appTypeSlot","deploymentProviderSlot","envs","componentAspect","appService","aspectLoader","workspace","logger","registerApp","app","register","listApps","values","mapApps","toArray","listAppsById","id","undefined","get","toString","getApp","appName","apps","find","name","registerAppType","appType","plugin","AppTypePlugin","registerPlugins","getAppAspect","getAppOrThrow","AppNotFound","computeOptions","opts","defaultOpts","dev","defaultPortRange","runApp","options","context","createAppContext","port","run","skipWatch","watcher","watchAll","preCompile","catch","err","error","getAppIdOrThrow","maybeApp","ComponentID","fromString","host","getHost","components","list","component","c","isEqual","env","createEnvironment","res","results","data","Object","assign","appComponent","provider","cli","loggerAspect","builder","config","createLogger","ApplicationAspect","AppService","application","appCmd","AppCmd","commands","AppListCmd","AppPlugin","registerBuildTasks","AppsBuildTask","registerSnapTasks","DeployTask","registerTagTasks","registerGroup","RunCmd","AppListCmdDeprecated","MainRuntime","CLIAspect","LoggerAspect","BuilderAspect","EnvsAspect","ComponentAspect","AspectLoaderAspect","WorkspaceAspect","Slot","withType","addRuntime"],"mappings":"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","sourcesContent":["import { MainRuntime, CLIMain, CLIAspect } from '@teambit/cli';\nimport { flatten, cloneDeep } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport ComponentAspect, { ComponentMain, ComponentID } from '@teambit/component';\nimport { ApplicationType } from './application-type';\nimport { Application } from './application';\nimport { DeploymentProvider } from './deployment-provider';\nimport { AppNotFound } from './exceptions';\nimport { ApplicationAspect } from './application.aspect';\nimport { AppListCmdDeprecated } from './app-list.cmd';\nimport { AppsBuildTask } from './build.task';\nimport { RunCmd } from './run.cmd';\nimport { AppService } from './application.service';\nimport { AppCmd, AppListCmd } from './app.cmd';\nimport { AppPlugin } from './app.plugin';\nimport { AppTypePlugin } from './app-type.plugin';\nimport { AppContext } from './app-context';\nimport { DeployTask } from './deploy.task';\n\nexport type ApplicationTypeSlot = SlotRegistry<ApplicationType<unknown>[]>;\nexport type ApplicationSlot = SlotRegistry<Application[]>;\nexport type DeploymentProviderSlot = SlotRegistry<DeploymentProvider[]>;\n\nexport type ApplicationAspectConfig = {};\n\nexport type ServeAppOptions = {\n /**\n * default port range used to serve applications.\n */\n defaultPortRange?: number[];\n\n /**\n * determine whether to start the application in dev mode.\n */\n dev: boolean;\n};\n\nexport class ApplicationMain {\n constructor(\n private appSlot: ApplicationSlot,\n private appTypeSlot: ApplicationTypeSlot,\n private deploymentProviderSlot: DeploymentProviderSlot,\n private envs: EnvsMain,\n private componentAspect: ComponentMain,\n private appService: AppService,\n private aspectLoader: AspectLoaderMain,\n private workspace: Workspace,\n private logger: Logger\n ) {}\n\n /**\n * register a new app.\n */\n registerApp(app: Application) {\n this.appSlot.register([app]);\n return this;\n }\n\n /**\n * list all registered apps.\n */\n listApps(): Application[] {\n return flatten(this.appSlot.values());\n }\n\n /**\n * map all apps by component ID.\n */\n mapApps() {\n return this.appSlot.toArray();\n }\n\n /**\n * list apps by a component id.\n */\n listAppsById(id?: ComponentID): Application[] | undefined {\n if (!id) return undefined;\n return this.appSlot.get(id.toString());\n }\n\n /**\n * get an app.\n */\n getApp(appName: string, id?: ComponentID): Application | undefined {\n const apps = this.listAppsById(id) || this.listApps();\n return apps.find((app) => app.name === appName);\n }\n\n /**\n * registers a new app and sets a plugin for it.\n */\n registerAppType<T>(appType: ApplicationType<T>) {\n const plugin = new AppTypePlugin(`*.${appType.name}.*`, appType, this.appSlot);\n this.aspectLoader.registerPlugins([plugin]);\n this.appTypeSlot.register([appType]);\n return this;\n }\n\n /**\n * get an app AspectId.\n */\n getAppAspect(appName: string): string | undefined {\n return this.appSlot.toArray().find(([, apps]) => apps.find((app) => app.name === appName))?.[0];\n }\n\n /**\n * get app to throw.\n */\n getAppOrThrow(appName: string) {\n const app = this.getApp(appName);\n if (!app) throw new AppNotFound(appName);\n return app;\n }\n\n private computeOptions(opts: Partial<ServeAppOptions>) {\n const defaultOpts: ServeAppOptions = {\n dev: false,\n defaultPortRange: [3100, 3500],\n };\n\n return {\n defaultOpts,\n ...opts,\n };\n }\n\n async runApp(appName: string, options: Partial<ServeAppOptions> & { skipWatch?: boolean } = {}) {\n const app = this.getAppOrThrow(appName);\n this.computeOptions(options);\n const context = await this.createAppContext(appName);\n if (!context) throw new AppNotFound(appName);\n const port = await app.run(context);\n if (!options.skipWatch) {\n this.workspace.watcher\n .watchAll({\n preCompile: false,\n })\n .catch((err) => {\n // don't throw an error, we don't want to break the \"run\" process\n this.logger.error(`compilation failed`, err);\n });\n }\n return { app, port };\n }\n\n /**\n * get the component ID of a certain app.\n */\n getAppIdOrThrow(appName: string) {\n const maybeApp = this.appSlot.toArray().find(([, apps]) => {\n return apps.find((app) => app.name === appName);\n });\n\n if (!maybeApp) throw new AppNotFound(appName);\n return ComponentID.fromString(maybeApp[0]);\n }\n\n private async createAppContext(appName: string): Promise<AppContext> {\n const host = this.componentAspect.getHost();\n const components = await host.list();\n const id = this.getAppIdOrThrow(appName);\n const component = components.find((c) => c.id.isEqual(id));\n if (!component) throw new AppNotFound(appName);\n // console.log(comp)\n\n const env = await this.envs.createEnvironment([component]);\n const res = await env.run(this.appService);\n const context = res.results[0].data;\n if (!context) throw new AppNotFound(appName);\n return Object.assign(cloneDeep(context), {\n appName,\n appComponent: component,\n });\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n LoggerAspect,\n BuilderAspect,\n EnvsAspect,\n ComponentAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n ];\n\n static slots = [\n Slot.withType<ApplicationType<unknown>[]>(),\n Slot.withType<Application[]>(),\n Slot.withType<DeploymentProvider[]>(),\n ];\n\n static async provider(\n [cli, loggerAspect, builder, envs, component, aspectLoader, workspace]: [\n CLIMain,\n LoggerMain,\n BuilderMain,\n EnvsMain,\n ComponentMain,\n AspectLoaderMain,\n Workspace\n ],\n config: ApplicationAspectConfig,\n [appTypeSlot, appSlot, deploymentProviderSlot]: [ApplicationTypeSlot, ApplicationSlot, DeploymentProviderSlot]\n ) {\n const logger = loggerAspect.createLogger(ApplicationAspect.id);\n const appService = new AppService();\n const application = new ApplicationMain(\n appSlot,\n appTypeSlot,\n deploymentProviderSlot,\n envs,\n component,\n appService,\n aspectLoader,\n workspace,\n logger\n );\n const appCmd = new AppCmd();\n appCmd.commands = [new AppListCmd(application)];\n aspectLoader.registerPlugins([new AppPlugin(appSlot)]);\n builder.registerBuildTasks([new AppsBuildTask(application)]);\n builder.registerSnapTasks([new DeployTask(application, builder)]);\n builder.registerTagTasks([new DeployTask(application, builder)]);\n cli.registerGroup('apps', 'Applications');\n cli.register(new RunCmd(application, logger), new AppListCmdDeprecated(application), appCmd);\n\n return application;\n }\n}\n\nApplicationAspect.addRuntime(ApplicationMain);\n"]}
package/dist/run.cmd.d.ts CHANGED
@@ -2,6 +2,11 @@ import React from 'react';
2
2
  import { Command, CommandOptions } from '@teambit/cli';
3
3
  import { Logger } from '@teambit/logger';
4
4
  import { ApplicationMain } from './application.main.runtime';
5
+ declare type RunOptions = {
6
+ dev: boolean;
7
+ verbose: boolean;
8
+ skipWatch: boolean;
9
+ };
5
10
  export declare class RunCmd implements Command {
6
11
  /**
7
12
  * access to the extension instance.
@@ -18,17 +23,7 @@ export declare class RunCmd implements Command {
18
23
  * access to the extension instance.
19
24
  */
20
25
  application: ApplicationMain, logger: Logger);
21
- report([appName]: [string], { dev }: {
22
- dev: boolean;
23
- port: string;
24
- rebuild: boolean;
25
- verbose: boolean;
26
- suppressBrowserLaunch: boolean;
27
- }): Promise<string>;
28
- render([appName]: [string], { dev }: {
29
- dev: boolean;
30
- rebuild: boolean;
31
- verbose: boolean;
32
- suppressBrowserLaunch: boolean;
33
- }): Promise<React.ReactElement>;
26
+ report([appName]: [string], { dev, skipWatch }: RunOptions): Promise<string>;
27
+ render([appName]: [string], { dev, skipWatch }: RunOptions): Promise<React.ReactElement>;
34
28
  }
29
+ export {};
package/dist/run.cmd.js CHANGED
@@ -53,30 +53,34 @@ class RunCmd {
53
53
  (0, _defineProperty2().default)(this, "description", 'run an application');
54
54
  (0, _defineProperty2().default)(this, "alias", 'c');
55
55
  (0, _defineProperty2().default)(this, "group", 'apps');
56
- (0, _defineProperty2().default)(this, "options", [['d', 'dev', 'start the application in dev mode.'], ['v', 'verbose', 'showing verbose output for inspection and prints stack trace']]);
56
+ (0, _defineProperty2().default)(this, "options", [['d', 'dev', 'start the application in dev mode.'], ['v', 'verbose', 'showing verbose output for inspection and prints stack trace'], ['', 'skip-watch', 'avoid running the watch process that compiles components in the background']]);
57
57
  }
58
58
 
59
59
  async report([appName], {
60
- dev
60
+ dev,
61
+ skipWatch
61
62
  }) {
62
63
  this.logger.off();
63
64
  const {
64
65
  port
65
66
  } = await this.application.runApp(appName, {
66
- dev
67
+ dev,
68
+ skipWatch
67
69
  });
68
70
  if (port) return `${appName} app is running on http://localhost:${port}`;
69
71
  return `${appName} app is running`;
70
72
  }
71
73
 
72
74
  async render([appName], {
73
- dev
75
+ dev,
76
+ skipWatch
74
77
  }) {
75
78
  // remove wds logs until refactoring webpack to a worker through the Worker aspect.
76
79
  const {
77
80
  port
78
81
  } = await this.application.runApp(appName, {
79
- dev
82
+ dev,
83
+ skipWatch
80
84
  });
81
85
 
82
86
  if (port) {
@@ -1 +1 @@
1
- {"version":3,"sources":["run.cmd.tsx"],"names":["RunCmd","constructor","application","logger","report","appName","dev","off","port","runApp","render"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIO,MAAMA,MAAN,CAAgC;AAUrCC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,WAJC,EAMDC,MANC,EAOT;AAAA,SAHQD,WAGR,GAHQA,WAGR;AAAA,SADQC,MACR,GADQA,MACR;AAAA,kDAhBK,WAgBL;AAAA,yDAfY,oBAeZ;AAAA,mDAdM,GAcN;AAAA,mDAbM,MAaN;AAAA,qDAZQ,CACR,CAAC,GAAD,EAAM,KAAN,EAAa,oCAAb,CADQ,EAER,CAAC,GAAD,EAAM,SAAN,EAAiB,8DAAjB,CAFQ,CAYR;AAAE;;AAEQ,QAANC,MAAM,CACV,CAACC,OAAD,CADU,EAEV;AAAEC,IAAAA;AAAF,GAFU,EAGO;AACjB,SAAKH,MAAL,CAAYI,GAAZ;AAEA,UAAM;AAAEC,MAAAA;AAAF,QAAW,MAAM,KAAKN,WAAL,CAAiBO,MAAjB,CAAwBJ,OAAxB,EAAiC;AACtDC,MAAAA;AADsD,KAAjC,CAAvB;AAIA,QAAIE,IAAJ,EAAU,OAAQ,GAAEH,OAAQ,uCAAsCG,IAAK,EAA7D;AACV,WAAQ,GAAEH,OAAQ,iBAAlB;AACD;;AAEW,QAANK,MAAM,CACV,CAACL,OAAD,CADU,EAEV;AAAEC,IAAAA;AAAF,GAFU,EAGmB;AAC7B;AACA,UAAM;AAAEE,MAAAA;AAAF,QAAW,MAAM,KAAKN,WAAL,CAAiBO,MAAjB,CAAwBJ,OAAxB,EAAiC;AACtDC,MAAAA;AADsD,KAAjC,CAAvB;;AAIA,QAAIE,IAAJ,EAAU;AACR,0BACE,+BAAC,WAAD,QACGH,OADH,0CACgDG,IADhD,CADF;AAKD;;AACD,wBAAO,+BAAC,WAAD,QAAOH,OAAP,oBAAP,CAb6B,CAc7B;AACD;;AAnDoC","sourcesContent":["import React from 'react';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { Text } from 'ink';\nimport { Logger } from '@teambit/logger';\nimport { ApplicationMain } from './application.main.runtime';\n\nexport class RunCmd implements Command {\n name = 'run <app>';\n description = 'run an application';\n alias = 'c';\n group = 'apps';\n options = [\n ['d', 'dev', 'start the application in dev mode.'],\n ['v', 'verbose', 'showing verbose output for inspection and prints stack trace'],\n ] as CommandOptions;\n\n constructor(\n /**\n * access to the extension instance.\n */\n private application: ApplicationMain,\n\n private logger: Logger\n ) {}\n\n async report(\n [appName]: [string],\n { dev }: { dev: boolean; port: string; rebuild: boolean; verbose: boolean; suppressBrowserLaunch: boolean }\n ): Promise<string> {\n this.logger.off();\n\n const { port } = await this.application.runApp(appName, {\n dev,\n });\n\n if (port) return `${appName} app is running on http://localhost:${port}`;\n return `${appName} app is running`;\n }\n\n async render(\n [appName]: [string],\n { dev }: { dev: boolean; rebuild: boolean; verbose: boolean; suppressBrowserLaunch: boolean }\n ): Promise<React.ReactElement> {\n // remove wds logs until refactoring webpack to a worker through the Worker aspect.\n const { port } = await this.application.runApp(appName, {\n dev,\n });\n\n if (port) {\n return (\n <Text>\n {appName} app is running on http://localhost:{port}\n </Text>\n );\n }\n return <Text>{appName} app is running</Text>;\n // return <UIServerConsole appName={appName} futureUiServer={uiServer} />;\n }\n}\n"]}
1
+ {"version":3,"sources":["run.cmd.tsx"],"names":["RunCmd","constructor","application","logger","report","appName","dev","skipWatch","off","port","runApp","render"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAUO,MAAMA,MAAN,CAAgC;AAWrCC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,WAJC,EAMDC,MANC,EAOT;AAAA,SAHQD,WAGR,GAHQA,WAGR;AAAA,SADQC,MACR,GADQA,MACR;AAAA,kDAjBK,WAiBL;AAAA,yDAhBY,oBAgBZ;AAAA,mDAfM,GAeN;AAAA,mDAdM,MAcN;AAAA,qDAbQ,CACR,CAAC,GAAD,EAAM,KAAN,EAAa,oCAAb,CADQ,EAER,CAAC,GAAD,EAAM,SAAN,EAAiB,8DAAjB,CAFQ,EAGR,CAAC,EAAD,EAAK,YAAL,EAAmB,4EAAnB,CAHQ,CAaR;AAAE;;AAEQ,QAANC,MAAM,CAAC,CAACC,OAAD,CAAD,EAAsB;AAAEC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,GAAtB,EAAuE;AACjF,SAAKJ,MAAL,CAAYK,GAAZ;AAEA,UAAM;AAAEC,MAAAA;AAAF,QAAW,MAAM,KAAKP,WAAL,CAAiBQ,MAAjB,CAAwBL,OAAxB,EAAiC;AACtDC,MAAAA,GADsD;AAEtDC,MAAAA;AAFsD,KAAjC,CAAvB;AAKA,QAAIE,IAAJ,EAAU,OAAQ,GAAEJ,OAAQ,uCAAsCI,IAAK,EAA7D;AACV,WAAQ,GAAEJ,OAAQ,iBAAlB;AACD;;AAEW,QAANM,MAAM,CAAC,CAACN,OAAD,CAAD,EAAsB;AAAEC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,GAAtB,EAAmF;AAC7F;AACA,UAAM;AAAEE,MAAAA;AAAF,QAAW,MAAM,KAAKP,WAAL,CAAiBQ,MAAjB,CAAwBL,OAAxB,EAAiC;AACtDC,MAAAA,GADsD;AAEtDC,MAAAA;AAFsD,KAAjC,CAAvB;;AAKA,QAAIE,IAAJ,EAAU;AACR,0BACE,+BAAC,WAAD,QACGJ,OADH,0CACgDI,IADhD,CADF;AAKD;;AACD,wBAAO,+BAAC,WAAD,QAAOJ,OAAP,oBAAP,CAd6F,CAe7F;AACD;;AAhDoC","sourcesContent":["import React from 'react';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { Text } from 'ink';\nimport { Logger } from '@teambit/logger';\nimport { ApplicationMain } from './application.main.runtime';\n\ntype RunOptions = {\n dev: boolean;\n verbose: boolean;\n skipWatch: boolean;\n};\n\nexport class RunCmd implements Command {\n name = 'run <app>';\n description = 'run an application';\n alias = 'c';\n group = 'apps';\n options = [\n ['d', 'dev', 'start the application in dev mode.'],\n ['v', 'verbose', 'showing verbose output for inspection and prints stack trace'],\n ['', 'skip-watch', 'avoid running the watch process that compiles components in the background'],\n ] as CommandOptions;\n\n constructor(\n /**\n * access to the extension instance.\n */\n private application: ApplicationMain,\n\n private logger: Logger\n ) {}\n\n async report([appName]: [string], { dev, skipWatch }: RunOptions): Promise<string> {\n this.logger.off();\n\n const { port } = await this.application.runApp(appName, {\n dev,\n skipWatch,\n });\n\n if (port) return `${appName} app is running on http://localhost:${port}`;\n return `${appName} app is running`;\n }\n\n async render([appName]: [string], { dev, skipWatch }: RunOptions): Promise<React.ReactElement> {\n // remove wds logs until refactoring webpack to a worker through the Worker aspect.\n const { port } = await this.application.runApp(appName, {\n dev,\n skipWatch,\n });\n\n if (port) {\n return (\n <Text>\n {appName} app is running on http://localhost:{port}\n </Text>\n );\n }\n return <Text>{appName} app is running</Text>;\n // return <UIServerConsole appName={appName} futureUiServer={uiServer} />;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/application",
3
- "version": "0.0.283",
3
+ "version": "0.0.287",
4
4
  "homepage": "https://bit.dev/teambit/harmony/application",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "application",
9
- "version": "0.0.283"
9
+ "version": "0.0.287"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -16,14 +16,15 @@
16
16
  "ink": "3.0.8",
17
17
  "@babel/runtime": "7.12.18",
18
18
  "core-js": "^3.0.0",
19
- "@teambit/builder": "0.0.641",
20
- "@teambit/component": "0.0.641",
21
- "@teambit/isolator": "0.0.641",
22
- "@teambit/envs": "0.0.641",
19
+ "@teambit/builder": "0.0.645",
20
+ "@teambit/component": "0.0.645",
21
+ "@teambit/isolator": "0.0.645",
22
+ "@teambit/envs": "0.0.645",
23
23
  "@teambit/cli-table": "0.0.33",
24
- "@teambit/cli": "0.0.438",
25
- "@teambit/aspect-loader": "0.0.641",
26
- "@teambit/logger": "0.0.528"
24
+ "@teambit/cli": "0.0.440",
25
+ "@teambit/aspect-loader": "0.0.645",
26
+ "@teambit/logger": "0.0.530",
27
+ "@teambit/workspace": "0.0.645"
27
28
  },
28
29
  "devDependencies": {
29
30
  "@types/lodash": "4.14.165",
@@ -35,7 +36,7 @@
35
36
  "@types/node": "12.20.4"
36
37
  },
37
38
  "peerDependencies": {
38
- "@teambit/legacy": "1.0.216",
39
+ "@teambit/legacy": "1.0.218",
39
40
  "react-dom": "^16.8.0 || ^17.0.0",
40
41
  "react": "^16.8.0 || ^17.0.0"
41
42
  },
@@ -63,7 +64,7 @@
63
64
  "react": "-"
64
65
  },
65
66
  "peerDependencies": {
66
- "@teambit/legacy": "1.0.216",
67
+ "@teambit/legacy": "1.0.218",
67
68
  "react-dom": "^16.8.0 || ^17.0.0",
68
69
  "react": "^16.8.0 || ^17.0.0"
69
70
  }
package/run.cmd.tsx CHANGED
@@ -4,6 +4,12 @@ import { Text } from 'ink';
4
4
  import { Logger } from '@teambit/logger';
5
5
  import { ApplicationMain } from './application.main.runtime';
6
6
 
7
+ type RunOptions = {
8
+ dev: boolean;
9
+ verbose: boolean;
10
+ skipWatch: boolean;
11
+ };
12
+
7
13
  export class RunCmd implements Command {
8
14
  name = 'run <app>';
9
15
  description = 'run an application';
@@ -12,6 +18,7 @@ export class RunCmd implements Command {
12
18
  options = [
13
19
  ['d', 'dev', 'start the application in dev mode.'],
14
20
  ['v', 'verbose', 'showing verbose output for inspection and prints stack trace'],
21
+ ['', 'skip-watch', 'avoid running the watch process that compiles components in the background'],
15
22
  ] as CommandOptions;
16
23
 
17
24
  constructor(
@@ -23,27 +30,23 @@ export class RunCmd implements Command {
23
30
  private logger: Logger
24
31
  ) {}
25
32
 
26
- async report(
27
- [appName]: [string],
28
- { dev }: { dev: boolean; port: string; rebuild: boolean; verbose: boolean; suppressBrowserLaunch: boolean }
29
- ): Promise<string> {
33
+ async report([appName]: [string], { dev, skipWatch }: RunOptions): Promise<string> {
30
34
  this.logger.off();
31
35
 
32
36
  const { port } = await this.application.runApp(appName, {
33
37
  dev,
38
+ skipWatch,
34
39
  });
35
40
 
36
41
  if (port) return `${appName} app is running on http://localhost:${port}`;
37
42
  return `${appName} app is running`;
38
43
  }
39
44
 
40
- async render(
41
- [appName]: [string],
42
- { dev }: { dev: boolean; rebuild: boolean; verbose: boolean; suppressBrowserLaunch: boolean }
43
- ): Promise<React.ReactElement> {
45
+ async render([appName]: [string], { dev, skipWatch }: RunOptions): Promise<React.ReactElement> {
44
46
  // remove wds logs until refactoring webpack to a worker through the Worker aspect.
45
47
  const { port } = await this.application.runApp(appName, {
46
48
  dev,
49
+ skipWatch,
47
50
  });
48
51
 
49
52
  if (port) {