@teambit/application 0.0.753 → 0.0.754

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.
@@ -90,9 +90,16 @@ export declare class ApplicationMain {
90
90
  */
91
91
  calculateAppByComponent(component: Component): Application | undefined;
92
92
  listAppTypes(): ApplicationType<unknown>[];
93
+ /**
94
+ * @deprecated use `listAppsComponents` instead.
95
+ * @returns
96
+ */
93
97
  listAppsFromComponents(): Promise<Component[]>;
98
+ listAppsComponents(): Promise<Component[]>;
99
+ private hasAppTypePattern;
94
100
  getAppPatterns(): string[];
95
101
  loadApps(): Promise<Application[]>;
102
+ loadAppsFromComponent(component: Component, rootDir: string): Promise<Application[] | undefined>;
96
103
  /**
97
104
  * get an app.
98
105
  */
@@ -114,9 +114,9 @@ function _appList() {
114
114
  };
115
115
  return data;
116
116
  }
117
- function _build() {
118
- const data = require("./build.task");
119
- _build = function () {
117
+ function _buildApplication() {
118
+ const data = require("./build-application.task");
119
+ _buildApplication = function () {
120
120
  return data;
121
121
  };
122
122
  return data;
@@ -253,15 +253,25 @@ class ApplicationMain {
253
253
  listAppTypes() {
254
254
  return (0, _lodash().flatten)(this.appTypeSlot.values());
255
255
  }
256
+
257
+ /**
258
+ * @deprecated use `listAppsComponents` instead.
259
+ * @returns
260
+ */
256
261
  async listAppsFromComponents() {
262
+ return this.listAppsComponents();
263
+ }
264
+ async listAppsComponents() {
257
265
  const components = await this.componentAspect.getHost().list();
258
266
  const appTypesPatterns = this.getAppPatterns();
259
- const apps = components.filter(component => {
260
- // has app plugin from registered types.
261
- const files = component.filesystem.byGlob(appTypesPatterns);
262
- return !!files.length;
263
- });
264
- return apps;
267
+ const appsComponents = components.filter(component => this.hasAppTypePattern(component, appTypesPatterns));
268
+ return appsComponents;
269
+ }
270
+ hasAppTypePattern(component, appTypesPatterns) {
271
+ const patterns = appTypesPatterns || this.getAppPatterns();
272
+ // has app plugin from registered types.
273
+ const files = component.filesystem.byGlob(patterns);
274
+ return !!files.length;
265
275
  }
266
276
  getAppPatterns() {
267
277
  const appTypes = this.listAppTypes();
@@ -271,12 +281,13 @@ class ApplicationMain {
271
281
  return appTypesPatterns;
272
282
  }
273
283
  async loadApps() {
274
- const apps = await this.listAppsFromComponents();
284
+ const apps = await this.listAppsComponents();
275
285
  const appTypesPatterns = this.getAppPatterns();
276
286
  const pluginsToLoad = apps.flatMap(appComponent => {
277
287
  const files = appComponent.filesystem.byGlob(appTypesPatterns);
278
288
  return files.map(file => file.path);
279
289
  });
290
+
280
291
  // const app = require(appPath);
281
292
  const appManifests = (0, _lodash().compact)(pluginsToLoad.map(pluginPath => {
282
293
  try {
@@ -291,6 +302,27 @@ class ApplicationMain {
291
302
  }));
292
303
  return appManifests;
293
304
  }
305
+ async loadAppsFromComponent(component, rootDir) {
306
+ const appTypesPatterns = this.getAppPatterns();
307
+ const isApp = this.hasAppTypePattern(component, appTypesPatterns);
308
+ if (!isApp) return undefined;
309
+ const allPluginDefs = this.aspectLoader.getPluginDefs();
310
+ const appsPluginDefs = allPluginDefs.filter(pluginDef => {
311
+ return appTypesPatterns.includes(pluginDef.pattern.toString());
312
+ });
313
+ // const fileResolver = this.aspectLoader.pluginFileResolver(component, rootDir);
314
+
315
+ const plugins = this.aspectLoader.getPluginsFromDefs(component, rootDir, appsPluginDefs);
316
+ let loadedPlugins;
317
+ if (plugins.has()) {
318
+ loadedPlugins = await plugins.load(_cli().MainRuntime.name);
319
+ await this.aspectLoader.loadExtensionsByManifests([loadedPlugins], {
320
+ seeders: [component.id.toString()]
321
+ });
322
+ }
323
+ const listAppsById = this.listAppsById(component.id);
324
+ return listAppsById;
325
+ }
294
326
 
295
327
  /**
296
328
  * get an app.
@@ -411,7 +443,7 @@ class ApplicationMain {
411
443
  const appCmd = new (_app().AppCmd)();
412
444
  appCmd.commands = [new (_app().AppListCmd)(application), new (_run().RunCmd)(application, logger)];
413
445
  aspectLoader.registerPlugins([new (_app2().AppPlugin)(appSlot)]);
414
- builder.registerBuildTasks([new (_build().AppsBuildTask)(application)]);
446
+ builder.registerBuildTasks([new (_buildApplication().AppsBuildTask)(application)]);
415
447
  builder.registerSnapTasks([new (_deploy().DeployTask)(application, builder)]);
416
448
  builder.registerTagTasks([new (_deploy().DeployTask)(application, builder)]);
417
449
  envs.registerService(appService);
@@ -1 +1 @@
1
- {"version":3,"names":["ApplicationMain","constructor","appSlot","appTypeSlot","deploymentProviderSlot","config","envs","componentAspect","appService","aspectLoader","workspace","logger","watcher","dev","ssr","watch","defaultPortRange","registerApp","app","register","listApps","flatten","values","mapApps","toArray","listAppsById","id","undefined","get","toString","getAppById","apps","head","calculateAppByComponent","component","listAppTypes","listAppsFromComponents","components","getHost","list","appTypesPatterns","getAppPatterns","filter","files","filesystem","byGlob","length","appTypes","map","appType","getAppPattern","loadApps","pluginsToLoad","flatMap","appComponent","file","path","appManifests","compact","pluginPath","appManifest","require","default","err","error","getApp","appName","find","name","getAppByNameOrId","appNameOrId","byName","byId","BitError","globPattern","registerAppType","plugin","AppTypePlugin","registerPlugins","getAppAspect","getAppOrThrow","AppNotFound","computeOptions","opts","defaultOpts","loadAppsToSlot","runApp","options","context","createAppContext","port","runSsr","AppNoSsr","result","run","preCompile","catch","errors","getAppIdOrThrow","maybeApp","host","resolveComponentId","env","createEnvironment","res","results","data","hostRootDir","getComponentPackagePath","appContext","AppContext","provider","cli","loggerAspect","builder","createLogger","ApplicationAspect","AppService","application","bind","appCmd","AppCmd","commands","AppListCmd","RunCmd","AppPlugin","registerBuildTasks","AppsBuildTask","registerSnapTasks","DeployTask","registerTagTasks","registerService","registerGroup","AppListCmdDeprecated","onComponentLoad","loadedComponent","type","applicationType","MainRuntime","CLIAspect","LoggerAspect","BuilderAspect","EnvsAspect","ComponentAspect","AspectLoaderAspect","WorkspaceAspect","WatcherAspect","Slot","withType","addRuntime"],"sources":["application.main.runtime.ts"],"sourcesContent":["import { MainRuntime, CLIMain, CLIAspect } from '@teambit/cli';\nimport { compact, flatten, head } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { BitError } from '@teambit/bit-error';\nimport WatcherAspect, { WatcherMain } from '@teambit/watcher';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport ComponentAspect, { ComponentMain, ComponentID, Component } 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';\nimport { AppNoSsr } from './exceptions/app-no-ssr';\n\nexport type ApplicationTypeSlot = SlotRegistry<ApplicationType<unknown>[]>;\nexport type ApplicationSlot = SlotRegistry<Application[]>;\nexport type DeploymentProviderSlot = SlotRegistry<DeploymentProvider[]>;\n\nexport type ApplicationAspectConfig = {\n /**\n * envs ids to load app types.\n */\n envs?: string[];\n};\n\n/**\n * Application meta data that is stored on the component on load if it's an application.\n */\nexport type ApplicationMetadata = {\n appName: string;\n type?: string;\n};\n\nexport type ServeAppOptions = {\n /**\n * default port range used to serve applications.\n */\n defaultPortRange?: [start: number, end: number];\n\n /**\n * determine whether to start the application in dev mode.\n */\n dev: boolean;\n\n /**\n * actively watch and compile the workspace (like the bit watch command)\n * @default true\n */\n watch?: boolean;\n\n /**\n * determine whether to start the application in server side mode.\n * @default false\n */\n ssr?: boolean;\n\n /**\n * exact port to run the app\n */\n port?: number;\n};\n\nexport class ApplicationMain {\n constructor(\n private appSlot: ApplicationSlot,\n // TODO unused\n private appTypeSlot: ApplicationTypeSlot,\n private deploymentProviderSlot: DeploymentProviderSlot,\n private config: ApplicationAspectConfig,\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 private watcher: WatcherMain\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 application by a component id.\n */\n async getAppById(id: ComponentID) {\n const apps = await this.listAppsById(id);\n if (!apps) return undefined;\n return head(apps);\n }\n\n /**\n * calculate an application by a component.\n * This should be only used during the on component load slot\n */\n calculateAppByComponent(component: Component) {\n const apps = this.appSlot.get(component.id.toString());\n if (!apps) return undefined;\n return head(apps);\n }\n\n listAppTypes() {\n return flatten(this.appTypeSlot.values());\n }\n\n async listAppsFromComponents() {\n const components = await this.componentAspect.getHost().list();\n const appTypesPatterns = this.getAppPatterns();\n const apps = components.filter((component) => {\n // has app plugin from registered types.\n const files = component.filesystem.byGlob(appTypesPatterns);\n return !!files.length;\n });\n\n return apps;\n }\n\n getAppPatterns() {\n const appTypes = this.listAppTypes();\n const appTypesPatterns = appTypes.map((appType) => {\n return this.getAppPattern(appType);\n });\n\n return appTypesPatterns;\n }\n\n async loadApps(): Promise<Application[]> {\n const apps = await this.listAppsFromComponents();\n const appTypesPatterns = this.getAppPatterns();\n\n const pluginsToLoad = apps.flatMap((appComponent) => {\n const files = appComponent.filesystem.byGlob(appTypesPatterns);\n return files.map((file) => file.path);\n });\n // const app = require(appPath);\n const appManifests = compact(\n pluginsToLoad.map((pluginPath) => {\n try {\n // eslint-disable-next-line\n const appManifest = require(pluginPath)?.default;\n return appManifest;\n } catch (err) {\n this.logger.error(`failed loading app manifest: ${pluginPath}`);\n return undefined;\n }\n })\n );\n\n return appManifests;\n }\n\n /**\n * get an app.\n */\n getApp(appName: string, id?: ComponentID): Application | undefined {\n const apps = id ? this.listAppsById(id) : this.listApps();\n if (!apps) return undefined;\n return apps.find((app) => app.name === appName);\n }\n\n getAppByNameOrId(appNameOrId: string): Application | undefined {\n const byName = this.getApp(appNameOrId);\n if (byName) return byName;\n const byId = this.appSlot.get(appNameOrId);\n if (!byId || !byId.length) return undefined;\n if (byId.length > 1) {\n throw new BitError(\n `unable to figure out what app to retrieve. the id \"${appNameOrId}\" has more than one app. please use the app-name`\n );\n }\n return byId[0];\n }\n\n getAppPattern(appType: ApplicationType<unknown>) {\n if (appType.globPattern) return appType.globPattern;\n return `*.${appType.name}.*`;\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(this.getAppPattern(appType), 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): Application {\n const app = this.getAppByNameOrId(appName);\n if (!app) throw new AppNotFound(appName);\n return app;\n }\n\n defaultOpts: ServeAppOptions = {\n dev: false,\n ssr: false,\n watch: true,\n defaultPortRange: [3100, 3500],\n };\n private computeOptions(opts: Partial<ServeAppOptions> = {}) {\n return {\n ...this.defaultOpts,\n ...opts,\n };\n }\n\n async loadAppsToSlot() {\n const apps = await this.loadApps();\n this.appSlot.register(apps);\n return this;\n }\n\n async runApp(appName: string, options?: ServeAppOptions) {\n options = this.computeOptions(options);\n const app = this.getAppOrThrow(appName);\n const context = await this.createAppContext(app.name, options.port);\n if (!context) throw new AppNotFound(appName);\n\n if (options.ssr) {\n if (!app.runSsr) throw new AppNoSsr(appName);\n\n const result = await app.runSsr(context);\n return { app, ...result };\n }\n\n const port = await app.run(context);\n if (options.watch) {\n this.watcher\n .watch({\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, errors: undefined };\n }\n\n /**\n * get the component ID of a certain app.\n */\n async 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\n const host = this.componentAspect.getHost();\n return host.resolveComponentId(maybeApp[0]);\n }\n\n private async createAppContext(appName: string, port?: number): Promise<AppContext> {\n const host = this.componentAspect.getHost();\n // const components = await host.list();\n const id = await this.getAppIdOrThrow(appName);\n // const component = components.find((c) => c.id.isEqual(id));\n const component = await host.get(id);\n if (!component) throw new AppNotFound(appName);\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 const hostRootDir = this.workspace.getComponentPackagePath(component);\n const appContext = new AppContext(appName, context.dev, component, this.workspace.path, context, hostRootDir, port);\n return appContext;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n LoggerAspect,\n BuilderAspect,\n EnvsAspect,\n ComponentAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n WatcherAspect,\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, watcher]: [\n CLIMain,\n LoggerMain,\n BuilderMain,\n EnvsMain,\n ComponentMain,\n AspectLoaderMain,\n Workspace,\n WatcherMain\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 config,\n envs,\n component,\n appService,\n aspectLoader,\n workspace,\n logger,\n watcher\n );\n appService.registerAppType = application.registerAppType.bind(application);\n const appCmd = new AppCmd();\n appCmd.commands = [new AppListCmd(application), new RunCmd(application, logger)];\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 envs.registerService(appService);\n cli.registerGroup('apps', 'Applications');\n cli.register(new RunCmd(application, logger), new AppListCmdDeprecated(application), appCmd);\n // cli.registerOnStart(async () => {\n // await application.loadAppsToSlot();\n // });\n if (workspace) {\n workspace.onComponentLoad(async (loadedComponent): Promise<ApplicationMetadata | undefined> => {\n const app = application.calculateAppByComponent(loadedComponent);\n if (!app) return undefined;\n return {\n appName: app.name,\n type: app.applicationType,\n };\n });\n }\n\n return application;\n }\n}\n\nApplicationAspect.addRuntime(ApplicationMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["ApplicationMain","constructor","appSlot","appTypeSlot","deploymentProviderSlot","config","envs","componentAspect","appService","aspectLoader","workspace","logger","watcher","dev","ssr","watch","defaultPortRange","registerApp","app","register","listApps","flatten","values","mapApps","toArray","listAppsById","id","undefined","get","toString","getAppById","apps","head","calculateAppByComponent","component","listAppTypes","listAppsFromComponents","listAppsComponents","components","getHost","list","appTypesPatterns","getAppPatterns","appsComponents","filter","hasAppTypePattern","patterns","files","filesystem","byGlob","length","appTypes","map","appType","getAppPattern","loadApps","pluginsToLoad","flatMap","appComponent","file","path","appManifests","compact","pluginPath","appManifest","require","default","err","error","loadAppsFromComponent","rootDir","isApp","allPluginDefs","getPluginDefs","appsPluginDefs","pluginDef","includes","pattern","plugins","getPluginsFromDefs","loadedPlugins","has","load","MainRuntime","name","loadExtensionsByManifests","seeders","getApp","appName","find","getAppByNameOrId","appNameOrId","byName","byId","BitError","globPattern","registerAppType","plugin","AppTypePlugin","registerPlugins","getAppAspect","getAppOrThrow","AppNotFound","computeOptions","opts","defaultOpts","loadAppsToSlot","runApp","options","context","createAppContext","port","runSsr","AppNoSsr","result","run","preCompile","catch","errors","getAppIdOrThrow","maybeApp","host","resolveComponentId","env","createEnvironment","res","results","data","hostRootDir","getComponentPackagePath","appContext","AppContext","provider","cli","loggerAspect","builder","createLogger","ApplicationAspect","AppService","application","bind","appCmd","AppCmd","commands","AppListCmd","RunCmd","AppPlugin","registerBuildTasks","AppsBuildTask","registerSnapTasks","DeployTask","registerTagTasks","registerService","registerGroup","AppListCmdDeprecated","onComponentLoad","loadedComponent","type","applicationType","CLIAspect","LoggerAspect","BuilderAspect","EnvsAspect","ComponentAspect","AspectLoaderAspect","WorkspaceAspect","WatcherAspect","Slot","withType","addRuntime"],"sources":["application.main.runtime.ts"],"sourcesContent":["import { MainRuntime, CLIMain, CLIAspect } from '@teambit/cli';\nimport { compact, flatten, head } from 'lodash';\nimport { AspectLoaderMain, AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { BitError } from '@teambit/bit-error';\nimport WatcherAspect, { WatcherMain } from '@teambit/watcher';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport ComponentAspect, { ComponentMain, ComponentID, Component } 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-application.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';\nimport { AppNoSsr } from './exceptions/app-no-ssr';\n\nexport type ApplicationTypeSlot = SlotRegistry<ApplicationType<unknown>[]>;\nexport type ApplicationSlot = SlotRegistry<Application[]>;\nexport type DeploymentProviderSlot = SlotRegistry<DeploymentProvider[]>;\n\nexport type ApplicationAspectConfig = {\n /**\n * envs ids to load app types.\n */\n envs?: string[];\n};\n\n/**\n * Application meta data that is stored on the component on load if it's an application.\n */\nexport type ApplicationMetadata = {\n appName: string;\n type?: string;\n};\n\nexport type ServeAppOptions = {\n /**\n * default port range used to serve applications.\n */\n defaultPortRange?: [start: number, end: number];\n\n /**\n * determine whether to start the application in dev mode.\n */\n dev: boolean;\n\n /**\n * actively watch and compile the workspace (like the bit watch command)\n * @default true\n */\n watch?: boolean;\n\n /**\n * determine whether to start the application in server side mode.\n * @default false\n */\n ssr?: boolean;\n\n /**\n * exact port to run the app\n */\n port?: number;\n};\n\nexport class ApplicationMain {\n constructor(\n private appSlot: ApplicationSlot,\n // TODO unused\n private appTypeSlot: ApplicationTypeSlot,\n private deploymentProviderSlot: DeploymentProviderSlot,\n private config: ApplicationAspectConfig,\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 private watcher: WatcherMain\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 application by a component id.\n */\n async getAppById(id: ComponentID) {\n const apps = await this.listAppsById(id);\n if (!apps) return undefined;\n return head(apps);\n }\n\n /**\n * calculate an application by a component.\n * This should be only used during the on component load slot\n */\n calculateAppByComponent(component: Component) {\n const apps = this.appSlot.get(component.id.toString());\n if (!apps) return undefined;\n return head(apps);\n }\n\n listAppTypes() {\n return flatten(this.appTypeSlot.values());\n }\n\n /**\n * @deprecated use `listAppsComponents` instead.\n * @returns\n */\n async listAppsFromComponents(): Promise<Component[]> {\n return this.listAppsComponents();\n }\n\n async listAppsComponents(): Promise<Component[]> {\n const components = await this.componentAspect.getHost().list();\n const appTypesPatterns = this.getAppPatterns();\n const appsComponents = components.filter((component) => this.hasAppTypePattern(component, appTypesPatterns));\n return appsComponents;\n }\n\n private hasAppTypePattern(component: Component, appTypesPatterns?: string[]): boolean {\n const patterns = appTypesPatterns || this.getAppPatterns();\n // has app plugin from registered types.\n const files = component.filesystem.byGlob(patterns);\n return !!files.length;\n }\n\n getAppPatterns() {\n const appTypes = this.listAppTypes();\n const appTypesPatterns = appTypes.map((appType) => {\n return this.getAppPattern(appType);\n });\n\n return appTypesPatterns;\n }\n\n async loadApps(): Promise<Application[]> {\n const apps = await this.listAppsComponents();\n const appTypesPatterns = this.getAppPatterns();\n\n const pluginsToLoad = apps.flatMap((appComponent) => {\n const files = appComponent.filesystem.byGlob(appTypesPatterns);\n return files.map((file) => file.path);\n });\n\n // const app = require(appPath);\n const appManifests = compact(\n pluginsToLoad.map((pluginPath) => {\n try {\n // eslint-disable-next-line\n const appManifest = require(pluginPath)?.default;\n return appManifest;\n } catch (err) {\n this.logger.error(`failed loading app manifest: ${pluginPath}`);\n return undefined;\n }\n })\n );\n\n return appManifests;\n }\n\n async loadAppsFromComponent(component: Component, rootDir: string): Promise<Application[] | undefined> {\n const appTypesPatterns = this.getAppPatterns();\n const isApp = this.hasAppTypePattern(component, appTypesPatterns);\n if (!isApp) return undefined;\n\n const allPluginDefs = this.aspectLoader.getPluginDefs();\n\n const appsPluginDefs = allPluginDefs.filter((pluginDef) => {\n return appTypesPatterns.includes(pluginDef.pattern.toString());\n });\n // const fileResolver = this.aspectLoader.pluginFileResolver(component, rootDir);\n\n const plugins = this.aspectLoader.getPluginsFromDefs(component, rootDir, appsPluginDefs);\n let loadedPlugins;\n if (plugins.has()) {\n loadedPlugins = await plugins.load(MainRuntime.name);\n await this.aspectLoader.loadExtensionsByManifests([loadedPlugins], { seeders: [component.id.toString()] });\n }\n\n const listAppsById = this.listAppsById(component.id);\n return listAppsById;\n }\n\n /**\n * get an app.\n */\n getApp(appName: string, id?: ComponentID): Application | undefined {\n const apps = id ? this.listAppsById(id) : this.listApps();\n if (!apps) return undefined;\n return apps.find((app) => app.name === appName);\n }\n\n getAppByNameOrId(appNameOrId: string): Application | undefined {\n const byName = this.getApp(appNameOrId);\n if (byName) return byName;\n const byId = this.appSlot.get(appNameOrId);\n if (!byId || !byId.length) return undefined;\n if (byId.length > 1) {\n throw new BitError(\n `unable to figure out what app to retrieve. the id \"${appNameOrId}\" has more than one app. please use the app-name`\n );\n }\n return byId[0];\n }\n\n getAppPattern(appType: ApplicationType<unknown>) {\n if (appType.globPattern) return appType.globPattern;\n return `*.${appType.name}.*`;\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(this.getAppPattern(appType), 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): Application {\n const app = this.getAppByNameOrId(appName);\n if (!app) throw new AppNotFound(appName);\n return app;\n }\n\n defaultOpts: ServeAppOptions = {\n dev: false,\n ssr: false,\n watch: true,\n defaultPortRange: [3100, 3500],\n };\n private computeOptions(opts: Partial<ServeAppOptions> = {}) {\n return {\n ...this.defaultOpts,\n ...opts,\n };\n }\n\n async loadAppsToSlot() {\n const apps = await this.loadApps();\n this.appSlot.register(apps);\n return this;\n }\n\n async runApp(appName: string, options?: ServeAppOptions) {\n options = this.computeOptions(options);\n const app = this.getAppOrThrow(appName);\n const context = await this.createAppContext(app.name, options.port);\n if (!context) throw new AppNotFound(appName);\n\n if (options.ssr) {\n if (!app.runSsr) throw new AppNoSsr(appName);\n\n const result = await app.runSsr(context);\n return { app, ...result };\n }\n\n const port = await app.run(context);\n if (options.watch) {\n this.watcher\n .watch({\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, errors: undefined };\n }\n\n /**\n * get the component ID of a certain app.\n */\n async 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\n const host = this.componentAspect.getHost();\n return host.resolveComponentId(maybeApp[0]);\n }\n\n private async createAppContext(appName: string, port?: number): Promise<AppContext> {\n const host = this.componentAspect.getHost();\n // const components = await host.list();\n const id = await this.getAppIdOrThrow(appName);\n // const component = components.find((c) => c.id.isEqual(id));\n const component = await host.get(id);\n if (!component) throw new AppNotFound(appName);\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 const hostRootDir = this.workspace.getComponentPackagePath(component);\n const appContext = new AppContext(appName, context.dev, component, this.workspace.path, context, hostRootDir, port);\n return appContext;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n LoggerAspect,\n BuilderAspect,\n EnvsAspect,\n ComponentAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n WatcherAspect,\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, watcher]: [\n CLIMain,\n LoggerMain,\n BuilderMain,\n EnvsMain,\n ComponentMain,\n AspectLoaderMain,\n Workspace,\n WatcherMain\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 config,\n envs,\n component,\n appService,\n aspectLoader,\n workspace,\n logger,\n watcher\n );\n appService.registerAppType = application.registerAppType.bind(application);\n const appCmd = new AppCmd();\n appCmd.commands = [new AppListCmd(application), new RunCmd(application, logger)];\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 envs.registerService(appService);\n cli.registerGroup('apps', 'Applications');\n cli.register(new RunCmd(application, logger), new AppListCmdDeprecated(application), appCmd);\n // cli.registerOnStart(async () => {\n // await application.loadAppsToSlot();\n // });\n if (workspace) {\n workspace.onComponentLoad(async (loadedComponent): Promise<ApplicationMetadata | undefined> => {\n const app = application.calculateAppByComponent(loadedComponent);\n if (!app) return undefined;\n return {\n appName: app.name,\n type: app.applicationType,\n };\n });\n }\n\n return application;\n }\n}\n\nApplicationAspect.addRuntime(ApplicationMain);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAIA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmD;AAAA;AAkD5C,MAAMA,eAAe,CAAC;EAC3BC,WAAW,CACDC,OAAwB;EAChC;EACQC,WAAgC,EAChCC,sBAA8C,EAC9CC,MAA+B,EAC/BC,IAAc,EACdC,eAA8B,EAC9BC,UAAsB,EACtBC,YAA8B,EAC9BC,SAAoB,EACpBC,MAAc,EACdC,OAAoB,EAC5B;IAAA,KAZQV,OAAwB,GAAxBA,OAAwB;IAAA,KAExBC,WAAgC,GAAhCA,WAAgC;IAAA,KAChCC,sBAA8C,GAA9CA,sBAA8C;IAAA,KAC9CC,MAA+B,GAA/BA,MAA+B;IAAA,KAC/BC,IAAc,GAAdA,IAAc;IAAA,KACdC,eAA8B,GAA9BA,eAA8B;IAAA,KAC9BC,UAAsB,GAAtBA,UAAsB;IAAA,KACtBC,YAA8B,GAA9BA,YAA8B;IAAA,KAC9BC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,MAAc,GAAdA,MAAc;IAAA,KACdC,OAAoB,GAApBA,OAAoB;IAAA,qDA6LC;MAC7BC,GAAG,EAAE,KAAK;MACVC,GAAG,EAAE,KAAK;MACVC,KAAK,EAAE,IAAI;MACXC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI;IAC/B,CAAC;EAjME;;EAEH;AACF;AACA;EACEC,WAAW,CAACC,GAAgB,EAAE;IAC5B,IAAI,CAAChB,OAAO,CAACiB,QAAQ,CAAC,CAACD,GAAG,CAAC,CAAC;IAC5B,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEE,QAAQ,GAAkB;IACxB,OAAO,IAAAC,iBAAO,EAAC,IAAI,CAACnB,OAAO,CAACoB,MAAM,EAAE,CAAC;EACvC;;EAEA;AACF;AACA;EACEC,OAAO,GAAG;IACR,OAAO,IAAI,CAACrB,OAAO,CAACsB,OAAO,EAAE;EAC/B;;EAEA;AACF;AACA;EACEC,YAAY,CAACC,EAAgB,EAA6B;IACxD,IAAI,CAACA,EAAE,EAAE,OAAOC,SAAS;IACzB,OAAO,IAAI,CAACzB,OAAO,CAAC0B,GAAG,CAACF,EAAE,CAACG,QAAQ,EAAE,CAAC;EACxC;;EAEA;AACF;AACA;EACE,MAAMC,UAAU,CAACJ,EAAe,EAAE;IAChC,MAAMK,IAAI,GAAG,MAAM,IAAI,CAACN,YAAY,CAACC,EAAE,CAAC;IACxC,IAAI,CAACK,IAAI,EAAE,OAAOJ,SAAS;IAC3B,OAAO,IAAAK,cAAI,EAACD,IAAI,CAAC;EACnB;;EAEA;AACF;AACA;AACA;EACEE,uBAAuB,CAACC,SAAoB,EAAE;IAC5C,MAAMH,IAAI,GAAG,IAAI,CAAC7B,OAAO,CAAC0B,GAAG,CAACM,SAAS,CAACR,EAAE,CAACG,QAAQ,EAAE,CAAC;IACtD,IAAI,CAACE,IAAI,EAAE,OAAOJ,SAAS;IAC3B,OAAO,IAAAK,cAAI,EAACD,IAAI,CAAC;EACnB;EAEAI,YAAY,GAAG;IACb,OAAO,IAAAd,iBAAO,EAAC,IAAI,CAAClB,WAAW,CAACmB,MAAM,EAAE,CAAC;EAC3C;;EAEA;AACF;AACA;AACA;EACE,MAAMc,sBAAsB,GAAyB;IACnD,OAAO,IAAI,CAACC,kBAAkB,EAAE;EAClC;EAEA,MAAMA,kBAAkB,GAAyB;IAC/C,MAAMC,UAAU,GAAG,MAAM,IAAI,CAAC/B,eAAe,CAACgC,OAAO,EAAE,CAACC,IAAI,EAAE;IAC9D,MAAMC,gBAAgB,GAAG,IAAI,CAACC,cAAc,EAAE;IAC9C,MAAMC,cAAc,GAAGL,UAAU,CAACM,MAAM,CAAEV,SAAS,IAAK,IAAI,CAACW,iBAAiB,CAACX,SAAS,EAAEO,gBAAgB,CAAC,CAAC;IAC5G,OAAOE,cAAc;EACvB;EAEQE,iBAAiB,CAACX,SAAoB,EAAEO,gBAA2B,EAAW;IACpF,MAAMK,QAAQ,GAAGL,gBAAgB,IAAI,IAAI,CAACC,cAAc,EAAE;IAC1D;IACA,MAAMK,KAAK,GAAGb,SAAS,CAACc,UAAU,CAACC,MAAM,CAACH,QAAQ,CAAC;IACnD,OAAO,CAAC,CAACC,KAAK,CAACG,MAAM;EACvB;EAEAR,cAAc,GAAG;IACf,MAAMS,QAAQ,GAAG,IAAI,CAAChB,YAAY,EAAE;IACpC,MAAMM,gBAAgB,GAAGU,QAAQ,CAACC,GAAG,CAAEC,OAAO,IAAK;MACjD,OAAO,IAAI,CAACC,aAAa,CAACD,OAAO,CAAC;IACpC,CAAC,CAAC;IAEF,OAAOZ,gBAAgB;EACzB;EAEA,MAAMc,QAAQ,GAA2B;IACvC,MAAMxB,IAAI,GAAG,MAAM,IAAI,CAACM,kBAAkB,EAAE;IAC5C,MAAMI,gBAAgB,GAAG,IAAI,CAACC,cAAc,EAAE;IAE9C,MAAMc,aAAa,GAAGzB,IAAI,CAAC0B,OAAO,CAAEC,YAAY,IAAK;MACnD,MAAMX,KAAK,GAAGW,YAAY,CAACV,UAAU,CAACC,MAAM,CAACR,gBAAgB,CAAC;MAC9D,OAAOM,KAAK,CAACK,GAAG,CAAEO,IAAI,IAAKA,IAAI,CAACC,IAAI,CAAC;IACvC,CAAC,CAAC;;IAEF;IACA,MAAMC,YAAY,GAAG,IAAAC,iBAAO,EAC1BN,aAAa,CAACJ,GAAG,CAAEW,UAAU,IAAK;MAChC,IAAI;QAAA;QACF;QACA,MAAMC,WAAW,eAAGC,OAAO,CAACF,UAAU,CAAC,6CAAnB,SAAqBG,OAAO;QAChD,OAAOF,WAAW;MACpB,CAAC,CAAC,OAAOG,GAAG,EAAE;QACZ,IAAI,CAACxD,MAAM,CAACyD,KAAK,CAAE,gCAA+BL,UAAW,EAAC,CAAC;QAC/D,OAAOpC,SAAS;MAClB;IACF,CAAC,CAAC,CACH;IAED,OAAOkC,YAAY;EACrB;EAEA,MAAMQ,qBAAqB,CAACnC,SAAoB,EAAEoC,OAAe,EAAsC;IACrG,MAAM7B,gBAAgB,GAAG,IAAI,CAACC,cAAc,EAAE;IAC9C,MAAM6B,KAAK,GAAG,IAAI,CAAC1B,iBAAiB,CAACX,SAAS,EAAEO,gBAAgB,CAAC;IACjE,IAAI,CAAC8B,KAAK,EAAE,OAAO5C,SAAS;IAE5B,MAAM6C,aAAa,GAAG,IAAI,CAAC/D,YAAY,CAACgE,aAAa,EAAE;IAEvD,MAAMC,cAAc,GAAGF,aAAa,CAAC5B,MAAM,CAAE+B,SAAS,IAAK;MACzD,OAAOlC,gBAAgB,CAACmC,QAAQ,CAACD,SAAS,CAACE,OAAO,CAAChD,QAAQ,EAAE,CAAC;IAChE,CAAC,CAAC;IACF;;IAEA,MAAMiD,OAAO,GAAG,IAAI,CAACrE,YAAY,CAACsE,kBAAkB,CAAC7C,SAAS,EAAEoC,OAAO,EAAEI,cAAc,CAAC;IACxF,IAAIM,aAAa;IACjB,IAAIF,OAAO,CAACG,GAAG,EAAE,EAAE;MACjBD,aAAa,GAAG,MAAMF,OAAO,CAACI,IAAI,CAACC,kBAAW,CAACC,IAAI,CAAC;MACpD,MAAM,IAAI,CAAC3E,YAAY,CAAC4E,yBAAyB,CAAC,CAACL,aAAa,CAAC,EAAE;QAAEM,OAAO,EAAE,CAACpD,SAAS,CAACR,EAAE,CAACG,QAAQ,EAAE;MAAE,CAAC,CAAC;IAC5G;IAEA,MAAMJ,YAAY,GAAG,IAAI,CAACA,YAAY,CAACS,SAAS,CAACR,EAAE,CAAC;IACpD,OAAOD,YAAY;EACrB;;EAEA;AACF;AACA;EACE8D,MAAM,CAACC,OAAe,EAAE9D,EAAgB,EAA2B;IACjE,MAAMK,IAAI,GAAGL,EAAE,GAAG,IAAI,CAACD,YAAY,CAACC,EAAE,CAAC,GAAG,IAAI,CAACN,QAAQ,EAAE;IACzD,IAAI,CAACW,IAAI,EAAE,OAAOJ,SAAS;IAC3B,OAAOI,IAAI,CAAC0D,IAAI,CAAEvE,GAAG,IAAKA,GAAG,CAACkE,IAAI,KAAKI,OAAO,CAAC;EACjD;EAEAE,gBAAgB,CAACC,WAAmB,EAA2B;IAC7D,MAAMC,MAAM,GAAG,IAAI,CAACL,MAAM,CAACI,WAAW,CAAC;IACvC,IAAIC,MAAM,EAAE,OAAOA,MAAM;IACzB,MAAMC,IAAI,GAAG,IAAI,CAAC3F,OAAO,CAAC0B,GAAG,CAAC+D,WAAW,CAAC;IAC1C,IAAI,CAACE,IAAI,IAAI,CAACA,IAAI,CAAC3C,MAAM,EAAE,OAAOvB,SAAS;IAC3C,IAAIkE,IAAI,CAAC3C,MAAM,GAAG,CAAC,EAAE;MACnB,MAAM,KAAI4C,oBAAQ,EACf,sDAAqDH,WAAY,kDAAiD,CACpH;IACH;IACA,OAAOE,IAAI,CAAC,CAAC,CAAC;EAChB;EAEAvC,aAAa,CAACD,OAAiC,EAAE;IAC/C,IAAIA,OAAO,CAAC0C,WAAW,EAAE,OAAO1C,OAAO,CAAC0C,WAAW;IACnD,OAAQ,KAAI1C,OAAO,CAAC+B,IAAK,IAAG;EAC9B;;EAEA;AACF;AACA;EACEY,eAAe,CAAI3C,OAA2B,EAAE;IAC9C,MAAM4C,MAAM,GAAG,KAAIC,wBAAa,EAAC,IAAI,CAAC5C,aAAa,CAACD,OAAO,CAAC,EAAEA,OAAO,EAAE,IAAI,CAACnD,OAAO,CAAC;IACpF,IAAI,CAACO,YAAY,CAAC0F,eAAe,CAAC,CAACF,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC9F,WAAW,CAACgB,QAAQ,CAAC,CAACkC,OAAO,CAAC,CAAC;IACpC,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACE+C,YAAY,CAACZ,OAAe,EAAsB;IAAA;IAChD,gCAAO,IAAI,CAACtF,OAAO,CAACsB,OAAO,EAAE,CAACiE,IAAI,CAAC,CAAC,GAAG1D,IAAI,CAAC,KAAKA,IAAI,CAAC0D,IAAI,CAAEvE,GAAG,IAAKA,GAAG,CAACkE,IAAI,KAAKI,OAAO,CAAC,CAAC,0DAAnF,sBAAsF,CAAC,CAAC;EACjG;;EAEA;AACF;AACA;EACEa,aAAa,CAACb,OAAe,EAAe;IAC1C,MAAMtE,GAAG,GAAG,IAAI,CAACwE,gBAAgB,CAACF,OAAO,CAAC;IAC1C,IAAI,CAACtE,GAAG,EAAE,MAAM,KAAIoF,yBAAW,EAACd,OAAO,CAAC;IACxC,OAAOtE,GAAG;EACZ;EAQQqF,cAAc,CAACC,IAA8B,GAAG,CAAC,CAAC,EAAE;IAC1D,uCACK,IAAI,CAACC,WAAW,GAChBD,IAAI;EAEX;EAEA,MAAME,cAAc,GAAG;IACrB,MAAM3E,IAAI,GAAG,MAAM,IAAI,CAACwB,QAAQ,EAAE;IAClC,IAAI,CAACrD,OAAO,CAACiB,QAAQ,CAACY,IAAI,CAAC;IAC3B,OAAO,IAAI;EACb;EAEA,MAAM4E,MAAM,CAACnB,OAAe,EAAEoB,OAAyB,EAAE;IACvDA,OAAO,GAAG,IAAI,CAACL,cAAc,CAACK,OAAO,CAAC;IACtC,MAAM1F,GAAG,GAAG,IAAI,CAACmF,aAAa,CAACb,OAAO,CAAC;IACvC,MAAMqB,OAAO,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAAC5F,GAAG,CAACkE,IAAI,EAAEwB,OAAO,CAACG,IAAI,CAAC;IACnE,IAAI,CAACF,OAAO,EAAE,MAAM,KAAIP,yBAAW,EAACd,OAAO,CAAC;IAE5C,IAAIoB,OAAO,CAAC9F,GAAG,EAAE;MACf,IAAI,CAACI,GAAG,CAAC8F,MAAM,EAAE,MAAM,KAAIC,oBAAQ,EAACzB,OAAO,CAAC;MAE5C,MAAM0B,MAAM,GAAG,MAAMhG,GAAG,CAAC8F,MAAM,CAACH,OAAO,CAAC;MACxC;QAAS3F;MAAG,GAAKgG,MAAM;IACzB;IAEA,MAAMH,IAAI,GAAG,MAAM7F,GAAG,CAACiG,GAAG,CAACN,OAAO,CAAC;IACnC,IAAID,OAAO,CAAC7F,KAAK,EAAE;MACjB,IAAI,CAACH,OAAO,CACTG,KAAK,CAAC;QACLqG,UAAU,EAAE;MACd,CAAC,CAAC,CACDC,KAAK,CAAElD,GAAG,IAAK;QACd;QACA,IAAI,CAACxD,MAAM,CAACyD,KAAK,CAAE,oBAAmB,EAAED,GAAG,CAAC;MAC9C,CAAC,CAAC;IACN;IACA,OAAO;MAAEjD,GAAG;MAAE6F,IAAI;MAAEO,MAAM,EAAE3F;IAAU,CAAC;EACzC;;EAEA;AACF;AACA;EACE,MAAM4F,eAAe,CAAC/B,OAAe,EAAE;IACrC,MAAMgC,QAAQ,GAAG,IAAI,CAACtH,OAAO,CAACsB,OAAO,EAAE,CAACiE,IAAI,CAAC,CAAC,GAAG1D,IAAI,CAAC,KAAK;MACzD,OAAOA,IAAI,CAAC0D,IAAI,CAAEvE,GAAG,IAAKA,GAAG,CAACkE,IAAI,KAAKI,OAAO,CAAC;IACjD,CAAC,CAAC;IAEF,IAAI,CAACgC,QAAQ,EAAE,MAAM,KAAIlB,yBAAW,EAACd,OAAO,CAAC;IAE7C,MAAMiC,IAAI,GAAG,IAAI,CAAClH,eAAe,CAACgC,OAAO,EAAE;IAC3C,OAAOkF,IAAI,CAACC,kBAAkB,CAACF,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC7C;EAEA,MAAcV,gBAAgB,CAACtB,OAAe,EAAEuB,IAAa,EAAuB;IAClF,MAAMU,IAAI,GAAG,IAAI,CAAClH,eAAe,CAACgC,OAAO,EAAE;IAC3C;IACA,MAAMb,EAAE,GAAG,MAAM,IAAI,CAAC6F,eAAe,CAAC/B,OAAO,CAAC;IAC9C;IACA,MAAMtD,SAAS,GAAG,MAAMuF,IAAI,CAAC7F,GAAG,CAACF,EAAE,CAAC;IACpC,IAAI,CAACQ,SAAS,EAAE,MAAM,KAAIoE,yBAAW,EAACd,OAAO,CAAC;IAE9C,MAAMmC,GAAG,GAAG,MAAM,IAAI,CAACrH,IAAI,CAACsH,iBAAiB,CAAC,CAAC1F,SAAS,CAAC,CAAC;IAC1D,MAAM2F,GAAG,GAAG,MAAMF,GAAG,CAACR,GAAG,CAAC,IAAI,CAAC3G,UAAU,CAAC;IAC1C,MAAMqG,OAAO,GAAGgB,GAAG,CAACC,OAAO,CAAC,CAAC,CAAC,CAACC,IAAI;IACnC,IAAI,CAAClB,OAAO,EAAE,MAAM,KAAIP,yBAAW,EAACd,OAAO,CAAC;IAC5C,MAAMwC,WAAW,GAAG,IAAI,CAACtH,SAAS,CAACuH,uBAAuB,CAAC/F,SAAS,CAAC;IACrE,MAAMgG,UAAU,GAAG,KAAIC,wBAAU,EAAC3C,OAAO,EAAEqB,OAAO,CAAChG,GAAG,EAAEqB,SAAS,EAAE,IAAI,CAACxB,SAAS,CAACkD,IAAI,EAAEiD,OAAO,EAAEmB,WAAW,EAAEjB,IAAI,CAAC;IACnH,OAAOmB,UAAU;EACnB;EAoBA,aAAaE,QAAQ,CACnB,CAACC,GAAG,EAAEC,YAAY,EAAEC,OAAO,EAAEjI,IAAI,EAAE4B,SAAS,EAAEzB,YAAY,EAAEC,SAAS,EAAEE,OAAO,CAS7E,EACDP,MAA+B,EAC/B,CAACF,WAAW,EAAED,OAAO,EAAEE,sBAAsB,CAAiE,EAC9G;IACA,MAAMO,MAAM,GAAG2H,YAAY,CAACE,YAAY,CAACC,gCAAiB,CAAC/G,EAAE,CAAC;IAC9D,MAAMlB,UAAU,GAAG,KAAIkI,0BAAU,GAAE;IACnC,MAAMC,WAAW,GAAG,IAAI3I,eAAe,CACrCE,OAAO,EACPC,WAAW,EACXC,sBAAsB,EACtBC,MAAM,EACNC,IAAI,EACJ4B,SAAS,EACT1B,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,MAAM,EACNC,OAAO,CACR;IACDJ,UAAU,CAACwF,eAAe,GAAG2C,WAAW,CAAC3C,eAAe,CAAC4C,IAAI,CAACD,WAAW,CAAC;IAC1E,MAAME,MAAM,GAAG,KAAIC,aAAM,GAAE;IAC3BD,MAAM,CAACE,QAAQ,GAAG,CAAC,KAAIC,iBAAU,EAACL,WAAW,CAAC,EAAE,KAAIM,aAAM,EAACN,WAAW,EAAEhI,MAAM,CAAC,CAAC;IAChFF,YAAY,CAAC0F,eAAe,CAAC,CAAC,KAAI+C,iBAAS,EAAChJ,OAAO,CAAC,CAAC,CAAC;IACtDqI,OAAO,CAACY,kBAAkB,CAAC,CAAC,KAAIC,iCAAa,EAACT,WAAW,CAAC,CAAC,CAAC;IAC5DJ,OAAO,CAACc,iBAAiB,CAAC,CAAC,KAAIC,oBAAU,EAACX,WAAW,EAAEJ,OAAO,CAAC,CAAC,CAAC;IACjEA,OAAO,CAACgB,gBAAgB,CAAC,CAAC,KAAID,oBAAU,EAACX,WAAW,EAAEJ,OAAO,CAAC,CAAC,CAAC;IAChEjI,IAAI,CAACkJ,eAAe,CAAChJ,UAAU,CAAC;IAChC6H,GAAG,CAACoB,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC;IACzCpB,GAAG,CAAClH,QAAQ,CAAC,KAAI8H,aAAM,EAACN,WAAW,EAAEhI,MAAM,CAAC,EAAE,KAAI+I,+BAAoB,EAACf,WAAW,CAAC,EAAEE,MAAM,CAAC;IAC5F;IACA;IACA;IACA,IAAInI,SAAS,EAAE;MACbA,SAAS,CAACiJ,eAAe,CAAC,MAAOC,eAAe,IAA+C;QAC7F,MAAM1I,GAAG,GAAGyH,WAAW,CAAC1G,uBAAuB,CAAC2H,eAAe,CAAC;QAChE,IAAI,CAAC1I,GAAG,EAAE,OAAOS,SAAS;QAC1B,OAAO;UACL6D,OAAO,EAAEtE,GAAG,CAACkE,IAAI;UACjByE,IAAI,EAAE3I,GAAG,CAAC4I;QACZ,CAAC;MACH,CAAC,CAAC;IACJ;IAEA,OAAOnB,WAAW;EACpB;AACF;AAAC;AAAA,gCAhWY3I,eAAe,aAuRTmF,kBAAW;AAAA,gCAvRjBnF,eAAe,kBAwRJ,CACpB+J,gBAAS,EACTC,sBAAY,EACZC,wBAAa,EACbC,kBAAU,EACVC,oBAAe,EACfC,kCAAkB,EAClBC,oBAAe,EACfC,kBAAa,CACd;AAAA,gCAjSUtK,eAAe,WAmSX,CACbuK,eAAI,CAACC,QAAQ,EAA8B,EAC3CD,eAAI,CAACC,QAAQ,EAAiB,EAC9BD,eAAI,CAACC,QAAQ,EAAwB,CACtC;AA2DH/B,gCAAiB,CAACgC,UAAU,CAACzK,eAAe,CAAC"}
@@ -2,7 +2,15 @@ import { BuildTask, BuiltTaskResult, BuildContext, ComponentResult, ArtifactDefi
2
2
  import { ApplicationMain } from './application.main.runtime';
3
3
  export declare const BUILD_TASK = "build_application";
4
4
  export declare const ARTIFACTS_DIR_NAME = "apps";
5
- export declare type AppsResults = {
5
+ export declare type OneAppResult = {
6
+ componentResult: ComponentResult;
7
+ artifacts?: ArtifactDefinition[];
8
+ };
9
+ export declare type OneComponentResult = {
10
+ componentResult: ComponentResult;
11
+ artifacts?: ArtifactDefinition[];
12
+ };
13
+ export declare type BuildAppResult = {
6
14
  componentResult: ComponentResult;
7
15
  artifacts?: ArtifactDefinition[];
8
16
  };
@@ -17,6 +25,8 @@ export declare class AppsBuildTask implements BuildTask {
17
25
  readonly location = "end";
18
26
  constructor(application: ApplicationMain, opt?: Options);
19
27
  execute(context: BuildContext): Promise<BuiltTaskResult>;
28
+ private runForOneApp;
29
+ private mergeAppsResults;
20
30
  private getArtifactDirectory;
21
31
  private getDefaultArtifactDef;
22
32
  }
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.promise.js");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.BUILD_TASK = exports.AppsBuildTask = exports.ARTIFACTS_DIR_NAME = void 0;
10
+ function _defineProperty2() {
11
+ const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ _defineProperty2 = function () {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _path() {
18
+ const data = require("path");
19
+ _path = function () {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ function _pMapSeries() {
25
+ const data = _interopRequireDefault(require("p-map-series"));
26
+ _pMapSeries = function () {
27
+ return data;
28
+ };
29
+ return data;
30
+ }
31
+ function _builder() {
32
+ const data = require("@teambit/builder");
33
+ _builder = function () {
34
+ return data;
35
+ };
36
+ return data;
37
+ }
38
+ function _lodash() {
39
+ const data = require("lodash");
40
+ _lodash = function () {
41
+ return data;
42
+ };
43
+ return data;
44
+ }
45
+ function _application() {
46
+ const data = require("./application.aspect");
47
+ _application = function () {
48
+ return data;
49
+ };
50
+ return data;
51
+ }
52
+ const BUILD_TASK = 'build_application';
53
+ exports.BUILD_TASK = BUILD_TASK;
54
+ const ARTIFACTS_DIR_NAME = 'apps';
55
+ exports.ARTIFACTS_DIR_NAME = ARTIFACTS_DIR_NAME;
56
+ class AppsBuildTask {
57
+ constructor(application, opt = {
58
+ deploy: true
59
+ }) {
60
+ this.application = application;
61
+ this.opt = opt;
62
+ (0, _defineProperty2().default)(this, "name", BUILD_TASK);
63
+ (0, _defineProperty2().default)(this, "aspectId", _application().ApplicationAspect.id);
64
+ (0, _defineProperty2().default)(this, "location", 'end');
65
+ }
66
+ async execute(context) {
67
+ const originalSeedersIds = context.capsuleNetwork.originalSeedersCapsules.map(c => c.component.id.toString());
68
+ const {
69
+ capsuleNetwork
70
+ } = context;
71
+ const result = {
72
+ componentsResults: []
73
+ };
74
+
75
+ // const componentsResults = await mapSeries(apps, async (app): Promise<AppsResults | undefined> => {
76
+ await (0, _pMapSeries().default)(capsuleNetwork.originalSeedersCapsules, async capsule => {
77
+ const component = capsule.component;
78
+ if (originalSeedersIds && originalSeedersIds.length && !originalSeedersIds.includes(component.id.toString())) {
79
+ return undefined;
80
+ }
81
+ const apps = await this.application.loadAppsFromComponent(component, capsule.path);
82
+ if (!apps || !apps.length) return undefined;
83
+ const componentsResults = await (0, _pMapSeries().default)((0, _lodash().compact)(apps), async app => this.runForOneApp(app, component, capsule, context));
84
+ const merged = this.mergeAppsResults((0, _lodash().compact)(componentsResults));
85
+ if (merged) {
86
+ result.componentsResults.push(merged.componentResult);
87
+ if (!result.artifacts) result.artifacts = [];
88
+ result.artifacts.push(...(merged.artifacts || []));
89
+ }
90
+ return undefined;
91
+ });
92
+ return result;
93
+ }
94
+ async runForOneApp(app, component, capsule, context) {
95
+ if (!app.build) return undefined;
96
+ // const { component } = capsule;
97
+ const appDeployContext = Object.assign(context, {
98
+ capsule,
99
+ appComponent: component,
100
+ name: app.name,
101
+ artifactsDir: this.getArtifactDirectory()
102
+ });
103
+ const deployContext = await app.build(appDeployContext);
104
+ const defaultArtifacts = this.getDefaultArtifactDef(app.applicationType || app.name);
105
+ const artifacts = defaultArtifacts.concat(deployContext.artifacts || []);
106
+ return {
107
+ artifacts,
108
+ componentResult: {
109
+ component: capsule.component,
110
+ errors: deployContext.errors,
111
+ warnings: deployContext.warnings,
112
+ /**
113
+ * @guysaar223
114
+ * @ram8
115
+ * TODO: we need to think how to pass private metadata between build pipes, maybe create shared context
116
+ * or create new deploy context on builder
117
+ */
118
+ // @ts-ignore
119
+ _metadata: {
120
+ deployContext
121
+ }
122
+ }
123
+ };
124
+ }
125
+ mergeAppsResults(appsResults) {
126
+ if (!appsResults || !appsResults.length) return undefined;
127
+ const merged = {
128
+ artifacts: [],
129
+ componentResult: {
130
+ component: appsResults[0].componentResult.component,
131
+ errors: [],
132
+ warnings: [],
133
+ // @ts-ignore
134
+ _metadata: {}
135
+ }
136
+ };
137
+ appsResults.forEach(appResult => {
138
+ merged.artifacts = (merged.artifacts || []).concat(appResult.artifacts || []);
139
+ merged.componentResult.errors = (merged.componentResult.errors || []).concat(appResult.componentResult.errors || []);
140
+ merged.componentResult.warnings = (merged.componentResult.warnings || []).concat(appResult.componentResult.warnings || []);
141
+ });
142
+ return merged;
143
+ }
144
+ getArtifactDirectory() {
145
+ return (0, _path().join)(_builder().CAPSULE_ARTIFACTS_DIR, ARTIFACTS_DIR_NAME);
146
+ }
147
+ getDefaultArtifactDef(nameSuffix) {
148
+ return [{
149
+ name: `app-build-${nameSuffix}`,
150
+ globPatterns: ['**'],
151
+ rootDir: this.getArtifactDirectory()
152
+ }];
153
+ }
154
+ }
155
+ exports.AppsBuildTask = AppsBuildTask;
156
+
157
+ //# sourceMappingURL=build-application.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BUILD_TASK","ARTIFACTS_DIR_NAME","AppsBuildTask","constructor","application","opt","deploy","ApplicationAspect","id","execute","context","originalSeedersIds","capsuleNetwork","originalSeedersCapsules","map","c","component","toString","result","componentsResults","mapSeries","capsule","length","includes","undefined","apps","loadAppsFromComponent","path","compact","app","runForOneApp","merged","mergeAppsResults","push","componentResult","artifacts","build","appDeployContext","Object","assign","appComponent","name","artifactsDir","getArtifactDirectory","deployContext","defaultArtifacts","getDefaultArtifactDef","applicationType","concat","errors","warnings","_metadata","appsResults","forEach","appResult","join","CAPSULE_ARTIFACTS_DIR","nameSuffix","globPatterns","rootDir"],"sources":["build-application.task.ts"],"sourcesContent":["import { join } from 'path';\nimport mapSeries from 'p-map-series';\nimport {\n BuildTask,\n BuiltTaskResult,\n BuildContext,\n ComponentResult,\n ArtifactDefinition,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport { compact } from 'lodash';\nimport { Capsule } from '@teambit/isolator';\nimport { Component } from '@teambit/component';\n\nimport { ApplicationAspect } from './application.aspect';\nimport { ApplicationMain } from './application.main.runtime';\nimport { AppBuildContext } from './app-build-context';\nimport { Application } from './application';\n\nexport const BUILD_TASK = 'build_application';\nexport const ARTIFACTS_DIR_NAME = 'apps';\n\nexport type OneAppResult = {\n componentResult: ComponentResult;\n artifacts?: ArtifactDefinition[];\n};\n\nexport type OneComponentResult = {\n componentResult: ComponentResult;\n artifacts?: ArtifactDefinition[];\n};\n\nexport type BuildAppResult = {\n componentResult: ComponentResult;\n artifacts?: ArtifactDefinition[];\n};\n\nexport type Options = {\n deploy: boolean;\n};\nexport class AppsBuildTask implements BuildTask {\n name = BUILD_TASK;\n aspectId = ApplicationAspect.id;\n readonly location = 'end';\n constructor(private application: ApplicationMain, private opt: Options = { deploy: true }) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const originalSeedersIds = context.capsuleNetwork.originalSeedersCapsules.map((c) => c.component.id.toString());\n const { capsuleNetwork } = context;\n const result: BuiltTaskResult = {\n componentsResults: [],\n };\n\n // const componentsResults = await mapSeries(apps, async (app): Promise<AppsResults | undefined> => {\n await mapSeries(capsuleNetwork.originalSeedersCapsules, async (capsule) => {\n const component = capsule.component;\n if (originalSeedersIds && originalSeedersIds.length && !originalSeedersIds.includes(component.id.toString())) {\n return undefined;\n }\n\n const apps = await this.application.loadAppsFromComponent(component, capsule.path);\n if (!apps || !apps.length) return undefined;\n const componentsResults = await mapSeries(compact(apps), async (app) =>\n this.runForOneApp(app, component, capsule, context)\n );\n const merged = this.mergeAppsResults(compact(componentsResults));\n if (merged) {\n result.componentsResults.push(merged.componentResult);\n if (!result.artifacts) result.artifacts = [];\n result.artifacts.push(...(merged.artifacts || []));\n }\n return undefined;\n });\n\n return result;\n }\n\n private async runForOneApp(\n app: Application,\n component: Component,\n capsule: Capsule,\n context: BuildContext\n ): Promise<OneAppResult | undefined> {\n if (!app.build) return undefined;\n // const { component } = capsule;\n const appDeployContext: AppBuildContext = Object.assign(context, {\n capsule,\n appComponent: component,\n name: app.name,\n artifactsDir: this.getArtifactDirectory(),\n });\n const deployContext = await app.build(appDeployContext);\n const defaultArtifacts: ArtifactDefinition[] = this.getDefaultArtifactDef(app.applicationType || app.name);\n const artifacts = defaultArtifacts.concat(deployContext.artifacts || []);\n\n return {\n artifacts,\n componentResult: {\n component: capsule.component,\n errors: deployContext.errors,\n warnings: deployContext.warnings,\n /**\n * @guysaar223\n * @ram8\n * TODO: we need to think how to pass private metadata between build pipes, maybe create shared context\n * or create new deploy context on builder\n */\n // @ts-ignore\n _metadata: { deployContext },\n },\n };\n }\n\n private mergeAppsResults(appsResults: OneAppResult[]): OneComponentResult | undefined {\n if (!appsResults || !appsResults.length) return undefined;\n const merged: OneComponentResult = {\n artifacts: [],\n componentResult: {\n component: appsResults[0].componentResult.component,\n errors: [],\n warnings: [],\n // @ts-ignore\n _metadata: {},\n },\n };\n appsResults.forEach((appResult) => {\n merged.artifacts = (merged.artifacts || []).concat(appResult.artifacts || []);\n merged.componentResult.errors = (merged.componentResult.errors || []).concat(\n appResult.componentResult.errors || []\n );\n merged.componentResult.warnings = (merged.componentResult.warnings || []).concat(\n appResult.componentResult.warnings || []\n );\n });\n return merged;\n }\n\n private getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, ARTIFACTS_DIR_NAME);\n }\n\n private getDefaultArtifactDef(nameSuffix: string): ArtifactDefinition[] {\n return [\n {\n name: `app-build-${nameSuffix}`,\n globPatterns: ['**'],\n rootDir: this.getArtifactDirectory(),\n },\n ];\n }\n}\n"],"mappings":"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"}
@@ -34,9 +34,9 @@ function _application() {
34
34
  };
35
35
  return data;
36
36
  }
37
- function _build() {
38
- const data = require("./build.task");
39
- _build = function () {
37
+ function _buildApplication() {
38
+ const data = require("./build-application.task");
39
+ _buildApplication = function () {
40
40
  return data;
41
41
  };
42
42
  return data;
@@ -95,7 +95,7 @@ class DeployTask {
95
95
  return taskResults.find(({
96
96
  task,
97
97
  env
98
- }) => task.aspectId === _application().ApplicationAspect.id && task.name === _build().BUILD_TASK && env.id === runtime);
98
+ }) => task.aspectId === _application().ApplicationAspect.id && task.name === _buildApplication().BUILD_TASK && env.id === runtime);
99
99
  }
100
100
  }
101
101
  exports.DeployTask = DeployTask;
@@ -1 +1 @@
1
- {"version":3,"names":["DEPLOY_TASK","DeployTask","constructor","application","builder","ApplicationAspect","id","execute","context","apps","listApps","componentsResults","mapSeries","app","aspectId","getAppAspect","name","undefined","capsule","capsuleNetwork","seedersCapsules","getCapsuleIgnoreVersion","ComponentID","fromString","component","buildTask","getBuildTask","previousTasksResults","envRuntime","componentResults","find","res","isEqual","ignoreVersion","_metadata","deployContext","appDeployContext","Object","assign","appComponent","deploy","componentResult","_componentsResults","map","filter","a","taskResults","runtime","task","env","BUILD_TASK"],"sources":["deploy.task.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { BuilderMain, BuildTask, BuildContext, ComponentResult, TaskResults } from '@teambit/builder';\nimport { ComponentID } from '@teambit/component';\nimport { ApplicationAspect } from './application.aspect';\nimport { ApplicationMain } from './application.main.runtime';\nimport { BUILD_TASK } from './build.task';\nimport { AppDeployContext } from './app-deploy-context';\n\nexport const DEPLOY_TASK = 'deploy_application';\n\nexport class DeployTask implements BuildTask {\n name = DEPLOY_TASK;\n aspectId = ApplicationAspect.id;\n readonly location = 'end';\n constructor(private application: ApplicationMain, private builder: BuilderMain) {}\n\n async execute(context: BuildContext): Promise<any> {\n const apps = this.application.listApps();\n const componentsResults = await mapSeries(apps, async (app): Promise<any> => {\n const aspectId = this.application.getAppAspect(app.name);\n if (!aspectId) return undefined;\n const capsule = context.capsuleNetwork.seedersCapsules.getCapsuleIgnoreVersion(ComponentID.fromString(aspectId));\n if (!capsule || !capsule?.component) return undefined;\n const buildTask = this.getBuildTask(context.previousTasksResults, context.envRuntime.id);\n if (!buildTask) return undefined;\n const componentResults = buildTask.componentsResults.find((res) =>\n res.component.id.isEqual(capsule.component.id, { ignoreVersion: true })\n );\n /**\n * @guysaar223\n * @ram8\n * TODO: we need to think how to pass private metadata between build pipes, maybe create shared context\n * or create new deploy context on builder\n */\n // @ts-ignore\n const _metadata = componentResults?._metadata?.deployContext || {};\n const appDeployContext: AppDeployContext = Object.assign(context, _metadata, {\n capsule,\n appComponent: capsule.component,\n });\n if (!app.deploy) return undefined;\n await app.deploy(appDeployContext);\n\n return {\n componentResult: { component: capsule.component },\n };\n });\n\n const _componentsResults = componentsResults\n .map((res) => {\n return res?.componentResult;\n })\n .filter((a) => !!a) as ComponentResult[];\n\n return {\n componentsResults: _componentsResults,\n };\n }\n\n private getBuildTask(taskResults: TaskResults[], runtime: string) {\n return taskResults.find(\n ({ task, env }) => task.aspectId === ApplicationAspect.id && task.name === BUILD_TASK && env.id === runtime\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["DEPLOY_TASK","DeployTask","constructor","application","builder","ApplicationAspect","id","execute","context","apps","listApps","componentsResults","mapSeries","app","aspectId","getAppAspect","name","undefined","capsule","capsuleNetwork","seedersCapsules","getCapsuleIgnoreVersion","ComponentID","fromString","component","buildTask","getBuildTask","previousTasksResults","envRuntime","componentResults","find","res","isEqual","ignoreVersion","_metadata","deployContext","appDeployContext","Object","assign","appComponent","deploy","componentResult","_componentsResults","map","filter","a","taskResults","runtime","task","env","BUILD_TASK"],"sources":["deploy.task.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { BuilderMain, BuildTask, BuildContext, ComponentResult, TaskResults } from '@teambit/builder';\nimport { ComponentID } from '@teambit/component';\nimport { ApplicationAspect } from './application.aspect';\nimport { ApplicationMain } from './application.main.runtime';\nimport { BUILD_TASK } from './build-application.task';\nimport { AppDeployContext } from './app-deploy-context';\n\nexport const DEPLOY_TASK = 'deploy_application';\n\nexport class DeployTask implements BuildTask {\n name = DEPLOY_TASK;\n aspectId = ApplicationAspect.id;\n readonly location = 'end';\n constructor(private application: ApplicationMain, private builder: BuilderMain) {}\n\n async execute(context: BuildContext): Promise<any> {\n const apps = this.application.listApps();\n const componentsResults = await mapSeries(apps, async (app): Promise<any> => {\n const aspectId = this.application.getAppAspect(app.name);\n if (!aspectId) return undefined;\n const capsule = context.capsuleNetwork.seedersCapsules.getCapsuleIgnoreVersion(ComponentID.fromString(aspectId));\n if (!capsule || !capsule?.component) return undefined;\n const buildTask = this.getBuildTask(context.previousTasksResults, context.envRuntime.id);\n if (!buildTask) return undefined;\n const componentResults = buildTask.componentsResults.find((res) =>\n res.component.id.isEqual(capsule.component.id, { ignoreVersion: true })\n );\n /**\n * @guysaar223\n * @ram8\n * TODO: we need to think how to pass private metadata between build pipes, maybe create shared context\n * or create new deploy context on builder\n */\n // @ts-ignore\n const _metadata = componentResults?._metadata?.deployContext || {};\n const appDeployContext: AppDeployContext = Object.assign(context, _metadata, {\n capsule,\n appComponent: capsule.component,\n });\n if (!app.deploy) return undefined;\n await app.deploy(appDeployContext);\n\n return {\n componentResult: { component: capsule.component },\n };\n });\n\n const _componentsResults = componentsResults\n .map((res) => {\n return res?.componentResult;\n })\n .filter((a) => !!a) as ComponentResult[];\n\n return {\n componentsResults: _componentsResults,\n };\n }\n\n private getBuildTask(taskResults: TaskResults[], runtime: string) {\n return taskResults.find(\n ({ task, env }) => task.aspectId === ApplicationAspect.id && task.name === BUILD_TASK && env.id === runtime\n );\n }\n}\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,6 @@ export { ApplicationType } from './application-type';
7
7
  export { AppDeployContext } from './app-deploy-context';
8
8
  export { AppBuildContext } from './app-build-context';
9
9
  export { AppBuildResult } from './app-build-result';
10
- export { ARTIFACTS_DIR_NAME as APPS_ARTIFACTS_DIR_NAME } from './build.task';
10
+ export { ARTIFACTS_DIR_NAME as APPS_ARTIFACTS_DIR_NAME } from './build-application.task';
11
11
  export type { AppsEnv } from './apps-env-type';
12
12
  export { AppTypeList } from './app-type-list';
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "APPS_ARTIFACTS_DIR_NAME", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _build().ARTIFACTS_DIR_NAME;
9
+ return _buildApplication().ARTIFACTS_DIR_NAME;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "AppBuildContext", {
@@ -106,9 +106,9 @@ function _appBuildResult() {
106
106
  };
107
107
  return data;
108
108
  }
109
- function _build() {
110
- const data = require("./build.task");
111
- _build = function () {
109
+ function _buildApplication() {
110
+ const data = require("./build-application.task");
111
+ _buildApplication = function () {
112
112
  return data;
113
113
  };
114
114
  return data;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { ApplicationAspect } from './application.aspect';\nexport type { ApplicationMain, ApplicationMetadata } from './application.main.runtime';\nexport type { Application, DeployFn, AppResult } from './application';\nexport { AppContext } from './app-context';\nexport { DeploymentProvider } from './deployment-provider';\nexport { ApplicationType } from './application-type';\nexport { AppDeployContext } from './app-deploy-context';\nexport { AppBuildContext } from './app-build-context';\nexport { AppBuildResult } from './app-build-result';\nexport { ARTIFACTS_DIR_NAME as APPS_ARTIFACTS_DIR_NAME } from './build.task';\nexport type { AppsEnv } from './apps-env-type';\nexport { AppTypeList } from './app-type-list';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { ApplicationAspect } from './application.aspect';\nexport type { ApplicationMain, ApplicationMetadata } from './application.main.runtime';\nexport type { Application, DeployFn, AppResult } from './application';\nexport { AppContext } from './app-context';\nexport { DeploymentProvider } from './deployment-provider';\nexport { ApplicationType } from './application-type';\nexport { AppDeployContext } from './app-deploy-context';\nexport { AppBuildContext } from './app-build-context';\nexport { AppBuildResult } from './app-build-result';\nexport { ARTIFACTS_DIR_NAME as APPS_ARTIFACTS_DIR_NAME } from './build-application.task';\nexport type { AppsEnv } from './apps-env-type';\nexport { AppTypeList } from './app-type-list';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_application@0.0.753/dist/application.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_application@0.0.753/dist/application.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_application@0.0.754/dist/application.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_application@0.0.754/dist/application.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/application",
3
- "version": "0.0.753",
3
+ "version": "0.0.754",
4
4
  "homepage": "https://bit.cloud/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.753"
9
+ "version": "0.0.754"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -17,17 +17,17 @@
17
17
  "core-js": "^3.0.0",
18
18
  "@babel/runtime": "7.20.0",
19
19
  "@teambit/harmony": "0.4.6",
20
- "@teambit/builder": "0.0.1111",
21
- "@teambit/component": "0.0.1111",
22
- "@teambit/isolator": "0.0.1111",
23
- "@teambit/envs": "0.0.1111",
20
+ "@teambit/builder": "0.0.1112",
21
+ "@teambit/component": "0.0.1112",
22
+ "@teambit/isolator": "0.0.1112",
23
+ "@teambit/envs": "0.0.1112",
24
24
  "@teambit/cli-table": "0.0.41",
25
- "@teambit/cli": "0.0.743",
26
- "@teambit/aspect-loader": "0.0.1111",
25
+ "@teambit/cli": "0.0.744",
26
+ "@teambit/aspect-loader": "0.0.1112",
27
27
  "@teambit/bit-error": "0.0.402",
28
- "@teambit/logger": "0.0.836",
29
- "@teambit/watcher": "0.0.123",
30
- "@teambit/workspace": "0.0.1111"
28
+ "@teambit/logger": "0.0.837",
29
+ "@teambit/watcher": "0.0.124",
30
+ "@teambit/workspace": "0.0.1112"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/react": "^17.0.8",
@@ -40,7 +40,7 @@
40
40
  "@types/testing-library__jest-dom": "5.9.5"
41
41
  },
42
42
  "peerDependencies": {
43
- "@teambit/legacy": "1.0.523",
43
+ "@teambit/legacy": "1.0.524",
44
44
  "react": "^16.8.0 || ^17.0.0",
45
45
  "react-dom": "^16.8.0 || ^17.0.0"
46
46
  },
@@ -1,132 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- require("core-js/modules/es.array.flat-map.js");
5
- require("core-js/modules/es.array.unscopables.flat-map.js");
6
- require("core-js/modules/es.promise.js");
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports.BUILD_TASK = exports.AppsBuildTask = exports.ARTIFACTS_DIR_NAME = void 0;
11
- function _defineProperty2() {
12
- const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
- _defineProperty2 = function () {
14
- return data;
15
- };
16
- return data;
17
- }
18
- function _path() {
19
- const data = require("path");
20
- _path = function () {
21
- return data;
22
- };
23
- return data;
24
- }
25
- function _pMapSeries() {
26
- const data = _interopRequireDefault(require("p-map-series"));
27
- _pMapSeries = function () {
28
- return data;
29
- };
30
- return data;
31
- }
32
- function _builder() {
33
- const data = require("@teambit/builder");
34
- _builder = function () {
35
- return data;
36
- };
37
- return data;
38
- }
39
- function _component() {
40
- const data = require("@teambit/component");
41
- _component = function () {
42
- return data;
43
- };
44
- return data;
45
- }
46
- function _application() {
47
- const data = require("./application.aspect");
48
- _application = function () {
49
- return data;
50
- };
51
- return data;
52
- }
53
- const BUILD_TASK = 'build_application';
54
- exports.BUILD_TASK = BUILD_TASK;
55
- const ARTIFACTS_DIR_NAME = 'apps';
56
- exports.ARTIFACTS_DIR_NAME = ARTIFACTS_DIR_NAME;
57
- class AppsBuildTask {
58
- constructor(application, opt = {
59
- deploy: true
60
- }) {
61
- this.application = application;
62
- this.opt = opt;
63
- (0, _defineProperty2().default)(this, "name", BUILD_TASK);
64
- (0, _defineProperty2().default)(this, "aspectId", _application().ApplicationAspect.id);
65
- (0, _defineProperty2().default)(this, "location", 'end');
66
- }
67
- async execute(context) {
68
- const apps = this.application.listApps();
69
- const {
70
- capsuleNetwork
71
- } = context;
72
- const componentsResults = await (0, _pMapSeries().default)(apps, async app => {
73
- const aspectId = this.application.getAppAspect(app.name);
74
- if (!aspectId) return undefined;
75
- const capsule = capsuleNetwork.seedersCapsules.getCapsuleIgnoreVersion(_component().ComponentID.fromString(aspectId));
76
- if (!capsule || !app.build) return undefined;
77
- const {
78
- component
79
- } = capsule;
80
- const appDeployContext = Object.assign(context, {
81
- capsule,
82
- appComponent: component,
83
- name: app.name,
84
- artifactsDir: this.getArtifactDirectory()
85
- });
86
- const deployContext = await app.build(appDeployContext);
87
- const defaultArtifacts = this.getDefaultArtifactDef(app.applicationType || app.name);
88
- const artifacts = defaultArtifacts.concat(deployContext.artifacts || []);
89
- return {
90
- artifacts,
91
- componentResult: {
92
- component: capsule.component,
93
- errors: deployContext.errors,
94
- warnings: deployContext.warnings,
95
- /**
96
- * @guysaar223
97
- * @ram8
98
- * TODO: we need to think how to pass private metadata between build pipes, maybe create shared context
99
- * or create new deploy context on builder
100
- */
101
- // @ts-ignore
102
- _metadata: {
103
- deployContext
104
- }
105
- }
106
- };
107
- });
108
- const artifacts = componentsResults.flatMap(res => {
109
- return res === null || res === void 0 ? void 0 : res.artifacts;
110
- }).filter(a => !!a);
111
- const _componentsResults = componentsResults.map(res => {
112
- return res === null || res === void 0 ? void 0 : res.componentResult;
113
- }).filter(a => !!a);
114
- return {
115
- artifacts,
116
- componentsResults: _componentsResults
117
- };
118
- }
119
- getArtifactDirectory() {
120
- return (0, _path().join)(_builder().CAPSULE_ARTIFACTS_DIR, ARTIFACTS_DIR_NAME);
121
- }
122
- getDefaultArtifactDef(nameSuffix) {
123
- return [{
124
- name: `app-build-${nameSuffix}`,
125
- globPatterns: ['**'],
126
- rootDir: this.getArtifactDirectory()
127
- }];
128
- }
129
- }
130
- exports.AppsBuildTask = AppsBuildTask;
131
-
132
- //# sourceMappingURL=build.task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["BUILD_TASK","ARTIFACTS_DIR_NAME","AppsBuildTask","constructor","application","opt","deploy","ApplicationAspect","id","execute","context","apps","listApps","capsuleNetwork","componentsResults","mapSeries","app","aspectId","getAppAspect","name","undefined","capsule","seedersCapsules","getCapsuleIgnoreVersion","ComponentID","fromString","build","component","appDeployContext","Object","assign","appComponent","artifactsDir","getArtifactDirectory","deployContext","defaultArtifacts","getDefaultArtifactDef","applicationType","artifacts","concat","componentResult","errors","warnings","_metadata","flatMap","res","filter","a","_componentsResults","map","join","CAPSULE_ARTIFACTS_DIR","nameSuffix","globPatterns","rootDir"],"sources":["build.task.ts"],"sourcesContent":["import { join } from 'path';\nimport mapSeries from 'p-map-series';\nimport {\n BuildTask,\n BuiltTaskResult,\n BuildContext,\n ComponentResult,\n ArtifactDefinition,\n CAPSULE_ARTIFACTS_DIR,\n} from '@teambit/builder';\nimport { ComponentID } from '@teambit/component';\nimport { ApplicationAspect } from './application.aspect';\nimport { ApplicationMain } from './application.main.runtime';\nimport { AppBuildContext } from './app-build-context';\n\nexport const BUILD_TASK = 'build_application';\nexport const ARTIFACTS_DIR_NAME = 'apps';\n\nexport type AppsResults = {\n componentResult: ComponentResult;\n artifacts?: ArtifactDefinition[];\n};\n\nexport type Options = {\n deploy: boolean;\n};\nexport class AppsBuildTask implements BuildTask {\n name = BUILD_TASK;\n aspectId = ApplicationAspect.id;\n readonly location = 'end';\n constructor(private application: ApplicationMain, private opt: Options = { deploy: true }) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const apps = this.application.listApps();\n const { capsuleNetwork } = context;\n const componentsResults = await mapSeries(apps, async (app): Promise<AppsResults | undefined> => {\n const aspectId = this.application.getAppAspect(app.name);\n if (!aspectId) return undefined;\n const capsule = capsuleNetwork.seedersCapsules.getCapsuleIgnoreVersion(ComponentID.fromString(aspectId));\n if (!capsule || !app.build) return undefined;\n const { component } = capsule;\n const appDeployContext: AppBuildContext = Object.assign(context, {\n capsule,\n appComponent: component,\n name: app.name,\n artifactsDir: this.getArtifactDirectory(),\n });\n const deployContext = await app.build(appDeployContext);\n const defaultArtifacts: ArtifactDefinition[] = this.getDefaultArtifactDef(app.applicationType || app.name);\n const artifacts = defaultArtifacts.concat(deployContext.artifacts || []);\n\n return {\n artifacts,\n componentResult: {\n component: capsule.component,\n errors: deployContext.errors,\n warnings: deployContext.warnings,\n /**\n * @guysaar223\n * @ram8\n * TODO: we need to think how to pass private metadata between build pipes, maybe create shared context\n * or create new deploy context on builder\n */\n // @ts-ignore\n _metadata: { deployContext },\n },\n };\n });\n\n const artifacts = componentsResults\n .flatMap((res) => {\n return res?.artifacts;\n })\n .filter((a) => !!a) as ArtifactDefinition[];\n const _componentsResults = componentsResults\n .map((res) => {\n return res?.componentResult;\n })\n .filter((a) => !!a) as ComponentResult[];\n return {\n artifacts,\n componentsResults: _componentsResults,\n };\n }\n\n private getArtifactDirectory() {\n return join(CAPSULE_ARTIFACTS_DIR, ARTIFACTS_DIR_NAME);\n }\n\n private getDefaultArtifactDef(nameSuffix: string): ArtifactDefinition[] {\n return [\n {\n name: `app-build-${nameSuffix}`,\n globPatterns: ['**'],\n rootDir: this.getArtifactDirectory(),\n },\n ];\n }\n}\n"],"mappings":"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"}