@teambit/builder 0.0.881 → 0.0.883

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/artifact/artifact-extractor.js +6 -47
  2. package/dist/artifact/artifact-extractor.js.map +1 -1
  3. package/dist/artifact/artifact-factory.js +1 -52
  4. package/dist/artifact/artifact-factory.js.map +1 -1
  5. package/dist/artifact/artifact-list.js +6 -43
  6. package/dist/artifact/artifact-list.js.map +1 -1
  7. package/dist/artifact/artifact.js +4 -20
  8. package/dist/artifact/artifact.js.map +1 -1
  9. package/dist/artifact/artifacts.cmd.js +0 -29
  10. package/dist/artifact/artifacts.cmd.js.map +1 -1
  11. package/dist/artifact/extension-artifact.js +0 -4
  12. package/dist/artifact/extension-artifact.js.map +1 -1
  13. package/dist/artifact/fs-artifact.js +0 -6
  14. package/dist/artifact/fs-artifact.js.map +1 -1
  15. package/dist/artifact/index.js +0 -18
  16. package/dist/artifact/index.js.map +1 -1
  17. package/dist/build-pipe.js +2 -44
  18. package/dist/build-pipe.js.map +1 -1
  19. package/dist/build-pipeline-order.js +7 -44
  20. package/dist/build-pipeline-order.js.map +1 -1
  21. package/dist/build-pipeline-result-list.js +2 -35
  22. package/dist/build-pipeline-result-list.js.map +1 -1
  23. package/dist/build-task.js +1 -9
  24. package/dist/build-task.js.map +1 -1
  25. package/dist/build.cmd.js +0 -27
  26. package/dist/build.cmd.js.map +1 -1
  27. package/dist/builder.aspect.js +0 -5
  28. package/dist/builder.aspect.js.map +1 -1
  29. package/dist/builder.composition.js +0 -6
  30. package/dist/builder.composition.js.map +1 -1
  31. package/dist/builder.graphql.js +0 -19
  32. package/dist/builder.graphql.js.map +1 -1
  33. package/dist/builder.main.runtime.js +8 -137
  34. package/dist/builder.main.runtime.js.map +1 -1
  35. package/dist/builder.route.js +3 -27
  36. package/dist/builder.route.js.map +1 -1
  37. package/dist/builder.service.js +1 -37
  38. package/dist/builder.service.js.map +1 -1
  39. package/dist/exceptions/artifact-definition-no-glob.js +0 -3
  40. package/dist/exceptions/artifact-definition-no-glob.js.map +1 -1
  41. package/dist/exceptions/artifact-storage-error.js +0 -3
  42. package/dist/exceptions/artifact-storage-error.js.map +1 -1
  43. package/dist/exceptions/capsule-not-found.js +0 -3
  44. package/dist/exceptions/capsule-not-found.js.map +1 -1
  45. package/dist/exceptions/index.js +0 -9
  46. package/dist/exceptions/index.js.map +1 -1
  47. package/dist/exceptions/invalid-task.js +0 -6
  48. package/dist/exceptions/invalid-task.js.map +1 -1
  49. package/dist/index.js +0 -24
  50. package/dist/index.js.map +1 -1
  51. package/dist/pipeline/index.js +0 -3
  52. package/dist/pipeline/index.js.map +1 -1
  53. package/dist/pipeline/pipeline-results.js +0 -2
  54. package/dist/pipeline/pipeline-results.js.map +1 -1
  55. package/dist/storage/default-resolver.js +0 -9
  56. package/dist/storage/default-resolver.js.map +1 -1
  57. package/dist/storage/index.js +0 -6
  58. package/dist/storage/index.js.map +1 -1
  59. package/dist/storage/s3-resolver.js +4 -0
  60. package/dist/storage/s3-resolver.js.map +1 -1
  61. package/dist/task-results-list.js +1 -23
  62. package/dist/task-results-list.js.map +1 -1
  63. package/dist/tasks-queue.js +0 -14
  64. package/dist/tasks-queue.js.map +1 -1
  65. package/dist/templates/build-task/files/index-file.js +0 -1
  66. package/dist/templates/build-task/files/index-file.js.map +1 -1
  67. package/dist/templates/build-task/files/task-file.js +0 -1
  68. package/dist/templates/build-task/files/task-file.js.map +1 -1
  69. package/dist/templates/build-task/index.js +0 -7
  70. package/dist/templates/build-task/index.js.map +1 -1
  71. package/package-tar/teambit-builder-0.0.883.tgz +0 -0
  72. package/package.json +11 -11
  73. package/{preview-1666409808293.js → preview-1666582798766.js} +2 -2
  74. package/package-tar/teambit-builder-0.0.881.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["FILE_PATH_PARAM_DELIM","BuilderMain","constructor","envs","workspace","buildService","tagService","snapService","scope","isolator","aspectLoader","componentAspect","buildTaskSlot","tagTaskSlot","snapTaskSlot","storeArtifacts","tasksResults","artifacts","flatMap","t","storeP","map","artifactMap","Promise","all","toArray","component","artifactList","store","err","ArtifactStorageError","pipelineResultsToBuilderData","components","buildPipelineResults","buildPipelineResultList","BuildPipelineResultList","ComponentMap","as","aspectsData","getDataOfComponent","id","pipelineReport","getPipelineReportOfComponent","getArtifactsDataOfComponent","pipeline","bitVersion","getHarmonyVersion","tagListener","options","isolateOptions","pipeResults","throwOnError","forceDeploy","disableTagAndSnapPipelines","isSnap","envsExecutionResults","build","emptyRootDir","skipTests","throwErrorsIfExist","allTasksResults","push","hasErrors","deployEnvsExecutionResults","runSnapTasks","runTagTasks","builderDataMap","validateBuilderDataMap","forEach","buildData","taskSerializedIds","BuildTaskHelper","serializeId","aspectId","taskId","name","taskName","duplications","findDuplications","length","Error","toString","join","getArtifactsVinylByAspect","aspectName","getArtifactsByAspect","vinyls","getVinylsAndImportIfMissing","_legacy","legacyScope","getArtifactsVinylByAspectAndName","getArtifactsByAspectAndName","getArtifactsVinylByAspectAndTaskName","getArtifactsbyAspectAndTaskName","getArtifactsByName","getArtifacts","byAspectNameAndName","undefined","byAspectNameAndTaskName","getDataByAspect","getBuilderData","data","find","aspectData","ArtifactList","fromArray","get","BuilderAspect","clonedData","cloneDeep","artifactFiles","artifact","files","ArtifactFiles","fromObject","Artifact","Object","assign","fromArtifactObject","builderOptions","ids","c","network","isolateComponents","createEnvironment","graphCapsules","getAllComponents","builderServiceOptions","seedersOnly","originalSeeders","buildResult","runOnce","previousTasksResults","listTasks","compEnv","getEnv","buildTasks","getCurrentPipeTasks","tagTasks","snapTasks","envId","registerBuildTasks","tasks","register","registerDeployTasks","registerTagTasks","registerSnapTasks","getDownloadUrlForArtifact","componentId","path","provider","cli","loggerExt","graphql","generator","config","artifactFactory","ArtifactFactory","logger","createLogger","BuilderService","registerService","builder","registerRoute","BuilderRoute","builderSchema","registerComponentTemplate","buildTaskTemplate","commands","BuilderCmd","ArtifactsCmd","Slot","withType","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","ScopeAspect","IsolatorAspect","LoggerAspect","AspectLoaderAspect","GraphqlAspect","GeneratorAspect","ComponentAspect","addRuntime"],"sources":["builder.main.runtime.ts"],"sourcesContent":["import { cloneDeep } from 'lodash';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport { ArtifactFiles, ArtifactObject } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { AspectLoaderAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component, ComponentMap, IComponent, ComponentAspect, ComponentMain, ComponentID } from '@teambit/component';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { IsolateComponentsOptions, IsolatorAspect, IsolatorMain } from '@teambit/isolator';\nimport { getHarmonyVersion } from '@teambit/legacy/dist/bootstrap';\nimport findDuplications from '@teambit/legacy/dist/utils/array/find-duplications';\nimport { GeneratorAspect, GeneratorMain } from '@teambit/generator';\nimport { Artifact, ArtifactList, FsArtifact } from './artifact';\nimport { ArtifactFactory } from './artifact/artifact-factory'; // it gets undefined when importing it from './artifact'\nimport { BuilderAspect } from './builder.aspect';\nimport { builderSchema } from './builder.graphql';\nimport { BuilderService, BuilderServiceOptions } from './builder.service';\nimport { BuilderCmd } from './build.cmd';\nimport { BuildTask, BuildTaskHelper } from './build-task';\nimport { TaskResults } from './build-pipe';\nimport { TaskResultsList } from './task-results-list';\nimport { ArtifactStorageError } from './exceptions';\nimport { BuildPipelineResultList, AspectData, PipelineReport } from './build-pipeline-result-list';\nimport { Serializable } from './types';\nimport { ArtifactsCmd } from './artifact/artifacts.cmd';\nimport { buildTaskTemplate } from './templates/build-task';\nimport { BuilderRoute } from './builder.route';\n\nexport type TaskSlot = SlotRegistry<BuildTask[]>;\nexport type OnTagResults = { builderDataMap: ComponentMap<RawBuilderData>; pipeResults: TaskResultsList[] };\nexport type OnTagOpts = {\n disableTagAndSnapPipelines?: boolean;\n throwOnError?: boolean; // on the CI it helps to save the results on failure so this is set to false\n forceDeploy?: boolean; // whether run the deploy-pipeline although the build-pipeline has failed\n skipTests?: boolean;\n isSnap?: boolean;\n};\nexport const FILE_PATH_PARAM_DELIM = '~';\n\n/**\n * builder data format for the bit object store\n */\nexport type RawBuilderData = {\n pipeline: PipelineReport[];\n artifacts?: ArtifactObject[];\n aspectsData: AspectData[];\n bitVersion?: string;\n};\n/**\n * builder data mapped to an ArtifactList instance\n */\nexport type BuilderData = Omit<RawBuilderData, 'artifacts'> & {\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class BuilderMain {\n constructor(\n private envs: EnvsMain,\n private workspace: Workspace,\n private buildService: BuilderService,\n private tagService: BuilderService,\n private snapService: BuilderService,\n private scope: ScopeMain,\n private isolator: IsolatorMain,\n private aspectLoader: AspectLoaderMain,\n private componentAspect: ComponentMain,\n private buildTaskSlot: TaskSlot,\n private tagTaskSlot: TaskSlot,\n private snapTaskSlot: TaskSlot\n ) {}\n\n private async storeArtifacts(tasksResults: TaskResults[]) {\n const artifacts = tasksResults.flatMap((t) => (t.artifacts ? [t.artifacts] : []));\n const storeP = artifacts.map(async (artifactMap: ComponentMap<ArtifactList<FsArtifact>>) => {\n return Promise.all(\n artifactMap.toArray().map(async ([component, artifactList]) => {\n try {\n return await artifactList.store(component);\n } catch (err: any) {\n throw new ArtifactStorageError(err, component);\n }\n })\n );\n });\n await Promise.all(storeP);\n }\n\n private pipelineResultsToBuilderData(\n components: Component[],\n buildPipelineResults: TaskResults[]\n ): ComponentMap<RawBuilderData> {\n const buildPipelineResultList = new BuildPipelineResultList(buildPipelineResults, components);\n return ComponentMap.as<RawBuilderData>(components, (component) => {\n const aspectsData = buildPipelineResultList.getDataOfComponent(component.id);\n const pipelineReport = buildPipelineResultList.getPipelineReportOfComponent(component.id);\n const artifacts = buildPipelineResultList.getArtifactsDataOfComponent(component.id);\n return { pipeline: pipelineReport, artifacts, aspectsData, bitVersion: getHarmonyVersion(true) };\n });\n }\n\n async tagListener(\n components: Component[],\n options: OnTagOpts = {},\n isolateOptions: IsolateComponentsOptions = {}\n ): Promise<OnTagResults> {\n const pipeResults: TaskResultsList[] = [];\n const { throwOnError, forceDeploy, disableTagAndSnapPipelines, isSnap } = options;\n const envsExecutionResults = await this.build(\n components,\n { emptyRootDir: true, ...isolateOptions },\n { skipTests: options.skipTests }\n );\n if (throwOnError && !forceDeploy) envsExecutionResults.throwErrorsIfExist();\n const allTasksResults = [...envsExecutionResults.tasksResults];\n pipeResults.push(envsExecutionResults);\n if (forceDeploy || (!disableTagAndSnapPipelines && !envsExecutionResults.hasErrors())) {\n const deployEnvsExecutionResults = isSnap\n ? await this.runSnapTasks(components, isolateOptions, envsExecutionResults.tasksResults)\n : await this.runTagTasks(components, isolateOptions, envsExecutionResults.tasksResults);\n if (throwOnError && !forceDeploy) deployEnvsExecutionResults.throwErrorsIfExist();\n allTasksResults.push(...deployEnvsExecutionResults.tasksResults);\n pipeResults.push(deployEnvsExecutionResults);\n }\n await this.storeArtifacts(allTasksResults);\n const builderDataMap = this.pipelineResultsToBuilderData(components, allTasksResults);\n this.validateBuilderDataMap(builderDataMap);\n return { builderDataMap, pipeResults };\n }\n\n private validateBuilderDataMap(builderDataMap: ComponentMap<RawBuilderData>) {\n builderDataMap.forEach((buildData: RawBuilderData, component) => {\n const taskSerializedIds = buildData.pipeline.map((t) =>\n BuildTaskHelper.serializeId({ aspectId: t.taskId, name: t.taskName })\n );\n const duplications = findDuplications(taskSerializedIds);\n if (duplications.length) {\n throw new Error(\n `build-task-results validation has failed. the following task(s) of \"${component.id.toString()}\" are duplicated: ${duplications.join(\n ', '\n )}`\n );\n }\n });\n }\n\n // TODO: merge with getArtifactsVinylByExtensionAndName by getting aspect name and name as object with optional props\n async getArtifactsVinylByAspect(component: Component, aspectName: string): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspect(component, aspectName);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspectAndName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndTaskName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsbyAspectAndTaskName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n return vinyls;\n }\n\n getArtifactsByName(component: Component, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(undefined, name);\n return artifacts;\n }\n\n getArtifactsByAspect(component: Component, aspectName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName);\n return artifacts;\n }\n\n getArtifactsByAspectAndName(component: Component, aspectName: string, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName, name);\n return artifacts;\n }\n\n getArtifactsbyAspectAndTaskName(component: Component, aspectName: string, taskName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndTaskName(aspectName, taskName);\n return artifacts;\n }\n\n getDataByAspect(component: IComponent, aspectName: string): Serializable | undefined {\n const aspectsData = this.getBuilderData(component)?.aspectsData;\n const data = aspectsData?.find((aspectData) => aspectData.aspectId === aspectName);\n return data?.data;\n }\n\n getArtifacts(component: Component): ArtifactList<Artifact> {\n const artifacts = this.getBuilderData(component)?.artifacts || ArtifactList.fromArray([]);\n return artifacts;\n }\n\n getBuilderData(component: IComponent): BuilderData | undefined {\n const data = component.get(BuilderAspect.id)?.data;\n if (!data) return undefined;\n const clonedData = cloneDeep(data) as BuilderData;\n let artifactFiles: ArtifactFiles;\n clonedData.artifacts?.forEach((artifact) => {\n if (!(artifact.files instanceof ArtifactFiles)) {\n artifactFiles = ArtifactFiles.fromObject(artifact.files);\n } else {\n artifactFiles = artifact.files;\n }\n if (!(artifact instanceof Artifact)) {\n Object.assign(artifact, { files: artifactFiles });\n Object.assign(artifact, Artifact.fromArtifactObject(artifact));\n }\n });\n clonedData.artifacts = ArtifactList.fromArray(clonedData.artifacts || []);\n return clonedData;\n }\n\n /**\n * build given components for release.\n * for each one of the envs it runs a series of tasks.\n * in case of an error in a task, it stops the execution of that env and continue to the next\n * env. at the end, the results contain the data and errors per env.\n */\n async build(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n builderOptions?: BuilderServiceOptions\n ): Promise<TaskResultsList> {\n const ids = components.map((c) => c.id);\n const network = await this.isolator.isolateComponents(ids, isolateOptions, this.scope.legacyScope);\n const envs = await this.envs.createEnvironment(network.graphCapsules.getAllComponents());\n const builderServiceOptions = {\n seedersOnly: isolateOptions?.seedersOnly,\n originalSeeders: ids,\n ...(builderOptions || {}),\n };\n const buildResult = await envs.runOnce(this.buildService, builderServiceOptions);\n return buildResult;\n }\n\n async runTagTasks(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n previousTasksResults?: TaskResults[]\n ): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.tagService, {\n seedersOnly: isolateOptions?.seedersOnly,\n previousTasksResults,\n });\n\n return buildResult;\n }\n\n async runSnapTasks(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n previousTasksResults?: TaskResults[]\n ): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.snapService, {\n seedersOnly: isolateOptions?.seedersOnly,\n previousTasksResults,\n });\n\n return buildResult;\n }\n\n listTasks(component: Component) {\n const compEnv = this.envs.getEnv(component);\n const buildTasks = this.buildService.getCurrentPipeTasks(compEnv);\n const tagTasks = this.tagService.getCurrentPipeTasks(compEnv);\n const snapTasks = this.snapService.getCurrentPipeTasks(compEnv);\n return { id: component.id, envId: compEnv.id, buildTasks, tagTasks, snapTasks };\n }\n\n /**\n * register a build task to apply on all component build pipelines.\n * build happens on `bit build` and as part of `bit tag --persist`.\n */\n registerBuildTasks(tasks: BuildTask[]) {\n this.buildTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * @deprecated use registerTagTasks or registerSnapTasks\n */\n registerDeployTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit tag'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerTagTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit snap'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerSnapTasks(tasks: BuildTask[]) {\n this.snapTaskSlot.register(tasks);\n return this;\n }\n\n getDownloadUrlForArtifact(componentId: ComponentID, taskId: string, path?: string) {\n return `/api/${componentId}/~aspect/builder/${taskId}/${path ? `${FILE_PATH_PARAM_DELIM}${path}` : ''}`;\n }\n\n static slots = [Slot.withType<BuildTask>(), Slot.withType<BuildTask>(), Slot.withType<BuildTask>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n ScopeAspect,\n IsolatorAspect,\n LoggerAspect,\n AspectLoaderAspect,\n GraphqlAspect,\n GeneratorAspect,\n ComponentAspect,\n ];\n\n static async provider(\n [cli, envs, workspace, scope, isolator, loggerExt, aspectLoader, graphql, generator, component]: [\n CLIMain,\n EnvsMain,\n Workspace,\n ScopeMain,\n IsolatorMain,\n LoggerMain,\n AspectLoaderMain,\n GraphqlMain,\n GeneratorMain,\n ComponentMain\n ],\n config,\n [buildTaskSlot, tagTaskSlot, snapTaskSlot]: [TaskSlot, TaskSlot, TaskSlot]\n ) {\n const artifactFactory = new ArtifactFactory();\n const logger = loggerExt.createLogger(BuilderAspect.id);\n const buildService = new BuilderService(\n isolator,\n logger,\n buildTaskSlot,\n 'getBuildPipe',\n 'build',\n artifactFactory,\n scope\n );\n envs.registerService(buildService);\n const tagService = new BuilderService(isolator, logger, tagTaskSlot, 'getTagPipe', 'tag', artifactFactory, scope);\n const snapService = new BuilderService(\n isolator,\n logger,\n snapTaskSlot,\n 'getSnapPipe',\n 'snap',\n artifactFactory,\n scope\n );\n const builder = new BuilderMain(\n envs,\n workspace,\n buildService,\n tagService,\n snapService,\n scope,\n isolator,\n aspectLoader,\n component,\n buildTaskSlot,\n tagTaskSlot,\n snapTaskSlot\n );\n component.registerRoute([new BuilderRoute(builder, scope, logger)]);\n graphql.register(builderSchema(builder));\n generator.registerComponentTemplate([buildTaskTemplate]);\n const commands = [new BuilderCmd(builder, workspace, logger), new ArtifactsCmd(builder, scope)];\n cli.register(...commands);\n\n return builder;\n }\n}\n\nBuilderAspect.addRuntime(BuilderMain);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AAWO,MAAMA,qBAAqB,GAAG,GAA9B;AAEP;AACA;AACA;;;;AAcO,MAAMC,WAAN,CAAkB;EACvBC,WAAW,CACDC,IADC,EAEDC,SAFC,EAGDC,YAHC,EAIDC,UAJC,EAKDC,WALC,EAMDC,KANC,EAODC,QAPC,EAQDC,YARC,EASDC,eATC,EAUDC,aAVC,EAWDC,WAXC,EAYDC,YAZC,EAaT;IAAA,KAZQX,IAYR,GAZQA,IAYR;IAAA,KAXQC,SAWR,GAXQA,SAWR;IAAA,KAVQC,YAUR,GAVQA,YAUR;IAAA,KATQC,UASR,GATQA,UASR;IAAA,KARQC,WAQR,GARQA,WAQR;IAAA,KAPQC,KAOR,GAPQA,KAOR;IAAA,KANQC,QAMR,GANQA,QAMR;IAAA,KALQC,YAKR,GALQA,YAKR;IAAA,KAJQC,eAIR,GAJQA,eAIR;IAAA,KAHQC,aAGR,GAHQA,aAGR;IAAA,KAFQC,WAER,GAFQA,WAER;IAAA,KADQC,YACR,GADQA,YACR;EAAE;;EAEwB,MAAdC,cAAc,CAACC,YAAD,EAA8B;IACxD,MAAMC,SAAS,GAAGD,YAAY,CAACE,OAAb,CAAsBC,CAAD,IAAQA,CAAC,CAACF,SAAF,GAAc,CAACE,CAAC,CAACF,SAAH,CAAd,GAA8B,EAA3D,CAAlB;IACA,MAAMG,MAAM,GAAGH,SAAS,CAACI,GAAV,CAAc,MAAOC,WAAP,IAA+D;MAC1F,OAAOC,OAAO,CAACC,GAAR,CACLF,WAAW,CAACG,OAAZ,GAAsBJ,GAAtB,CAA0B,OAAO,CAACK,SAAD,EAAYC,YAAZ,CAAP,KAAqC;QAC7D,IAAI;UACF,OAAO,MAAMA,YAAY,CAACC,KAAb,CAAmBF,SAAnB,CAAb;QACD,CAFD,CAEE,OAAOG,GAAP,EAAiB;UACjB,MAAM,KAAIC,kCAAJ,EAAyBD,GAAzB,EAA8BH,SAA9B,CAAN;QACD;MACF,CAND,CADK,CAAP;IASD,CAVc,CAAf;IAWA,MAAMH,OAAO,CAACC,GAAR,CAAYJ,MAAZ,CAAN;EACD;;EAEOW,4BAA4B,CAClCC,UADkC,EAElCC,oBAFkC,EAGJ;IAC9B,MAAMC,uBAAuB,GAAG,KAAIC,kDAAJ,EAA4BF,oBAA5B,EAAkDD,UAAlD,CAAhC;IACA,OAAOI,yBAAA,CAAaC,EAAb,CAAgCL,UAAhC,EAA6CN,SAAD,IAAe;MAChE,MAAMY,WAAW,GAAGJ,uBAAuB,CAACK,kBAAxB,CAA2Cb,SAAS,CAACc,EAArD,CAApB;MACA,MAAMC,cAAc,GAAGP,uBAAuB,CAACQ,4BAAxB,CAAqDhB,SAAS,CAACc,EAA/D,CAAvB;MACA,MAAMvB,SAAS,GAAGiB,uBAAuB,CAACS,2BAAxB,CAAoDjB,SAAS,CAACc,EAA9D,CAAlB;MACA,OAAO;QAAEI,QAAQ,EAAEH,cAAZ;QAA4BxB,SAA5B;QAAuCqB,WAAvC;QAAoDO,UAAU,EAAE,IAAAC,8BAAA,EAAkB,IAAlB;MAAhE,CAAP;IACD,CALM,CAAP;EAMD;;EAEgB,MAAXC,WAAW,CACff,UADe,EAEfgB,OAAkB,GAAG,EAFN,EAGfC,cAAwC,GAAG,EAH5B,EAIQ;IACvB,MAAMC,WAA8B,GAAG,EAAvC;IACA,MAAM;MAAEC,YAAF;MAAgBC,WAAhB;MAA6BC,0BAA7B;MAAyDC;IAAzD,IAAoEN,OAA1E;IACA,MAAMO,oBAAoB,GAAG,MAAM,KAAKC,KAAL,CACjCxB,UADiC;MAE/ByB,YAAY,EAAE;IAFiB,GAERR,cAFQ,GAGjC;MAAES,SAAS,EAAEV,OAAO,CAACU;IAArB,CAHiC,CAAnC;IAKA,IAAIP,YAAY,IAAI,CAACC,WAArB,EAAkCG,oBAAoB,CAACI,kBAArB;IAClC,MAAMC,eAAe,GAAG,CAAC,GAAGL,oBAAoB,CAACvC,YAAzB,CAAxB;IACAkC,WAAW,CAACW,IAAZ,CAAiBN,oBAAjB;;IACA,IAAIH,WAAW,IAAK,CAACC,0BAAD,IAA+B,CAACE,oBAAoB,CAACO,SAArB,EAApD,EAAuF;MACrF,MAAMC,0BAA0B,GAAGT,MAAM,GACrC,MAAM,KAAKU,YAAL,CAAkBhC,UAAlB,EAA8BiB,cAA9B,EAA8CM,oBAAoB,CAACvC,YAAnE,CAD+B,GAErC,MAAM,KAAKiD,WAAL,CAAiBjC,UAAjB,EAA6BiB,cAA7B,EAA6CM,oBAAoB,CAACvC,YAAlE,CAFV;MAGA,IAAImC,YAAY,IAAI,CAACC,WAArB,EAAkCW,0BAA0B,CAACJ,kBAA3B;MAClCC,eAAe,CAACC,IAAhB,CAAqB,GAAGE,0BAA0B,CAAC/C,YAAnD;MACAkC,WAAW,CAACW,IAAZ,CAAiBE,0BAAjB;IACD;;IACD,MAAM,KAAKhD,cAAL,CAAoB6C,eAApB,CAAN;IACA,MAAMM,cAAc,GAAG,KAAKnC,4BAAL,CAAkCC,UAAlC,EAA8C4B,eAA9C,CAAvB;IACA,KAAKO,sBAAL,CAA4BD,cAA5B;IACA,OAAO;MAAEA,cAAF;MAAkBhB;IAAlB,CAAP;EACD;;EAEOiB,sBAAsB,CAACD,cAAD,EAA+C;IAC3EA,cAAc,CAACE,OAAf,CAAuB,CAACC,SAAD,EAA4B3C,SAA5B,KAA0C;MAC/D,MAAM4C,iBAAiB,GAAGD,SAAS,CAACzB,QAAV,CAAmBvB,GAAnB,CAAwBF,CAAD,IAC/CoD,4BAAA,CAAgBC,WAAhB,CAA4B;QAAEC,QAAQ,EAAEtD,CAAC,CAACuD,MAAd;QAAsBC,IAAI,EAAExD,CAAC,CAACyD;MAA9B,CAA5B,CADwB,CAA1B;MAGA,MAAMC,YAAY,GAAG,IAAAC,2BAAA,EAAiBR,iBAAjB,CAArB;;MACA,IAAIO,YAAY,CAACE,MAAjB,EAAyB;QACvB,MAAM,IAAIC,KAAJ,CACH,uEAAsEtD,SAAS,CAACc,EAAV,CAAayC,QAAb,EAAwB,qBAAoBJ,YAAY,CAACK,IAAb,CACjH,IADiH,CAEjH,EAHE,CAAN;MAKD;IACF,CAZD;EAaD,CAxFsB,CA0FvB;;;EAC+B,MAAzBC,yBAAyB,CAACzD,SAAD,EAAuB0D,UAAvB,EAAqE;IAClG,MAAMnE,SAAS,GAAG,KAAKoE,oBAAL,CAA0B3D,SAA1B,EAAqC0D,UAArC,CAAlB;IACA,MAAME,MAAM,GAAG,MAAMrE,SAAS,CAACsE,2BAAV,CAAsC7D,SAAS,CAACc,EAAV,CAAagD,OAAnD,EAA4D,KAAKhF,KAAL,CAAWiF,WAAvE,CAArB;IACA,OAAOH,MAAP;EACD;;EAEqC,MAAhCI,gCAAgC,CACpChE,SADoC,EAEpC0D,UAFoC,EAGpCT,IAHoC,EAIV;IAC1B,MAAM1D,SAAS,GAAG,KAAK0E,2BAAL,CAAiCjE,SAAjC,EAA4C0D,UAA5C,EAAwDT,IAAxD,CAAlB;IACA,MAAMW,MAAM,GAAG,MAAMrE,SAAS,CAACsE,2BAAV,CAAsC7D,SAAS,CAACc,EAAV,CAAagD,OAAnD,EAA4D,KAAKhF,KAAL,CAAWiF,WAAvE,CAArB;IACA,OAAOH,MAAP;EACD;;EAEyC,MAApCM,oCAAoC,CACxClE,SADwC,EAExC0D,UAFwC,EAGxCT,IAHwC,EAId;IAC1B,MAAM1D,SAAS,GAAG,KAAK4E,+BAAL,CAAqCnE,SAArC,EAAgD0D,UAAhD,EAA4DT,IAA5D,CAAlB;IACA,MAAMW,MAAM,GAAG,MAAMrE,SAAS,CAACsE,2BAAV,CAAsC7D,SAAS,CAACc,EAAV,CAAagD,OAAnD,EAA4D,KAAKhF,KAAL,CAAWiF,WAAvE,CAArB;IACA,OAAOH,MAAP;EACD;;EAEDQ,kBAAkB,CAACpE,SAAD,EAAuBiD,IAAvB,EAA6D;IAC7E,MAAM1D,SAAS,GAAG,KAAK8E,YAAL,CAAkBrE,SAAlB,EAA6BsE,mBAA7B,CAAiDC,SAAjD,EAA4DtB,IAA5D,CAAlB;IACA,OAAO1D,SAAP;EACD;;EAEDoE,oBAAoB,CAAC3D,SAAD,EAAuB0D,UAAvB,EAAmE;IACrF,MAAMnE,SAAS,GAAG,KAAK8E,YAAL,CAAkBrE,SAAlB,EAA6BsE,mBAA7B,CAAiDZ,UAAjD,CAAlB;IACA,OAAOnE,SAAP;EACD;;EAED0E,2BAA2B,CAACjE,SAAD,EAAuB0D,UAAvB,EAA2CT,IAA3C,EAAiF;IAC1G,MAAM1D,SAAS,GAAG,KAAK8E,YAAL,CAAkBrE,SAAlB,EAA6BsE,mBAA7B,CAAiDZ,UAAjD,EAA6DT,IAA7D,CAAlB;IACA,OAAO1D,SAAP;EACD;;EAED4E,+BAA+B,CAACnE,SAAD,EAAuB0D,UAAvB,EAA2CR,QAA3C,EAAqF;IAClH,MAAM3D,SAAS,GAAG,KAAK8E,YAAL,CAAkBrE,SAAlB,EAA6BwE,uBAA7B,CAAqDd,UAArD,EAAiER,QAAjE,CAAlB;IACA,OAAO3D,SAAP;EACD;;EAEDkF,eAAe,CAACzE,SAAD,EAAwB0D,UAAxB,EAAsE;IAAA;;IACnF,MAAM9C,WAAW,2BAAG,KAAK8D,cAAL,CAAoB1E,SAApB,CAAH,yDAAG,qBAAgCY,WAApD;IACA,MAAM+D,IAAI,GAAG/D,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAEgE,IAAb,CAAmBC,UAAD,IAAgBA,UAAU,CAAC9B,QAAX,KAAwBW,UAA1D,CAAb;IACA,OAAOiB,IAAP,aAAOA,IAAP,uBAAOA,IAAI,CAAEA,IAAb;EACD;;EAEDN,YAAY,CAACrE,SAAD,EAA+C;IAAA;;IACzD,MAAMT,SAAS,GAAG,+BAAKmF,cAAL,CAAoB1E,SAApB,iFAAgCT,SAAhC,KAA6CuF,wBAAA,CAAaC,SAAb,CAAuB,EAAvB,CAA/D;;IACA,OAAOxF,SAAP;EACD;;EAEDmF,cAAc,CAAC1E,SAAD,EAAiD;IAAA;;IAC7D,MAAM2E,IAAI,qBAAG3E,SAAS,CAACgF,GAAV,CAAcC,wBAAA,CAAcnE,EAA5B,CAAH,mDAAG,eAAiC6D,IAA9C;IACA,IAAI,CAACA,IAAL,EAAW,OAAOJ,SAAP;IACX,MAAMW,UAAU,GAAG,IAAAC,mBAAA,EAAUR,IAAV,CAAnB;IACA,IAAIS,aAAJ;IACA,yBAAAF,UAAU,CAAC3F,SAAX,gFAAsBmD,OAAtB,CAA+B2C,QAAD,IAAc;MAC1C,IAAI,EAAEA,QAAQ,CAACC,KAAT,YAA0BC,8BAA5B,CAAJ,EAAgD;QAC9CH,aAAa,GAAGG,8BAAA,CAAcC,UAAd,CAAyBH,QAAQ,CAACC,KAAlC,CAAhB;MACD,CAFD,MAEO;QACLF,aAAa,GAAGC,QAAQ,CAACC,KAAzB;MACD;;MACD,IAAI,EAAED,QAAQ,YAAYI,oBAAtB,CAAJ,EAAqC;QACnCC,MAAM,CAACC,MAAP,CAAcN,QAAd,EAAwB;UAAEC,KAAK,EAAEF;QAAT,CAAxB;QACAM,MAAM,CAACC,MAAP,CAAcN,QAAd,EAAwBI,oBAAA,CAASG,kBAAT,CAA4BP,QAA5B,CAAxB;MACD;IACF,CAVD;IAWAH,UAAU,CAAC3F,SAAX,GAAuBuF,wBAAA,CAAaC,SAAb,CAAuBG,UAAU,CAAC3F,SAAX,IAAwB,EAA/C,CAAvB;IACA,OAAO2F,UAAP;EACD;EAED;AACF;AACA;AACA;AACA;AACA;;;EACa,MAALpD,KAAK,CACTxB,UADS,EAETiB,cAFS,EAGTsE,cAHS,EAIiB;IAC1B,MAAMC,GAAG,GAAGxF,UAAU,CAACX,GAAX,CAAgBoG,CAAD,IAAOA,CAAC,CAACjF,EAAxB,CAAZ;IACA,MAAMkF,OAAO,GAAG,MAAM,KAAKjH,QAAL,CAAckH,iBAAd,CAAgCH,GAAhC,EAAqCvE,cAArC,EAAqD,KAAKzC,KAAL,CAAWiF,WAAhE,CAAtB;IACA,MAAMtF,IAAI,GAAG,MAAM,KAAKA,IAAL,CAAUyH,iBAAV,CAA4BF,OAAO,CAACG,aAAR,CAAsBC,gBAAtB,EAA5B,CAAnB;;IACA,MAAMC,qBAAqB;MACzBC,WAAW,EAAE/E,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAE+E,WADJ;MAEzBC,eAAe,EAAET;IAFQ,GAGrBD,cAAc,IAAI,EAHG,CAA3B;;IAKA,MAAMW,WAAW,GAAG,MAAM/H,IAAI,CAACgI,OAAL,CAAa,KAAK9H,YAAlB,EAAgC0H,qBAAhC,CAA1B;IACA,OAAOG,WAAP;EACD;;EAEgB,MAAXjE,WAAW,CACfjC,UADe,EAEfiB,cAFe,EAGfmF,oBAHe,EAIW;IAC1B,MAAMjI,IAAI,GAAG,MAAM,KAAKA,IAAL,CAAUyH,iBAAV,CAA4B5F,UAA5B,CAAnB;IACA,MAAMkG,WAAW,GAAG,MAAM/H,IAAI,CAACgI,OAAL,CAAa,KAAK7H,UAAlB,EAA8B;MACtD0H,WAAW,EAAE/E,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAE+E,WADyB;MAEtDI;IAFsD,CAA9B,CAA1B;IAKA,OAAOF,WAAP;EACD;;EAEiB,MAAZlE,YAAY,CAChBhC,UADgB,EAEhBiB,cAFgB,EAGhBmF,oBAHgB,EAIU;IAC1B,MAAMjI,IAAI,GAAG,MAAM,KAAKA,IAAL,CAAUyH,iBAAV,CAA4B5F,UAA5B,CAAnB;IACA,MAAMkG,WAAW,GAAG,MAAM/H,IAAI,CAACgI,OAAL,CAAa,KAAK5H,WAAlB,EAA+B;MACvDyH,WAAW,EAAE/E,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAE+E,WAD0B;MAEvDI;IAFuD,CAA/B,CAA1B;IAKA,OAAOF,WAAP;EACD;;EAEDG,SAAS,CAAC3G,SAAD,EAAuB;IAC9B,MAAM4G,OAAO,GAAG,KAAKnI,IAAL,CAAUoI,MAAV,CAAiB7G,SAAjB,CAAhB;IACA,MAAM8G,UAAU,GAAG,KAAKnI,YAAL,CAAkBoI,mBAAlB,CAAsCH,OAAtC,CAAnB;IACA,MAAMI,QAAQ,GAAG,KAAKpI,UAAL,CAAgBmI,mBAAhB,CAAoCH,OAApC,CAAjB;IACA,MAAMK,SAAS,GAAG,KAAKpI,WAAL,CAAiBkI,mBAAjB,CAAqCH,OAArC,CAAlB;IACA,OAAO;MAAE9F,EAAE,EAAEd,SAAS,CAACc,EAAhB;MAAoBoG,KAAK,EAAEN,OAAO,CAAC9F,EAAnC;MAAuCgG,UAAvC;MAAmDE,QAAnD;MAA6DC;IAA7D,CAAP;EACD;EAED;AACF;AACA;AACA;;;EACEE,kBAAkB,CAACC,KAAD,EAAqB;IACrC,KAAKlI,aAAL,CAAmBmI,QAAnB,CAA4BD,KAA5B;IACA,OAAO,IAAP;EACD;EAED;AACF;AACA;;;EACEE,mBAAmB,CAACF,KAAD,EAAqB;IACtC,KAAKjI,WAAL,CAAiBkI,QAAjB,CAA0BD,KAA1B;IACA,OAAO,IAAP;EACD;EAED;AACF;AACA;AACA;;;EACEG,gBAAgB,CAACH,KAAD,EAAqB;IACnC,KAAKjI,WAAL,CAAiBkI,QAAjB,CAA0BD,KAA1B;IACA,OAAO,IAAP;EACD;EAED;AACF;AACA;AACA;;;EACEI,iBAAiB,CAACJ,KAAD,EAAqB;IACpC,KAAKhI,YAAL,CAAkBiI,QAAlB,CAA2BD,KAA3B;IACA,OAAO,IAAP;EACD;;EAEDK,yBAAyB,CAACC,WAAD,EAA2B1E,MAA3B,EAA2C2E,IAA3C,EAA0D;IACjF,OAAQ,QAAOD,WAAY,oBAAmB1E,MAAO,IAAG2E,IAAI,GAAI,GAAErJ,qBAAsB,GAAEqJ,IAAK,EAAnC,GAAuC,EAAG,EAAtG;EACD;;EAkBoB,aAARC,QAAQ,CACnB,CAACC,GAAD,EAAMpJ,IAAN,EAAYC,SAAZ,EAAuBI,KAAvB,EAA8BC,QAA9B,EAAwC+I,SAAxC,EAAmD9I,YAAnD,EAAiE+I,OAAjE,EAA0EC,SAA1E,EAAqFhI,SAArF,CADmB,EAanBiI,MAbmB,EAcnB,CAAC/I,aAAD,EAAgBC,WAAhB,EAA6BC,YAA7B,CAdmB,EAenB;IACA,MAAM8I,eAAe,GAAG,KAAIC,kCAAJ,GAAxB;IACA,MAAMC,MAAM,GAAGN,SAAS,CAACO,YAAV,CAAuBpD,wBAAA,CAAcnE,EAArC,CAAf;IACA,MAAMnC,YAAY,GAAG,KAAI2J,0BAAJ,EACnBvJ,QADmB,EAEnBqJ,MAFmB,EAGnBlJ,aAHmB,EAInB,cAJmB,EAKnB,OALmB,EAMnBgJ,eANmB,EAOnBpJ,KAPmB,CAArB;IASAL,IAAI,CAAC8J,eAAL,CAAqB5J,YAArB;IACA,MAAMC,UAAU,GAAG,KAAI0J,0BAAJ,EAAmBvJ,QAAnB,EAA6BqJ,MAA7B,EAAqCjJ,WAArC,EAAkD,YAAlD,EAAgE,KAAhE,EAAuE+I,eAAvE,EAAwFpJ,KAAxF,CAAnB;IACA,MAAMD,WAAW,GAAG,KAAIyJ,0BAAJ,EAClBvJ,QADkB,EAElBqJ,MAFkB,EAGlBhJ,YAHkB,EAIlB,aAJkB,EAKlB,MALkB,EAMlB8I,eANkB,EAOlBpJ,KAPkB,CAApB;IASA,MAAM0J,OAAO,GAAG,IAAIjK,WAAJ,CACdE,IADc,EAEdC,SAFc,EAGdC,YAHc,EAIdC,UAJc,EAKdC,WALc,EAMdC,KANc,EAOdC,QAPc,EAQdC,YARc,EASdgB,SATc,EAUdd,aAVc,EAWdC,WAXc,EAYdC,YAZc,CAAhB;IAcAY,SAAS,CAACyI,aAAV,CAAwB,CAAC,KAAIC,wBAAJ,EAAiBF,OAAjB,EAA0B1J,KAA1B,EAAiCsJ,MAAjC,CAAD,CAAxB;IACAL,OAAO,CAACV,QAAR,CAAiB,IAAAsB,yBAAA,EAAcH,OAAd,CAAjB;IACAR,SAAS,CAACY,yBAAV,CAAoC,CAACC,+BAAD,CAApC;IACA,MAAMC,QAAQ,GAAG,CAAC,KAAIC,mBAAJ,EAAeP,OAAf,EAAwB9J,SAAxB,EAAmC0J,MAAnC,CAAD,EAA6C,KAAIY,yBAAJ,EAAiBR,OAAjB,EAA0B1J,KAA1B,CAA7C,CAAjB;IACA+I,GAAG,CAACR,QAAJ,CAAa,GAAGyB,QAAhB;IAEA,OAAON,OAAP;EACD;;AArVsB;;;gCAAZjK,W,WA0QI,CAAC0K,eAAA,CAAKC,QAAL,EAAD,EAA6BD,eAAA,CAAKC,QAAL,EAA7B,EAAyDD,eAAA,CAAKC,QAAL,EAAzD,C;gCA1QJ3K,W,aA4QM4K,kB;gCA5QN5K,W,kBA6QW,CACpB6K,gBADoB,EAEpBC,kBAFoB,EAGpBC,4BAHoB,EAIpBC,oBAJoB,EAKpBC,0BALoB,EAMpBC,sBANoB,EAOpBC,kCAPoB,EAQpBC,wBARoB,EASpBC,4BAToB,EAUpBC,4BAVoB,C;;AA2ExB5E,wBAAA,CAAc6E,UAAd,CAAyBvL,WAAzB"}
1
+ {"version":3,"names":["FILE_PATH_PARAM_DELIM","BuilderMain","constructor","envs","workspace","buildService","tagService","snapService","scope","isolator","aspectLoader","componentAspect","buildTaskSlot","tagTaskSlot","snapTaskSlot","storeArtifacts","tasksResults","artifacts","flatMap","t","storeP","map","artifactMap","Promise","all","toArray","component","artifactList","store","err","ArtifactStorageError","pipelineResultsToBuilderData","components","buildPipelineResults","buildPipelineResultList","BuildPipelineResultList","ComponentMap","as","aspectsData","getDataOfComponent","id","pipelineReport","getPipelineReportOfComponent","getArtifactsDataOfComponent","pipeline","bitVersion","getHarmonyVersion","tagListener","options","isolateOptions","pipeResults","throwOnError","forceDeploy","disableTagAndSnapPipelines","isSnap","envsExecutionResults","build","emptyRootDir","skipTests","throwErrorsIfExist","allTasksResults","push","hasErrors","deployEnvsExecutionResults","runSnapTasks","runTagTasks","builderDataMap","validateBuilderDataMap","forEach","buildData","taskSerializedIds","BuildTaskHelper","serializeId","aspectId","taskId","name","taskName","duplications","findDuplications","length","Error","toString","join","getArtifactsVinylByAspect","aspectName","getArtifactsByAspect","vinyls","getVinylsAndImportIfMissing","_legacy","legacyScope","getArtifactsVinylByAspectAndName","getArtifactsByAspectAndName","getArtifactsVinylByAspectAndTaskName","getArtifactsbyAspectAndTaskName","getArtifactsByName","getArtifacts","byAspectNameAndName","undefined","byAspectNameAndTaskName","getDataByAspect","getBuilderData","data","find","aspectData","ArtifactList","fromArray","get","BuilderAspect","clonedData","cloneDeep","artifactFiles","artifact","files","ArtifactFiles","fromObject","Artifact","Object","assign","fromArtifactObject","builderOptions","ids","c","network","isolateComponents","createEnvironment","graphCapsules","getAllComponents","builderServiceOptions","seedersOnly","originalSeeders","buildResult","runOnce","previousTasksResults","listTasks","compEnv","getEnv","buildTasks","getCurrentPipeTasks","tagTasks","snapTasks","envId","registerBuildTasks","tasks","register","registerDeployTasks","registerTagTasks","registerSnapTasks","getDownloadUrlForArtifact","componentId","path","provider","cli","loggerExt","graphql","generator","config","artifactFactory","ArtifactFactory","logger","createLogger","BuilderService","registerService","builder","registerRoute","BuilderRoute","builderSchema","registerComponentTemplate","buildTaskTemplate","commands","BuilderCmd","ArtifactsCmd","Slot","withType","MainRuntime","CLIAspect","EnvsAspect","WorkspaceAspect","ScopeAspect","IsolatorAspect","LoggerAspect","AspectLoaderAspect","GraphqlAspect","GeneratorAspect","ComponentAspect","addRuntime"],"sources":["builder.main.runtime.ts"],"sourcesContent":["import { cloneDeep } from 'lodash';\nimport { ArtifactVinyl } from '@teambit/legacy/dist/consumer/component/sources/artifact';\nimport { ArtifactFiles, ArtifactObject } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { AspectLoaderAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component, ComponentMap, IComponent, ComponentAspect, ComponentMain, ComponentID } from '@teambit/component';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { IsolateComponentsOptions, IsolatorAspect, IsolatorMain } from '@teambit/isolator';\nimport { getHarmonyVersion } from '@teambit/legacy/dist/bootstrap';\nimport findDuplications from '@teambit/legacy/dist/utils/array/find-duplications';\nimport { GeneratorAspect, GeneratorMain } from '@teambit/generator';\nimport { Artifact, ArtifactList, FsArtifact } from './artifact';\nimport { ArtifactFactory } from './artifact/artifact-factory'; // it gets undefined when importing it from './artifact'\nimport { BuilderAspect } from './builder.aspect';\nimport { builderSchema } from './builder.graphql';\nimport { BuilderService, BuilderServiceOptions } from './builder.service';\nimport { BuilderCmd } from './build.cmd';\nimport { BuildTask, BuildTaskHelper } from './build-task';\nimport { TaskResults } from './build-pipe';\nimport { TaskResultsList } from './task-results-list';\nimport { ArtifactStorageError } from './exceptions';\nimport { BuildPipelineResultList, AspectData, PipelineReport } from './build-pipeline-result-list';\nimport { Serializable } from './types';\nimport { ArtifactsCmd } from './artifact/artifacts.cmd';\nimport { buildTaskTemplate } from './templates/build-task';\nimport { BuilderRoute } from './builder.route';\n\nexport type TaskSlot = SlotRegistry<BuildTask[]>;\nexport type OnTagResults = { builderDataMap: ComponentMap<RawBuilderData>; pipeResults: TaskResultsList[] };\nexport type OnTagOpts = {\n disableTagAndSnapPipelines?: boolean;\n throwOnError?: boolean; // on the CI it helps to save the results on failure so this is set to false\n forceDeploy?: boolean; // whether run the deploy-pipeline although the build-pipeline has failed\n skipTests?: boolean;\n isSnap?: boolean;\n};\nexport const FILE_PATH_PARAM_DELIM = '~';\n\n/**\n * builder data format for the bit object store\n */\nexport type RawBuilderData = {\n pipeline: PipelineReport[];\n artifacts?: ArtifactObject[];\n aspectsData: AspectData[];\n bitVersion?: string;\n};\n/**\n * builder data mapped to an ArtifactList instance\n */\nexport type BuilderData = Omit<RawBuilderData, 'artifacts'> & {\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class BuilderMain {\n constructor(\n private envs: EnvsMain,\n private workspace: Workspace,\n private buildService: BuilderService,\n private tagService: BuilderService,\n private snapService: BuilderService,\n private scope: ScopeMain,\n private isolator: IsolatorMain,\n private aspectLoader: AspectLoaderMain,\n private componentAspect: ComponentMain,\n private buildTaskSlot: TaskSlot,\n private tagTaskSlot: TaskSlot,\n private snapTaskSlot: TaskSlot\n ) {}\n\n private async storeArtifacts(tasksResults: TaskResults[]) {\n const artifacts = tasksResults.flatMap((t) => (t.artifacts ? [t.artifacts] : []));\n const storeP = artifacts.map(async (artifactMap: ComponentMap<ArtifactList<FsArtifact>>) => {\n return Promise.all(\n artifactMap.toArray().map(async ([component, artifactList]) => {\n try {\n return await artifactList.store(component);\n } catch (err: any) {\n throw new ArtifactStorageError(err, component);\n }\n })\n );\n });\n await Promise.all(storeP);\n }\n\n private pipelineResultsToBuilderData(\n components: Component[],\n buildPipelineResults: TaskResults[]\n ): ComponentMap<RawBuilderData> {\n const buildPipelineResultList = new BuildPipelineResultList(buildPipelineResults, components);\n return ComponentMap.as<RawBuilderData>(components, (component) => {\n const aspectsData = buildPipelineResultList.getDataOfComponent(component.id);\n const pipelineReport = buildPipelineResultList.getPipelineReportOfComponent(component.id);\n const artifacts = buildPipelineResultList.getArtifactsDataOfComponent(component.id);\n return { pipeline: pipelineReport, artifacts, aspectsData, bitVersion: getHarmonyVersion(true) };\n });\n }\n\n async tagListener(\n components: Component[],\n options: OnTagOpts = {},\n isolateOptions: IsolateComponentsOptions = {}\n ): Promise<OnTagResults> {\n const pipeResults: TaskResultsList[] = [];\n const { throwOnError, forceDeploy, disableTagAndSnapPipelines, isSnap } = options;\n const envsExecutionResults = await this.build(\n components,\n { emptyRootDir: true, ...isolateOptions },\n { skipTests: options.skipTests }\n );\n if (throwOnError && !forceDeploy) envsExecutionResults.throwErrorsIfExist();\n const allTasksResults = [...envsExecutionResults.tasksResults];\n pipeResults.push(envsExecutionResults);\n if (forceDeploy || (!disableTagAndSnapPipelines && !envsExecutionResults.hasErrors())) {\n const deployEnvsExecutionResults = isSnap\n ? await this.runSnapTasks(components, isolateOptions, envsExecutionResults.tasksResults)\n : await this.runTagTasks(components, isolateOptions, envsExecutionResults.tasksResults);\n if (throwOnError && !forceDeploy) deployEnvsExecutionResults.throwErrorsIfExist();\n allTasksResults.push(...deployEnvsExecutionResults.tasksResults);\n pipeResults.push(deployEnvsExecutionResults);\n }\n await this.storeArtifacts(allTasksResults);\n const builderDataMap = this.pipelineResultsToBuilderData(components, allTasksResults);\n this.validateBuilderDataMap(builderDataMap);\n return { builderDataMap, pipeResults };\n }\n\n private validateBuilderDataMap(builderDataMap: ComponentMap<RawBuilderData>) {\n builderDataMap.forEach((buildData: RawBuilderData, component) => {\n const taskSerializedIds = buildData.pipeline.map((t) =>\n BuildTaskHelper.serializeId({ aspectId: t.taskId, name: t.taskName })\n );\n const duplications = findDuplications(taskSerializedIds);\n if (duplications.length) {\n throw new Error(\n `build-task-results validation has failed. the following task(s) of \"${component.id.toString()}\" are duplicated: ${duplications.join(\n ', '\n )}`\n );\n }\n });\n }\n\n // TODO: merge with getArtifactsVinylByExtensionAndName by getting aspect name and name as object with optional props\n async getArtifactsVinylByAspect(component: Component, aspectName: string): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspect(component, aspectName);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsByAspectAndName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n return vinyls;\n }\n\n async getArtifactsVinylByAspectAndTaskName(\n component: Component,\n aspectName: string,\n name: string\n ): Promise<ArtifactVinyl[]> {\n const artifacts = this.getArtifactsbyAspectAndTaskName(component, aspectName, name);\n const vinyls = await artifacts.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n return vinyls;\n }\n\n getArtifactsByName(component: Component, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(undefined, name);\n return artifacts;\n }\n\n getArtifactsByAspect(component: Component, aspectName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName);\n return artifacts;\n }\n\n getArtifactsByAspectAndName(component: Component, aspectName: string, name: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndName(aspectName, name);\n return artifacts;\n }\n\n getArtifactsbyAspectAndTaskName(component: Component, aspectName: string, taskName: string): ArtifactList<Artifact> {\n const artifacts = this.getArtifacts(component).byAspectNameAndTaskName(aspectName, taskName);\n return artifacts;\n }\n\n getDataByAspect(component: IComponent, aspectName: string): Serializable | undefined {\n const aspectsData = this.getBuilderData(component)?.aspectsData;\n const data = aspectsData?.find((aspectData) => aspectData.aspectId === aspectName);\n return data?.data;\n }\n\n getArtifacts(component: Component): ArtifactList<Artifact> {\n const artifacts = this.getBuilderData(component)?.artifacts || ArtifactList.fromArray([]);\n return artifacts;\n }\n\n getBuilderData(component: IComponent): BuilderData | undefined {\n const data = component.get(BuilderAspect.id)?.data;\n if (!data) return undefined;\n const clonedData = cloneDeep(data) as BuilderData;\n let artifactFiles: ArtifactFiles;\n clonedData.artifacts?.forEach((artifact) => {\n if (!(artifact.files instanceof ArtifactFiles)) {\n artifactFiles = ArtifactFiles.fromObject(artifact.files);\n } else {\n artifactFiles = artifact.files;\n }\n if (!(artifact instanceof Artifact)) {\n Object.assign(artifact, { files: artifactFiles });\n Object.assign(artifact, Artifact.fromArtifactObject(artifact));\n }\n });\n clonedData.artifacts = ArtifactList.fromArray(clonedData.artifacts || []);\n return clonedData;\n }\n\n /**\n * build given components for release.\n * for each one of the envs it runs a series of tasks.\n * in case of an error in a task, it stops the execution of that env and continue to the next\n * env. at the end, the results contain the data and errors per env.\n */\n async build(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n builderOptions?: BuilderServiceOptions\n ): Promise<TaskResultsList> {\n const ids = components.map((c) => c.id);\n const network = await this.isolator.isolateComponents(ids, isolateOptions, this.scope.legacyScope);\n const envs = await this.envs.createEnvironment(network.graphCapsules.getAllComponents());\n const builderServiceOptions = {\n seedersOnly: isolateOptions?.seedersOnly,\n originalSeeders: ids,\n ...(builderOptions || {}),\n };\n const buildResult = await envs.runOnce(this.buildService, builderServiceOptions);\n return buildResult;\n }\n\n async runTagTasks(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n previousTasksResults?: TaskResults[]\n ): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.tagService, {\n seedersOnly: isolateOptions?.seedersOnly,\n previousTasksResults,\n });\n\n return buildResult;\n }\n\n async runSnapTasks(\n components: Component[],\n isolateOptions?: IsolateComponentsOptions,\n previousTasksResults?: TaskResults[]\n ): Promise<TaskResultsList> {\n const envs = await this.envs.createEnvironment(components);\n const buildResult = await envs.runOnce(this.snapService, {\n seedersOnly: isolateOptions?.seedersOnly,\n previousTasksResults,\n });\n\n return buildResult;\n }\n\n listTasks(component: Component) {\n const compEnv = this.envs.getEnv(component);\n const buildTasks = this.buildService.getCurrentPipeTasks(compEnv);\n const tagTasks = this.tagService.getCurrentPipeTasks(compEnv);\n const snapTasks = this.snapService.getCurrentPipeTasks(compEnv);\n return { id: component.id, envId: compEnv.id, buildTasks, tagTasks, snapTasks };\n }\n\n /**\n * register a build task to apply on all component build pipelines.\n * build happens on `bit build` and as part of `bit tag --persist`.\n */\n registerBuildTasks(tasks: BuildTask[]) {\n this.buildTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * @deprecated use registerTagTasks or registerSnapTasks\n */\n registerDeployTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit tag'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerTagTasks(tasks: BuildTask[]) {\n this.tagTaskSlot.register(tasks);\n return this;\n }\n\n /**\n * tag tasks that don't get executed on `bit build`, only on `bit snap'.\n * this pipeline is running once the build-pipeline has completed.\n */\n registerSnapTasks(tasks: BuildTask[]) {\n this.snapTaskSlot.register(tasks);\n return this;\n }\n\n getDownloadUrlForArtifact(componentId: ComponentID, taskId: string, path?: string) {\n return `/api/${componentId}/~aspect/builder/${taskId}/${path ? `${FILE_PATH_PARAM_DELIM}${path}` : ''}`;\n }\n\n static slots = [Slot.withType<BuildTask>(), Slot.withType<BuildTask>(), Slot.withType<BuildTask>()];\n\n static runtime = MainRuntime;\n static dependencies = [\n CLIAspect,\n EnvsAspect,\n WorkspaceAspect,\n ScopeAspect,\n IsolatorAspect,\n LoggerAspect,\n AspectLoaderAspect,\n GraphqlAspect,\n GeneratorAspect,\n ComponentAspect,\n ];\n\n static async provider(\n [cli, envs, workspace, scope, isolator, loggerExt, aspectLoader, graphql, generator, component]: [\n CLIMain,\n EnvsMain,\n Workspace,\n ScopeMain,\n IsolatorMain,\n LoggerMain,\n AspectLoaderMain,\n GraphqlMain,\n GeneratorMain,\n ComponentMain\n ],\n config,\n [buildTaskSlot, tagTaskSlot, snapTaskSlot]: [TaskSlot, TaskSlot, TaskSlot]\n ) {\n const artifactFactory = new ArtifactFactory();\n const logger = loggerExt.createLogger(BuilderAspect.id);\n const buildService = new BuilderService(\n isolator,\n logger,\n buildTaskSlot,\n 'getBuildPipe',\n 'build',\n artifactFactory,\n scope\n );\n envs.registerService(buildService);\n const tagService = new BuilderService(isolator, logger, tagTaskSlot, 'getTagPipe', 'tag', artifactFactory, scope);\n const snapService = new BuilderService(\n isolator,\n logger,\n snapTaskSlot,\n 'getSnapPipe',\n 'snap',\n artifactFactory,\n scope\n );\n const builder = new BuilderMain(\n envs,\n workspace,\n buildService,\n tagService,\n snapService,\n scope,\n isolator,\n aspectLoader,\n component,\n buildTaskSlot,\n tagTaskSlot,\n snapTaskSlot\n );\n component.registerRoute([new BuilderRoute(builder, scope, logger)]);\n graphql.register(builderSchema(builder));\n generator.registerComponentTemplate([buildTaskTemplate]);\n const commands = [new BuilderCmd(builder, workspace, logger), new ArtifactsCmd(builder, scope)];\n cli.register(...commands);\n\n return builder;\n }\n}\n\nBuilderAspect.addRuntime(BuilderMain);\n"],"mappings":"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"}
@@ -1,55 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.iterator.js");
6
-
7
5
  require("core-js/modules/es.promise.js");
8
-
9
6
  require("core-js/modules/es.regexp.exec.js");
10
-
11
7
  require("core-js/modules/es.string.replace.js");
12
-
13
8
  Object.defineProperty(exports, "__esModule", {
14
9
  value: true
15
10
  });
16
11
  exports.routePath = exports.defaultExtension = exports.BuilderRoute = void 0;
17
-
18
12
  function _defineProperty2() {
19
13
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
-
21
14
  _defineProperty2 = function () {
22
15
  return data;
23
16
  };
24
-
25
17
  return data;
26
18
  }
27
-
28
19
  function _archiver() {
29
20
  const data = _interopRequireDefault(require("archiver"));
30
-
31
21
  _archiver = function () {
32
22
  return data;
33
23
  };
34
-
35
24
  return data;
36
25
  }
37
-
38
26
  function _mime() {
39
27
  const data = _interopRequireDefault(require("mime"));
40
-
41
28
  _mime = function () {
42
29
  return data;
43
30
  };
44
-
45
31
  return data;
46
32
  }
47
-
48
33
  const routePath = `builder`;
49
34
  exports.routePath = routePath;
50
35
  const defaultExtension = '.tgz';
51
36
  exports.defaultExtension = defaultExtension;
52
-
53
37
  class BuilderRoute {
54
38
  constructor(builder, scope, logger) {
55
39
  this.builder = builder;
@@ -63,8 +47,8 @@ class BuilderRoute {
63
47
  const {
64
48
  params
65
49
  } = req;
66
- const [aspectIdStr, filePath] = params[1].split('~'); // remove trailing slash
67
-
50
+ const [aspectIdStr, filePath] = params[1].split('~');
51
+ // remove trailing slash
68
52
  const aspectId = aspectIdStr.replace(/\/$/, '');
69
53
  const artifacts = aspectId ? this.builder.getArtifactsByAspect(component, aspectId) : this.builder.getArtifacts(component);
70
54
  if (!artifacts) return res.status(404).jsonp({
@@ -85,24 +69,20 @@ class BuilderRoute {
85
69
  if (artifactFilesCount === 0) return res.status(404).jsonp({
86
70
  error: `no artifacts found for component ${component.id} by aspect ${aspectId}`
87
71
  });
88
-
89
72
  if (artifactFilesCount === 1) {
90
73
  const extensionWithArtifact = extensionsWithArtifacts.find(e => e.files.length > 0);
91
74
  const fileName = `${extensionWithArtifact === null || extensionWithArtifact === void 0 ? void 0 : extensionWithArtifact.extensionId}_${extensionWithArtifact === null || extensionWithArtifact === void 0 ? void 0 : extensionWithArtifact.files[0].path}`;
92
75
  const fileContent = extensionWithArtifact === null || extensionWithArtifact === void 0 ? void 0 : extensionWithArtifact.files[0].contents;
93
76
  const fileExt = (extensionWithArtifact === null || extensionWithArtifact === void 0 ? void 0 : extensionWithArtifact.files[0].extname) || defaultExtension;
94
-
95
77
  const contentType = _mime().default.getType(fileExt);
96
-
97
78
  res.set('Content-disposition', `attachment; filename=${fileName}`);
98
79
  if (contentType) res.set('Content-Type', contentType);
99
80
  return res.send(fileContent);
100
81
  }
82
+
101
83
  /**
102
84
  * if more than 1 file requested, zip them before sending
103
85
  */
104
-
105
-
106
86
  const archive = (0, _archiver().default)('tar', {
107
87
  gzip: true
108
88
  });
@@ -119,7 +99,6 @@ class BuilderRoute {
119
99
  });
120
100
  });
121
101
  });
122
-
123
102
  try {
124
103
  archive.pipe(res);
125
104
  /**
@@ -127,7 +106,6 @@ class BuilderRoute {
127
106
  * resolving it results in setting the headers before the stream is finished
128
107
  */
129
108
  // eslint-disable-next-line no-void
130
-
131
109
  void archive.finalize();
132
110
  return res.attachment(`${aspectId.replace('/', '_')}.tar`);
133
111
  } catch (e) {
@@ -137,9 +115,7 @@ class BuilderRoute {
137
115
  }
138
116
  }]);
139
117
  }
140
-
141
118
  }
142
-
143
119
  exports.BuilderRoute = BuilderRoute;
144
120
 
145
121
  //# sourceMappingURL=builder.route.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["routePath","defaultExtension","BuilderRoute","constructor","builder","scope","logger","req","res","component","params","aspectIdStr","filePath","split","aspectId","replace","artifacts","getArtifactsByAspect","getArtifacts","status","jsonp","error","id","extensionsWithArtifacts","Promise","all","map","artifact","files","getVinylsAndImportIfMissing","_legacy","legacyScope","extensionId","task","filter","file","path","artifactFilesCount","reduce","accum","next","length","extensionWithArtifact","find","e","fileName","fileContent","contents","fileExt","extname","contentType","mime","getType","set","send","archive","archiver","gzip","on","warn","message","err","forEach","extensionWithArtifacts","append","name","pipe","finalize","attachment","toString"],"sources":["builder.route.ts"],"sourcesContent":["import { Request, Response, Route } from '@teambit/express';\nimport { Component } from '@teambit/component';\nimport archiver from 'archiver';\nimport { Logger } from '@teambit/logger';\nimport { ScopeMain } from '@teambit/scope';\nimport mime from 'mime';\nimport { BuilderMain } from './builder.main.runtime';\n\nexport const routePath = `builder`;\n\nexport type BuilderUrlParams = {\n aspectId?: string;\n filePath?: string;\n};\nexport const defaultExtension = '.tgz';\nexport class BuilderRoute implements Route {\n constructor(private builder: BuilderMain, private scope: ScopeMain, private logger: Logger) {}\n route = `/${routePath}/*`;\n method = 'get';\n\n middlewares = [\n async (req: Request<BuilderUrlParams>, res: Response) => {\n // @ts-ignore TODO: @guy please fix.\n const component = req.component as Component;\n const { params } = req;\n const [aspectIdStr, filePath] = params[1].split('~');\n // remove trailing slash\n const aspectId = aspectIdStr.replace(/\\/$/, '');\n const artifacts = aspectId\n ? this.builder.getArtifactsByAspect(component, aspectId)\n : this.builder.getArtifacts(component);\n if (!artifacts)\n return res\n .status(404)\n .jsonp({ error: `no artifacts found for component ${component.id} by aspect ${aspectId}` });\n const extensionsWithArtifacts = await Promise.all(\n artifacts.map(async (artifact) => {\n const files = await artifact.files.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n if (!filePath) return { extensionId: artifact.task.aspectId, files };\n return { extensionId: artifact.task.aspectId, files: files.filter((file) => file.path === filePath) };\n })\n );\n\n const artifactFilesCount = extensionsWithArtifacts.reduce((accum, next) => accum + next.files.length, 0);\n\n if (artifactFilesCount === 0)\n return res\n .status(404)\n .jsonp({ error: `no artifacts found for component ${component.id} by aspect ${aspectId}` });\n\n if (artifactFilesCount === 1) {\n const extensionWithArtifact = extensionsWithArtifacts.find((e) => e.files.length > 0);\n const fileName = `${extensionWithArtifact?.extensionId}_${extensionWithArtifact?.files[0].path}`;\n const fileContent = extensionWithArtifact?.files[0].contents;\n const fileExt = extensionWithArtifact?.files[0].extname || defaultExtension;\n const contentType = mime.getType(fileExt);\n res.set('Content-disposition', `attachment; filename=${fileName}`);\n if (contentType) res.set('Content-Type', contentType);\n return res.send(fileContent);\n }\n\n /**\n * if more than 1 file requested, zip them before sending\n */\n const archive = archiver('tar', { gzip: true });\n\n archive.on('warning', (warn) => {\n this.logger.warn(warn.message);\n });\n\n archive.on('error', (err) => {\n this.logger.error(err.message);\n });\n\n extensionsWithArtifacts.forEach((extensionWithArtifacts) => {\n extensionWithArtifacts.files.forEach((artifact) => {\n archive.append(artifact.contents, { name: `${extensionWithArtifacts.extensionId}_${artifact.path}` });\n });\n });\n\n try {\n archive.pipe(res);\n /**\n * promise that is returned from the await zip.finalize(); is resolved before the archive is actually finalized\n * resolving it results in setting the headers before the stream is finished\n */\n // eslint-disable-next-line no-void\n void archive.finalize();\n return res.attachment(`${aspectId.replace('/', '_')}.tar`);\n } catch (e: any) {\n return res.send({ error: e.toString() });\n }\n },\n ];\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["routePath","defaultExtension","BuilderRoute","constructor","builder","scope","logger","req","res","component","params","aspectIdStr","filePath","split","aspectId","replace","artifacts","getArtifactsByAspect","getArtifacts","status","jsonp","error","id","extensionsWithArtifacts","Promise","all","map","artifact","files","getVinylsAndImportIfMissing","_legacy","legacyScope","extensionId","task","filter","file","path","artifactFilesCount","reduce","accum","next","length","extensionWithArtifact","find","e","fileName","fileContent","contents","fileExt","extname","contentType","mime","getType","set","send","archive","archiver","gzip","on","warn","message","err","forEach","extensionWithArtifacts","append","name","pipe","finalize","attachment","toString"],"sources":["builder.route.ts"],"sourcesContent":["import { Request, Response, Route } from '@teambit/express';\nimport { Component } from '@teambit/component';\nimport archiver from 'archiver';\nimport { Logger } from '@teambit/logger';\nimport { ScopeMain } from '@teambit/scope';\nimport mime from 'mime';\nimport { BuilderMain } from './builder.main.runtime';\n\nexport const routePath = `builder`;\n\nexport type BuilderUrlParams = {\n aspectId?: string;\n filePath?: string;\n};\nexport const defaultExtension = '.tgz';\nexport class BuilderRoute implements Route {\n constructor(private builder: BuilderMain, private scope: ScopeMain, private logger: Logger) {}\n route = `/${routePath}/*`;\n method = 'get';\n\n middlewares = [\n async (req: Request<BuilderUrlParams>, res: Response) => {\n // @ts-ignore TODO: @guy please fix.\n const component = req.component as Component;\n const { params } = req;\n const [aspectIdStr, filePath] = params[1].split('~');\n // remove trailing slash\n const aspectId = aspectIdStr.replace(/\\/$/, '');\n const artifacts = aspectId\n ? this.builder.getArtifactsByAspect(component, aspectId)\n : this.builder.getArtifacts(component);\n if (!artifacts)\n return res\n .status(404)\n .jsonp({ error: `no artifacts found for component ${component.id} by aspect ${aspectId}` });\n const extensionsWithArtifacts = await Promise.all(\n artifacts.map(async (artifact) => {\n const files = await artifact.files.getVinylsAndImportIfMissing(component.id._legacy, this.scope.legacyScope);\n if (!filePath) return { extensionId: artifact.task.aspectId, files };\n return { extensionId: artifact.task.aspectId, files: files.filter((file) => file.path === filePath) };\n })\n );\n\n const artifactFilesCount = extensionsWithArtifacts.reduce((accum, next) => accum + next.files.length, 0);\n\n if (artifactFilesCount === 0)\n return res\n .status(404)\n .jsonp({ error: `no artifacts found for component ${component.id} by aspect ${aspectId}` });\n\n if (artifactFilesCount === 1) {\n const extensionWithArtifact = extensionsWithArtifacts.find((e) => e.files.length > 0);\n const fileName = `${extensionWithArtifact?.extensionId}_${extensionWithArtifact?.files[0].path}`;\n const fileContent = extensionWithArtifact?.files[0].contents;\n const fileExt = extensionWithArtifact?.files[0].extname || defaultExtension;\n const contentType = mime.getType(fileExt);\n res.set('Content-disposition', `attachment; filename=${fileName}`);\n if (contentType) res.set('Content-Type', contentType);\n return res.send(fileContent);\n }\n\n /**\n * if more than 1 file requested, zip them before sending\n */\n const archive = archiver('tar', { gzip: true });\n\n archive.on('warning', (warn) => {\n this.logger.warn(warn.message);\n });\n\n archive.on('error', (err) => {\n this.logger.error(err.message);\n });\n\n extensionsWithArtifacts.forEach((extensionWithArtifacts) => {\n extensionWithArtifacts.files.forEach((artifact) => {\n archive.append(artifact.contents, { name: `${extensionWithArtifacts.extensionId}_${artifact.path}` });\n });\n });\n\n try {\n archive.pipe(res);\n /**\n * promise that is returned from the await zip.finalize(); is resolved before the archive is actually finalized\n * resolving it results in setting the headers before the stream is finished\n */\n // eslint-disable-next-line no-void\n void archive.finalize();\n return res.attachment(`${aspectId.replace('/', '_')}.tar`);\n } catch (e: any) {\n return res.send({ error: e.toString() });\n }\n },\n ];\n}\n"],"mappings":"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"}
@@ -1,100 +1,72 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.promise.js");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.BuilderService = void 0;
11
-
12
9
  function _defineProperty2() {
13
10
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
-
15
11
  _defineProperty2 = function () {
16
12
  return data;
17
13
  };
18
-
19
14
  return data;
20
15
  }
21
-
22
16
  function _react() {
23
17
  const data = _interopRequireDefault(require("react"));
24
-
25
18
  _react = function () {
26
19
  return data;
27
20
  };
28
-
29
21
  return data;
30
22
  }
31
-
32
23
  function _pMapSeries() {
33
24
  const data = _interopRequireDefault(require("p-map-series"));
34
-
35
25
  _pMapSeries = function () {
36
26
  return data;
37
27
  };
38
-
39
28
  return data;
40
29
  }
41
-
42
30
  function _ink() {
43
31
  const data = require("ink");
44
-
45
32
  _ink = function () {
46
33
  return data;
47
34
  };
48
-
49
35
  return data;
50
36
  }
51
-
52
37
  function _buildPipe() {
53
38
  const data = require("./build-pipe");
54
-
55
39
  _buildPipe = function () {
56
40
  return data;
57
41
  };
58
-
59
42
  return data;
60
43
  }
61
-
62
44
  function _buildTask() {
63
45
  const data = require("./build-task");
64
-
65
46
  _buildTask = function () {
66
47
  return data;
67
48
  };
68
-
69
49
  return data;
70
50
  }
71
-
72
51
  function _buildPipelineOrder() {
73
52
  const data = require("./build-pipeline-order");
74
-
75
53
  _buildPipelineOrder = function () {
76
54
  return data;
77
55
  };
78
-
79
56
  return data;
80
57
  }
81
-
82
58
  function _builder() {
83
59
  const data = require("./builder.aspect");
84
-
85
60
  _builder = function () {
86
61
  return data;
87
62
  };
88
-
89
63
  return data;
90
64
  }
91
-
92
65
  const pipeNames = {
93
66
  getBuildPipe: 'build',
94
67
  getTagPipe: 'tag',
95
68
  getSnapPipe: 'snap'
96
69
  };
97
-
98
70
  class BuilderService {
99
71
  constructor(
100
72
  /**
@@ -126,11 +98,10 @@ class BuilderService {
126
98
  this.scope = scope;
127
99
  (0, _defineProperty2().default)(this, "name", 'builder');
128
100
  }
101
+
129
102
  /**
130
103
  * runs all tasks for all envs
131
104
  */
132
-
133
-
134
105
  async runOnce(envsExecutionContext, options) {
135
106
  const envs = envsExecutionContext.map(executionContext => executionContext.envDefinition);
136
107
  const tasksQueue = (0, _buildPipelineOrder().calculatePipelineOrder)(this.taskSlot, envs, this.pipeNameOnEnv, options.tasks, options.skipTests);
@@ -167,7 +138,6 @@ class BuilderService {
167
138
  buildResults.hasErrors() ? this.logger.consoleFailure() : this.logger.consoleSuccess();
168
139
  return buildResults;
169
140
  }
170
-
171
141
  render(env) {
172
142
  const pipes = this.getDescriptor(env);
173
143
  return /*#__PURE__*/_react().default.createElement(_ink().Text, {
@@ -177,7 +147,6 @@ class BuilderService {
177
147
  tasks
178
148
  }) => this.renderOnePipe(pipeName, tasks)));
179
149
  }
180
-
181
150
  renderOnePipe(pipeName, tasks) {
182
151
  if (!tasks || !tasks.length) return null;
183
152
  return /*#__PURE__*/_react().default.createElement(_ink().Text, {
@@ -191,7 +160,6 @@ class BuilderService {
191
160
  key: index
192
161
  }, /*#__PURE__*/_react().default.createElement(_ink().Text, null, index + 1, ". ", task), /*#__PURE__*/_react().default.createElement(_ink().Newline, null))), /*#__PURE__*/_react().default.createElement(_ink().Newline, null));
193
162
  }
194
-
195
163
  getDescriptor(env) {
196
164
  // @ts-ignore
197
165
  const tasks = Object.keys(pipeNames).map(pipeFuncName => {
@@ -203,20 +171,16 @@ class BuilderService {
203
171
  });
204
172
  return tasks;
205
173
  }
206
-
207
174
  getTasksNamesByPipeFunc(env, pipeFuncName) {
208
175
  const tasksQueue = (0, _buildPipelineOrder().calculatePipelineOrder)(this.taskSlot, [env], pipeFuncName).map(({
209
176
  task
210
177
  }) => _buildTask().BuildTaskHelper.serializeId(task));
211
178
  return tasksQueue;
212
179
  }
213
-
214
180
  getCurrentPipeTasks(env) {
215
181
  return this.getTasksNamesByPipeFunc(env, this.pipeNameOnEnv);
216
182
  }
217
-
218
183
  }
219
-
220
184
  exports.BuilderService = BuilderService;
221
185
 
222
186
  //# sourceMappingURL=builder.service.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["pipeNames","getBuildPipe","getTagPipe","getSnapPipe","BuilderService","constructor","isolator","logger","taskSlot","pipeNameOnEnv","displayPipeName","artifactFactory","scope","runOnce","envsExecutionContext","options","envs","map","executionContext","envDefinition","tasksQueue","calculatePipelineOrder","tasks","skipTests","validate","info","toString","title","length","longProcessLogger","createLongProcessLogger","consoleTitle","envsBuildContext","pMapSeries","componentIds","components","component","id","originalSeeders","originalSeedersOfThisEnv","filter","compId","find","seeder","isEqual","capsuleNetwork","isolateComponents","getExistingAsIs","seedersOnly","_originalSeeders","console","seedersCapsules","graphCapsules","buildContext","Object","assign","previousTasksResults","pipeName","dev","laneId","legacyScope","currentLaneId","buildPipe","BuildPipe","buildResults","execute","end","hasErrors","consoleFailure","consoleSuccess","render","env","pipes","getDescriptor","BuilderAspect","renderOnePipe","task","index","keys","pipeFuncName","getTasksNamesByPipeFunc","BuildTaskHelper","serializeId","getCurrentPipeTasks"],"sources":["builder.service.tsx"],"sourcesContent":["import { EnvDefinition, EnvService, ExecutionContext } from '@teambit/envs';\nimport React from 'react';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { Text, Newline } from 'ink';\nimport { Logger } from '@teambit/logger';\nimport { IsolatorMain } from '@teambit/isolator';\nimport { Component, ComponentID } from '@teambit/component';\nimport { BuildPipe, TaskResults } from './build-pipe';\nimport { TaskResultsList } from './task-results-list';\nimport { TaskSlot } from './builder.main.runtime';\nimport { BuildContext, BuildTaskHelper } from './build-task';\nimport { ArtifactFactory } from './artifact';\nimport { calculatePipelineOrder } from './build-pipeline-order';\nimport { BuilderAspect } from './builder.aspect';\n\nexport type BuildServiceResults = {\n id: string;\n buildResults: TaskResultsList;\n components: Component[];\n errors?: [];\n};\n\nexport type BuilderServiceOptions = {\n seedersOnly?: boolean;\n originalSeeders?: ComponentID[];\n tasks?: string[];\n skipTests?: boolean;\n previousTasksResults?: TaskResults[];\n dev?: boolean;\n};\n\nexport type EnvsBuildContext = { [envId: string]: BuildContext };\n\nconst pipeNames = {\n getBuildPipe: 'build',\n getTagPipe: 'tag',\n getSnapPipe: 'snap',\n};\n\nexport type PipeName = 'build' | 'tag' | 'snap';\n\nexport type BuilderDescriptor = Array<{ pipeName: PipeName; tasks: string[] }>;\n\ntype PipeFunctionNames = keyof typeof pipeNames;\nexport class BuilderService implements EnvService<BuildServiceResults, BuilderDescriptor> {\n name = 'builder';\n\n constructor(\n /**\n * isolator extension.\n */\n private isolator: IsolatorMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * task slot (e.g tasks registered by other extensions.).\n */\n private taskSlot: TaskSlot,\n\n /**\n * a method with such name should be implemented on the env in order to run the pipe tasks.\n */\n private pipeNameOnEnv: PipeFunctionNames,\n\n /**\n * pipe name to display on the console during the execution\n */\n private displayPipeName: PipeName,\n private artifactFactory: ArtifactFactory,\n private scope: ScopeMain\n ) {}\n\n /**\n * runs all tasks for all envs\n */\n async runOnce(envsExecutionContext: ExecutionContext[], options: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = envsExecutionContext.map((executionContext) => executionContext.envDefinition);\n const tasksQueue = calculatePipelineOrder(\n this.taskSlot,\n envs,\n this.pipeNameOnEnv,\n options.tasks,\n options.skipTests\n );\n tasksQueue.validate();\n this.logger.info(`going to run tasks in the following order:\\n${tasksQueue.toString()}`);\n const title = `running ${this.displayPipeName} pipe for ${envs.length} environments, total ${tasksQueue.length} tasks`;\n const longProcessLogger = this.logger.createLongProcessLogger(title);\n this.logger.consoleTitle(title);\n const envsBuildContext: EnvsBuildContext = {};\n await pMapSeries(envsExecutionContext, async (executionContext) => {\n const componentIds = executionContext.components.map((component) => component.id);\n const { originalSeeders } = options;\n const originalSeedersOfThisEnv = componentIds.filter((compId) =>\n originalSeeders ? originalSeeders.find((seeder) => compId.isEqual(seeder)) : true\n );\n const capsuleNetwork = await this.isolator.isolateComponents(componentIds, {\n getExistingAsIs: true,\n seedersOnly: options.seedersOnly,\n });\n capsuleNetwork._originalSeeders = originalSeedersOfThisEnv;\n this.logger.console(\n `generated graph for env \"${executionContext.id}\", originalSeedersOfThisEnv: ${originalSeedersOfThisEnv.length}, graphOfThisEnv: ${capsuleNetwork.seedersCapsules.length}, graph total: ${capsuleNetwork.graphCapsules.length}`\n );\n const buildContext = Object.assign(executionContext, {\n capsuleNetwork,\n previousTasksResults: [],\n pipeName: this.displayPipeName,\n dev: options.dev,\n laneId: this.scope.legacyScope.currentLaneId,\n });\n envsBuildContext[executionContext.id] = buildContext;\n });\n const buildPipe = new BuildPipe(\n tasksQueue,\n envsBuildContext,\n this.logger,\n this.artifactFactory,\n options.previousTasksResults\n );\n const buildResults = await buildPipe.execute();\n longProcessLogger.end();\n buildResults.hasErrors() ? this.logger.consoleFailure() : this.logger.consoleSuccess();\n\n return buildResults;\n }\n\n render(env: EnvDefinition) {\n const pipes = this.getDescriptor(env);\n\n return (\n <Text key={BuilderAspect.id}>{pipes.map(({ pipeName, tasks }) => this.renderOnePipe(pipeName, tasks))}</Text>\n );\n }\n\n private renderOnePipe(pipeName, tasks) {\n if (!tasks || !tasks.length) return null;\n return (\n <Text key={pipeName}>\n <Text underline color=\"green\">\n {pipeName} pipe\n </Text>\n <Newline />\n <Text color=\"cyan\">total {tasks.length} tasks are configured to be executed in the following order</Text>\n <Newline />\n {tasks.map((task, index) => (\n <Text key={index}>\n <Text>\n {index + 1}. {task}\n </Text>\n <Newline />\n </Text>\n ))}\n <Newline />\n </Text>\n );\n }\n\n getDescriptor(env: EnvDefinition) {\n // @ts-ignore\n const tasks = Object.keys(pipeNames).map((pipeFuncName: PipeFunctionNames) => {\n const tasksQueue = this.getTasksNamesByPipeFunc(env, pipeFuncName);\n return { pipeName: pipeNames[pipeFuncName], tasks: tasksQueue };\n });\n return tasks as BuilderDescriptor;\n }\n\n private getTasksNamesByPipeFunc(env: EnvDefinition, pipeFuncName: PipeFunctionNames): string[] {\n const tasksQueue = calculatePipelineOrder(this.taskSlot, [env], pipeFuncName).map(({ task }) =>\n BuildTaskHelper.serializeId(task)\n );\n return tasksQueue;\n }\n\n getCurrentPipeTasks(env: EnvDefinition) {\n return this.getTasksNamesByPipeFunc(env, this.pipeNameOnEnv);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAoBA,MAAMA,SAAS,GAAG;EAChBC,YAAY,EAAE,OADE;EAEhBC,UAAU,EAAE,KAFI;EAGhBC,WAAW,EAAE;AAHG,CAAlB;;AAWO,MAAMC,cAAN,CAAmF;EAGxFC,WAAW;EACT;AACJ;AACA;EACYC,QAJC;EAMT;AACJ;AACA;EACYC,MATC;EAWT;AACJ;AACA;EACYC,QAdC;EAgBT;AACJ;AACA;EACYC,aAnBC;EAqBT;AACJ;AACA;EACYC,eAxBC,EAyBDC,eAzBC,EA0BDC,KA1BC,EA2BT;IAAA,KAvBQN,QAuBR,GAvBQA,QAuBR;IAAA,KAlBQC,MAkBR,GAlBQA,MAkBR;IAAA,KAbQC,QAaR,GAbQA,QAaR;IAAA,KARQC,aAQR,GARQA,aAQR;IAAA,KAHQC,eAGR,GAHQA,eAGR;IAAA,KAFQC,eAER,GAFQA,eAER;IAAA,KADQC,KACR,GADQA,KACR;IAAA,8CA7BK,SA6BL;EAAE;EAEJ;AACF;AACA;;;EACe,MAAPC,OAAO,CAACC,oBAAD,EAA2CC,OAA3C,EAAqG;IAChH,MAAMC,IAAI,GAAGF,oBAAoB,CAACG,GAArB,CAA0BC,gBAAD,IAAsBA,gBAAgB,CAACC,aAAhE,CAAb;IACA,MAAMC,UAAU,GAAG,IAAAC,4CAAA,EACjB,KAAKb,QADY,EAEjBQ,IAFiB,EAGjB,KAAKP,aAHY,EAIjBM,OAAO,CAACO,KAJS,EAKjBP,OAAO,CAACQ,SALS,CAAnB;IAOAH,UAAU,CAACI,QAAX;IACA,KAAKjB,MAAL,CAAYkB,IAAZ,CAAkB,+CAA8CL,UAAU,CAACM,QAAX,EAAsB,EAAtF;IACA,MAAMC,KAAK,GAAI,WAAU,KAAKjB,eAAgB,aAAYM,IAAI,CAACY,MAAO,wBAAuBR,UAAU,CAACQ,MAAO,QAA/G;IACA,MAAMC,iBAAiB,GAAG,KAAKtB,MAAL,CAAYuB,uBAAZ,CAAoCH,KAApC,CAA1B;IACA,KAAKpB,MAAL,CAAYwB,YAAZ,CAAyBJ,KAAzB;IACA,MAAMK,gBAAkC,GAAG,EAA3C;IACA,MAAM,IAAAC,qBAAA,EAAWnB,oBAAX,EAAiC,MAAOI,gBAAP,IAA4B;MACjE,MAAMgB,YAAY,GAAGhB,gBAAgB,CAACiB,UAAjB,CAA4BlB,GAA5B,CAAiCmB,SAAD,IAAeA,SAAS,CAACC,EAAzD,CAArB;MACA,MAAM;QAAEC;MAAF,IAAsBvB,OAA5B;MACA,MAAMwB,wBAAwB,GAAGL,YAAY,CAACM,MAAb,CAAqBC,MAAD,IACnDH,eAAe,GAAGA,eAAe,CAACI,IAAhB,CAAsBC,MAAD,IAAYF,MAAM,CAACG,OAAP,CAAeD,MAAf,CAAjC,CAAH,GAA8D,IAD9C,CAAjC;MAGA,MAAME,cAAc,GAAG,MAAM,KAAKvC,QAAL,CAAcwC,iBAAd,CAAgCZ,YAAhC,EAA8C;QACzEa,eAAe,EAAE,IADwD;QAEzEC,WAAW,EAAEjC,OAAO,CAACiC;MAFoD,CAA9C,CAA7B;MAIAH,cAAc,CAACI,gBAAf,GAAkCV,wBAAlC;MACA,KAAKhC,MAAL,CAAY2C,OAAZ,CACG,4BAA2BhC,gBAAgB,CAACmB,EAAG,gCAA+BE,wBAAwB,CAACX,MAAO,qBAAoBiB,cAAc,CAACM,eAAf,CAA+BvB,MAAO,kBAAiBiB,cAAc,CAACO,aAAf,CAA6BxB,MAAO,EADhO;MAGA,MAAMyB,YAAY,GAAGC,MAAM,CAACC,MAAP,CAAcrC,gBAAd,EAAgC;QACnD2B,cADmD;QAEnDW,oBAAoB,EAAE,EAF6B;QAGnDC,QAAQ,EAAE,KAAK/C,eAHoC;QAInDgD,GAAG,EAAE3C,OAAO,CAAC2C,GAJsC;QAKnDC,MAAM,EAAE,KAAK/C,KAAL,CAAWgD,WAAX,CAAuBC;MALoB,CAAhC,CAArB;MAOA7B,gBAAgB,CAACd,gBAAgB,CAACmB,EAAlB,CAAhB,GAAwCgB,YAAxC;IACD,CAtBK,CAAN;IAuBA,MAAMS,SAAS,GAAG,KAAIC,sBAAJ,EAChB3C,UADgB,EAEhBY,gBAFgB,EAGhB,KAAKzB,MAHW,EAIhB,KAAKI,eAJW,EAKhBI,OAAO,CAACyC,oBALQ,CAAlB;IAOA,MAAMQ,YAAY,GAAG,MAAMF,SAAS,CAACG,OAAV,EAA3B;IACApC,iBAAiB,CAACqC,GAAlB;IACAF,YAAY,CAACG,SAAb,KAA2B,KAAK5D,MAAL,CAAY6D,cAAZ,EAA3B,GAA0D,KAAK7D,MAAL,CAAY8D,cAAZ,EAA1D;IAEA,OAAOL,YAAP;EACD;;EAEDM,MAAM,CAACC,GAAD,EAAqB;IACzB,MAAMC,KAAK,GAAG,KAAKC,aAAL,CAAmBF,GAAnB,CAAd;IAEA,oBACE,+BAAC,WAAD;MAAM,GAAG,EAAEG,wBAAA,CAAcrC;IAAzB,GAA8BmC,KAAK,CAACvD,GAAN,CAAU,CAAC;MAAEwC,QAAF;MAAYnC;IAAZ,CAAD,KAAyB,KAAKqD,aAAL,CAAmBlB,QAAnB,EAA6BnC,KAA7B,CAAnC,CAA9B,CADF;EAGD;;EAEOqD,aAAa,CAAClB,QAAD,EAAWnC,KAAX,EAAkB;IACrC,IAAI,CAACA,KAAD,IAAU,CAACA,KAAK,CAACM,MAArB,EAA6B,OAAO,IAAP;IAC7B,oBACE,+BAAC,WAAD;MAAM,GAAG,EAAE6B;IAAX,gBACE,+BAAC,WAAD;MAAM,SAAS,MAAf;MAAgB,KAAK,EAAC;IAAtB,GACGA,QADH,UADF,eAIE,+BAAC,cAAD,OAJF,eAKE,+BAAC,WAAD;MAAM,KAAK,EAAC;IAAZ,aAA0BnC,KAAK,CAACM,MAAhC,gEALF,eAME,+BAAC,cAAD,OANF,EAOGN,KAAK,CAACL,GAAN,CAAU,CAAC2D,IAAD,EAAOC,KAAP,kBACT,+BAAC,WAAD;MAAM,GAAG,EAAEA;IAAX,gBACE,+BAAC,WAAD,QACGA,KAAK,GAAG,CADX,QACgBD,IADhB,CADF,eAIE,+BAAC,cAAD,OAJF,CADD,CAPH,eAeE,+BAAC,cAAD,OAfF,CADF;EAmBD;;EAEDH,aAAa,CAACF,GAAD,EAAqB;IAChC;IACA,MAAMjD,KAAK,GAAGgC,MAAM,CAACwB,IAAP,CAAY9E,SAAZ,EAAuBiB,GAAvB,CAA4B8D,YAAD,IAAqC;MAC5E,MAAM3D,UAAU,GAAG,KAAK4D,uBAAL,CAA6BT,GAA7B,EAAkCQ,YAAlC,CAAnB;MACA,OAAO;QAAEtB,QAAQ,EAAEzD,SAAS,CAAC+E,YAAD,CAArB;QAAqCzD,KAAK,EAAEF;MAA5C,CAAP;IACD,CAHa,CAAd;IAIA,OAAOE,KAAP;EACD;;EAEO0D,uBAAuB,CAACT,GAAD,EAAqBQ,YAArB,EAAgE;IAC7F,MAAM3D,UAAU,GAAG,IAAAC,4CAAA,EAAuB,KAAKb,QAA5B,EAAsC,CAAC+D,GAAD,CAAtC,EAA6CQ,YAA7C,EAA2D9D,GAA3D,CAA+D,CAAC;MAAE2D;IAAF,CAAD,KAChFK,4BAAA,CAAgBC,WAAhB,CAA4BN,IAA5B,CADiB,CAAnB;IAGA,OAAOxD,UAAP;EACD;;EAED+D,mBAAmB,CAACZ,GAAD,EAAqB;IACtC,OAAO,KAAKS,uBAAL,CAA6BT,GAA7B,EAAkC,KAAK9D,aAAvC,CAAP;EACD;;AAxIuF"}
1
+ {"version":3,"names":["pipeNames","getBuildPipe","getTagPipe","getSnapPipe","BuilderService","constructor","isolator","logger","taskSlot","pipeNameOnEnv","displayPipeName","artifactFactory","scope","runOnce","envsExecutionContext","options","envs","map","executionContext","envDefinition","tasksQueue","calculatePipelineOrder","tasks","skipTests","validate","info","toString","title","length","longProcessLogger","createLongProcessLogger","consoleTitle","envsBuildContext","pMapSeries","componentIds","components","component","id","originalSeeders","originalSeedersOfThisEnv","filter","compId","find","seeder","isEqual","capsuleNetwork","isolateComponents","getExistingAsIs","seedersOnly","_originalSeeders","console","seedersCapsules","graphCapsules","buildContext","Object","assign","previousTasksResults","pipeName","dev","laneId","legacyScope","currentLaneId","buildPipe","BuildPipe","buildResults","execute","end","hasErrors","consoleFailure","consoleSuccess","render","env","pipes","getDescriptor","BuilderAspect","renderOnePipe","task","index","keys","pipeFuncName","getTasksNamesByPipeFunc","BuildTaskHelper","serializeId","getCurrentPipeTasks"],"sources":["builder.service.tsx"],"sourcesContent":["import { EnvDefinition, EnvService, ExecutionContext } from '@teambit/envs';\nimport React from 'react';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { Text, Newline } from 'ink';\nimport { Logger } from '@teambit/logger';\nimport { IsolatorMain } from '@teambit/isolator';\nimport { Component, ComponentID } from '@teambit/component';\nimport { BuildPipe, TaskResults } from './build-pipe';\nimport { TaskResultsList } from './task-results-list';\nimport { TaskSlot } from './builder.main.runtime';\nimport { BuildContext, BuildTaskHelper } from './build-task';\nimport { ArtifactFactory } from './artifact';\nimport { calculatePipelineOrder } from './build-pipeline-order';\nimport { BuilderAspect } from './builder.aspect';\n\nexport type BuildServiceResults = {\n id: string;\n buildResults: TaskResultsList;\n components: Component[];\n errors?: [];\n};\n\nexport type BuilderServiceOptions = {\n seedersOnly?: boolean;\n originalSeeders?: ComponentID[];\n tasks?: string[];\n skipTests?: boolean;\n previousTasksResults?: TaskResults[];\n dev?: boolean;\n};\n\nexport type EnvsBuildContext = { [envId: string]: BuildContext };\n\nconst pipeNames = {\n getBuildPipe: 'build',\n getTagPipe: 'tag',\n getSnapPipe: 'snap',\n};\n\nexport type PipeName = 'build' | 'tag' | 'snap';\n\nexport type BuilderDescriptor = Array<{ pipeName: PipeName; tasks: string[] }>;\n\ntype PipeFunctionNames = keyof typeof pipeNames;\nexport class BuilderService implements EnvService<BuildServiceResults, BuilderDescriptor> {\n name = 'builder';\n\n constructor(\n /**\n * isolator extension.\n */\n private isolator: IsolatorMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * task slot (e.g tasks registered by other extensions.).\n */\n private taskSlot: TaskSlot,\n\n /**\n * a method with such name should be implemented on the env in order to run the pipe tasks.\n */\n private pipeNameOnEnv: PipeFunctionNames,\n\n /**\n * pipe name to display on the console during the execution\n */\n private displayPipeName: PipeName,\n private artifactFactory: ArtifactFactory,\n private scope: ScopeMain\n ) {}\n\n /**\n * runs all tasks for all envs\n */\n async runOnce(envsExecutionContext: ExecutionContext[], options: BuilderServiceOptions): Promise<TaskResultsList> {\n const envs = envsExecutionContext.map((executionContext) => executionContext.envDefinition);\n const tasksQueue = calculatePipelineOrder(\n this.taskSlot,\n envs,\n this.pipeNameOnEnv,\n options.tasks,\n options.skipTests\n );\n tasksQueue.validate();\n this.logger.info(`going to run tasks in the following order:\\n${tasksQueue.toString()}`);\n const title = `running ${this.displayPipeName} pipe for ${envs.length} environments, total ${tasksQueue.length} tasks`;\n const longProcessLogger = this.logger.createLongProcessLogger(title);\n this.logger.consoleTitle(title);\n const envsBuildContext: EnvsBuildContext = {};\n await pMapSeries(envsExecutionContext, async (executionContext) => {\n const componentIds = executionContext.components.map((component) => component.id);\n const { originalSeeders } = options;\n const originalSeedersOfThisEnv = componentIds.filter((compId) =>\n originalSeeders ? originalSeeders.find((seeder) => compId.isEqual(seeder)) : true\n );\n const capsuleNetwork = await this.isolator.isolateComponents(componentIds, {\n getExistingAsIs: true,\n seedersOnly: options.seedersOnly,\n });\n capsuleNetwork._originalSeeders = originalSeedersOfThisEnv;\n this.logger.console(\n `generated graph for env \"${executionContext.id}\", originalSeedersOfThisEnv: ${originalSeedersOfThisEnv.length}, graphOfThisEnv: ${capsuleNetwork.seedersCapsules.length}, graph total: ${capsuleNetwork.graphCapsules.length}`\n );\n const buildContext = Object.assign(executionContext, {\n capsuleNetwork,\n previousTasksResults: [],\n pipeName: this.displayPipeName,\n dev: options.dev,\n laneId: this.scope.legacyScope.currentLaneId,\n });\n envsBuildContext[executionContext.id] = buildContext;\n });\n const buildPipe = new BuildPipe(\n tasksQueue,\n envsBuildContext,\n this.logger,\n this.artifactFactory,\n options.previousTasksResults\n );\n const buildResults = await buildPipe.execute();\n longProcessLogger.end();\n buildResults.hasErrors() ? this.logger.consoleFailure() : this.logger.consoleSuccess();\n\n return buildResults;\n }\n\n render(env: EnvDefinition) {\n const pipes = this.getDescriptor(env);\n\n return (\n <Text key={BuilderAspect.id}>{pipes.map(({ pipeName, tasks }) => this.renderOnePipe(pipeName, tasks))}</Text>\n );\n }\n\n private renderOnePipe(pipeName, tasks) {\n if (!tasks || !tasks.length) return null;\n return (\n <Text key={pipeName}>\n <Text underline color=\"green\">\n {pipeName} pipe\n </Text>\n <Newline />\n <Text color=\"cyan\">total {tasks.length} tasks are configured to be executed in the following order</Text>\n <Newline />\n {tasks.map((task, index) => (\n <Text key={index}>\n <Text>\n {index + 1}. {task}\n </Text>\n <Newline />\n </Text>\n ))}\n <Newline />\n </Text>\n );\n }\n\n getDescriptor(env: EnvDefinition) {\n // @ts-ignore\n const tasks = Object.keys(pipeNames).map((pipeFuncName: PipeFunctionNames) => {\n const tasksQueue = this.getTasksNamesByPipeFunc(env, pipeFuncName);\n return { pipeName: pipeNames[pipeFuncName], tasks: tasksQueue };\n });\n return tasks as BuilderDescriptor;\n }\n\n private getTasksNamesByPipeFunc(env: EnvDefinition, pipeFuncName: PipeFunctionNames): string[] {\n const tasksQueue = calculatePipelineOrder(this.taskSlot, [env], pipeFuncName).map(({ task }) =>\n BuildTaskHelper.serializeId(task)\n );\n return tasksQueue;\n }\n\n getCurrentPipeTasks(env: EnvDefinition) {\n return this.getTasksNamesByPipeFunc(env, this.pipeNameOnEnv);\n }\n}\n"],"mappings":"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"}
@@ -4,14 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ArtifactDefinitionError = void 0;
7
-
8
7
  class ArtifactDefinitionError extends Error {
9
8
  constructor() {
10
9
  super(`must include glob or directories`);
11
10
  }
12
-
13
11
  }
14
-
15
12
  exports.ArtifactDefinitionError = ArtifactDefinitionError;
16
13
 
17
14
  //# sourceMappingURL=artifact-definition-no-glob.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ArtifactDefinitionError","Error","constructor"],"sources":["artifact-definition-no-glob.ts"],"sourcesContent":["export class ArtifactDefinitionError extends Error {\n constructor() {\n super(`must include glob or directories`);\n }\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,uBAAN,SAAsCC,KAAtC,CAA4C;EACjDC,WAAW,GAAG;IACZ,MAAO,kCAAP;EACD;;AAHgD"}
1
+ {"version":3,"names":["ArtifactDefinitionError","Error","constructor"],"sources":["artifact-definition-no-glob.ts"],"sourcesContent":["export class ArtifactDefinitionError extends Error {\n constructor() {\n super(`must include glob or directories`);\n }\n}\n"],"mappings":";;;;;;AAAO,MAAMA,uBAAuB,SAASC,KAAK,CAAC;EACjDC,WAAW,GAAG;IACZ,KAAK,CAAE,kCAAiC,CAAC;EAC3C;AACF;AAAC"}
@@ -4,16 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ArtifactStorageError = void 0;
7
-
8
7
  class ArtifactStorageError extends Error {
9
8
  constructor(originalError, component) {
10
9
  super(`failed to store artifacts for component ${component.id.toString()}`);
11
10
  this.originalError = originalError;
12
11
  this.component = component;
13
12
  }
14
-
15
13
  }
16
-
17
14
  exports.ArtifactStorageError = ArtifactStorageError;
18
15
 
19
16
  //# sourceMappingURL=artifact-storage-error.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ArtifactStorageError","Error","constructor","originalError","component","id","toString"],"sources":["artifact-storage-error.ts"],"sourcesContent":["import { Component } from '@teambit/component';\n\nexport class ArtifactStorageError extends Error {\n constructor(private originalError: Error, private component: Component) {\n super(`failed to store artifacts for component ${component.id.toString()}`);\n }\n}\n"],"mappings":";;;;;;;AAEO,MAAMA,oBAAN,SAAmCC,KAAnC,CAAyC;EAC9CC,WAAW,CAASC,aAAT,EAAuCC,SAAvC,EAA6D;IACtE,MAAO,2CAA0CA,SAAS,CAACC,EAAV,CAAaC,QAAb,EAAwB,EAAzE;IADsE,KAApDH,aAAoD,GAApDA,aAAoD;IAAA,KAAtBC,SAAsB,GAAtBA,SAAsB;EAEvE;;AAH6C"}
1
+ {"version":3,"names":["ArtifactStorageError","Error","constructor","originalError","component","id","toString"],"sources":["artifact-storage-error.ts"],"sourcesContent":["import { Component } from '@teambit/component';\n\nexport class ArtifactStorageError extends Error {\n constructor(private originalError: Error, private component: Component) {\n super(`failed to store artifacts for component ${component.id.toString()}`);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,oBAAoB,SAASC,KAAK,CAAC;EAC9CC,WAAW,CAASC,aAAoB,EAAUC,SAAoB,EAAE;IACtE,KAAK,CAAE,2CAA0CA,SAAS,CAACC,EAAE,CAACC,QAAQ,EAAG,EAAC,CAAC;IAAC,KAD1DH,aAAoB,GAApBA,aAAoB;IAAA,KAAUC,SAAoB,GAApBA,SAAoB;EAEtE;AACF;AAAC"}
@@ -4,15 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CapsuleNotFound = void 0;
7
-
8
7
  class CapsuleNotFound extends Error {
9
8
  constructor(id) {
10
9
  super(`unable to find capsule for component ${id.toString()}`);
11
10
  this.id = id;
12
11
  }
13
-
14
12
  }
15
-
16
13
  exports.CapsuleNotFound = CapsuleNotFound;
17
14
 
18
15
  //# sourceMappingURL=capsule-not-found.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CapsuleNotFound","Error","constructor","id","toString"],"sources":["capsule-not-found.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\n\nexport class CapsuleNotFound extends Error {\n constructor(private id: ComponentID) {\n super(`unable to find capsule for component ${id.toString()}`);\n }\n}\n"],"mappings":";;;;;;;AAEO,MAAMA,eAAN,SAA8BC,KAA9B,CAAoC;EACzCC,WAAW,CAASC,EAAT,EAA0B;IACnC,MAAO,wCAAuCA,EAAE,CAACC,QAAH,EAAc,EAA5D;IADmC,KAAjBD,EAAiB,GAAjBA,EAAiB;EAEpC;;AAHwC"}
1
+ {"version":3,"names":["CapsuleNotFound","Error","constructor","id","toString"],"sources":["capsule-not-found.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\n\nexport class CapsuleNotFound extends Error {\n constructor(private id: ComponentID) {\n super(`unable to find capsule for component ${id.toString()}`);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,eAAe,SAASC,KAAK,CAAC;EACzCC,WAAW,CAASC,EAAe,EAAE;IACnC,KAAK,CAAE,wCAAuCA,EAAE,CAACC,QAAQ,EAAG,EAAC,CAAC;IAAC,KAD7CD,EAAe,GAAfA,EAAe;EAEnC;AACF;AAAC"}