@teambit/builder 1.0.666 → 1.0.668

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.
Files changed (74) hide show
  1. package/artifact/artifact-definition.ts +1 -1
  2. package/artifact/artifact-extractor.ts +7 -5
  3. package/artifact/artifact-factory.ts +5 -3
  4. package/artifact/artifact-list.ts +7 -12
  5. package/artifact/artifacts.cmd.ts +5 -4
  6. package/artifact/extension-artifact.ts +1 -1
  7. package/artifact/fs-artifact.ts +1 -1
  8. package/dist/artifact/artifact-definition.d.ts +1 -1
  9. package/dist/artifact/artifact-definition.js.map +1 -1
  10. package/dist/artifact/artifact-extractor.d.ts +4 -4
  11. package/dist/artifact/artifact-extractor.js.map +1 -1
  12. package/dist/artifact/artifact-factory.d.ts +3 -2
  13. package/dist/artifact/artifact-factory.js.map +1 -1
  14. package/dist/artifact/artifact-list.d.ts +4 -5
  15. package/dist/artifact/artifact-list.js.map +1 -1
  16. package/dist/artifact/artifacts.cmd.d.ts +3 -3
  17. package/dist/artifact/artifacts.cmd.js.map +1 -1
  18. package/dist/artifact/extension-artifact.d.ts +1 -1
  19. package/dist/artifact/extension-artifact.js.map +1 -1
  20. package/dist/artifact/fs-artifact.d.ts +1 -1
  21. package/dist/artifact/fs-artifact.js.map +1 -1
  22. package/dist/build-pipe.d.ts +8 -8
  23. package/dist/build-pipe.js.map +1 -1
  24. package/dist/build-pipeline-order.d.ts +2 -2
  25. package/dist/build-pipeline-order.js.map +1 -1
  26. package/dist/build-pipeline-result-list.d.ts +3 -3
  27. package/dist/build-pipeline-result-list.js.map +1 -1
  28. package/dist/build-task.d.ts +5 -5
  29. package/dist/build-task.js.map +1 -1
  30. package/dist/build.cmd.d.ts +4 -4
  31. package/dist/build.cmd.js.map +1 -1
  32. package/dist/builder-env-type.d.ts +1 -1
  33. package/dist/builder-env-type.js.map +1 -1
  34. package/dist/builder.graphql.d.ts +4 -4
  35. package/dist/builder.graphql.js.map +1 -1
  36. package/dist/builder.main.runtime.d.ts +23 -21
  37. package/dist/builder.main.runtime.js.map +1 -1
  38. package/dist/builder.route.d.ts +4 -4
  39. package/dist/builder.route.js.map +1 -1
  40. package/dist/builder.service.d.ts +11 -11
  41. package/dist/builder.service.js.map +1 -1
  42. package/dist/exceptions/capsule-not-found.d.ts +1 -1
  43. package/dist/exceptions/capsule-not-found.js.map +1 -1
  44. package/dist/exceptions/components-have-issues.d.ts +1 -1
  45. package/dist/exceptions/components-have-issues.js.map +1 -1
  46. package/dist/pipeline.d.ts +3 -3
  47. package/dist/pipeline.js.map +1 -1
  48. package/dist/{preview-1753803956605.js → preview-1753833698619.js} +2 -2
  49. package/dist/storage/default-resolver.d.ts +3 -3
  50. package/dist/storage/default-resolver.js.map +1 -1
  51. package/dist/storage/storage-resolver.d.ts +3 -3
  52. package/dist/storage/storage-resolver.js.map +1 -1
  53. package/dist/task-results-list.d.ts +3 -3
  54. package/dist/task-results-list.js.map +1 -1
  55. package/dist/task.d.ts +2 -2
  56. package/dist/task.js.map +1 -1
  57. package/dist/tasks-queue.d.ts +2 -2
  58. package/dist/tasks-queue.js.map +1 -1
  59. package/dist/templates/build-task/files/index-file.d.ts +1 -1
  60. package/dist/templates/build-task/files/index-file.js.map +1 -1
  61. package/dist/templates/build-task/files/task-file.d.ts +1 -1
  62. package/dist/templates/build-task/files/task-file.js.map +1 -1
  63. package/dist/templates/build-task/index.d.ts +1 -1
  64. package/dist/templates/build-task/index.js.map +1 -1
  65. package/dist/types.d.ts +1 -1
  66. package/dist/types.js.map +1 -1
  67. package/exceptions/capsule-not-found.ts +1 -1
  68. package/exceptions/components-have-issues.ts +1 -1
  69. package/package.json +21 -21
  70. package/storage/default-resolver.ts +3 -3
  71. package/storage/storage-resolver.ts +3 -3
  72. package/templates/build-task/files/index-file.ts +1 -1
  73. package/templates/build-task/files/task-file.ts +1 -1
  74. package/templates/build-task/index.ts +1 -1
@@ -1,4 +1,4 @@
1
- import { ArtifactStorageResolver } from '..';
1
+ import type { ArtifactStorageResolver } from '..';
2
2
 
3
3
  export type ArtifactDefinition = {
4
4
  /**
@@ -1,14 +1,16 @@
1
1
  import path from 'path';
2
2
  import filenamify from 'filenamify';
3
3
  import fs from 'fs-extra';
4
- import { ComponentMain } from '@teambit/component';
5
- import { ScopeAspect, ScopeMain } from '@teambit/scope';
6
- import { ComponentID, ComponentIdList } from '@teambit/component-id';
4
+ import type { ComponentMain } from '@teambit/component';
5
+ import type { ScopeMain } from '@teambit/scope';
6
+ import { ScopeAspect } from '@teambit/scope';
7
+ import type { ComponentID } from '@teambit/component-id';
8
+ import { ComponentIdList } from '@teambit/component-id';
7
9
  import pMapSeries from 'p-map-series';
8
10
  import minimatch from 'minimatch';
9
11
  import { ArtifactFiles } from '@teambit/component.sources';
10
- import { BuilderMain } from '../builder.main.runtime';
11
- import { ArtifactsOpts } from './artifacts.cmd';
12
+ import type { BuilderMain } from '../builder.main.runtime';
13
+ import type { ArtifactsOpts } from './artifacts.cmd';
12
14
  import { ArtifactList } from './artifact-list';
13
15
  import { Artifact } from './artifact';
14
16
 
@@ -2,9 +2,11 @@ import { join } from 'path';
2
2
  import globby from 'globby';
3
3
  import { flatten } from 'lodash';
4
4
  import { ArtifactFiles } from '@teambit/component.sources';
5
- import { Component, ComponentMap } from '@teambit/component';
6
- import { pathNormalizeToLinux, PathLinux } from '@teambit/legacy.utils';
7
- import { ArtifactDefinition } from './artifact-definition';
5
+ import type { Component } from '@teambit/component';
6
+ import { ComponentMap } from '@teambit/component';
7
+ import type { PathLinux } from '@teambit/legacy.utils';
8
+ import { pathNormalizeToLinux } from '@teambit/legacy.utils';
9
+ import type { ArtifactDefinition } from './artifact-definition';
8
10
  import { DefaultResolver } from '../storage';
9
11
  import { ArtifactList } from './artifact-list';
10
12
  import type { BuildContext, BuildTask } from '../build-task';
@@ -1,17 +1,12 @@
1
- import { Component } from '@teambit/component';
1
+ import type { Component } from '@teambit/component';
2
2
  import pMapSeries from 'p-map-series';
3
- import type { ArtifactObject } from '@teambit/component.sources';
4
- import { ComponentID } from '@teambit/component-id';
5
- import { Scope } from '@teambit/legacy.scope';
6
- import { ArtifactVinyl } from '@teambit/component.sources';
7
- import { FsArtifact } from './fs-artifact';
3
+ import type { ArtifactObject, ArtifactVinyl } from '@teambit/component.sources';
4
+ import type { ComponentID } from '@teambit/component-id';
5
+ import type { Scope } from '@teambit/legacy.scope';
6
+ import type { FsArtifact } from './fs-artifact';
8
7
  import { Artifact } from './artifact';
9
- import {
10
- ArtifactStorageResolver,
11
- FileStorageResolver,
12
- WholeArtifactStorageResolver,
13
- DefaultResolver,
14
- } from '../storage';
8
+ import type { ArtifactStorageResolver, FileStorageResolver, WholeArtifactStorageResolver } from '../storage';
9
+ import { DefaultResolver } from '../storage';
15
10
 
16
11
  export type ResolverMap<T extends Artifact> = { [key: string]: T[] };
17
12
 
@@ -1,9 +1,10 @@
1
- import { Command, CommandOptions } from '@teambit/cli';
1
+ import type { Command, CommandOptions } from '@teambit/cli';
2
2
  import chalk from 'chalk';
3
3
  import { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';
4
- import { ComponentMain } from '@teambit/component';
5
- import { BuilderMain } from '../builder.main.runtime';
6
- import { ArtifactExtractor, ExtractorArtifactResult, ExtractorResultGrouped } from './artifact-extractor';
4
+ import type { ComponentMain } from '@teambit/component';
5
+ import type { BuilderMain } from '../builder.main.runtime';
6
+ import type { ExtractorArtifactResult, ExtractorResultGrouped } from './artifact-extractor';
7
+ import { ArtifactExtractor } from './artifact-extractor';
7
8
 
8
9
  const INDENT_TITLE = ' '.repeat(2);
9
10
  const INDENT_SUB_TITLE = ' '.repeat(4);
@@ -1,5 +1,5 @@
1
1
  import type { AspectDescriptor } from '@teambit/aspect-loader';
2
- import { AbstractVinyl } from '@teambit/component.sources';
2
+ import type { AbstractVinyl } from '@teambit/component.sources';
3
3
 
4
4
  export class ExtensionArtifact {
5
5
  constructor(
@@ -1,7 +1,7 @@
1
1
  import type { ArtifactFiles } from '@teambit/component.sources';
2
2
  import type { ArtifactDefinition } from './artifact-definition';
3
3
  import { Artifact } from './artifact';
4
- import { TaskDescriptor } from '../build-task';
4
+ import type { TaskDescriptor } from '../build-task';
5
5
 
6
6
  export class FsArtifact extends Artifact {
7
7
  constructor(
@@ -1,4 +1,4 @@
1
- import { ArtifactStorageResolver } from '..';
1
+ import type { ArtifactStorageResolver } from '..';
2
2
  export type ArtifactDefinition = {
3
3
  /**
4
4
  * name of the artifact.
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["artifact-definition.ts"],"sourcesContent":["import { ArtifactStorageResolver } from '..';\n\nexport type ArtifactDefinition = {\n /**\n * name of the artifact.\n * e.g. a project might utilize two different artifacts for the same typescript compiler, one\n * that generates ES5 files and another for ES6, this prop helps to distinguish between the two.\n */\n name: string;\n\n /**\n * aspect id that created the artifact. sometimes it's not the same as the task.id.\n * e.g. teambit.compilation/compiler executes teambit.typescript/typescript code that generates dists artifacts\n * the generatedBy in this case is the teambit.typescript/typescript while the task.id is\n * teambit.compilation/compiler\n */\n generatedBy?: string;\n\n /**\n * description of the artifact.\n */\n description?: string;\n\n /**\n * glob patterns of files to include upon artifact creation.\n * examples:\n * ['*.ts', '!foo.ts'] - matches all ts files but ignores foo.ts.\n * ['dist'] - matches all files recursively from dist dir. (similar to 'dist/**').\n *\n * the glob array are passed to [globby](https://www.npmjs.com/package/globby), which interprets the patterns\n * according to [minimatch](https://github.com/isaacs/minimatch#usage).\n */\n globPatterns?: string[];\n\n /**\n * @deprecated use globPatterns instead.\n *\n * directories of files to include upon artifact creation. minimatch is used to match the patterns.\n * e.g. ['/tmp'] will include all files from tmp dir\n */\n directories?: string[];\n\n /**\n * @deprecated use globPatterns instead.\n *\n * define the root directory for reading the artifacts from the capsule file system.\n * the rootDir must be unique per artifacts, otherwise we risk overriding data between artifacts.\n */\n rootDir?: string;\n\n /**\n * @deprecated use globPatterns instead.\n *\n * adds a directory prefix for all artifact files.\n */\n dirPrefix?: string;\n\n /**\n * determine the context of the artifact.\n * default artifact context is `component`.\n * \"env\" is useful when the same file is generated for all components, for example, \"preview\"\n * task may create the same webpack file for all components of that env.\n */\n context?: 'component' | 'env';\n\n /**\n * storage resolver. can be used to replace where artifacts are stored.\n * default resolver persists artifacts on scope. (not recommended for large files!)\n */\n storageResolver?: ArtifactStorageResolver;\n};\n\nexport type ArtifactModelDefinition = Omit<ArtifactDefinition, 'storageResolver'> & {\n storageResolver?: string;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["artifact-definition.ts"],"sourcesContent":["import type { ArtifactStorageResolver } from '..';\n\nexport type ArtifactDefinition = {\n /**\n * name of the artifact.\n * e.g. a project might utilize two different artifacts for the same typescript compiler, one\n * that generates ES5 files and another for ES6, this prop helps to distinguish between the two.\n */\n name: string;\n\n /**\n * aspect id that created the artifact. sometimes it's not the same as the task.id.\n * e.g. teambit.compilation/compiler executes teambit.typescript/typescript code that generates dists artifacts\n * the generatedBy in this case is the teambit.typescript/typescript while the task.id is\n * teambit.compilation/compiler\n */\n generatedBy?: string;\n\n /**\n * description of the artifact.\n */\n description?: string;\n\n /**\n * glob patterns of files to include upon artifact creation.\n * examples:\n * ['*.ts', '!foo.ts'] - matches all ts files but ignores foo.ts.\n * ['dist'] - matches all files recursively from dist dir. (similar to 'dist/**').\n *\n * the glob array are passed to [globby](https://www.npmjs.com/package/globby), which interprets the patterns\n * according to [minimatch](https://github.com/isaacs/minimatch#usage).\n */\n globPatterns?: string[];\n\n /**\n * @deprecated use globPatterns instead.\n *\n * directories of files to include upon artifact creation. minimatch is used to match the patterns.\n * e.g. ['/tmp'] will include all files from tmp dir\n */\n directories?: string[];\n\n /**\n * @deprecated use globPatterns instead.\n *\n * define the root directory for reading the artifacts from the capsule file system.\n * the rootDir must be unique per artifacts, otherwise we risk overriding data between artifacts.\n */\n rootDir?: string;\n\n /**\n * @deprecated use globPatterns instead.\n *\n * adds a directory prefix for all artifact files.\n */\n dirPrefix?: string;\n\n /**\n * determine the context of the artifact.\n * default artifact context is `component`.\n * \"env\" is useful when the same file is generated for all components, for example, \"preview\"\n * task may create the same webpack file for all components of that env.\n */\n context?: 'component' | 'env';\n\n /**\n * storage resolver. can be used to replace where artifacts are stored.\n * default resolver persists artifacts on scope. (not recommended for large files!)\n */\n storageResolver?: ArtifactStorageResolver;\n};\n\nexport type ArtifactModelDefinition = Omit<ArtifactDefinition, 'storageResolver'> & {\n storageResolver?: string;\n};\n"],"mappings":"","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { ComponentMain } from '@teambit/component';
2
- import { ComponentID } from '@teambit/component-id';
3
- import { BuilderMain } from '../builder.main.runtime';
4
- import { ArtifactsOpts } from './artifacts.cmd';
1
+ import type { ComponentMain } from '@teambit/component';
2
+ import type { ComponentID } from '@teambit/component-id';
3
+ import type { BuilderMain } from '../builder.main.runtime';
4
+ import type { ArtifactsOpts } from './artifacts.cmd';
5
5
  export type ExtractorResult = {
6
6
  id: ComponentID;
7
7
  artifacts: ExtractorArtifactResult[];
@@ -1 +1 @@
1
- {"version":3,"names":["_path","data","_interopRequireDefault","require","_filenamify","_fsExtra","_scope","_componentId","_pMapSeries","_minimatch","_component","_artifactList","_artifact","e","__esModule","default","ArtifactExtractor","constructor","componentMain","builder","pattern","options","list","host","getHost","ids","idsByPattern","scope","ScopeAspect","id","legacyScope","scopeImporter","importWithoutDeps","ComponentIdList","fromArray","reason","components","getMany","artifactListPerId","map","component","artifacts","getArtifacts","filterByOptions","saveFilesInFileSystemIfAsked","artifactsObjectsToExtractorResults","groupResultsByAspect","extractorResult","result","reduce","acc","current","aspectId","push","outDir","pMapSeries","vinyls","getVinylsAndImportIfMissing","idAsFilename","filenamify","toStringWithoutVersion","replacement","compPath","path","join","Promise","all","vinyl","fs","outputFile","contents","results","artifact","artifactName","name","task","taskName","generatedBy","files","refs","ref","relativePath","aspect","filteredArtifacts","forEach","item","filter","minimatch","Artifact","def","ArtifactFiles","isEmpty","ArtifactList","exports"],"sources":["artifact-extractor.ts"],"sourcesContent":["import path from 'path';\nimport filenamify from 'filenamify';\nimport fs from 'fs-extra';\nimport { ComponentMain } from '@teambit/component';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport pMapSeries from 'p-map-series';\nimport minimatch from 'minimatch';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport { BuilderMain } from '../builder.main.runtime';\nimport { ArtifactsOpts } from './artifacts.cmd';\nimport { ArtifactList } from './artifact-list';\nimport { Artifact } from './artifact';\n\nexport type ExtractorResult = {\n id: ComponentID;\n artifacts: ExtractorArtifactResult[];\n};\n\nexport type ExtractorArtifactResult = {\n artifactName: string;\n aspectId: string;\n taskName: string;\n files: string[];\n};\n\nexport type ExtractorResultGrouped = {\n id: ComponentID;\n artifacts: { [aspectId: string]: ExtractorArtifactResult[] };\n};\n\ntype ArtifactListPerId = {\n id: ComponentID;\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class ArtifactExtractor {\n constructor(\n private componentMain: ComponentMain,\n private builder: BuilderMain,\n private pattern: string,\n private options: ArtifactsOpts\n ) {}\n\n async list(): Promise<ExtractorResult[]> {\n const host = this.componentMain.getHost();\n const ids = await host.idsByPattern(this.pattern);\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n // import in case the components are with build status \"pending\"\n await scope.legacyScope.scopeImporter.importWithoutDeps(ComponentIdList.fromArray(ids), { reason: 'artifact' });\n const components = await host.getMany(ids);\n const artifactListPerId: ArtifactListPerId[] = components.map((component) => {\n return {\n id: component.id,\n artifacts: this.builder.getArtifacts(component),\n };\n });\n this.filterByOptions(artifactListPerId);\n await this.saveFilesInFileSystemIfAsked(artifactListPerId);\n\n return this.artifactsObjectsToExtractorResults(artifactListPerId);\n }\n\n groupResultsByAspect(extractorResult: ExtractorResult[]) {\n return extractorResult.map((result) => {\n const artifacts = result.artifacts.reduce((acc, current) => {\n (acc[current.aspectId] ||= []).push(current);\n return acc;\n }, {});\n return { id: result.id, artifacts };\n });\n }\n\n private async saveFilesInFileSystemIfAsked(artifactListPerId: ArtifactListPerId[]) {\n const outDir = this.options.outDir;\n if (!outDir) {\n return;\n }\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n // @todo: optimize this to first import all missing hashes.\n await pMapSeries(artifactListPerId, async ({ id, artifacts }) => {\n const vinyls = await artifacts.getVinylsAndImportIfMissing(id, scope.legacyScope);\n // make sure the component-dir is just one dir. without this, every slash in the component-id will create a new dir.\n const idAsFilename = filenamify(id.toStringWithoutVersion(), { replacement: '_' });\n const compPath = path.join(outDir, idAsFilename);\n await Promise.all(vinyls.map((vinyl) => fs.outputFile(path.join(compPath, vinyl.path), vinyl.contents)));\n });\n }\n\n private artifactsObjectsToExtractorResults(artifactListPerId: ArtifactListPerId[]): ExtractorResult[] {\n return artifactListPerId.map(({ id, artifacts }) => {\n const results: ExtractorArtifactResult[] = artifacts.map((artifact) => {\n return {\n artifactName: artifact.name,\n aspectId: artifact.task.aspectId,\n taskName: artifact.task.name || artifact.generatedBy,\n files: artifact.files.refs.map((ref) => ref.relativePath),\n };\n });\n return {\n id,\n artifacts: results,\n };\n });\n }\n\n private filterByOptions(artifactListPerId: ArtifactListPerId[]) {\n const { aspect, task, files } = this.options;\n let filteredArtifacts: Artifact[] = [];\n\n artifactListPerId.forEach((item) => {\n filteredArtifacts = item.artifacts.filter((artifact) => {\n if (aspect && aspect !== artifact.task.aspectId) return false;\n if (task && task !== artifact.task.name) return false;\n return true;\n });\n if (files) {\n filteredArtifacts = item.artifacts\n .map((artifact) => {\n const refs = artifact.files.refs.filter((ref) => minimatch(ref.relativePath, files));\n return new Artifact(artifact.def, new ArtifactFiles([], [], refs), artifact.task);\n })\n // remove artifacts with no files\n .filter((artifact) => !artifact.isEmpty());\n }\n item.artifacts = ArtifactList.fromArray(filteredArtifacts);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_path","data","_interopRequireDefault","require","_filenamify","_fsExtra","_scope","_componentId","_pMapSeries","_minimatch","_component","_artifactList","_artifact","e","__esModule","default","ArtifactExtractor","constructor","componentMain","builder","pattern","options","list","host","getHost","ids","idsByPattern","scope","ScopeAspect","id","legacyScope","scopeImporter","importWithoutDeps","ComponentIdList","fromArray","reason","components","getMany","artifactListPerId","map","component","artifacts","getArtifacts","filterByOptions","saveFilesInFileSystemIfAsked","artifactsObjectsToExtractorResults","groupResultsByAspect","extractorResult","result","reduce","acc","current","aspectId","push","outDir","pMapSeries","vinyls","getVinylsAndImportIfMissing","idAsFilename","filenamify","toStringWithoutVersion","replacement","compPath","path","join","Promise","all","vinyl","fs","outputFile","contents","results","artifact","artifactName","name","task","taskName","generatedBy","files","refs","ref","relativePath","aspect","filteredArtifacts","forEach","item","filter","minimatch","Artifact","def","ArtifactFiles","isEmpty","ArtifactList","exports"],"sources":["artifact-extractor.ts"],"sourcesContent":["import path from 'path';\nimport filenamify from 'filenamify';\nimport fs from 'fs-extra';\nimport type { ComponentMain } from '@teambit/component';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { ComponentID } from '@teambit/component-id';\nimport { ComponentIdList } from '@teambit/component-id';\nimport pMapSeries from 'p-map-series';\nimport minimatch from 'minimatch';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport type { BuilderMain } from '../builder.main.runtime';\nimport type { ArtifactsOpts } from './artifacts.cmd';\nimport { ArtifactList } from './artifact-list';\nimport { Artifact } from './artifact';\n\nexport type ExtractorResult = {\n id: ComponentID;\n artifacts: ExtractorArtifactResult[];\n};\n\nexport type ExtractorArtifactResult = {\n artifactName: string;\n aspectId: string;\n taskName: string;\n files: string[];\n};\n\nexport type ExtractorResultGrouped = {\n id: ComponentID;\n artifacts: { [aspectId: string]: ExtractorArtifactResult[] };\n};\n\ntype ArtifactListPerId = {\n id: ComponentID;\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class ArtifactExtractor {\n constructor(\n private componentMain: ComponentMain,\n private builder: BuilderMain,\n private pattern: string,\n private options: ArtifactsOpts\n ) {}\n\n async list(): Promise<ExtractorResult[]> {\n const host = this.componentMain.getHost();\n const ids = await host.idsByPattern(this.pattern);\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n // import in case the components are with build status \"pending\"\n await scope.legacyScope.scopeImporter.importWithoutDeps(ComponentIdList.fromArray(ids), { reason: 'artifact' });\n const components = await host.getMany(ids);\n const artifactListPerId: ArtifactListPerId[] = components.map((component) => {\n return {\n id: component.id,\n artifacts: this.builder.getArtifacts(component),\n };\n });\n this.filterByOptions(artifactListPerId);\n await this.saveFilesInFileSystemIfAsked(artifactListPerId);\n\n return this.artifactsObjectsToExtractorResults(artifactListPerId);\n }\n\n groupResultsByAspect(extractorResult: ExtractorResult[]) {\n return extractorResult.map((result) => {\n const artifacts = result.artifacts.reduce((acc, current) => {\n (acc[current.aspectId] ||= []).push(current);\n return acc;\n }, {});\n return { id: result.id, artifacts };\n });\n }\n\n private async saveFilesInFileSystemIfAsked(artifactListPerId: ArtifactListPerId[]) {\n const outDir = this.options.outDir;\n if (!outDir) {\n return;\n }\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n // @todo: optimize this to first import all missing hashes.\n await pMapSeries(artifactListPerId, async ({ id, artifacts }) => {\n const vinyls = await artifacts.getVinylsAndImportIfMissing(id, scope.legacyScope);\n // make sure the component-dir is just one dir. without this, every slash in the component-id will create a new dir.\n const idAsFilename = filenamify(id.toStringWithoutVersion(), { replacement: '_' });\n const compPath = path.join(outDir, idAsFilename);\n await Promise.all(vinyls.map((vinyl) => fs.outputFile(path.join(compPath, vinyl.path), vinyl.contents)));\n });\n }\n\n private artifactsObjectsToExtractorResults(artifactListPerId: ArtifactListPerId[]): ExtractorResult[] {\n return artifactListPerId.map(({ id, artifacts }) => {\n const results: ExtractorArtifactResult[] = artifacts.map((artifact) => {\n return {\n artifactName: artifact.name,\n aspectId: artifact.task.aspectId,\n taskName: artifact.task.name || artifact.generatedBy,\n files: artifact.files.refs.map((ref) => ref.relativePath),\n };\n });\n return {\n id,\n artifacts: results,\n };\n });\n }\n\n private filterByOptions(artifactListPerId: ArtifactListPerId[]) {\n const { aspect, task, files } = this.options;\n let filteredArtifacts: Artifact[] = [];\n\n artifactListPerId.forEach((item) => {\n filteredArtifacts = item.artifacts.filter((artifact) => {\n if (aspect && aspect !== artifact.task.aspectId) return false;\n if (task && task !== artifact.task.name) return false;\n return true;\n });\n if (files) {\n filteredArtifacts = item.artifacts\n .map((artifact) => {\n const refs = artifact.files.refs.filter((ref) => minimatch(ref.relativePath, files));\n return new Artifact(artifact.def, new ArtifactFiles([], [], refs), artifact.task);\n })\n // remove artifacts with no files\n .filter((artifact) => !artifact.isEmpty());\n }\n item.artifacts = ArtifactList.fromArray(filteredArtifacts);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
- import { Component, ComponentMap } from '@teambit/component';
2
- import { ArtifactDefinition } from './artifact-definition';
1
+ import type { Component } from '@teambit/component';
2
+ import { ComponentMap } from '@teambit/component';
3
+ import type { ArtifactDefinition } from './artifact-definition';
3
4
  import { ArtifactList } from './artifact-list';
4
5
  import type { BuildContext, BuildTask } from '../build-task';
5
6
  import { FsArtifact } from './fs-artifact';
@@ -1 +1 @@
1
- {"version":3,"names":["_path","data","require","_globby","_interopRequireDefault","_lodash","_component","_component2","_legacy","_storage","_artifactList","_exceptions","_fsArtifact","e","__esModule","default","DEFAULT_CONTEXT","exports","ArtifactFactory","resolvePaths","root","def","patternsFlattened","flatten","globPatterns","patternsFlattenedLinux","map","pathNormalizeToLinux","paths","globby","sync","cwd","getArtifactContextPath","context","component","artifactContext","getArtifactContext","capsulePath","capsuleNetwork","graphCapsules","getCapsule","id","path","CapsuleNotFound","capsulesRootDir","createFromComponent","task","contextPath","rootDir","getRootDir","length","undefined","FsArtifact","ArtifactFiles","getStorageResolver","storageResolver","DefaultResolver","toComponentMap","artifactMap","ComponentMap","as","components","toString","artifacts","filter","targetId","artifact","ArtifactList","fromArray","join","generate","defs","tupleArr","forEach","capsuleDir","push"],"sources":["artifact-factory.ts"],"sourcesContent":["import { join } from 'path';\nimport globby from 'globby';\nimport { flatten } from 'lodash';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { pathNormalizeToLinux, PathLinux } from '@teambit/legacy.utils';\nimport { ArtifactDefinition } from './artifact-definition';\nimport { DefaultResolver } from '../storage';\nimport { ArtifactList } from './artifact-list';\nimport type { BuildContext, BuildTask } from '../build-task';\nimport { CapsuleNotFound } from '../exceptions';\nimport { FsArtifact } from './fs-artifact';\n\nexport const DEFAULT_CONTEXT = 'component';\n\nexport type ArtifactMap = ComponentMap<ArtifactList<FsArtifact>>;\n\nexport class ArtifactFactory {\n resolvePaths(root: string, def: ArtifactDefinition): string[] {\n const patternsFlattened = flatten(def.globPatterns);\n const patternsFlattenedLinux: PathLinux[] = patternsFlattened.map(pathNormalizeToLinux);\n const paths = globby.sync(patternsFlattenedLinux, { cwd: root });\n return paths;\n }\n\n private getArtifactContextPath(context: BuildContext, component: Component, def: ArtifactDefinition) {\n const artifactContext = this.getArtifactContext(def);\n if (artifactContext === 'component') {\n const capsulePath = context.capsuleNetwork.graphCapsules.getCapsule(component.id)?.path;\n if (!capsulePath) throw new CapsuleNotFound(component.id);\n return capsulePath;\n }\n\n return context.capsuleNetwork.capsulesRootDir;\n }\n\n private getArtifactContext(def: ArtifactDefinition) {\n return def.context || DEFAULT_CONTEXT;\n }\n\n createFromComponent(\n context: BuildContext,\n component: Component,\n def: ArtifactDefinition,\n task: BuildTask\n ): FsArtifact | undefined {\n const contextPath = this.getArtifactContextPath(context, component, def);\n const rootDir = this.getRootDir(contextPath, def);\n const paths = this.resolvePaths(rootDir, def);\n if (!paths || !paths.length) {\n return undefined;\n }\n return new FsArtifact(def, new ArtifactFiles(paths), task, rootDir);\n }\n\n private getStorageResolver(def: ArtifactDefinition) {\n return def.storageResolver || new DefaultResolver();\n }\n\n private toComponentMap(context: BuildContext, artifactMap: [string, FsArtifact][]) {\n return ComponentMap.as<ArtifactList<FsArtifact>>(context.components, (component) => {\n const id = component.id.toString();\n const artifacts = artifactMap.filter(([targetId]) => targetId === id).map(([, artifact]) => artifact);\n\n return ArtifactList.fromArray(artifacts);\n });\n }\n\n getRootDir(rootDir: string, def: ArtifactDefinition) {\n if (!def.rootDir) return rootDir;\n return join(rootDir, def.rootDir);\n }\n\n /**\n * generate artifacts from a build context according to the spec defined in the artifact definitions.\n */\n generate(context: BuildContext, defs: ArtifactDefinition[], task: BuildTask): ComponentMap<ArtifactList<FsArtifact>> {\n const tupleArr: [string, FsArtifact][] = [];\n\n defs.forEach((def) => {\n const artifactContext = this.getArtifactContext(def);\n if (artifactContext === 'env') {\n const capsuleDir = context.capsuleNetwork.capsulesRootDir;\n const rootDir = this.getRootDir(capsuleDir, def);\n const paths = this.resolvePaths(rootDir, def);\n if (paths && paths.length) {\n const artifact = new FsArtifact(def, new ArtifactFiles(this.resolvePaths(rootDir, def)), task, rootDir);\n\n return context.components.forEach((component) => {\n tupleArr.push([component.id.toString(), artifact]);\n });\n }\n }\n\n return context.components.forEach((component) => {\n const artifact = this.createFromComponent(context, component, def, task);\n if (artifact) {\n tupleArr.push([component.id.toString(), artifact]);\n }\n });\n });\n\n return this.toComponentMap(context, tupleArr);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_path","data","require","_globby","_interopRequireDefault","_lodash","_component","_component2","_legacy","_storage","_artifactList","_exceptions","_fsArtifact","e","__esModule","default","DEFAULT_CONTEXT","exports","ArtifactFactory","resolvePaths","root","def","patternsFlattened","flatten","globPatterns","patternsFlattenedLinux","map","pathNormalizeToLinux","paths","globby","sync","cwd","getArtifactContextPath","context","component","artifactContext","getArtifactContext","capsulePath","capsuleNetwork","graphCapsules","getCapsule","id","path","CapsuleNotFound","capsulesRootDir","createFromComponent","task","contextPath","rootDir","getRootDir","length","undefined","FsArtifact","ArtifactFiles","getStorageResolver","storageResolver","DefaultResolver","toComponentMap","artifactMap","ComponentMap","as","components","toString","artifacts","filter","targetId","artifact","ArtifactList","fromArray","join","generate","defs","tupleArr","forEach","capsuleDir","push"],"sources":["artifact-factory.ts"],"sourcesContent":["import { join } from 'path';\nimport globby from 'globby';\nimport { flatten } from 'lodash';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport type { Component } from '@teambit/component';\nimport { ComponentMap } from '@teambit/component';\nimport type { PathLinux } from '@teambit/legacy.utils';\nimport { pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport type { ArtifactDefinition } from './artifact-definition';\nimport { DefaultResolver } from '../storage';\nimport { ArtifactList } from './artifact-list';\nimport type { BuildContext, BuildTask } from '../build-task';\nimport { CapsuleNotFound } from '../exceptions';\nimport { FsArtifact } from './fs-artifact';\n\nexport const DEFAULT_CONTEXT = 'component';\n\nexport type ArtifactMap = ComponentMap<ArtifactList<FsArtifact>>;\n\nexport class ArtifactFactory {\n resolvePaths(root: string, def: ArtifactDefinition): string[] {\n const patternsFlattened = flatten(def.globPatterns);\n const patternsFlattenedLinux: PathLinux[] = patternsFlattened.map(pathNormalizeToLinux);\n const paths = globby.sync(patternsFlattenedLinux, { cwd: root });\n return paths;\n }\n\n private getArtifactContextPath(context: BuildContext, component: Component, def: ArtifactDefinition) {\n const artifactContext = this.getArtifactContext(def);\n if (artifactContext === 'component') {\n const capsulePath = context.capsuleNetwork.graphCapsules.getCapsule(component.id)?.path;\n if (!capsulePath) throw new CapsuleNotFound(component.id);\n return capsulePath;\n }\n\n return context.capsuleNetwork.capsulesRootDir;\n }\n\n private getArtifactContext(def: ArtifactDefinition) {\n return def.context || DEFAULT_CONTEXT;\n }\n\n createFromComponent(\n context: BuildContext,\n component: Component,\n def: ArtifactDefinition,\n task: BuildTask\n ): FsArtifact | undefined {\n const contextPath = this.getArtifactContextPath(context, component, def);\n const rootDir = this.getRootDir(contextPath, def);\n const paths = this.resolvePaths(rootDir, def);\n if (!paths || !paths.length) {\n return undefined;\n }\n return new FsArtifact(def, new ArtifactFiles(paths), task, rootDir);\n }\n\n private getStorageResolver(def: ArtifactDefinition) {\n return def.storageResolver || new DefaultResolver();\n }\n\n private toComponentMap(context: BuildContext, artifactMap: [string, FsArtifact][]) {\n return ComponentMap.as<ArtifactList<FsArtifact>>(context.components, (component) => {\n const id = component.id.toString();\n const artifacts = artifactMap.filter(([targetId]) => targetId === id).map(([, artifact]) => artifact);\n\n return ArtifactList.fromArray(artifacts);\n });\n }\n\n getRootDir(rootDir: string, def: ArtifactDefinition) {\n if (!def.rootDir) return rootDir;\n return join(rootDir, def.rootDir);\n }\n\n /**\n * generate artifacts from a build context according to the spec defined in the artifact definitions.\n */\n generate(context: BuildContext, defs: ArtifactDefinition[], task: BuildTask): ComponentMap<ArtifactList<FsArtifact>> {\n const tupleArr: [string, FsArtifact][] = [];\n\n defs.forEach((def) => {\n const artifactContext = this.getArtifactContext(def);\n if (artifactContext === 'env') {\n const capsuleDir = context.capsuleNetwork.capsulesRootDir;\n const rootDir = this.getRootDir(capsuleDir, def);\n const paths = this.resolvePaths(rootDir, def);\n if (paths && paths.length) {\n const artifact = new FsArtifact(def, new ArtifactFiles(this.resolvePaths(rootDir, def)), task, rootDir);\n\n return context.components.forEach((component) => {\n tupleArr.push([component.id.toString(), artifact]);\n });\n }\n }\n\n return context.components.forEach((component) => {\n const artifact = this.createFromComponent(context, component, def, task);\n if (artifact) {\n tupleArr.push([component.id.toString(), artifact]);\n }\n });\n });\n\n return this.toComponentMap(context, tupleArr);\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,QAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,OAAA,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;AACA,SAAAK,WAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,UAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,QAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,OAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,SAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,QAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,cAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,aAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAU,YAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,WAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,YAAA;EAAA,MAAAX,IAAA,GAAAC,OAAA;EAAAU,WAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAG,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpC,MAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,WAAW;AAInC,MAAME,eAAe,CAAC;EAC3BC,YAAYA,CAACC,IAAY,EAAEC,GAAuB,EAAY;IAC5D,MAAMC,iBAAiB,GAAG,IAAAC,iBAAO,EAACF,GAAG,CAACG,YAAY,CAAC;IACnD,MAAMC,sBAAmC,GAAGH,iBAAiB,CAACI,GAAG,CAACC,8BAAoB,CAAC;IACvF,MAAMC,KAAK,GAAGC,iBAAM,CAACC,IAAI,CAACL,sBAAsB,EAAE;MAAEM,GAAG,EAAEX;IAAK,CAAC,CAAC;IAChE,OAAOQ,KAAK;EACd;EAEQI,sBAAsBA,CAACC,OAAqB,EAAEC,SAAoB,EAAEb,GAAuB,EAAE;IACnG,MAAMc,eAAe,GAAG,IAAI,CAACC,kBAAkB,CAACf,GAAG,CAAC;IACpD,IAAIc,eAAe,KAAK,WAAW,EAAE;MACnC,MAAME,WAAW,GAAGJ,OAAO,CAACK,cAAc,CAACC,aAAa,CAACC,UAAU,CAACN,SAAS,CAACO,EAAE,CAAC,EAAEC,IAAI;MACvF,IAAI,CAACL,WAAW,EAAE,MAAM,KAAIM,6BAAe,EAACT,SAAS,CAACO,EAAE,CAAC;MACzD,OAAOJ,WAAW;IACpB;IAEA,OAAOJ,OAAO,CAACK,cAAc,CAACM,eAAe;EAC/C;EAEQR,kBAAkBA,CAACf,GAAuB,EAAE;IAClD,OAAOA,GAAG,CAACY,OAAO,IAAIjB,eAAe;EACvC;EAEA6B,mBAAmBA,CACjBZ,OAAqB,EACrBC,SAAoB,EACpBb,GAAuB,EACvByB,IAAe,EACS;IACxB,MAAMC,WAAW,GAAG,IAAI,CAACf,sBAAsB,CAACC,OAAO,EAAEC,SAAS,EAAEb,GAAG,CAAC;IACxE,MAAM2B,OAAO,GAAG,IAAI,CAACC,UAAU,CAACF,WAAW,EAAE1B,GAAG,CAAC;IACjD,MAAMO,KAAK,GAAG,IAAI,CAACT,YAAY,CAAC6B,OAAO,EAAE3B,GAAG,CAAC;IAC7C,IAAI,CAACO,KAAK,IAAI,CAACA,KAAK,CAACsB,MAAM,EAAE;MAC3B,OAAOC,SAAS;IAClB;IACA,OAAO,KAAIC,wBAAU,EAAC/B,GAAG,EAAE,KAAIgC,0BAAa,EAACzB,KAAK,CAAC,EAAEkB,IAAI,EAAEE,OAAO,CAAC;EACrE;EAEQM,kBAAkBA,CAACjC,GAAuB,EAAE;IAClD,OAAOA,GAAG,CAACkC,eAAe,IAAI,KAAIC,0BAAe,EAAC,CAAC;EACrD;EAEQC,cAAcA,CAACxB,OAAqB,EAAEyB,WAAmC,EAAE;IACjF,OAAOC,0BAAY,CAACC,EAAE,CAA2B3B,OAAO,CAAC4B,UAAU,EAAG3B,SAAS,IAAK;MAClF,MAAMO,EAAE,GAAGP,SAAS,CAACO,EAAE,CAACqB,QAAQ,CAAC,CAAC;MAClC,MAAMC,SAAS,GAAGL,WAAW,CAACM,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,KAAKA,QAAQ,KAAKxB,EAAE,CAAC,CAACf,GAAG,CAAC,CAAC,GAAGwC,QAAQ,CAAC,KAAKA,QAAQ,CAAC;MAErG,OAAOC,4BAAY,CAACC,SAAS,CAACL,SAAS,CAAC;IAC1C,CAAC,CAAC;EACJ;EAEAd,UAAUA,CAACD,OAAe,EAAE3B,GAAuB,EAAE;IACnD,IAAI,CAACA,GAAG,CAAC2B,OAAO,EAAE,OAAOA,OAAO;IAChC,OAAO,IAAAqB,YAAI,EAACrB,OAAO,EAAE3B,GAAG,CAAC2B,OAAO,CAAC;EACnC;;EAEA;AACF;AACA;EACEsB,QAAQA,CAACrC,OAAqB,EAAEsC,IAA0B,EAAEzB,IAAe,EAA0C;IACnH,MAAM0B,QAAgC,GAAG,EAAE;IAE3CD,IAAI,CAACE,OAAO,CAAEpD,GAAG,IAAK;MACpB,MAAMc,eAAe,GAAG,IAAI,CAACC,kBAAkB,CAACf,GAAG,CAAC;MACpD,IAAIc,eAAe,KAAK,KAAK,EAAE;QAC7B,MAAMuC,UAAU,GAAGzC,OAAO,CAACK,cAAc,CAACM,eAAe;QACzD,MAAMI,OAAO,GAAG,IAAI,CAACC,UAAU,CAACyB,UAAU,EAAErD,GAAG,CAAC;QAChD,MAAMO,KAAK,GAAG,IAAI,CAACT,YAAY,CAAC6B,OAAO,EAAE3B,GAAG,CAAC;QAC7C,IAAIO,KAAK,IAAIA,KAAK,CAACsB,MAAM,EAAE;UACzB,MAAMgB,QAAQ,GAAG,KAAId,wBAAU,EAAC/B,GAAG,EAAE,KAAIgC,0BAAa,EAAC,IAAI,CAAClC,YAAY,CAAC6B,OAAO,EAAE3B,GAAG,CAAC,CAAC,EAAEyB,IAAI,EAAEE,OAAO,CAAC;UAEvG,OAAOf,OAAO,CAAC4B,UAAU,CAACY,OAAO,CAAEvC,SAAS,IAAK;YAC/CsC,QAAQ,CAACG,IAAI,CAAC,CAACzC,SAAS,CAACO,EAAE,CAACqB,QAAQ,CAAC,CAAC,EAAEI,QAAQ,CAAC,CAAC;UACpD,CAAC,CAAC;QACJ;MACF;MAEA,OAAOjC,OAAO,CAAC4B,UAAU,CAACY,OAAO,CAAEvC,SAAS,IAAK;QAC/C,MAAMgC,QAAQ,GAAG,IAAI,CAACrB,mBAAmB,CAACZ,OAAO,EAAEC,SAAS,EAAEb,GAAG,EAAEyB,IAAI,CAAC;QACxE,IAAIoB,QAAQ,EAAE;UACZM,QAAQ,CAACG,IAAI,CAAC,CAACzC,SAAS,CAACO,EAAE,CAACqB,QAAQ,CAAC,CAAC,EAAEI,QAAQ,CAAC,CAAC;QACpD;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,CAACT,cAAc,CAACxB,OAAO,EAAEuC,QAAQ,CAAC;EAC/C;AACF;AAACvD,OAAA,CAAAC,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -1,8 +1,7 @@
1
- import { Component } from '@teambit/component';
2
- import type { ArtifactObject } from '@teambit/component.sources';
3
- import { ComponentID } from '@teambit/component-id';
4
- import { Scope } from '@teambit/legacy.scope';
5
- import { ArtifactVinyl } from '@teambit/component.sources';
1
+ import type { Component } from '@teambit/component';
2
+ import type { ArtifactObject, ArtifactVinyl } from '@teambit/component.sources';
3
+ import type { ComponentID } from '@teambit/component-id';
4
+ import type { Scope } from '@teambit/legacy.scope';
6
5
  import { Artifact } from './artifact';
7
6
  export type ResolverMap<T extends Artifact> = {
8
7
  [key: string]: T[];
@@ -1 +1 @@
1
- {"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_artifact","_storage","e","__esModule","default","ArtifactList","Array","byAspectNameAndName","aspectName","name","filtered","filter","artifact","cond","task","aspectId","fromArray","byAspectNameAndTaskName","findByName","find","findByTaskName","isEmpty","every","files","groupByResolver","resolverMap","forEach","storageResolver","resolverArray","length","push","toObject","map","groupByTaskId","reduce","acc","taskId","getVinylsAndImportIfMissing","id","scope","vinyls","pMapSeries","flat","store","component","byResolvers","Promise","all","Object","keys","key","artifacts","artifactList","storeArtifact","defaultResolver","DefaultResolver","storeWholeArtifactByResolver","storeArtifactFilesByResolver","results","file","url","relative","promises","storeFile","fromArtifactObjects","artifactObjects","object","Artifact","fromArtifactObject","exports"],"sources":["artifact-list.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport pMapSeries from 'p-map-series';\nimport type { ArtifactObject } from '@teambit/component.sources';\nimport { ComponentID } from '@teambit/component-id';\nimport { Scope } from '@teambit/legacy.scope';\nimport { ArtifactVinyl } from '@teambit/component.sources';\nimport { FsArtifact } from './fs-artifact';\nimport { Artifact } from './artifact';\nimport {\n ArtifactStorageResolver,\n FileStorageResolver,\n WholeArtifactStorageResolver,\n DefaultResolver,\n} from '../storage';\n\nexport type ResolverMap<T extends Artifact> = { [key: string]: T[] };\n\nexport class ArtifactList<T extends Artifact> extends Array<T> {\n byAspectNameAndName(aspectName?: string, name?: string): ArtifactList<T> {\n const filtered = this.filter((artifact) => {\n let cond = true;\n if (aspectName) {\n cond = cond && artifact.task.aspectId === aspectName;\n }\n if (name) {\n cond = cond && artifact.name === name;\n }\n return cond;\n });\n return ArtifactList.fromArray(filtered);\n }\n\n byAspectNameAndTaskName(aspectName?: string, name?: string): ArtifactList<T> {\n const filtered = this.filter((artifact) => {\n let cond = true;\n if (aspectName) {\n cond = cond && artifact.task.aspectId === aspectName;\n }\n if (name) {\n cond = cond && artifact.task.name === name;\n }\n return cond;\n });\n return ArtifactList.fromArray(filtered);\n }\n\n /**\n * find by the artifact name. it's possible to have multiple artifacts with the same name, in which case it returns the first.\n */\n findByName(name: string): Artifact | undefined {\n return this.find((artifact) => artifact.name === name);\n }\n\n /**\n * find by the task name. it's possible to have multiple tasks with the same name (different aspects), in which case it returns the first.\n */\n findByTaskName(name: string): Artifact | undefined {\n return this.find((artifact) => artifact.task.name === name);\n }\n\n isEmpty(): boolean {\n return this.every((artifact) => artifact.files.isEmpty());\n }\n\n /**\n * group artifacts by the storage resolver.\n */\n groupByResolver(): ResolverMap<T> {\n const resolverMap: ResolverMap<T> = {};\n this.forEach((artifact) => {\n const storageResolver = artifact.storageResolver;\n const resolverArray = resolverMap[storageResolver.name];\n if (!resolverArray) {\n resolverMap[storageResolver.name] = [artifact];\n return;\n }\n if (resolverArray.length) {\n resolverMap[storageResolver.name].push(artifact);\n }\n });\n\n return resolverMap;\n }\n\n toObject(): ArtifactObject[] {\n return this.map((artifact) => artifact.toObject());\n }\n\n groupByTaskId() {\n return this.reduce((acc: { [key: string]: T }, artifact) => {\n const taskId = artifact.task.aspectId;\n acc[taskId] = artifact;\n return acc;\n }, {});\n }\n\n async getVinylsAndImportIfMissing(id: ComponentID, scope: Scope): Promise<ArtifactVinyl[]> {\n if (this.isEmpty()) return [];\n const vinyls = await pMapSeries(this, (artifact) => artifact.files.getVinylsAndImportIfMissing(id, scope));\n return vinyls.flat();\n }\n\n /**\n * store all artifacts using the configured storage resolvers.\n */\n async store(component: Component) {\n const byResolvers = this.groupByResolver();\n await Promise.all(\n Object.keys(byResolvers).map(async (key) => {\n const artifacts = byResolvers[key];\n if (!artifacts.length) return;\n const storageResolver = artifacts[0].storageResolver;\n const artifactList = ArtifactList.fromArray(artifacts);\n await Promise.all(\n artifactList.map(async (artifact) => {\n await this.storeArtifact(storageResolver, artifact, component);\n })\n );\n })\n );\n }\n\n private async storeArtifact(storageResolver: ArtifactStorageResolver, artifact: Artifact, component: Component) {\n // For now we are always storing also using the default resolver\n if (storageResolver.name !== 'default') {\n const defaultResolver = new DefaultResolver();\n await defaultResolver.store(component, artifact as FsArtifact);\n }\n // @ts-ignore\n if (storageResolver.store && typeof storageResolver.store === 'function') {\n return this.storeWholeArtifactByResolver(storageResolver as WholeArtifactStorageResolver, artifact, component);\n }\n return this.storeArtifactFilesByResolver(storageResolver as FileStorageResolver, artifact, component);\n }\n\n /**\n * Send the entire artifact to the resolver then get back the result for all files from the resolver\n * @param storageResolver\n * @param artifact\n * @param component\n */\n private async storeWholeArtifactByResolver(\n storageResolver: WholeArtifactStorageResolver,\n artifact: Artifact,\n component: Component\n ) {\n const results = await storageResolver.store(component, artifact as FsArtifact);\n if (!results) return;\n artifact.files.vinyls.map((file) => {\n const url = results[file.relative];\n if (url) {\n file.url = url;\n }\n });\n }\n\n /**\n * Go over the artifact files and send them to the resolver one by one\n * @param storageResolver\n * @param artifact\n * @param component\n */\n private storeArtifactFilesByResolver(storageResolver: FileStorageResolver, artifact: Artifact, component: Component) {\n const promises = artifact.files.vinyls.map(async (file) => {\n const url = await storageResolver.storeFile(component, artifact as FsArtifact, file);\n if (url) {\n file.url = url;\n }\n });\n return Promise.all(promises);\n }\n\n static fromArtifactObjects(artifactObjects: ArtifactObject[]): ArtifactList<Artifact> {\n const artifacts = artifactObjects.map((object) => Artifact.fromArtifactObject(object));\n return ArtifactList.fromArray(artifacts);\n }\n\n static fromArray<T extends Artifact>(artifacts: T[]) {\n return new ArtifactList(...artifacts);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_artifact","_storage","e","__esModule","default","ArtifactList","Array","byAspectNameAndName","aspectName","name","filtered","filter","artifact","cond","task","aspectId","fromArray","byAspectNameAndTaskName","findByName","find","findByTaskName","isEmpty","every","files","groupByResolver","resolverMap","forEach","storageResolver","resolverArray","length","push","toObject","map","groupByTaskId","reduce","acc","taskId","getVinylsAndImportIfMissing","id","scope","vinyls","pMapSeries","flat","store","component","byResolvers","Promise","all","Object","keys","key","artifacts","artifactList","storeArtifact","defaultResolver","DefaultResolver","storeWholeArtifactByResolver","storeArtifactFilesByResolver","results","file","url","relative","promises","storeFile","fromArtifactObjects","artifactObjects","object","Artifact","fromArtifactObject","exports"],"sources":["artifact-list.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport pMapSeries from 'p-map-series';\nimport type { ArtifactObject, ArtifactVinyl } from '@teambit/component.sources';\nimport type { ComponentID } from '@teambit/component-id';\nimport type { Scope } from '@teambit/legacy.scope';\nimport type { FsArtifact } from './fs-artifact';\nimport { Artifact } from './artifact';\nimport type { ArtifactStorageResolver, FileStorageResolver, WholeArtifactStorageResolver } from '../storage';\nimport { DefaultResolver } from '../storage';\n\nexport type ResolverMap<T extends Artifact> = { [key: string]: T[] };\n\nexport class ArtifactList<T extends Artifact> extends Array<T> {\n byAspectNameAndName(aspectName?: string, name?: string): ArtifactList<T> {\n const filtered = this.filter((artifact) => {\n let cond = true;\n if (aspectName) {\n cond = cond && artifact.task.aspectId === aspectName;\n }\n if (name) {\n cond = cond && artifact.name === name;\n }\n return cond;\n });\n return ArtifactList.fromArray(filtered);\n }\n\n byAspectNameAndTaskName(aspectName?: string, name?: string): ArtifactList<T> {\n const filtered = this.filter((artifact) => {\n let cond = true;\n if (aspectName) {\n cond = cond && artifact.task.aspectId === aspectName;\n }\n if (name) {\n cond = cond && artifact.task.name === name;\n }\n return cond;\n });\n return ArtifactList.fromArray(filtered);\n }\n\n /**\n * find by the artifact name. it's possible to have multiple artifacts with the same name, in which case it returns the first.\n */\n findByName(name: string): Artifact | undefined {\n return this.find((artifact) => artifact.name === name);\n }\n\n /**\n * find by the task name. it's possible to have multiple tasks with the same name (different aspects), in which case it returns the first.\n */\n findByTaskName(name: string): Artifact | undefined {\n return this.find((artifact) => artifact.task.name === name);\n }\n\n isEmpty(): boolean {\n return this.every((artifact) => artifact.files.isEmpty());\n }\n\n /**\n * group artifacts by the storage resolver.\n */\n groupByResolver(): ResolverMap<T> {\n const resolverMap: ResolverMap<T> = {};\n this.forEach((artifact) => {\n const storageResolver = artifact.storageResolver;\n const resolverArray = resolverMap[storageResolver.name];\n if (!resolverArray) {\n resolverMap[storageResolver.name] = [artifact];\n return;\n }\n if (resolverArray.length) {\n resolverMap[storageResolver.name].push(artifact);\n }\n });\n\n return resolverMap;\n }\n\n toObject(): ArtifactObject[] {\n return this.map((artifact) => artifact.toObject());\n }\n\n groupByTaskId() {\n return this.reduce((acc: { [key: string]: T }, artifact) => {\n const taskId = artifact.task.aspectId;\n acc[taskId] = artifact;\n return acc;\n }, {});\n }\n\n async getVinylsAndImportIfMissing(id: ComponentID, scope: Scope): Promise<ArtifactVinyl[]> {\n if (this.isEmpty()) return [];\n const vinyls = await pMapSeries(this, (artifact) => artifact.files.getVinylsAndImportIfMissing(id, scope));\n return vinyls.flat();\n }\n\n /**\n * store all artifacts using the configured storage resolvers.\n */\n async store(component: Component) {\n const byResolvers = this.groupByResolver();\n await Promise.all(\n Object.keys(byResolvers).map(async (key) => {\n const artifacts = byResolvers[key];\n if (!artifacts.length) return;\n const storageResolver = artifacts[0].storageResolver;\n const artifactList = ArtifactList.fromArray(artifacts);\n await Promise.all(\n artifactList.map(async (artifact) => {\n await this.storeArtifact(storageResolver, artifact, component);\n })\n );\n })\n );\n }\n\n private async storeArtifact(storageResolver: ArtifactStorageResolver, artifact: Artifact, component: Component) {\n // For now we are always storing also using the default resolver\n if (storageResolver.name !== 'default') {\n const defaultResolver = new DefaultResolver();\n await defaultResolver.store(component, artifact as FsArtifact);\n }\n // @ts-ignore\n if (storageResolver.store && typeof storageResolver.store === 'function') {\n return this.storeWholeArtifactByResolver(storageResolver as WholeArtifactStorageResolver, artifact, component);\n }\n return this.storeArtifactFilesByResolver(storageResolver as FileStorageResolver, artifact, component);\n }\n\n /**\n * Send the entire artifact to the resolver then get back the result for all files from the resolver\n * @param storageResolver\n * @param artifact\n * @param component\n */\n private async storeWholeArtifactByResolver(\n storageResolver: WholeArtifactStorageResolver,\n artifact: Artifact,\n component: Component\n ) {\n const results = await storageResolver.store(component, artifact as FsArtifact);\n if (!results) return;\n artifact.files.vinyls.map((file) => {\n const url = results[file.relative];\n if (url) {\n file.url = url;\n }\n });\n }\n\n /**\n * Go over the artifact files and send them to the resolver one by one\n * @param storageResolver\n * @param artifact\n * @param component\n */\n private storeArtifactFilesByResolver(storageResolver: FileStorageResolver, artifact: Artifact, component: Component) {\n const promises = artifact.files.vinyls.map(async (file) => {\n const url = await storageResolver.storeFile(component, artifact as FsArtifact, file);\n if (url) {\n file.url = url;\n }\n });\n return Promise.all(promises);\n }\n\n static fromArtifactObjects(artifactObjects: ArtifactObject[]): ArtifactList<Artifact> {\n const artifacts = artifactObjects.map((object) => Artifact.fromArtifactObject(object));\n return ArtifactList.fromArray(artifacts);\n }\n\n static fromArray<T extends Artifact>(artifacts: T[]) {\n return new ArtifactList(...artifacts);\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,SAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,QAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6C,SAAAC,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAItC,MAAMG,YAAY,SAA6BC,KAAK,CAAI;EAC7DC,mBAAmBA,CAACC,UAAmB,EAAEC,IAAa,EAAmB;IACvE,MAAMC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAEC,QAAQ,IAAK;MACzC,IAAIC,IAAI,GAAG,IAAI;MACf,IAAIL,UAAU,EAAE;QACdK,IAAI,GAAGA,IAAI,IAAID,QAAQ,CAACE,IAAI,CAACC,QAAQ,KAAKP,UAAU;MACtD;MACA,IAAIC,IAAI,EAAE;QACRI,IAAI,GAAGA,IAAI,IAAID,QAAQ,CAACH,IAAI,KAAKA,IAAI;MACvC;MACA,OAAOI,IAAI;IACb,CAAC,CAAC;IACF,OAAOR,YAAY,CAACW,SAAS,CAACN,QAAQ,CAAC;EACzC;EAEAO,uBAAuBA,CAACT,UAAmB,EAAEC,IAAa,EAAmB;IAC3E,MAAMC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAEC,QAAQ,IAAK;MACzC,IAAIC,IAAI,GAAG,IAAI;MACf,IAAIL,UAAU,EAAE;QACdK,IAAI,GAAGA,IAAI,IAAID,QAAQ,CAACE,IAAI,CAACC,QAAQ,KAAKP,UAAU;MACtD;MACA,IAAIC,IAAI,EAAE;QACRI,IAAI,GAAGA,IAAI,IAAID,QAAQ,CAACE,IAAI,CAACL,IAAI,KAAKA,IAAI;MAC5C;MACA,OAAOI,IAAI;IACb,CAAC,CAAC;IACF,OAAOR,YAAY,CAACW,SAAS,CAACN,QAAQ,CAAC;EACzC;;EAEA;AACF;AACA;EACEQ,UAAUA,CAACT,IAAY,EAAwB;IAC7C,OAAO,IAAI,CAACU,IAAI,CAAEP,QAAQ,IAAKA,QAAQ,CAACH,IAAI,KAAKA,IAAI,CAAC;EACxD;;EAEA;AACF;AACA;EACEW,cAAcA,CAACX,IAAY,EAAwB;IACjD,OAAO,IAAI,CAACU,IAAI,CAAEP,QAAQ,IAAKA,QAAQ,CAACE,IAAI,CAACL,IAAI,KAAKA,IAAI,CAAC;EAC7D;EAEAY,OAAOA,CAAA,EAAY;IACjB,OAAO,IAAI,CAACC,KAAK,CAAEV,QAAQ,IAAKA,QAAQ,CAACW,KAAK,CAACF,OAAO,CAAC,CAAC,CAAC;EAC3D;;EAEA;AACF;AACA;EACEG,eAAeA,CAAA,EAAmB;IAChC,MAAMC,WAA2B,GAAG,CAAC,CAAC;IACtC,IAAI,CAACC,OAAO,CAAEd,QAAQ,IAAK;MACzB,MAAMe,eAAe,GAAGf,QAAQ,CAACe,eAAe;MAChD,MAAMC,aAAa,GAAGH,WAAW,CAACE,eAAe,CAAClB,IAAI,CAAC;MACvD,IAAI,CAACmB,aAAa,EAAE;QAClBH,WAAW,CAACE,eAAe,CAAClB,IAAI,CAAC,GAAG,CAACG,QAAQ,CAAC;QAC9C;MACF;MACA,IAAIgB,aAAa,CAACC,MAAM,EAAE;QACxBJ,WAAW,CAACE,eAAe,CAAClB,IAAI,CAAC,CAACqB,IAAI,CAAClB,QAAQ,CAAC;MAClD;IACF,CAAC,CAAC;IAEF,OAAOa,WAAW;EACpB;EAEAM,QAAQA,CAAA,EAAqB;IAC3B,OAAO,IAAI,CAACC,GAAG,CAAEpB,QAAQ,IAAKA,QAAQ,CAACmB,QAAQ,CAAC,CAAC,CAAC;EACpD;EAEAE,aAAaA,CAAA,EAAG;IACd,OAAO,IAAI,CAACC,MAAM,CAAC,CAACC,GAAyB,EAAEvB,QAAQ,KAAK;MAC1D,MAAMwB,MAAM,GAAGxB,QAAQ,CAACE,IAAI,CAACC,QAAQ;MACrCoB,GAAG,CAACC,MAAM,CAAC,GAAGxB,QAAQ;MACtB,OAAOuB,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EACR;EAEA,MAAME,2BAA2BA,CAACC,EAAe,EAAEC,KAAY,EAA4B;IACzF,IAAI,IAAI,CAAClB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE;IAC7B,MAAMmB,MAAM,GAAG,MAAM,IAAAC,qBAAU,EAAC,IAAI,EAAG7B,QAAQ,IAAKA,QAAQ,CAACW,KAAK,CAACc,2BAA2B,CAACC,EAAE,EAAEC,KAAK,CAAC,CAAC;IAC1G,OAAOC,MAAM,CAACE,IAAI,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;EACE,MAAMC,KAAKA,CAACC,SAAoB,EAAE;IAChC,MAAMC,WAAW,GAAG,IAAI,CAACrB,eAAe,CAAC,CAAC;IAC1C,MAAMsB,OAAO,CAACC,GAAG,CACfC,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,CAACb,GAAG,CAAC,MAAOkB,GAAG,IAAK;MAC1C,MAAMC,SAAS,GAAGN,WAAW,CAACK,GAAG,CAAC;MAClC,IAAI,CAACC,SAAS,CAACtB,MAAM,EAAE;MACvB,MAAMF,eAAe,GAAGwB,SAAS,CAAC,CAAC,CAAC,CAACxB,eAAe;MACpD,MAAMyB,YAAY,GAAG/C,YAAY,CAACW,SAAS,CAACmC,SAAS,CAAC;MACtD,MAAML,OAAO,CAACC,GAAG,CACfK,YAAY,CAACpB,GAAG,CAAC,MAAOpB,QAAQ,IAAK;QACnC,MAAM,IAAI,CAACyC,aAAa,CAAC1B,eAAe,EAAEf,QAAQ,EAAEgC,SAAS,CAAC;MAChE,CAAC,CACH,CAAC;IACH,CAAC,CACH,CAAC;EACH;EAEA,MAAcS,aAAaA,CAAC1B,eAAwC,EAAEf,QAAkB,EAAEgC,SAAoB,EAAE;IAC9G;IACA,IAAIjB,eAAe,CAAClB,IAAI,KAAK,SAAS,EAAE;MACtC,MAAM6C,eAAe,GAAG,KAAIC,0BAAe,EAAC,CAAC;MAC7C,MAAMD,eAAe,CAACX,KAAK,CAACC,SAAS,EAAEhC,QAAsB,CAAC;IAChE;IACA;IACA,IAAIe,eAAe,CAACgB,KAAK,IAAI,OAAOhB,eAAe,CAACgB,KAAK,KAAK,UAAU,EAAE;MACxE,OAAO,IAAI,CAACa,4BAA4B,CAAC7B,eAAe,EAAkCf,QAAQ,EAAEgC,SAAS,CAAC;IAChH;IACA,OAAO,IAAI,CAACa,4BAA4B,CAAC9B,eAAe,EAAyBf,QAAQ,EAAEgC,SAAS,CAAC;EACvG;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAcY,4BAA4BA,CACxC7B,eAA6C,EAC7Cf,QAAkB,EAClBgC,SAAoB,EACpB;IACA,MAAMc,OAAO,GAAG,MAAM/B,eAAe,CAACgB,KAAK,CAACC,SAAS,EAAEhC,QAAsB,CAAC;IAC9E,IAAI,CAAC8C,OAAO,EAAE;IACd9C,QAAQ,CAACW,KAAK,CAACiB,MAAM,CAACR,GAAG,CAAE2B,IAAI,IAAK;MAClC,MAAMC,GAAG,GAAGF,OAAO,CAACC,IAAI,CAACE,QAAQ,CAAC;MAClC,IAAID,GAAG,EAAE;QACPD,IAAI,CAACC,GAAG,GAAGA,GAAG;MAChB;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;EACUH,4BAA4BA,CAAC9B,eAAoC,EAAEf,QAAkB,EAAEgC,SAAoB,EAAE;IACnH,MAAMkB,QAAQ,GAAGlD,QAAQ,CAACW,KAAK,CAACiB,MAAM,CAACR,GAAG,CAAC,MAAO2B,IAAI,IAAK;MACzD,MAAMC,GAAG,GAAG,MAAMjC,eAAe,CAACoC,SAAS,CAACnB,SAAS,EAAEhC,QAAQ,EAAgB+C,IAAI,CAAC;MACpF,IAAIC,GAAG,EAAE;QACPD,IAAI,CAACC,GAAG,GAAGA,GAAG;MAChB;IACF,CAAC,CAAC;IACF,OAAOd,OAAO,CAACC,GAAG,CAACe,QAAQ,CAAC;EAC9B;EAEA,OAAOE,mBAAmBA,CAACC,eAAiC,EAA0B;IACpF,MAAMd,SAAS,GAAGc,eAAe,CAACjC,GAAG,CAAEkC,MAAM,IAAKC,oBAAQ,CAACC,kBAAkB,CAACF,MAAM,CAAC,CAAC;IACtF,OAAO7D,YAAY,CAACW,SAAS,CAACmC,SAAS,CAAC;EAC1C;EAEA,OAAOnC,SAASA,CAAqBmC,SAAc,EAAE;IACnD,OAAO,IAAI9C,YAAY,CAAC,GAAG8C,SAAS,CAAC;EACvC;AACF;AAACkB,OAAA,CAAAhE,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { Command, CommandOptions } from '@teambit/cli';
2
- import { ComponentMain } from '@teambit/component';
3
- import { BuilderMain } from '../builder.main.runtime';
1
+ import type { Command, CommandOptions } from '@teambit/cli';
2
+ import type { ComponentMain } from '@teambit/component';
3
+ import type { BuilderMain } from '../builder.main.runtime';
4
4
  export type ArtifactsOpts = {
5
5
  aspect?: string;
6
6
  task?: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_legacy","_artifactExtractor","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","INDENT_TITLE","repeat","INDENT_SUB_TITLE","INDENT_FILES","ArtifactsCmd","constructor","builder","componentMain","name","description","COMPONENT_PATTERN_HELP","report","componentPattern","artifactsOpts","artifactExtractor","ArtifactExtractor","list","grouped","groupResultsByAspect","outputArtifacts","aspectId","artifactData","title","chalk","green","artifactDataStr","map","artifact","subTitle","white","taskName","artifactName","files","f","dim","join","outputResult","result","idStr","cyan","id","toString","artifacts","keys","footer","outDir","exports"],"sources":["artifacts.cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport { ComponentMain } from '@teambit/component';\nimport { BuilderMain } from '../builder.main.runtime';\nimport { ArtifactExtractor, ExtractorArtifactResult, ExtractorResultGrouped } from './artifact-extractor';\n\nconst INDENT_TITLE = ' '.repeat(2);\nconst INDENT_SUB_TITLE = ' '.repeat(4);\nconst INDENT_FILES = ' '.repeat(6);\n\nexport type ArtifactsOpts = {\n aspect?: string;\n task?: string;\n files?: string;\n outDir?: string;\n};\n\nexport class ArtifactsCmd implements Command {\n name = 'artifacts <component-pattern>';\n description = 'list and download component artifacts';\n extendedDescription = `artifacts are created on isolated capsules during tag or snap commands.\nexample of artifacts are dists files generated by a compiler, a JUnit.xml file generated by a tester\nand a package.tgz file generated by pkg aspect.\n`;\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n alias = '';\n group = 'testing';\n helpUrl = 'reference/components/component-artifacts';\n options = [\n ['', 'aspect <aspect-id>', 'show/download only artifacts generated by this aspect-id'],\n ['', 'task <task-id>', 'show/download only artifacts generated by this task-id'],\n [\n '',\n 'files <glob>',\n 'show/download only artifacts matching the given files or the glob pattern (wrap glob patterns in quotes)',\n ],\n ['', 'out-dir <string>', 'download the files to the specified dir'],\n ] as CommandOptions;\n\n constructor(\n private builder: BuilderMain,\n private componentMain: ComponentMain\n ) {}\n\n async report([componentPattern]: [string], artifactsOpts: ArtifactsOpts): Promise<string> {\n const artifactExtractor = new ArtifactExtractor(this.componentMain, this.builder, componentPattern, artifactsOpts);\n const list = await artifactExtractor.list();\n const grouped = artifactExtractor.groupResultsByAspect(list);\n const outputArtifacts = (aspectId: string, artifactData: ExtractorArtifactResult[]) => {\n const title = chalk.green(aspectId);\n const artifactDataStr = artifactData\n .map((artifact) => {\n const subTitle = chalk.white(`${artifact.taskName} (${artifact.artifactName})`);\n const files = artifact.files.map((f) => INDENT_FILES + chalk.dim(f)).join('\\n');\n return `${INDENT_SUB_TITLE}${subTitle}\\n${files}`;\n })\n .join('\\n');\n return `${INDENT_TITLE}${title}\\n${artifactDataStr}`;\n };\n const outputResult = (result: ExtractorResultGrouped) => {\n const idStr = chalk.cyan(result.id.toString());\n const artifacts = Object.keys(result.artifacts)\n .map((aspectId) => outputArtifacts(aspectId, result.artifacts[aspectId]))\n .join('\\n\\n');\n return `${idStr}\\n${artifacts}`;\n };\n const footer = artifactsOpts.outDir\n ? chalk.green('\\n\\nThe above files were saved successfully to the file system')\n : '';\n return grouped.map(outputResult).join('\\n\\n') + footer;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_legacy","_artifactExtractor","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","INDENT_TITLE","repeat","INDENT_SUB_TITLE","INDENT_FILES","ArtifactsCmd","constructor","builder","componentMain","name","description","COMPONENT_PATTERN_HELP","report","componentPattern","artifactsOpts","artifactExtractor","ArtifactExtractor","list","grouped","groupResultsByAspect","outputArtifacts","aspectId","artifactData","title","chalk","green","artifactDataStr","map","artifact","subTitle","white","taskName","artifactName","files","f","dim","join","outputResult","result","idStr","cyan","id","toString","artifacts","keys","footer","outDir","exports"],"sources":["artifacts.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { ComponentMain } from '@teambit/component';\nimport type { BuilderMain } from '../builder.main.runtime';\nimport type { ExtractorArtifactResult, ExtractorResultGrouped } from './artifact-extractor';\nimport { ArtifactExtractor } from './artifact-extractor';\n\nconst INDENT_TITLE = ' '.repeat(2);\nconst INDENT_SUB_TITLE = ' '.repeat(4);\nconst INDENT_FILES = ' '.repeat(6);\n\nexport type ArtifactsOpts = {\n aspect?: string;\n task?: string;\n files?: string;\n outDir?: string;\n};\n\nexport class ArtifactsCmd implements Command {\n name = 'artifacts <component-pattern>';\n description = 'list and download component artifacts';\n extendedDescription = `artifacts are created on isolated capsules during tag or snap commands.\nexample of artifacts are dists files generated by a compiler, a JUnit.xml file generated by a tester\nand a package.tgz file generated by pkg aspect.\n`;\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n alias = '';\n group = 'testing';\n helpUrl = 'reference/components/component-artifacts';\n options = [\n ['', 'aspect <aspect-id>', 'show/download only artifacts generated by this aspect-id'],\n ['', 'task <task-id>', 'show/download only artifacts generated by this task-id'],\n [\n '',\n 'files <glob>',\n 'show/download only artifacts matching the given files or the glob pattern (wrap glob patterns in quotes)',\n ],\n ['', 'out-dir <string>', 'download the files to the specified dir'],\n ] as CommandOptions;\n\n constructor(\n private builder: BuilderMain,\n private componentMain: ComponentMain\n ) {}\n\n async report([componentPattern]: [string], artifactsOpts: ArtifactsOpts): Promise<string> {\n const artifactExtractor = new ArtifactExtractor(this.componentMain, this.builder, componentPattern, artifactsOpts);\n const list = await artifactExtractor.list();\n const grouped = artifactExtractor.groupResultsByAspect(list);\n const outputArtifacts = (aspectId: string, artifactData: ExtractorArtifactResult[]) => {\n const title = chalk.green(aspectId);\n const artifactDataStr = artifactData\n .map((artifact) => {\n const subTitle = chalk.white(`${artifact.taskName} (${artifact.artifactName})`);\n const files = artifact.files.map((f) => INDENT_FILES + chalk.dim(f)).join('\\n');\n return `${INDENT_SUB_TITLE}${subTitle}\\n${files}`;\n })\n .join('\\n');\n return `${INDENT_TITLE}${title}\\n${artifactDataStr}`;\n };\n const outputResult = (result: ExtractorResultGrouped) => {\n const idStr = chalk.cyan(result.id.toString());\n const artifacts = Object.keys(result.artifacts)\n .map((aspectId) => outputArtifacts(aspectId, result.artifacts[aspectId]))\n .join('\\n\\n');\n return `${idStr}\\n${artifacts}`;\n };\n const footer = artifactsOpts.outDir\n ? chalk.green('\\n\\nThe above files were saved successfully to the file system')\n : '';\n return grouped.map(outputResult).join('\\n\\n') + footer;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { AspectDescriptor } from '@teambit/aspect-loader';
2
- import { AbstractVinyl } from '@teambit/component.sources';
2
+ import type { AbstractVinyl } from '@teambit/component.sources';
3
3
  export declare class ExtensionArtifact {
4
4
  readonly files: AbstractVinyl[];
5
5
  readonly extensionDescriptor: AspectDescriptor;
@@ -1 +1 @@
1
- {"version":3,"names":["ExtensionArtifact","constructor","files","extensionDescriptor","toObject","exports"],"sources":["extension-artifact.ts"],"sourcesContent":["import type { AspectDescriptor } from '@teambit/aspect-loader';\nimport { AbstractVinyl } from '@teambit/component.sources';\n\nexport class ExtensionArtifact {\n constructor(\n readonly files: AbstractVinyl[],\n readonly extensionDescriptor: AspectDescriptor\n ) {}\n\n toObject() {\n return {\n extensionDescriptor: this.extensionDescriptor,\n };\n }\n}\n"],"mappings":";;;;;;AAGO,MAAMA,iBAAiB,CAAC;EAC7BC,WAAWA,CACAC,KAAsB,EACtBC,mBAAqC,EAC9C;IAAA,KAFSD,KAAsB,GAAtBA,KAAsB;IAAA,KACtBC,mBAAqC,GAArCA,mBAAqC;EAC7C;EAEHC,QAAQA,CAAA,EAAG;IACT,OAAO;MACLD,mBAAmB,EAAE,IAAI,CAACA;IAC5B,CAAC;EACH;AACF;AAACE,OAAA,CAAAL,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["ExtensionArtifact","constructor","files","extensionDescriptor","toObject","exports"],"sources":["extension-artifact.ts"],"sourcesContent":["import type { AspectDescriptor } from '@teambit/aspect-loader';\nimport type { AbstractVinyl } from '@teambit/component.sources';\n\nexport class ExtensionArtifact {\n constructor(\n readonly files: AbstractVinyl[],\n readonly extensionDescriptor: AspectDescriptor\n ) {}\n\n toObject() {\n return {\n extensionDescriptor: this.extensionDescriptor,\n };\n }\n}\n"],"mappings":";;;;;;AAGO,MAAMA,iBAAiB,CAAC;EAC7BC,WAAWA,CACAC,KAAsB,EACtBC,mBAAqC,EAC9C;IAAA,KAFSD,KAAsB,GAAtBA,KAAsB;IAAA,KACtBC,mBAAqC,GAArCA,mBAAqC;EAC7C;EAEHC,QAAQA,CAAA,EAAG;IACT,OAAO;MACLD,mBAAmB,EAAE,IAAI,CAACA;IAC5B,CAAC;EACH;AACF;AAACE,OAAA,CAAAL,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import type { ArtifactFiles } from '@teambit/component.sources';
2
2
  import type { ArtifactDefinition } from './artifact-definition';
3
3
  import { Artifact } from './artifact';
4
- import { TaskDescriptor } from '../build-task';
4
+ import type { TaskDescriptor } from '../build-task';
5
5
  export declare class FsArtifact extends Artifact {
6
6
  /**
7
7
  * definition of the artifact.
@@ -1 +1 @@
1
- {"version":3,"names":["_artifact","data","require","FsArtifact","Artifact","constructor","def","files","task","rootDir","exports"],"sources":["fs-artifact.ts"],"sourcesContent":["import type { ArtifactFiles } from '@teambit/component.sources';\nimport type { ArtifactDefinition } from './artifact-definition';\nimport { Artifact } from './artifact';\nimport { TaskDescriptor } from '../build-task';\n\nexport class FsArtifact extends Artifact {\n constructor(\n /**\n * definition of the artifact.\n */\n readonly def: ArtifactDefinition,\n\n readonly files: ArtifactFiles,\n\n readonly task: TaskDescriptor,\n\n readonly rootDir: string\n ) {\n super(def, files, task);\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAME,UAAU,SAASC,oBAAQ,CAAC;EACvCC,WAAWA;EACT;AACJ;AACA;EACaC,GAAuB,EAEvBC,KAAoB,EAEpBC,IAAoB,EAEpBC,OAAe,EACxB;IACA,KAAK,CAACH,GAAG,EAAEC,KAAK,EAAEC,IAAI,CAAC;IAAC,KARfF,GAAuB,GAAvBA,GAAuB;IAAA,KAEvBC,KAAoB,GAApBA,KAAoB;IAAA,KAEpBC,IAAoB,GAApBA,IAAoB;IAAA,KAEpBC,OAAe,GAAfA,OAAe;EAG1B;AACF;AAACC,OAAA,CAAAP,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["_artifact","data","require","FsArtifact","Artifact","constructor","def","files","task","rootDir","exports"],"sources":["fs-artifact.ts"],"sourcesContent":["import type { ArtifactFiles } from '@teambit/component.sources';\nimport type { ArtifactDefinition } from './artifact-definition';\nimport { Artifact } from './artifact';\nimport type { TaskDescriptor } from '../build-task';\n\nexport class FsArtifact extends Artifact {\n constructor(\n /**\n * definition of the artifact.\n */\n readonly def: ArtifactDefinition,\n\n readonly files: ArtifactFiles,\n\n readonly task: TaskDescriptor,\n\n readonly rootDir: string\n ) {\n super(def, files, task);\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAME,UAAU,SAASC,oBAAQ,CAAC;EACvCC,WAAWA;EACT;AACJ;AACA;EACaC,GAAuB,EAEvBC,KAAoB,EAEpBC,IAAoB,EAEpBC,OAAe,EACxB;IACA,KAAK,CAACH,GAAG,EAAEC,KAAK,EAAEC,IAAI,CAAC;IAAC,KARfF,GAAuB,GAAvBA,GAAuB;IAAA,KAEvBC,KAAoB,GAApBA,KAAoB;IAAA,KAEpBC,IAAoB,GAApBA,IAAoB;IAAA,KAEpBC,OAAe,GAAfA,OAAe;EAG1B;AACF;AAACC,OAAA,CAAAP,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1,11 +1,11 @@
1
- import { EnvDefinition } from '@teambit/envs';
2
- import { ComponentMap } from '@teambit/component';
3
- import { Logger } from '@teambit/logger';
4
- import { ArtifactFactory, ArtifactList, FsArtifact } from './artifact';
5
- import { BuildTask } from './build-task';
6
- import { ComponentResult } from './types';
7
- import { TasksQueue } from './tasks-queue';
8
- import { EnvsBuildContext } from './builder.service';
1
+ import type { EnvDefinition } from '@teambit/envs';
2
+ import type { ComponentMap } from '@teambit/component';
3
+ import type { Logger } from '@teambit/logger';
4
+ import type { ArtifactFactory, ArtifactList, FsArtifact } from './artifact';
5
+ import type { BuildTask } from './build-task';
6
+ import type { ComponentResult } from './types';
7
+ import type { TasksQueue } from './tasks-queue';
8
+ import type { EnvsBuildContext } from './builder.service';
9
9
  import { TaskResultsList } from './task-results-list';
10
10
  export type TaskResults = {
11
11
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_component","data","require","_pMapSeries","_interopRequireDefault","_prettyTime","_toolboxString","_chalk","_buildTask","_taskResultsList","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","mapSeries","task","env","executeTask","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","startTask","process","hrtime","taskStartTime","Date","now","buildTaskResult","debug","Math","round","memoryUsage","heapUsed","err","consoleFailure","endTime","compsWithErrors","componentsResults","filter","c","errors","artifacts","duration","prettyTime","chalk","red","getProgress","failedTasks","push","color","green","dim","consoleSuccess","defs","generate","startTime","resolvedId","ComponentID","fromString","tokens","split","map","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 { EnvDefinition } from '@teambit/envs';\nimport { ComponentMap, ComponentID } from '@teambit/component';\nimport { 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 { ArtifactFactory, ArtifactList, FsArtifact } from './artifact';\nimport { BuildContext, BuildTask, BuildTaskHelper, BuiltTaskResult } from './build-task';\nimport { ComponentResult } from './types';\nimport { TasksQueue } from './tasks-queue';\nimport { EnvsBuildContext } from './builder.service';\nimport { TaskResultsList } from './task-results-list';\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\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 await mapSeries(this.tasksQueue, async ({ task, env }) => this.executeTask(task, env));\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 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 const taskResults: TaskResults = {\n task,\n env,\n componentsResults: buildTaskResult.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","_pMapSeries","_interopRequireDefault","_prettyTime","_toolboxString","_chalk","_buildTask","_taskResultsList","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","mapSeries","task","env","executeTask","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","startTask","process","hrtime","taskStartTime","Date","now","buildTaskResult","debug","Math","round","memoryUsage","heapUsed","err","consoleFailure","endTime","compsWithErrors","componentsResults","filter","c","errors","artifacts","duration","prettyTime","chalk","red","getProgress","failedTasks","push","color","green","dim","consoleSuccess","defs","generate","startTime","resolvedId","ComponentID","fromString","tokens","split","map","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';\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\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 await mapSeries(this.tasksQueue, async ({ task, env }) => this.executeTask(task, env));\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 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 const taskResults: TaskResults = {\n task,\n env,\n componentsResults: buildTaskResult.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,7 +1,7 @@
1
- import { EnvDefinition } from '@teambit/envs';
1
+ import type { EnvDefinition } from '@teambit/envs';
2
2
  import type { TaskSlot } from './builder.main.runtime';
3
3
  import { TasksQueue } from './tasks-queue';
4
- import { PipeFunctionNames } from './builder.service';
4
+ import type { PipeFunctionNames } from './builder.service';
5
5
  /**
6
6
  * there are two ways how to add tasks to build pipeline.
7
7
  * 1. `getBuildPipe()` method of the env.