@teambit/builder 1.0.188 → 1.0.190
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/__bit_junit.xml +1 -1
- package/artifacts/preview/teambit_pipelines_builder-preview.js +1 -1
- package/artifacts/schema.json +16625 -0
- package/dist/artifact/artifact-definition.js.map +1 -1
- package/dist/artifact/artifact-extractor.js.map +1 -1
- package/dist/artifact/artifact-factory.js.map +1 -1
- package/dist/artifact/artifact-list.js.map +1 -1
- package/dist/artifact/artifact.js.map +1 -1
- package/dist/artifact/artifacts.cmd.js.map +1 -1
- package/dist/artifact/extension-artifact.js.map +1 -1
- package/dist/artifact/fs-artifact.js.map +1 -1
- package/dist/artifact/index.js.map +1 -1
- package/dist/build-pipe.js.map +1 -1
- package/dist/build-pipeline-order.js.map +1 -1
- package/dist/build-pipeline-result-list.js.map +1 -1
- package/dist/build-task.js.map +1 -1
- package/dist/build.cmd.js.map +1 -1
- package/dist/builder-env-type.js.map +1 -1
- package/dist/builder.aspect.js.map +1 -1
- package/dist/builder.composition.js.map +1 -1
- package/dist/builder.graphql.js.map +1 -1
- package/dist/builder.main.runtime.js.map +1 -1
- package/dist/builder.route.js.map +1 -1
- package/dist/builder.service.js.map +1 -1
- package/dist/exceptions/artifact-definition-no-glob.js.map +1 -1
- package/dist/exceptions/artifact-storage-error.js.map +1 -1
- package/dist/exceptions/capsule-not-found.js.map +1 -1
- package/dist/exceptions/index.js.map +1 -1
- package/dist/exceptions/invalid-task.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/pipeline-results.js.map +1 -1
- package/dist/pipeline.js.map +1 -1
- package/dist/preview-1710232535180.js +7 -0
- package/dist/storage/default-resolver.js.map +1 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/s3-resolver.js.map +1 -1
- package/dist/storage/storage-resolver.js.map +1 -1
- package/dist/task-results-list.js.map +1 -1
- package/dist/task.js.map +1 -1
- package/dist/tasks-queue.js.map +1 -1
- package/dist/templates/build-task/files/index-file.js.map +1 -1
- package/dist/templates/build-task/files/task-file.js.map +1 -1
- package/dist/templates/build-task/index.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +18 -18
- package/dist/preview-1710040632859.js +0 -7
|
@@ -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":""}
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","_interopRequireDefault","require","_filenamify","_fsExtra","_scope","_componentId","_pMapSeries","_minimatch","_artifactFiles","_artifactList","_artifact","obj","__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/legacy/dist/consumer/component/sources/artifact-files';\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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"}
|
|
1
|
+
{"version":3,"names":["_path","data","_interopRequireDefault","require","_filenamify","_fsExtra","_scope","_componentId","_pMapSeries","_minimatch","_artifactFiles","_artifactList","_artifact","obj","__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/legacy/dist/consumer/component/sources/artifact-files';\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":";;;;;;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,SAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,QAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAK,OAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,MAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,aAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,YAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,YAAA;EAAA,MAAAP,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,WAAA;EAAA,MAAAR,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAM,UAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,eAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,cAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAU,cAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,aAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,UAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,SAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAW,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAwB/B,MAAMG,iBAAiB,CAAC;EAC7BC,WAAWA,CACDC,aAA4B,EAC5BC,OAAoB,EACpBC,OAAe,EACfC,OAAsB,EAC9B;IAAA,KAJQH,aAA4B,GAA5BA,aAA4B;IAAA,KAC5BC,OAAoB,GAApBA,OAAoB;IAAA,KACpBC,OAAe,GAAfA,OAAe;IAAA,KACfC,OAAsB,GAAtBA,OAAsB;EAC7B;EAEH,MAAMC,IAAIA,CAAA,EAA+B;IACvC,MAAMC,IAAI,GAAG,IAAI,CAACL,aAAa,CAACM,OAAO,CAAC,CAAC;IACzC,MAAMC,GAAG,GAAG,MAAMF,IAAI,CAACG,YAAY,CAAC,IAAI,CAACN,OAAO,CAAC;IACjD,MAAMO,KAAK,GAAG,IAAI,CAACT,aAAa,CAACM,OAAO,CAACI,oBAAW,CAACC,EAAE,CAAc;IACrE;IACA,MAAMF,KAAK,CAACG,WAAW,CAACC,aAAa,CAACC,iBAAiB,CAACC,8BAAe,CAACC,SAAS,CAACT,GAAG,CAAC,EAAE;MAAEU,MAAM,EAAE;IAAW,CAAC,CAAC;IAC/G,MAAMC,UAAU,GAAG,MAAMb,IAAI,CAACc,OAAO,CAACZ,GAAG,CAAC;IAC1C,MAAMa,iBAAsC,GAAGF,UAAU,CAACG,GAAG,CAAEC,SAAS,IAAK;MAC3E,OAAO;QACLX,EAAE,EAAEW,SAAS,CAACX,EAAE;QAChBY,SAAS,EAAE,IAAI,CAACtB,OAAO,CAACuB,YAAY,CAACF,SAAS;MAChD,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAACG,eAAe,CAACL,iBAAiB,CAAC;IACvC,MAAM,IAAI,CAACM,4BAA4B,CAACN,iBAAiB,CAAC;IAE1D,OAAO,IAAI,CAACO,kCAAkC,CAACP,iBAAiB,CAAC;EACnE;EAEAQ,oBAAoBA,CAACC,eAAkC,EAAE;IACvD,OAAOA,eAAe,CAACR,GAAG,CAAES,MAAM,IAAK;MACrC,MAAMP,SAAS,GAAGO,MAAM,CAACP,SAAS,CAACQ,MAAM,CAAC,CAACC,GAAG,EAAEC,OAAO,KAAK;QAC1D,CAACD,GAAG,CAACC,OAAO,CAACC,QAAQ,CAAC,KAAK,EAAE,EAAEC,IAAI,CAACF,OAAO,CAAC;QAC5C,OAAOD,GAAG;MACZ,CAAC,EAAE,CAAC,CAAC,CAAC;MACN,OAAO;QAAErB,EAAE,EAAEmB,MAAM,CAACnB,EAAE;QAAEY;MAAU,CAAC;IACrC,CAAC,CAAC;EACJ;EAEA,MAAcG,4BAA4BA,CAACN,iBAAsC,EAAE;IACjF,MAAMgB,MAAM,GAAG,IAAI,CAACjC,OAAO,CAACiC,MAAM;IAClC,IAAI,CAACA,MAAM,EAAE;MACX;IACF;IACA,MAAM3B,KAAK,GAAG,IAAI,CAACT,aAAa,CAACM,OAAO,CAACI,oBAAW,CAACC,EAAE,CAAc;IACrE;IACA,MAAM,IAAA0B,qBAAU,EAACjB,iBAAiB,EAAE,OAAO;MAAET,EAAE;MAAEY;IAAU,CAAC,KAAK;MAC/D,MAAMe,MAAM,GAAG,MAAMf,SAAS,CAACgB,2BAA2B,CAAC5B,EAAE,EAAEF,KAAK,CAACG,WAAW,CAAC;MACjF;MACA,MAAM4B,YAAY,GAAG,IAAAC,qBAAU,EAAC9B,EAAE,CAAC+B,sBAAsB,CAAC,CAAC,EAAE;QAAEC,WAAW,EAAE;MAAI,CAAC,CAAC;MAClF,MAAMC,QAAQ,GAAGC,eAAI,CAACC,IAAI,CAACV,MAAM,EAAEI,YAAY,CAAC;MAChD,MAAMO,OAAO,CAACC,GAAG,CAACV,MAAM,CAACjB,GAAG,CAAE4B,KAAK,IAAKC,kBAAE,CAACC,UAAU,CAACN,eAAI,CAACC,IAAI,CAACF,QAAQ,EAAEK,KAAK,CAACJ,IAAI,CAAC,EAAEI,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC;IAC1G,CAAC,CAAC;EACJ;EAEQzB,kCAAkCA,CAACP,iBAAsC,EAAqB;IACpG,OAAOA,iBAAiB,CAACC,GAAG,CAAC,CAAC;MAAEV,EAAE;MAAEY;IAAU,CAAC,KAAK;MAClD,MAAM8B,OAAkC,GAAG9B,SAAS,CAACF,GAAG,CAAEiC,QAAQ,IAAK;QACrE,OAAO;UACLC,YAAY,EAAED,QAAQ,CAACE,IAAI;UAC3BtB,QAAQ,EAAEoB,QAAQ,CAACG,IAAI,CAACvB,QAAQ;UAChCwB,QAAQ,EAAEJ,QAAQ,CAACG,IAAI,CAACD,IAAI,IAAIF,QAAQ,CAACK,WAAW;UACpDC,KAAK,EAAEN,QAAQ,CAACM,KAAK,CAACC,IAAI,CAACxC,GAAG,CAAEyC,GAAG,IAAKA,GAAG,CAACC,YAAY;QAC1D,CAAC;MACH,CAAC,CAAC;MACF,OAAO;QACLpD,EAAE;QACFY,SAAS,EAAE8B;MACb,CAAC;IACH,CAAC,CAAC;EACJ;EAEQ5B,eAAeA,CAACL,iBAAsC,EAAE;IAC9D,MAAM;MAAE4C,MAAM;MAAEP,IAAI;MAAEG;IAAM,CAAC,GAAG,IAAI,CAACzD,OAAO;IAC5C,IAAI8D,iBAA6B,GAAG,EAAE;IAEtC7C,iBAAiB,CAAC8C,OAAO,CAAEC,IAAI,IAAK;MAClCF,iBAAiB,GAAGE,IAAI,CAAC5C,SAAS,CAAC6C,MAAM,CAAEd,QAAQ,IAAK;QACtD,IAAIU,MAAM,IAAIA,MAAM,KAAKV,QAAQ,CAACG,IAAI,CAACvB,QAAQ,EAAE,OAAO,KAAK;QAC7D,IAAIuB,IAAI,IAAIA,IAAI,KAAKH,QAAQ,CAACG,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;QACrD,OAAO,IAAI;MACb,CAAC,CAAC;MACF,IAAII,KAAK,EAAE;QACTK,iBAAiB,GAAGE,IAAI,CAAC5C,SAAS,CAC/BF,GAAG,CAAEiC,QAAQ,IAAK;UACjB,MAAMO,IAAI,GAAGP,QAAQ,CAACM,KAAK,CAACC,IAAI,CAACO,MAAM,CAAEN,GAAG,IAAK,IAAAO,oBAAS,EAACP,GAAG,CAACC,YAAY,EAAEH,KAAK,CAAC,CAAC;UACpF,OAAO,KAAIU,oBAAQ,EAAChB,QAAQ,CAACiB,GAAG,EAAE,KAAIC,8BAAa,EAAC,EAAE,EAAE,EAAE,EAAEX,IAAI,CAAC,EAAEP,QAAQ,CAACG,IAAI,CAAC;QACnF,CAAC;QACD;QAAA,CACCW,MAAM,CAAEd,QAAQ,IAAK,CAACA,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC;MAC9C;MACAN,IAAI,CAAC5C,SAAS,GAAGmD,4BAAY,CAAC1D,SAAS,CAACiD,iBAAiB,CAAC;IAC5D,CAAC,CAAC;EACJ;AACF;AAACU,OAAA,CAAA7E,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","require","_globby","_interopRequireDefault","_lodash","_artifactFiles","_component","_utils","_storage","_artifactList","_exceptions","_fsArtifact","obj","__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/legacy/dist/consumer/component/sources/artifact-files';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/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 = 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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"}
|
|
1
|
+
{"version":3,"names":["_path","data","require","_globby","_interopRequireDefault","_lodash","_artifactFiles","_component","_utils","_storage","_artifactList","_exceptions","_fsArtifact","obj","__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/legacy/dist/consumer/component/sources/artifact-files';\nimport { Component, ComponentMap } from '@teambit/component';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/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 = 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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_artifact","_storage","obj","__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","promises","Object","keys","key","artifacts","artifactList","artifactPromises","storeArtifact","Promise","all","defaultResolver","DefaultResolver","storeWholeArtifactByResolver","storeArtifactFilesByResolver","results","file","url","relative","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/legacy/dist/consumer/component/sources/artifact-files';\nimport { ComponentID } from '@teambit/component-id';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\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 const promises = 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 const artifactPromises = artifactList.map(async (artifact) => {\n return this.storeArtifact(storageResolver, artifact, component);\n });\n await Promise.all(artifactPromises);\n });\n\n return Promise.all(promises);\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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"}
|
|
1
|
+
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_artifact","_storage","obj","__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","promises","Object","keys","key","artifacts","artifactList","artifactPromises","storeArtifact","Promise","all","defaultResolver","DefaultResolver","storeWholeArtifactByResolver","storeArtifactFilesByResolver","results","file","url","relative","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/legacy/dist/consumer/component/sources/artifact-files';\nimport { ComponentID } from '@teambit/component-id';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\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 const promises = 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 const artifactPromises = artifactList.map(async (artifact) => {\n return this.storeArtifact(storageResolver, artifact, component);\n });\n await Promise.all(artifactPromises);\n });\n\n return Promise.all(promises);\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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_defaultResolver","data","require","Artifact","constructor","def","files","task","timestamp","Date","now","storage","storageResolver","name","DefaultResolver","description","generatedBy","aspectId","artifactDir","rootDir","pathsLinux","paths","map","p","replace","firstPath","includes","undefined","potentialSharedDir","split","isSharedDir","every","startsWith","isEmpty","tar","toObject","id","fromArtifactObject","object","artifactDef","exports"],"sources":["artifact.ts"],"sourcesContent":["import type { ArtifactFiles, ArtifactObject } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport type { TaskDescriptor } from '../build-task';\nimport type { ArtifactDefinition } from './artifact-definition';\nimport { DefaultResolver } from '../storage/default-resolver';\n\nexport class Artifact {\n constructor(\n /**\n * definition of the artifact.\n */\n readonly def: ArtifactDefinition,\n\n readonly files: ArtifactFiles,\n /**\n * the declaring task.\n */\n readonly task: TaskDescriptor,\n /**\n * timestamp of the artifact creation.\n */\n readonly timestamp: number = Date.now()\n ) {}\n\n get storage() {\n return this.storageResolver.name;\n }\n\n get storageResolver() {\n return this.def.storageResolver || new DefaultResolver();\n }\n\n /**\n * name of the artifact.\n */\n get name(): string {\n return this.def.name;\n }\n\n /**\n * description of the artifact.\n */\n get description() {\n return this.def.description;\n }\n\n /**\n * aspect id (string) that generated the artifact\n */\n get generatedBy(): string {\n return this.def.generatedBy || this.task.aspectId;\n }\n\n /**\n * calculate what could possibly be the root directory of the artifact.\n * in case the deprecated rootDir is set, use it.\n * otherwise, get the common first directory of all files.\n * if there is no common directory, or there are multiple directories return undefined.\n */\n get artifactDir(): string | undefined {\n if (this.def.rootDir) return this.def.rootDir;\n\n // not sure if needed, it's unclear whether the paths are OS specific or not. (coming from globby).\n const pathsLinux = this.files.paths.map((p) => p.replace(/\\\\/g, '/'));\n // get the common dir of all paths.\n const firstPath = pathsLinux[0];\n // it's a file in the root, so there is no shared root directory.\n if (!firstPath.includes('/')) return undefined;\n const [potentialSharedDir] = firstPath.split('/');\n const isSharedDir = pathsLinux.every((p) => p.startsWith(`${potentialSharedDir}/`));\n if (!isSharedDir) return undefined;\n return potentialSharedDir;\n }\n\n isEmpty(): boolean {\n return this.files.isEmpty();\n }\n\n /**\n * archive all artifact files into a tar.\n */\n tar() {}\n\n toObject(): ArtifactObject {\n return {\n name: this.name,\n description: this.description,\n generatedBy: this.generatedBy,\n storage: this.storageResolver.name,\n task: {\n id: this.task.aspectId,\n name: this.task.name,\n },\n files: this.files,\n };\n }\n\n static fromArtifactObject(object: ArtifactObject): Artifact {\n const artifactDef: ArtifactDefinition = {\n name: object.name,\n generatedBy: object.generatedBy,\n description: object.description,\n };\n\n const task: TaskDescriptor = {\n aspectId: object.task.id,\n name: object.task.name,\n };\n\n return new Artifact(artifactDef, object.files, task);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_defaultResolver","data","require","Artifact","constructor","def","files","task","timestamp","Date","now","storage","storageResolver","name","DefaultResolver","description","generatedBy","aspectId","artifactDir","rootDir","pathsLinux","paths","map","p","replace","firstPath","includes","undefined","potentialSharedDir","split","isSharedDir","every","startsWith","isEmpty","tar","toObject","id","fromArtifactObject","object","artifactDef","exports"],"sources":["artifact.ts"],"sourcesContent":["import type { ArtifactFiles, ArtifactObject } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport type { TaskDescriptor } from '../build-task';\nimport type { ArtifactDefinition } from './artifact-definition';\nimport { DefaultResolver } from '../storage/default-resolver';\n\nexport class Artifact {\n constructor(\n /**\n * definition of the artifact.\n */\n readonly def: ArtifactDefinition,\n\n readonly files: ArtifactFiles,\n /**\n * the declaring task.\n */\n readonly task: TaskDescriptor,\n /**\n * timestamp of the artifact creation.\n */\n readonly timestamp: number = Date.now()\n ) {}\n\n get storage() {\n return this.storageResolver.name;\n }\n\n get storageResolver() {\n return this.def.storageResolver || new DefaultResolver();\n }\n\n /**\n * name of the artifact.\n */\n get name(): string {\n return this.def.name;\n }\n\n /**\n * description of the artifact.\n */\n get description() {\n return this.def.description;\n }\n\n /**\n * aspect id (string) that generated the artifact\n */\n get generatedBy(): string {\n return this.def.generatedBy || this.task.aspectId;\n }\n\n /**\n * calculate what could possibly be the root directory of the artifact.\n * in case the deprecated rootDir is set, use it.\n * otherwise, get the common first directory of all files.\n * if there is no common directory, or there are multiple directories return undefined.\n */\n get artifactDir(): string | undefined {\n if (this.def.rootDir) return this.def.rootDir;\n\n // not sure if needed, it's unclear whether the paths are OS specific or not. (coming from globby).\n const pathsLinux = this.files.paths.map((p) => p.replace(/\\\\/g, '/'));\n // get the common dir of all paths.\n const firstPath = pathsLinux[0];\n // it's a file in the root, so there is no shared root directory.\n if (!firstPath.includes('/')) return undefined;\n const [potentialSharedDir] = firstPath.split('/');\n const isSharedDir = pathsLinux.every((p) => p.startsWith(`${potentialSharedDir}/`));\n if (!isSharedDir) return undefined;\n return potentialSharedDir;\n }\n\n isEmpty(): boolean {\n return this.files.isEmpty();\n }\n\n /**\n * archive all artifact files into a tar.\n */\n tar() {}\n\n toObject(): ArtifactObject {\n return {\n name: this.name,\n description: this.description,\n generatedBy: this.generatedBy,\n storage: this.storageResolver.name,\n task: {\n id: this.task.aspectId,\n name: this.task.name,\n },\n files: this.files,\n };\n }\n\n static fromArtifactObject(object: ArtifactObject): Artifact {\n const artifactDef: ArtifactDefinition = {\n name: object.name,\n generatedBy: object.generatedBy,\n description: object.description,\n };\n\n const task: TaskDescriptor = {\n aspectId: object.task.id,\n name: object.task.name,\n };\n\n return new Artifact(artifactDef, object.files, task);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_constants","_artifactExtractor","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","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/dist/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 = 'development';\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(private builder: BuilderMain, private componentMain: ComponentMain) {}\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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"}
|
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_constants","_artifactExtractor","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","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/dist/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 = 'development';\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(private builder: BuilderMain, private componentMain: ComponentMain) {}\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 +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/legacy/dist/consumer/component/sources';\n\nexport class ExtensionArtifact {\n constructor(readonly files: AbstractVinyl[], readonly extensionDescriptor: AspectDescriptor) {}\n\n toObject() {\n return {\n extensionDescriptor: this.extensionDescriptor,\n };\n }\n}\n"],"mappings":";;;;;;AAGO,MAAMA,iBAAiB,CAAC;EAC7BC,WAAWA,CAAUC,KAAsB,EAAWC,mBAAqC,EAAE;IAAA,KAAxED,KAAsB,GAAtBA,KAAsB;IAAA,KAAWC,mBAAqC,GAArCA,mBAAqC;EAAG;EAE9FC,QAAQA,CAAA,EAAG;IACT,OAAO;MACLD,mBAAmB,EAAE,IAAI,CAACA;IAC5B,CAAC;EACH;AACF;AAACE,OAAA,CAAAL,iBAAA,GAAAA,iBAAA"}
|
|
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/legacy/dist/consumer/component/sources';\n\nexport class ExtensionArtifact {\n constructor(readonly files: AbstractVinyl[], readonly extensionDescriptor: AspectDescriptor) {}\n\n toObject() {\n return {\n extensionDescriptor: this.extensionDescriptor,\n };\n }\n}\n"],"mappings":";;;;;;AAGO,MAAMA,iBAAiB,CAAC;EAC7BC,WAAWA,CAAUC,KAAsB,EAAWC,mBAAqC,EAAE;IAAA,KAAxED,KAAsB,GAAtBA,KAAsB;IAAA,KAAWC,mBAAqC,GAArCA,mBAAqC;EAAG;EAE9FC,QAAQA,CAAA,EAAG;IACT,OAAO;MACLD,mBAAmB,EAAE,IAAI,CAACA;IAC5B,CAAC;EACH;AACF;AAACE,OAAA,CAAAL,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -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/legacy/dist/consumer/component/sources/artifact-files';\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"}
|
|
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/legacy/dist/consumer/component/sources/artifact-files';\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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_artifactDefinition","data","require","_extensionArtifact","_artifact","_artifactList","_artifactFactory","_fsArtifact"],"sources":["index.ts"],"sourcesContent":["export { ArtifactDefinition, ArtifactModelDefinition } from './artifact-definition';\nexport { ExtensionArtifact } from './extension-artifact';\nexport { Artifact } from './artifact';\nexport { ArtifactList } from './artifact-list';\nexport { ArtifactFactory, ArtifactMap } from './artifact-factory';\nexport { FsArtifact } from './fs-artifact';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,oBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,mBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,cAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,aAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,iBAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,gBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA"}
|
|
1
|
+
{"version":3,"names":["_artifactDefinition","data","require","_extensionArtifact","_artifact","_artifactList","_artifactFactory","_fsArtifact"],"sources":["index.ts"],"sourcesContent":["export { ArtifactDefinition, ArtifactModelDefinition } from './artifact-definition';\nexport { ExtensionArtifact } from './extension-artifact';\nexport { Artifact } from './artifact';\nexport { ArtifactList } from './artifact-list';\nexport { ArtifactFactory, ArtifactMap } from './artifact-factory';\nexport { FsArtifact } from './fs-artifact';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,oBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,mBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,cAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,aAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,iBAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,gBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}
|
package/dist/build-pipe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_component","data","require","_pMapSeries","_interopRequireDefault","_prettyTime","_toolboxString","_chalk","_buildTask","_taskResultsList","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","BuildPipe","constructor","tasksQueue","envsBuildContext","logger","artifactFactory","previousTaskResults","options","allTasksResults","taskResults","execute","addSignalListener","executePreBuild","longProcessLogger","createLongProcessLogger","length","mapSeries","task","env","executeTask","end","capsuleRootDir","values","capsuleNetwork","capsulesRootDir","tasksResultsList","TaskResultsList","executePostBuild","process","on","exit","setStatusLine","preBuild","getBuildContext","id","taskId","BuildTaskHelper","serializeId","envName","showEnvNameInOutput","getPrettyEnvName","buildContext","hasOriginalSeeders","Boolean","_originalSeeders","dependencyStr","taskLogPrefix","getPrettyAspectName","aspectId","name","logProgress","description","updateFailedDependencyTask","shouldSkipTask","startTask","hrtime","taskStartTime","Date","now","buildTaskResult","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 this.addSignalListener();\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);\n await this.executePostBuild(tasksResultsList);\n\n return tasksResultsList;\n }\n\n /**\n * for some reason, some tasks (such as typescript compilation) ignore ctrl+C. this fixes it.\n */\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\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 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":";;;;;;AACA,SAAAA,WAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,UAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,eAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,cAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,OAAA;EAAA,MAAAN,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAK,MAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,WAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,UAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAQ,iBAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,gBAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsD,SAAAG,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAyC/C,MAAMW,SAAS,CAAC;EAKrBC,WAAWA;EACT;AACJ;AACA;EACaC,UAAsB,EACtBC,gBAAkC,EAClCC,MAAc,EACdC,eAAgC,EACjCC,mBAAmC,EACnCC,OAAqB,EAC7B;IAAA,KANSL,UAAsB,GAAtBA,UAAsB;IAAA,KACtBC,gBAAkC,GAAlCA,gBAAkC;IAAA,KAClCC,MAAc,GAAdA,MAAc;IAAA,KACdC,eAAgC,GAAhCA,eAAgC;IAAA,KACjCC,mBAAmC,GAAnCA,mBAAmC;IAAA,KACnCC,OAAqB,GAArBA,OAAqB;IAAA3B,eAAA,sBAbI,EAAE;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,sBAGA,EAAE;EAWpC;EAEH,IAAI4B,eAAeA,CAAA,EAAkB;IACnC,OAAO,CAAC,IAAI,IAAI,CAACF,mBAAmB,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAACG,WAAW,IAAI,EAAE,CAAC,CAAC;EAC3E;;EAEA;AACF;AACA;EACE,MAAMC,OAAOA,CAAA,EAA6B;IACxC,IAAI,CAACC,iBAAiB,CAAC,CAAC;IACxB,MAAM,IAAI,CAACC,eAAe,CAAC,CAAC;IAC5B,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACT,MAAM,CAACU,uBAAuB,CAAC,eAAe,EAAE,IAAI,CAACZ,UAAU,CAACa,MAAM,CAAC;IACrG,MAAM,IAAAC,qBAAS,EAAC,IAAI,CAACd,UAAU,EAAE,OAAO;MAAEe,IAAI;MAAEC;IAAI,CAAC,KAAK,IAAI,CAACC,WAAW,CAACF,IAAI,EAAEC,GAAG,CAAC,CAAC;IACtF,IAAI,CAACL,iBAAiB,CAACO,GAAG,CAAC,CAAC;IAC5B,MAAMC,cAAc,GAAGrC,MAAM,CAACsC,MAAM,CAAC,IAAI,CAACnB,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAEoB,cAAc,CAACC,eAAe;IAC9F,MAAMC,gBAAgB,GAAG,KAAIC,kCAAe,EAAC,IAAI,CAACxB,UAAU,EAAE,IAAI,CAACO,WAAW,EAAEY,cAAc,CAAC;IAC/F,MAAM,IAAI,CAACM,gBAAgB,CAACF,gBAAgB,CAAC;IAE7C,OAAOA,gBAAgB;EACzB;;EAEA;AACF;AACA;EACUd,iBAAiBA,CAAA,EAAG;IAC1BiB,OAAO,CAACC,EAAE,CAAC,SAAS,EAAE,MAAM;MAC1BD,OAAO,CAACE,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEFF,OAAO,CAACC,EAAE,CAAC,QAAQ,EAAE,MAAM;MACzBD,OAAO,CAACE,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;EACJ;EAEA,MAAclB,eAAeA,CAAA,EAAG;IAC9B,IAAI,CAACR,MAAM,CAAC2B,aAAa,CAAC,mCAAmC,CAAC;IAC9D,MAAMlB,iBAAiB,GAAG,IAAI,CAACT,MAAM,CAACU,uBAAuB,CAAC,iCAAiC,CAAC;IAChG,MAAM,IAAAE,qBAAS,EAAC,IAAI,CAACd,UAAU,EAAE,OAAO;MAAEe,IAAI;MAAEC;IAAI,CAAC,KAAK;MACxD,IAAI,CAACD,IAAI,CAACe,QAAQ,EAAE;MACpB,MAAMf,IAAI,CAACe,QAAQ,CAAC,IAAI,CAACC,eAAe,CAACf,GAAG,CAACgB,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC;IACFrB,iBAAiB,CAACO,GAAG,CAAC,CAAC;EACzB;EAEA,MAAcD,WAAWA,CAACF,IAAe,EAAEC,GAAkB,EAAiB;IAC5E,MAAMiB,MAAM,GAAGC,4BAAe,CAACC,WAAW,CAACpB,IAAI,CAAC;IAChD,MAAMqB,OAAO,GAAG,IAAI,CAAC/B,OAAO,EAAEgC,mBAAmB,GAAI,IAAG,IAAI,CAACC,gBAAgB,CAACtB,GAAG,CAACgB,EAAE,CAAE,IAAG,GAAG,EAAE;IAC9F,MAAMO,YAAY,GAAG,IAAI,CAACR,eAAe,CAACf,GAAG,CAACgB,EAAE,CAAC;IACjD,MAAMQ,kBAAkB,GAAGC,OAAO,CAACF,YAAY,CAAClB,cAAc,CAACqB,gBAAgB,EAAE7B,MAAM,CAAC;IACxF,MAAM8B,aAAa,GAAGH,kBAAkB,GAAG,EAAE,GAAI,eAAc;IAC/D,MAAMI,aAAa,GAAI,GAAED,aAAc,GAAEP,OAAQ,IAAG,IAAI,CAACS,mBAAmB,CAAC9B,IAAI,CAAC+B,QAAQ,CAAE,KAAI/B,IAAI,CAACgC,IAAK,GAAE;IAC5G,IAAI,CAACpC,iBAAiB,CAACqC,WAAW,CAAE,GAAEJ,aAAc,GAAE7B,IAAI,CAACkC,WAAW,GAAI,IAAGlC,IAAI,CAACkC,WAAY,EAAC,GAAG,EAAG,EAAC,EAAE,KAAK,CAAC;IAC9G,IAAI,CAACC,0BAA0B,CAACnC,IAAI,CAAC;IACrC,IAAI,IAAI,CAACoC,cAAc,CAAClB,MAAM,EAAEjB,GAAG,CAACgB,EAAE,CAAC,EAAE;MACvC;IACF;IACA,MAAMoB,SAAS,GAAG1B,OAAO,CAAC2B,MAAM,CAAC,CAAC;IAClC,MAAMC,aAAa,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAChC,IAAIC,eAAgC;IACpC,IAAI;MACFA,eAAe,GAAG,MAAM1C,IAAI,CAACP,OAAO,CAAC+B,YAAY,CAAC;IACpD,CAAC,CAAC,OAAOmB,GAAG,EAAE;MACZ,IAAI,CAACxD,MAAM,CAACyD,cAAc,CAAE,QAAO3C,GAAG,CAACgB,EAAG,WAAUC,MAAO,kBAAiB,CAAC;MAC7E,MAAMyB,GAAG;IACX;IAEA,MAAME,OAAO,GAAGL,IAAI,CAACC,GAAG,CAAC,CAAC;IAC1B,MAAMK,eAAe,GAAGJ,eAAe,CAACK,iBAAiB,CAACC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,EAAEpD,MAAM,CAAC;IACzF,IAAIqD,SAA6D;IACjE,MAAMC,QAAQ,GAAG,IAAAC,qBAAU,EAAC1C,OAAO,CAAC2B,MAAM,CAACD,SAAS,CAAC,CAAC;IACtD,IAAIS,eAAe,CAAChD,MAAM,EAAE;MAC1B,IAAI,CAACX,MAAM,CAACyD,cAAc,CAAE,QAAO3C,GAAG,CAACgB,EAAG,WAAUC,MAAO,cAAa,CAAC;MACzE,IAAI,CAAC/B,MAAM,CAACyD,cAAc,CACxBU,gBAAK,CAACC,GAAG,CAAE,GAAE,IAAI,CAAC3D,iBAAiB,CAAC4D,WAAW,CAAC,CAAE,SAAQvD,GAAG,CAACgB,EAAG,WAAUC,MAAO,mBAAkBkC,QAAS,EAAC,CAChH,CAAC;MACD,IAAI,CAACK,WAAW,CAACC,IAAI,CAAC1D,IAAI,CAAC;IAC7B,CAAC,MAAM;MACL,MAAM2D,KAAK,GAAGlC,kBAAkB,GAAG6B,gBAAK,CAACM,KAAK,GAAGN,gBAAK,CAACM,KAAK,CAACC,GAAG;MAChE,IAAI,CAAC1E,MAAM,CAAC2E,cAAc,CACxBH,KAAK,CAAE,GAAE,IAAI,CAAC/D,iBAAiB,CAAC4D,WAAW,CAAC,CAAE,IAAG3B,aAAc,8BAA6BuB,QAAS,EAAC,CACxG,CAAC;MACD,MAAMW,IAAI,GAAGrB,eAAe,CAACS,SAAS,IAAI,EAAE;MAC5CA,SAAS,GAAG,IAAI,CAAC/D,eAAe,CAAC4E,QAAQ,CAACxC,YAAY,EAAEuC,IAAI,EAAE/D,IAAI,CAAC;IACrE;IAEA,MAAMR,WAAwB,GAAG;MAC/BQ,IAAI;MACJC,GAAG;MACH8C,iBAAiB,EAAEL,eAAe,CAACK,iBAAiB;MACpDI,SAAS;MACTc,SAAS,EAAE1B,aAAa;MACxBM;IACF,CAAC;IAED,IAAI,CAACrD,WAAW,CAACkE,IAAI,CAAClE,WAAW,CAAC;EACpC;EAEQsC,mBAAmBA,CAACC,QAAgB,EAAU;IACpD,MAAMmC,UAAU,GAAGC,wBAAW,CAACC,UAAU,CAACrC,QAAQ,CAAC;IACnD,MAAMsC,MAAM,GAAGH,UAAU,CAAClC,IAAI,CAACsC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAEC,KAAK,IAAK,IAAAC,2BAAU,EAACD,KAAK,CAAC,CAAC;IAC3E,OAAOH,MAAM,CAACK,IAAI,CAAC,GAAG,CAAC;EACzB;EAEQnD,gBAAgBA,CAACoD,KAAa,EAAE;IACtC,MAAMT,UAAU,GAAGC,wBAAW,CAACC,UAAU,CAACO,KAAK,CAAC;IAChD,MAAMC,GAAG,GAAG,IAAI,CAACtF,OAAO,EAAEuF,sBAAsB,GAAI,IAAGX,UAAU,CAACY,OAAQ,EAAC,GAAG,EAAE;IAChF,OAAQ,GAAEZ,UAAU,CAACa,QAAS,GAAEH,GAAI,EAAC;EACvC;EAEA,MAAclE,gBAAgBA,CAACsE,YAA6B,EAAE;IAC5D,MAAMpF,iBAAiB,GAAG,IAAI,CAACT,MAAM,CAACU,uBAAuB,CAAC,kCAAkC,CAAC;IACjG,IAAI,CAACV,MAAM,CAAC2B,aAAa,CAAC,oCAAoC,CAAC;IAC/D,MAAM,IAAAf,qBAAS,EAAC,IAAI,CAACd,UAAU,EAAE,OAAO;MAAEe,IAAI;MAAEC;IAAI,CAAC,KAAK;MACxD,IAAI,CAACD,IAAI,CAACiF,SAAS,EAAE;MACrB,MAAMjF,IAAI,CAACiF,SAAS,CAAC,IAAI,CAACjE,eAAe,CAACf,GAAG,CAACgB,EAAE,CAAC,EAAE+D,YAAY,CAAC;IAClE,CAAC,CAAC;IACFpF,iBAAiB,CAACO,GAAG,CAAC,CAAC;EACzB;EAEQgC,0BAA0BA,CAACnC,IAAe,EAAE;IAClD,IAAI,CAAC,IAAI,CAACkF,oBAAoB,IAAI,IAAI,CAACzB,WAAW,CAAC3D,MAAM,IAAIE,IAAI,CAACmF,YAAY,EAAE;MAC9EnF,IAAI,CAACmF,YAAY,CAACC,OAAO,CAAEC,UAAU,IAAK;QACxC,MAAM;UAAEtD,QAAQ;UAAEC;QAAK,CAAC,GAAGb,4BAAe,CAACmE,2BAA2B,CAACD,UAAU,CAAC;QAClF,IAAI,CAACH,oBAAoB,GAAG,IAAI,CAACzB,WAAW,CAAC8B,IAAI,CAAEC,UAAU,IAAK;UAChE,IAAIxD,IAAI,IAAIA,IAAI,KAAKwD,UAAU,CAACxD,IAAI,EAAE,OAAO,KAAK;UAClD,OAAOD,QAAQ,KAAKyD,UAAU,CAACzD,QAAQ;QACzC,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EACF;EAEQK,cAAcA,CAAClB,MAAc,EAAEyD,KAAa,EAAW;IAC7D,IAAI,IAAI,CAACrF,OAAO,EAAEmG,qBAAqB,IAAI,IAAI,CAAChC,WAAW,CAAC3D,MAAM,EAAE;MAClE,MAAM4F,YAAY,GAAGvE,4BAAe,CAACC,WAAW,CAAC,IAAI,CAACqC,WAAW,CAAC,CAAC,CAAC,CAAC;MACrE,IAAI,CAACtE,MAAM,CAACwG,cAAc,CAAE,QAAOhB,KAAM,WAAUzD,MAAO,yBAAwBwE,YAAa,WAAU,CAAC;MAC1G,OAAO,IAAI;IACb;IACA,IAAI,CAAC,IAAI,CAACR,oBAAoB,EAAE,OAAO,KAAK;IAC5C,MAAMQ,YAAY,GAAGvE,4BAAe,CAACC,WAAW,CAAC,IAAI,CAAC8D,oBAAoB,CAAC;IAC3E,IAAI,CAAC/F,MAAM,CAACwG,cAAc,CAAE,QAAOhB,KAAM,WAAUzD,MAAO,yBAAwBwE,YAAa,WAAU,CAAC;IAC1G,OAAO,IAAI;EACb;EAEQ1E,eAAeA,CAAC2D,KAAa,EAAgB;IACnD,MAAMnD,YAAY,GAAG,IAAI,CAACtC,gBAAgB,CAACyF,KAAK,CAAC;IACjD,IAAI,CAACnD,YAAY,EAAE,MAAM,IAAIoE,KAAK,CAAE,mCAAkCjB,KAAM,EAAC,CAAC;IAC9EnD,YAAY,CAACqE,oBAAoB,GAAG,IAAI,CAACtG,eAAe;IACxD,OAAOiC,YAAY;EACrB;AACF;AAACsE,OAAA,CAAA/G,SAAA,GAAAA,SAAA"}
|
|
1
|
+
{"version":3,"names":["_component","data","require","_pMapSeries","_interopRequireDefault","_prettyTime","_toolboxString","_chalk","_buildTask","_taskResultsList","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","BuildPipe","constructor","tasksQueue","envsBuildContext","logger","artifactFactory","previousTaskResults","options","allTasksResults","taskResults","execute","addSignalListener","executePreBuild","longProcessLogger","createLongProcessLogger","length","mapSeries","task","env","executeTask","end","capsuleRootDir","values","capsuleNetwork","capsulesRootDir","tasksResultsList","TaskResultsList","executePostBuild","process","on","exit","setStatusLine","preBuild","getBuildContext","id","taskId","BuildTaskHelper","serializeId","envName","showEnvNameInOutput","getPrettyEnvName","buildContext","hasOriginalSeeders","Boolean","_originalSeeders","dependencyStr","taskLogPrefix","getPrettyAspectName","aspectId","name","logProgress","description","updateFailedDependencyTask","shouldSkipTask","startTask","hrtime","taskStartTime","Date","now","buildTaskResult","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 this.addSignalListener();\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);\n await this.executePostBuild(tasksResultsList);\n\n return tasksResultsList;\n }\n\n /**\n * for some reason, some tasks (such as typescript compilation) ignore ctrl+C. this fixes it.\n */\n private addSignalListener() {\n process.on('SIGTERM', () => {\n process.exit();\n });\n\n process.on('SIGINT', () => {\n process.exit();\n });\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 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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_graph","data","require","_tester","_interopRequireDefault","_buildTask","_tasksQueue","obj","__esModule","default","calculatePipelineOrder","taskSlot","envs","pipeNameOnEnv","tasks","skipTests","skipTasks","graphs","locations","forEach","location","push","graph","Graph","pipelineEnvs","envDefinition","pipeline","getPipelineForEnv","env","flattenedPipeline","map","pipelineEnv","flat","task","addDependenciesToGraph","dataPerLocation","pipelineEnvsPerLocation","filter","tasksQueue","TasksQueue","addTasksToGraph","length","includes","name","aspectId","TesterAspect","id","find","d","sorted","toposort","taskNode","BuildTaskHelper","deserializeId","attr","taskIndex","findIndex","pipelineTask","splice","dependencies","taskId","serializeId","dependency","deserializeIdAllowEmptyName","dependencyTasks","Error","dependencyTask","getLocation","graphLocation","g","dependencyId","setNode","Node","setEdge","Edge","taskLocation","dependencyLocation","isDependencyAhead","isDependencyEqual","buildTasks","slotsTasks","values","tasksAtStart","tasksAtEnd","mergedTasks"],"sources":["build-pipeline-order.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport TesterAspect from '@teambit/tester';\nimport { EnvDefinition, Environment } from '@teambit/envs';\nimport { BuildTask, BuildTaskHelper } from './build-task';\nimport type { TaskSlot } from './builder.main.runtime';\nimport { TasksQueue } from './tasks-queue';\nimport { PipeFunctionNames } from './builder.service';\n\ntype TaskDependenciesGraph = Graph<string, string>;\ntype Location = 'start' | 'middle' | 'end';\ntype TasksLocationGraph = { location: Location; graph: TaskDependenciesGraph };\ntype PipelineEnv = { env: EnvDefinition; pipeline: BuildTask[] };\ntype DataPerLocation = { location: Location; graph: TaskDependenciesGraph; pipelineEnvs: PipelineEnv[] };\n\n/**\n * there are two ways how to add tasks to build pipeline.\n * 1. `getBuildPipe()` method of the env.\n * 2. registering to the `builder.registerBuildTask()`.\n *\n * in the option #1, it's possible to determine the order. e.g. `getBuildPipe() { return [taskA, taskB, taskC]; }`\n * in the option #2, the register happens once the extension is loaded, so there is no way to put\n * one task before/after another task.\n *\n * To be able to determine the order, you can do the following\n * 1. \"task.location\", it has two options \"start\" and \"end\". the rest are \"middle\".\n * 2. \"task.dependencies\", the dependencies must be completed for all envs before this task starts.\n * the dependencies are applicable inside a location and not across locations. see getLocation()\n * or/and continue reading for more info about this.\n *\n * to determine the final order of the tasks, the following is done:\n * 1. split all tasks to three groups: start, middle and end.\n * 2. for each group define a dependencies graph for the tasks with \"dependencies\" prop and the pipeline.\n * 3. start with the first group \"start\", toposort the dependencies graph and push the found tasks\n * to a queue. once completed, iterate the pipeline and add all tasks to the queue.\n * 4. do the same for the \"middle\" and \"end\" groups.\n *\n * the reason for splitting the tasks to the three groups and not using the \"dependencies\" field\n * alone to determine the order is that the \"start\" and \"end\" groups are mostly core and \"middle\"\n * is mostly the user entering tasks to the pipeline and we as the core don't know about the users\n * tasks. For example, a core task \"PublishComponent\" must happen after the compiler, however, a\n * user might have an env without a compiler. if we determine the order only by the dependencies\n * field, the \"PublishComponent\" would have a dependency \"compiler\" and because in this case there\n * is no compiler task, it would throw an error about missing dependencies.\n */\nexport function calculatePipelineOrder(\n taskSlot: TaskSlot,\n envs: EnvDefinition[],\n pipeNameOnEnv: PipeFunctionNames,\n tasks: string[] = [],\n skipTests = false,\n skipTasks: string[] = []\n): TasksQueue {\n const graphs: TasksLocationGraph[] = [];\n const locations: Location[] = ['start', 'middle', 'end']; // the order is important here!\n locations.forEach((location) => {\n graphs.push({ location, graph: new Graph<string, string>() });\n });\n const pipelineEnvs: PipelineEnv[] = [];\n envs.forEach((envDefinition) => {\n const pipeline = getPipelineForEnv(taskSlot, envDefinition.env, pipeNameOnEnv);\n pipelineEnvs.push({ env: envDefinition, pipeline });\n });\n\n const flattenedPipeline: BuildTask[] = pipelineEnvs.map((pipelineEnv) => pipelineEnv.pipeline).flat();\n flattenedPipeline.forEach((task) => addDependenciesToGraph(graphs, flattenedPipeline, task));\n\n const dataPerLocation: DataPerLocation[] = graphs.map(({ location, graph }) => {\n const pipelineEnvsPerLocation: PipelineEnv[] = pipelineEnvs.map(({ env, pipeline }) => {\n return { env, pipeline: pipeline.filter((task) => (task.location || 'middle') === location) };\n });\n return { location, graph, pipelineEnvs: pipelineEnvsPerLocation };\n });\n\n let tasksQueue = new TasksQueue();\n locations.forEach((location) => addTasksToGraph(tasksQueue, dataPerLocation, location));\n if (tasks.length) {\n tasksQueue = new TasksQueue(\n ...tasksQueue.filter(({ task }) => tasks.includes(task.name) || tasks.includes(task.aspectId))\n );\n }\n if (skipTests) {\n tasksQueue = new TasksQueue(...tasksQueue.filter(({ task }) => task.aspectId !== TesterAspect.id));\n }\n if (skipTasks.length) {\n tasksQueue = new TasksQueue(\n ...tasksQueue.filter(({ task }) => !skipTasks.includes(task.name) && !skipTasks.includes(task.aspectId))\n );\n }\n\n return tasksQueue;\n}\n\nfunction addTasksToGraph(tasksQueue: TasksQueue, dataPerLocation: DataPerLocation[], location: Location) {\n const data = dataPerLocation.find((d) => d.location === location);\n if (!data) return;\n const sorted = data.graph.toposort();\n sorted.forEach((taskNode) => {\n const { aspectId, name } = BuildTaskHelper.deserializeId(taskNode.attr);\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n const taskIndex = pipeline.findIndex(\n (pipelineTask) => pipelineTask.aspectId === aspectId && pipelineTask.name === name\n );\n if (taskIndex < 0) return;\n const task = pipeline[taskIndex];\n tasksQueue.push({ env, task });\n pipeline.splice(taskIndex, 1); // delete the task from the pipeline\n });\n });\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n pipeline.forEach((task) => tasksQueue.push({ env, task }));\n });\n}\n\nfunction addDependenciesToGraph(graphs: TasksLocationGraph[], pipeline: BuildTask[], task: BuildTask) {\n if (!task.dependencies || !task.dependencies.length) return;\n const taskId = BuildTaskHelper.serializeId(task);\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n const dependencyTasks = pipeline.filter((pipelineTask) => {\n if (pipelineTask.aspectId !== aspectId) return false;\n return name ? name === pipelineTask.name : true;\n });\n if (dependencyTasks.length === 0) {\n throw new Error(\n `Pipeline error - missing task dependency \"${dependency}\" of the \"${BuildTaskHelper.serializeId(task)}\"`\n );\n }\n dependencyTasks.forEach((dependencyTask) => {\n const location = getLocation(task, dependencyTask);\n if (!location) {\n // the dependency is behind and will be in the correct order regardless the graph.\n return;\n }\n const graphLocation = graphs.find((g) => g.location === location);\n if (!graphLocation) throw new Error(`unable to find graph for location ${location}`);\n const dependencyId = BuildTaskHelper.serializeId(dependencyTask);\n const graph = graphLocation.graph;\n graph.setNode(new Node(taskId, taskId));\n graph.setNode(new Node(dependencyId, dependencyId));\n graph.setEdge(new Edge(dependencyId, taskId, 'dependency'));\n });\n });\n}\n\n/**\n * since the task execution is happening per group: \"start\", \"middle\" and \"end\", the dependencies\n * need to be inside the same group.\n * e.g. if a dependency located at \"end\" group and the task located at \"start\", it's impossible to\n * complete the dependency before the task, there it throws an error.\n * it's ok to have the dependency located earlier, e.g. \"start\" and the task at \"end\", and in this\n * case, it will not be part of the graph because there is no need to do any special calculation.\n */\nfunction getLocation(task: BuildTask, dependencyTask: BuildTask): Location | null {\n const taskLocation = task.location || 'middle';\n const dependencyLocation = dependencyTask.location || 'middle';\n\n const isDependencyAhead =\n (taskLocation === 'start' && dependencyLocation !== 'start') ||\n (taskLocation === 'middle' && dependencyLocation === 'end');\n\n const isDependencyEqual = taskLocation === dependencyLocation;\n\n if (isDependencyAhead) {\n throw new Error(`a task \"${BuildTaskHelper.serializeId(task)}\" located at ${taskLocation}\nhas a dependency \"${BuildTaskHelper.serializeId(dependencyTask)} located at ${dependencyLocation},\nwhich is invalid. the dependency must be located earlier or in the same location as the task\"`);\n }\n\n if (isDependencyEqual) {\n return taskLocation;\n }\n\n // dependency is behind. e.g. task is \"end\" and dependency is \"start\". no need to enter to the\n // graph as it's going to be executed in the right order regardless the graph.\n return null;\n}\n\nfunction getPipelineForEnv(taskSlot: TaskSlot, env: Environment, pipeNameOnEnv: string): BuildTask[] {\n const buildTasks: BuildTask[] = env[pipeNameOnEnv] ? env[pipeNameOnEnv]() : [];\n const slotsTasks = taskSlot.values().flat();\n const tasksAtStart: BuildTask[] = [];\n const tasksAtEnd: BuildTask[] = [];\n slotsTasks.forEach((task) => {\n if (task.location === 'start') {\n tasksAtStart.push(task);\n return;\n }\n if (task.location === 'end') {\n tasksAtEnd.push(task);\n return;\n }\n tasksAtStart.push(task);\n });\n\n // merge with extension registered tasks.\n const mergedTasks = [...tasksAtStart, ...buildTasks, ...tasksAtEnd];\n\n return mergedTasks;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_graph","data","require","_tester","_interopRequireDefault","_buildTask","_tasksQueue","obj","__esModule","default","calculatePipelineOrder","taskSlot","envs","pipeNameOnEnv","tasks","skipTests","skipTasks","graphs","locations","forEach","location","push","graph","Graph","pipelineEnvs","envDefinition","pipeline","getPipelineForEnv","env","flattenedPipeline","map","pipelineEnv","flat","task","addDependenciesToGraph","dataPerLocation","pipelineEnvsPerLocation","filter","tasksQueue","TasksQueue","addTasksToGraph","length","includes","name","aspectId","TesterAspect","id","find","d","sorted","toposort","taskNode","BuildTaskHelper","deserializeId","attr","taskIndex","findIndex","pipelineTask","splice","dependencies","taskId","serializeId","dependency","deserializeIdAllowEmptyName","dependencyTasks","Error","dependencyTask","getLocation","graphLocation","g","dependencyId","setNode","Node","setEdge","Edge","taskLocation","dependencyLocation","isDependencyAhead","isDependencyEqual","buildTasks","slotsTasks","values","tasksAtStart","tasksAtEnd","mergedTasks"],"sources":["build-pipeline-order.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport TesterAspect from '@teambit/tester';\nimport { EnvDefinition, Environment } from '@teambit/envs';\nimport { BuildTask, BuildTaskHelper } from './build-task';\nimport type { TaskSlot } from './builder.main.runtime';\nimport { TasksQueue } from './tasks-queue';\nimport { PipeFunctionNames } from './builder.service';\n\ntype TaskDependenciesGraph = Graph<string, string>;\ntype Location = 'start' | 'middle' | 'end';\ntype TasksLocationGraph = { location: Location; graph: TaskDependenciesGraph };\ntype PipelineEnv = { env: EnvDefinition; pipeline: BuildTask[] };\ntype DataPerLocation = { location: Location; graph: TaskDependenciesGraph; pipelineEnvs: PipelineEnv[] };\n\n/**\n * there are two ways how to add tasks to build pipeline.\n * 1. `getBuildPipe()` method of the env.\n * 2. registering to the `builder.registerBuildTask()`.\n *\n * in the option #1, it's possible to determine the order. e.g. `getBuildPipe() { return [taskA, taskB, taskC]; }`\n * in the option #2, the register happens once the extension is loaded, so there is no way to put\n * one task before/after another task.\n *\n * To be able to determine the order, you can do the following\n * 1. \"task.location\", it has two options \"start\" and \"end\". the rest are \"middle\".\n * 2. \"task.dependencies\", the dependencies must be completed for all envs before this task starts.\n * the dependencies are applicable inside a location and not across locations. see getLocation()\n * or/and continue reading for more info about this.\n *\n * to determine the final order of the tasks, the following is done:\n * 1. split all tasks to three groups: start, middle and end.\n * 2. for each group define a dependencies graph for the tasks with \"dependencies\" prop and the pipeline.\n * 3. start with the first group \"start\", toposort the dependencies graph and push the found tasks\n * to a queue. once completed, iterate the pipeline and add all tasks to the queue.\n * 4. do the same for the \"middle\" and \"end\" groups.\n *\n * the reason for splitting the tasks to the three groups and not using the \"dependencies\" field\n * alone to determine the order is that the \"start\" and \"end\" groups are mostly core and \"middle\"\n * is mostly the user entering tasks to the pipeline and we as the core don't know about the users\n * tasks. For example, a core task \"PublishComponent\" must happen after the compiler, however, a\n * user might have an env without a compiler. if we determine the order only by the dependencies\n * field, the \"PublishComponent\" would have a dependency \"compiler\" and because in this case there\n * is no compiler task, it would throw an error about missing dependencies.\n */\nexport function calculatePipelineOrder(\n taskSlot: TaskSlot,\n envs: EnvDefinition[],\n pipeNameOnEnv: PipeFunctionNames,\n tasks: string[] = [],\n skipTests = false,\n skipTasks: string[] = []\n): TasksQueue {\n const graphs: TasksLocationGraph[] = [];\n const locations: Location[] = ['start', 'middle', 'end']; // the order is important here!\n locations.forEach((location) => {\n graphs.push({ location, graph: new Graph<string, string>() });\n });\n const pipelineEnvs: PipelineEnv[] = [];\n envs.forEach((envDefinition) => {\n const pipeline = getPipelineForEnv(taskSlot, envDefinition.env, pipeNameOnEnv);\n pipelineEnvs.push({ env: envDefinition, pipeline });\n });\n\n const flattenedPipeline: BuildTask[] = pipelineEnvs.map((pipelineEnv) => pipelineEnv.pipeline).flat();\n flattenedPipeline.forEach((task) => addDependenciesToGraph(graphs, flattenedPipeline, task));\n\n const dataPerLocation: DataPerLocation[] = graphs.map(({ location, graph }) => {\n const pipelineEnvsPerLocation: PipelineEnv[] = pipelineEnvs.map(({ env, pipeline }) => {\n return { env, pipeline: pipeline.filter((task) => (task.location || 'middle') === location) };\n });\n return { location, graph, pipelineEnvs: pipelineEnvsPerLocation };\n });\n\n let tasksQueue = new TasksQueue();\n locations.forEach((location) => addTasksToGraph(tasksQueue, dataPerLocation, location));\n if (tasks.length) {\n tasksQueue = new TasksQueue(\n ...tasksQueue.filter(({ task }) => tasks.includes(task.name) || tasks.includes(task.aspectId))\n );\n }\n if (skipTests) {\n tasksQueue = new TasksQueue(...tasksQueue.filter(({ task }) => task.aspectId !== TesterAspect.id));\n }\n if (skipTasks.length) {\n tasksQueue = new TasksQueue(\n ...tasksQueue.filter(({ task }) => !skipTasks.includes(task.name) && !skipTasks.includes(task.aspectId))\n );\n }\n\n return tasksQueue;\n}\n\nfunction addTasksToGraph(tasksQueue: TasksQueue, dataPerLocation: DataPerLocation[], location: Location) {\n const data = dataPerLocation.find((d) => d.location === location);\n if (!data) return;\n const sorted = data.graph.toposort();\n sorted.forEach((taskNode) => {\n const { aspectId, name } = BuildTaskHelper.deserializeId(taskNode.attr);\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n const taskIndex = pipeline.findIndex(\n (pipelineTask) => pipelineTask.aspectId === aspectId && pipelineTask.name === name\n );\n if (taskIndex < 0) return;\n const task = pipeline[taskIndex];\n tasksQueue.push({ env, task });\n pipeline.splice(taskIndex, 1); // delete the task from the pipeline\n });\n });\n data.pipelineEnvs.forEach(({ env, pipeline }) => {\n pipeline.forEach((task) => tasksQueue.push({ env, task }));\n });\n}\n\nfunction addDependenciesToGraph(graphs: TasksLocationGraph[], pipeline: BuildTask[], task: BuildTask) {\n if (!task.dependencies || !task.dependencies.length) return;\n const taskId = BuildTaskHelper.serializeId(task);\n task.dependencies.forEach((dependency) => {\n const { aspectId, name } = BuildTaskHelper.deserializeIdAllowEmptyName(dependency);\n const dependencyTasks = pipeline.filter((pipelineTask) => {\n if (pipelineTask.aspectId !== aspectId) return false;\n return name ? name === pipelineTask.name : true;\n });\n if (dependencyTasks.length === 0) {\n throw new Error(\n `Pipeline error - missing task dependency \"${dependency}\" of the \"${BuildTaskHelper.serializeId(task)}\"`\n );\n }\n dependencyTasks.forEach((dependencyTask) => {\n const location = getLocation(task, dependencyTask);\n if (!location) {\n // the dependency is behind and will be in the correct order regardless the graph.\n return;\n }\n const graphLocation = graphs.find((g) => g.location === location);\n if (!graphLocation) throw new Error(`unable to find graph for location ${location}`);\n const dependencyId = BuildTaskHelper.serializeId(dependencyTask);\n const graph = graphLocation.graph;\n graph.setNode(new Node(taskId, taskId));\n graph.setNode(new Node(dependencyId, dependencyId));\n graph.setEdge(new Edge(dependencyId, taskId, 'dependency'));\n });\n });\n}\n\n/**\n * since the task execution is happening per group: \"start\", \"middle\" and \"end\", the dependencies\n * need to be inside the same group.\n * e.g. if a dependency located at \"end\" group and the task located at \"start\", it's impossible to\n * complete the dependency before the task, there it throws an error.\n * it's ok to have the dependency located earlier, e.g. \"start\" and the task at \"end\", and in this\n * case, it will not be part of the graph because there is no need to do any special calculation.\n */\nfunction getLocation(task: BuildTask, dependencyTask: BuildTask): Location | null {\n const taskLocation = task.location || 'middle';\n const dependencyLocation = dependencyTask.location || 'middle';\n\n const isDependencyAhead =\n (taskLocation === 'start' && dependencyLocation !== 'start') ||\n (taskLocation === 'middle' && dependencyLocation === 'end');\n\n const isDependencyEqual = taskLocation === dependencyLocation;\n\n if (isDependencyAhead) {\n throw new Error(`a task \"${BuildTaskHelper.serializeId(task)}\" located at ${taskLocation}\nhas a dependency \"${BuildTaskHelper.serializeId(dependencyTask)} located at ${dependencyLocation},\nwhich is invalid. the dependency must be located earlier or in the same location as the task\"`);\n }\n\n if (isDependencyEqual) {\n return taskLocation;\n }\n\n // dependency is behind. e.g. task is \"end\" and dependency is \"start\". no need to enter to the\n // graph as it's going to be executed in the right order regardless the graph.\n return null;\n}\n\nfunction getPipelineForEnv(taskSlot: TaskSlot, env: Environment, pipeNameOnEnv: string): BuildTask[] {\n const buildTasks: BuildTask[] = env[pipeNameOnEnv] ? env[pipeNameOnEnv]() : [];\n const slotsTasks = taskSlot.values().flat();\n const tasksAtStart: BuildTask[] = [];\n const tasksAtEnd: BuildTask[] = [];\n slotsTasks.forEach((task) => {\n if (task.location === 'start') {\n tasksAtStart.push(task);\n return;\n }\n if (task.location === 'end') {\n tasksAtEnd.push(task);\n return;\n }\n tasksAtStart.push(task);\n });\n\n // merge with extension registered tasks.\n const mergedTasks = [...tasksAtStart, ...buildTasks, ...tasksAtEnd];\n\n return mergedTasks;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_component","data","require","_lodash","_artifact","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","BuildPipelineResultList","constructor","tasksResults","components","artifactListsMap","getFlattenedArtifactListsMapFromAllTasks","artifactListsMaps","flatMap","artifacts","ComponentMap","as","component","artifactListMap","artifactList","getValueByComponentId","id","ArtifactList","fromArray","getMetadataFromTaskResults","componentId","compResults","reduce","acc","current","foundComponent","componentsResults","find","c","isEqual","taskId","task","aspectId","metadata","mergeDataIfPossible","getPipelineReportOfComponent","map","taskResults","pipelineReport","taskName","name","taskDescription","description","errors","warnings","startTime","endTime","compact","getDataOfComponent","tasksData","getArtifactsDataOfComponent","toObject","currentData","existingData","isEmpty","Error","Array","isArray","exports"],"sources":["build-pipeline-result-list.ts"],"sourcesContent":["import { ComponentID, ComponentMap, Component } from '@teambit/component';\nimport { isEmpty, compact } from 'lodash';\nimport type { ArtifactObject } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { Artifact, ArtifactList } from './artifact';\nimport { TaskResults } from './build-pipe';\nimport { TaskMetadata } from './types';\n\nexport type PipelineReport = {\n taskId: string; // task aspect-id\n taskName: string;\n taskDescription?: string;\n startTime?: number;\n endTime?: number;\n errors?: Array<Error | string>;\n warnings?: string[];\n};\n\nexport type AspectData = {\n aspectId: string;\n data: TaskMetadata;\n};\n\n/**\n * Helper to get the data and artifacts from the TasksResultsList before saving during the tag\n */\nexport class BuildPipelineResultList {\n private artifactListsMap: ComponentMap<ArtifactList<Artifact>>;\n constructor(private tasksResults: TaskResults[], private components: Component[]) {\n this.artifactListsMap = this.getFlattenedArtifactListsMapFromAllTasks();\n }\n\n private getFlattenedArtifactListsMapFromAllTasks(): ComponentMap<ArtifactList<Artifact>> {\n const artifactListsMaps = this.tasksResults.flatMap((t) => (t.artifacts ? [t.artifacts] : []));\n return ComponentMap.as<ArtifactList<Artifact>>(this.components, (component) => {\n const artifacts: Artifact[] = [];\n artifactListsMaps.forEach((artifactListMap) => {\n const artifactList = artifactListMap.getValueByComponentId(component.id);\n if (artifactList) artifacts.push(...artifactList);\n });\n return ArtifactList.fromArray(artifacts);\n });\n }\n\n public getMetadataFromTaskResults(componentId: ComponentID): { [taskId: string]: TaskMetadata } {\n const compResults = this.tasksResults.reduce((acc, current: TaskResults) => {\n const foundComponent = current.componentsResults.find((c) => c.component.id.isEqual(componentId));\n const taskId = current.task.aspectId;\n if (foundComponent && foundComponent.metadata) {\n acc[taskId] = this.mergeDataIfPossible(foundComponent.metadata, acc[taskId], taskId);\n }\n return acc;\n }, {});\n return compResults;\n }\n\n public getPipelineReportOfComponent(componentId: ComponentID): PipelineReport[] {\n const compResults = this.tasksResults.map((taskResults: TaskResults) => {\n const foundComponent = taskResults.componentsResults.find((c) => c.component.id.isEqual(componentId));\n if (!foundComponent) return null;\n const pipelineReport: PipelineReport = {\n taskId: taskResults.task.aspectId,\n taskName: taskResults.task.name,\n taskDescription: taskResults.task.description,\n errors: foundComponent.errors,\n warnings: foundComponent.warnings,\n startTime: foundComponent.startTime,\n endTime: foundComponent.endTime,\n };\n return pipelineReport;\n });\n return compact(compResults);\n }\n\n public getDataOfComponent(componentId: ComponentID): AspectData[] {\n const tasksData = this.getMetadataFromTaskResults(componentId);\n return Object.keys(tasksData).map((taskId) => ({\n aspectId: taskId,\n data: tasksData[taskId],\n }));\n }\n\n public getArtifactsDataOfComponent(componentId: ComponentID): ArtifactObject[] | undefined {\n return this.artifactListsMap.getValueByComponentId(componentId)?.toObject();\n }\n\n private mergeDataIfPossible(currentData: TaskMetadata, existingData: TaskMetadata | undefined, taskId: string) {\n if (!existingData || isEmpty(existingData)) return currentData;\n // both exist\n if (typeof currentData !== 'object') {\n throw new Error(`task data must be \"object\", get ${typeof currentData} for ${taskId}`);\n }\n if (Array.isArray(currentData)) {\n throw new Error(`task data must be \"object\", get Array for ${taskId}`);\n }\n return { ...currentData, ...existingData };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_component","data","require","_lodash","_artifact","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","BuildPipelineResultList","constructor","tasksResults","components","artifactListsMap","getFlattenedArtifactListsMapFromAllTasks","artifactListsMaps","flatMap","artifacts","ComponentMap","as","component","artifactListMap","artifactList","getValueByComponentId","id","ArtifactList","fromArray","getMetadataFromTaskResults","componentId","compResults","reduce","acc","current","foundComponent","componentsResults","find","c","isEqual","taskId","task","aspectId","metadata","mergeDataIfPossible","getPipelineReportOfComponent","map","taskResults","pipelineReport","taskName","name","taskDescription","description","errors","warnings","startTime","endTime","compact","getDataOfComponent","tasksData","getArtifactsDataOfComponent","toObject","currentData","existingData","isEmpty","Error","Array","isArray","exports"],"sources":["build-pipeline-result-list.ts"],"sourcesContent":["import { ComponentID, ComponentMap, Component } from '@teambit/component';\nimport { isEmpty, compact } from 'lodash';\nimport type { ArtifactObject } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { Artifact, ArtifactList } from './artifact';\nimport { TaskResults } from './build-pipe';\nimport { TaskMetadata } from './types';\n\nexport type PipelineReport = {\n taskId: string; // task aspect-id\n taskName: string;\n taskDescription?: string;\n startTime?: number;\n endTime?: number;\n errors?: Array<Error | string>;\n warnings?: string[];\n};\n\nexport type AspectData = {\n aspectId: string;\n data: TaskMetadata;\n};\n\n/**\n * Helper to get the data and artifacts from the TasksResultsList before saving during the tag\n */\nexport class BuildPipelineResultList {\n private artifactListsMap: ComponentMap<ArtifactList<Artifact>>;\n constructor(private tasksResults: TaskResults[], private components: Component[]) {\n this.artifactListsMap = this.getFlattenedArtifactListsMapFromAllTasks();\n }\n\n private getFlattenedArtifactListsMapFromAllTasks(): ComponentMap<ArtifactList<Artifact>> {\n const artifactListsMaps = this.tasksResults.flatMap((t) => (t.artifacts ? [t.artifacts] : []));\n return ComponentMap.as<ArtifactList<Artifact>>(this.components, (component) => {\n const artifacts: Artifact[] = [];\n artifactListsMaps.forEach((artifactListMap) => {\n const artifactList = artifactListMap.getValueByComponentId(component.id);\n if (artifactList) artifacts.push(...artifactList);\n });\n return ArtifactList.fromArray(artifacts);\n });\n }\n\n public getMetadataFromTaskResults(componentId: ComponentID): { [taskId: string]: TaskMetadata } {\n const compResults = this.tasksResults.reduce((acc, current: TaskResults) => {\n const foundComponent = current.componentsResults.find((c) => c.component.id.isEqual(componentId));\n const taskId = current.task.aspectId;\n if (foundComponent && foundComponent.metadata) {\n acc[taskId] = this.mergeDataIfPossible(foundComponent.metadata, acc[taskId], taskId);\n }\n return acc;\n }, {});\n return compResults;\n }\n\n public getPipelineReportOfComponent(componentId: ComponentID): PipelineReport[] {\n const compResults = this.tasksResults.map((taskResults: TaskResults) => {\n const foundComponent = taskResults.componentsResults.find((c) => c.component.id.isEqual(componentId));\n if (!foundComponent) return null;\n const pipelineReport: PipelineReport = {\n taskId: taskResults.task.aspectId,\n taskName: taskResults.task.name,\n taskDescription: taskResults.task.description,\n errors: foundComponent.errors,\n warnings: foundComponent.warnings,\n startTime: foundComponent.startTime,\n endTime: foundComponent.endTime,\n };\n return pipelineReport;\n });\n return compact(compResults);\n }\n\n public getDataOfComponent(componentId: ComponentID): AspectData[] {\n const tasksData = this.getMetadataFromTaskResults(componentId);\n return Object.keys(tasksData).map((taskId) => ({\n aspectId: taskId,\n data: tasksData[taskId],\n }));\n }\n\n public getArtifactsDataOfComponent(componentId: ComponentID): ArtifactObject[] | undefined {\n return this.artifactListsMap.getValueByComponentId(componentId)?.toObject();\n }\n\n private mergeDataIfPossible(currentData: TaskMetadata, existingData: TaskMetadata | undefined, taskId: string) {\n if (!existingData || isEmpty(existingData)) return currentData;\n // both exist\n if (typeof currentData !== 'object') {\n throw new Error(`task data must be \"object\", get ${typeof currentData} for ${taskId}`);\n }\n if (Array.isArray(currentData)) {\n throw new Error(`task data must be \"object\", get Array for ${taskId}`);\n }\n return { ...currentData, ...existingData };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/build-task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TaskIdDelimiter","exports","CAPSULE_ARTIFACTS_DIR","BuildTaskHelper","serializeId","aspectId","name","deserializeId","id","split","length","Error","deserializeIdAllowEmptyName","includes","undefined"],"sources":["build-task.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport { LaneId } from '@teambit/lane-id';\nimport { ExecutionContext } from '@teambit/envs';\nimport type { Network } from '@teambit/isolator';\nimport type { ComponentResult } from './types';\nimport type { ArtifactDefinition } from './artifact';\nimport { TaskResultsList } from './task-results-list';\nimport { TaskResults } from './build-pipe';\nimport { PipeName } from './builder.service';\n\nexport type TaskLocation = 'start' | 'end';\n\n/**\n * delimiter between task.aspectId and task.name\n */\nexport const TaskIdDelimiter = ':';\n\n/**\n * A folder to write artifacts generated during a build task\n * This folder is used in the core envs and excluded by default from the package tar file (the core envs is writing this into the npmignore file)\n */\nexport const CAPSULE_ARTIFACTS_DIR = 'artifacts';\n\nexport interface BuildContext extends ExecutionContext {\n /**\n * all components about to be built/tagged.\n */\n components: Component[];\n\n /**\n * network of capsules ready to be built.\n */\n capsuleNetwork: Network;\n\n /**\n * data generated by tasks that were running before this task\n */\n previousTasksResults: TaskResults[];\n\n /**\n * Run the build pipeline in dev mode\n */\n dev?: boolean;\n\n /**\n * pipe name such as \"build\", \"tas\", \"snap\".\n * an example usage is \"deploy\" task which is running in snap and tag pipeline and has different needs in each one.\n */\n pipeName: PipeName;\n\n /**\n * current lane-id if exists. empty when on main.\n */\n laneId?: LaneId;\n}\n\nexport interface TaskDescriptor {\n aspectId: string;\n name?: string;\n description?: string;\n}\n\nexport interface BuildTask {\n /**\n * aspect id serialized of the creator of the task.\n * todo: automate this so then it won't be needed to pass manually.\n */\n aspectId: string;\n\n /**\n * name of the task. function as an identifier among other tasks of the same aspectId.\n * spaces and special characters are not allowed. as a convention, use UpperCamelCase style.\n * (e.g. TypescriptCompiler).\n */\n name: string;\n\n /**\n * description of what the task does.\n * if available, the logger will log it show it in the status-line.\n */\n description?: string;\n\n /**\n * where to put the task, before the env pipeline or after\n */\n location?: TaskLocation;\n\n /**\n * execute a task in a build context\n */\n execute(context: BuildContext): Promise<BuiltTaskResult>;\n\n /**\n * run before the build pipeline has started. this is useful when some preparation are needed to\n * be done on all envs before the build starts.\n * e.g. typescript compiler needs to write the tsconfig file. doing it during the task, will\n * cause dependencies from other envs to get this tsconfig written.\n */\n preBuild?(context: BuildContext): Promise<void>;\n\n /**\n * run after the build pipeline completed for all envs. useful for doing some cleanup on the\n * capsules before the deployment starts.\n */\n postBuild?(context: BuildContext, tasksResults: TaskResultsList): Promise<void>;\n\n /**\n * needed if you want the task to be running only after the dependencies were completed\n * for *all* envs.\n * normally this is not needed because the build-pipeline runs the tasks in the same order\n * they're located in the `getBuildPipe()` array and according to the task.location.\n * the case where this is useful is when a task not only needs to be after another task, but also\n * after all environments were running that task.\n * a dependency is task.aspectId. if an aspect has multiple tasks, to be more specific, use\n * \"aspectId:name\", e.g. \"teambit.compilation/compiler:TypescriptCompiler\".\n */\n dependencies?: string[];\n}\n\n// TODO: rename to BuildTaskResults\nexport interface BuiltTaskResult {\n /**\n * build results for each of the components in the build context.\n */\n componentsResults: ComponentResult[];\n\n /**\n * array of artifact definitions to generate after a successful build.\n */\n artifacts?: ArtifactDefinition[];\n}\n\nexport class BuildTaskHelper {\n static serializeId({ aspectId, name }: { aspectId: string; name: string }): string {\n return aspectId + TaskIdDelimiter + name;\n }\n static deserializeId(id: string): { aspectId: string; name: string } {\n const split = id.split(TaskIdDelimiter);\n if (split.length === 0) throw new Error(`deserializeId, ${id} is empty`);\n if (split.length === 1) throw new Error(`deserializeId, ${id} has only aspect-id without name`);\n if (split.length === 2) return { aspectId: split[0], name: split[1] };\n throw new Error(`deserializeId, id ${id} has more than one ${TaskIdDelimiter}`);\n }\n /**\n * don't throw an error when the id includes only the aspect-id without the task name.\n * useful for task dependencies, when it's allowed to specify the aspect-id only.\n */\n static deserializeIdAllowEmptyName(id: string): { aspectId: string; name?: string } {\n return id.includes(TaskIdDelimiter) ? BuildTaskHelper.deserializeId(id) : { aspectId: id, name: undefined };\n }\n}\n"],"mappings":";;;;;;AAYA;AACA;AACA;AACO,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,GAAG;;AAElC;AACA;AACA;AACA;AACO,MAAME,qBAAqB,GAAAD,OAAA,CAAAC,qBAAA,GAAG,WAAW;;AAkGhD;;AAaO,MAAMC,eAAe,CAAC;EAC3B,OAAOC,WAAWA,CAAC;IAAEC,QAAQ;IAAEC;EAAyC,CAAC,EAAU;IACjF,OAAOD,QAAQ,GAAGL,eAAe,GAAGM,IAAI;EAC1C;EACA,OAAOC,aAAaA,CAACC,EAAU,EAAsC;IACnE,MAAMC,KAAK,GAAGD,EAAE,CAACC,KAAK,CAACT,eAAe,CAAC;IACvC,IAAIS,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAE,kBAAiBH,EAAG,WAAU,CAAC;IACxE,IAAIC,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAE,kBAAiBH,EAAG,kCAAiC,CAAC;IAC/F,IAAIC,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO;MAAEL,QAAQ,EAAEI,KAAK,CAAC,CAAC,CAAC;MAAEH,IAAI,EAAEG,KAAK,CAAC,CAAC;IAAE,CAAC;IACrE,MAAM,IAAIE,KAAK,CAAE,qBAAoBH,EAAG,sBAAqBR,eAAgB,EAAC,CAAC;EACjF;EACA;AACF;AACA;AACA;EACE,OAAOY,2BAA2BA,CAACJ,EAAU,EAAuC;IAClF,OAAOA,EAAE,CAACK,QAAQ,CAACb,eAAe,CAAC,GAAGG,eAAe,CAACI,aAAa,CAACC,EAAE,CAAC,GAAG;MAAEH,QAAQ,EAAEG,EAAE;MAAEF,IAAI,EAAEQ;IAAU,CAAC;EAC7G;AACF;AAACb,OAAA,CAAAE,eAAA,GAAAA,eAAA"}
|
|
1
|
+
{"version":3,"names":["TaskIdDelimiter","exports","CAPSULE_ARTIFACTS_DIR","BuildTaskHelper","serializeId","aspectId","name","deserializeId","id","split","length","Error","deserializeIdAllowEmptyName","includes","undefined"],"sources":["build-task.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport { LaneId } from '@teambit/lane-id';\nimport { ExecutionContext } from '@teambit/envs';\nimport type { Network } from '@teambit/isolator';\nimport type { ComponentResult } from './types';\nimport type { ArtifactDefinition } from './artifact';\nimport { TaskResultsList } from './task-results-list';\nimport { TaskResults } from './build-pipe';\nimport { PipeName } from './builder.service';\n\nexport type TaskLocation = 'start' | 'end';\n\n/**\n * delimiter between task.aspectId and task.name\n */\nexport const TaskIdDelimiter = ':';\n\n/**\n * A folder to write artifacts generated during a build task\n * This folder is used in the core envs and excluded by default from the package tar file (the core envs is writing this into the npmignore file)\n */\nexport const CAPSULE_ARTIFACTS_DIR = 'artifacts';\n\nexport interface BuildContext extends ExecutionContext {\n /**\n * all components about to be built/tagged.\n */\n components: Component[];\n\n /**\n * network of capsules ready to be built.\n */\n capsuleNetwork: Network;\n\n /**\n * data generated by tasks that were running before this task\n */\n previousTasksResults: TaskResults[];\n\n /**\n * Run the build pipeline in dev mode\n */\n dev?: boolean;\n\n /**\n * pipe name such as \"build\", \"tas\", \"snap\".\n * an example usage is \"deploy\" task which is running in snap and tag pipeline and has different needs in each one.\n */\n pipeName: PipeName;\n\n /**\n * current lane-id if exists. empty when on main.\n */\n laneId?: LaneId;\n}\n\nexport interface TaskDescriptor {\n aspectId: string;\n name?: string;\n description?: string;\n}\n\nexport interface BuildTask {\n /**\n * aspect id serialized of the creator of the task.\n * todo: automate this so then it won't be needed to pass manually.\n */\n aspectId: string;\n\n /**\n * name of the task. function as an identifier among other tasks of the same aspectId.\n * spaces and special characters are not allowed. as a convention, use UpperCamelCase style.\n * (e.g. TypescriptCompiler).\n */\n name: string;\n\n /**\n * description of what the task does.\n * if available, the logger will log it show it in the status-line.\n */\n description?: string;\n\n /**\n * where to put the task, before the env pipeline or after\n */\n location?: TaskLocation;\n\n /**\n * execute a task in a build context\n */\n execute(context: BuildContext): Promise<BuiltTaskResult>;\n\n /**\n * run before the build pipeline has started. this is useful when some preparation are needed to\n * be done on all envs before the build starts.\n * e.g. typescript compiler needs to write the tsconfig file. doing it during the task, will\n * cause dependencies from other envs to get this tsconfig written.\n */\n preBuild?(context: BuildContext): Promise<void>;\n\n /**\n * run after the build pipeline completed for all envs. useful for doing some cleanup on the\n * capsules before the deployment starts.\n */\n postBuild?(context: BuildContext, tasksResults: TaskResultsList): Promise<void>;\n\n /**\n * needed if you want the task to be running only after the dependencies were completed\n * for *all* envs.\n * normally this is not needed because the build-pipeline runs the tasks in the same order\n * they're located in the `getBuildPipe()` array and according to the task.location.\n * the case where this is useful is when a task not only needs to be after another task, but also\n * after all environments were running that task.\n * a dependency is task.aspectId. if an aspect has multiple tasks, to be more specific, use\n * \"aspectId:name\", e.g. \"teambit.compilation/compiler:TypescriptCompiler\".\n */\n dependencies?: string[];\n}\n\n// TODO: rename to BuildTaskResults\nexport interface BuiltTaskResult {\n /**\n * build results for each of the components in the build context.\n */\n componentsResults: ComponentResult[];\n\n /**\n * array of artifact definitions to generate after a successful build.\n */\n artifacts?: ArtifactDefinition[];\n}\n\nexport class BuildTaskHelper {\n static serializeId({ aspectId, name }: { aspectId: string; name: string }): string {\n return aspectId + TaskIdDelimiter + name;\n }\n static deserializeId(id: string): { aspectId: string; name: string } {\n const split = id.split(TaskIdDelimiter);\n if (split.length === 0) throw new Error(`deserializeId, ${id} is empty`);\n if (split.length === 1) throw new Error(`deserializeId, ${id} has only aspect-id without name`);\n if (split.length === 2) return { aspectId: split[0], name: split[1] };\n throw new Error(`deserializeId, id ${id} has more than one ${TaskIdDelimiter}`);\n }\n /**\n * don't throw an error when the id includes only the aspect-id without the task name.\n * useful for task dependencies, when it's allowed to specify the aspect-id only.\n */\n static deserializeIdAllowEmptyName(id: string): { aspectId: string; name?: string } {\n return id.includes(TaskIdDelimiter) ? BuildTaskHelper.deserializeId(id) : { aspectId: id, name: undefined };\n }\n}\n"],"mappings":";;;;;;AAYA;AACA;AACA;AACO,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,GAAG;;AAElC;AACA;AACA;AACA;AACO,MAAME,qBAAqB,GAAAD,OAAA,CAAAC,qBAAA,GAAG,WAAW;;AAkGhD;;AAaO,MAAMC,eAAe,CAAC;EAC3B,OAAOC,WAAWA,CAAC;IAAEC,QAAQ;IAAEC;EAAyC,CAAC,EAAU;IACjF,OAAOD,QAAQ,GAAGL,eAAe,GAAGM,IAAI;EAC1C;EACA,OAAOC,aAAaA,CAACC,EAAU,EAAsC;IACnE,MAAMC,KAAK,GAAGD,EAAE,CAACC,KAAK,CAACT,eAAe,CAAC;IACvC,IAAIS,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAE,kBAAiBH,EAAG,WAAU,CAAC;IACxE,IAAIC,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAE,kBAAiBH,EAAG,kCAAiC,CAAC;IAC/F,IAAIC,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO;MAAEL,QAAQ,EAAEI,KAAK,CAAC,CAAC,CAAC;MAAEH,IAAI,EAAEG,KAAK,CAAC,CAAC;IAAE,CAAC;IACrE,MAAM,IAAIE,KAAK,CAAE,qBAAoBH,EAAG,sBAAqBR,eAAgB,EAAC,CAAC;EACjF;EACA;AACF;AACA;AACA;EACE,OAAOY,2BAA2BA,CAACJ,EAAU,EAAuC;IAClF,OAAOA,EAAE,CAACK,QAAQ,CAACb,eAAe,CAAC,GAAGG,eAAe,CAACI,aAAa,CAACC,EAAE,CAAC,GAAG;MAAEH,QAAQ,EAAEG,EAAE;MAAEF,IAAI,EAAEQ;IAAU,CAAC;EAC7G;AACF;AAACb,OAAA,CAAAE,eAAA,GAAAA,eAAA","ignoreList":[]}
|