@teambit/application 0.0.240 → 0.0.241

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.
@@ -0,0 +1,4 @@
1
+ import { BuildContext, ArtifactDefinition } from '@teambit/builder';
2
+ export interface AppBuildResult extends BuildContext {
3
+ artifacts?: ArtifactDefinition[];
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=app-build-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -2,6 +2,8 @@ import { BuildContext } from '@teambit/builder';
2
2
  import { Capsule } from '@teambit/isolator';
3
3
  import { AppContext } from './app-context';
4
4
  import { DeployContext } from './deploy-context';
5
+ import { AppBuildResult } from './app-build-result';
6
+ export declare type DeployFn = (context: DeployContext, capsule: Capsule) => Promise<void>;
5
7
  export interface Application {
6
8
  /**
7
9
  * name of the application. e.g. ripple-ci.
@@ -14,9 +16,9 @@ export interface Application {
14
16
  /**
15
17
  * build the application.
16
18
  */
17
- build?(context: BuildContext, aspectId: string, capsule: Capsule): Promise<DeployContext>;
19
+ build?(context: BuildContext, capsule: Capsule): Promise<AppBuildResult>;
18
20
  /**
19
21
  * application deployment. this is a build task.
20
22
  */
21
- deploy?(context: BuildContext, capsule: Capsule): Promise<void>;
23
+ deploy?: DeployFn;
22
24
  }
@@ -48,14 +48,6 @@ export declare class ApplicationMain {
48
48
  * list apps by a component id.
49
49
  */
50
50
  listAppsById(id?: ComponentID): Application[] | undefined;
51
- /**
52
- * register new deployment provider like netlify, cloudflare pages or custom deployment.
53
- */
54
- registerDeploymentProvider(provider: DeploymentProvider): this;
55
- /**
56
- * list all deployment providers
57
- */
58
- listProviders(): DeploymentProvider[];
59
51
  /**
60
52
  * get an app.
61
53
  */
@@ -131,10 +131,10 @@ function _appList() {
131
131
  return data;
132
132
  }
133
133
 
134
- function _deploy() {
135
- const data = require("./deploy.task");
134
+ function _build() {
135
+ const data = require("./build.task");
136
136
 
137
- _deploy = function () {
137
+ _build = function () {
138
138
  return data;
139
139
  };
140
140
 
@@ -191,6 +191,16 @@ function _appType() {
191
191
  return data;
192
192
  }
193
193
 
194
+ function _deploy() {
195
+ const data = require("./deploy.task");
196
+
197
+ _deploy = function () {
198
+ return data;
199
+ };
200
+
201
+ return data;
202
+ }
203
+
194
204
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
195
205
 
196
206
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -243,23 +253,6 @@ class ApplicationMain {
243
253
  if (!id) return undefined;
244
254
  return this.appSlot.get(id.toString());
245
255
  }
246
- /**
247
- * register new deployment provider like netlify, cloudflare pages or custom deployment.
248
- */
249
-
250
-
251
- registerDeploymentProvider(provider) {
252
- this.deploymentProviderSlot.register([provider]);
253
- return this;
254
- }
255
- /**
256
- * list all deployment providers
257
- */
258
-
259
-
260
- listProviders() {
261
- return (0, _lodash().flatten)(this.deploymentProviderSlot.values());
262
- }
263
256
  /**
264
257
  * get an app.
265
258
  */
@@ -359,7 +352,9 @@ class ApplicationMain {
359
352
  const appCmd = new (_app().AppCmd)();
360
353
  appCmd.commands = [new (_app().AppListCmd)(application)];
361
354
  aspectLoader.registerPlugins([new (_app2().AppPlugin)(appSlot)]);
362
- builder.registerTagTasks([new (_deploy().DeployTask)(application)]);
355
+ builder.registerBuildTasks([new (_build().AppsBuildTask)(application)]);
356
+ builder.registerSnapTasks([new (_deploy().DeployTask)(application, builder)]);
357
+ builder.registerTagTasks([new (_deploy().DeployTask)(application, builder)]);
363
358
  cli.registerGroup('apps', 'Applications');
364
359
  cli.register(new (_run().RunCmd)(application, logger), new (_appList().AppListCmdDeprecated)(application), appCmd);
365
360
  return application;
@@ -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","registerDeploymentProvider","provider","listProviders","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","cli","loggerAspect","builder","config","logger","createLogger","ApplicationAspect","AppService","application","appCmd","AppCmd","commands","AppListCmd","AppPlugin","registerTagTasks","DeployTask","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 } 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 { DeployTask } from './deploy.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';\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 * register new deployment provider like netlify, cloudflare pages or custom deployment.\n */\n registerDeploymentProvider(provider: DeploymentProvider) {\n this.deploymentProviderSlot.register([provider]);\n return this;\n }\n\n /**\n * list all deployment providers\n */\n listProviders() {\n return flatten(this.deploymentProviderSlot.values());\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({}, 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.registerTagTasks([new DeployTask(application)]);\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","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 } 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({}, 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"]}
@@ -0,0 +1,20 @@
1
+ import { BuildTask, BuiltTaskResult, BuildContext, ComponentResult, ArtifactDefinition } from '@teambit/builder';
2
+ import { ApplicationMain } from './application.main.runtime';
3
+ export declare const BUILD_TASK = "build_application";
4
+ export declare type AppsResults = {
5
+ componentResult: ComponentResult;
6
+ artifacts?: ArtifactDefinition[];
7
+ };
8
+ export declare type Options = {
9
+ deploy: boolean;
10
+ };
11
+ export declare class AppsBuildTask implements BuildTask {
12
+ private application;
13
+ private opt;
14
+ name: string;
15
+ aspectId: string;
16
+ readonly location = "end";
17
+ constructor(application: ApplicationMain, opt?: Options);
18
+ execute(context: BuildContext): Promise<BuiltTaskResult>;
19
+ private getCapsule;
20
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("core-js/modules/es.array.flat-map.js");
6
+
7
+ require("core-js/modules/es.array.unscopables.flat-map.js");
8
+
9
+ require("core-js/modules/es.promise.js");
10
+
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ exports.BUILD_TASK = exports.AppsBuildTask = void 0;
15
+
16
+ function _defineProperty2() {
17
+ const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
+
19
+ _defineProperty2 = function () {
20
+ return data;
21
+ };
22
+
23
+ return data;
24
+ }
25
+
26
+ function _pMapSeries() {
27
+ const data = _interopRequireDefault(require("p-map-series"));
28
+
29
+ _pMapSeries = function () {
30
+ return data;
31
+ };
32
+
33
+ return data;
34
+ }
35
+
36
+ function _component() {
37
+ const data = require("@teambit/component");
38
+
39
+ _component = function () {
40
+ return data;
41
+ };
42
+
43
+ return data;
44
+ }
45
+
46
+ function _application() {
47
+ const data = require("./application.aspect");
48
+
49
+ _application = function () {
50
+ return data;
51
+ };
52
+
53
+ return data;
54
+ }
55
+
56
+ const BUILD_TASK = 'build_application';
57
+ exports.BUILD_TASK = BUILD_TASK;
58
+
59
+ class AppsBuildTask {
60
+ constructor(application, opt = {
61
+ deploy: true
62
+ }) {
63
+ this.application = application;
64
+ this.opt = opt;
65
+ (0, _defineProperty2().default)(this, "name", BUILD_TASK);
66
+ (0, _defineProperty2().default)(this, "aspectId", _application().ApplicationAspect.id);
67
+ (0, _defineProperty2().default)(this, "location", 'end');
68
+ }
69
+
70
+ async execute(context) {
71
+ const apps = this.application.listApps();
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 capsules = context.capsuleNetwork.seedersCapsules;
76
+ const capsule = this.getCapsule(capsules, aspectId);
77
+ if (!capsule || !app.build) return undefined;
78
+ const deployContext = await app.build(context, capsule);
79
+ return {
80
+ artifacts: deployContext.artifacts,
81
+ componentResult: {
82
+ component: capsule.component
83
+ }
84
+ };
85
+ });
86
+ const artifacts = componentsResults.flatMap(res => {
87
+ return res === null || res === void 0 ? void 0 : res.artifacts;
88
+ }).filter(a => !!a);
89
+
90
+ const _componentsResults = componentsResults.map(res => {
91
+ return res === null || res === void 0 ? void 0 : res.componentResult;
92
+ }).filter(a => !!a);
93
+
94
+ return {
95
+ artifacts,
96
+ componentsResults: _componentsResults
97
+ };
98
+ }
99
+
100
+ getCapsule(capsules, aspectId) {
101
+ const aspectCapsuleId = _component().ComponentID.fromString(aspectId).toStringWithoutVersion();
102
+
103
+ return capsules.find(capsule => capsule.component.id.toStringWithoutVersion() === aspectCapsuleId);
104
+ }
105
+
106
+ }
107
+
108
+ exports.AppsBuildTask = AppsBuildTask;
109
+
110
+ //# sourceMappingURL=build.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["build.task.ts"],"names":["BUILD_TASK","AppsBuildTask","constructor","application","opt","deploy","ApplicationAspect","id","execute","context","apps","listApps","componentsResults","app","aspectId","getAppAspect","name","undefined","capsules","capsuleNetwork","seedersCapsules","capsule","getCapsule","build","deployContext","artifacts","componentResult","component","flatMap","res","filter","a","_componentsResults","map","aspectCapsuleId","ComponentID","fromString","toStringWithoutVersion","find"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,UAAU,GAAG,mBAAnB;;;AAUA,MAAMC,aAAN,CAAyC;AAI9CC,EAAAA,WAAW,CAASC,WAAT,EAA+CC,GAAY,GAAG;AAAEC,IAAAA,MAAM,EAAE;AAAV,GAA9D,EAAgF;AAAA,SAAvEF,WAAuE,GAAvEA,WAAuE;AAAA,SAAjCC,GAAiC,GAAjCA,GAAiC;AAAA,kDAHpFJ,UAGoF;AAAA,sDAFhFM,iCAAkBC,EAE8D;AAAA,sDADvE,KACuE;AAAE;;AAEhF,QAAPC,OAAO,CAACC,OAAD,EAAkD;AAC7D,UAAMC,IAAI,GAAG,KAAKP,WAAL,CAAiBQ,QAAjB,EAAb;AACA,UAAMC,iBAAiB,GAAG,MAAM,2BAAUF,IAAV,EAAgB,MAAOG,GAAP,IAAiD;AAC/F,YAAMC,QAAQ,GAAG,KAAKX,WAAL,CAAiBY,YAAjB,CAA8BF,GAAG,CAACG,IAAlC,CAAjB;AACA,UAAI,CAACF,QAAL,EAAe,OAAOG,SAAP;AACf,YAAMC,QAAQ,GAAGT,OAAO,CAACU,cAAR,CAAuBC,eAAxC;AACA,YAAMC,OAAO,GAAG,KAAKC,UAAL,CAAgBJ,QAAhB,EAA0BJ,QAA1B,CAAhB;AACA,UAAI,CAACO,OAAD,IAAY,CAACR,GAAG,CAACU,KAArB,EAA4B,OAAON,SAAP;AAC5B,YAAMO,aAAa,GAAG,MAAMX,GAAG,CAACU,KAAJ,CAAUd,OAAV,EAAmBY,OAAnB,CAA5B;AACA,aAAO;AACLI,QAAAA,SAAS,EAAED,aAAa,CAACC,SADpB;AAELC,QAAAA,eAAe,EAAE;AAAEC,UAAAA,SAAS,EAAEN,OAAO,CAACM;AAArB;AAFZ,OAAP;AAID,KAX+B,CAAhC;AAaA,UAAMF,SAAS,GAAGb,iBAAiB,CAChCgB,OADe,CACNC,GAAD,IAAS;AAChB,aAAOA,GAAP,aAAOA,GAAP,uBAAOA,GAAG,CAAEJ,SAAZ;AACD,KAHe,EAIfK,MAJe,CAIPC,CAAD,IAAO,CAAC,CAACA,CAJD,CAAlB;;AAKA,UAAMC,kBAAkB,GAAGpB,iBAAiB,CACzCqB,GADwB,CACnBJ,GAAD,IAAS;AACZ,aAAOA,GAAP,aAAOA,GAAP,uBAAOA,GAAG,CAAEH,eAAZ;AACD,KAHwB,EAIxBI,MAJwB,CAIhBC,CAAD,IAAO,CAAC,CAACA,CAJQ,CAA3B;;AAKA,WAAO;AACLN,MAAAA,SADK;AAELb,MAAAA,iBAAiB,EAAEoB;AAFd,KAAP;AAID;;AAEOV,EAAAA,UAAU,CAACJ,QAAD,EAAsBJ,QAAtB,EAAwC;AACxD,UAAMoB,eAAe,GAAGC,yBAAYC,UAAZ,CAAuBtB,QAAvB,EAAiCuB,sBAAjC,EAAxB;;AACA,WAAOnB,QAAQ,CAACoB,IAAT,CAAejB,OAAD,IAAaA,OAAO,CAACM,SAAR,CAAkBpB,EAAlB,CAAqB8B,sBAArB,OAAkDH,eAA7E,CAAP;AACD;;AAxC6C","sourcesContent":["import mapSeries from 'p-map-series';\nimport { Capsule } from '@teambit/isolator';\nimport { BuildTask, BuiltTaskResult, BuildContext, ComponentResult, ArtifactDefinition } from '@teambit/builder';\nimport { ComponentID } from '@teambit/component';\nimport { ApplicationAspect } from './application.aspect';\nimport { ApplicationMain } from './application.main.runtime';\n\nexport const BUILD_TASK = 'build_application';\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 componentsResults = await mapSeries(apps, async (app): Promise<AppsResults | undefined> => {\n const aspectId = this.application.getAppAspect(app.name);\n if (!aspectId) return undefined;\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsule = this.getCapsule(capsules, aspectId);\n if (!capsule || !app.build) return undefined;\n const deployContext = await app.build(context, capsule);\n return {\n artifacts: deployContext.artifacts,\n componentResult: { component: capsule.component },\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 getCapsule(capsules: Capsule[], aspectId: string) {\n const aspectCapsuleId = ComponentID.fromString(aspectId).toStringWithoutVersion();\n return capsules.find((capsule) => capsule.component.id.toStringWithoutVersion() === aspectCapsuleId);\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BuildContext, ArtifactDefinition } from '@teambit/builder';
1
+ import { BuildContext, ArtifactList } from '@teambit/builder';
2
2
  export interface DeployContext extends BuildContext {
3
- artifacts?: ArtifactDefinition[];
3
+ artifactList?: ArtifactList;
4
4
  }
@@ -1,12 +1,14 @@
1
- import { BuildTask, BuiltTaskResult, BuildContext } from '@teambit/builder';
1
+ import { BuilderMain, BuildTask, BuildContext } from '@teambit/builder';
2
2
  import { ApplicationMain } from './application.main.runtime';
3
- export declare const BUILD_TASK = "build_application";
3
+ export declare const DEPLOY_TASK = "deploy_application";
4
4
  export declare class DeployTask implements BuildTask {
5
5
  private application;
6
+ private builder;
6
7
  name: string;
7
8
  aspectId: string;
8
- constructor(application: ApplicationMain);
9
- execute(context: BuildContext): Promise<BuiltTaskResult>;
9
+ readonly location = "end";
10
+ constructor(application: ApplicationMain, builder: BuilderMain);
11
+ execute(context: BuildContext): Promise<any>;
12
+ private getBuildTask;
10
13
  private getCapsule;
11
- private deployToProviders;
12
14
  }
@@ -2,16 +2,12 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- require("core-js/modules/es.array.flat-map.js");
6
-
7
- require("core-js/modules/es.array.unscopables.flat-map.js");
8
-
9
5
  require("core-js/modules/es.promise.js");
10
6
 
11
7
  Object.defineProperty(exports, "__esModule", {
12
8
  value: true
13
9
  });
14
- exports.DeployTask = exports.BUILD_TASK = void 0;
10
+ exports.DeployTask = exports.DEPLOY_TASK = void 0;
15
11
 
16
12
  function _defineProperty2() {
17
13
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -53,48 +49,75 @@ function _application() {
53
49
  return data;
54
50
  }
55
51
 
56
- const BUILD_TASK = 'build_application';
57
- exports.BUILD_TASK = BUILD_TASK;
52
+ function _build() {
53
+ const data = require("./build.task");
54
+
55
+ _build = function () {
56
+ return data;
57
+ };
58
+
59
+ return data;
60
+ }
61
+
62
+ const DEPLOY_TASK = 'deploy_application';
63
+ exports.DEPLOY_TASK = DEPLOY_TASK;
58
64
 
59
65
  class DeployTask {
60
- constructor(application) {
66
+ constructor(application, builder) {
61
67
  this.application = application;
62
- (0, _defineProperty2().default)(this, "name", BUILD_TASK);
68
+ this.builder = builder;
69
+ (0, _defineProperty2().default)(this, "name", DEPLOY_TASK);
63
70
  (0, _defineProperty2().default)(this, "aspectId", _application().ApplicationAspect.id);
71
+ (0, _defineProperty2().default)(this, "location", 'end');
64
72
  }
65
73
 
66
74
  async execute(context) {
67
75
  const apps = this.application.listApps();
68
- const componentsResultsUi = await (0, _pMapSeries().default)(apps, async app => {
76
+ const componentsResults = await (0, _pMapSeries().default)(apps, async app => {
77
+ var _buildTask$artifacts;
78
+
69
79
  const aspectId = this.application.getAppAspect(app.name);
70
80
  if (!aspectId) return undefined;
71
81
  const capsules = context.capsuleNetwork.seedersCapsules;
72
82
  const capsule = this.getCapsule(capsules, aspectId);
73
- if (!capsule) return undefined;
74
- if (!app.build) return undefined;
75
- const deployContext = await app.build(context, aspectId, capsule);
76
- if (app.deploy) await app.deploy(deployContext, capsule);
77
- await this.deployToProviders(deployContext, capsule);
83
+ if (!(capsule !== null && capsule !== void 0 && capsule.component)) return undefined;
84
+ const buildTask = this.getBuildTask(context.previousTasksResults);
85
+ if (!buildTask) return undefined;
86
+ const componentArtifacts = (_buildTask$artifacts = buildTask.artifacts) === null || _buildTask$artifacts === void 0 ? void 0 : _buildTask$artifacts.get(capsule.component);
87
+ const artifactList = componentArtifacts === null || componentArtifacts === void 0 ? void 0 : componentArtifacts[1];
88
+ const deployContext = Object.assign(context, {
89
+ artifactList
90
+ });
91
+ if (!capsule || !app.deploy) return undefined;
92
+ await app.deploy(deployContext, capsule);
78
93
  return {
79
- component: capsule.component
94
+ componentResult: {
95
+ component: capsule.component
96
+ }
80
97
  };
81
98
  });
99
+
100
+ const _componentsResults = componentsResults.map(res => {
101
+ return res === null || res === void 0 ? void 0 : res.componentResult;
102
+ }).filter(a => !!a);
103
+
82
104
  return {
83
- componentsResults: componentsResultsUi.flatMap(f => f ? [f] : [])
105
+ componentsResults: _componentsResults
84
106
  };
85
107
  }
86
108
 
109
+ getBuildTask(taskResults) {
110
+ return taskResults.find(({
111
+ task
112
+ }) => task.aspectId === _application().ApplicationAspect.id && task.name === _build().BUILD_TASK);
113
+ }
114
+
87
115
  getCapsule(capsules, aspectId) {
88
116
  const aspectCapsuleId = _component().ComponentID.fromString(aspectId).toStringWithoutVersion();
89
117
 
90
118
  return capsules.find(capsule => capsule.component.id.toStringWithoutVersion() === aspectCapsuleId);
91
119
  }
92
120
 
93
- async deployToProviders(deployContext, capsule) {
94
- const providers = this.application.listProviders();
95
- await (0, _pMapSeries().default)(providers, async provider => provider.deploy(deployContext, capsule));
96
- }
97
-
98
121
  }
99
122
 
100
123
  exports.DeployTask = DeployTask;
@@ -1 +1 @@
1
- {"version":3,"sources":["deploy.task.ts"],"names":["BUILD_TASK","DeployTask","constructor","application","ApplicationAspect","id","execute","context","apps","listApps","componentsResultsUi","app","aspectId","getAppAspect","name","undefined","capsules","capsuleNetwork","seedersCapsules","capsule","getCapsule","build","deployContext","deploy","deployToProviders","component","componentsResults","flatMap","f","aspectCapsuleId","ComponentID","fromString","toStringWithoutVersion","find","providers","listProviders","provider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,UAAU,GAAG,mBAAnB;;;AAEA,MAAMC,UAAN,CAAsC;AAI3CC,EAAAA,WAAW,CAASC,WAAT,EAAuC;AAAA,SAA9BA,WAA8B,GAA9BA,WAA8B;AAAA,kDAH3CH,UAG2C;AAAA,sDAFvCI,iCAAkBC,EAEqB;AAAE;;AAEvC,QAAPC,OAAO,CAACC,OAAD,EAAkD;AAC7D,UAAMC,IAAI,GAAG,KAAKL,WAAL,CAAiBM,QAAjB,EAAb;AACA,UAAMC,mBAAmB,GAAG,MAAM,2BAAUF,IAAV,EAAgB,MAAOG,GAAP,IAAqD;AACrG,YAAMC,QAAQ,GAAG,KAAKT,WAAL,CAAiBU,YAAjB,CAA8BF,GAAG,CAACG,IAAlC,CAAjB;AACA,UAAI,CAACF,QAAL,EAAe,OAAOG,SAAP;AACf,YAAMC,QAAQ,GAAGT,OAAO,CAACU,cAAR,CAAuBC,eAAxC;AACA,YAAMC,OAAO,GAAG,KAAKC,UAAL,CAAgBJ,QAAhB,EAA0BJ,QAA1B,CAAhB;AACA,UAAI,CAACO,OAAL,EAAc,OAAOJ,SAAP;AACd,UAAI,CAACJ,GAAG,CAACU,KAAT,EAAgB,OAAON,SAAP;AAChB,YAAMO,aAAa,GAAG,MAAMX,GAAG,CAACU,KAAJ,CAAUd,OAAV,EAAmBK,QAAnB,EAA6BO,OAA7B,CAA5B;AACA,UAAIR,GAAG,CAACY,MAAR,EAAgB,MAAMZ,GAAG,CAACY,MAAJ,CAAWD,aAAX,EAA0BH,OAA1B,CAAN;AAChB,YAAM,KAAKK,iBAAL,CAAuBF,aAAvB,EAAsCH,OAAtC,CAAN;AACA,aAAO;AAAEM,QAAAA,SAAS,EAAEN,OAAO,CAACM;AAArB,OAAP;AACD,KAXiC,CAAlC;AAaA,WAAO;AACLC,MAAAA,iBAAiB,EAAEhB,mBAAmB,CAACiB,OAApB,CAA6BC,CAAD,IAAQA,CAAC,GAAG,CAACA,CAAD,CAAH,GAAS,EAA9C;AADd,KAAP;AAGD;;AAEOR,EAAAA,UAAU,CAACJ,QAAD,EAAsBJ,QAAtB,EAAwC;AACxD,UAAMiB,eAAe,GAAGC,yBAAYC,UAAZ,CAAuBnB,QAAvB,EAAiCoB,sBAAjC,EAAxB;;AACA,WAAOhB,QAAQ,CAACiB,IAAT,CAAed,OAAD,IAAaA,OAAO,CAACM,SAAR,CAAkBpB,EAAlB,CAAqB2B,sBAArB,OAAkDH,eAA7E,CAAP;AACD;;AAE8B,QAAjBL,iBAAiB,CAACF,aAAD,EAA8BH,OAA9B,EAAgD;AAC7E,UAAMe,SAAS,GAAG,KAAK/B,WAAL,CAAiBgC,aAAjB,EAAlB;AACA,UAAM,2BAAUD,SAAV,EAAqB,MAAOE,QAAP,IAAoBA,QAAQ,CAACb,MAAT,CAAgBD,aAAhB,EAA+BH,OAA/B,CAAzC,CAAN;AACD;;AAlC0C","sourcesContent":["import mapSeries from 'p-map-series';\nimport { Capsule } from '@teambit/isolator';\nimport { BuildTask, BuiltTaskResult, BuildContext, ComponentResult } from '@teambit/builder';\nimport { ComponentID } from '@teambit/component';\nimport { ApplicationAspect } from './application.aspect';\nimport { ApplicationMain } from './application.main.runtime';\n\nexport const BUILD_TASK = 'build_application';\n\nexport class DeployTask implements BuildTask {\n name = BUILD_TASK;\n aspectId = ApplicationAspect.id;\n\n constructor(private application: ApplicationMain) {}\n\n async execute(context: BuildContext): Promise<BuiltTaskResult> {\n const apps = this.application.listApps();\n const componentsResultsUi = await mapSeries(apps, async (app): Promise<ComponentResult | undefined> => {\n const aspectId = this.application.getAppAspect(app.name);\n if (!aspectId) return undefined;\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsule = this.getCapsule(capsules, aspectId);\n if (!capsule) return undefined;\n if (!app.build) return undefined;\n const deployContext = await app.build(context, aspectId, capsule);\n if (app.deploy) await app.deploy(deployContext, capsule);\n await this.deployToProviders(deployContext, capsule);\n return { component: capsule.component };\n });\n\n return {\n componentsResults: componentsResultsUi.flatMap((f) => (f ? [f] : [])),\n };\n }\n\n private getCapsule(capsules: Capsule[], aspectId: string) {\n const aspectCapsuleId = ComponentID.fromString(aspectId).toStringWithoutVersion();\n return capsules.find((capsule) => capsule.component.id.toStringWithoutVersion() === aspectCapsuleId);\n }\n\n private async deployToProviders(deployContext: BuildContext, capsule: Capsule) {\n const providers = this.application.listProviders();\n await mapSeries(providers, async (provider) => provider.deploy(deployContext, capsule));\n }\n}\n"]}
1
+ {"version":3,"sources":["deploy.task.ts"],"names":["DEPLOY_TASK","DeployTask","constructor","application","builder","ApplicationAspect","id","execute","context","apps","listApps","componentsResults","app","aspectId","getAppAspect","name","undefined","capsules","capsuleNetwork","seedersCapsules","capsule","getCapsule","component","buildTask","getBuildTask","previousTasksResults","componentArtifacts","artifacts","get","artifactList","deployContext","Object","assign","deploy","componentResult","_componentsResults","map","res","filter","a","taskResults","find","task","BUILD_TASK","aspectCapsuleId","ComponentID","fromString","toStringWithoutVersion"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,WAAW,GAAG,oBAApB;;;AAEA,MAAMC,UAAN,CAAsC;AAI3CC,EAAAA,WAAW,CAASC,WAAT,EAA+CC,OAA/C,EAAqE;AAAA,SAA5DD,WAA4D,GAA5DA,WAA4D;AAAA,SAAtBC,OAAsB,GAAtBA,OAAsB;AAAA,kDAHzEJ,WAGyE;AAAA,sDAFrEK,iCAAkBC,EAEmD;AAAA,sDAD5D,KAC4D;AAAE;;AAErE,QAAPC,OAAO,CAACC,OAAD,EAAsC;AACjD,UAAMC,IAAI,GAAG,KAAKN,WAAL,CAAiBO,QAAjB,EAAb;AACA,UAAMC,iBAAiB,GAAG,MAAM,2BAAUF,IAAV,EAAgB,MAAOG,GAAP,IAA6B;AAAA;;AAC3E,YAAMC,QAAQ,GAAG,KAAKV,WAAL,CAAiBW,YAAjB,CAA8BF,GAAG,CAACG,IAAlC,CAAjB;AACA,UAAI,CAACF,QAAL,EAAe,OAAOG,SAAP;AACf,YAAMC,QAAQ,GAAGT,OAAO,CAACU,cAAR,CAAuBC,eAAxC;AACA,YAAMC,OAAO,GAAG,KAAKC,UAAL,CAAgBJ,QAAhB,EAA0BJ,QAA1B,CAAhB;AACA,UAAI,EAACO,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEE,SAAV,CAAJ,EAAyB,OAAON,SAAP;AACzB,YAAMO,SAAS,GAAG,KAAKC,YAAL,CAAkBhB,OAAO,CAACiB,oBAA1B,CAAlB;AACA,UAAI,CAACF,SAAL,EAAgB,OAAOP,SAAP;AAChB,YAAMU,kBAAkB,2BAAGH,SAAS,CAACI,SAAb,yDAAG,qBAAqBC,GAArB,CAAyBR,OAAO,CAACE,SAAjC,CAA3B;AACA,YAAMO,YAAY,GAAGH,kBAAH,aAAGA,kBAAH,uBAAGA,kBAAkB,CAAG,CAAH,CAAvC;AACA,YAAMI,aAA4B,GAAGC,MAAM,CAACC,MAAP,CAAcxB,OAAd,EAAuB;AAAEqB,QAAAA;AAAF,OAAvB,CAArC;AACA,UAAI,CAACT,OAAD,IAAY,CAACR,GAAG,CAACqB,MAArB,EAA6B,OAAOjB,SAAP;AAC7B,YAAMJ,GAAG,CAACqB,MAAJ,CAAWH,aAAX,EAA0BV,OAA1B,CAAN;AAEA,aAAO;AACLc,QAAAA,eAAe,EAAE;AAAEZ,UAAAA,SAAS,EAAEF,OAAO,CAACE;AAArB;AADZ,OAAP;AAGD,KAjB+B,CAAhC;;AAmBA,UAAMa,kBAAkB,GAAGxB,iBAAiB,CACzCyB,GADwB,CACnBC,GAAD,IAAS;AACZ,aAAOA,GAAP,aAAOA,GAAP,uBAAOA,GAAG,CAAEH,eAAZ;AACD,KAHwB,EAIxBI,MAJwB,CAIhBC,CAAD,IAAO,CAAC,CAACA,CAJQ,CAA3B;;AAMA,WAAO;AACL5B,MAAAA,iBAAiB,EAAEwB;AADd,KAAP;AAGD;;AAEOX,EAAAA,YAAY,CAACgB,WAAD,EAA6B;AAC/C,WAAOA,WAAW,CAACC,IAAZ,CAAiB,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,CAAC7B,QAAL,KAAkBR,iCAAkBC,EAApC,IAA0CoC,IAAI,CAAC3B,IAAL,KAAc4B,mBAAvF,CAAP;AACD;;AAEOtB,EAAAA,UAAU,CAACJ,QAAD,EAAsBJ,QAAtB,EAAwC;AACxD,UAAM+B,eAAe,GAAGC,yBAAYC,UAAZ,CAAuBjC,QAAvB,EAAiCkC,sBAAjC,EAAxB;;AACA,WAAO9B,QAAQ,CAACwB,IAAT,CAAerB,OAAD,IAAaA,OAAO,CAACE,SAAR,CAAkBhB,EAAlB,CAAqByC,sBAArB,OAAkDH,eAA7E,CAAP;AACD;;AA7C0C","sourcesContent":["import mapSeries from 'p-map-series';\nimport { Capsule } from '@teambit/isolator';\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 { DeployContext } from './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 capsules = context.capsuleNetwork.seedersCapsules;\n const capsule = this.getCapsule(capsules, aspectId);\n if (!capsule?.component) return undefined;\n const buildTask = this.getBuildTask(context.previousTasksResults);\n if (!buildTask) return undefined;\n const componentArtifacts = buildTask.artifacts?.get(capsule.component);\n const artifactList = componentArtifacts?.[1];\n const deployContext: DeployContext = Object.assign(context, { artifactList });\n if (!capsule || !app.deploy) return undefined;\n await app.deploy(deployContext, capsule);\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[]) {\n return taskResults.find(({ task }) => task.aspectId === ApplicationAspect.id && task.name === BUILD_TASK);\n }\n\n private getCapsule(capsules: Capsule[], aspectId: string) {\n const aspectCapsuleId = ComponentID.fromString(aspectId).toStringWithoutVersion();\n return capsules.find((capsule) => capsule.component.id.toStringWithoutVersion() === aspectCapsuleId);\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
- import { BuildContext } from '@teambit/builder';
2
- import { Capsule } from '@teambit/isolator';
1
+ import { DeployFn } from './application';
3
2
  export interface DeploymentProvider {
4
- deploy(context: BuildContext, capsule: Capsule): Promise<void>;
3
+ deploy: DeployFn;
5
4
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { ApplicationAspect } from './application.aspect';
2
2
  export type { ApplicationMain } from './application.main.runtime';
3
- export type { Application } from './application';
3
+ export type { Application, DeployFn } from './application';
4
4
  export { AppContext } from './app-context';
5
5
  export { DeploymentProvider } from './deployment-provider';
6
6
  export { ApplicationType } from './application-type';
7
7
  export { DeployContext } from './deploy-context';
8
+ export { AppBuildResult } from './app-build-result';
package/dist/index.js CHANGED
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "AppBuildResult", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _appBuildResult().AppBuildResult;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "AppContext", {
7
13
  enumerable: true,
8
14
  get: function () {
@@ -84,4 +90,14 @@ function _deployContext() {
84
90
  return data;
85
91
  }
86
92
 
93
+ function _appBuildResult() {
94
+ const data = require("./app-build-result");
95
+
96
+ _appBuildResult = function () {
97
+ return data;
98
+ };
99
+
100
+ return data;
101
+ }
102
+
87
103
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export { ApplicationAspect } from './application.aspect';\nexport type { ApplicationMain } from './application.main.runtime';\nexport type { Application } from './application';\nexport { AppContext } from './app-context';\nexport { DeploymentProvider } from './deployment-provider';\nexport { ApplicationType } from './application-type';\nexport { DeployContext } from './deploy-context';\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export { ApplicationAspect } from './application.aspect';\nexport type { ApplicationMain } from './application.main.runtime';\nexport type { Application, DeployFn } from './application';\nexport { AppContext } from './app-context';\nexport { DeploymentProvider } from './deployment-provider';\nexport { ApplicationType } from './application-type';\nexport { DeployContext } from './deploy-context';\nexport { AppBuildResult } from './app-build-result';\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/application",
3
- "version": "0.0.240",
3
+ "version": "0.0.241",
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.240"
9
+ "version": "0.0.241"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -16,14 +16,14 @@
16
16
  "ink": "3.0.8",
17
17
  "@babel/runtime": "7.12.18",
18
18
  "core-js": "^3.0.0",
19
- "@teambit/component": "0.0.598",
20
- "@teambit/envs": "0.0.598",
19
+ "@teambit/builder": "0.0.599",
20
+ "@teambit/component": "0.0.599",
21
+ "@teambit/envs": "0.0.599",
21
22
  "@teambit/cli-table": "0.0.33",
22
- "@teambit/cli": "0.0.410",
23
- "@teambit/aspect-loader": "0.0.598",
24
- "@teambit/builder": "0.0.598",
25
- "@teambit/logger": "0.0.499",
26
- "@teambit/isolator": "0.0.598"
23
+ "@teambit/cli": "0.0.411",
24
+ "@teambit/aspect-loader": "0.0.599",
25
+ "@teambit/logger": "0.0.500",
26
+ "@teambit/isolator": "0.0.599"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/lodash": "4.14.165",
@@ -35,7 +35,7 @@
35
35
  "@types/node": "12.20.4"
36
36
  },
37
37
  "peerDependencies": {
38
- "@teambit/legacy": "1.0.197",
38
+ "@teambit/legacy": "1.0.198",
39
39
  "react-dom": "^16.8.0 || ^17.0.0",
40
40
  "react": "^16.8.0 || ^17.0.0"
41
41
  },
@@ -63,7 +63,7 @@
63
63
  "react": "-"
64
64
  },
65
65
  "peerDependencies": {
66
- "@teambit/legacy": "1.0.197",
66
+ "@teambit/legacy": "1.0.198",
67
67
  "react-dom": "^16.8.0 || ^17.0.0",
68
68
  "react": "^16.8.0 || ^17.0.0"
69
69
  }