@teambit/builder 1.0.1226 → 1.0.1228
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/build-pipeline-order.d.ts +9 -0
- package/dist/build-pipeline-order.js +14 -13
- package/dist/build-pipeline-order.js.map +1 -1
- package/dist/build-pipeline-order.spec.d.ts +1 -0
- package/dist/build-pipeline-order.spec.js +62 -0
- package/dist/build-pipeline-order.spec.js.map +1 -0
- package/dist/build.cmd.js +4 -2
- package/dist/build.cmd.js.map +1 -1
- package/dist/builder.main.runtime.d.ts +10 -0
- package/dist/builder.main.runtime.js +34 -2
- package/dist/builder.main.runtime.js.map +1 -1
- package/dist/builder.service.d.ts +4 -1
- package/dist/builder.service.js +8 -5
- package/dist/builder.service.js.map +1 -1
- package/dist/{preview-1792014337133.js → preview-1792080191119.js} +2 -2
- package/package.json +11 -11
|
@@ -33,3 +33,12 @@ import type { PipeFunctionNames } from './builder.service';
|
|
|
33
33
|
* is no compiler task, it would throw an error about missing dependencies.
|
|
34
34
|
*/
|
|
35
35
|
export declare function calculatePipelineOrder(taskSlot: TaskSlot, envs: EnvDefinition[], pipeNameOnEnv: PipeFunctionNames, tasks?: string[], skipTests?: boolean, skipTasks?: string[]): TasksQueue;
|
|
36
|
+
/**
|
|
37
|
+
* a task matches a filter entry when the entry is the task-name (e.g. "build_application"), the
|
|
38
|
+
* task-aspect-id (e.g. "teambit.harmony/application") or the full task-id as shown by
|
|
39
|
+
* `bit build --list-tasks` (e.g. "teambit.harmony/application:build_application").
|
|
40
|
+
*/
|
|
41
|
+
export declare function isTaskInFilter(task: {
|
|
42
|
+
aspectId: string;
|
|
43
|
+
name: string;
|
|
44
|
+
}, filter: string[]): boolean;
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.calculatePipelineOrder = calculatePipelineOrder;
|
|
7
|
+
exports.isTaskInFilter = isTaskInFilter;
|
|
7
8
|
function _graph() {
|
|
8
9
|
const data = require("@teambit/graph.cleargraph");
|
|
9
10
|
_graph = function () {
|
|
@@ -103,13 +104,11 @@ function calculatePipelineOrder(taskSlot, envs, pipeNameOnEnv, tasks = [], skipT
|
|
|
103
104
|
let tasksQueue = new (_tasksQueue().TasksQueue)();
|
|
104
105
|
locations.forEach(location => addTasksToGraph(tasksQueue, dataPerLocation, location));
|
|
105
106
|
if (tasks.length) {
|
|
106
|
-
|
|
107
|
+
// a filter may match none of the tasks of this pipeline (e.g. a build task while running the snap
|
|
108
|
+
// pipeline). BuilderMain.build() validates the filter against all the pipelines that run.
|
|
107
109
|
tasksQueue = new (_tasksQueue().TasksQueue)(...tasksQueue.filter(({
|
|
108
110
|
task
|
|
109
|
-
}) =>
|
|
110
|
-
if (tasksQueue.length === 0 && originalLength > 0) {
|
|
111
|
-
throw new Error(`Pipeline error - no tasks found matching the specified filter: "${tasks.join(', ')}". Available tasks: ${getAvailableTaskNames(flattenedPipeline).join(', ')}`);
|
|
112
|
-
}
|
|
111
|
+
}) => isTaskInFilter(task, tasks)));
|
|
113
112
|
}
|
|
114
113
|
if (skipTests) {
|
|
115
114
|
tasksQueue = new (_tasksQueue().TasksQueue)(...tasksQueue.filter(({
|
|
@@ -119,17 +118,19 @@ function calculatePipelineOrder(taskSlot, envs, pipeNameOnEnv, tasks = [], skipT
|
|
|
119
118
|
if (skipTasks.length) {
|
|
120
119
|
tasksQueue = new (_tasksQueue().TasksQueue)(...tasksQueue.filter(({
|
|
121
120
|
task
|
|
122
|
-
}) => !
|
|
121
|
+
}) => !isTaskInFilter(task, skipTasks)));
|
|
123
122
|
}
|
|
124
123
|
return tasksQueue;
|
|
125
124
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* a task matches a filter entry when the entry is the task-name (e.g. "build_application"), the
|
|
128
|
+
* task-aspect-id (e.g. "teambit.harmony/application") or the full task-id as shown by
|
|
129
|
+
* `bit build --list-tasks` (e.g. "teambit.harmony/application:build_application").
|
|
130
|
+
*/
|
|
131
|
+
function isTaskInFilter(task, filter) {
|
|
132
|
+
const taskId = _buildTask().BuildTaskHelper.serializeId(task);
|
|
133
|
+
return filter.some(entry => entry === task.name || entry === task.aspectId || entry === taskId);
|
|
133
134
|
}
|
|
134
135
|
function addTasksToGraph(tasksQueue, dataPerLocation, location) {
|
|
135
136
|
const data = dataPerLocation.find(d => d.location === location);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_graph","data","require","_buildTask","_tasksQueue","_legacy","calculatePipelineOrder","taskSlot","envs","pipeNameOnEnv","tasks","skipTests","skipTasks","graphs","locations","forEach","location","push","graph","Graph","pipelineEnvs","envDefinition","pipeline","getPipelineForEnv","env","flattenedPipeline","map","pipelineEnv","flat","task","addDependenciesToGraph","dataPerLocation","pipelineEnvsPerLocation","filter","tasksQueue","TasksQueue","addTasksToGraph","length","originalLength","includes","name","aspectId","Error","join","getAvailableTaskNames","Extensions","tester","uniqueTaskNames","Set","add","Array","from","sort","find","d","sorted","toposort","taskNode","BuildTaskHelper","deserializeId","attr","taskIndex","findIndex","pipelineTask","splice","dependencies","taskId","serializeId","dependency","deserializeIdAllowEmptyName","dependencyTasks","dependencyTask","getLocation","graphLocation","g","dependencyId","setNode","Node","setEdge","Edge","taskLocation","dependencyLocation","isDependencyAhead","isDependencyEqual","buildTasks","slotsTasks","values","tasksAtStart","tasksAtEnd","mergedTasks"],"sources":["build-pipeline-order.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport type { EnvDefinition, Environment } from '@teambit/envs';\nimport type { BuildTask } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport type { TaskSlot } from './builder.main.runtime';\nimport { TasksQueue } from './tasks-queue';\nimport type { PipeFunctionNames } from './builder.service';\nimport { Extensions } from '@teambit/legacy.constants';\n\ntype TaskDependenciesGraph = Graph<string, string>;\ntype Location = 'start' | 'middle' | 'end';\ntype TasksLocationGraph = { location: Location; graph: TaskDependenciesGraph };\ntype PipelineEnv = { env: EnvDefinition; pipeline: BuildTask[] };\ntype DataPerLocation = { location: Location; graph: TaskDependenciesGraph; pipelineEnvs: PipelineEnv[] };\n\n/**\n * there are two ways how to add tasks to build pipeline.\n * 1. `getBuildPipe()` method of the env.\n * 2. registering to the `builder.registerBuildTask()`.\n *\n * in the option #1, it's possible to determine the order. e.g. `getBuildPipe() { return [taskA, taskB, taskC]; }`\n * in the option #2, the register happens once the extension is loaded, so there is no way to put\n * one task before/after another task.\n *\n * To be able to determine the order, you can do the following\n * 1. \"task.location\", it has two options \"start\" and \"end\". the rest are \"middle\".\n * 2. \"task.dependencies\", the dependencies must be completed for all envs before this task starts.\n * the dependencies are applicable inside a location and not across locations. see getLocation()\n * or/and continue reading for more info about this.\n *\n * to determine the final order of the tasks, the following is done:\n * 1. split all tasks to three groups: start, middle and end.\n * 2. for each group define a dependencies graph for the tasks with \"dependencies\" prop and the pipeline.\n * 3. start with the first group \"start\", toposort the dependencies graph and push the found tasks\n * to a queue. once completed, iterate the pipeline and add all tasks to the queue.\n * 4. do the same for the \"middle\" and \"end\" groups.\n *\n * the reason for splitting the tasks to the three groups and not using the \"dependencies\" field\n * alone to determine the order is that the \"start\" and \"end\" groups are mostly core and \"middle\"\n * is mostly the user entering tasks to the pipeline and we as the core don't know about the users\n * tasks. For example, a core task \"PublishComponent\" must happen after the compiler, however, a\n * user might have an env without a compiler. if we determine the order only by the dependencies\n * field, the \"PublishComponent\" would have a dependency \"compiler\" and because in this case there\n * is no compiler task, it would throw an error about missing dependencies.\n */\nexport function calculatePipelineOrder(\n taskSlot: TaskSlot,\n envs: EnvDefinition[],\n pipeNameOnEnv: PipeFunctionNames,\n tasks: string[] = [],\n skipTests = false,\n skipTasks: string[] = []\n): TasksQueue {\n const graphs: TasksLocationGraph[] = [];\n const locations: Location[] = ['start', 'middle', 'end']; // the order is important here!\n locations.forEach((location) => {\n graphs.push({ location, graph: new Graph<string, string>() });\n });\n const pipelineEnvs: PipelineEnv[] = [];\n envs.forEach((envDefinition) => {\n const pipeline = getPipelineForEnv(taskSlot, envDefinition.env, pipeNameOnEnv);\n pipelineEnvs.push({ env: envDefinition, pipeline });\n });\n\n const flattenedPipeline: BuildTask[] = pipelineEnvs.map((pipelineEnv) => pipelineEnv.pipeline).flat();\n flattenedPipeline.forEach((task) => addDependenciesToGraph(graphs, flattenedPipeline, task));\n\n const dataPerLocation: DataPerLocation[] = graphs.map(({ location, graph }) => {\n const pipelineEnvsPerLocation: PipelineEnv[] = pipelineEnvs.map(({ env, pipeline }) => {\n return { env, pipeline: pipeline.filter((task) => (task.location || 'middle') === location) };\n });\n return { location, graph, pipelineEnvs: pipelineEnvsPerLocation };\n });\n\n let tasksQueue = new TasksQueue();\n locations.forEach((location) => addTasksToGraph(tasksQueue, dataPerLocation, location));\n if (tasks.length) {\n const originalLength = tasksQueue.length;\n tasksQueue = new TasksQueue(\n ...tasksQueue.filter(({ task }) => tasks.includes(task.name) || tasks.includes(task.aspectId))\n );\n if (tasksQueue.length === 0 && originalLength > 0) {\n throw new Error(\n `Pipeline error - no tasks found matching the specified filter: \"${tasks.join(', ')}\". Available tasks: ${getAvailableTaskNames(flattenedPipeline).join(', ')}`\n );\n }\n }\n if (skipTests) {\n tasksQueue = new TasksQueue(...tasksQueue.filter(({ task }) => task.aspectId !== Extensions.tester));\n }\n if (skipTasks.length) {\n tasksQueue = new TasksQueue(\n ...tasksQueue.filter(({ task }) => !skipTasks.includes(task.name) && !skipTasks.includes(task.aspectId))\n );\n }\n\n return tasksQueue;\n}\n\nfunction getAvailableTaskNames(tasks: BuildTask[]): string[] {\n const uniqueTaskNames = new Set<string>();\n tasks.forEach((task) => {\n uniqueTaskNames.add(task.name);\n uniqueTaskNames.add(task.aspectId);\n });\n return Array.from(uniqueTaskNames).sort();\n}\n\nfunction addTasksToGraph(tasksQueue: TasksQueue, dataPerLocation: DataPerLocation[], location: Location) {\n const data = dataPerLocation.find((d) => d.location === location);\n if (!data) return;\n const sorted = data.graph.toposort();\n sorted.forEach((taskNode) => {\n const { aspectId, name } = BuildTaskHelper.deserializeId(taskNode.attr);\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n const taskIndex = pipeline.findIndex(\n (pipelineTask) => pipelineTask.aspectId === aspectId && pipelineTask.name === name\n );\n if (taskIndex < 0) return;\n const task = pipeline[taskIndex];\n tasksQueue.push({ env, task });\n pipeline.splice(taskIndex, 1); // delete the task from the pipeline\n });\n });\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n pipeline.forEach((task) => tasksQueue.push({ env, task }));\n });\n}\n\nfunction addDependenciesToGraph(graphs: TasksLocationGraph[], pipeline: BuildTask[], task: BuildTask) {\n if (!task.dependencies || !task.dependencies.length) return;\n const taskId = BuildTaskHelper.serializeId(task);\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n const dependencyTasks = pipeline.filter((pipelineTask) => {\n if (pipelineTask.aspectId !== aspectId) return false;\n return name ? name === pipelineTask.name : true;\n });\n if (dependencyTasks.length === 0) {\n throw new Error(\n `Pipeline error - missing task dependency \"${dependency}\" of the \"${BuildTaskHelper.serializeId(task)}\"`\n );\n }\n dependencyTasks.forEach((dependencyTask) => {\n const location = getLocation(task, dependencyTask);\n if (!location) {\n // the dependency is behind and will be in the correct order regardless the graph.\n return;\n }\n const graphLocation = graphs.find((g) => g.location === location);\n if (!graphLocation) throw new Error(`unable to find graph for location ${location}`);\n const dependencyId = BuildTaskHelper.serializeId(dependencyTask);\n const graph = graphLocation.graph;\n graph.setNode(new Node(taskId, taskId));\n graph.setNode(new Node(dependencyId, dependencyId));\n graph.setEdge(new Edge(dependencyId, taskId, 'dependency'));\n });\n });\n}\n\n/**\n * since the task execution is happening per group: \"start\", \"middle\" and \"end\", the dependencies\n * need to be inside the same group.\n * e.g. if a dependency located at \"end\" group and the task located at \"start\", it's impossible to\n * complete the dependency before the task, there it throws an error.\n * it's ok to have the dependency located earlier, e.g. \"start\" and the task at \"end\", and in this\n * case, it will not be part of the graph because there is no need to do any special calculation.\n */\nfunction getLocation(task: BuildTask, dependencyTask: BuildTask): Location | null {\n const taskLocation = task.location || 'middle';\n const dependencyLocation = dependencyTask.location || 'middle';\n\n const isDependencyAhead =\n (taskLocation === 'start' && dependencyLocation !== 'start') ||\n (taskLocation === 'middle' && dependencyLocation === 'end');\n\n const isDependencyEqual = taskLocation === dependencyLocation;\n\n if (isDependencyAhead) {\n throw new Error(`a task \"${BuildTaskHelper.serializeId(task)}\" located at ${taskLocation}\nhas a dependency \"${BuildTaskHelper.serializeId(dependencyTask)} located at ${dependencyLocation},\nwhich is invalid. the dependency must be located earlier or in the same location as the task\"`);\n }\n\n if (isDependencyEqual) {\n return taskLocation;\n }\n\n // dependency is behind. e.g. task is \"end\" and dependency is \"start\". no need to enter to the\n // graph as it's going to be executed in the right order regardless the graph.\n return null;\n}\n\nfunction getPipelineForEnv(taskSlot: TaskSlot, env: Environment, pipeNameOnEnv: string): BuildTask[] {\n const buildTasks: BuildTask[] = env[pipeNameOnEnv] ? env[pipeNameOnEnv]() : [];\n const slotsTasks = taskSlot.values().flat();\n const tasksAtStart: BuildTask[] = [];\n const tasksAtEnd: BuildTask[] = [];\n slotsTasks.forEach((task) => {\n if (task.location === 'start') {\n tasksAtStart.push(task);\n return;\n }\n if (task.location === 'end') {\n tasksAtEnd.push(task);\n return;\n }\n tasksAtStart.push(task);\n });\n\n // merge with extension registered tasks.\n const mergedTasks = [...tasksAtStart, ...buildTasks, ...tasksAtEnd];\n\n return mergedTasks;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_graph","data","require","_buildTask","_tasksQueue","_legacy","calculatePipelineOrder","taskSlot","envs","pipeNameOnEnv","tasks","skipTests","skipTasks","graphs","locations","forEach","location","push","graph","Graph","pipelineEnvs","envDefinition","pipeline","getPipelineForEnv","env","flattenedPipeline","map","pipelineEnv","flat","task","addDependenciesToGraph","dataPerLocation","pipelineEnvsPerLocation","filter","tasksQueue","TasksQueue","addTasksToGraph","length","isTaskInFilter","aspectId","Extensions","tester","taskId","BuildTaskHelper","serializeId","some","entry","name","find","d","sorted","toposort","taskNode","deserializeId","attr","taskIndex","findIndex","pipelineTask","splice","dependencies","dependency","deserializeIdAllowEmptyName","dependencyTasks","Error","dependencyTask","getLocation","graphLocation","g","dependencyId","setNode","Node","setEdge","Edge","taskLocation","dependencyLocation","isDependencyAhead","isDependencyEqual","buildTasks","slotsTasks","values","tasksAtStart","tasksAtEnd","mergedTasks"],"sources":["build-pipeline-order.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport type { EnvDefinition, Environment } from '@teambit/envs';\nimport type { BuildTask } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport type { TaskSlot } from './builder.main.runtime';\nimport { TasksQueue } from './tasks-queue';\nimport type { PipeFunctionNames } from './builder.service';\nimport { Extensions } from '@teambit/legacy.constants';\n\ntype TaskDependenciesGraph = Graph<string, string>;\ntype Location = 'start' | 'middle' | 'end';\ntype TasksLocationGraph = { location: Location; graph: TaskDependenciesGraph };\ntype PipelineEnv = { env: EnvDefinition; pipeline: BuildTask[] };\ntype DataPerLocation = { location: Location; graph: TaskDependenciesGraph; pipelineEnvs: PipelineEnv[] };\n\n/**\n * there are two ways how to add tasks to build pipeline.\n * 1. `getBuildPipe()` method of the env.\n * 2. registering to the `builder.registerBuildTask()`.\n *\n * in the option #1, it's possible to determine the order. e.g. `getBuildPipe() { return [taskA, taskB, taskC]; }`\n * in the option #2, the register happens once the extension is loaded, so there is no way to put\n * one task before/after another task.\n *\n * To be able to determine the order, you can do the following\n * 1. \"task.location\", it has two options \"start\" and \"end\". the rest are \"middle\".\n * 2. \"task.dependencies\", the dependencies must be completed for all envs before this task starts.\n * the dependencies are applicable inside a location and not across locations. see getLocation()\n * or/and continue reading for more info about this.\n *\n * to determine the final order of the tasks, the following is done:\n * 1. split all tasks to three groups: start, middle and end.\n * 2. for each group define a dependencies graph for the tasks with \"dependencies\" prop and the pipeline.\n * 3. start with the first group \"start\", toposort the dependencies graph and push the found tasks\n * to a queue. once completed, iterate the pipeline and add all tasks to the queue.\n * 4. do the same for the \"middle\" and \"end\" groups.\n *\n * the reason for splitting the tasks to the three groups and not using the \"dependencies\" field\n * alone to determine the order is that the \"start\" and \"end\" groups are mostly core and \"middle\"\n * is mostly the user entering tasks to the pipeline and we as the core don't know about the users\n * tasks. For example, a core task \"PublishComponent\" must happen after the compiler, however, a\n * user might have an env without a compiler. if we determine the order only by the dependencies\n * field, the \"PublishComponent\" would have a dependency \"compiler\" and because in this case there\n * is no compiler task, it would throw an error about missing dependencies.\n */\nexport function calculatePipelineOrder(\n taskSlot: TaskSlot,\n envs: EnvDefinition[],\n pipeNameOnEnv: PipeFunctionNames,\n tasks: string[] = [],\n skipTests = false,\n skipTasks: string[] = []\n): TasksQueue {\n const graphs: TasksLocationGraph[] = [];\n const locations: Location[] = ['start', 'middle', 'end']; // the order is important here!\n locations.forEach((location) => {\n graphs.push({ location, graph: new Graph<string, string>() });\n });\n const pipelineEnvs: PipelineEnv[] = [];\n envs.forEach((envDefinition) => {\n const pipeline = getPipelineForEnv(taskSlot, envDefinition.env, pipeNameOnEnv);\n pipelineEnvs.push({ env: envDefinition, pipeline });\n });\n\n const flattenedPipeline: BuildTask[] = pipelineEnvs.map((pipelineEnv) => pipelineEnv.pipeline).flat();\n flattenedPipeline.forEach((task) => addDependenciesToGraph(graphs, flattenedPipeline, task));\n\n const dataPerLocation: DataPerLocation[] = graphs.map(({ location, graph }) => {\n const pipelineEnvsPerLocation: PipelineEnv[] = pipelineEnvs.map(({ env, pipeline }) => {\n return { env, pipeline: pipeline.filter((task) => (task.location || 'middle') === location) };\n });\n return { location, graph, pipelineEnvs: pipelineEnvsPerLocation };\n });\n\n let tasksQueue = new TasksQueue();\n locations.forEach((location) => addTasksToGraph(tasksQueue, dataPerLocation, location));\n if (tasks.length) {\n // a filter may match none of the tasks of this pipeline (e.g. a build task while running the snap\n // pipeline). BuilderMain.build() validates the filter against all the pipelines that run.\n tasksQueue = new TasksQueue(...tasksQueue.filter(({ task }) => isTaskInFilter(task, tasks)));\n }\n if (skipTests) {\n tasksQueue = new TasksQueue(...tasksQueue.filter(({ task }) => task.aspectId !== Extensions.tester));\n }\n if (skipTasks.length) {\n tasksQueue = new TasksQueue(...tasksQueue.filter(({ task }) => !isTaskInFilter(task, skipTasks)));\n }\n\n return tasksQueue;\n}\n\n/**\n * a task matches a filter entry when the entry is the task-name (e.g. \"build_application\"), the\n * task-aspect-id (e.g. \"teambit.harmony/application\") or the full task-id as shown by\n * `bit build --list-tasks` (e.g. \"teambit.harmony/application:build_application\").\n */\nexport function isTaskInFilter(task: { aspectId: string; name: string }, filter: string[]): boolean {\n const taskId = BuildTaskHelper.serializeId(task);\n return filter.some((entry) => entry === task.name || entry === task.aspectId || entry === taskId);\n}\n\nfunction addTasksToGraph(tasksQueue: TasksQueue, dataPerLocation: DataPerLocation[], location: Location) {\n const data = dataPerLocation.find((d) => d.location === location);\n if (!data) return;\n const sorted = data.graph.toposort();\n sorted.forEach((taskNode) => {\n const { aspectId, name } = BuildTaskHelper.deserializeId(taskNode.attr);\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n const taskIndex = pipeline.findIndex(\n (pipelineTask) => pipelineTask.aspectId === aspectId && pipelineTask.name === name\n );\n if (taskIndex < 0) return;\n const task = pipeline[taskIndex];\n tasksQueue.push({ env, task });\n pipeline.splice(taskIndex, 1); // delete the task from the pipeline\n });\n });\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n pipeline.forEach((task) => tasksQueue.push({ env, task }));\n });\n}\n\nfunction addDependenciesToGraph(graphs: TasksLocationGraph[], pipeline: BuildTask[], task: BuildTask) {\n if (!task.dependencies || !task.dependencies.length) return;\n const taskId = BuildTaskHelper.serializeId(task);\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n const dependencyTasks = pipeline.filter((pipelineTask) => {\n if (pipelineTask.aspectId !== aspectId) return false;\n return name ? name === pipelineTask.name : true;\n });\n if (dependencyTasks.length === 0) {\n throw new Error(\n `Pipeline error - missing task dependency \"${dependency}\" of the \"${BuildTaskHelper.serializeId(task)}\"`\n );\n }\n dependencyTasks.forEach((dependencyTask) => {\n const location = getLocation(task, dependencyTask);\n if (!location) {\n // the dependency is behind and will be in the correct order regardless the graph.\n return;\n }\n const graphLocation = graphs.find((g) => g.location === location);\n if (!graphLocation) throw new Error(`unable to find graph for location ${location}`);\n const dependencyId = BuildTaskHelper.serializeId(dependencyTask);\n const graph = graphLocation.graph;\n graph.setNode(new Node(taskId, taskId));\n graph.setNode(new Node(dependencyId, dependencyId));\n graph.setEdge(new Edge(dependencyId, taskId, 'dependency'));\n });\n });\n}\n\n/**\n * since the task execution is happening per group: \"start\", \"middle\" and \"end\", the dependencies\n * need to be inside the same group.\n * e.g. if a dependency located at \"end\" group and the task located at \"start\", it's impossible to\n * complete the dependency before the task, there it throws an error.\n * it's ok to have the dependency located earlier, e.g. \"start\" and the task at \"end\", and in this\n * case, it will not be part of the graph because there is no need to do any special calculation.\n */\nfunction getLocation(task: BuildTask, dependencyTask: BuildTask): Location | null {\n const taskLocation = task.location || 'middle';\n const dependencyLocation = dependencyTask.location || 'middle';\n\n const isDependencyAhead =\n (taskLocation === 'start' && dependencyLocation !== 'start') ||\n (taskLocation === 'middle' && dependencyLocation === 'end');\n\n const isDependencyEqual = taskLocation === dependencyLocation;\n\n if (isDependencyAhead) {\n throw new Error(`a task \"${BuildTaskHelper.serializeId(task)}\" located at ${taskLocation}\nhas a dependency \"${BuildTaskHelper.serializeId(dependencyTask)} located at ${dependencyLocation},\nwhich is invalid. the dependency must be located earlier or in the same location as the task\"`);\n }\n\n if (isDependencyEqual) {\n return taskLocation;\n }\n\n // dependency is behind. e.g. task is \"end\" and dependency is \"start\". no need to enter to the\n // graph as it's going to be executed in the right order regardless the graph.\n return null;\n}\n\nfunction getPipelineForEnv(taskSlot: TaskSlot, env: Environment, pipeNameOnEnv: string): BuildTask[] {\n const buildTasks: BuildTask[] = env[pipeNameOnEnv] ? env[pipeNameOnEnv]() : [];\n const slotsTasks = taskSlot.values().flat();\n const tasksAtStart: BuildTask[] = [];\n const tasksAtEnd: BuildTask[] = [];\n slotsTasks.forEach((task) => {\n if (task.location === 'start') {\n tasksAtStart.push(task);\n return;\n }\n if (task.location === 'end') {\n tasksAtEnd.push(task);\n return;\n }\n tasksAtStart.push(task);\n });\n\n // merge with extension registered tasks.\n const mergedTasks = [...tasksAtStart, ...buildTasks, ...tasksAtEnd];\n\n return mergedTasks;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
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 _buildPipelineOrder() {
|
|
11
|
+
const data = require("./build-pipeline-order");
|
|
12
|
+
_buildPipelineOrder = function () {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
// Minimal fakes — calculatePipelineOrder only reads the env's pipe function and the slot's values.
|
|
18
|
+
const task = (aspectId, name) => ({
|
|
19
|
+
aspectId,
|
|
20
|
+
name,
|
|
21
|
+
execute: async () => ({})
|
|
22
|
+
});
|
|
23
|
+
const compileTask = task('teambit.compilation/compiler', 'TSCompiler');
|
|
24
|
+
const appTask = task('teambit.harmony/application', 'build_application');
|
|
25
|
+
const emptySlot = {
|
|
26
|
+
values: () => []
|
|
27
|
+
};
|
|
28
|
+
const envs = [{
|
|
29
|
+
id: 'my-env',
|
|
30
|
+
env: {
|
|
31
|
+
getBuildPipe: () => [compileTask, appTask]
|
|
32
|
+
}
|
|
33
|
+
}];
|
|
34
|
+
const queuedTaskNames = (tasks = [], skipTasks = []) => (0, _buildPipelineOrder().calculatePipelineOrder)(emptySlot, envs, 'getBuildPipe', tasks, false, skipTasks).map(({
|
|
35
|
+
task: queuedTask
|
|
36
|
+
}) => queuedTask.name);
|
|
37
|
+
describe('build-pipeline-order', () => {
|
|
38
|
+
describe('isTaskInFilter', () => {
|
|
39
|
+
it('matches by task-name, task-aspect-id and the full task-id', () => {
|
|
40
|
+
(0, _chai().expect)((0, _buildPipelineOrder().isTaskInFilter)(appTask, ['build_application'])).to.be.true;
|
|
41
|
+
(0, _chai().expect)((0, _buildPipelineOrder().isTaskInFilter)(appTask, ['teambit.harmony/application'])).to.be.true;
|
|
42
|
+
(0, _chai().expect)((0, _buildPipelineOrder().isTaskInFilter)(appTask, ['teambit.harmony/application:build_application'])).to.be.true;
|
|
43
|
+
});
|
|
44
|
+
it('does not match a full task-id of a different task in the same aspect', () => {
|
|
45
|
+
(0, _chai().expect)((0, _buildPipelineOrder().isTaskInFilter)(appTask, ['teambit.harmony/application:other_task'])).to.be.false;
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('calculatePipelineOrder', () => {
|
|
49
|
+
it('filters the pipeline by the full task-id', () => {
|
|
50
|
+
(0, _chai().expect)(queuedTaskNames(['teambit.harmony/application:build_application'])).to.deep.equal(['build_application']);
|
|
51
|
+
});
|
|
52
|
+
it('skips tasks by the full task-id', () => {
|
|
53
|
+
(0, _chai().expect)(queuedTaskNames([], ['teambit.harmony/application:build_application'])).to.deep.equal(['TSCompiler']);
|
|
54
|
+
});
|
|
55
|
+
it('returns an empty queue when no task matches the filter', () => {
|
|
56
|
+
// the filter may target another pipeline. BuilderMain.build() validates it across the pipelines
|
|
57
|
+
(0, _chai().expect)(queuedTaskNames(['non-exist'])).to.deep.equal([]);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=build-pipeline-order.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_buildPipelineOrder","task","aspectId","name","execute","compileTask","appTask","emptySlot","values","envs","id","env","getBuildPipe","queuedTaskNames","tasks","skipTasks","calculatePipelineOrder","map","queuedTask","describe","it","expect","isTaskInFilter","to","be","true","false","deep","equal"],"sources":["build-pipeline-order.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { calculatePipelineOrder, isTaskInFilter } from './build-pipeline-order';\n\n// Minimal fakes — calculatePipelineOrder only reads the env's pipe function and the slot's values.\nconst task = (aspectId: string, name: string) => ({ aspectId, name, execute: async () => ({}) }) as any;\nconst compileTask = task('teambit.compilation/compiler', 'TSCompiler');\nconst appTask = task('teambit.harmony/application', 'build_application');\nconst emptySlot = { values: () => [] } as any;\nconst envs = [{ id: 'my-env', env: { getBuildPipe: () => [compileTask, appTask] } }] as any;\n\nconst queuedTaskNames = (tasks: string[] = [], skipTasks: string[] = []) =>\n calculatePipelineOrder(emptySlot, envs, 'getBuildPipe', tasks, false, skipTasks).map(\n ({ task: queuedTask }) => queuedTask.name\n );\n\ndescribe('build-pipeline-order', () => {\n describe('isTaskInFilter', () => {\n it('matches by task-name, task-aspect-id and the full task-id', () => {\n expect(isTaskInFilter(appTask, ['build_application'])).to.be.true;\n expect(isTaskInFilter(appTask, ['teambit.harmony/application'])).to.be.true;\n expect(isTaskInFilter(appTask, ['teambit.harmony/application:build_application'])).to.be.true;\n });\n it('does not match a full task-id of a different task in the same aspect', () => {\n expect(isTaskInFilter(appTask, ['teambit.harmony/application:other_task'])).to.be.false;\n });\n });\n\n describe('calculatePipelineOrder', () => {\n it('filters the pipeline by the full task-id', () => {\n expect(queuedTaskNames(['teambit.harmony/application:build_application'])).to.deep.equal(['build_application']);\n });\n it('skips tasks by the full task-id', () => {\n expect(queuedTaskNames([], ['teambit.harmony/application:build_application'])).to.deep.equal(['TSCompiler']);\n });\n it('returns an empty queue when no task matches the filter', () => {\n // the filter may target another pipeline. BuilderMain.build() validates it across the pipelines\n expect(queuedTaskNames(['non-exist'])).to.deep.equal([]);\n });\n });\n});\n"],"mappings":";;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,oBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,mBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA,MAAMG,IAAI,GAAGA,CAACC,QAAgB,EAAEC,IAAY,MAAM;EAAED,QAAQ;EAAEC,IAAI;EAAEC,OAAO,EAAE,MAAAA,CAAA,MAAa,CAAC,CAAC;AAAE,CAAC,CAAQ;AACvG,MAAMC,WAAW,GAAGJ,IAAI,CAAC,8BAA8B,EAAE,YAAY,CAAC;AACtE,MAAMK,OAAO,GAAGL,IAAI,CAAC,6BAA6B,EAAE,mBAAmB,CAAC;AACxE,MAAMM,SAAS,GAAG;EAAEC,MAAM,EAAEA,CAAA,KAAM;AAAG,CAAQ;AAC7C,MAAMC,IAAI,GAAG,CAAC;EAAEC,EAAE,EAAE,QAAQ;EAAEC,GAAG,EAAE;IAAEC,YAAY,EAAEA,CAAA,KAAM,CAACP,WAAW,EAAEC,OAAO;EAAE;AAAE,CAAC,CAAQ;AAE3F,MAAMO,eAAe,GAAGA,CAACC,KAAe,GAAG,EAAE,EAAEC,SAAmB,GAAG,EAAE,KACrE,IAAAC,4CAAsB,EAACT,SAAS,EAAEE,IAAI,EAAE,cAAc,EAAEK,KAAK,EAAE,KAAK,EAAEC,SAAS,CAAC,CAACE,GAAG,CAClF,CAAC;EAAEhB,IAAI,EAAEiB;AAAW,CAAC,KAAKA,UAAU,CAACf,IACvC,CAAC;AAEHgB,QAAQ,CAAC,sBAAsB,EAAE,MAAM;EACrCA,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAC/BC,EAAE,CAAC,2DAA2D,EAAE,MAAM;MACpE,IAAAC,cAAM,EAAC,IAAAC,oCAAc,EAAChB,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAACiB,EAAE,CAACC,EAAE,CAACC,IAAI;MACjE,IAAAJ,cAAM,EAAC,IAAAC,oCAAc,EAAChB,OAAO,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAACiB,EAAE,CAACC,EAAE,CAACC,IAAI;MAC3E,IAAAJ,cAAM,EAAC,IAAAC,oCAAc,EAAChB,OAAO,EAAE,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAACiB,EAAE,CAACC,EAAE,CAACC,IAAI;IAC/F,CAAC,CAAC;IACFL,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/E,IAAAC,cAAM,EAAC,IAAAC,oCAAc,EAAChB,OAAO,EAAE,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAACiB,EAAE,CAACC,EAAE,CAACE,KAAK;IACzF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,QAAQ,CAAC,wBAAwB,EAAE,MAAM;IACvCC,EAAE,CAAC,0CAA0C,EAAE,MAAM;MACnD,IAAAC,cAAM,EAACR,eAAe,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAACU,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACjH,CAAC,CAAC;IACFR,EAAE,CAAC,iCAAiC,EAAE,MAAM;MAC1C,IAAAC,cAAM,EAACR,eAAe,CAAC,EAAE,EAAE,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAACU,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9G,CAAC,CAAC;IACFR,EAAE,CAAC,wDAAwD,EAAE,MAAM;MACjE;MACA,IAAAC,cAAM,EAACR,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAACU,EAAE,CAACI,IAAI,CAACC,KAAK,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
package/dist/build.cmd.js
CHANGED
|
@@ -70,8 +70,10 @@ the "--rewrite" flag ensures the component files are fresh, and the "--tasks" en
|
|
|
70
70
|
_defineProperty(this, "alias", '');
|
|
71
71
|
_defineProperty(this, "group", 'component-development');
|
|
72
72
|
_defineProperty(this, "options", [['u', 'unmodified', 'include unmodified components (by default, only new and modified components are built)'], ['d', 'dev', 'run the pipeline in dev mode'], ['', 'install', 'install core aspects in capsules'], ['', 'reuse-capsules', 'avoid deleting the capsules root-dir before starting the build'], ['', 'rewrite', 'use only with --reuse-capsules. rewrite the component files'], ['', 'reinstall', 'use only with --reuse-capsules. rerun the installation'], ['', 'tasks <string>', `build the specified task(s) only. for multiple tasks, separate by a comma and wrap with quotes.
|
|
73
|
-
specify the task-name (e.g. "TypescriptCompiler")
|
|
74
|
-
|
|
73
|
+
specify the task-name (e.g. "TypescriptCompiler"), the task-aspect-id (e.g. teambit.compilation/compiler)
|
|
74
|
+
or the full task-id as shown by --list-tasks (e.g. teambit.compilation/compiler:TypescriptCompiler)`], ['', 'cache-packages-on-capsule-root', 'set the package-manager cache on the capsule root'], ['', 'list-tasks <string>', 'list tasks of an env or a component-id for each one of the pipelines: build, tag and snap'], ['', 'skip-tests', 'skip running component tests during build process'], ['', 'loose', 'allow build to succeed even if tasks like tests or lint fail'], ['', 'skip-tasks <string>', `skip the given tasks. for multiple tasks, separate by a comma and wrap with quotes.
|
|
75
|
+
specify the task-name (e.g. "TypescriptCompiler"), the task-aspect-id (e.g. teambit.compilation/compiler)
|
|
76
|
+
or the full task-id as shown by --list-tasks (e.g. teambit.compilation/compiler:TypescriptCompiler)`], ['', 'fail-fast', 'stop pipeline execution on the first failed task (by default a task is skipped only when its dependency failed)'], ['', 'include-snap', 'include snap pipeline tasks. Warning: this may deploy/publish if you have such tasks'], ['', 'include-tag', 'include tag pipeline tasks. Warning: this may deploy/publish if you have such tasks'], ['i', 'ignore-issues <issues>', `ignore component issues (shown in "bit status" as "issues found"), issues to ignore:
|
|
75
77
|
[${Object.keys(_componentIssues().IssuesClasses).join(', ')}]
|
|
76
78
|
to ignore multiple issues, separate them by a comma and wrap with quotes. to ignore all issues, specify "*".`]]);
|
|
77
79
|
}
|
package/dist/build.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_prettyTime","_interopRequireDefault","_workspace","_legacy","_componentIssues","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BuilderCmd","constructor","builder","workspace","logger","name","description","COMPONENT_PATTERN_HELP","cmd","keys","IssuesClasses","join","report","pattern","unmodified","dev","install","cachePackagesOnCapsulesRoot","reuseCapsules","rewrite","reinstall","tasks","listTasks","skipTests","skipTasks","failFast","includeSnap","includeTag","ignoreIssues","loose","Error","OutsideWorkspaceError","getListTasks","setStatusLine","start","process","hrtime","components","getComponentsByUserInput","length","formatHint","skipTasksParsed","split","map","trim","undefined","envsExecutionResults","build","installOptions","installTeambitBit","packageManagerConfigRootDir","path","installPackages","linkingOptions","linkTeambitBit","emptyRootDir","getExistingAsIs","task","exitOnFirstFailedTask","console","capsuleRootDir","duration","prettyTime","succeedOrFailed","hasErrors","msg","consoleFailure","throwErrorsIfExist","formatSuccessSummary","componentIdStr","compId","resolveComponentId","component","get","results","buildItems","buildTasks","formatItem","tagItems","tagTasks","snapItems","snapTasks","joinSections","formatTitle","id","toString","envId","exports"],"sources":["build.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport { formatTitle, formatItem, formatSuccessSummary, formatHint, joinSections } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport prettyTime from 'pretty-time';\nimport type { Workspace } from '@teambit/workspace';\nimport { OutsideWorkspaceError } from '@teambit/workspace';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { BuilderMain } from './builder.main.runtime';\nimport { IssuesClasses } from '@teambit/component-issues';\n\ntype BuildOpts = {\n unmodified?: boolean;\n dev: boolean;\n rebuild: boolean;\n install: boolean;\n cachePackagesOnCapsulesRoot: boolean;\n reuseCapsules: boolean;\n rewrite?: boolean; //relevant only when reuseCapsules is set\n reinstall?: boolean; //relevant only when reuseCapsules is set\n tasks: string;\n listTasks?: string;\n skipTests?: boolean;\n skipTasks?: string;\n failFast?: boolean;\n includeSnap?: boolean;\n includeTag?: boolean;\n ignoreIssues?: string;\n loose?: boolean;\n};\n\nexport class BuilderCmd implements Command {\n name = 'build [component-pattern]';\n description = 'run build pipeline tasks in isolated environments';\n extendedDescription = `executes the complete build pipeline including compilation, testing, linting, and other tasks defined by component environments.\nthe build takes place in isolated directories called \"capsules\" where component files are copied and dependencies are installed via the package manager.\nby default processes only new and modified components - use --unmodified to build all components.\nbecause this process can take a while on large workspaces, various flags are available to optimize the process - see examples for debugging workflows.`;\n arguments = [{ name: 'component-pattern', description: COMPONENT_PATTERN_HELP }];\n examples = [\n {\n cmd: 'build --reuse-capsules --tasks \"custom-task\"',\n description: 'helps to debug this \"custom-task\" without recreating the capsules from scratch',\n },\n {\n cmd: 'build --reuse-capsules --rewrite --tasks \"BabelCompile,MochaTest\"',\n description: `helpful when for example the tests are failing and code changes are needed to debug it.\nthe \"--rewrite\" flag ensures the component files are fresh, and the \"--tasks\" ensures to re-compile them and then run the tests`,\n },\n ];\n helpUrl = 'reference/build-pipeline/builder-overview';\n alias = '';\n group = 'component-development';\n options = [\n ['u', 'unmodified', 'include unmodified components (by default, only new and modified components are built)'],\n ['d', 'dev', 'run the pipeline in dev mode'],\n ['', 'install', 'install core aspects in capsules'],\n ['', 'reuse-capsules', 'avoid deleting the capsules root-dir before starting the build'],\n ['', 'rewrite', 'use only with --reuse-capsules. rewrite the component files'],\n ['', 'reinstall', 'use only with --reuse-capsules. rerun the installation'],\n [\n '',\n 'tasks <string>',\n `build the specified task(s) only. for multiple tasks, separate by a comma and wrap with quotes.\nspecify the task-name (e.g. \"TypescriptCompiler\") or the task-aspect-id (e.g. teambit.compilation/compiler)`,\n ],\n ['', 'cache-packages-on-capsule-root', 'set the package-manager cache on the capsule root'],\n [\n '',\n 'list-tasks <string>',\n 'list tasks of an env or a component-id for each one of the pipelines: build, tag and snap',\n ],\n ['', 'skip-tests', 'skip running component tests during build process'],\n ['', 'loose', 'allow build to succeed even if tasks like tests or lint fail'],\n [\n '',\n 'skip-tasks <string>',\n `skip the given tasks. for multiple tasks, separate by a comma and wrap with quotes.\n specify the task-name (e.g. \"TypescriptCompiler\") or the task-aspect-id (e.g. teambit.compilation/compiler)`,\n ],\n [\n '',\n 'fail-fast',\n 'stop pipeline execution on the first failed task (by default a task is skipped only when its dependency failed)',\n ],\n ['', 'include-snap', 'include snap pipeline tasks. Warning: this may deploy/publish if you have such tasks'],\n ['', 'include-tag', 'include tag pipeline tasks. Warning: this may deploy/publish if you have such tasks'],\n [\n 'i',\n 'ignore-issues <issues>',\n `ignore component issues (shown in \"bit status\" as \"issues found\"), issues to ignore:\n[${Object.keys(IssuesClasses).join(', ')}]\nto ignore multiple issues, separate them by a comma and wrap with quotes. to ignore all issues, specify \"*\".`,\n ],\n ] as CommandOptions;\n\n constructor(\n private builder: BuilderMain,\n private workspace: Workspace,\n private logger: Logger\n ) {}\n\n async report(\n [pattern]: [string],\n {\n unmodified = false,\n dev = false,\n install = false,\n cachePackagesOnCapsulesRoot = false,\n reuseCapsules = false,\n rewrite = false,\n reinstall = false,\n tasks,\n listTasks,\n skipTests,\n skipTasks,\n failFast,\n includeSnap,\n includeTag,\n ignoreIssues,\n loose = false,\n }: BuildOpts\n ): Promise<string> {\n if (rewrite && !reuseCapsules) throw new Error('cannot use --rewrite without --reuse-capsules');\n if (reinstall && !reuseCapsules) throw new Error('cannot use --reinstall without --reuse-capsules');\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (listTasks) {\n return this.getListTasks(listTasks);\n }\n\n this.logger.setStatusLine('build');\n const start = process.hrtime();\n // If pattern is provided, don't pass the unmodified flag as \"all\" - the pattern should take precedence\n const components = await this.workspace.getComponentsByUserInput(pattern ? false : unmodified, pattern, true);\n if (!components.length) {\n return formatHint(\n `no components found to build. use \"--unmodified\" flag to build all components or specify the ids to build, otherwise, only new and modified components will be built`\n );\n }\n\n const skipTasksParsed = skipTasks ? skipTasks.split(',').map((t) => t.trim()) : undefined;\n\n const envsExecutionResults = await this.builder.build(\n components,\n {\n installOptions: {\n installTeambitBit: install,\n packageManagerConfigRootDir: this.workspace.path,\n installPackages: rewrite && !reinstall ? false : true,\n },\n linkingOptions: { linkTeambitBit: !install },\n emptyRootDir: !reuseCapsules,\n getExistingAsIs: reuseCapsules && !rewrite && !reinstall,\n cachePackagesOnCapsulesRoot,\n },\n {\n dev,\n tasks: tasks ? tasks.split(',').map((task) => task.trim()) : [],\n skipTests,\n skipTasks: skipTasksParsed,\n exitOnFirstFailedTask: failFast,\n },\n {\n includeSnap,\n includeTag,\n ignoreIssues,\n }\n );\n this.logger.console(`build output can be found in path: ${envsExecutionResults.capsuleRootDir}`);\n const duration = prettyTime(process.hrtime(start));\n const succeedOrFailed = envsExecutionResults.hasErrors(loose) ? 'failed' : 'succeeded';\n const msg = `build ${succeedOrFailed}. completed in ${duration}.`;\n if (envsExecutionResults.hasErrors(loose)) {\n this.logger.consoleFailure(msg);\n }\n envsExecutionResults.throwErrorsIfExist(loose);\n return formatSuccessSummary(msg);\n }\n\n private async getListTasks(componentIdStr: string): Promise<string> {\n const compId = await this.workspace.resolveComponentId(componentIdStr);\n const component = await this.workspace.get(compId);\n const results = this.builder.listTasks(component);\n const buildItems = results.buildTasks.map((t) => formatItem(t));\n const tagItems = results.tagTasks.map((t) => formatItem(t));\n const snapItems = results.snapTasks.length ? results.snapTasks.map((t) => formatItem(t)) : [formatItem('<N/A>')];\n return joinSections([\n `${formatTitle('Task List')}\\nid: ${results.id.toString()}\\nenvId: ${results.envId}`,\n `${formatTitle('Build Pipeline Tasks')}\\n${buildItems.join('\\n')}`,\n `${formatTitle('Tag Pipeline Tasks')}\\n${tagItems.join('\\n')}`,\n `${formatTitle('Snap Pipeline Tasks')}\\n${snapItems.join('\\n')}`,\n ]);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_prettyTime","_interopRequireDefault","_workspace","_legacy","_componentIssues","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BuilderCmd","constructor","builder","workspace","logger","name","description","COMPONENT_PATTERN_HELP","cmd","keys","IssuesClasses","join","report","pattern","unmodified","dev","install","cachePackagesOnCapsulesRoot","reuseCapsules","rewrite","reinstall","tasks","listTasks","skipTests","skipTasks","failFast","includeSnap","includeTag","ignoreIssues","loose","Error","OutsideWorkspaceError","getListTasks","setStatusLine","start","process","hrtime","components","getComponentsByUserInput","length","formatHint","skipTasksParsed","split","map","trim","undefined","envsExecutionResults","build","installOptions","installTeambitBit","packageManagerConfigRootDir","path","installPackages","linkingOptions","linkTeambitBit","emptyRootDir","getExistingAsIs","task","exitOnFirstFailedTask","console","capsuleRootDir","duration","prettyTime","succeedOrFailed","hasErrors","msg","consoleFailure","throwErrorsIfExist","formatSuccessSummary","componentIdStr","compId","resolveComponentId","component","get","results","buildItems","buildTasks","formatItem","tagItems","tagTasks","snapItems","snapTasks","joinSections","formatTitle","id","toString","envId","exports"],"sources":["build.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport { formatTitle, formatItem, formatSuccessSummary, formatHint, joinSections } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport prettyTime from 'pretty-time';\nimport type { Workspace } from '@teambit/workspace';\nimport { OutsideWorkspaceError } from '@teambit/workspace';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { BuilderMain } from './builder.main.runtime';\nimport { IssuesClasses } from '@teambit/component-issues';\n\ntype BuildOpts = {\n unmodified?: boolean;\n dev: boolean;\n rebuild: boolean;\n install: boolean;\n cachePackagesOnCapsulesRoot: boolean;\n reuseCapsules: boolean;\n rewrite?: boolean; //relevant only when reuseCapsules is set\n reinstall?: boolean; //relevant only when reuseCapsules is set\n tasks: string;\n listTasks?: string;\n skipTests?: boolean;\n skipTasks?: string;\n failFast?: boolean;\n includeSnap?: boolean;\n includeTag?: boolean;\n ignoreIssues?: string;\n loose?: boolean;\n};\n\nexport class BuilderCmd implements Command {\n name = 'build [component-pattern]';\n description = 'run build pipeline tasks in isolated environments';\n extendedDescription = `executes the complete build pipeline including compilation, testing, linting, and other tasks defined by component environments.\nthe build takes place in isolated directories called \"capsules\" where component files are copied and dependencies are installed via the package manager.\nby default processes only new and modified components - use --unmodified to build all components.\nbecause this process can take a while on large workspaces, various flags are available to optimize the process - see examples for debugging workflows.`;\n arguments = [{ name: 'component-pattern', description: COMPONENT_PATTERN_HELP }];\n examples = [\n {\n cmd: 'build --reuse-capsules --tasks \"custom-task\"',\n description: 'helps to debug this \"custom-task\" without recreating the capsules from scratch',\n },\n {\n cmd: 'build --reuse-capsules --rewrite --tasks \"BabelCompile,MochaTest\"',\n description: `helpful when for example the tests are failing and code changes are needed to debug it.\nthe \"--rewrite\" flag ensures the component files are fresh, and the \"--tasks\" ensures to re-compile them and then run the tests`,\n },\n ];\n helpUrl = 'reference/build-pipeline/builder-overview';\n alias = '';\n group = 'component-development';\n options = [\n ['u', 'unmodified', 'include unmodified components (by default, only new and modified components are built)'],\n ['d', 'dev', 'run the pipeline in dev mode'],\n ['', 'install', 'install core aspects in capsules'],\n ['', 'reuse-capsules', 'avoid deleting the capsules root-dir before starting the build'],\n ['', 'rewrite', 'use only with --reuse-capsules. rewrite the component files'],\n ['', 'reinstall', 'use only with --reuse-capsules. rerun the installation'],\n [\n '',\n 'tasks <string>',\n `build the specified task(s) only. for multiple tasks, separate by a comma and wrap with quotes.\nspecify the task-name (e.g. \"TypescriptCompiler\"), the task-aspect-id (e.g. teambit.compilation/compiler)\nor the full task-id as shown by --list-tasks (e.g. teambit.compilation/compiler:TypescriptCompiler)`,\n ],\n ['', 'cache-packages-on-capsule-root', 'set the package-manager cache on the capsule root'],\n [\n '',\n 'list-tasks <string>',\n 'list tasks of an env or a component-id for each one of the pipelines: build, tag and snap',\n ],\n ['', 'skip-tests', 'skip running component tests during build process'],\n ['', 'loose', 'allow build to succeed even if tasks like tests or lint fail'],\n [\n '',\n 'skip-tasks <string>',\n `skip the given tasks. for multiple tasks, separate by a comma and wrap with quotes.\n specify the task-name (e.g. \"TypescriptCompiler\"), the task-aspect-id (e.g. teambit.compilation/compiler)\n or the full task-id as shown by --list-tasks (e.g. teambit.compilation/compiler:TypescriptCompiler)`,\n ],\n [\n '',\n 'fail-fast',\n 'stop pipeline execution on the first failed task (by default a task is skipped only when its dependency failed)',\n ],\n ['', 'include-snap', 'include snap pipeline tasks. Warning: this may deploy/publish if you have such tasks'],\n ['', 'include-tag', 'include tag pipeline tasks. Warning: this may deploy/publish if you have such tasks'],\n [\n 'i',\n 'ignore-issues <issues>',\n `ignore component issues (shown in \"bit status\" as \"issues found\"), issues to ignore:\n[${Object.keys(IssuesClasses).join(', ')}]\nto ignore multiple issues, separate them by a comma and wrap with quotes. to ignore all issues, specify \"*\".`,\n ],\n ] as CommandOptions;\n\n constructor(\n private builder: BuilderMain,\n private workspace: Workspace,\n private logger: Logger\n ) {}\n\n async report(\n [pattern]: [string],\n {\n unmodified = false,\n dev = false,\n install = false,\n cachePackagesOnCapsulesRoot = false,\n reuseCapsules = false,\n rewrite = false,\n reinstall = false,\n tasks,\n listTasks,\n skipTests,\n skipTasks,\n failFast,\n includeSnap,\n includeTag,\n ignoreIssues,\n loose = false,\n }: BuildOpts\n ): Promise<string> {\n if (rewrite && !reuseCapsules) throw new Error('cannot use --rewrite without --reuse-capsules');\n if (reinstall && !reuseCapsules) throw new Error('cannot use --reinstall without --reuse-capsules');\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (listTasks) {\n return this.getListTasks(listTasks);\n }\n\n this.logger.setStatusLine('build');\n const start = process.hrtime();\n // If pattern is provided, don't pass the unmodified flag as \"all\" - the pattern should take precedence\n const components = await this.workspace.getComponentsByUserInput(pattern ? false : unmodified, pattern, true);\n if (!components.length) {\n return formatHint(\n `no components found to build. use \"--unmodified\" flag to build all components or specify the ids to build, otherwise, only new and modified components will be built`\n );\n }\n\n const skipTasksParsed = skipTasks ? skipTasks.split(',').map((t) => t.trim()) : undefined;\n\n const envsExecutionResults = await this.builder.build(\n components,\n {\n installOptions: {\n installTeambitBit: install,\n packageManagerConfigRootDir: this.workspace.path,\n installPackages: rewrite && !reinstall ? false : true,\n },\n linkingOptions: { linkTeambitBit: !install },\n emptyRootDir: !reuseCapsules,\n getExistingAsIs: reuseCapsules && !rewrite && !reinstall,\n cachePackagesOnCapsulesRoot,\n },\n {\n dev,\n tasks: tasks ? tasks.split(',').map((task) => task.trim()) : [],\n skipTests,\n skipTasks: skipTasksParsed,\n exitOnFirstFailedTask: failFast,\n },\n {\n includeSnap,\n includeTag,\n ignoreIssues,\n }\n );\n this.logger.console(`build output can be found in path: ${envsExecutionResults.capsuleRootDir}`);\n const duration = prettyTime(process.hrtime(start));\n const succeedOrFailed = envsExecutionResults.hasErrors(loose) ? 'failed' : 'succeeded';\n const msg = `build ${succeedOrFailed}. completed in ${duration}.`;\n if (envsExecutionResults.hasErrors(loose)) {\n this.logger.consoleFailure(msg);\n }\n envsExecutionResults.throwErrorsIfExist(loose);\n return formatSuccessSummary(msg);\n }\n\n private async getListTasks(componentIdStr: string): Promise<string> {\n const compId = await this.workspace.resolveComponentId(componentIdStr);\n const component = await this.workspace.get(compId);\n const results = this.builder.listTasks(component);\n const buildItems = results.buildTasks.map((t) => formatItem(t));\n const tagItems = results.tagTasks.map((t) => formatItem(t));\n const snapItems = results.snapTasks.length ? results.snapTasks.map((t) => formatItem(t)) : [formatItem('<N/A>')];\n return joinSections([\n `${formatTitle('Task List')}\\nid: ${results.id.toString()}\\nenvId: ${results.envId}`,\n `${formatTitle('Build Pipeline Tasks')}\\n${buildItems.join('\\n')}`,\n `${formatTitle('Tag Pipeline Tasks')}\\n${tagItems.join('\\n')}`,\n `${formatTitle('Snap Pipeline Tasks')}\\n${snapItems.join('\\n')}`,\n ]);\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,WAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAM,iBAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,gBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0D,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAsBnD,MAAMgB,UAAU,CAAoB;EAmEzCC,WAAWA,CACDC,OAAoB,EACpBC,SAAoB,EACpBC,MAAc,EACtB;IAAA,KAHQF,OAAoB,GAApBA,OAAoB;IAAA,KACpBC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,MAAc,GAAdA,MAAc;IAAAtB,eAAA,eArEjB,2BAA2B;IAAAA,eAAA,sBACpB,mDAAmD;IAAAA,eAAA,8BAC3C;AACxB;AACA;AACA,uJAAuJ;IAAAA,eAAA,oBACzI,CAAC;MAAEuB,IAAI,EAAE,mBAAmB;MAAEC,WAAW,EAAEC;IAAuB,CAAC,CAAC;IAAAzB,eAAA,mBACrE,CACT;MACE0B,GAAG,EAAE,8CAA8C;MACnDF,WAAW,EAAE;IACf,CAAC,EACD;MACEE,GAAG,EAAE,mEAAmE;MACxEF,WAAW,EAAE;AACnB;IACI,CAAC,CACF;IAAAxB,eAAA,kBACS,2CAA2C;IAAAA,eAAA,gBAC7C,EAAE;IAAAA,eAAA,gBACF,uBAAuB;IAAAA,eAAA,kBACrB,CACR,CAAC,GAAG,EAAE,YAAY,EAAE,wFAAwF,CAAC,EAC7G,CAAC,GAAG,EAAE,KAAK,EAAE,8BAA8B,CAAC,EAC5C,CAAC,EAAE,EAAE,SAAS,EAAE,kCAAkC,CAAC,EACnD,CAAC,EAAE,EAAE,gBAAgB,EAAE,gEAAgE,CAAC,EACxF,CAAC,EAAE,EAAE,SAAS,EAAE,6DAA6D,CAAC,EAC9E,CAAC,EAAE,EAAE,WAAW,EAAE,wDAAwD,CAAC,EAC3E,CACE,EAAE,EACF,gBAAgB,EAChB;AACN;AACA,oGAAoG,CAC/F,EACD,CAAC,EAAE,EAAE,gCAAgC,EAAE,mDAAmD,CAAC,EAC3F,CACE,EAAE,EACF,qBAAqB,EACrB,2FAA2F,CAC5F,EACD,CAAC,EAAE,EAAE,YAAY,EAAE,mDAAmD,CAAC,EACvE,CAAC,EAAE,EAAE,OAAO,EAAE,8DAA8D,CAAC,EAC7E,CACE,EAAE,EACF,qBAAqB,EACrB;AACN;AACA,sGAAsG,CACjG,EACD,CACE,EAAE,EACF,WAAW,EACX,iHAAiH,CAClH,EACD,CAAC,EAAE,EAAE,cAAc,EAAE,sFAAsF,CAAC,EAC5G,CAAC,EAAE,EAAE,aAAa,EAAE,qFAAqF,CAAC,EAC1G,CACE,GAAG,EACH,wBAAwB,EACxB;AACN,GAAGI,MAAM,CAACuB,IAAI,CAACC,gCAAa,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AACxC,6GAA6G,CACxG,CACF;EAME;EAEH,MAAMC,MAAMA,CACV,CAACC,OAAO,CAAW,EACnB;IACEC,UAAU,GAAG,KAAK;IAClBC,GAAG,GAAG,KAAK;IACXC,OAAO,GAAG,KAAK;IACfC,2BAA2B,GAAG,KAAK;IACnCC,aAAa,GAAG,KAAK;IACrBC,OAAO,GAAG,KAAK;IACfC,SAAS,GAAG,KAAK;IACjBC,KAAK;IACLC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,QAAQ;IACRC,WAAW;IACXC,UAAU;IACVC,YAAY;IACZC,KAAK,GAAG;EACC,CAAC,EACK;IACjB,IAAIV,OAAO,IAAI,CAACD,aAAa,EAAE,MAAM,IAAIY,KAAK,CAAC,+CAA+C,CAAC;IAC/F,IAAIV,SAAS,IAAI,CAACF,aAAa,EAAE,MAAM,IAAIY,KAAK,CAAC,iDAAiD,CAAC;IACnG,IAAI,CAAC,IAAI,CAAC3B,SAAS,EAAE,MAAM,KAAI4B,kCAAqB,EAAC,CAAC;IACtD,IAAIT,SAAS,EAAE;MACb,OAAO,IAAI,CAACU,YAAY,CAACV,SAAS,CAAC;IACrC;IAEA,IAAI,CAAClB,MAAM,CAAC6B,aAAa,CAAC,OAAO,CAAC;IAClC,MAAMC,KAAK,GAAGC,OAAO,CAACC,MAAM,CAAC,CAAC;IAC9B;IACA,MAAMC,UAAU,GAAG,MAAM,IAAI,CAAClC,SAAS,CAACmC,wBAAwB,CAACzB,OAAO,GAAG,KAAK,GAAGC,UAAU,EAAED,OAAO,EAAE,IAAI,CAAC;IAC7G,IAAI,CAACwB,UAAU,CAACE,MAAM,EAAE;MACtB,OAAO,IAAAC,iBAAU,EACf,sKACF,CAAC;IACH;IAEA,MAAMC,eAAe,GAAGjB,SAAS,GAAGA,SAAS,CAACkB,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAE3D,CAAC,IAAKA,CAAC,CAAC4D,IAAI,CAAC,CAAC,CAAC,GAAGC,SAAS;IAEzF,MAAMC,oBAAoB,GAAG,MAAM,IAAI,CAAC5C,OAAO,CAAC6C,KAAK,CACnDV,UAAU,EACV;MACEW,cAAc,EAAE;QACdC,iBAAiB,EAAEjC,OAAO;QAC1BkC,2BAA2B,EAAE,IAAI,CAAC/C,SAAS,CAACgD,IAAI;QAChDC,eAAe,EAAEjC,OAAO,IAAI,CAACC,SAAS,GAAG,KAAK,GAAG;MACnD,CAAC;MACDiC,cAAc,EAAE;QAAEC,cAAc,EAAE,CAACtC;MAAQ,CAAC;MAC5CuC,YAAY,EAAE,CAACrC,aAAa;MAC5BsC,eAAe,EAAEtC,aAAa,IAAI,CAACC,OAAO,IAAI,CAACC,SAAS;MACxDH;IACF,CAAC,EACD;MACEF,GAAG;MACHM,KAAK,EAAEA,KAAK,GAAGA,KAAK,CAACqB,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAEc,IAAI,IAAKA,IAAI,CAACb,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;MAC/DrB,SAAS;MACTC,SAAS,EAAEiB,eAAe;MAC1BiB,qBAAqB,EAAEjC;IACzB,CAAC,EACD;MACEC,WAAW;MACXC,UAAU;MACVC;IACF,CACF,CAAC;IACD,IAAI,CAACxB,MAAM,CAACuD,OAAO,CAAC,sCAAsCb,oBAAoB,CAACc,cAAc,EAAE,CAAC;IAChG,MAAMC,QAAQ,GAAG,IAAAC,qBAAU,EAAC3B,OAAO,CAACC,MAAM,CAACF,KAAK,CAAC,CAAC;IAClD,MAAM6B,eAAe,GAAGjB,oBAAoB,CAACkB,SAAS,CAACnC,KAAK,CAAC,GAAG,QAAQ,GAAG,WAAW;IACtF,MAAMoC,GAAG,GAAG,SAASF,eAAe,kBAAkBF,QAAQ,GAAG;IACjE,IAAIf,oBAAoB,CAACkB,SAAS,CAACnC,KAAK,CAAC,EAAE;MACzC,IAAI,CAACzB,MAAM,CAAC8D,cAAc,CAACD,GAAG,CAAC;IACjC;IACAnB,oBAAoB,CAACqB,kBAAkB,CAACtC,KAAK,CAAC;IAC9C,OAAO,IAAAuC,2BAAoB,EAACH,GAAG,CAAC;EAClC;EAEA,MAAcjC,YAAYA,CAACqC,cAAsB,EAAmB;IAClE,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACnE,SAAS,CAACoE,kBAAkB,CAACF,cAAc,CAAC;IACtE,MAAMG,SAAS,GAAG,MAAM,IAAI,CAACrE,SAAS,CAACsE,GAAG,CAACH,MAAM,CAAC;IAClD,MAAMI,OAAO,GAAG,IAAI,CAACxE,OAAO,CAACoB,SAAS,CAACkD,SAAS,CAAC;IACjD,MAAMG,UAAU,GAAGD,OAAO,CAACE,UAAU,CAACjC,GAAG,CAAE3D,CAAC,IAAK,IAAA6F,iBAAU,EAAC7F,CAAC,CAAC,CAAC;IAC/D,MAAM8F,QAAQ,GAAGJ,OAAO,CAACK,QAAQ,CAACpC,GAAG,CAAE3D,CAAC,IAAK,IAAA6F,iBAAU,EAAC7F,CAAC,CAAC,CAAC;IAC3D,MAAMgG,SAAS,GAAGN,OAAO,CAACO,SAAS,CAAC1C,MAAM,GAAGmC,OAAO,CAACO,SAAS,CAACtC,GAAG,CAAE3D,CAAC,IAAK,IAAA6F,iBAAU,EAAC7F,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA6F,iBAAU,EAAC,OAAO,CAAC,CAAC;IAChH,OAAO,IAAAK,mBAAY,EAAC,CAClB,GAAG,IAAAC,kBAAW,EAAC,WAAW,CAAC,YAAYT,OAAO,CAACU,EAAE,CAACC,QAAQ,CAAC,CAAC,YAAYX,OAAO,CAACY,KAAK,EAAE,EACvF,GAAG,IAAAH,kBAAW,EAAC,sBAAsB,CAAC,KAAKR,UAAU,CAAChE,IAAI,CAAC,IAAI,CAAC,EAAE,EAClE,GAAG,IAAAwE,kBAAW,EAAC,oBAAoB,CAAC,KAAKL,QAAQ,CAACnE,IAAI,CAAC,IAAI,CAAC,EAAE,EAC9D,GAAG,IAAAwE,kBAAW,EAAC,qBAAqB,CAAC,KAAKH,SAAS,CAACrE,IAAI,CAAC,IAAI,CAAC,EAAE,CACjE,CAAC;EACJ;AACF;AAAC4E,OAAA,CAAAvF,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -113,9 +113,19 @@ export declare class BuilderMain {
|
|
|
113
113
|
includeTag?: boolean;
|
|
114
114
|
includeSnap?: boolean;
|
|
115
115
|
ignoreIssues?: string;
|
|
116
|
+
/**
|
|
117
|
+
* the tag/snap pipeline the caller runs after this build. the "tasks" filter applies to it as well, so
|
|
118
|
+
* it's validated against both pipelines.
|
|
119
|
+
*/
|
|
120
|
+
deployPipeline?: 'tag' | 'snap';
|
|
116
121
|
}): Promise<TaskResultsList>;
|
|
117
122
|
runTagTasks(components: Component[], builderOptions: BuilderServiceOptions): Promise<TaskResultsList>;
|
|
118
123
|
runSnapTasks(components: Component[], builderOptions: BuilderServiceOptions): Promise<TaskResultsList>;
|
|
124
|
+
/**
|
|
125
|
+
* the "tasks" filter is validated here, once, rather than per pipeline: it may legitimately match only
|
|
126
|
+
* one of the pipelines that run (e.g. a build task when the snap pipeline runs as well).
|
|
127
|
+
*/
|
|
128
|
+
private throwIfNoTaskMatchesFilter;
|
|
119
129
|
listTasks(component: Component): {
|
|
120
130
|
id: ComponentID;
|
|
121
131
|
envId: string;
|
|
@@ -186,6 +186,13 @@ function _buildTask() {
|
|
|
186
186
|
};
|
|
187
187
|
return data;
|
|
188
188
|
}
|
|
189
|
+
function _buildPipelineOrder() {
|
|
190
|
+
const data = require("./build-pipeline-order");
|
|
191
|
+
_buildPipelineOrder = function () {
|
|
192
|
+
return data;
|
|
193
|
+
};
|
|
194
|
+
return data;
|
|
195
|
+
}
|
|
189
196
|
function _exceptions() {
|
|
190
197
|
const data = require("./exceptions");
|
|
191
198
|
_exceptions = function () {
|
|
@@ -319,13 +326,15 @@ class BuilderMain {
|
|
|
319
326
|
loose
|
|
320
327
|
} = options;
|
|
321
328
|
if (populateArtifactsFrom) isolateOptions.populateArtifactsFrom = populateArtifactsFrom;
|
|
329
|
+
const deployPipeline = isSnap ? 'snap' : 'tag';
|
|
322
330
|
const buildEnvsExecutionResults = await this.build(components, _objectSpread({
|
|
323
331
|
emptyRootDir: true
|
|
324
332
|
}, isolateOptions), _objectSpread(_objectSpread({}, builderOptions), {}, {
|
|
325
333
|
// even when build is skipped (in case of tag-from-scope), the pre-build/post-build and teambit.harmony/aspect tasks are needed
|
|
326
|
-
tasks: populateArtifactsFrom ? [_legacy().Extensions.aspect] :
|
|
334
|
+
tasks: populateArtifactsFrom ? [_legacy().Extensions.aspect] : builderOptions.tasks
|
|
327
335
|
}), {
|
|
328
|
-
ignoreIssues: '*'
|
|
336
|
+
ignoreIssues: '*',
|
|
337
|
+
deployPipeline: forceDeploy || !disableTagAndSnapPipelines ? deployPipeline : undefined
|
|
329
338
|
});
|
|
330
339
|
if (throwOnError && !forceDeploy) buildEnvsExecutionResults.throwErrorsIfExist(loose);
|
|
331
340
|
allTasksResults.push(...buildEnvsExecutionResults.tasksResults);
|
|
@@ -534,6 +543,13 @@ class BuilderMain {
|
|
|
534
543
|
}
|
|
535
544
|
async build(components, isolateOptions, builderOptions, extraOptions) {
|
|
536
545
|
await this.throwForVariousIssues(components, extraOptions?.ignoreIssues);
|
|
546
|
+
const tasks = builderOptions?.tasks;
|
|
547
|
+
if (tasks?.length) {
|
|
548
|
+
let deployPipeline = extraOptions?.deployPipeline;
|
|
549
|
+
if (extraOptions?.includeTag) deployPipeline = 'tag';
|
|
550
|
+
if (extraOptions?.includeSnap) deployPipeline = 'snap';
|
|
551
|
+
this.throwIfNoTaskMatchesFilter(components, tasks, deployPipeline);
|
|
552
|
+
}
|
|
537
553
|
const ids = components.map(c => c.id);
|
|
538
554
|
const capsulesBaseDir = this.buildService.getComponentsCapsulesBaseDir();
|
|
539
555
|
const baseIsolateOpts = {
|
|
@@ -569,6 +585,22 @@ class BuilderMain {
|
|
|
569
585
|
const buildResult = await envs.runOnce(this.snapService, builderOptions);
|
|
570
586
|
return buildResult;
|
|
571
587
|
}
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* the "tasks" filter is validated here, once, rather than per pipeline: it may legitimately match only
|
|
591
|
+
* one of the pipelines that run (e.g. a build task when the snap pipeline runs as well).
|
|
592
|
+
*/
|
|
593
|
+
throwIfNoTaskMatchesFilter(components, tasks, deployPipeline) {
|
|
594
|
+
const services = [this.buildService];
|
|
595
|
+
if (deployPipeline) services.push(deployPipeline === 'snap' ? this.snapService : this.tagService);
|
|
596
|
+
const envsById = new Map(components.map(component => this.envs.getEnv(component)).map(env => [env.id, env]));
|
|
597
|
+
const envs = [...envsById.values()];
|
|
598
|
+
const allTasks = services.flatMap(service => service.getCurrentPipeline(envs));
|
|
599
|
+
if (allTasks.length && !allTasks.some(task => (0, _buildPipelineOrder().isTaskInFilter)(task, tasks))) {
|
|
600
|
+
const availableTasks = [...new Set(allTasks.map(task => _buildTask().BuildTaskHelper.serializeId(task)))].sort();
|
|
601
|
+
throw new (_bitError().BitError)(`no tasks found matching the specified filter: "${tasks.join(', ')}". Available tasks: ${availableTasks.join(', ')}`);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
572
604
|
listTasks(component) {
|
|
573
605
|
const compEnv = this.envs.getEnv(component);
|
|
574
606
|
const buildTasks = this.buildService.getCurrentPipeTasks(compEnv);
|
|
@@ -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","_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","buildEnvsExecutionResults","build","emptyRootDir","tasks","Extensions","aspect","undefined","ignoreIssues","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","ids","c","capsulesBaseDir","getComponentsCapsulesBaseDir","baseIsolateOpts","baseDir","useHash","mergedIsolateOpts","network","isolateComponents","createEnvironment","graphCapsules","getAllComponents","builderServiceOptions","originalSeeders","consoleTitle","buildResult","runOnce","includeSnap","includeTag","listTasks","compEnv","getEnv","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","BitError","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 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 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] : undefined,\n },\n { ignoreIssues: '*' }\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?: { includeTag?: boolean; includeSnap?: boolean; ignoreIssues?: string }\n ): Promise<TaskResultsList> {\n await this.throwForVariousIssues(components, extraOptions?.ignoreIssues);\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 = {\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 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","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":[]}
|
|
@@ -107,7 +107,10 @@ export declare class BuilderService implements EnvService<BuildServiceResults, s
|
|
|
107
107
|
render(): string;
|
|
108
108
|
transform(env: Env, envContext: EnvContext): BuilderTransformationMap | undefined;
|
|
109
109
|
getDescriptor(): string;
|
|
110
|
-
|
|
110
|
+
/**
|
|
111
|
+
* the envs are calculated together, as in the actual run, so a task may depend on a task of another env.
|
|
112
|
+
*/
|
|
113
|
+
getCurrentPipeline(envs: EnvDefinition[]): BuildTask[];
|
|
111
114
|
getCurrentPipeTasks(env: EnvDefinition): string[];
|
|
112
115
|
}
|
|
113
116
|
export {};
|
package/dist/builder.service.js
CHANGED
|
@@ -195,14 +195,17 @@ class BuilderService {
|
|
|
195
195
|
getDescriptor() {
|
|
196
196
|
return 'run `bit build --list-tasks <component-id>` to see the tasks list for the pipelines: build, tag and snap';
|
|
197
197
|
}
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* the envs are calculated together, as in the actual run, so a task may depend on a task of another env.
|
|
201
|
+
*/
|
|
202
|
+
getCurrentPipeline(envs) {
|
|
203
|
+
return (0, _buildPipelineOrder().calculatePipelineOrder)(this.taskSlot, envs, this.pipeNameOnEnv).map(({
|
|
200
204
|
task
|
|
201
|
-
}) =>
|
|
202
|
-
return tasksQueue;
|
|
205
|
+
}) => task);
|
|
203
206
|
}
|
|
204
207
|
getCurrentPipeTasks(env) {
|
|
205
|
-
return this.
|
|
208
|
+
return this.getCurrentPipeline([env]).map(task => _buildTask().BuildTaskHelper.serializeId(task));
|
|
206
209
|
}
|
|
207
210
|
}
|
|
208
211
|
exports.BuilderService = BuilderService;
|
|
@@ -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","getTasksNamesByPipeFunc","pipeFuncName","task","BuildTaskHelper","serializeId","getCurrentPipeTasks","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 private getTasksNamesByPipeFunc(env: EnvDefinition, pipeFuncName: PipeFunctionNames): string[] {\n const tasksQueue = calculatePipelineOrder(this.taskSlot, [env], pipeFuncName).map(({ task }) =>\n BuildTaskHelper.serializeId(task)\n );\n return tasksQueue;\n }\n\n getCurrentPipeTasks(env: EnvDefinition) {\n return this.getTasksNamesByPipeFunc(env, this.pipeNameOnEnv);\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","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":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AASA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAK,YAAA;EAAA,MAAAL,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAI,WAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAM,WAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,UAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAO,WAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,UAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,oBAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,mBAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAgE,SAAAG,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AA+BhE,MAAMgB,SAAS,GAAG;EAChBC,YAAY,EAAE,OAAO;EACrBC,UAAU,EAAE,KAAK;EACjBC,WAAW,EAAE;AACf,CAAC;AAOM,MAAMC,cAAc,CAAoD;EAG7EC,WAAWA;EACT;AACJ;AACA;EACYC,QAAsB;EAE9B;AACJ;AACA;EACYC,MAAc;EAEtB;AACJ;AACA;EACYC,QAAkB;EAE1B;AACJ;AACA;EACYC,aAAgC;EAExC;AACJ;AACA;EACYC,eAAyB,EACzBC,eAAgC,EAChCC,KAAgB,EAChBC,WAA4B,EACpC;IAAA,KAxBQP,QAAsB,GAAtBA,QAAsB;IAAA,KAKtBC,MAAc,GAAdA,MAAc;IAAA,KAKdC,QAAkB,GAAlBA,QAAkB;IAAA,KAKlBC,aAAgC,GAAhCA,aAAgC;IAAA,KAKhCC,eAAyB,GAAzBA,eAAyB;IAAA,KACzBC,eAAgC,GAAhCA,eAAgC;IAAA,KAChCC,KAAgB,GAAhBA,KAAgB;IAAA,KAChBC,WAA4B,GAA5BA,WAA4B;IAAA/B,eAAA,eA7B/B,SAAS;EA8Bb;;EAEH;AACF;AACA;EACE,MAAMgC,OAAOA,CAACC,oBAAwC,EAAEC,OAA8B,EAA4B;IAChH,MAAMC,IAAI,GAAGF,oBAAoB,CAACG,GAAG,CAAEC,gBAAgB,IAAKA,gBAAgB,CAACC,aAAa,CAAC;IAC3F,MAAMC,UAAU,GAAG,IAAAC,4CAAsB,EACvC,IAAI,CAACd,QAAQ,EACbS,IAAI,EACJ,IAAI,CAACR,aAAa,EAClBO,OAAO,CAACO,KAAK,EACbP,OAAO,CAACQ,SAAS,EACjBR,OAAO,CAACS,SACV,CAAC;IACDJ,UAAU,CAACK,QAAQ,CAAC,CAAC;IACrB,IAAI,CAACnB,MAAM,CAACoB,IAAI,CAAC,+CAA+CN,UAAU,CAACO,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxF,IAAI,CAACrB,MAAM,CAACsB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B,MAAMC,KAAK,GAAG,WAAW,IAAI,CAACpB,eAAe,mBAAmBO,IAAI,CAACc,MAAM,0BAA0BV,UAAU,CAACU,MAAM,QAAQ;IAC9H,MAAMC,iBAAiB,GAAG,IAAI,CAACzB,MAAM,CAAC0B,uBAAuB,CAACH,KAAK,EAAEI,SAAS,EAAE,OAAO,CAAC;IACxF,MAAMC,gBAAkC,GAAG,CAAC,CAAC;IAC7C,MAAMC,eAAe,GAAG,IAAI,CAACC,4BAA4B,CAAC,CAAC;IAE3D,MAAMC,OAAO,GAAGtB,OAAO,CAACoB,eAAe,IAAIA,eAAe;IAC1D,MAAMG,OAAO,GAAG,CAACD,OAAO;IACxB,MAAME,cAAc,GAAG;MACrBF,OAAO;MACPC,OAAO;MACPE,eAAe,EAAE,IAAI;MACrBC,WAAW,EAAE1B,OAAO,CAAC0B,WAAW;MAChC;MACA;MACA;MACAC,eAAe,EAAE3B,OAAO,CAAC2B;IAC3B,CAAC;IAED,MAAM,IAAAC,qBAAU,EAAC7B,oBAAoB,EAAE,MAAOI,gBAAgB,IAAK;MACjE,MAAM0B,YAAY,GAAG1B,gBAAgB,CAAC2B,UAAU,CAAC5B,GAAG,CAAE6B,SAAS,IAAKA,SAAS,CAACC,EAAE,CAAC;MACjF,MAAM;QAAEL;MAAgB,CAAC,GAAG3B,OAAO;MACnC,MAAMiC,wBAAwB,GAAGJ,YAAY,CAACK,MAAM,CAAEC,MAAM,IAC1DR,eAAe,GAAGA,eAAe,CAACS,IAAI,CAAEC,MAAM,IAAKF,MAAM,CAACG,OAAO,CAACD,MAAM,CAAC,CAAC,GAAG,IAC/E,CAAC;MACD,MAAME,cAAc,GAAG,MAAM,IAAI,CAACjD,QAAQ,CAACkD,iBAAiB,CAACX,YAAY,EAAEL,cAAc,CAAC;MAC1Fe,cAAc,CAACE,gBAAgB,GAAGR,wBAAwB;MAC1D,MAAMS,GAAG,GAAG,YAAYC,gBAAK,CAACC,IAAI,CAACX,wBAAwB,CAAClB,MAAM,CAACH,QAAQ,CAAC,CAAC,CAAC,sBAAsB+B,gBAAK,CAACC,IAAI,CAACzC,gBAAgB,CAAC6B,EAAE,CAAC,EAAE;MACrI,MAAMa,YAAY,GAAG,iCAAiCZ,wBAAwB,CAAClB,MAAM,wBAAwBwB,cAAc,CAACO,eAAe,CAAC/B,MAAM,uCAAuCwB,cAAc,CAACQ,aAAa,CAAChC,MAAM,EAAE;MAC9N,IAAI,CAACxB,MAAM,CAACsB,OAAO,CAAC,GAAG6B,GAAG,KAAKC,gBAAK,CAACK,GAAG,CAACH,YAAY,CAAC,EAAE,CAAC;MACzD,MAAMI,YAAY,GAAG/E,MAAM,CAACgF,MAAM,CAAC/C,gBAAgB,EAAE;QACnDoC,cAAc;QACdY,oBAAoB,EAAE,EAAE;QACxBC,QAAQ,EAAE,IAAI,CAAC1D,eAAe;QAC9B2D,GAAG,EAAErD,OAAO,CAACqD,GAAG;QAChBC,MAAM,EAAE,IAAI,CAAC1D,KAAK,CAAC2D,WAAW,CAACC,gBAAgB,CAAC;MAClD,CAAC,CAAC;MACFrC,gBAAgB,CAAChB,gBAAgB,CAAC6B,EAAE,CAAC,GAAGiB,YAAY;IACtD,CAAC,CAAC;IACF,MAAMQ,oBAAoB,GAAGxD,IAAI,CAACC,GAAG,CAAEwD,GAAG,IAAKA,GAAG,CAAC1B,EAAE,CAAC2B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,MAAMC,SAAS,GAAG,KAAIC,sBAAS,EAC7BxD,UAAU,EACVc,gBAAgB,EAChB,IAAI,CAAC5B,MAAM,EACX,IAAI,CAACI,eAAe,EACpBK,OAAO,CAACmD,oBAAoB,EAC5B;MACEW,qBAAqB,EAAE9D,OAAO,CAAC8D,qBAAqB;MACpDC,mBAAmB,EAAE9D,IAAI,CAACc,MAAM,GAAG,CAAC;MACpCiD,sBAAsB,EAAEP,oBAAoB,CAAC1C,MAAM,GAAG,IAAAkD,cAAI,EAACR,oBAAoB,CAAC,CAAC1C,MAAM;MACvFmD,WAAW,EAAE,IAAI,CAACC,mBAAmB,CAAC;IACxC,CACF,CAAC;IACD,MAAMC,YAAY,GAAG,MAAMR,SAAS,CAACS,OAAO,CAAC,CAAC;IAC9CrD,iBAAiB,CAACsD,GAAG,CAACF,YAAY,CAACG,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IAErE,OAAOH,YAAY;EACrB;EAEA/C,4BAA4BA,CAAA,EAAuB;IACjD,OAAO,IAAI,CAACxB,WAAW,CAAC2E,SAAS,CAACC,gDAAsC,CAAC;EAC3E;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEN,mBAAmBA,CAAA,EAAW;IAC5B,MAAMO,GAAG,GAAGC,OAAO,CAACjB,GAAG,CAACkB,qBAAqB,IAAI,IAAI,CAAC/E,WAAW,CAAC2E,SAAS,CAAC,mBAAmB,CAAC;IAChG,MAAMK,MAAM,GAAGH,GAAG,GAAGI,QAAQ,CAACJ,GAAG,EAAE,EAAE,CAAC,GAAGK,GAAG;IAC5C,OAAOhG,MAAM,CAACiG,KAAK,CAACH,MAAM,CAAC,IAAIA,MAAM,GAAG,CAAC,GAAG,CAAC,GAAGA,MAAM;EACxD;EAEAI,MAAMA,CAAA,EAAG;IACP,MAAMC,UAAU,GAAG,IAAI,CAACC,aAAa,CAAC,CAAC;IACvC,OAAOD,UAAU;EACnB;EAEAE,SAASA,CAAC1B,GAAQ,EAAE2B,UAAsB,EAAwC;IAChF,IAAI,CAAC3B,GAAG,EAAE4B,KAAK,EAAE,OAAOpE,SAAS;IACjC,OAAO;MACLjC,YAAY,EAAEA,CAAA,KAAM;QAClB;QACA,MAAMsG,QAAQ,GAAG7B,GAAG,CAAC4B,KAAK,GAAG,CAAC;QAC9B,IAAI,CAACC,QAAQ,IAAI,CAACA,QAAQ,CAACC,OAAO,EAAE,OAAO,EAAE;QAC7C,OAAOD,QAAQ,EAAEC,OAAO,CAACH,UAAU,CAAC;MACtC,CAAC;MACDnG,UAAU,EAAEA,CAAA,KAAM;QAChB;QACA,MAAMqG,QAAQ,GAAG7B,GAAG,CAAC+B,GAAG,GAAG,CAAC;QAC5B,IAAI,CAACF,QAAQ,IAAI,CAACA,QAAQ,CAACC,OAAO,EAAE,OAAO,EAAE;QAC7C,OAAOD,QAAQ,EAAEC,OAAO,CAACH,UAAU,CAAC;MACtC,CAAC;MACDlG,WAAW,EAAEA,CAAA,KAAM;QACjB,MAAMoG,QAAQ,GAAG7B,GAAG,CAACgC,IAAI,GAAG,CAAC;QAC7B,IAAI,CAACH,QAAQ,IAAI,CAACA,QAAQ,CAACC,OAAO,EAAE,OAAO,EAAE;QAC7C,OAAOD,QAAQ,EAAEC,OAAO,CAACH,UAAU,CAAC;MACtC;IACF,CAAC;EACH;EAEAF,aAAaA,CAAA,EAAG;IACd,OAAO,0GAA0G;EACnH;;EAEA;AACF;AACA;EACEQ,kBAAkBA,CAAC1F,IAAqB,EAAe;IACrD,OAAO,IAAAK,4CAAsB,EAAC,IAAI,CAACd,QAAQ,EAAES,IAAI,EAAE,IAAI,CAACR,aAAa,CAAC,CAACS,GAAG,CAAC,CAAC;MAAE0F;IAAK,CAAC,KAAKA,IAAI,CAAC;EAChG;EAEAC,mBAAmBA,CAACnC,GAAkB,EAAY;IAChD,OAAO,IAAI,CAACiC,kBAAkB,CAAC,CAACjC,GAAG,CAAC,CAAC,CAACxD,GAAG,CAAE0F,IAAI,IAAKE,4BAAe,CAACC,WAAW,CAACH,IAAI,CAAC,CAAC;EACxF;AACF;AAACI,OAAA,CAAA5G,cAAA,GAAAA,cAAA","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.1228/dist/builder.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.1228/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.1228",
|
|
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.1228"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "4.1.2",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"fs-extra": "10.0.0",
|
|
22
22
|
"minimatch": "3.0.5",
|
|
23
23
|
"globby": "11.0.1",
|
|
24
|
-
"@teambit/component": "1.0.
|
|
25
|
-
"@teambit/envs": "1.0.
|
|
24
|
+
"@teambit/component": "1.0.1223",
|
|
25
|
+
"@teambit/envs": "1.0.1223",
|
|
26
26
|
"@teambit/logger": "0.0.1499",
|
|
27
27
|
"@teambit/toolbox.string.capitalize": "0.0.518",
|
|
28
28
|
"@teambit/graph.cleargraph": "0.0.11",
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"@teambit/cli": "0.0.1414",
|
|
33
33
|
"@teambit/component-issues": "0.0.192",
|
|
34
34
|
"@teambit/harmony": "0.4.12",
|
|
35
|
-
"@teambit/aspect-loader": "1.0.
|
|
35
|
+
"@teambit/aspect-loader": "1.0.1223",
|
|
36
36
|
"@teambit/bit-error": "0.0.404",
|
|
37
37
|
"@teambit/bit.get-bit-version": "0.0.31",
|
|
38
38
|
"@teambit/config-store": "0.0.295",
|
|
39
39
|
"@teambit/graphql": "1.0.1206",
|
|
40
40
|
"@teambit/harmony.modules.runtimes": "0.0.4",
|
|
41
|
-
"@teambit/issues": "1.0.
|
|
41
|
+
"@teambit/issues": "1.0.1223",
|
|
42
42
|
"@teambit/legacy.consumer-component": "0.0.184",
|
|
43
43
|
"@teambit/legacy.extension-data": "0.0.185",
|
|
44
44
|
"@teambit/toolbox.array.duplications-finder": "0.0.19",
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
"@teambit/component-id": "1.2.5",
|
|
47
47
|
"@teambit/legacy.utils": "0.0.56",
|
|
48
48
|
"@teambit/legacy.scope": "0.0.183",
|
|
49
|
-
"@teambit/isolator": "1.0.
|
|
50
|
-
"@teambit/workspace": "1.0.
|
|
51
|
-
"@teambit/generator": "1.0.
|
|
52
|
-
"@teambit/scope": "1.0.
|
|
53
|
-
"@teambit/ui": "1.0.
|
|
49
|
+
"@teambit/isolator": "1.0.1228",
|
|
50
|
+
"@teambit/workspace": "1.0.1228",
|
|
51
|
+
"@teambit/generator": "1.0.1229",
|
|
52
|
+
"@teambit/scope": "1.0.1228",
|
|
53
|
+
"@teambit/ui": "1.0.1228"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/pretty-time": "^1.1.5",
|