@teambit/builder 1.0.1232 → 1.0.1234
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder.main.runtime.d.ts +15 -0
- package/dist/builder.main.runtime.js +51 -3
- package/dist/builder.main.runtime.js.map +1 -1
- package/dist/builder.main.runtime.spec.d.ts +1 -0
- package/dist/builder.main.runtime.spec.js +98 -0
- package/dist/builder.main.runtime.spec.js.map +1 -0
- package/dist/builder.service.d.ts +4 -0
- package/dist/builder.service.js +16 -0
- package/dist/builder.service.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{preview-1792418223123.js → preview-1792527927744.js} +2 -2
- package/package.json +17 -17
|
@@ -50,6 +50,14 @@ export type RawBuilderData = {
|
|
|
50
50
|
aspectsData: AspectData[];
|
|
51
51
|
bitVersion?: string;
|
|
52
52
|
};
|
|
53
|
+
export type PlannedTask = Pick<PipelineReport, 'taskId' | 'taskName' | 'taskDescription'>;
|
|
54
|
+
/**
|
|
55
|
+
* builder data of a version that was tagged/snapped without a build. it has the tasks that are going to run once the
|
|
56
|
+
* component is built, so they can be shown before the build (e.g. on the CI) starts. the build replaces it.
|
|
57
|
+
*/
|
|
58
|
+
export type UnbuiltBuilderData = {
|
|
59
|
+
plannedTasks: PlannedTask[];
|
|
60
|
+
};
|
|
53
61
|
/**
|
|
54
62
|
* builder data mapped to an ArtifactList instance
|
|
55
63
|
*/
|
|
@@ -133,6 +141,13 @@ export declare class BuilderMain {
|
|
|
133
141
|
tagTasks: string[];
|
|
134
142
|
snapTasks: string[];
|
|
135
143
|
};
|
|
144
|
+
/**
|
|
145
|
+
* the tasks of the build pipeline and the snap/tag pipeline of each component's env, keyed by the component id
|
|
146
|
+
* without version. it's only informative, so it never throws. a component whose env can't be found (e.g. not
|
|
147
|
+
* loaded) is skipped.
|
|
148
|
+
*/
|
|
149
|
+
getPlannedTasks(components: Component[], deployPipeline: 'tag' | 'snap'): Map<string, PlannedTask[]>;
|
|
150
|
+
private getPipelineServices;
|
|
136
151
|
/**
|
|
137
152
|
* register a build task to apply on all component build pipelines.
|
|
138
153
|
* build happens on `bit build` and as part of `bit tag --persist`.
|
|
@@ -267,6 +267,11 @@ const FILE_PATH_PARAM_DELIM = exports.FILE_PATH_PARAM_DELIM = '~';
|
|
|
267
267
|
* builder data format for the bit object store
|
|
268
268
|
*/
|
|
269
269
|
|
|
270
|
+
/**
|
|
271
|
+
* builder data of a version that was tagged/snapped without a build. it has the tasks that are going to run once the
|
|
272
|
+
* component is built, so they can be shown before the build (e.g. on the CI) starts. the build replaces it.
|
|
273
|
+
*/
|
|
274
|
+
|
|
270
275
|
/**
|
|
271
276
|
* builder data mapped to an ArtifactList instance
|
|
272
277
|
*/
|
|
@@ -591,11 +596,9 @@ class BuilderMain {
|
|
|
591
596
|
* one of the pipelines that run (e.g. a build task when the snap pipeline runs as well).
|
|
592
597
|
*/
|
|
593
598
|
throwIfNoTaskMatchesFilter(components, tasks, deployPipeline) {
|
|
594
|
-
const services = [this.buildService];
|
|
595
|
-
if (deployPipeline) services.push(deployPipeline === 'snap' ? this.snapService : this.tagService);
|
|
596
599
|
const envsById = new Map(components.map(component => this.envs.getEnv(component)).map(env => [env.id, env]));
|
|
597
600
|
const envs = [...envsById.values()];
|
|
598
|
-
const allTasks =
|
|
601
|
+
const allTasks = this.getPipelineServices(deployPipeline).flatMap(service => service.getCurrentPipeline(envs));
|
|
599
602
|
if (allTasks.length && !allTasks.some(task => (0, _buildPipelineOrder().isTaskInFilter)(task, tasks))) {
|
|
600
603
|
const availableTasks = [...new Set(allTasks.map(task => _buildTask().BuildTaskHelper.serializeId(task)))].sort();
|
|
601
604
|
throw new (_bitError().BitError)(`no tasks found matching the specified filter: "${tasks.join(', ')}". Available tasks: ${availableTasks.join(', ')}`);
|
|
@@ -615,6 +618,51 @@ class BuilderMain {
|
|
|
615
618
|
};
|
|
616
619
|
}
|
|
617
620
|
|
|
621
|
+
/**
|
|
622
|
+
* the tasks of the build pipeline and the snap/tag pipeline of each component's env, keyed by the component id
|
|
623
|
+
* without version. it's only informative, so it never throws. a component whose env can't be found (e.g. not
|
|
624
|
+
* loaded) is skipped.
|
|
625
|
+
*/
|
|
626
|
+
getPlannedTasks(components, deployPipeline) {
|
|
627
|
+
const envIdPerComp = new Map();
|
|
628
|
+
const envsById = new Map();
|
|
629
|
+
components.forEach(component => {
|
|
630
|
+
try {
|
|
631
|
+
const env = this.envs.getEnv(component);
|
|
632
|
+
envIdPerComp.set(component.id.toStringWithoutVersion(), env.id);
|
|
633
|
+
envsById.set(env.id, env);
|
|
634
|
+
} catch (err) {
|
|
635
|
+
this.logger.debug(`unable to get the planned tasks of ${component.id.toString()}: ${err.message}`);
|
|
636
|
+
}
|
|
637
|
+
});
|
|
638
|
+
if (!envsById.size) return new Map();
|
|
639
|
+
let tasksPerEnvPerService;
|
|
640
|
+
try {
|
|
641
|
+
// calculated for all the envs together, as in the actual run, so a task may depend on a task of another env.
|
|
642
|
+
tasksPerEnvPerService = this.getPipelineServices(deployPipeline).map(service => service.getCurrentPipelinePerEnv([...envsById.values()]));
|
|
643
|
+
} catch (err) {
|
|
644
|
+
this.logger.debug(`unable to get the planned tasks: ${err.message}`);
|
|
645
|
+
return new Map();
|
|
646
|
+
}
|
|
647
|
+
const plannedTasksPerEnv = new Map();
|
|
648
|
+
envsById.forEach((env, envId) => {
|
|
649
|
+
const tasks = tasksPerEnvPerService.flatMap(tasksPerEnv => tasksPerEnv.get(envId) || []);
|
|
650
|
+
// a task can be registered to more than one pipeline (e.g. PreparePackages), the report has it once.
|
|
651
|
+
const uniqTasks = (0, _lodash().uniqBy)(tasks, task => _buildTask().BuildTaskHelper.serializeId(task));
|
|
652
|
+
plannedTasksPerEnv.set(envId, uniqTasks.map(task => ({
|
|
653
|
+
taskId: task.aspectId,
|
|
654
|
+
taskName: task.name,
|
|
655
|
+
taskDescription: task.description
|
|
656
|
+
})));
|
|
657
|
+
});
|
|
658
|
+
return new Map([...envIdPerComp].map(([compId, envId]) => [compId, plannedTasksPerEnv.get(envId)]));
|
|
659
|
+
}
|
|
660
|
+
getPipelineServices(deployPipeline) {
|
|
661
|
+
const services = [this.buildService];
|
|
662
|
+
if (deployPipeline) services.push(deployPipeline === 'snap' ? this.snapService : this.tagService);
|
|
663
|
+
return services;
|
|
664
|
+
}
|
|
665
|
+
|
|
618
666
|
/**
|
|
619
667
|
* register a build task to apply on all component build pipelines.
|
|
620
668
|
* build happens on `bit build` and as part of `bit tag --persist`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_component","_aspectLoader","_harmonyModules","_cli","_component2","_envs","_graphql","_harmony","_logger","_scope","_workspace","_isolator","_bit","_toolboxArray","_generator","_ui","_issues","_bitError","_artifact","_artifactFactory","_builder","_builder2","_builder3","_build","_buildTask","_buildPipelineOrder","_exceptions","_buildPipelineResultList","_artifacts","_buildTask2","_builder4","_componentsHaveIssues","_configStore","_legacy","_legacy2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FILE_PATH_PARAM_DELIM","exports","BuilderMain","constructor","envs","workspace","buildService","tagService","snapService","scope","isolator","aspectLoader","componentAspect","buildTaskSlot","tagTaskSlot","snapTaskSlot","logger","issues","storeArtifacts","tasksResults","artifacts","flatMap","Promise","all","map","artifactMap","toArray","component","artifactList","store","err","ArtifactStorageError","id","toString","pipelineResultsToBuilderData","components","buildPipelineResults","buildPipelineResultList","BuildPipelineResultList","ComponentMap","as","aspectsData","getDataOfComponent","pipelineReport","getPipelineReportOfComponent","getArtifactsDataOfComponent","pipeline","bitVersion","getBitVersion","tagListener","options","isolateOptions","builderOptions","pipeResults","allTasksResults","throwOnError","forceDeploy","disableTagAndSnapPipelines","isSnap","populateArtifactsFrom","loose","deployPipeline","buildEnvsExecutionResults","build","emptyRootDir","tasks","Extensions","aspect","ignoreIssues","undefined","throwErrorsIfExist","hasErrors","builderOptionsForTagSnap","seedersOnly","previousTasksResults","deployEnvsExecutionResults","runSnapTasks","runTagTasks","builderDataMap","combineBuildDataFrom","validateBuilderDataMap","sanitizePreviewData","builderDataMapToLegacyOnTagResults","builderDataComponentMap","builderDataToLegacyExtension","builderData","existingBuilder","state","aspects","get","BuilderAspect","legacy","builderExtension","ExtensionDataEntry","harmonyComps","compsBeingTaggedLookup","Set","comp","harmonyCompIdsWithEnvId","envId","getEnvId","isUsingCoreEnv","inWs","lastTaggedEnvHasOnlyOverview","has","isEnvTaggedWithComp","envCompId","ComponentID","fromString","hasId","onlyOverview","harmonyCompIdsWithEnvIdMap","Map","compsToDeleteOnlyOverviewPreviewData","envData","previewData","buildData","taskSerializedIds","BuildTaskHelper","serializeId","aspectId","taskId","name","taskName","duplications","findDuplications","Error","join","promises","populateFrom","find","isEqual","ignoreVersion","idStr","populateFromComp","getHost","version","populateFromBuilderData","getBuilderData","artifact","artifactObj","toObject","a","task","aspectData","p","flattenValue","getArtifactsVinylByAspect","aspectName","getArtifactsByAspect","vinyls","getVinylsAndImportIfMissing","legacyScope","getArtifactsVinylByAspectAndName","getArtifactsByAspectAndName","getArtifactsVinylByAspectAndTaskName","getArtifactsbyAspectAndTaskName","getArtifactsByName","getArtifacts","byAspectNameAndName","byAspectNameAndTaskName","getDataByAspect","ArtifactList","fromArray","clonedData","cloneDeep","artifactFiles","files","ArtifactFiles","fromObject","Artifact","assign","fromArtifactObject","extraOptions","throwForVariousIssues","includeTag","includeSnap","throwIfNoTaskMatchesFilter","ids","c","capsulesBaseDir","getComponentsCapsulesBaseDir","baseIsolateOpts","baseDir","useHash","mergedIsolateOpts","network","isolateComponents","createEnvironment","graphCapsules","getAllComponents","builderServiceOptions","originalSeeders","consoleTitle","buildResult","runOnce","services","envsById","getEnv","env","values","allTasks","service","getCurrentPipeline","some","isTaskInFilter","availableTasks","sort","BitError","listTasks","compEnv","buildTasks","getCurrentPipeTasks","tagTasks","snapTasks","registerBuildTasks","register","registerDeployTasks","registerTagTasks","registerSnapTasks","getDownloadUrlForArtifact","componentId","path","componentsToCheck","isDeleted","throwForComponentIssues","issuesToIgnoreFromFlag","split","issue","trim","issuesToIgnoreFromConfig","getIssuesToIgnoreGlobally","issuesToIgnore","triggerAddComponentIssues","removeIgnoredIssuesFromComponents","legacyComponents","_consumer","componentsWithBlockingIssues","shouldBlockTagging","ComponentsHaveIssues","workspaceIssues","getWorkspaceIssues","includeNonBlocking","issuesStr","issueErr","message","provider","cli","loggerExt","graphql","generator","ui","configStore","config","artifactFactory","ArtifactFactory","createLogger","BuilderService","registerService","builder","BundleUiTask","registerRoute","BuilderRoute","builderSchema","registerComponentTemplate","buildTaskTemplate","commands","BuilderCmd","ArtifactsCmd","Slot","withType","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","ScopeAspect","IsolatorAspect","LoggerAspect","AspectLoaderAspect","GraphqlAspect","GeneratorAspect","ComponentAspect","UIAspect","ConfigStoreAspect","IssuesAspect","addRuntime"],"sources":["builder.main.runtime.ts"],"sourcesContent":["import { cloneDeep } from 'lodash';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport type { ArtifactVinyl, ArtifactObject } from '@teambit/component.sources';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport type { CLIMain } from '@teambit/cli';\nimport { MainRuntime } from '@teambit/harmony.modules.runtimes';\nimport { CLIAspect } from '@teambit/cli';\nimport type { Component, IComponent, ComponentMain } from '@teambit/component';\nimport { ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { IsolateComponentsOptions, IsolatorMain } from '@teambit/isolator';\nimport { IsolatorAspect } from '@teambit/isolator';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\nimport { findDuplications } from '@teambit/toolbox.array.duplications-finder';\nimport type { GeneratorMain } from '@teambit/generator';\nimport { GeneratorAspect } from '@teambit/generator';\nimport type { UiMain } from '@teambit/ui';\nimport { UIAspect, BundleUiTask } from '@teambit/ui';\nimport type { IssuesMain } from '@teambit/issues';\nimport { IssuesAspect } from '@teambit/issues';\nimport { BitError } from '@teambit/bit-error';\nimport type { FsArtifact } from './artifact';\nimport { Artifact, ArtifactList } from './artifact';\nimport { ArtifactFactory } from './artifact/artifact-factory'; // it gets undefined when importing it from './artifact'\nimport { BuilderAspect } from './builder.aspect';\nimport { builderSchema } from './builder.graphql';\nimport type { BuilderServiceOptions } from './builder.service';\nimport { BuilderService } from './builder.service';\nimport { BuilderCmd } from './build.cmd';\nimport type { BuildTask } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport { isTaskInFilter } from './build-pipeline-order';\nimport type { TaskResults } from './build-pipe';\nimport type { TaskResultsList } from './task-results-list';\nimport { ArtifactStorageError } from './exceptions';\nimport type { AspectData, PipelineReport } from './build-pipeline-result-list';\nimport { BuildPipelineResultList } from './build-pipeline-result-list';\nimport type { TaskMetadata } from './types';\nimport { ArtifactsCmd } from './artifact/artifacts.cmd';\nimport { buildTaskTemplate } from './templates/build-task';\nimport { BuilderRoute } from './builder.route';\nimport { ComponentsHaveIssues } from './exceptions/components-have-issues';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\nimport { Extensions } from '@teambit/legacy.constants';\nimport { ExtensionDataEntry } from '@teambit/legacy.extension-data';\n\nexport type TaskSlot = SlotRegistry<BuildTask[]>;\nexport type OnTagResults = { builderDataMap: ComponentMap<RawBuilderData>; pipeResults: TaskResultsList[] };\nexport type OnTagOpts = {\n disableTagAndSnapPipelines?: boolean;\n throwOnError?: boolean; // on the CI it helps to save the results on failure so this is set to false\n forceDeploy?: boolean; // whether run the deploy-pipeline although the build-pipeline has failed\n populateArtifactsFrom?: ComponentID[]; // helpful for tagging from scope where we want to use the build-artifacts of previous snap.\n isSnap?: boolean;\n loose?: boolean; // whether to ignore test/lint errors and allow tagging to succeed\n};\nexport const FILE_PATH_PARAM_DELIM = '~';\n\nexport type LegacyOnTagResult = {\n id: ComponentID;\n builderData: ExtensionDataEntry;\n};\n\n/**\n * builder data format for the bit object store\n */\nexport type RawBuilderData = {\n pipeline: PipelineReport[];\n artifacts?: ArtifactObject[];\n aspectsData: AspectData[];\n bitVersion?: string;\n};\n/**\n * builder data mapped to an ArtifactList instance\n */\nexport type BuilderData = Omit<RawBuilderData, 'artifacts'> & {\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class BuilderMain {\n constructor(\n private envs: EnvsMain,\n private workspace: Workspace,\n private buildService: BuilderService,\n private tagService: BuilderService,\n private snapService: BuilderService,\n private scope: ScopeMain,\n private isolator: IsolatorMain,\n private aspectLoader: AspectLoaderMain,\n private componentAspect: ComponentMain,\n private buildTaskSlot: TaskSlot,\n private tagTaskSlot: TaskSlot,\n private snapTaskSlot: TaskSlot,\n private logger: Logger,\n private issues: IssuesMain\n ) {}\n\n private async storeArtifacts(tasksResults: TaskResults[]) {\n const artifacts = tasksResults.flatMap((t) => (t.artifacts ? [t.artifacts] : []));\n await Promise.all(\n artifacts.map(async (artifactMap: ComponentMap<ArtifactList<FsArtifact>>) => {\n await Promise.all(\n artifactMap.toArray().map(async ([component, artifactList]) => {\n try {\n await artifactList.store(component);\n } catch (err: any) {\n throw new ArtifactStorageError(err, component.id.toString());\n }\n })\n );\n })\n );\n }\n\n pipelineResultsToBuilderData(\n components: Component[],\n buildPipelineResults: TaskResults[]\n ): ComponentMap<RawBuilderData> {\n const buildPipelineResultList = new BuildPipelineResultList(buildPipelineResults, components);\n return ComponentMap.as<RawBuilderData>(components, (component) => {\n const aspectsData = buildPipelineResultList.getDataOfComponent(component.id);\n const pipelineReport = buildPipelineResultList.getPipelineReportOfComponent(component.id);\n const artifacts = buildPipelineResultList.getArtifactsDataOfComponent(component.id);\n return { pipeline: pipelineReport, artifacts, aspectsData, bitVersion: getBitVersion() };\n });\n }\n\n async tagListener(\n components: Component[],\n options: OnTagOpts = {},\n isolateOptions: IsolateComponentsOptions = {},\n builderOptions: BuilderServiceOptions = {}\n ): Promise<OnTagResults> {\n const pipeResults: TaskResultsList[] = [];\n const allTasksResults: TaskResults[] = [];\n const { throwOnError, forceDeploy, disableTagAndSnapPipelines, isSnap, populateArtifactsFrom, loose } = options;\n if (populateArtifactsFrom) isolateOptions.populateArtifactsFrom = populateArtifactsFrom;\n const deployPipeline = isSnap ? 'snap' : 'tag';\n const buildEnvsExecutionResults = await this.build(\n components,\n { emptyRootDir: true, ...isolateOptions },\n {\n ...builderOptions,\n // even when build is skipped (in case of tag-from-scope), the pre-build/post-build and teambit.harmony/aspect tasks are needed\n tasks: populateArtifactsFrom ? [Extensions.aspect] : builderOptions.tasks,\n },\n { ignoreIssues: '*', deployPipeline: forceDeploy || !disableTagAndSnapPipelines ? deployPipeline : undefined }\n );\n if (throwOnError && !forceDeploy) buildEnvsExecutionResults.throwErrorsIfExist(loose);\n allTasksResults.push(...buildEnvsExecutionResults.tasksResults);\n pipeResults.push(buildEnvsExecutionResults);\n\n if (forceDeploy || (!disableTagAndSnapPipelines && !buildEnvsExecutionResults?.hasErrors(loose))) {\n const builderOptionsForTagSnap: BuilderServiceOptions = {\n ...builderOptions,\n seedersOnly: isolateOptions.seedersOnly,\n previousTasksResults: buildEnvsExecutionResults?.tasksResults,\n };\n const deployEnvsExecutionResults = isSnap\n ? await this.runSnapTasks(components, builderOptionsForTagSnap)\n : await this.runTagTasks(components, builderOptionsForTagSnap);\n if (throwOnError && !forceDeploy) deployEnvsExecutionResults.throwErrorsIfExist(loose);\n allTasksResults.push(...deployEnvsExecutionResults.tasksResults);\n pipeResults.push(deployEnvsExecutionResults);\n }\n await this.storeArtifacts(allTasksResults);\n const builderDataMap = this.pipelineResultsToBuilderData(components, allTasksResults);\n if (populateArtifactsFrom) await this.combineBuildDataFrom(builderDataMap, populateArtifactsFrom);\n this.validateBuilderDataMap(builderDataMap);\n\n await this.sanitizePreviewData(components);\n\n return { builderDataMap, pipeResults };\n }\n\n builderDataMapToLegacyOnTagResults(builderDataComponentMap: ComponentMap<RawBuilderData>): LegacyOnTagResult[] {\n const builderDataToLegacyExtension = (component: Component, builderData: RawBuilderData) => {\n const existingBuilder = component.state.aspects.get(BuilderAspect.id)?.legacy;\n const builderExtension = existingBuilder || new ExtensionDataEntry(undefined, undefined, BuilderAspect.id);\n builderExtension.data = builderData;\n return builderExtension;\n };\n return builderDataComponentMap.toArray().map(([component, builderData]) => ({\n id: component.id,\n builderData: builderDataToLegacyExtension(component, builderData),\n }));\n }\n\n /**\n * remove the onlyOverview from the preview data of the component if\n * the env is in the workspace\n * the env is not tagged with the component\n * the last tagged env has onlyOverview undefined in preview data\n *\n * We don't want to do this but have no choice because,\n * when we load components in workspace,\n * we set the onlyOverview to true in the env's preview data\n * which sets the onlyOverview to true in the component's preview data\n * but if you don't tag the env with the component,\n * the onlyOverview will be true in the component's preview data, since its env is in the workspace\n * even though the env it is tagged with doesn't have onlyOverview in its preview data\n * which will result in inconsistent preview data when exported to the scope\n */\n async sanitizePreviewData(harmonyComps: Component[]) {\n const compsBeingTaggedLookup = new Set(harmonyComps.map((comp) => comp.id.toString()));\n\n const harmonyCompIdsWithEnvId = await Promise.all(\n harmonyComps.map(async (comp) => {\n const envId = await this.envs.getEnvId(comp);\n if (this.envs.isUsingCoreEnv(comp)) {\n return [comp.id.toString(), { envId, inWs: false, lastTaggedEnvHasOnlyOverview: false }] as [\n string,\n { envId: string; inWs: boolean; lastTaggedEnvHasOnlyOverview?: boolean; isEnvTaggedWithComp?: boolean },\n ];\n }\n\n // check if the env is tagged with the component\n if (envId && !compsBeingTaggedLookup.has(comp.id.toString())) {\n return [comp.id.toString(), { envId, isEnvTaggedWithComp: false }] as [\n string,\n { envId: string; inWs?: boolean; lastTaggedEnvHasOnlyOverview?: boolean; isEnvTaggedWithComp?: boolean },\n ];\n }\n\n const envCompId = (envId && ComponentID.fromString(envId)) || undefined;\n const inWs = this.workspace && envCompId ? await this.workspace.hasId(envCompId) : false;\n\n const lastTaggedEnvHasOnlyOverview: boolean | undefined =\n envCompId &&\n (await this.scope.get(envCompId, false))?.state.aspects.get('teambit.preview/preview')?.data?.onlyOverview;\n\n return [comp.id.toString(), { envId, inWs, lastTaggedEnvHasOnlyOverview, isEnvTaggedWithComp: true }] as [\n string,\n { envId: string; inWs: boolean; lastTaggedEnvHasOnlyOverview: boolean; isEnvTaggedWithComp?: boolean },\n ];\n })\n );\n\n const harmonyCompIdsWithEnvIdMap = new Map(harmonyCompIdsWithEnvId);\n\n const compsToDeleteOnlyOverviewPreviewData = harmonyComps.filter((comp) => {\n const envData:\n | { envId: string; inWs?: boolean; lastTaggedEnvHasOnlyOverview?: boolean; isEnvTaggedWithComp?: boolean }\n | undefined = harmonyCompIdsWithEnvIdMap.get(comp.id.toString());\n return envData?.inWs && !envData?.lastTaggedEnvHasOnlyOverview && envData?.isEnvTaggedWithComp;\n });\n\n for (const comp of compsToDeleteOnlyOverviewPreviewData) {\n const previewData = comp.state.aspects.get('teambit.preview/preview')?.data;\n // if the env is not tagged with the component remove it from the preview data of the component\n delete previewData?.onlyOverview;\n }\n }\n\n private validateBuilderDataMap(builderDataMap: ComponentMap<RawBuilderData>) {\n builderDataMap.forEach((buildData: RawBuilderData, component) => {\n const taskSerializedIds = buildData.pipeline.map((t) =>\n BuildTaskHelper.serializeId({ aspectId: t.taskId, name: t.taskName })\n );\n const duplications = findDuplications(taskSerializedIds);\n if (duplications.length) {\n throw new Error(\n `build-task-results validation has failed. the following task(s) of \"${component.id.toString()}\" are duplicated: ${duplications.join(\n ', '\n )}`\n );\n }\n });\n }\n\n private async combineBuildDataFrom(\n builderDataMap: ComponentMap<RawBuilderData>,\n populateArtifactsFrom: ComponentID[]\n ) {\n const promises = builderDataMap.map(async (builderData, component) => {\n const populateFrom = populateArtifactsFrom.find((id) => id.isEqual(component.id, { ignoreVersion: true }));\n const idStr = component.id.toString();\n if (!populateFrom) {\n throw new Error(`combineBuildDataFromParent: unable to find where to populate the artifacts from for ${idStr}`);\n }\n const populateFromComp = await this.componentAspect.getHost().get(populateFrom);\n if (!populateFromComp)\n throw new Error(\n `combineBuildDataFromParent, unable to load parent component of ${idStr}. hash: ${populateFrom.version}`\n );\n const populateFromBuilderData = this.getBuilderData(populateFromComp);\n if (!populateFromBuilderData) throw new Error(`parent of ${idStr} was not built yet. unable to continue`);\n populateFromBuilderData.artifacts.forEach((artifact) => {\n const artifactObj = artifact.toObject();\n if (!builderData.artifacts) builderData.artifacts = [];\n if (\n builderData.artifacts.find(\n (a) =>\n a.task.id === artifactObj.task.id && a.task.name === artifactObj.task.name && a.name === artifactObj.name\n )\n ) {\n return;\n }\n builderData.artifacts.push(artifactObj);\n });\n populateFromBuilderData.aspectsData.forEach((aspectData) => {\n if (builderData.aspectsData.find((a) => a.aspectId === aspectData.aspectId)) return;\n builderData.aspectsData.push(aspectData);\n });\n populateFromBuilderData.pipeline.forEach((pipeline) => {\n if (builderData.pipeline.find((p) => p.taskId === pipeline.taskId && p.taskName === pipeline.taskName)) return;\n builderData.pipeline.push(pipeline);\n });\n });\n\n await Promise.all(promises.flattenValue());\n }\n\n // TODO: merge with getArtifactsVinylByExtensionAndName by getting aspect name and name as object with optional props\n async getArtifactsVinylByAspect(component: Component, aspectName: string): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspect(component, aspectName);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspectAndName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndTaskName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsbyAspectAndTaskName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id, this.scope.legacyScope);\n return vinyls;\n }\n\n getArtifactsByName(component: Component, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(undefined, name);\n return artifacts;\n }\n\n getArtifactsByAspect(component: Component, aspectName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName);\n return artifacts;\n }\n\n getArtifactsByAspectAndName(component: Component, aspectName: string, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName, name);\n return artifacts;\n }\n\n getArtifactsbyAspectAndTaskName(component: IComponent, aspectName: string, taskName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndTaskName(aspectName, taskName);\n return artifacts;\n }\n\n /**\n * this is the aspect's data that was generated as \"metadata\" of the task component-result during the build process\n * and saved by the builder aspect in the \"aspectsData\" property.\n * (not to be confused with the data saved in the aspect itself, which is saved in the \"data\" property of the aspect).\n */\n getDataByAspect(component: IComponent, aspectName: string): TaskMetadata | undefined {\n const aspectsData = this.getBuilderData(component)?.aspectsData;\n const data = aspectsData?.find((aspectData) => aspectData.aspectId === aspectName);\n return data?.data;\n }\n\n getArtifacts(component: IComponent): ArtifactList<Artifact> {\n const artifacts = this.getBuilderData(component)?.artifacts || ArtifactList.fromArray([]);\n return artifacts;\n }\n\n getBuilderData(component: IComponent): BuilderData | undefined {\n const data = component.get(BuilderAspect.id)?.data;\n if (!data) return undefined;\n const clonedData = cloneDeep(data) as BuilderData;\n let artifactFiles: ArtifactFiles;\n const artifacts = clonedData.artifacts?.map((artifact) => {\n if (!(artifact.files instanceof ArtifactFiles)) {\n artifactFiles = ArtifactFiles.fromObject(artifact.files);\n } else {\n artifactFiles = artifact.files;\n }\n if (artifact instanceof Artifact) {\n return artifact;\n }\n Object.assign(artifact, { files: artifactFiles });\n return Artifact.fromArtifactObject(artifact);\n });\n clonedData.artifacts = ArtifactList.fromArray(artifacts || []);\n return clonedData;\n }\n\n async build(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n builderOptions?: BuilderServiceOptions,\n extraOptions?: {\n includeTag?: boolean;\n includeSnap?: boolean;\n ignoreIssues?: string;\n /**\n * the tag/snap pipeline the caller runs after this build. the \"tasks\" filter applies to it as well, so\n * it's validated against both pipelines.\n */\n deployPipeline?: 'tag' | 'snap';\n }\n ): Promise<TaskResultsList> {\n await this.throwForVariousIssues(components, extraOptions?.ignoreIssues);\n const tasks = builderOptions?.tasks;\n if (tasks?.length) {\n let deployPipeline = extraOptions?.deployPipeline;\n if (extraOptions?.includeTag) deployPipeline = 'tag';\n if (extraOptions?.includeSnap) deployPipeline = 'snap';\n this.throwIfNoTaskMatchesFilter(components, tasks, deployPipeline);\n }\n const ids = components.map((c) => c.id);\n const capsulesBaseDir = this.buildService.getComponentsCapsulesBaseDir();\n const baseIsolateOpts = {\n baseDir: capsulesBaseDir,\n useHash: !capsulesBaseDir,\n };\n const mergedIsolateOpts = {\n ...baseIsolateOpts,\n ...isolateOptions,\n };\n\n const network = await this.isolator.isolateComponents(ids, mergedIsolateOpts, this.scope.legacyScope);\n const envs = await this.envs.createEnvironment(network.graphCapsules.getAllComponents());\n const builderServiceOptions: BuilderServiceOptions = {\n seedersOnly: isolateOptions?.seedersOnly,\n originalSeeders: ids,\n capsulesBaseDir,\n ...builderOptions,\n };\n this.logger.consoleTitle(`Total ${components.length} components to build`);\n const buildResult: TaskResultsList = await envs.runOnce(this.buildService, builderServiceOptions);\n\n if (extraOptions?.includeSnap || extraOptions?.includeTag) {\n const builderOptionsForTagSnap: BuilderServiceOptions = {\n ...builderServiceOptions,\n previousTasksResults: buildResult.tasksResults,\n };\n const deployEnvsExecutionResults = extraOptions?.includeSnap\n ? await this.runSnapTasks(components, builderOptionsForTagSnap)\n : await this.runTagTasks(components, builderOptionsForTagSnap);\n buildResult.tasksResults.push(...deployEnvsExecutionResults.tasksResults);\n }\n\n return buildResult;\n }\n\n async runTagTasks(components: Component[], builderOptions: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.tagService, builderOptions);\n\n return buildResult;\n }\n\n async runSnapTasks(components: Component[], builderOptions: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.snapService, builderOptions);\n\n return buildResult;\n }\n\n /**\n * the \"tasks\" filter is validated here, once, rather than per pipeline: it may legitimately match only\n * one of the pipelines that run (e.g. a build task when the snap pipeline runs as well).\n */\n private throwIfNoTaskMatchesFilter(components: Component[], tasks: string[], deployPipeline?: 'tag' | 'snap') {\n const services = [this.buildService];\n if (deployPipeline) services.push(deployPipeline === 'snap' ? this.snapService : this.tagService);\n const envsById = new Map(components.map((component) => this.envs.getEnv(component)).map((env) => [env.id, env]));\n const envs = [...envsById.values()];\n const allTasks = services.flatMap((service) => service.getCurrentPipeline(envs));\n if (allTasks.length && !allTasks.some((task) => isTaskInFilter(task, tasks))) {\n const availableTasks = [...new Set(allTasks.map((task) => BuildTaskHelper.serializeId(task)))].sort();\n throw new BitError(\n `no tasks found matching the specified filter: \"${tasks.join(', ')}\". Available tasks: ${availableTasks.join(', ')}`\n );\n }\n }\n\n listTasks(component: Component) {\n const compEnv = this.envs.getEnv(component);\n const buildTasks = this.buildService.getCurrentPipeTasks(compEnv);\n const tagTasks = this.tagService.getCurrentPipeTasks(compEnv);\n const snapTasks = this.snapService.getCurrentPipeTasks(compEnv);\n return { id: component.id, envId: compEnv.id, buildTasks, tagTasks, snapTasks };\n }\n\n /**\n * register a build task to apply on all component build pipelines.\n * build happens on `bit build` and as part of `bit tag --persist`.\n */\n registerBuildTasks(tasks: BuildTask[]) {\n this.buildTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * @deprecated use registerTagTasks or registerSnapTasks\n */\n registerDeployTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit tag'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerTagTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit snap'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerSnapTasks(tasks: BuildTask[]) {\n this.snapTaskSlot.register(tasks);\n return this;\n }\n\n getDownloadUrlForArtifact(componentId: ComponentID, taskId: string, path?: string) {\n return `/api/${componentId}/~aspect/builder/${taskId}/${path ? `${FILE_PATH_PARAM_DELIM}${path}` : ''}`;\n }\n\n private async throwForVariousIssues(components: Component[], ignoreIssues?: string) {\n const componentsToCheck = components.filter((c) => !c.isDeleted());\n await this.throwForComponentIssues(componentsToCheck, ignoreIssues);\n }\n\n async throwForComponentIssues(components: Component[], ignoreIssues?: string) {\n if (ignoreIssues === '*') {\n // ignore all issues\n return;\n }\n const issuesToIgnoreFromFlag = ignoreIssues?.split(',').map((issue) => issue.trim()) || [];\n const issuesToIgnoreFromConfig = this.issues.getIssuesToIgnoreGlobally();\n const issuesToIgnore = [...issuesToIgnoreFromFlag, ...issuesToIgnoreFromConfig];\n await this.issues.triggerAddComponentIssues(components, issuesToIgnore);\n this.issues.removeIgnoredIssuesFromComponents(components, issuesToIgnore);\n const legacyComponents = components.map((c) => c.state._consumer) as ConsumerComponent[];\n const componentsWithBlockingIssues = legacyComponents.filter((component) => component.issues?.shouldBlockTagging());\n if (componentsWithBlockingIssues.length) {\n throw new ComponentsHaveIssues(componentsWithBlockingIssues);\n }\n\n // only truly-blocking workspace issues (e.g. workspace.jsonc merge conflicts) should abort\n // tag/snap. non-blocking issues such as aggregated load failures are shown in \"bit status\" but\n // must not gate tagging, mirroring the per-component LoadFailures issue (isTagBlocker = false).\n const workspaceIssues = this.workspace.getWorkspaceIssues({ includeNonBlocking: false });\n if (workspaceIssues.length) {\n const issuesStr = workspaceIssues.map((issueErr) => issueErr.message).join('\\n');\n throw new BitError(`the workspace has the following issues:\\n${issuesStr}`);\n }\n }\n\n static slots = [Slot.withType<BuildTask>(), Slot.withType<BuildTask>(), Slot.withType<BuildTask>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n ScopeAspect,\n IsolatorAspect,\n LoggerAspect,\n AspectLoaderAspect,\n GraphqlAspect,\n GeneratorAspect,\n ComponentAspect,\n UIAspect,\n ConfigStoreAspect,\n IssuesAspect,\n ];\n\n static async provider(\n [\n cli,\n envs,\n workspace,\n scope,\n isolator,\n loggerExt,\n aspectLoader,\n graphql,\n generator,\n component,\n ui,\n configStore,\n issues,\n ]: [\n CLIMain,\n EnvsMain,\n Workspace,\n ScopeMain,\n IsolatorMain,\n LoggerMain,\n AspectLoaderMain,\n GraphqlMain,\n GeneratorMain,\n ComponentMain,\n UiMain,\n ConfigStoreMain,\n IssuesMain,\n ],\n config,\n [buildTaskSlot, tagTaskSlot, snapTaskSlot]: [TaskSlot, TaskSlot, TaskSlot]\n ) {\n const artifactFactory = new ArtifactFactory();\n const logger = loggerExt.createLogger(BuilderAspect.id);\n const buildService = new BuilderService(\n isolator,\n logger,\n buildTaskSlot,\n 'getBuildPipe',\n 'build',\n artifactFactory,\n scope,\n configStore\n );\n envs.registerService(buildService);\n const tagService = new BuilderService(\n isolator,\n logger,\n tagTaskSlot,\n 'getTagPipe',\n 'tag',\n artifactFactory,\n scope,\n configStore\n );\n const snapService = new BuilderService(\n isolator,\n logger,\n snapTaskSlot,\n 'getSnapPipe',\n 'snap',\n artifactFactory,\n scope,\n configStore\n );\n const builder = new BuilderMain(\n envs,\n workspace,\n buildService,\n tagService,\n snapService,\n scope,\n isolator,\n aspectLoader,\n component,\n buildTaskSlot,\n tagTaskSlot,\n snapTaskSlot,\n logger,\n issues\n );\n builder.registerBuildTasks([new BundleUiTask(ui, logger)]);\n component.registerRoute([new BuilderRoute(builder, scope, logger)]);\n graphql.register(() => builderSchema(builder, logger));\n if (generator) generator.registerComponentTemplate([buildTaskTemplate]);\n const commands = [new BuilderCmd(builder, workspace, logger), new ArtifactsCmd(builder, component)];\n cli.register(...commands);\n\n return builder;\n }\n}\n\nBuilderAspect.addRuntime(BuilderMain);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lodash","data","require","_component","_aspectLoader","_harmonyModules","_cli","_component2","_envs","_graphql","_harmony","_logger","_scope","_workspace","_isolator","_bit","_toolboxArray","_generator","_ui","_issues","_bitError","_artifact","_artifactFactory","_builder","_builder2","_builder3","_build","_buildTask","_buildPipelineOrder","_exceptions","_buildPipelineResultList","_artifacts","_buildTask2","_builder4","_componentsHaveIssues","_configStore","_legacy","_legacy2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FILE_PATH_PARAM_DELIM","exports","BuilderMain","constructor","envs","workspace","buildService","tagService","snapService","scope","isolator","aspectLoader","componentAspect","buildTaskSlot","tagTaskSlot","snapTaskSlot","logger","issues","storeArtifacts","tasksResults","artifacts","flatMap","Promise","all","map","artifactMap","toArray","component","artifactList","store","err","ArtifactStorageError","id","toString","pipelineResultsToBuilderData","components","buildPipelineResults","buildPipelineResultList","BuildPipelineResultList","ComponentMap","as","aspectsData","getDataOfComponent","pipelineReport","getPipelineReportOfComponent","getArtifactsDataOfComponent","pipeline","bitVersion","getBitVersion","tagListener","options","isolateOptions","builderOptions","pipeResults","allTasksResults","throwOnError","forceDeploy","disableTagAndSnapPipelines","isSnap","populateArtifactsFrom","loose","deployPipeline","buildEnvsExecutionResults","build","emptyRootDir","tasks","Extensions","aspect","ignoreIssues","undefined","throwErrorsIfExist","hasErrors","builderOptionsForTagSnap","seedersOnly","previousTasksResults","deployEnvsExecutionResults","runSnapTasks","runTagTasks","builderDataMap","combineBuildDataFrom","validateBuilderDataMap","sanitizePreviewData","builderDataMapToLegacyOnTagResults","builderDataComponentMap","builderDataToLegacyExtension","builderData","existingBuilder","state","aspects","get","BuilderAspect","legacy","builderExtension","ExtensionDataEntry","harmonyComps","compsBeingTaggedLookup","Set","comp","harmonyCompIdsWithEnvId","envId","getEnvId","isUsingCoreEnv","inWs","lastTaggedEnvHasOnlyOverview","has","isEnvTaggedWithComp","envCompId","ComponentID","fromString","hasId","onlyOverview","harmonyCompIdsWithEnvIdMap","Map","compsToDeleteOnlyOverviewPreviewData","envData","previewData","buildData","taskSerializedIds","BuildTaskHelper","serializeId","aspectId","taskId","name","taskName","duplications","findDuplications","Error","join","promises","populateFrom","find","isEqual","ignoreVersion","idStr","populateFromComp","getHost","version","populateFromBuilderData","getBuilderData","artifact","artifactObj","toObject","a","task","aspectData","p","flattenValue","getArtifactsVinylByAspect","aspectName","getArtifactsByAspect","vinyls","getVinylsAndImportIfMissing","legacyScope","getArtifactsVinylByAspectAndName","getArtifactsByAspectAndName","getArtifactsVinylByAspectAndTaskName","getArtifactsbyAspectAndTaskName","getArtifactsByName","getArtifacts","byAspectNameAndName","byAspectNameAndTaskName","getDataByAspect","ArtifactList","fromArray","clonedData","cloneDeep","artifactFiles","files","ArtifactFiles","fromObject","Artifact","assign","fromArtifactObject","extraOptions","throwForVariousIssues","includeTag","includeSnap","throwIfNoTaskMatchesFilter","ids","c","capsulesBaseDir","getComponentsCapsulesBaseDir","baseIsolateOpts","baseDir","useHash","mergedIsolateOpts","network","isolateComponents","createEnvironment","graphCapsules","getAllComponents","builderServiceOptions","originalSeeders","consoleTitle","buildResult","runOnce","envsById","getEnv","env","values","allTasks","getPipelineServices","service","getCurrentPipeline","some","isTaskInFilter","availableTasks","sort","BitError","listTasks","compEnv","buildTasks","getCurrentPipeTasks","tagTasks","snapTasks","getPlannedTasks","envIdPerComp","set","toStringWithoutVersion","debug","message","size","tasksPerEnvPerService","getCurrentPipelinePerEnv","plannedTasksPerEnv","tasksPerEnv","uniqTasks","uniqBy","taskDescription","description","compId","services","registerBuildTasks","register","registerDeployTasks","registerTagTasks","registerSnapTasks","getDownloadUrlForArtifact","componentId","path","componentsToCheck","isDeleted","throwForComponentIssues","issuesToIgnoreFromFlag","split","issue","trim","issuesToIgnoreFromConfig","getIssuesToIgnoreGlobally","issuesToIgnore","triggerAddComponentIssues","removeIgnoredIssuesFromComponents","legacyComponents","_consumer","componentsWithBlockingIssues","shouldBlockTagging","ComponentsHaveIssues","workspaceIssues","getWorkspaceIssues","includeNonBlocking","issuesStr","issueErr","provider","cli","loggerExt","graphql","generator","ui","configStore","config","artifactFactory","ArtifactFactory","createLogger","BuilderService","registerService","builder","BundleUiTask","registerRoute","BuilderRoute","builderSchema","registerComponentTemplate","buildTaskTemplate","commands","BuilderCmd","ArtifactsCmd","Slot","withType","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","ScopeAspect","IsolatorAspect","LoggerAspect","AspectLoaderAspect","GraphqlAspect","GeneratorAspect","ComponentAspect","UIAspect","ConfigStoreAspect","IssuesAspect","addRuntime"],"sources":["builder.main.runtime.ts"],"sourcesContent":["import { cloneDeep, uniqBy } from 'lodash';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport type { ArtifactVinyl, ArtifactObject } from '@teambit/component.sources';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport type { CLIMain } from '@teambit/cli';\nimport { MainRuntime } from '@teambit/harmony.modules.runtimes';\nimport { CLIAspect } from '@teambit/cli';\nimport type { Component, IComponent, ComponentMain } from '@teambit/component';\nimport { ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { EnvsMain, EnvDefinition } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { IsolateComponentsOptions, IsolatorMain } from '@teambit/isolator';\nimport { IsolatorAspect } from '@teambit/isolator';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\nimport { findDuplications } from '@teambit/toolbox.array.duplications-finder';\nimport type { GeneratorMain } from '@teambit/generator';\nimport { GeneratorAspect } from '@teambit/generator';\nimport type { UiMain } from '@teambit/ui';\nimport { UIAspect, BundleUiTask } from '@teambit/ui';\nimport type { IssuesMain } from '@teambit/issues';\nimport { IssuesAspect } from '@teambit/issues';\nimport { BitError } from '@teambit/bit-error';\nimport type { FsArtifact } from './artifact';\nimport { Artifact, ArtifactList } from './artifact';\nimport { ArtifactFactory } from './artifact/artifact-factory'; // it gets undefined when importing it from './artifact'\nimport { BuilderAspect } from './builder.aspect';\nimport { builderSchema } from './builder.graphql';\nimport type { BuilderServiceOptions } from './builder.service';\nimport { BuilderService } from './builder.service';\nimport { BuilderCmd } from './build.cmd';\nimport type { BuildTask } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport { isTaskInFilter } from './build-pipeline-order';\nimport type { TaskResults } from './build-pipe';\nimport type { TaskResultsList } from './task-results-list';\nimport { ArtifactStorageError } from './exceptions';\nimport type { AspectData, PipelineReport } from './build-pipeline-result-list';\nimport { BuildPipelineResultList } from './build-pipeline-result-list';\nimport type { TaskMetadata } from './types';\nimport { ArtifactsCmd } from './artifact/artifacts.cmd';\nimport { buildTaskTemplate } from './templates/build-task';\nimport { BuilderRoute } from './builder.route';\nimport { ComponentsHaveIssues } from './exceptions/components-have-issues';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\nimport { Extensions } from '@teambit/legacy.constants';\nimport { ExtensionDataEntry } from '@teambit/legacy.extension-data';\n\nexport type TaskSlot = SlotRegistry<BuildTask[]>;\nexport type OnTagResults = { builderDataMap: ComponentMap<RawBuilderData>; pipeResults: TaskResultsList[] };\nexport type OnTagOpts = {\n disableTagAndSnapPipelines?: boolean;\n throwOnError?: boolean; // on the CI it helps to save the results on failure so this is set to false\n forceDeploy?: boolean; // whether run the deploy-pipeline although the build-pipeline has failed\n populateArtifactsFrom?: ComponentID[]; // helpful for tagging from scope where we want to use the build-artifacts of previous snap.\n isSnap?: boolean;\n loose?: boolean; // whether to ignore test/lint errors and allow tagging to succeed\n};\nexport const FILE_PATH_PARAM_DELIM = '~';\n\nexport type LegacyOnTagResult = {\n id: ComponentID;\n builderData: ExtensionDataEntry;\n};\n\n/**\n * builder data format for the bit object store\n */\nexport type RawBuilderData = {\n pipeline: PipelineReport[];\n artifacts?: ArtifactObject[];\n aspectsData: AspectData[];\n bitVersion?: string;\n};\n\nexport type PlannedTask = Pick<PipelineReport, 'taskId' | 'taskName' | 'taskDescription'>;\n\n/**\n * builder data of a version that was tagged/snapped without a build. it has the tasks that are going to run once the\n * component is built, so they can be shown before the build (e.g. on the CI) starts. the build replaces it.\n */\nexport type UnbuiltBuilderData = {\n plannedTasks: PlannedTask[];\n};\n/**\n * builder data mapped to an ArtifactList instance\n */\nexport type BuilderData = Omit<RawBuilderData, 'artifacts'> & {\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class BuilderMain {\n constructor(\n private envs: EnvsMain,\n private workspace: Workspace,\n private buildService: BuilderService,\n private tagService: BuilderService,\n private snapService: BuilderService,\n private scope: ScopeMain,\n private isolator: IsolatorMain,\n private aspectLoader: AspectLoaderMain,\n private componentAspect: ComponentMain,\n private buildTaskSlot: TaskSlot,\n private tagTaskSlot: TaskSlot,\n private snapTaskSlot: TaskSlot,\n private logger: Logger,\n private issues: IssuesMain\n ) {}\n\n private async storeArtifacts(tasksResults: TaskResults[]) {\n const artifacts = tasksResults.flatMap((t) => (t.artifacts ? [t.artifacts] : []));\n await Promise.all(\n artifacts.map(async (artifactMap: ComponentMap<ArtifactList<FsArtifact>>) => {\n await Promise.all(\n artifactMap.toArray().map(async ([component, artifactList]) => {\n try {\n await artifactList.store(component);\n } catch (err: any) {\n throw new ArtifactStorageError(err, component.id.toString());\n }\n })\n );\n })\n );\n }\n\n pipelineResultsToBuilderData(\n components: Component[],\n buildPipelineResults: TaskResults[]\n ): ComponentMap<RawBuilderData> {\n const buildPipelineResultList = new BuildPipelineResultList(buildPipelineResults, components);\n return ComponentMap.as<RawBuilderData>(components, (component) => {\n const aspectsData = buildPipelineResultList.getDataOfComponent(component.id);\n const pipelineReport = buildPipelineResultList.getPipelineReportOfComponent(component.id);\n const artifacts = buildPipelineResultList.getArtifactsDataOfComponent(component.id);\n return { pipeline: pipelineReport, artifacts, aspectsData, bitVersion: getBitVersion() };\n });\n }\n\n async tagListener(\n components: Component[],\n options: OnTagOpts = {},\n isolateOptions: IsolateComponentsOptions = {},\n builderOptions: BuilderServiceOptions = {}\n ): Promise<OnTagResults> {\n const pipeResults: TaskResultsList[] = [];\n const allTasksResults: TaskResults[] = [];\n const { throwOnError, forceDeploy, disableTagAndSnapPipelines, isSnap, populateArtifactsFrom, loose } = options;\n if (populateArtifactsFrom) isolateOptions.populateArtifactsFrom = populateArtifactsFrom;\n const deployPipeline = isSnap ? 'snap' : 'tag';\n const buildEnvsExecutionResults = await this.build(\n components,\n { emptyRootDir: true, ...isolateOptions },\n {\n ...builderOptions,\n // even when build is skipped (in case of tag-from-scope), the pre-build/post-build and teambit.harmony/aspect tasks are needed\n tasks: populateArtifactsFrom ? [Extensions.aspect] : builderOptions.tasks,\n },\n { ignoreIssues: '*', deployPipeline: forceDeploy || !disableTagAndSnapPipelines ? deployPipeline : undefined }\n );\n if (throwOnError && !forceDeploy) buildEnvsExecutionResults.throwErrorsIfExist(loose);\n allTasksResults.push(...buildEnvsExecutionResults.tasksResults);\n pipeResults.push(buildEnvsExecutionResults);\n\n if (forceDeploy || (!disableTagAndSnapPipelines && !buildEnvsExecutionResults?.hasErrors(loose))) {\n const builderOptionsForTagSnap: BuilderServiceOptions = {\n ...builderOptions,\n seedersOnly: isolateOptions.seedersOnly,\n previousTasksResults: buildEnvsExecutionResults?.tasksResults,\n };\n const deployEnvsExecutionResults = isSnap\n ? await this.runSnapTasks(components, builderOptionsForTagSnap)\n : await this.runTagTasks(components, builderOptionsForTagSnap);\n if (throwOnError && !forceDeploy) deployEnvsExecutionResults.throwErrorsIfExist(loose);\n allTasksResults.push(...deployEnvsExecutionResults.tasksResults);\n pipeResults.push(deployEnvsExecutionResults);\n }\n await this.storeArtifacts(allTasksResults);\n const builderDataMap = this.pipelineResultsToBuilderData(components, allTasksResults);\n if (populateArtifactsFrom) await this.combineBuildDataFrom(builderDataMap, populateArtifactsFrom);\n this.validateBuilderDataMap(builderDataMap);\n\n await this.sanitizePreviewData(components);\n\n return { builderDataMap, pipeResults };\n }\n\n builderDataMapToLegacyOnTagResults(builderDataComponentMap: ComponentMap<RawBuilderData>): LegacyOnTagResult[] {\n const builderDataToLegacyExtension = (component: Component, builderData: RawBuilderData) => {\n const existingBuilder = component.state.aspects.get(BuilderAspect.id)?.legacy;\n const builderExtension = existingBuilder || new ExtensionDataEntry(undefined, undefined, BuilderAspect.id);\n builderExtension.data = builderData;\n return builderExtension;\n };\n return builderDataComponentMap.toArray().map(([component, builderData]) => ({\n id: component.id,\n builderData: builderDataToLegacyExtension(component, builderData),\n }));\n }\n\n /**\n * remove the onlyOverview from the preview data of the component if\n * the env is in the workspace\n * the env is not tagged with the component\n * the last tagged env has onlyOverview undefined in preview data\n *\n * We don't want to do this but have no choice because,\n * when we load components in workspace,\n * we set the onlyOverview to true in the env's preview data\n * which sets the onlyOverview to true in the component's preview data\n * but if you don't tag the env with the component,\n * the onlyOverview will be true in the component's preview data, since its env is in the workspace\n * even though the env it is tagged with doesn't have onlyOverview in its preview data\n * which will result in inconsistent preview data when exported to the scope\n */\n async sanitizePreviewData(harmonyComps: Component[]) {\n const compsBeingTaggedLookup = new Set(harmonyComps.map((comp) => comp.id.toString()));\n\n const harmonyCompIdsWithEnvId = await Promise.all(\n harmonyComps.map(async (comp) => {\n const envId = await this.envs.getEnvId(comp);\n if (this.envs.isUsingCoreEnv(comp)) {\n return [comp.id.toString(), { envId, inWs: false, lastTaggedEnvHasOnlyOverview: false }] as [\n string,\n { envId: string; inWs: boolean; lastTaggedEnvHasOnlyOverview?: boolean; isEnvTaggedWithComp?: boolean },\n ];\n }\n\n // check if the env is tagged with the component\n if (envId && !compsBeingTaggedLookup.has(comp.id.toString())) {\n return [comp.id.toString(), { envId, isEnvTaggedWithComp: false }] as [\n string,\n { envId: string; inWs?: boolean; lastTaggedEnvHasOnlyOverview?: boolean; isEnvTaggedWithComp?: boolean },\n ];\n }\n\n const envCompId = (envId && ComponentID.fromString(envId)) || undefined;\n const inWs = this.workspace && envCompId ? await this.workspace.hasId(envCompId) : false;\n\n const lastTaggedEnvHasOnlyOverview: boolean | undefined =\n envCompId &&\n (await this.scope.get(envCompId, false))?.state.aspects.get('teambit.preview/preview')?.data?.onlyOverview;\n\n return [comp.id.toString(), { envId, inWs, lastTaggedEnvHasOnlyOverview, isEnvTaggedWithComp: true }] as [\n string,\n { envId: string; inWs: boolean; lastTaggedEnvHasOnlyOverview: boolean; isEnvTaggedWithComp?: boolean },\n ];\n })\n );\n\n const harmonyCompIdsWithEnvIdMap = new Map(harmonyCompIdsWithEnvId);\n\n const compsToDeleteOnlyOverviewPreviewData = harmonyComps.filter((comp) => {\n const envData:\n | { envId: string; inWs?: boolean; lastTaggedEnvHasOnlyOverview?: boolean; isEnvTaggedWithComp?: boolean }\n | undefined = harmonyCompIdsWithEnvIdMap.get(comp.id.toString());\n return envData?.inWs && !envData?.lastTaggedEnvHasOnlyOverview && envData?.isEnvTaggedWithComp;\n });\n\n for (const comp of compsToDeleteOnlyOverviewPreviewData) {\n const previewData = comp.state.aspects.get('teambit.preview/preview')?.data;\n // if the env is not tagged with the component remove it from the preview data of the component\n delete previewData?.onlyOverview;\n }\n }\n\n private validateBuilderDataMap(builderDataMap: ComponentMap<RawBuilderData>) {\n builderDataMap.forEach((buildData: RawBuilderData, component) => {\n const taskSerializedIds = buildData.pipeline.map((t) =>\n BuildTaskHelper.serializeId({ aspectId: t.taskId, name: t.taskName })\n );\n const duplications = findDuplications(taskSerializedIds);\n if (duplications.length) {\n throw new Error(\n `build-task-results validation has failed. the following task(s) of \"${component.id.toString()}\" are duplicated: ${duplications.join(\n ', '\n )}`\n );\n }\n });\n }\n\n private async combineBuildDataFrom(\n builderDataMap: ComponentMap<RawBuilderData>,\n populateArtifactsFrom: ComponentID[]\n ) {\n const promises = builderDataMap.map(async (builderData, component) => {\n const populateFrom = populateArtifactsFrom.find((id) => id.isEqual(component.id, { ignoreVersion: true }));\n const idStr = component.id.toString();\n if (!populateFrom) {\n throw new Error(`combineBuildDataFromParent: unable to find where to populate the artifacts from for ${idStr}`);\n }\n const populateFromComp = await this.componentAspect.getHost().get(populateFrom);\n if (!populateFromComp)\n throw new Error(\n `combineBuildDataFromParent, unable to load parent component of ${idStr}. hash: ${populateFrom.version}`\n );\n const populateFromBuilderData = this.getBuilderData(populateFromComp);\n if (!populateFromBuilderData) throw new Error(`parent of ${idStr} was not built yet. unable to continue`);\n populateFromBuilderData.artifacts.forEach((artifact) => {\n const artifactObj = artifact.toObject();\n if (!builderData.artifacts) builderData.artifacts = [];\n if (\n builderData.artifacts.find(\n (a) =>\n a.task.id === artifactObj.task.id && a.task.name === artifactObj.task.name && a.name === artifactObj.name\n )\n ) {\n return;\n }\n builderData.artifacts.push(artifactObj);\n });\n populateFromBuilderData.aspectsData.forEach((aspectData) => {\n if (builderData.aspectsData.find((a) => a.aspectId === aspectData.aspectId)) return;\n builderData.aspectsData.push(aspectData);\n });\n populateFromBuilderData.pipeline.forEach((pipeline) => {\n if (builderData.pipeline.find((p) => p.taskId === pipeline.taskId && p.taskName === pipeline.taskName)) return;\n builderData.pipeline.push(pipeline);\n });\n });\n\n await Promise.all(promises.flattenValue());\n }\n\n // TODO: merge with getArtifactsVinylByExtensionAndName by getting aspect name and name as object with optional props\n async getArtifactsVinylByAspect(component: Component, aspectName: string): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspect(component, aspectName);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspectAndName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndTaskName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsbyAspectAndTaskName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id, this.scope.legacyScope);\n return vinyls;\n }\n\n getArtifactsByName(component: Component, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(undefined, name);\n return artifacts;\n }\n\n getArtifactsByAspect(component: Component, aspectName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName);\n return artifacts;\n }\n\n getArtifactsByAspectAndName(component: Component, aspectName: string, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName, name);\n return artifacts;\n }\n\n getArtifactsbyAspectAndTaskName(component: IComponent, aspectName: string, taskName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndTaskName(aspectName, taskName);\n return artifacts;\n }\n\n /**\n * this is the aspect's data that was generated as \"metadata\" of the task component-result during the build process\n * and saved by the builder aspect in the \"aspectsData\" property.\n * (not to be confused with the data saved in the aspect itself, which is saved in the \"data\" property of the aspect).\n */\n getDataByAspect(component: IComponent, aspectName: string): TaskMetadata | undefined {\n const aspectsData = this.getBuilderData(component)?.aspectsData;\n const data = aspectsData?.find((aspectData) => aspectData.aspectId === aspectName);\n return data?.data;\n }\n\n getArtifacts(component: IComponent): ArtifactList<Artifact> {\n const artifacts = this.getBuilderData(component)?.artifacts || ArtifactList.fromArray([]);\n return artifacts;\n }\n\n getBuilderData(component: IComponent): BuilderData | undefined {\n const data = component.get(BuilderAspect.id)?.data;\n if (!data) return undefined;\n const clonedData = cloneDeep(data) as BuilderData;\n let artifactFiles: ArtifactFiles;\n const artifacts = clonedData.artifacts?.map((artifact) => {\n if (!(artifact.files instanceof ArtifactFiles)) {\n artifactFiles = ArtifactFiles.fromObject(artifact.files);\n } else {\n artifactFiles = artifact.files;\n }\n if (artifact instanceof Artifact) {\n return artifact;\n }\n Object.assign(artifact, { files: artifactFiles });\n return Artifact.fromArtifactObject(artifact);\n });\n clonedData.artifacts = ArtifactList.fromArray(artifacts || []);\n return clonedData;\n }\n\n async build(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n builderOptions?: BuilderServiceOptions,\n extraOptions?: {\n includeTag?: boolean;\n includeSnap?: boolean;\n ignoreIssues?: string;\n /**\n * the tag/snap pipeline the caller runs after this build. the \"tasks\" filter applies to it as well, so\n * it's validated against both pipelines.\n */\n deployPipeline?: 'tag' | 'snap';\n }\n ): Promise<TaskResultsList> {\n await this.throwForVariousIssues(components, extraOptions?.ignoreIssues);\n const tasks = builderOptions?.tasks;\n if (tasks?.length) {\n let deployPipeline = extraOptions?.deployPipeline;\n if (extraOptions?.includeTag) deployPipeline = 'tag';\n if (extraOptions?.includeSnap) deployPipeline = 'snap';\n this.throwIfNoTaskMatchesFilter(components, tasks, deployPipeline);\n }\n const ids = components.map((c) => c.id);\n const capsulesBaseDir = this.buildService.getComponentsCapsulesBaseDir();\n const baseIsolateOpts = {\n baseDir: capsulesBaseDir,\n useHash: !capsulesBaseDir,\n };\n const mergedIsolateOpts = {\n ...baseIsolateOpts,\n ...isolateOptions,\n };\n\n const network = await this.isolator.isolateComponents(ids, mergedIsolateOpts, this.scope.legacyScope);\n const envs = await this.envs.createEnvironment(network.graphCapsules.getAllComponents());\n const builderServiceOptions: BuilderServiceOptions = {\n seedersOnly: isolateOptions?.seedersOnly,\n originalSeeders: ids,\n capsulesBaseDir,\n ...builderOptions,\n };\n this.logger.consoleTitle(`Total ${components.length} components to build`);\n const buildResult: TaskResultsList = await envs.runOnce(this.buildService, builderServiceOptions);\n\n if (extraOptions?.includeSnap || extraOptions?.includeTag) {\n const builderOptionsForTagSnap: BuilderServiceOptions = {\n ...builderServiceOptions,\n previousTasksResults: buildResult.tasksResults,\n };\n const deployEnvsExecutionResults = extraOptions?.includeSnap\n ? await this.runSnapTasks(components, builderOptionsForTagSnap)\n : await this.runTagTasks(components, builderOptionsForTagSnap);\n buildResult.tasksResults.push(...deployEnvsExecutionResults.tasksResults);\n }\n\n return buildResult;\n }\n\n async runTagTasks(components: Component[], builderOptions: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.tagService, builderOptions);\n\n return buildResult;\n }\n\n async runSnapTasks(components: Component[], builderOptions: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.snapService, builderOptions);\n\n return buildResult;\n }\n\n /**\n * the \"tasks\" filter is validated here, once, rather than per pipeline: it may legitimately match only\n * one of the pipelines that run (e.g. a build task when the snap pipeline runs as well).\n */\n private throwIfNoTaskMatchesFilter(components: Component[], tasks: string[], deployPipeline?: 'tag' | 'snap') {\n const envsById = new Map(components.map((component) => this.envs.getEnv(component)).map((env) => [env.id, env]));\n const envs = [...envsById.values()];\n const allTasks = this.getPipelineServices(deployPipeline).flatMap((service) => service.getCurrentPipeline(envs));\n if (allTasks.length && !allTasks.some((task) => isTaskInFilter(task, tasks))) {\n const availableTasks = [...new Set(allTasks.map((task) => BuildTaskHelper.serializeId(task)))].sort();\n throw new BitError(\n `no tasks found matching the specified filter: \"${tasks.join(', ')}\". Available tasks: ${availableTasks.join(', ')}`\n );\n }\n }\n\n listTasks(component: Component) {\n const compEnv = this.envs.getEnv(component);\n const buildTasks = this.buildService.getCurrentPipeTasks(compEnv);\n const tagTasks = this.tagService.getCurrentPipeTasks(compEnv);\n const snapTasks = this.snapService.getCurrentPipeTasks(compEnv);\n return { id: component.id, envId: compEnv.id, buildTasks, tagTasks, snapTasks };\n }\n\n /**\n * the tasks of the build pipeline and the snap/tag pipeline of each component's env, keyed by the component id\n * without version. it's only informative, so it never throws. a component whose env can't be found (e.g. not\n * loaded) is skipped.\n */\n getPlannedTasks(components: Component[], deployPipeline: 'tag' | 'snap'): Map<string, PlannedTask[]> {\n const envIdPerComp = new Map<string, string>();\n const envsById = new Map<string, EnvDefinition>();\n components.forEach((component) => {\n try {\n const env = this.envs.getEnv(component);\n envIdPerComp.set(component.id.toStringWithoutVersion(), env.id);\n envsById.set(env.id, env);\n } catch (err: any) {\n this.logger.debug(`unable to get the planned tasks of ${component.id.toString()}: ${err.message}`);\n }\n });\n if (!envsById.size) return new Map();\n let tasksPerEnvPerService: Map<string, BuildTask[]>[];\n try {\n // calculated for all the envs together, as in the actual run, so a task may depend on a task of another env.\n tasksPerEnvPerService = this.getPipelineServices(deployPipeline).map((service) =>\n service.getCurrentPipelinePerEnv([...envsById.values()])\n );\n } catch (err: any) {\n this.logger.debug(`unable to get the planned tasks: ${err.message}`);\n return new Map();\n }\n const plannedTasksPerEnv = new Map<string, PlannedTask[]>();\n envsById.forEach((env, envId) => {\n const tasks = tasksPerEnvPerService.flatMap((tasksPerEnv) => tasksPerEnv.get(envId) || []);\n // a task can be registered to more than one pipeline (e.g. PreparePackages), the report has it once.\n const uniqTasks = uniqBy(tasks, (task) => BuildTaskHelper.serializeId(task));\n plannedTasksPerEnv.set(\n envId,\n uniqTasks.map((task) => ({ taskId: task.aspectId, taskName: task.name, taskDescription: task.description }))\n );\n });\n return new Map([...envIdPerComp].map(([compId, envId]) => [compId, plannedTasksPerEnv.get(envId)!]));\n }\n\n private getPipelineServices(deployPipeline?: 'tag' | 'snap'): BuilderService[] {\n const services = [this.buildService];\n if (deployPipeline) services.push(deployPipeline === 'snap' ? this.snapService : this.tagService);\n return services;\n }\n\n /**\n * register a build task to apply on all component build pipelines.\n * build happens on `bit build` and as part of `bit tag --persist`.\n */\n registerBuildTasks(tasks: BuildTask[]) {\n this.buildTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * @deprecated use registerTagTasks or registerSnapTasks\n */\n registerDeployTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit tag'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerTagTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit snap'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerSnapTasks(tasks: BuildTask[]) {\n this.snapTaskSlot.register(tasks);\n return this;\n }\n\n getDownloadUrlForArtifact(componentId: ComponentID, taskId: string, path?: string) {\n return `/api/${componentId}/~aspect/builder/${taskId}/${path ? `${FILE_PATH_PARAM_DELIM}${path}` : ''}`;\n }\n\n private async throwForVariousIssues(components: Component[], ignoreIssues?: string) {\n const componentsToCheck = components.filter((c) => !c.isDeleted());\n await this.throwForComponentIssues(componentsToCheck, ignoreIssues);\n }\n\n async throwForComponentIssues(components: Component[], ignoreIssues?: string) {\n if (ignoreIssues === '*') {\n // ignore all issues\n return;\n }\n const issuesToIgnoreFromFlag = ignoreIssues?.split(',').map((issue) => issue.trim()) || [];\n const issuesToIgnoreFromConfig = this.issues.getIssuesToIgnoreGlobally();\n const issuesToIgnore = [...issuesToIgnoreFromFlag, ...issuesToIgnoreFromConfig];\n await this.issues.triggerAddComponentIssues(components, issuesToIgnore);\n this.issues.removeIgnoredIssuesFromComponents(components, issuesToIgnore);\n const legacyComponents = components.map((c) => c.state._consumer) as ConsumerComponent[];\n const componentsWithBlockingIssues = legacyComponents.filter((component) => component.issues?.shouldBlockTagging());\n if (componentsWithBlockingIssues.length) {\n throw new ComponentsHaveIssues(componentsWithBlockingIssues);\n }\n\n // only truly-blocking workspace issues (e.g. workspace.jsonc merge conflicts) should abort\n // tag/snap. non-blocking issues such as aggregated load failures are shown in \"bit status\" but\n // must not gate tagging, mirroring the per-component LoadFailures issue (isTagBlocker = false).\n const workspaceIssues = this.workspace.getWorkspaceIssues({ includeNonBlocking: false });\n if (workspaceIssues.length) {\n const issuesStr = workspaceIssues.map((issueErr) => issueErr.message).join('\\n');\n throw new BitError(`the workspace has the following issues:\\n${issuesStr}`);\n }\n }\n\n static slots = [Slot.withType<BuildTask>(), Slot.withType<BuildTask>(), Slot.withType<BuildTask>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n ScopeAspect,\n IsolatorAspect,\n LoggerAspect,\n AspectLoaderAspect,\n GraphqlAspect,\n GeneratorAspect,\n ComponentAspect,\n UIAspect,\n ConfigStoreAspect,\n IssuesAspect,\n ];\n\n static async provider(\n [\n cli,\n envs,\n workspace,\n scope,\n isolator,\n loggerExt,\n aspectLoader,\n graphql,\n generator,\n component,\n ui,\n configStore,\n issues,\n ]: [\n CLIMain,\n EnvsMain,\n Workspace,\n ScopeMain,\n IsolatorMain,\n LoggerMain,\n AspectLoaderMain,\n GraphqlMain,\n GeneratorMain,\n ComponentMain,\n UiMain,\n ConfigStoreMain,\n IssuesMain,\n ],\n config,\n [buildTaskSlot, tagTaskSlot, snapTaskSlot]: [TaskSlot, TaskSlot, TaskSlot]\n ) {\n const artifactFactory = new ArtifactFactory();\n const logger = loggerExt.createLogger(BuilderAspect.id);\n const buildService = new BuilderService(\n isolator,\n logger,\n buildTaskSlot,\n 'getBuildPipe',\n 'build',\n artifactFactory,\n scope,\n configStore\n );\n envs.registerService(buildService);\n const tagService = new BuilderService(\n isolator,\n logger,\n tagTaskSlot,\n 'getTagPipe',\n 'tag',\n artifactFactory,\n scope,\n configStore\n );\n const snapService = new BuilderService(\n isolator,\n logger,\n snapTaskSlot,\n 'getSnapPipe',\n 'snap',\n artifactFactory,\n scope,\n configStore\n );\n const builder = new BuilderMain(\n envs,\n workspace,\n buildService,\n tagService,\n snapService,\n scope,\n isolator,\n aspectLoader,\n component,\n buildTaskSlot,\n tagTaskSlot,\n snapTaskSlot,\n logger,\n issues\n );\n builder.registerBuildTasks([new BundleUiTask(ui, logger)]);\n component.registerRoute([new BuilderRoute(builder, scope, logger)]);\n graphql.register(() => builderSchema(builder, logger));\n if (generator) generator.registerComponentTemplate([buildTaskTemplate]);\n const commands = [new BuilderCmd(builder, workspace, logger), new ArtifactsCmd(builder, component)];\n cli.register(...commands);\n\n return builder;\n }\n}\n\nBuilderAspect.addRuntime(BuilderMain);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _chai() {
|
|
4
|
+
const data = require("chai");
|
|
5
|
+
_chai = function () {
|
|
6
|
+
return data;
|
|
7
|
+
};
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
function _builderMain() {
|
|
11
|
+
const data = require("./builder.main.runtime");
|
|
12
|
+
_builderMain = function () {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
// Minimal fakes — getPlannedTasks only reads the env of the components and the pipelines of the services.
|
|
18
|
+
const task = (aspectId, name, description) => ({
|
|
19
|
+
aspectId,
|
|
20
|
+
name,
|
|
21
|
+
description,
|
|
22
|
+
execute: async () => ({})
|
|
23
|
+
});
|
|
24
|
+
const compileTask = task('teambit.compilation/compiler', 'TSCompiler', 'compile components');
|
|
25
|
+
const prepareTask = task('teambit.pkg/pkg', 'PreparePackages');
|
|
26
|
+
const publishTask = task('teambit.pkg/pkg', 'PublishComponents');
|
|
27
|
+
const fakeComponent = id => ({
|
|
28
|
+
id: {
|
|
29
|
+
toString: () => id,
|
|
30
|
+
toStringWithoutVersion: () => id
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const comp1 = fakeComponent('my-scope/comp1');
|
|
34
|
+
const comp2 = fakeComponent('my-scope/comp2');
|
|
35
|
+
const compWithoutEnv = fakeComponent('my-scope/comp-without-env');
|
|
36
|
+
let buildPipelineCalls = 0;
|
|
37
|
+
let throwOnBuildPipeline = false;
|
|
38
|
+
const service = (tasks, onCall = () => {}) => ({
|
|
39
|
+
getCurrentPipelinePerEnv: envDefs => {
|
|
40
|
+
onCall();
|
|
41
|
+
return new Map(envDefs.map(env => [env.id, tasks]));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const envs = {
|
|
45
|
+
getEnv: component => {
|
|
46
|
+
if (component === compWithoutEnv) throw new Error('env not found');
|
|
47
|
+
return {
|
|
48
|
+
id: 'my-env'
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const logger = {
|
|
53
|
+
debug: () => {}
|
|
54
|
+
};
|
|
55
|
+
const builder = new (_builderMain().BuilderMain)(envs, undefined, service([compileTask, prepareTask], () => {
|
|
56
|
+
buildPipelineCalls++;
|
|
57
|
+
if (throwOnBuildPipeline) throw new Error('missing task dependency');
|
|
58
|
+
}), service([prepareTask]), service([prepareTask, publishTask]), undefined, undefined, undefined, undefined, undefined, undefined, undefined, logger, undefined);
|
|
59
|
+
describe('BuilderMain', () => {
|
|
60
|
+
describe('getPlannedTasks', () => {
|
|
61
|
+
it('returns the build and snap tasks, listing a task of both pipelines once', () => {
|
|
62
|
+
const plannedTasks = builder.getPlannedTasks([comp1], 'snap').get('my-scope/comp1');
|
|
63
|
+
(0, _chai().expect)(plannedTasks).to.deep.equal([{
|
|
64
|
+
taskId: 'teambit.compilation/compiler',
|
|
65
|
+
taskName: 'TSCompiler',
|
|
66
|
+
taskDescription: 'compile components'
|
|
67
|
+
}, {
|
|
68
|
+
taskId: 'teambit.pkg/pkg',
|
|
69
|
+
taskName: 'PreparePackages',
|
|
70
|
+
taskDescription: undefined
|
|
71
|
+
}, {
|
|
72
|
+
taskId: 'teambit.pkg/pkg',
|
|
73
|
+
taskName: 'PublishComponents',
|
|
74
|
+
taskDescription: undefined
|
|
75
|
+
}]);
|
|
76
|
+
});
|
|
77
|
+
it('uses the tag pipeline when not a snap', () => {
|
|
78
|
+
const plannedTasks = builder.getPlannedTasks([comp1], 'tag').get('my-scope/comp1');
|
|
79
|
+
(0, _chai().expect)(plannedTasks?.map(plannedTask => plannedTask.taskName)).to.deep.equal(['TSCompiler', 'PreparePackages']);
|
|
80
|
+
});
|
|
81
|
+
it('calculates the pipelines once for all envs and skips components without an env', () => {
|
|
82
|
+
buildPipelineCalls = 0;
|
|
83
|
+
const plannedTasksPerComp = builder.getPlannedTasks([comp1, comp2, compWithoutEnv], 'snap');
|
|
84
|
+
(0, _chai().expect)(buildPipelineCalls).to.equal(1);
|
|
85
|
+
(0, _chai().expect)([...plannedTasksPerComp.keys()]).to.deep.equal(['my-scope/comp1', 'my-scope/comp2']);
|
|
86
|
+
});
|
|
87
|
+
it('does not throw when the pipeline cannot be calculated', () => {
|
|
88
|
+
throwOnBuildPipeline = true;
|
|
89
|
+
try {
|
|
90
|
+
(0, _chai().expect)(builder.getPlannedTasks([comp1], 'snap').size).to.equal(0);
|
|
91
|
+
} finally {
|
|
92
|
+
throwOnBuildPipeline = false;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=builder.main.runtime.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_builderMain","task","aspectId","name","description","execute","compileTask","prepareTask","publishTask","fakeComponent","id","toString","toStringWithoutVersion","comp1","comp2","compWithoutEnv","buildPipelineCalls","throwOnBuildPipeline","service","tasks","onCall","getCurrentPipelinePerEnv","envDefs","Map","map","env","envs","getEnv","component","Error","logger","debug","builder","BuilderMain","undefined","describe","it","plannedTasks","getPlannedTasks","get","expect","to","deep","equal","taskId","taskName","taskDescription","plannedTask","plannedTasksPerComp","keys","size"],"sources":["builder.main.runtime.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { BuilderMain } from './builder.main.runtime';\n\n// Minimal fakes — getPlannedTasks only reads the env of the components and the pipelines of the services.\nconst task = (aspectId: string, name: string, description?: string) =>\n ({ aspectId, name, description, execute: async () => ({}) }) as any;\nconst compileTask = task('teambit.compilation/compiler', 'TSCompiler', 'compile components');\nconst prepareTask = task('teambit.pkg/pkg', 'PreparePackages');\nconst publishTask = task('teambit.pkg/pkg', 'PublishComponents');\nconst fakeComponent = (id: string) => ({ id: { toString: () => id, toStringWithoutVersion: () => id } }) as any;\nconst comp1 = fakeComponent('my-scope/comp1');\nconst comp2 = fakeComponent('my-scope/comp2');\nconst compWithoutEnv = fakeComponent('my-scope/comp-without-env');\n\nlet buildPipelineCalls = 0;\nlet throwOnBuildPipeline = false;\nconst service = (tasks: any[], onCall = () => {}) =>\n ({\n getCurrentPipelinePerEnv: (envDefs: any[]) => {\n onCall();\n return new Map(envDefs.map((env) => [env.id, tasks]));\n },\n }) as any;\nconst envs = {\n getEnv: (component: any) => {\n if (component === compWithoutEnv) throw new Error('env not found');\n return { id: 'my-env' };\n },\n} as any;\nconst logger = { debug: () => {} } as any;\n\nconst builder = new BuilderMain(\n envs,\n undefined as any,\n service([compileTask, prepareTask], () => {\n buildPipelineCalls++;\n if (throwOnBuildPipeline) throw new Error('missing task dependency');\n }),\n service([prepareTask]),\n service([prepareTask, publishTask]),\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n logger,\n undefined as any\n);\n\ndescribe('BuilderMain', () => {\n describe('getPlannedTasks', () => {\n it('returns the build and snap tasks, listing a task of both pipelines once', () => {\n const plannedTasks = builder.getPlannedTasks([comp1], 'snap').get('my-scope/comp1');\n expect(plannedTasks).to.deep.equal([\n { taskId: 'teambit.compilation/compiler', taskName: 'TSCompiler', taskDescription: 'compile components' },\n { taskId: 'teambit.pkg/pkg', taskName: 'PreparePackages', taskDescription: undefined },\n { taskId: 'teambit.pkg/pkg', taskName: 'PublishComponents', taskDescription: undefined },\n ]);\n });\n it('uses the tag pipeline when not a snap', () => {\n const plannedTasks = builder.getPlannedTasks([comp1], 'tag').get('my-scope/comp1');\n expect(plannedTasks?.map((plannedTask) => plannedTask.taskName)).to.deep.equal(['TSCompiler', 'PreparePackages']);\n });\n it('calculates the pipelines once for all envs and skips components without an env', () => {\n buildPipelineCalls = 0;\n const plannedTasksPerComp = builder.getPlannedTasks([comp1, comp2, compWithoutEnv], 'snap');\n expect(buildPipelineCalls).to.equal(1);\n expect([...plannedTasksPerComp.keys()]).to.deep.equal(['my-scope/comp1', 'my-scope/comp2']);\n });\n it('does not throw when the pipeline cannot be calculated', () => {\n throwOnBuildPipeline = true;\n try {\n expect(builder.getPlannedTasks([comp1], 'snap').size).to.equal(0);\n } finally {\n throwOnBuildPipeline = false;\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -111,6 +111,10 @@ export declare class BuilderService implements EnvService<BuildServiceResults, s
|
|
|
111
111
|
* the envs are calculated together, as in the actual run, so a task may depend on a task of another env.
|
|
112
112
|
*/
|
|
113
113
|
getCurrentPipeline(envs: EnvDefinition[]): BuildTask[];
|
|
114
|
+
/**
|
|
115
|
+
* the tasks of each env (by env id), calculated for all the envs together as in getCurrentPipeline().
|
|
116
|
+
*/
|
|
117
|
+
getCurrentPipelinePerEnv(envs: EnvDefinition[]): Map<string, BuildTask[]>;
|
|
114
118
|
getCurrentPipeTasks(env: EnvDefinition): string[];
|
|
115
119
|
}
|
|
116
120
|
export {};
|
package/dist/builder.service.js
CHANGED
|
@@ -204,6 +204,22 @@ class BuilderService {
|
|
|
204
204
|
task
|
|
205
205
|
}) => task);
|
|
206
206
|
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* the tasks of each env (by env id), calculated for all the envs together as in getCurrentPipeline().
|
|
210
|
+
*/
|
|
211
|
+
getCurrentPipelinePerEnv(envs) {
|
|
212
|
+
const tasksPerEnv = new Map();
|
|
213
|
+
(0, _buildPipelineOrder().calculatePipelineOrder)(this.taskSlot, envs, this.pipeNameOnEnv).forEach(({
|
|
214
|
+
env,
|
|
215
|
+
task
|
|
216
|
+
}) => {
|
|
217
|
+
const tasks = tasksPerEnv.get(env.id) || [];
|
|
218
|
+
tasks.push(task);
|
|
219
|
+
tasksPerEnv.set(env.id, tasks);
|
|
220
|
+
});
|
|
221
|
+
return tasksPerEnv;
|
|
222
|
+
}
|
|
207
223
|
getCurrentPipeTasks(env) {
|
|
208
224
|
return this.getCurrentPipeline([env]).map(task => _buildTask().BuildTaskHelper.serializeId(task));
|
|
209
225
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_legacy","data","require","_chalk","_interopRequireDefault","_lodash","_pMapSeries","_buildPipe","_buildTask","_buildPipelineOrder","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","pipeNames","getBuildPipe","getTagPipe","getSnapPipe","BuilderService","constructor","isolator","logger","taskSlot","pipeNameOnEnv","displayPipeName","artifactFactory","scope","configStore","runOnce","envsExecutionContext","options","envs","map","executionContext","envDefinition","tasksQueue","calculatePipelineOrder","tasks","skipTests","skipTasks","validate","info","toString","console","title","length","longProcessLogger","createLongProcessLogger","undefined","envsBuildContext","capsulesBaseDir","getComponentsCapsulesBaseDir","baseDir","useHash","isolateOptions","getExistingAsIs","seedersOnly","originalSeeders","pMapSeries","componentIds","components","component","id","originalSeedersOfThisEnv","filter","compId","find","seeder","isEqual","capsuleNetwork","isolateComponents","_originalSeeders","msg","chalk","cyan","extraDetails","seedersCapsules","graphCapsules","dim","buildContext","assign","previousTasksResults","pipeName","dev","laneId","legacyScope","getCurrentLaneId","envIdsWithoutVersion","env","split","buildPipe","BuildPipe","exitOnFirstFailedTask","showEnvNameInOutput","showEnvVersionInOutput","uniq","concurrency","getBuildConcurrency","buildResults","execute","end","hasErrors","getConfig","CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR","raw","process","BIT_BUILD_CONCURRENCY","parsed","parseInt","NaN","isNaN","render","descriptor","getDescriptor","transform","envContext","build","pipeline","compute","tag","snap","getCurrentPipeline","task","getCurrentPipeTasks","BuildTaskHelper","serializeId","exports"],"sources":["builder.service.ts"],"sourcesContent":["import { CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR } from '@teambit/legacy.constants';\nimport type {\n EnvService,\n ExecutionContext,\n EnvDefinition,\n Env,\n EnvContext,\n ServiceTransformationMap,\n} from '@teambit/envs';\nimport chalk from 'chalk';\nimport { uniq } from 'lodash';\nimport type { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport type { Logger } from '@teambit/logger';\nimport type { IsolatorMain } from '@teambit/isolator';\nimport type { Component, ComponentID } from '@teambit/component';\nimport type { TaskResults } from './build-pipe';\nimport { BuildPipe } from './build-pipe';\nimport type { TaskResultsList } from './task-results-list';\nimport type { TaskSlot } from './builder.main.runtime';\nimport type { BuildContext, BuildTask } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport type { ArtifactFactory } from './artifact';\nimport { calculatePipelineOrder } from './build-pipeline-order';\nimport type { ConfigStoreMain } from '@teambit/config-store';\n\nexport type BuildServiceResults = {\n id: string;\n buildResults: TaskResultsList;\n components: Component[];\n errors?: [];\n};\n\nexport type BuilderServiceOptions = {\n seedersOnly?: boolean;\n originalSeeders?: ComponentID[];\n tasks?: string[];\n skipTests?: boolean;\n skipTasks?: string[];\n previousTasksResults?: TaskResults[];\n dev?: boolean;\n exitOnFirstFailedTask?: boolean;\n capsulesBaseDir?: string;\n loose?: boolean; // avoid throwing errors if tasks like tests or lint fail\n};\n\ntype BuilderTransformationMap = ServiceTransformationMap & {\n getBuildPipe: () => BuildTask[];\n getTagPipe: () => BuildTask[];\n getSnapPipe: () => BuildTask[];\n};\n\nexport type EnvsBuildContext = { [envId: string]: BuildContext };\n\nconst pipeNames = {\n getBuildPipe: 'build',\n getTagPipe: 'tag',\n getSnapPipe: 'snap',\n};\n\nexport type PipeName = 'build' | 'tag' | 'snap';\n\nexport type BuilderDescriptor = Array<{ pipeName: PipeName; tasks: string[] }>;\n\nexport type PipeFunctionNames = keyof typeof pipeNames;\nexport class BuilderService implements EnvService<BuildServiceResults, string> {\n name = 'builder';\n\n constructor(\n /**\n * isolator extension.\n */\n private isolator: IsolatorMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * task slot (e.g tasks registered by other extensions.).\n */\n private taskSlot: TaskSlot,\n\n /**\n * a method with such name should be implemented on the env in order to run the pipe tasks.\n */\n private pipeNameOnEnv: PipeFunctionNames,\n\n /**\n * pipe name to display on the console during the execution\n */\n private displayPipeName: PipeName,\n private artifactFactory: ArtifactFactory,\n private scope: ScopeMain,\n private configStore: ConfigStoreMain\n ) {}\n\n /**\n * runs all tasks for all envs\n */\n async runOnce(envsExecutionContext: ExecutionContext[], options: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = envsExecutionContext.map((executionContext) => executionContext.envDefinition);\n const tasksQueue = calculatePipelineOrder(\n this.taskSlot,\n envs,\n this.pipeNameOnEnv,\n options.tasks,\n options.skipTests,\n options.skipTasks\n );\n tasksQueue.validate();\n this.logger.info(`going to run tasks in the following order:\\n${tasksQueue.toString()}`);\n this.logger.console('\\n'); // this is to make is clear separation between the various pipelines (build/snap/tag)\n const title = `Running ${this.displayPipeName} pipeline using ${envs.length} environment(s), total ${tasksQueue.length} tasks`;\n const longProcessLogger = this.logger.createLongProcessLogger(title, undefined, 'title');\n const envsBuildContext: EnvsBuildContext = {};\n const capsulesBaseDir = this.getComponentsCapsulesBaseDir();\n\n const baseDir = options.capsulesBaseDir || capsulesBaseDir;\n const useHash = !baseDir;\n const isolateOptions = {\n baseDir,\n useHash,\n getExistingAsIs: true,\n seedersOnly: options.seedersOnly,\n // pass the *original* (top-level) seeders so the per-env isolation doesn't filter out a dependency that is\n // built as a capsule anyway by another env (see filterUnmodifiedExportedDependencies). keeping it lets its\n // dependents leverage project-references instead of resolving it as an installed package.\n originalSeeders: options.originalSeeders,\n };\n\n await pMapSeries(envsExecutionContext, async (executionContext) => {\n const componentIds = executionContext.components.map((component) => component.id);\n const { originalSeeders } = options;\n const originalSeedersOfThisEnv = componentIds.filter((compId) =>\n originalSeeders ? originalSeeders.find((seeder) => compId.isEqual(seeder)) : true\n );\n const capsuleNetwork = await this.isolator.isolateComponents(componentIds, isolateOptions);\n capsuleNetwork._originalSeeders = originalSeedersOfThisEnv;\n const msg = `building ${chalk.cyan(originalSeedersOfThisEnv.length.toString())} components of env ${chalk.cyan(executionContext.id)}`;\n const extraDetails = `original seeders of this env: ${originalSeedersOfThisEnv.length}, graph of this env: ${capsuleNetwork.seedersCapsules.length}, graph total (include other envs): ${capsuleNetwork.graphCapsules.length}`;\n this.logger.console(`${msg}. ${chalk.dim(extraDetails)}`);\n const buildContext = Object.assign(executionContext, {\n capsuleNetwork,\n previousTasksResults: [],\n pipeName: this.displayPipeName,\n dev: options.dev,\n laneId: this.scope.legacyScope.getCurrentLaneId(),\n });\n envsBuildContext[executionContext.id] = buildContext;\n });\n const envIdsWithoutVersion = envs.map((env) => env.id.split('@')[0]);\n const buildPipe = new BuildPipe(\n tasksQueue,\n envsBuildContext,\n this.logger,\n this.artifactFactory,\n options.previousTasksResults,\n {\n exitOnFirstFailedTask: options.exitOnFirstFailedTask,\n showEnvNameInOutput: envs.length > 1,\n showEnvVersionInOutput: envIdsWithoutVersion.length > uniq(envIdsWithoutVersion).length,\n concurrency: this.getBuildConcurrency(),\n }\n );\n const buildResults = await buildPipe.execute();\n longProcessLogger.end(buildResults.hasErrors() ? 'error' : 'success');\n\n return buildResults;\n }\n\n getComponentsCapsulesBaseDir(): string | undefined {\n return this.configStore.getConfig(CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR);\n }\n\n /**\n * Number of environments whose build task-chains may run concurrently. Defaults to 1 (fully\n * serial — the original behavior). Opt into parallelism with the `BIT_BUILD_CONCURRENCY` env var\n * (handy for CI) or the `build.concurrency` config. In parallel mode each env's tasks still run\n * sequentially; only different envs run concurrently — see `BuildPipe.executeTasksInParallel`.\n */\n getBuildConcurrency(): number {\n const raw = process.env.BIT_BUILD_CONCURRENCY ?? this.configStore.getConfig('build.concurrency');\n const parsed = raw ? parseInt(raw, 10) : NaN;\n return Number.isNaN(parsed) || parsed < 1 ? 1 : parsed;\n }\n\n render() {\n const descriptor = this.getDescriptor();\n return descriptor;\n }\n\n transform(env: Env, envContext: EnvContext): BuilderTransformationMap | undefined {\n if (!env?.build) return undefined;\n return {\n getBuildPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.build?.();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getTagPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.tag?.();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getSnapPipe: () => {\n const pipeline = env.snap?.();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n };\n }\n\n getDescriptor() {\n return 'run `bit build --list-tasks <component-id>` to see the tasks list for the pipelines: build, tag and snap';\n }\n\n /**\n * the envs are calculated together, as in the actual run, so a task may depend on a task of another env.\n */\n getCurrentPipeline(envs: EnvDefinition[]): BuildTask[] {\n return calculatePipelineOrder(this.taskSlot, envs, this.pipeNameOnEnv).map(({ task }) => task);\n }\n\n getCurrentPipeTasks(env: EnvDefinition): string[] {\n return this.getCurrentPipeline([env]).map((task) => BuildTaskHelper.serializeId(task));\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_legacy","data","require","_chalk","_interopRequireDefault","_lodash","_pMapSeries","_buildPipe","_buildTask","_buildPipelineOrder","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","pipeNames","getBuildPipe","getTagPipe","getSnapPipe","BuilderService","constructor","isolator","logger","taskSlot","pipeNameOnEnv","displayPipeName","artifactFactory","scope","configStore","runOnce","envsExecutionContext","options","envs","map","executionContext","envDefinition","tasksQueue","calculatePipelineOrder","tasks","skipTests","skipTasks","validate","info","toString","console","title","length","longProcessLogger","createLongProcessLogger","undefined","envsBuildContext","capsulesBaseDir","getComponentsCapsulesBaseDir","baseDir","useHash","isolateOptions","getExistingAsIs","seedersOnly","originalSeeders","pMapSeries","componentIds","components","component","id","originalSeedersOfThisEnv","filter","compId","find","seeder","isEqual","capsuleNetwork","isolateComponents","_originalSeeders","msg","chalk","cyan","extraDetails","seedersCapsules","graphCapsules","dim","buildContext","assign","previousTasksResults","pipeName","dev","laneId","legacyScope","getCurrentLaneId","envIdsWithoutVersion","env","split","buildPipe","BuildPipe","exitOnFirstFailedTask","showEnvNameInOutput","showEnvVersionInOutput","uniq","concurrency","getBuildConcurrency","buildResults","execute","end","hasErrors","getConfig","CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR","raw","process","BIT_BUILD_CONCURRENCY","parsed","parseInt","NaN","isNaN","render","descriptor","getDescriptor","transform","envContext","build","pipeline","compute","tag","snap","getCurrentPipeline","task","getCurrentPipelinePerEnv","tasksPerEnv","Map","forEach","get","push","set","getCurrentPipeTasks","BuildTaskHelper","serializeId","exports"],"sources":["builder.service.ts"],"sourcesContent":["import { CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR } from '@teambit/legacy.constants';\nimport type {\n EnvService,\n ExecutionContext,\n EnvDefinition,\n Env,\n EnvContext,\n ServiceTransformationMap,\n} from '@teambit/envs';\nimport chalk from 'chalk';\nimport { uniq } from 'lodash';\nimport type { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport type { Logger } from '@teambit/logger';\nimport type { IsolatorMain } from '@teambit/isolator';\nimport type { Component, ComponentID } from '@teambit/component';\nimport type { TaskResults } from './build-pipe';\nimport { BuildPipe } from './build-pipe';\nimport type { TaskResultsList } from './task-results-list';\nimport type { TaskSlot } from './builder.main.runtime';\nimport type { BuildContext, BuildTask } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport type { ArtifactFactory } from './artifact';\nimport { calculatePipelineOrder } from './build-pipeline-order';\nimport type { ConfigStoreMain } from '@teambit/config-store';\n\nexport type BuildServiceResults = {\n id: string;\n buildResults: TaskResultsList;\n components: Component[];\n errors?: [];\n};\n\nexport type BuilderServiceOptions = {\n seedersOnly?: boolean;\n originalSeeders?: ComponentID[];\n tasks?: string[];\n skipTests?: boolean;\n skipTasks?: string[];\n previousTasksResults?: TaskResults[];\n dev?: boolean;\n exitOnFirstFailedTask?: boolean;\n capsulesBaseDir?: string;\n loose?: boolean; // avoid throwing errors if tasks like tests or lint fail\n};\n\ntype BuilderTransformationMap = ServiceTransformationMap & {\n getBuildPipe: () => BuildTask[];\n getTagPipe: () => BuildTask[];\n getSnapPipe: () => BuildTask[];\n};\n\nexport type EnvsBuildContext = { [envId: string]: BuildContext };\n\nconst pipeNames = {\n getBuildPipe: 'build',\n getTagPipe: 'tag',\n getSnapPipe: 'snap',\n};\n\nexport type PipeName = 'build' | 'tag' | 'snap';\n\nexport type BuilderDescriptor = Array<{ pipeName: PipeName; tasks: string[] }>;\n\nexport type PipeFunctionNames = keyof typeof pipeNames;\nexport class BuilderService implements EnvService<BuildServiceResults, string> {\n name = 'builder';\n\n constructor(\n /**\n * isolator extension.\n */\n private isolator: IsolatorMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * task slot (e.g tasks registered by other extensions.).\n */\n private taskSlot: TaskSlot,\n\n /**\n * a method with such name should be implemented on the env in order to run the pipe tasks.\n */\n private pipeNameOnEnv: PipeFunctionNames,\n\n /**\n * pipe name to display on the console during the execution\n */\n private displayPipeName: PipeName,\n private artifactFactory: ArtifactFactory,\n private scope: ScopeMain,\n private configStore: ConfigStoreMain\n ) {}\n\n /**\n * runs all tasks for all envs\n */\n async runOnce(envsExecutionContext: ExecutionContext[], options: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = envsExecutionContext.map((executionContext) => executionContext.envDefinition);\n const tasksQueue = calculatePipelineOrder(\n this.taskSlot,\n envs,\n this.pipeNameOnEnv,\n options.tasks,\n options.skipTests,\n options.skipTasks\n );\n tasksQueue.validate();\n this.logger.info(`going to run tasks in the following order:\\n${tasksQueue.toString()}`);\n this.logger.console('\\n'); // this is to make is clear separation between the various pipelines (build/snap/tag)\n const title = `Running ${this.displayPipeName} pipeline using ${envs.length} environment(s), total ${tasksQueue.length} tasks`;\n const longProcessLogger = this.logger.createLongProcessLogger(title, undefined, 'title');\n const envsBuildContext: EnvsBuildContext = {};\n const capsulesBaseDir = this.getComponentsCapsulesBaseDir();\n\n const baseDir = options.capsulesBaseDir || capsulesBaseDir;\n const useHash = !baseDir;\n const isolateOptions = {\n baseDir,\n useHash,\n getExistingAsIs: true,\n seedersOnly: options.seedersOnly,\n // pass the *original* (top-level) seeders so the per-env isolation doesn't filter out a dependency that is\n // built as a capsule anyway by another env (see filterUnmodifiedExportedDependencies). keeping it lets its\n // dependents leverage project-references instead of resolving it as an installed package.\n originalSeeders: options.originalSeeders,\n };\n\n await pMapSeries(envsExecutionContext, async (executionContext) => {\n const componentIds = executionContext.components.map((component) => component.id);\n const { originalSeeders } = options;\n const originalSeedersOfThisEnv = componentIds.filter((compId) =>\n originalSeeders ? originalSeeders.find((seeder) => compId.isEqual(seeder)) : true\n );\n const capsuleNetwork = await this.isolator.isolateComponents(componentIds, isolateOptions);\n capsuleNetwork._originalSeeders = originalSeedersOfThisEnv;\n const msg = `building ${chalk.cyan(originalSeedersOfThisEnv.length.toString())} components of env ${chalk.cyan(executionContext.id)}`;\n const extraDetails = `original seeders of this env: ${originalSeedersOfThisEnv.length}, graph of this env: ${capsuleNetwork.seedersCapsules.length}, graph total (include other envs): ${capsuleNetwork.graphCapsules.length}`;\n this.logger.console(`${msg}. ${chalk.dim(extraDetails)}`);\n const buildContext = Object.assign(executionContext, {\n capsuleNetwork,\n previousTasksResults: [],\n pipeName: this.displayPipeName,\n dev: options.dev,\n laneId: this.scope.legacyScope.getCurrentLaneId(),\n });\n envsBuildContext[executionContext.id] = buildContext;\n });\n const envIdsWithoutVersion = envs.map((env) => env.id.split('@')[0]);\n const buildPipe = new BuildPipe(\n tasksQueue,\n envsBuildContext,\n this.logger,\n this.artifactFactory,\n options.previousTasksResults,\n {\n exitOnFirstFailedTask: options.exitOnFirstFailedTask,\n showEnvNameInOutput: envs.length > 1,\n showEnvVersionInOutput: envIdsWithoutVersion.length > uniq(envIdsWithoutVersion).length,\n concurrency: this.getBuildConcurrency(),\n }\n );\n const buildResults = await buildPipe.execute();\n longProcessLogger.end(buildResults.hasErrors() ? 'error' : 'success');\n\n return buildResults;\n }\n\n getComponentsCapsulesBaseDir(): string | undefined {\n return this.configStore.getConfig(CFG_CAPSULES_BUILD_COMPONENTS_BASE_DIR);\n }\n\n /**\n * Number of environments whose build task-chains may run concurrently. Defaults to 1 (fully\n * serial — the original behavior). Opt into parallelism with the `BIT_BUILD_CONCURRENCY` env var\n * (handy for CI) or the `build.concurrency` config. In parallel mode each env's tasks still run\n * sequentially; only different envs run concurrently — see `BuildPipe.executeTasksInParallel`.\n */\n getBuildConcurrency(): number {\n const raw = process.env.BIT_BUILD_CONCURRENCY ?? this.configStore.getConfig('build.concurrency');\n const parsed = raw ? parseInt(raw, 10) : NaN;\n return Number.isNaN(parsed) || parsed < 1 ? 1 : parsed;\n }\n\n render() {\n const descriptor = this.getDescriptor();\n return descriptor;\n }\n\n transform(env: Env, envContext: EnvContext): BuilderTransformationMap | undefined {\n if (!env?.build) return undefined;\n return {\n getBuildPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.build?.();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getTagPipe: () => {\n // TODO: refactor after defining for an env property\n const pipeline = env.tag?.();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n getSnapPipe: () => {\n const pipeline = env.snap?.();\n if (!pipeline || !pipeline.compute) return [];\n return pipeline?.compute(envContext);\n },\n };\n }\n\n getDescriptor() {\n return 'run `bit build --list-tasks <component-id>` to see the tasks list for the pipelines: build, tag and snap';\n }\n\n /**\n * the envs are calculated together, as in the actual run, so a task may depend on a task of another env.\n */\n getCurrentPipeline(envs: EnvDefinition[]): BuildTask[] {\n return calculatePipelineOrder(this.taskSlot, envs, this.pipeNameOnEnv).map(({ task }) => task);\n }\n\n /**\n * the tasks of each env (by env id), calculated for all the envs together as in getCurrentPipeline().\n */\n getCurrentPipelinePerEnv(envs: EnvDefinition[]): Map<string, BuildTask[]> {\n const tasksPerEnv = new Map<string, BuildTask[]>();\n calculatePipelineOrder(this.taskSlot, envs, this.pipeNameOnEnv).forEach(({ env, task }) => {\n const tasks = tasksPerEnv.get(env.id) || [];\n tasks.push(task);\n tasksPerEnv.set(env.id, tasks);\n });\n return tasksPerEnv;\n }\n\n getCurrentPipeTasks(env: EnvDefinition): string[] {\n return this.getCurrentPipeline([env]).map((task) => BuildTaskHelper.serializeId(task));\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type { ComponentResult, TaskMetadata } from './types';
|
|
|
6
6
|
export type { BuildContext, BuildTask, BuiltTaskResult, TaskLocation } from './build-task';
|
|
7
7
|
export { CAPSULE_ARTIFACTS_DIR } from './build-task';
|
|
8
8
|
export type { PipeName } from './builder.service';
|
|
9
|
-
export type { BuilderMain, RawBuilderData, BuilderData, OnTagOpts, LegacyOnTagResult } from './builder.main.runtime';
|
|
9
|
+
export type { BuilderMain, RawBuilderData, BuilderData, OnTagOpts, LegacyOnTagResult, PlannedTask, UnbuiltBuilderData, } from './builder.main.runtime';
|
|
10
10
|
export type { TaskHandler } from './pipeline';
|
|
11
11
|
export { Pipeline } from './pipeline';
|
|
12
12
|
export type { PipelineReport } from './build-pipeline-result-list';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_builder","data","require","_component","_buildPipe","_buildTask","_pipeline","_artifact","_taskResultsList"],"sources":["index.ts"],"sourcesContent":["import { BuilderAspect } from './builder.aspect';\n\nexport { ArtifactVinyl } from '@teambit/component.sources';\nexport { BuildPipe } from './build-pipe';\nexport type { TaskResults } from './build-pipe';\nexport type { ComponentResult, TaskMetadata } from './types';\nexport type { BuildContext, BuildTask, BuiltTaskResult, TaskLocation } from './build-task';\nexport { CAPSULE_ARTIFACTS_DIR } from './build-task';\nexport type { PipeName } from './builder.service';\nexport type {
|
|
1
|
+
{"version":3,"names":["_builder","data","require","_component","_buildPipe","_buildTask","_pipeline","_artifact","_taskResultsList"],"sources":["index.ts"],"sourcesContent":["import { BuilderAspect } from './builder.aspect';\n\nexport { ArtifactVinyl } from '@teambit/component.sources';\nexport { BuildPipe } from './build-pipe';\nexport type { TaskResults } from './build-pipe';\nexport type { ComponentResult, TaskMetadata } from './types';\nexport type { BuildContext, BuildTask, BuiltTaskResult, TaskLocation } from './build-task';\nexport { CAPSULE_ARTIFACTS_DIR } from './build-task';\nexport type { PipeName } from './builder.service';\nexport type {\n BuilderMain,\n RawBuilderData,\n BuilderData,\n OnTagOpts,\n LegacyOnTagResult,\n PlannedTask,\n UnbuiltBuilderData,\n} from './builder.main.runtime';\nexport type { TaskHandler } from './pipeline';\nexport { Pipeline } from './pipeline';\nexport type { PipelineReport } from './build-pipeline-result-list';\nexport type { BuilderEnv } from './builder-env-type';\nexport type { WholeArtifactStorageResolver, FileStorageResolver, ArtifactStorageResolver } from './storage';\nexport type { ArtifactDefinition, ArtifactModelDefinition } from './artifact';\nexport { Artifact, ArtifactList, ArtifactFactory } from './artifact';\nexport type { Task } from './task';\nexport { TaskResultsList } from './task-results-list';\nexport { BuilderAspect, BuilderAspect as default };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,WAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,WAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,UAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAI,WAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAYA,SAAAK,UAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,SAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAM,UAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,SAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,iBAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,gBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.1234/dist/builder.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.1234/dist/builder.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/builder",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1234",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/pipelines/builder",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.pipelines",
|
|
8
8
|
"name": "builder",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.1234"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "4.1.2",
|
|
@@ -21,36 +21,36 @@
|
|
|
21
21
|
"fs-extra": "10.0.0",
|
|
22
22
|
"minimatch": "3.0.5",
|
|
23
23
|
"globby": "11.0.1",
|
|
24
|
-
"@teambit/component": "1.0.1225",
|
|
25
|
-
"@teambit/envs": "1.0.1225",
|
|
26
24
|
"@teambit/logger": "0.0.1499",
|
|
27
25
|
"@teambit/toolbox.string.capitalize": "0.0.518",
|
|
28
26
|
"@teambit/graph.cleargraph": "0.0.11",
|
|
29
27
|
"@teambit/legacy.constants": "0.0.49",
|
|
30
|
-
"@teambit/component.sources": "0.0.236",
|
|
31
28
|
"@teambit/lane-id": "0.0.312",
|
|
32
|
-
"@teambit/cli": "0.0.1415",
|
|
33
29
|
"@teambit/component-issues": "0.0.192",
|
|
34
30
|
"@teambit/harmony": "0.4.12",
|
|
35
|
-
"@teambit/aspect-loader": "1.0.1225",
|
|
36
31
|
"@teambit/bit-error": "0.0.404",
|
|
37
32
|
"@teambit/bit.get-bit-version": "0.0.31",
|
|
38
|
-
"@teambit/config-store": "0.0.296",
|
|
39
33
|
"@teambit/graphql": "1.0.1206",
|
|
40
34
|
"@teambit/harmony.modules.runtimes": "0.0.4",
|
|
41
|
-
"@teambit/issues": "1.0.1225",
|
|
42
|
-
"@teambit/legacy.consumer-component": "0.0.185",
|
|
43
|
-
"@teambit/legacy.extension-data": "0.0.186",
|
|
44
35
|
"@teambit/toolbox.array.duplications-finder": "0.0.19",
|
|
45
36
|
"@teambit/express": "0.0.1505",
|
|
46
37
|
"@teambit/component-id": "1.2.5",
|
|
47
38
|
"@teambit/legacy.utils": "0.0.56",
|
|
48
|
-
"@teambit/
|
|
49
|
-
"@teambit/
|
|
50
|
-
"@teambit/
|
|
51
|
-
"@teambit/
|
|
52
|
-
"@teambit/
|
|
53
|
-
"@teambit/
|
|
39
|
+
"@teambit/component": "1.0.1226",
|
|
40
|
+
"@teambit/envs": "1.0.1226",
|
|
41
|
+
"@teambit/component.sources": "0.0.237",
|
|
42
|
+
"@teambit/isolator": "1.0.1234",
|
|
43
|
+
"@teambit/cli": "0.0.1416",
|
|
44
|
+
"@teambit/workspace": "1.0.1234",
|
|
45
|
+
"@teambit/aspect-loader": "1.0.1226",
|
|
46
|
+
"@teambit/config-store": "0.0.297",
|
|
47
|
+
"@teambit/generator": "1.0.1235",
|
|
48
|
+
"@teambit/issues": "1.0.1226",
|
|
49
|
+
"@teambit/legacy.consumer-component": "0.0.186",
|
|
50
|
+
"@teambit/legacy.extension-data": "0.0.187",
|
|
51
|
+
"@teambit/scope": "1.0.1234",
|
|
52
|
+
"@teambit/ui": "1.0.1234",
|
|
53
|
+
"@teambit/legacy.scope": "0.0.185"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/pretty-time": "^1.1.5",
|