@teambit/builder 1.0.91 → 1.0.93
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/artifact/artifact-list.ts +14 -0
- package/artifact/artifact.ts +21 -0
- package/dist/artifact/artifact-list.d.ts +8 -0
- package/dist/artifact/artifact-list.js +14 -0
- package/dist/artifact/artifact-list.js.map +1 -1
- package/dist/artifact/artifact.d.ts +7 -0
- package/dist/artifact/artifact.js +21 -0
- package/dist/artifact/artifact.js.map +1 -1
- package/dist/{preview-1702467749902.js → preview-1702545084184.js} +2 -2
- package/package.json +13 -13
|
@@ -44,6 +44,20 @@ export class ArtifactList<T extends Artifact> extends Array<T> {
|
|
|
44
44
|
return ArtifactList.fromArray(filtered);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
/**
|
|
48
|
+
* find by the artifact name. it's possible to have multiple artifacts with the same name, in which case it returns the first.
|
|
49
|
+
*/
|
|
50
|
+
findByName(name: string): Artifact | undefined {
|
|
51
|
+
return this.find((artifact) => artifact.name === name);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 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.
|
|
56
|
+
*/
|
|
57
|
+
findByTaskName(name: string): Artifact | undefined {
|
|
58
|
+
return this.find((artifact) => artifact.task.name === name);
|
|
59
|
+
}
|
|
60
|
+
|
|
47
61
|
isEmpty(): boolean {
|
|
48
62
|
return this.every((artifact) => artifact.files.isEmpty());
|
|
49
63
|
}
|
package/artifact/artifact.ts
CHANGED
|
@@ -50,6 +50,27 @@ export class Artifact {
|
|
|
50
50
|
return this.def.generatedBy || this.task.aspectId;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* calculate what could possibly be the root directory of the artifact.
|
|
55
|
+
* in case the deprecated rootDir is set, use it.
|
|
56
|
+
* otherwise, get the common first directory of all files.
|
|
57
|
+
* if there is no common directory, or there are multiple directories return undefined.
|
|
58
|
+
*/
|
|
59
|
+
get artifactDir(): string | undefined {
|
|
60
|
+
if (this.def.rootDir) return this.def.rootDir;
|
|
61
|
+
|
|
62
|
+
// not sure if needed, it's unclear whether the paths are OS specific or not. (coming from globby).
|
|
63
|
+
const pathsLinux = this.files.paths.map((p) => p.replace(/\\/g, '/'));
|
|
64
|
+
// get the common dir of all paths.
|
|
65
|
+
const firstPath = pathsLinux[0];
|
|
66
|
+
// it's a file in the root, so there is no shared root directory.
|
|
67
|
+
if (!firstPath.includes('/')) return undefined;
|
|
68
|
+
const [potentialSharedDir] = firstPath.split('/');
|
|
69
|
+
const isSharedDir = pathsLinux.every((p) => p.startsWith(`${potentialSharedDir}/`));
|
|
70
|
+
if (!isSharedDir) return undefined;
|
|
71
|
+
return potentialSharedDir;
|
|
72
|
+
}
|
|
73
|
+
|
|
53
74
|
isEmpty(): boolean {
|
|
54
75
|
return this.files.isEmpty();
|
|
55
76
|
}
|
|
@@ -10,6 +10,14 @@ export declare type ResolverMap<T extends Artifact> = {
|
|
|
10
10
|
export declare class ArtifactList<T extends Artifact> extends Array<T> {
|
|
11
11
|
byAspectNameAndName(aspectName?: string, name?: string): ArtifactList<T>;
|
|
12
12
|
byAspectNameAndTaskName(aspectName?: string, name?: string): ArtifactList<T>;
|
|
13
|
+
/**
|
|
14
|
+
* find by the artifact name. it's possible to have multiple artifacts with the same name, in which case it returns the first.
|
|
15
|
+
*/
|
|
16
|
+
findByName(name: string): Artifact | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* 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.
|
|
19
|
+
*/
|
|
20
|
+
findByTaskName(name: string): Artifact | undefined;
|
|
13
21
|
isEmpty(): boolean;
|
|
14
22
|
/**
|
|
15
23
|
* group artifacts by the storage resolver.
|
|
@@ -53,6 +53,20 @@ class ArtifactList extends Array {
|
|
|
53
53
|
});
|
|
54
54
|
return ArtifactList.fromArray(filtered);
|
|
55
55
|
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* find by the artifact name. it's possible to have multiple artifacts with the same name, in which case it returns the first.
|
|
59
|
+
*/
|
|
60
|
+
findByName(name) {
|
|
61
|
+
return this.find(artifact => artifact.name === name);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* 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.
|
|
66
|
+
*/
|
|
67
|
+
findByTaskName(name) {
|
|
68
|
+
return this.find(artifact => artifact.task.name === name);
|
|
69
|
+
}
|
|
56
70
|
isEmpty() {
|
|
57
71
|
return this.every(artifact => artifact.files.isEmpty());
|
|
58
72
|
}
|
|
@@ -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","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 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(async (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(async (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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"}
|
|
@@ -42,6 +42,13 @@ export declare class Artifact {
|
|
|
42
42
|
* aspect id (string) that generated the artifact
|
|
43
43
|
*/
|
|
44
44
|
get generatedBy(): string;
|
|
45
|
+
/**
|
|
46
|
+
* calculate what could possibly be the root directory of the artifact.
|
|
47
|
+
* in case the deprecated rootDir is set, use it.
|
|
48
|
+
* otherwise, get the common first directory of all files.
|
|
49
|
+
* if there is no common directory, or there are multiple directories return undefined.
|
|
50
|
+
*/
|
|
51
|
+
get artifactDir(): string | undefined;
|
|
45
52
|
isEmpty(): boolean;
|
|
46
53
|
/**
|
|
47
54
|
* archive all artifact files into a tar.
|
|
@@ -57,6 +57,27 @@ class Artifact {
|
|
|
57
57
|
get generatedBy() {
|
|
58
58
|
return this.def.generatedBy || this.task.aspectId;
|
|
59
59
|
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* calculate what could possibly be the root directory of the artifact.
|
|
63
|
+
* in case the deprecated rootDir is set, use it.
|
|
64
|
+
* otherwise, get the common first directory of all files.
|
|
65
|
+
* if there is no common directory, or there are multiple directories return undefined.
|
|
66
|
+
*/
|
|
67
|
+
get artifactDir() {
|
|
68
|
+
if (this.def.rootDir) return this.def.rootDir;
|
|
69
|
+
|
|
70
|
+
// not sure if needed, it's unclear whether the paths are OS specific or not. (coming from globby).
|
|
71
|
+
const pathsLinux = this.files.paths.map(p => p.replace(/\\/g, '/'));
|
|
72
|
+
// get the common dir of all paths.
|
|
73
|
+
const firstPath = pathsLinux[0];
|
|
74
|
+
// it's a file in the root, so there is no shared root directory.
|
|
75
|
+
if (!firstPath.includes('/')) return undefined;
|
|
76
|
+
const [potentialSharedDir] = firstPath.split('/');
|
|
77
|
+
const isSharedDir = pathsLinux.every(p => p.startsWith(`${potentialSharedDir}/`));
|
|
78
|
+
if (!isSharedDir) return undefined;
|
|
79
|
+
return potentialSharedDir;
|
|
80
|
+
}
|
|
60
81
|
isEmpty() {
|
|
61
82
|
return this.files.isEmpty();
|
|
62
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_defaultResolver","data","require","Artifact","constructor","def","files","task","timestamp","Date","now","storage","storageResolver","name","DefaultResolver","description","generatedBy","aspectId","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 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":";;;;;;AAGA,SAAAA,iBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,gBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,QAAQ,CAAC;EACpBC,WAAWA;EACT;AACJ;AACA;EACaC,GAAuB,EAEvBC,KAAoB;EAC7B;AACJ;AACA;EACaC,IAAoB;EAC7B;AACJ;AACA;EACaC,SAAiB,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EACvC;IAAA,KAXSL,GAAuB,GAAvBA,GAAuB;IAAA,KAEvBC,KAAoB,GAApBA,KAAoB;IAAA,KAIpBC,IAAoB,GAApBA,IAAoB;IAAA,KAIpBC,SAAiB,GAAjBA,SAAiB;EACzB;EAEH,IAAIG,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACC,eAAe,CAACC,IAAI;EAClC;EAEA,IAAID,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACP,GAAG,CAACO,eAAe,IAAI,KAAIE,kCAAe,EAAC,CAAC;EAC1D;;EAEA;AACF;AACA;EACE,IAAID,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACR,GAAG,CAACQ,IAAI;EACtB;;EAEA;AACF;AACA;EACE,IAAIE,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACV,GAAG,CAACU,WAAW;EAC7B;;EAEA;AACF;AACA;EACE,IAAIC,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACX,GAAG,CAACW,WAAW,IAAI,IAAI,CAACT,IAAI,CAACU,QAAQ;EACnD;
|
|
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":";;;;;;AAGA,SAAAA,iBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,gBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,QAAQ,CAAC;EACpBC,WAAWA;EACT;AACJ;AACA;EACaC,GAAuB,EAEvBC,KAAoB;EAC7B;AACJ;AACA;EACaC,IAAoB;EAC7B;AACJ;AACA;EACaC,SAAiB,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EACvC;IAAA,KAXSL,GAAuB,GAAvBA,GAAuB;IAAA,KAEvBC,KAAoB,GAApBA,KAAoB;IAAA,KAIpBC,IAAoB,GAApBA,IAAoB;IAAA,KAIpBC,SAAiB,GAAjBA,SAAiB;EACzB;EAEH,IAAIG,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACC,eAAe,CAACC,IAAI;EAClC;EAEA,IAAID,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACP,GAAG,CAACO,eAAe,IAAI,KAAIE,kCAAe,EAAC,CAAC;EAC1D;;EAEA;AACF;AACA;EACE,IAAID,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACR,GAAG,CAACQ,IAAI;EACtB;;EAEA;AACF;AACA;EACE,IAAIE,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACV,GAAG,CAACU,WAAW;EAC7B;;EAEA;AACF;AACA;EACE,IAAIC,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACX,GAAG,CAACW,WAAW,IAAI,IAAI,CAACT,IAAI,CAACU,QAAQ;EACnD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,WAAWA,CAAA,EAAuB;IACpC,IAAI,IAAI,CAACb,GAAG,CAACc,OAAO,EAAE,OAAO,IAAI,CAACd,GAAG,CAACc,OAAO;;IAE7C;IACA,MAAMC,UAAU,GAAG,IAAI,CAACd,KAAK,CAACe,KAAK,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrE;IACA,MAAMC,SAAS,GAAGL,UAAU,CAAC,CAAC,CAAC;IAC/B;IACA,IAAI,CAACK,SAAS,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAOC,SAAS;IAC9C,MAAM,CAACC,kBAAkB,CAAC,GAAGH,SAAS,CAACI,KAAK,CAAC,GAAG,CAAC;IACjD,MAAMC,WAAW,GAAGV,UAAU,CAACW,KAAK,CAAER,CAAC,IAAKA,CAAC,CAACS,UAAU,CAAE,GAAEJ,kBAAmB,GAAE,CAAC,CAAC;IACnF,IAAI,CAACE,WAAW,EAAE,OAAOH,SAAS;IAClC,OAAOC,kBAAkB;EAC3B;EAEAK,OAAOA,CAAA,EAAY;IACjB,OAAO,IAAI,CAAC3B,KAAK,CAAC2B,OAAO,CAAC,CAAC;EAC7B;;EAEA;AACF;AACA;EACEC,GAAGA,CAAA,EAAG,CAAC;EAEPC,QAAQA,CAAA,EAAmB;IACzB,OAAO;MACLtB,IAAI,EAAE,IAAI,CAACA,IAAI;MACfE,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BC,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BL,OAAO,EAAE,IAAI,CAACC,eAAe,CAACC,IAAI;MAClCN,IAAI,EAAE;QACJ6B,EAAE,EAAE,IAAI,CAAC7B,IAAI,CAACU,QAAQ;QACtBJ,IAAI,EAAE,IAAI,CAACN,IAAI,CAACM;MAClB,CAAC;MACDP,KAAK,EAAE,IAAI,CAACA;IACd,CAAC;EACH;EAEA,OAAO+B,kBAAkBA,CAACC,MAAsB,EAAY;IAC1D,MAAMC,WAA+B,GAAG;MACtC1B,IAAI,EAAEyB,MAAM,CAACzB,IAAI;MACjBG,WAAW,EAAEsB,MAAM,CAACtB,WAAW;MAC/BD,WAAW,EAAEuB,MAAM,CAACvB;IACtB,CAAC;IAED,MAAMR,IAAoB,GAAG;MAC3BU,QAAQ,EAAEqB,MAAM,CAAC/B,IAAI,CAAC6B,EAAE;MACxBvB,IAAI,EAAEyB,MAAM,CAAC/B,IAAI,CAACM;IACpB,CAAC;IAED,OAAO,IAAIV,QAAQ,CAACoC,WAAW,EAAED,MAAM,CAAChC,KAAK,EAAEC,IAAI,CAAC;EACtD;AACF;AAACiC,OAAA,CAAArC,QAAA,GAAAA,QAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@1.0.93/dist/builder.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@1.0.93/dist/builder.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/builder",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.93",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/pipelines/builder",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.pipelines",
|
|
8
8
|
"name": "builder",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.93"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "2.4.2",
|
|
@@ -29,21 +29,21 @@
|
|
|
29
29
|
"@teambit/harmony": "0.4.6",
|
|
30
30
|
"@teambit/bit-error": "0.0.404",
|
|
31
31
|
"@teambit/component-id": "1.2.0",
|
|
32
|
-
"@teambit/component": "1.0.
|
|
33
|
-
"@teambit/envs": "1.0.
|
|
32
|
+
"@teambit/component": "1.0.93",
|
|
33
|
+
"@teambit/envs": "1.0.93",
|
|
34
34
|
"@teambit/logger": "0.0.925",
|
|
35
35
|
"@teambit/toolbox.string.capitalize": "0.0.494",
|
|
36
|
-
"@teambit/tester": "1.0.
|
|
37
|
-
"@teambit/isolator": "1.0.
|
|
36
|
+
"@teambit/tester": "1.0.93",
|
|
37
|
+
"@teambit/isolator": "1.0.93",
|
|
38
38
|
"@teambit/cli": "0.0.832",
|
|
39
|
-
"@teambit/workspace": "1.0.
|
|
40
|
-
"@teambit/aspect-loader": "1.0.
|
|
41
|
-
"@teambit/aspect": "1.0.
|
|
42
|
-
"@teambit/generator": "1.0.
|
|
39
|
+
"@teambit/workspace": "1.0.93",
|
|
40
|
+
"@teambit/aspect-loader": "1.0.93",
|
|
41
|
+
"@teambit/aspect": "1.0.93",
|
|
42
|
+
"@teambit/generator": "1.0.94",
|
|
43
43
|
"@teambit/global-config": "0.0.834",
|
|
44
|
-
"@teambit/graphql": "1.0.
|
|
45
|
-
"@teambit/scope": "1.0.
|
|
46
|
-
"@teambit/ui": "1.0.
|
|
44
|
+
"@teambit/graphql": "1.0.93",
|
|
45
|
+
"@teambit/scope": "1.0.93",
|
|
46
|
+
"@teambit/ui": "1.0.93",
|
|
47
47
|
"@teambit/express": "0.0.931"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|