@teambit/builder 1.0.1071 → 1.0.1073

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.
@@ -70,6 +70,17 @@ export declare class BuildPipe {
70
70
  */
71
71
  execute(): Promise<TaskResultsList>;
72
72
  private executePreBuild;
73
+ /**
74
+ * in-process build tasks may hijack the Module._extensions loaders and leave them hijacked after
75
+ * the task ends. e.g. the mocha tester calls @babel/register, whose hook claims all ".js" files
76
+ * (including node_modules) and compiles files babel declines to transform as CJS scripts —
77
+ * breaking require() of ESM-only packages for every subsequent task in this process.
78
+ * snapshotting before each task and restoring after confines such hooks to the task that
79
+ * installed them. skipped in parallel mode, where another env's still-running task may rely on a
80
+ * hook it installed.
81
+ */
82
+ private snapshotRequireExtensions;
83
+ private restoreRequireExtensions;
73
84
  private executeTask;
74
85
  private getPrettyAspectName;
75
86
  private getPrettyEnvName;
@@ -11,6 +11,13 @@ function _component() {
11
11
  };
12
12
  return data;
13
13
  }
14
+ function _module() {
15
+ const data = _interopRequireDefault(require("module"));
16
+ _module = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
14
21
  function _pMapSeries() {
15
22
  const data = _interopRequireDefault(require("p-map-series"));
16
23
  _pMapSeries = function () {
@@ -61,6 +68,8 @@ function _tasksParallelScheduler() {
61
68
  return data;
62
69
  }
63
70
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
71
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
72
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
64
73
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
65
74
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
66
75
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -121,6 +130,30 @@ class BuildPipe {
121
130
  });
122
131
  longProcessLogger.end();
123
132
  }
133
+
134
+ /**
135
+ * in-process build tasks may hijack the Module._extensions loaders and leave them hijacked after
136
+ * the task ends. e.g. the mocha tester calls @babel/register, whose hook claims all ".js" files
137
+ * (including node_modules) and compiles files babel declines to transform as CJS scripts —
138
+ * breaking require() of ESM-only packages for every subsequent task in this process.
139
+ * snapshotting before each task and restoring after confines such hooks to the task that
140
+ * installed them. skipped in parallel mode, where another env's still-running task may rely on a
141
+ * hook it installed.
142
+ */
143
+ snapshotRequireExtensions() {
144
+ if ((this.options?.concurrency ?? 1) > 1) return undefined;
145
+ return _objectSpread({}, _module().default._extensions);
146
+ }
147
+ restoreRequireExtensions(snapshot) {
148
+ if (!snapshot) return;
149
+ const extensions = _module().default._extensions;
150
+ for (const key of Object.keys(extensions)) {
151
+ if (!(key in snapshot)) delete extensions[key];
152
+ }
153
+ for (const [key, loader] of Object.entries(snapshot)) {
154
+ if (extensions[key] !== loader) extensions[key] = loader;
155
+ }
156
+ }
124
157
  async executeTask(task, env) {
125
158
  const taskId = _buildTask().BuildTaskHelper.serializeId(task);
126
159
  const envName = this.options?.showEnvNameInOutput ? `(${this.getPrettyEnvName(env.id)}) ` : '';
@@ -152,11 +185,14 @@ class BuildPipe {
152
185
  const taskStartTime = Date.now();
153
186
  let buildTaskResult;
154
187
  this.logger.debug(`${taskLogPrefix} memory usage: ${Math.round(process.memoryUsage().heapUsed / 1024 / 1024 / 1024 * 100) / 100} GB`);
188
+ const requireExtensionsSnapshot = this.snapshotRequireExtensions();
155
189
  try {
156
190
  buildTaskResult = await task.execute(buildContext);
157
191
  } catch (err) {
158
192
  this.logger.consoleFailure(`env: ${env.id}, task "${taskId}" threw an error`);
159
193
  throw err;
194
+ } finally {
195
+ this.restoreRequireExtensions(requireExtensionsSnapshot);
160
196
  }
161
197
  const endTime = Date.now();
162
198
  const compsWithErrors = buildTaskResult.componentsResults.filter(c => c.errors?.length);
@@ -1 +1 @@
1
- {"version":3,"names":["_component","data","require","_pMapSeries","_interopRequireDefault","_prettyTime","_toolboxString","_chalk","_buildTask","_taskResultsList","_tasksParallelScheduler","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BuildPipe","constructor","tasksQueue","envsBuildContext","logger","artifactFactory","previousTaskResults","options","allTasksResults","taskResults","execute","executePreBuild","longProcessLogger","createLongProcessLogger","length","concurrency","executeTasksByLocationAndEnv","task","env","executeTask","mapSeries","end","capsuleRootDir","values","capsuleNetwork","capsulesRootDir","tasksResultsList","TaskResultsList","executePostBuild","setStatusLine","preBuild","getBuildContext","id","taskId","BuildTaskHelper","serializeId","envName","showEnvNameInOutput","getPrettyEnvName","buildContext","hasOriginalSeeders","Boolean","_originalSeeders","dependencyStr","taskLogPrefix","getPrettyAspectName","aspectId","name","logProgress","description","updateFailedDependencyTask","shouldSkipTask","components","seedersCapsules","getAllComponents","componentsResults","map","component","status","artifacts","undefined","startTime","Date","now","endTime","push","startTask","process","hrtime","taskStartTime","buildTaskResult","debug","Math","round","memoryUsage","heapUsed","err","consoleFailure","compsWithErrors","filter","c","errors","duration","prettyTime","chalk","red","getProgress","failedTasks","color","green","dim","consoleSuccess","defs","generate","resolvedId","ComponentID","fromString","tokens","split","token","capitalize","join","envId","ver","showEnvVersionInOutput","version","fullName","tasksResults","postBuild","failedDependencyTask","dependencies","forEach","dependency","deserializeIdAllowEmptyName","find","failedTask","exitOnFirstFailedTask","failedTaskId","consoleWarning","Error","previousTasksResults","exports"],"sources":["build-pipe.ts"],"sourcesContent":["import type { EnvDefinition } from '@teambit/envs';\nimport type { ComponentMap } from '@teambit/component';\nimport { ComponentID } from '@teambit/component';\nimport type { Logger, LongProcessLogger } from '@teambit/logger';\nimport mapSeries from 'p-map-series';\nimport prettyTime from 'pretty-time';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport chalk from 'chalk';\nimport type { ArtifactFactory, ArtifactList, FsArtifact } from './artifact';\nimport type { BuildContext, BuildTask, BuiltTaskResult } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport type { ComponentResult } from './types';\nimport type { TasksQueue } from './tasks-queue';\nimport type { EnvsBuildContext } from './builder.service';\nimport { TaskResultsList } from './task-results-list';\nimport { executeTasksByLocationAndEnv } from './tasks-parallel-scheduler';\n\nexport type TaskResults = {\n /**\n * task itself. useful for getting its id/description later on.\n */\n task: BuildTask;\n\n /**\n * environment were the task was running\n */\n env: EnvDefinition;\n\n /**\n * component build results.\n */\n componentsResults: ComponentResult[];\n\n /**\n * artifacts generated by the build pipeline.\n * in case the task finished with errors, this prop is undefined.\n */\n artifacts: ComponentMap<ArtifactList<FsArtifact>> | undefined;\n\n /**\n * timestamp of start initiation.\n */\n startTime: number;\n\n /**\n * timestamp of task completion.\n */\n endTime: number;\n};\n\ntype PipeOptions = {\n exitOnFirstFailedTask?: boolean; // by default it skips only when a dependent failed.\n showEnvNameInOutput?: boolean;\n showEnvVersionInOutput?: boolean; // in case it shows the env-name, whether should show also the version\n /**\n * number of environments whose task-chains may run concurrently. 1 (default) keeps the original\n * fully-serial behavior. when > 1, environments are built in parallel (see\n * `executeTasksByLocationAndEnv`).\n */\n concurrency?: number;\n};\n\nexport class BuildPipe {\n private failedTasks: BuildTask[] = [];\n private failedDependencyTask: BuildTask | undefined;\n private longProcessLogger: LongProcessLogger;\n private taskResults: TaskResults[] = [];\n constructor(\n /**\n * array of services to apply on the components.\n */\n readonly tasksQueue: TasksQueue,\n readonly envsBuildContext: EnvsBuildContext,\n readonly logger: Logger,\n readonly artifactFactory: ArtifactFactory,\n private previousTaskResults?: TaskResults[],\n private options?: PipeOptions\n ) {}\n\n get allTasksResults(): TaskResults[] {\n return [...(this.previousTaskResults || []), ...(this.taskResults || [])];\n }\n\n /**\n * execute a pipeline of build tasks.\n */\n async execute(): Promise<TaskResultsList> {\n await this.executePreBuild();\n this.longProcessLogger = this.logger.createLongProcessLogger('running tasks', this.tasksQueue.length);\n const concurrency = this.options?.concurrency ?? 1;\n if (concurrency > 1) {\n await executeTasksByLocationAndEnv(this.tasksQueue, concurrency, ({ task, env }) => this.executeTask(task, env));\n } else {\n await mapSeries(this.tasksQueue, async ({ task, env }) => this.executeTask(task, env));\n }\n this.longProcessLogger.end();\n const capsuleRootDir = Object.values(this.envsBuildContext)[0]?.capsuleNetwork.capsulesRootDir;\n const tasksResultsList = new TaskResultsList(this.tasksQueue, this.taskResults, capsuleRootDir, this.logger);\n await this.executePostBuild(tasksResultsList);\n\n return tasksResultsList;\n }\n\n private async executePreBuild() {\n this.logger.setStatusLine('executing pre-build for all tasks');\n const longProcessLogger = this.logger.createLongProcessLogger('running pre-build for all tasks');\n await mapSeries(this.tasksQueue, async ({ task, env }) => {\n if (!task.preBuild) return;\n await task.preBuild(this.getBuildContext(env.id));\n });\n longProcessLogger.end();\n }\n\n private async executeTask(task: BuildTask, env: EnvDefinition): Promise<void> {\n const taskId = BuildTaskHelper.serializeId(task);\n const envName = this.options?.showEnvNameInOutput ? `(${this.getPrettyEnvName(env.id)}) ` : '';\n const buildContext = this.getBuildContext(env.id);\n const hasOriginalSeeders = Boolean(buildContext.capsuleNetwork._originalSeeders?.length);\n const dependencyStr = hasOriginalSeeders ? '' : `[dependency] `;\n const taskLogPrefix = `${dependencyStr}${envName}[${this.getPrettyAspectName(task.aspectId)}: ${task.name}]`;\n this.longProcessLogger.logProgress(`${taskLogPrefix}${task.description ? ` ${task.description}` : ''}`, false);\n this.updateFailedDependencyTask(task);\n if (this.shouldSkipTask(taskId, env.id)) {\n // Save skipped tasks with pending status so they appear in the UI\n const components = buildContext.capsuleNetwork.seedersCapsules.getAllComponents();\n const componentsResults: ComponentResult[] = components.map((component) => ({\n component,\n status: 'pending',\n }));\n const taskResults: TaskResults = {\n task,\n env,\n componentsResults,\n artifacts: undefined,\n startTime: Date.now(),\n endTime: Date.now(),\n };\n this.taskResults.push(taskResults);\n return;\n }\n const startTask = process.hrtime();\n const taskStartTime = Date.now();\n let buildTaskResult: BuiltTaskResult;\n this.logger.debug(\n `${taskLogPrefix} memory usage: ${Math.round((process.memoryUsage().heapUsed / 1024 / 1024 / 1024) * 100) / 100} GB`\n );\n try {\n buildTaskResult = await task.execute(buildContext);\n } catch (err) {\n this.logger.consoleFailure(`env: ${env.id}, task \"${taskId}\" threw an error`);\n throw err;\n }\n\n const endTime = Date.now();\n const compsWithErrors = buildTaskResult.componentsResults.filter((c) => c.errors?.length);\n let artifacts: ComponentMap<ArtifactList<FsArtifact>> | undefined;\n const duration = prettyTime(process.hrtime(startTask));\n if (compsWithErrors.length) {\n this.logger.consoleFailure(`env: ${env.id}, task \"${taskId}\" has failed`);\n this.logger.consoleFailure(\n chalk.red(`${this.longProcessLogger.getProgress()} env: ${env.id}, task \"${taskId}\" has failed in ${duration}`)\n );\n this.failedTasks.push(task);\n } else {\n const color = hasOriginalSeeders ? chalk.green : chalk.green.dim;\n this.logger.consoleSuccess(\n color(`${this.longProcessLogger.getProgress()} ${taskLogPrefix} Completed successfully in ${duration}`)\n );\n const defs = buildTaskResult.artifacts || [];\n artifacts = this.artifactFactory.generate(buildContext, defs, task);\n }\n\n // For tasks that run on a single component (e.g., test/lint in single-component builds),\n // add the task-level timing to the component result if it doesn't already have timing\n const componentsResults = buildTaskResult.componentsResults;\n if (componentsResults.length === 1 && !componentsResults[0].startTime && !componentsResults[0].endTime) {\n componentsResults[0].startTime = taskStartTime;\n componentsResults[0].endTime = endTime;\n }\n\n const taskResults: TaskResults = {\n task,\n env,\n componentsResults,\n artifacts,\n startTime: taskStartTime,\n endTime,\n };\n\n this.taskResults.push(taskResults);\n }\n\n private getPrettyAspectName(aspectId: string): string {\n const resolvedId = ComponentID.fromString(aspectId);\n const tokens = resolvedId.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n private getPrettyEnvName(envId: string) {\n const resolvedId = ComponentID.fromString(envId);\n const ver = this.options?.showEnvVersionInOutput ? `@${resolvedId.version}` : '';\n return `${resolvedId.fullName}${ver}`;\n }\n\n private async executePostBuild(tasksResults: TaskResultsList) {\n const longProcessLogger = this.logger.createLongProcessLogger('running post-build for all tasks');\n this.logger.setStatusLine('executing post-build for all tasks');\n await mapSeries(this.tasksQueue, async ({ task, env }) => {\n if (!task.postBuild) return;\n await task.postBuild(this.getBuildContext(env.id), tasksResults);\n });\n longProcessLogger.end();\n }\n\n private updateFailedDependencyTask(task: BuildTask) {\n if (!this.failedDependencyTask && this.failedTasks.length && task.dependencies) {\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n this.failedDependencyTask = this.failedTasks.find((failedTask) => {\n if (name && name !== failedTask.name) return false;\n return aspectId === failedTask.aspectId;\n });\n });\n }\n }\n\n private shouldSkipTask(taskId: string, envId: string): boolean {\n if (this.options?.exitOnFirstFailedTask && this.failedTasks.length) {\n const failedTaskId = BuildTaskHelper.serializeId(this.failedTasks[0]);\n this.logger.consoleWarning(`env: ${envId}, task \"${taskId}\" has skipped due to \"${failedTaskId}\" failure`);\n return true;\n }\n if (!this.failedDependencyTask) return false;\n const failedTaskId = BuildTaskHelper.serializeId(this.failedDependencyTask);\n this.logger.consoleWarning(`env: ${envId}, task \"${taskId}\" has skipped due to \"${failedTaskId}\" failure`);\n return true;\n }\n\n private getBuildContext(envId: string): BuildContext {\n const buildContext = this.envsBuildContext[envId];\n if (!buildContext) throw new Error(`unable to find buildContext for ${envId}`);\n buildContext.previousTasksResults = this.allTasksResults;\n return buildContext;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_component","data","require","_module","_interopRequireDefault","_pMapSeries","_prettyTime","_toolboxString","_chalk","_buildTask","_taskResultsList","_tasksParallelScheduler","e","__esModule","default","ownKeys","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","BuildPipe","constructor","tasksQueue","envsBuildContext","logger","artifactFactory","previousTaskResults","options","allTasksResults","taskResults","execute","executePreBuild","longProcessLogger","createLongProcessLogger","concurrency","executeTasksByLocationAndEnv","task","env","executeTask","mapSeries","end","capsuleRootDir","values","capsuleNetwork","capsulesRootDir","tasksResultsList","TaskResultsList","executePostBuild","setStatusLine","preBuild","getBuildContext","id","snapshotRequireExtensions","undefined","Module","_extensions","restoreRequireExtensions","snapshot","extensions","key","loader","entries","taskId","BuildTaskHelper","serializeId","envName","showEnvNameInOutput","getPrettyEnvName","buildContext","hasOriginalSeeders","Boolean","_originalSeeders","dependencyStr","taskLogPrefix","getPrettyAspectName","aspectId","name","logProgress","description","updateFailedDependencyTask","shouldSkipTask","components","seedersCapsules","getAllComponents","componentsResults","map","component","status","artifacts","startTime","Date","now","endTime","startTask","process","hrtime","taskStartTime","buildTaskResult","debug","Math","round","memoryUsage","heapUsed","requireExtensionsSnapshot","err","consoleFailure","compsWithErrors","c","errors","duration","prettyTime","chalk","red","getProgress","failedTasks","color","green","dim","consoleSuccess","defs","generate","resolvedId","ComponentID","fromString","tokens","split","token","capitalize","join","envId","ver","showEnvVersionInOutput","version","fullName","tasksResults","postBuild","failedDependencyTask","dependencies","dependency","deserializeIdAllowEmptyName","find","failedTask","exitOnFirstFailedTask","failedTaskId","consoleWarning","Error","previousTasksResults","exports"],"sources":["build-pipe.ts"],"sourcesContent":["import type { EnvDefinition } from '@teambit/envs';\nimport type { ComponentMap } from '@teambit/component';\nimport { ComponentID } from '@teambit/component';\nimport type { Logger, LongProcessLogger } from '@teambit/logger';\nimport Module from 'module';\nimport mapSeries from 'p-map-series';\nimport prettyTime from 'pretty-time';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport chalk from 'chalk';\nimport type { ArtifactFactory, ArtifactList, FsArtifact } from './artifact';\nimport type { BuildContext, BuildTask, BuiltTaskResult } from './build-task';\nimport { BuildTaskHelper } from './build-task';\nimport type { ComponentResult } from './types';\nimport type { TasksQueue } from './tasks-queue';\nimport type { EnvsBuildContext } from './builder.service';\nimport { TaskResultsList } from './task-results-list';\nimport { executeTasksByLocationAndEnv } from './tasks-parallel-scheduler';\n\nexport type TaskResults = {\n /**\n * task itself. useful for getting its id/description later on.\n */\n task: BuildTask;\n\n /**\n * environment were the task was running\n */\n env: EnvDefinition;\n\n /**\n * component build results.\n */\n componentsResults: ComponentResult[];\n\n /**\n * artifacts generated by the build pipeline.\n * in case the task finished with errors, this prop is undefined.\n */\n artifacts: ComponentMap<ArtifactList<FsArtifact>> | undefined;\n\n /**\n * timestamp of start initiation.\n */\n startTime: number;\n\n /**\n * timestamp of task completion.\n */\n endTime: number;\n};\n\ntype PipeOptions = {\n exitOnFirstFailedTask?: boolean; // by default it skips only when a dependent failed.\n showEnvNameInOutput?: boolean;\n showEnvVersionInOutput?: boolean; // in case it shows the env-name, whether should show also the version\n /**\n * number of environments whose task-chains may run concurrently. 1 (default) keeps the original\n * fully-serial behavior. when > 1, environments are built in parallel (see\n * `executeTasksByLocationAndEnv`).\n */\n concurrency?: number;\n};\n\nexport class BuildPipe {\n private failedTasks: BuildTask[] = [];\n private failedDependencyTask: BuildTask | undefined;\n private longProcessLogger: LongProcessLogger;\n private taskResults: TaskResults[] = [];\n constructor(\n /**\n * array of services to apply on the components.\n */\n readonly tasksQueue: TasksQueue,\n readonly envsBuildContext: EnvsBuildContext,\n readonly logger: Logger,\n readonly artifactFactory: ArtifactFactory,\n private previousTaskResults?: TaskResults[],\n private options?: PipeOptions\n ) {}\n\n get allTasksResults(): TaskResults[] {\n return [...(this.previousTaskResults || []), ...(this.taskResults || [])];\n }\n\n /**\n * execute a pipeline of build tasks.\n */\n async execute(): Promise<TaskResultsList> {\n await this.executePreBuild();\n this.longProcessLogger = this.logger.createLongProcessLogger('running tasks', this.tasksQueue.length);\n const concurrency = this.options?.concurrency ?? 1;\n if (concurrency > 1) {\n await executeTasksByLocationAndEnv(this.tasksQueue, concurrency, ({ task, env }) => this.executeTask(task, env));\n } else {\n await mapSeries(this.tasksQueue, async ({ task, env }) => this.executeTask(task, env));\n }\n this.longProcessLogger.end();\n const capsuleRootDir = Object.values(this.envsBuildContext)[0]?.capsuleNetwork.capsulesRootDir;\n const tasksResultsList = new TaskResultsList(this.tasksQueue, this.taskResults, capsuleRootDir, this.logger);\n await this.executePostBuild(tasksResultsList);\n\n return tasksResultsList;\n }\n\n private async executePreBuild() {\n this.logger.setStatusLine('executing pre-build for all tasks');\n const longProcessLogger = this.logger.createLongProcessLogger('running pre-build for all tasks');\n await mapSeries(this.tasksQueue, async ({ task, env }) => {\n if (!task.preBuild) return;\n await task.preBuild(this.getBuildContext(env.id));\n });\n longProcessLogger.end();\n }\n\n /**\n * in-process build tasks may hijack the Module._extensions loaders and leave them hijacked after\n * the task ends. e.g. the mocha tester calls @babel/register, whose hook claims all \".js\" files\n * (including node_modules) and compiles files babel declines to transform as CJS scripts —\n * breaking require() of ESM-only packages for every subsequent task in this process.\n * snapshotting before each task and restoring after confines such hooks to the task that\n * installed them. skipped in parallel mode, where another env's still-running task may rely on a\n * hook it installed.\n */\n private snapshotRequireExtensions(): Record<string, unknown> | undefined {\n if ((this.options?.concurrency ?? 1) > 1) return undefined;\n return { ...(Module as any)._extensions };\n }\n\n private restoreRequireExtensions(snapshot: Record<string, unknown> | undefined) {\n if (!snapshot) return;\n const extensions = (Module as any)._extensions;\n for (const key of Object.keys(extensions)) {\n if (!(key in snapshot)) delete extensions[key];\n }\n for (const [key, loader] of Object.entries(snapshot)) {\n if (extensions[key] !== loader) extensions[key] = loader;\n }\n }\n\n private async executeTask(task: BuildTask, env: EnvDefinition): Promise<void> {\n const taskId = BuildTaskHelper.serializeId(task);\n const envName = this.options?.showEnvNameInOutput ? `(${this.getPrettyEnvName(env.id)}) ` : '';\n const buildContext = this.getBuildContext(env.id);\n const hasOriginalSeeders = Boolean(buildContext.capsuleNetwork._originalSeeders?.length);\n const dependencyStr = hasOriginalSeeders ? '' : `[dependency] `;\n const taskLogPrefix = `${dependencyStr}${envName}[${this.getPrettyAspectName(task.aspectId)}: ${task.name}]`;\n this.longProcessLogger.logProgress(`${taskLogPrefix}${task.description ? ` ${task.description}` : ''}`, false);\n this.updateFailedDependencyTask(task);\n if (this.shouldSkipTask(taskId, env.id)) {\n // Save skipped tasks with pending status so they appear in the UI\n const components = buildContext.capsuleNetwork.seedersCapsules.getAllComponents();\n const componentsResults: ComponentResult[] = components.map((component) => ({\n component,\n status: 'pending',\n }));\n const taskResults: TaskResults = {\n task,\n env,\n componentsResults,\n artifacts: undefined,\n startTime: Date.now(),\n endTime: Date.now(),\n };\n this.taskResults.push(taskResults);\n return;\n }\n const startTask = process.hrtime();\n const taskStartTime = Date.now();\n let buildTaskResult: BuiltTaskResult;\n this.logger.debug(\n `${taskLogPrefix} memory usage: ${Math.round((process.memoryUsage().heapUsed / 1024 / 1024 / 1024) * 100) / 100} GB`\n );\n const requireExtensionsSnapshot = this.snapshotRequireExtensions();\n try {\n buildTaskResult = await task.execute(buildContext);\n } catch (err) {\n this.logger.consoleFailure(`env: ${env.id}, task \"${taskId}\" threw an error`);\n throw err;\n } finally {\n this.restoreRequireExtensions(requireExtensionsSnapshot);\n }\n\n const endTime = Date.now();\n const compsWithErrors = buildTaskResult.componentsResults.filter((c) => c.errors?.length);\n let artifacts: ComponentMap<ArtifactList<FsArtifact>> | undefined;\n const duration = prettyTime(process.hrtime(startTask));\n if (compsWithErrors.length) {\n this.logger.consoleFailure(`env: ${env.id}, task \"${taskId}\" has failed`);\n this.logger.consoleFailure(\n chalk.red(`${this.longProcessLogger.getProgress()} env: ${env.id}, task \"${taskId}\" has failed in ${duration}`)\n );\n this.failedTasks.push(task);\n } else {\n const color = hasOriginalSeeders ? chalk.green : chalk.green.dim;\n this.logger.consoleSuccess(\n color(`${this.longProcessLogger.getProgress()} ${taskLogPrefix} Completed successfully in ${duration}`)\n );\n const defs = buildTaskResult.artifacts || [];\n artifacts = this.artifactFactory.generate(buildContext, defs, task);\n }\n\n // For tasks that run on a single component (e.g., test/lint in single-component builds),\n // add the task-level timing to the component result if it doesn't already have timing\n const componentsResults = buildTaskResult.componentsResults;\n if (componentsResults.length === 1 && !componentsResults[0].startTime && !componentsResults[0].endTime) {\n componentsResults[0].startTime = taskStartTime;\n componentsResults[0].endTime = endTime;\n }\n\n const taskResults: TaskResults = {\n task,\n env,\n componentsResults,\n artifacts,\n startTime: taskStartTime,\n endTime,\n };\n\n this.taskResults.push(taskResults);\n }\n\n private getPrettyAspectName(aspectId: string): string {\n const resolvedId = ComponentID.fromString(aspectId);\n const tokens = resolvedId.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n private getPrettyEnvName(envId: string) {\n const resolvedId = ComponentID.fromString(envId);\n const ver = this.options?.showEnvVersionInOutput ? `@${resolvedId.version}` : '';\n return `${resolvedId.fullName}${ver}`;\n }\n\n private async executePostBuild(tasksResults: TaskResultsList) {\n const longProcessLogger = this.logger.createLongProcessLogger('running post-build for all tasks');\n this.logger.setStatusLine('executing post-build for all tasks');\n await mapSeries(this.tasksQueue, async ({ task, env }) => {\n if (!task.postBuild) return;\n await task.postBuild(this.getBuildContext(env.id), tasksResults);\n });\n longProcessLogger.end();\n }\n\n private updateFailedDependencyTask(task: BuildTask) {\n if (!this.failedDependencyTask && this.failedTasks.length && task.dependencies) {\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n this.failedDependencyTask = this.failedTasks.find((failedTask) => {\n if (name && name !== failedTask.name) return false;\n return aspectId === failedTask.aspectId;\n });\n });\n }\n }\n\n private shouldSkipTask(taskId: string, envId: string): boolean {\n if (this.options?.exitOnFirstFailedTask && this.failedTasks.length) {\n const failedTaskId = BuildTaskHelper.serializeId(this.failedTasks[0]);\n this.logger.consoleWarning(`env: ${envId}, task \"${taskId}\" has skipped due to \"${failedTaskId}\" failure`);\n return true;\n }\n if (!this.failedDependencyTask) return false;\n const failedTaskId = BuildTaskHelper.serializeId(this.failedDependencyTask);\n this.logger.consoleWarning(`env: ${envId}, task \"${taskId}\" has skipped due to \"${failedTaskId}\" failure`);\n return true;\n }\n\n private getBuildContext(envId: string): BuildContext {\n const buildContext = this.envsBuildContext[envId];\n if (!buildContext) throw new Error(`unable to find buildContext for ${envId}`);\n buildContext.previousTasksResults = this.allTasksResults;\n return buildContext;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,136 @@
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 _module() {
11
+ const data = _interopRequireDefault(require("module"));
12
+ _module = function () {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _buildPipe() {
18
+ const data = require("./build-pipe");
19
+ _buildPipe = function () {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
28
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
29
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
30
+ // minimal fakes — executeTask only reads the logger methods below, a build-context holding a
31
+ // capsule-network, and an artifact factory invoked on success.
32
+ const logger = {
33
+ setStatusLine: () => {},
34
+ debug: () => {},
35
+ consoleFailure: () => {},
36
+ consoleSuccess: () => {},
37
+ createLongProcessLogger: () => ({
38
+ logProgress: () => {},
39
+ end: () => {},
40
+ getProgress: () => ''
41
+ })
42
+ };
43
+ const artifactFactory = {
44
+ generate: () => undefined
45
+ };
46
+ const env = {
47
+ id: 'teambit.harmony/node'
48
+ };
49
+ function makeEnvsBuildContext() {
50
+ return {
51
+ [env.id]: {
52
+ capsuleNetwork: {
53
+ _originalSeeders: [],
54
+ capsulesRootDir: '/tmp/build-pipe-spec',
55
+ seedersCapsules: {
56
+ getAllComponents: () => []
57
+ }
58
+ }
59
+ }
60
+ };
61
+ }
62
+ const emptyResult = () => ({
63
+ componentsResults: [],
64
+ artifacts: []
65
+ });
66
+ function makeTask(name, execute) {
67
+ return {
68
+ aspectId: 'teambit.pipelines/builder',
69
+ name,
70
+ execute
71
+ };
72
+ }
73
+ describe('BuildPipe require-extensions isolation', () => {
74
+ let extensionsSnapshot;
75
+ beforeEach(() => {
76
+ extensionsSnapshot = _objectSpread({}, _module().default._extensions);
77
+ });
78
+ afterEach(() => {
79
+ // a failing assertion must not leave the test process with hijacked loaders
80
+ const extensions = _module().default._extensions;
81
+ for (const key of Object.keys(extensions)) {
82
+ if (!(key in extensionsSnapshot)) delete extensions[key];
83
+ }
84
+ Object.assign(extensions, extensionsSnapshot);
85
+ });
86
+ it('confines require-extension hooks installed by a task to that task', async () => {
87
+ const originalJsLoader = _module().default._extensions['.js'];
88
+ // mimics what @babel/register (via pirates) leaves behind when a tester runs in-process:
89
+ // a loader that claims ".js" files and compiles them itself
90
+ const hijackingLoader = () => {
91
+ throw new Error('hijacked');
92
+ };
93
+ const hijackingTask = makeTask('hijack', async () => {
94
+ _module().default._extensions['.js'] = hijackingLoader;
95
+ _module().default._extensions['.fake-ext'] = hijackingLoader;
96
+ return emptyResult();
97
+ });
98
+ let jsLoaderDuringNextTask;
99
+ let fakeExtExistsDuringNextTask;
100
+ const observingTask = makeTask('observe', async () => {
101
+ jsLoaderDuringNextTask = _module().default._extensions['.js'];
102
+ fakeExtExistsDuringNextTask = '.fake-ext' in _module().default._extensions;
103
+ return emptyResult();
104
+ });
105
+ const queue = [{
106
+ task: hijackingTask,
107
+ env
108
+ }, {
109
+ task: observingTask,
110
+ env
111
+ }];
112
+ const pipe = new (_buildPipe().BuildPipe)(queue, makeEnvsBuildContext(), logger, artifactFactory);
113
+ await pipe.execute();
114
+ (0, _chai().expect)(jsLoaderDuringNextTask).to.equal(originalJsLoader);
115
+ (0, _chai().expect)(fakeExtExistsDuringNextTask).to.be.false;
116
+ (0, _chai().expect)(_module().default._extensions['.js']).to.equal(originalJsLoader);
117
+ });
118
+ it('restores hooks even when the task fails', async () => {
119
+ const originalJsLoader = _module().default._extensions['.js'];
120
+ const failingHijackingTask = makeTask('hijack-and-fail', async () => {
121
+ _module().default._extensions['.js'] = () => {
122
+ throw new Error('hijacked');
123
+ };
124
+ throw new Error('task failed');
125
+ });
126
+ const queue = [{
127
+ task: failingHijackingTask,
128
+ env
129
+ }];
130
+ const pipe = new (_buildPipe().BuildPipe)(queue, makeEnvsBuildContext(), logger, artifactFactory);
131
+ await pipe.execute().catch(() => {});
132
+ (0, _chai().expect)(_module().default._extensions['.js']).to.equal(originalJsLoader);
133
+ });
134
+ });
135
+
136
+ //# sourceMappingURL=build-pipe.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chai","data","require","_module","_interopRequireDefault","_buildPipe","e","__esModule","default","ownKeys","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","logger","setStatusLine","debug","consoleFailure","consoleSuccess","createLongProcessLogger","logProgress","end","getProgress","artifactFactory","generate","undefined","env","id","makeEnvsBuildContext","capsuleNetwork","_originalSeeders","capsulesRootDir","seedersCapsules","getAllComponents","emptyResult","componentsResults","artifacts","makeTask","name","execute","aspectId","describe","extensionsSnapshot","beforeEach","Module","_extensions","afterEach","extensions","key","assign","it","originalJsLoader","hijackingLoader","Error","hijackingTask","jsLoaderDuringNextTask","fakeExtExistsDuringNextTask","observingTask","queue","task","pipe","BuildPipe","expect","to","equal","be","false","failingHijackingTask","catch"],"sources":["build-pipe.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport Module from 'module';\nimport { BuildPipe } from './build-pipe';\nimport type { BuildTask, BuiltTaskResult } from './build-task';\n\n// minimal fakes — executeTask only reads the logger methods below, a build-context holding a\n// capsule-network, and an artifact factory invoked on success.\nconst logger = {\n setStatusLine: () => {},\n debug: () => {},\n consoleFailure: () => {},\n consoleSuccess: () => {},\n createLongProcessLogger: () => ({ logProgress: () => {}, end: () => {}, getProgress: () => '' }),\n} as any;\n\nconst artifactFactory = { generate: () => undefined } as any;\n\nconst env = { id: 'teambit.harmony/node' } as any;\n\nfunction makeEnvsBuildContext() {\n return {\n [env.id]: {\n capsuleNetwork: {\n _originalSeeders: [],\n capsulesRootDir: '/tmp/build-pipe-spec',\n seedersCapsules: { getAllComponents: () => [] },\n },\n },\n } as any;\n}\n\nconst emptyResult = (): BuiltTaskResult => ({ componentsResults: [], artifacts: [] });\n\nfunction makeTask(name: string, execute: () => Promise<BuiltTaskResult>): BuildTask {\n return { aspectId: 'teambit.pipelines/builder', name, execute } as any;\n}\n\ndescribe('BuildPipe require-extensions isolation', () => {\n let extensionsSnapshot: Record<string, any>;\n beforeEach(() => {\n extensionsSnapshot = { ...(Module as any)._extensions };\n });\n afterEach(() => {\n // a failing assertion must not leave the test process with hijacked loaders\n const extensions = (Module as any)._extensions;\n for (const key of Object.keys(extensions)) {\n if (!(key in extensionsSnapshot)) delete extensions[key];\n }\n Object.assign(extensions, extensionsSnapshot);\n });\n\n it('confines require-extension hooks installed by a task to that task', async () => {\n const originalJsLoader = (Module as any)._extensions['.js'];\n // mimics what @babel/register (via pirates) leaves behind when a tester runs in-process:\n // a loader that claims \".js\" files and compiles them itself\n const hijackingLoader = () => {\n throw new Error('hijacked');\n };\n const hijackingTask = makeTask('hijack', async () => {\n (Module as any)._extensions['.js'] = hijackingLoader;\n (Module as any)._extensions['.fake-ext'] = hijackingLoader;\n return emptyResult();\n });\n let jsLoaderDuringNextTask: any;\n let fakeExtExistsDuringNextTask: boolean | undefined;\n const observingTask = makeTask('observe', async () => {\n jsLoaderDuringNextTask = (Module as any)._extensions['.js'];\n fakeExtExistsDuringNextTask = '.fake-ext' in (Module as any)._extensions;\n return emptyResult();\n });\n const queue = [\n { task: hijackingTask, env },\n { task: observingTask, env },\n ] as any;\n\n const pipe = new BuildPipe(queue, makeEnvsBuildContext(), logger, artifactFactory);\n await pipe.execute();\n\n expect(jsLoaderDuringNextTask).to.equal(originalJsLoader);\n expect(fakeExtExistsDuringNextTask).to.be.false;\n expect((Module as any)._extensions['.js']).to.equal(originalJsLoader);\n });\n\n it('restores hooks even when the task fails', async () => {\n const originalJsLoader = (Module as any)._extensions['.js'];\n const failingHijackingTask = makeTask('hijack-and-fail', async () => {\n (Module as any)._extensions['.js'] = () => {\n throw new Error('hijacked');\n };\n throw new Error('task failed');\n });\n const queue = [{ task: failingHijackingTask, env }] as any;\n\n const pipe = new BuildPipe(queue, makeEnvsBuildContext(), logger, artifactFactory);\n await pipe.execute().catch(() => {});\n\n expect((Module as any)._extensions['.js']).to.equal(originalJsLoader);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.1071/dist/builder.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.1071/dist/builder.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.1073/dist/builder.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.1073/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.1071",
3
+ "version": "1.0.1073",
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.1071"
9
+ "version": "1.0.1073"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -40,16 +40,16 @@
40
40
  "@teambit/component-id": "1.2.4",
41
41
  "@teambit/legacy.utils": "0.0.42",
42
42
  "@teambit/legacy.scope": "0.0.137",
43
- "@teambit/component": "1.0.1071",
44
- "@teambit/envs": "1.0.1071",
45
- "@teambit/isolator": "1.0.1071",
46
- "@teambit/workspace": "1.0.1071",
47
- "@teambit/aspect-loader": "1.0.1071",
48
- "@teambit/generator": "1.0.1072",
49
- "@teambit/graphql": "1.0.1071",
50
- "@teambit/issues": "1.0.1071",
51
- "@teambit/scope": "1.0.1071",
52
- "@teambit/ui": "1.0.1071"
43
+ "@teambit/component": "1.0.1073",
44
+ "@teambit/envs": "1.0.1073",
45
+ "@teambit/isolator": "1.0.1073",
46
+ "@teambit/workspace": "1.0.1073",
47
+ "@teambit/aspect-loader": "1.0.1073",
48
+ "@teambit/generator": "1.0.1074",
49
+ "@teambit/graphql": "1.0.1073",
50
+ "@teambit/issues": "1.0.1073",
51
+ "@teambit/scope": "1.0.1073",
52
+ "@teambit/ui": "1.0.1073"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/pretty-time": "^1.1.5",