@teambit/workspace-config-files 1.0.651 → 1.0.652
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/dist/dedup-paths.d.ts +1 -1
- package/dist/dedup-paths.js +10 -5
- package/dist/dedup-paths.js.map +1 -1
- package/dist/{preview-1752574266256.js → preview-1752588566113.js} +1 -1
- package/dist/workspace-config-files.main.runtime.d.ts +21 -0
- package/dist/workspace-config-files.main.runtime.js +27 -3
- package/dist/workspace-config-files.main.runtime.js.map +1 -1
- package/dist/writers/extending-config-files.d.ts +1 -1
- package/dist/writers/extending-config-files.js +2 -2
- package/dist/writers/extending-config-files.js.map +1 -1
- package/package.json +6 -6
- package/writers/extending-config-files.ts +2 -1
package/dist/dedup-paths.d.ts
CHANGED
|
@@ -26,4 +26,4 @@ export declare function buildCompPathExtendingHashMap(extendingConfigFilesMap: E
|
|
|
26
26
|
* if in a shared-dir, some components using env1 and some env2, it finds the env that has the max number of
|
|
27
27
|
* components, this env will be optimized. other components, will have the files written inside their dirs.
|
|
28
28
|
*/
|
|
29
|
-
export declare function dedupePaths(extendingConfigFilesMap: ExtendingConfigFilesMap, envCompsDirsMap: EnvCompsDirsMap): DedupedPaths;
|
|
29
|
+
export declare function dedupePaths(extendingConfigFilesMap: ExtendingConfigFilesMap, envCompsDirsMap: EnvCompsDirsMap, componentsRootDir: string | undefined): DedupedPaths;
|
package/dist/dedup-paths.js
CHANGED
|
@@ -19,10 +19,15 @@ function _path() {
|
|
|
19
19
|
};
|
|
20
20
|
return data;
|
|
21
21
|
}
|
|
22
|
-
function getAllPossibleDirsFromPaths(paths) {
|
|
22
|
+
function getAllPossibleDirsFromPaths(paths, componentsRootDir) {
|
|
23
23
|
const dirs = paths.map(p => getAllParentsDirOfPath(p)).flat();
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
const uniqueDirs = (0, _lodash().uniq)(dirs);
|
|
25
|
+
if (!componentsRootDir) {
|
|
26
|
+
uniqueDirs.push('.'); // add the root dir
|
|
27
|
+
return uniqueDirs;
|
|
28
|
+
}
|
|
29
|
+
const filteredDirs = uniqueDirs.filter(d => d.startsWith(componentsRootDir));
|
|
30
|
+
return (0, _lodash().uniq)(filteredDirs);
|
|
26
31
|
}
|
|
27
32
|
function getAllParentsDirOfPath(p) {
|
|
28
33
|
const all = [];
|
|
@@ -69,11 +74,11 @@ function buildCompPathExtendingHashMap(extendingConfigFilesMap, envCompsDirsMap)
|
|
|
69
74
|
* if in a shared-dir, some components using env1 and some env2, it finds the env that has the max number of
|
|
70
75
|
* components, this env will be optimized. other components, will have the files written inside their dirs.
|
|
71
76
|
*/
|
|
72
|
-
function dedupePaths(extendingConfigFilesMap, envCompsDirsMap) {
|
|
77
|
+
function dedupePaths(extendingConfigFilesMap, envCompsDirsMap, componentsRootDir) {
|
|
73
78
|
const rootDir = '.';
|
|
74
79
|
const compPathExtendingHashMap = buildCompPathExtendingHashMap(extendingConfigFilesMap, envCompsDirsMap);
|
|
75
80
|
const allPaths = Object.keys(compPathExtendingHashMap);
|
|
76
|
-
const allPossibleDirs = getAllPossibleDirsFromPaths(allPaths);
|
|
81
|
+
const allPossibleDirs = getAllPossibleDirsFromPaths(allPaths, componentsRootDir);
|
|
77
82
|
const allPathsPerFileHash = {}; // null when parent-dir has same amount of comps per env.
|
|
78
83
|
|
|
79
84
|
const calculateBestFileForDir = dir => {
|
package/dist/dedup-paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_path","getAllPossibleDirsFromPaths","paths","dirs","map","p","getAllParentsDirOfPath","flat","
|
|
1
|
+
{"version":3,"names":["_lodash","data","require","_path","getAllPossibleDirsFromPaths","paths","componentsRootDir","dirs","map","p","getAllParentsDirOfPath","flat","uniqueDirs","uniq","push","filteredDirs","filter","d","startsWith","all","current","dirname","buildCompPathExtendingHashMap","extendingConfigFilesMap","envCompsDirsMap","Object","entries","reduce","acc","hash","envIds","forEach","envId","envCompDirs","compPath","dedupePaths","rootDir","compPathExtendingHashMap","allPaths","keys","allPossibleDirs","allPathsPerFileHash","calculateBestFileForDir","dir","allPathsShareSameDir","countPerFileHash","fileHash","max","Math","values","fileHashWithMax","length","Error","dirPath","dedupedPathsPerFileHash","fileHashPerDedupedPaths","invertBy","dedupedPaths"],"sources":["dedup-paths.ts"],"sourcesContent":["import { invertBy, uniq } from 'lodash';\nimport { dirname } from 'path';\nimport { PathLinuxRelative } from '@teambit/toolbox.path.path';\nimport { CompPathExtendingHashMap, EnvCompsDirsMap } from './workspace-config-files.main.runtime';\nimport { ExtendingConfigFilesMap } from './writers';\n\nexport type DedupedPaths = Array<{\n fileHash: string;\n paths: string[];\n}>;\n\nfunction getAllPossibleDirsFromPaths(\n paths: PathLinuxRelative[],\n componentsRootDir?: PathLinuxRelative\n): PathLinuxRelative[] {\n const dirs = paths.map((p) => getAllParentsDirOfPath(p)).flat();\n const uniqueDirs = uniq(dirs);\n if (!componentsRootDir) {\n uniqueDirs.push('.'); // add the root dir\n return uniqueDirs;\n }\n const filteredDirs = uniqueDirs.filter((d) => d.startsWith(componentsRootDir));\n return uniq(filteredDirs);\n}\n\nfunction getAllParentsDirOfPath(p: PathLinuxRelative): PathLinuxRelative[] {\n const all: string[] = [];\n let current = p;\n while (current !== '.') {\n all.push(current);\n current = dirname(current);\n }\n return all;\n}\n\nexport function buildCompPathExtendingHashMap(\n extendingConfigFilesMap: ExtendingConfigFilesMap,\n envCompsDirsMap: EnvCompsDirsMap\n): CompPathExtendingHashMap {\n const map = Object.entries(extendingConfigFilesMap).reduce((acc, [hash, { envIds }]) => {\n envIds.forEach((envId) => {\n const envCompDirs = envCompsDirsMap[envId];\n envCompDirs.paths.forEach((compPath) => {\n acc[compPath] = hash;\n });\n });\n return acc;\n }, {});\n return map;\n}\n\n/**\n * easier to understand by an example:\n * input:\n * [\n * { fileHash: hash1, paths: [ui/button, ui/form] },\n * { fileHash: hash2, paths: [p/a1, p/a2] },\n * { fileHash: hash3, paths: [p/n1] },\n * ]\n *\n * output:\n * [\n * { fileHash: hash1, paths: [ui] },\n * { fileHash: hash2, paths: [p] },\n * { fileHash: hash3, paths: [p/n1] },\n * ]\n *\n * the goal is to minimize the amount of files to write per env if possible.\n * when multiple components of the same env share a root-dir, then, it's enough to write a file in that shared dir.\n * if in a shared-dir, some components using env1 and some env2, it finds the env that has the max number of\n * components, this env will be optimized. other components, will have the files written inside their dirs.\n */\nexport function dedupePaths(\n extendingConfigFilesMap: ExtendingConfigFilesMap,\n envCompsDirsMap: EnvCompsDirsMap,\n componentsRootDir: string | undefined\n): DedupedPaths {\n const rootDir = '.';\n\n const compPathExtendingHashMap = buildCompPathExtendingHashMap(extendingConfigFilesMap, envCompsDirsMap);\n const allPaths = Object.keys(compPathExtendingHashMap);\n const allPossibleDirs = getAllPossibleDirsFromPaths(allPaths, componentsRootDir);\n const allPathsPerFileHash: { [path: string]: string | null } = {}; // null when parent-dir has same amount of comps per env.\n\n const calculateBestFileForDir = (dir: string) => {\n if (compPathExtendingHashMap[dir]) {\n // it's the component dir, so it's the file that should be written.\n allPathsPerFileHash[dir] = compPathExtendingHashMap[dir];\n return;\n }\n const allPathsShareSameDir = dir === rootDir ? allPaths : allPaths.filter((p) => p.startsWith(`${dir}/`));\n const countPerFileHash: { [fileHash: string]: number } = {};\n allPathsShareSameDir.forEach((p) => {\n const fileHash = compPathExtendingHashMap[p];\n if (countPerFileHash[fileHash]) countPerFileHash[fileHash] += 1;\n else countPerFileHash[fileHash] = 1;\n });\n const max = Math.max(...Object.values(countPerFileHash));\n const fileHashWithMax = Object.keys(countPerFileHash).filter((fileHash) => countPerFileHash[fileHash] === max);\n if (!fileHashWithMax.length) throw new Error(`must be at least one fileHash related to path \"${dir}\"`);\n if (fileHashWithMax.length > 1) allPathsPerFileHash[dir] = null;\n else allPathsPerFileHash[dir] = fileHashWithMax[0];\n };\n\n allPossibleDirs.forEach((dirPath) => {\n calculateBestFileForDir(dirPath);\n });\n\n // this is the actual deduping. if found a shorter path with the same env, then no need for this path.\n // in other words, return only the paths that their parent is null or has a different env.\n const dedupedPathsPerFileHash = Object.keys(allPathsPerFileHash).reduce((acc, current) => {\n if (allPathsPerFileHash[current] && allPathsPerFileHash[dirname(current)] !== allPathsPerFileHash[current]) {\n acc[current] = allPathsPerFileHash[current];\n }\n\n return acc;\n }, {});\n // rootDir parent is always rootDir, so leave it as is.\n if (allPathsPerFileHash[rootDir]) dedupedPathsPerFileHash[rootDir] = allPathsPerFileHash[rootDir];\n\n const fileHashPerDedupedPaths = invertBy(dedupedPathsPerFileHash);\n\n const dedupedPaths = Object.keys(fileHashPerDedupedPaths).map((fileHash) => ({\n fileHash,\n paths: fileHashPerDedupedPaths[fileHash],\n }));\n return dedupedPaths;\n}\n"],"mappings":";;;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,MAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,KAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAUA,SAASG,2BAA2BA,CAClCC,KAA0B,EAC1BC,iBAAqC,EAChB;EACrB,MAAMC,IAAI,GAAGF,KAAK,CAACG,GAAG,CAAEC,CAAC,IAAKC,sBAAsB,CAACD,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,CAAC;EAC/D,MAAMC,UAAU,GAAG,IAAAC,cAAI,EAACN,IAAI,CAAC;EAC7B,IAAI,CAACD,iBAAiB,EAAE;IACtBM,UAAU,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,OAAOF,UAAU;EACnB;EACA,MAAMG,YAAY,GAAGH,UAAU,CAACI,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,UAAU,CAACZ,iBAAiB,CAAC,CAAC;EAC9E,OAAO,IAAAO,cAAI,EAACE,YAAY,CAAC;AAC3B;AAEA,SAASL,sBAAsBA,CAACD,CAAoB,EAAuB;EACzE,MAAMU,GAAa,GAAG,EAAE;EACxB,IAAIC,OAAO,GAAGX,CAAC;EACf,OAAOW,OAAO,KAAK,GAAG,EAAE;IACtBD,GAAG,CAACL,IAAI,CAACM,OAAO,CAAC;IACjBA,OAAO,GAAG,IAAAC,eAAO,EAACD,OAAO,CAAC;EAC5B;EACA,OAAOD,GAAG;AACZ;AAEO,SAASG,6BAA6BA,CAC3CC,uBAAgD,EAChDC,eAAgC,EACN;EAC1B,MAAMhB,GAAG,GAAGiB,MAAM,CAACC,OAAO,CAACH,uBAAuB,CAAC,CAACI,MAAM,CAAC,CAACC,GAAG,EAAE,CAACC,IAAI,EAAE;IAAEC;EAAO,CAAC,CAAC,KAAK;IACtFA,MAAM,CAACC,OAAO,CAAEC,KAAK,IAAK;MACxB,MAAMC,WAAW,GAAGT,eAAe,CAACQ,KAAK,CAAC;MAC1CC,WAAW,CAAC5B,KAAK,CAAC0B,OAAO,CAAEG,QAAQ,IAAK;QACtCN,GAAG,CAACM,QAAQ,CAAC,GAAGL,IAAI;MACtB,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAOD,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EACN,OAAOpB,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS2B,WAAWA,CACzBZ,uBAAgD,EAChDC,eAAgC,EAChClB,iBAAqC,EACvB;EACd,MAAM8B,OAAO,GAAG,GAAG;EAEnB,MAAMC,wBAAwB,GAAGf,6BAA6B,CAACC,uBAAuB,EAAEC,eAAe,CAAC;EACxG,MAAMc,QAAQ,GAAGb,MAAM,CAACc,IAAI,CAACF,wBAAwB,CAAC;EACtD,MAAMG,eAAe,GAAGpC,2BAA2B,CAACkC,QAAQ,EAAEhC,iBAAiB,CAAC;EAChF,MAAMmC,mBAAsD,GAAG,CAAC,CAAC,CAAC,CAAC;;EAEnE,MAAMC,uBAAuB,GAAIC,GAAW,IAAK;IAC/C,IAAIN,wBAAwB,CAACM,GAAG,CAAC,EAAE;MACjC;MACAF,mBAAmB,CAACE,GAAG,CAAC,GAAGN,wBAAwB,CAACM,GAAG,CAAC;MACxD;IACF;IACA,MAAMC,oBAAoB,GAAGD,GAAG,KAAKP,OAAO,GAAGE,QAAQ,GAAGA,QAAQ,CAACtB,MAAM,CAAEP,CAAC,IAAKA,CAAC,CAACS,UAAU,CAAC,GAAGyB,GAAG,GAAG,CAAC,CAAC;IACzG,MAAME,gBAAgD,GAAG,CAAC,CAAC;IAC3DD,oBAAoB,CAACb,OAAO,CAAEtB,CAAC,IAAK;MAClC,MAAMqC,QAAQ,GAAGT,wBAAwB,CAAC5B,CAAC,CAAC;MAC5C,IAAIoC,gBAAgB,CAACC,QAAQ,CAAC,EAAED,gBAAgB,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAC3DD,gBAAgB,CAACC,QAAQ,CAAC,GAAG,CAAC;IACrC,CAAC,CAAC;IACF,MAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,GAAGtB,MAAM,CAACwB,MAAM,CAACJ,gBAAgB,CAAC,CAAC;IACxD,MAAMK,eAAe,GAAGzB,MAAM,CAACc,IAAI,CAACM,gBAAgB,CAAC,CAAC7B,MAAM,CAAE8B,QAAQ,IAAKD,gBAAgB,CAACC,QAAQ,CAAC,KAAKC,GAAG,CAAC;IAC9G,IAAI,CAACG,eAAe,CAACC,MAAM,EAAE,MAAM,IAAIC,KAAK,CAAC,kDAAkDT,GAAG,GAAG,CAAC;IACtG,IAAIO,eAAe,CAACC,MAAM,GAAG,CAAC,EAAEV,mBAAmB,CAACE,GAAG,CAAC,GAAG,IAAI,CAAC,KAC3DF,mBAAmB,CAACE,GAAG,CAAC,GAAGO,eAAe,CAAC,CAAC,CAAC;EACpD,CAAC;EAEDV,eAAe,CAACT,OAAO,CAAEsB,OAAO,IAAK;IACnCX,uBAAuB,CAACW,OAAO,CAAC;EAClC,CAAC,CAAC;;EAEF;EACA;EACA,MAAMC,uBAAuB,GAAG7B,MAAM,CAACc,IAAI,CAACE,mBAAmB,CAAC,CAACd,MAAM,CAAC,CAACC,GAAG,EAAER,OAAO,KAAK;IACxF,IAAIqB,mBAAmB,CAACrB,OAAO,CAAC,IAAIqB,mBAAmB,CAAC,IAAApB,eAAO,EAACD,OAAO,CAAC,CAAC,KAAKqB,mBAAmB,CAACrB,OAAO,CAAC,EAAE;MAC1GQ,GAAG,CAACR,OAAO,CAAC,GAAGqB,mBAAmB,CAACrB,OAAO,CAAC;IAC7C;IAEA,OAAOQ,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EACN;EACA,IAAIa,mBAAmB,CAACL,OAAO,CAAC,EAAEkB,uBAAuB,CAAClB,OAAO,CAAC,GAAGK,mBAAmB,CAACL,OAAO,CAAC;EAEjG,MAAMmB,uBAAuB,GAAG,IAAAC,kBAAQ,EAACF,uBAAuB,CAAC;EAEjE,MAAMG,YAAY,GAAGhC,MAAM,CAACc,IAAI,CAACgB,uBAAuB,CAAC,CAAC/C,GAAG,CAAEsC,QAAQ,KAAM;IAC3EA,QAAQ;IACRzC,KAAK,EAAEkD,uBAAuB,CAACT,QAAQ;EACzC,CAAC,CAAC,CAAC;EACH,OAAOW,YAAY;AACrB","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
;
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace-config-files@1.0.
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace-config-files@1.0.652/dist/workspace-config-files.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -10,7 +10,25 @@ import { EnvsWrittenExtendingConfigFiles, EnvsWrittenRealConfigFiles } from './w
|
|
|
10
10
|
* Configs that can be configured in the workspace.jsonc file
|
|
11
11
|
*/
|
|
12
12
|
export type WorkspaceConfigFilesAspectConfig = {
|
|
13
|
+
/**
|
|
14
|
+
* The root directory for real configuration files
|
|
15
|
+
* This is usually under node_modules
|
|
16
|
+
*/
|
|
13
17
|
configsRootDir?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The root directory for component files
|
|
20
|
+
* We will hoist config files only up to this directory
|
|
21
|
+
*/
|
|
22
|
+
componentsRootDir?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to use the default directory as components root dir for configuration files
|
|
25
|
+
* This will take the config from:
|
|
26
|
+
* "teambit.workspace/workspace": {
|
|
27
|
+
* "componentsRootDir": "bit-components/{scope}/{name}"
|
|
28
|
+
* }
|
|
29
|
+
* it will take the constant part from it, up until the first {
|
|
30
|
+
*/
|
|
31
|
+
useDefaultDirectory?: boolean;
|
|
14
32
|
enableWorkspaceConfigWrite?: boolean;
|
|
15
33
|
};
|
|
16
34
|
export type EnvConfigWriter = {
|
|
@@ -114,6 +132,9 @@ export declare class WorkspaceConfigFilesMain {
|
|
|
114
132
|
private write;
|
|
115
133
|
private handleOneIdWriter;
|
|
116
134
|
private getConfigsRootDir;
|
|
135
|
+
private getComponentsRootDirFromComponentsRootDir;
|
|
136
|
+
private getComponentsRootDirFromDefaultDir;
|
|
137
|
+
private getComponentsRootDir;
|
|
117
138
|
private getCacheDir;
|
|
118
139
|
private getExecContext;
|
|
119
140
|
private getEnvComponentsDirsMap;
|
|
@@ -276,13 +276,14 @@ class WorkspaceConfigFilesMain {
|
|
|
276
276
|
async write(envsExecutionContext, opts) {
|
|
277
277
|
const envCompDirsMap = this.getEnvComponentsDirsMap(envsExecutionContext);
|
|
278
278
|
const configsRootDir = this.getConfigsRootDir();
|
|
279
|
+
const componentsRootDir = this.getComponentsRootDir();
|
|
279
280
|
const configWriters = await this.listConfigWriters();
|
|
280
281
|
const writerIdsToEnvEntriesMap = this.groupByWriterId(configWriters);
|
|
281
282
|
const filteredWriterIdsToEnvEntriesMap = opts.writers ? (0, _lodash().pick)(writerIdsToEnvEntriesMap, opts.writers) : writerIdsToEnvEntriesMap;
|
|
282
283
|
let totalRealConfigFiles = 0;
|
|
283
284
|
let totalExtendingConfigFiles = 0;
|
|
284
285
|
const results = await (0, _pMapSeries().default)(Object.entries(filteredWriterIdsToEnvEntriesMap), async ([writerId, envEntries]) => {
|
|
285
|
-
const oneResult = await this.handleOneIdWriter(writerId, envEntries, envCompDirsMap, configsRootDir, opts);
|
|
286
|
+
const oneResult = await this.handleOneIdWriter(writerId, envEntries, envCompDirsMap, configsRootDir, componentsRootDir, opts);
|
|
286
287
|
totalRealConfigFiles += oneResult.totalRealConfigFiles;
|
|
287
288
|
totalExtendingConfigFiles += oneResult.totalExtendingConfigFiles;
|
|
288
289
|
return oneResult;
|
|
@@ -295,9 +296,9 @@ class WorkspaceConfigFilesMain {
|
|
|
295
296
|
totalExtendingConfigFiles
|
|
296
297
|
};
|
|
297
298
|
}
|
|
298
|
-
async handleOneIdWriter(writerId, envEntries, envCompsDirsMap, configsRootDir, opts) {
|
|
299
|
+
async handleOneIdWriter(writerId, envEntries, envCompsDirsMap, configsRootDir, componentsRootDir, opts) {
|
|
299
300
|
const writtenRealConfigFilesMap = await (0, _writers().handleRealConfigFiles)(envEntries, envCompsDirsMap, configsRootDir, this.workspace.path, opts);
|
|
300
|
-
const writtenExtendingConfigFiles = await (0, _writers().handleExtendingConfigFiles)(envEntries, envCompsDirsMap, writtenRealConfigFilesMap, configsRootDir, this.workspace.path, opts);
|
|
301
|
+
const writtenExtendingConfigFiles = await (0, _writers().handleExtendingConfigFiles)(envEntries, envCompsDirsMap, writtenRealConfigFilesMap, configsRootDir, componentsRootDir, this.workspace.path, opts);
|
|
301
302
|
const writtenRealConfigFiles = Object.values(writtenRealConfigFilesMap);
|
|
302
303
|
const totalRealConfigFiles = writtenRealConfigFiles.length;
|
|
303
304
|
const totalExtendingConfigFiles = writtenExtendingConfigFiles.reduce((acc, curr) => acc + curr.extendingConfigFile.filePaths.length, 0);
|
|
@@ -315,6 +316,29 @@ class WorkspaceConfigFilesMain {
|
|
|
315
316
|
const userConfiguredDir = this.config.configsRootDir;
|
|
316
317
|
return userConfiguredDir ? (0, _path().join)(this.workspace.path, userConfiguredDir) : this.getCacheDir(this.workspace.path);
|
|
317
318
|
}
|
|
319
|
+
getComponentsRootDirFromComponentsRootDir() {
|
|
320
|
+
const componentsRootDir = this.config.componentsRootDir;
|
|
321
|
+
if (!componentsRootDir) return undefined;
|
|
322
|
+
// Remove leading './' or '/' and trailing slash
|
|
323
|
+
const normalized = (0, _path().normalize)(componentsRootDir).replace(/^\.?\//, '').replace(/\/$/, '');
|
|
324
|
+
return normalized;
|
|
325
|
+
}
|
|
326
|
+
getComponentsRootDirFromDefaultDir() {
|
|
327
|
+
if (!this.config.useDefaultDirectory) return undefined;
|
|
328
|
+
const defaultDir = this.workspace.defaultDirectory;
|
|
329
|
+
if (!defaultDir) return undefined;
|
|
330
|
+
// get path until first dynamic segment (segment with {})
|
|
331
|
+
const segments = defaultDir.split('/');
|
|
332
|
+
const dynamicSegmentIndex = segments.findIndex(segment => segment.startsWith('{'));
|
|
333
|
+
if (dynamicSegmentIndex === -1) return defaultDir;
|
|
334
|
+
return segments.slice(0, dynamicSegmentIndex).join('/');
|
|
335
|
+
}
|
|
336
|
+
getComponentsRootDir() {
|
|
337
|
+
const fromComponentsRootDir = this.getComponentsRootDirFromComponentsRootDir();
|
|
338
|
+
if (fromComponentsRootDir) return fromComponentsRootDir;
|
|
339
|
+
const fromDefaultDir = this.getComponentsRootDirFromDefaultDir();
|
|
340
|
+
if (fromDefaultDir) return fromDefaultDir;
|
|
341
|
+
}
|
|
318
342
|
getCacheDir(rootDir) {
|
|
319
343
|
return (0, _path().join)(rootDir, 'node_modules', '.cache');
|
|
320
344
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_globby","_chalk","_legacyCli","_pMapSeries","_legacy","_yesno","_lodash","_cli","_workspace","_envs","_logger","_workspaceConfigFiles","_wsConfig","_writeFailed","_workspaceConfigFiles2","_writers","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","WorkspaceConfigFilesMain","constructor","workspace","envs","logger","config","writeConfigFiles","options","ConsumerNotFound","defaultOpts","clean","dedupe","silent","dryRun","throw","optionsWithDefaults","defaults","execContext","getExecContext","pathsToClean","writeErr","writeResults","calcPathsToClean","writers","write","allWrittenFiles","writersResult","flatMap","writerResult","extendingConfigFiles","extendingConfigFile","filePaths","filter","pathToClean","includes","join","path","deleteFiles","err","info","WriteConfigFilesFailed","cleanResults","wsDir","writeConfigFilesIfEnabled","shouldWrite","isWorkspaceConfigWriteEnabled","undefined","cleanConfigFiles","enableWorkspaceConfigWrite","listConfigWriters","execContexts","result","map","executionContext","configWriters","getConfigWriters","envId","envRuntime","id","groupByWriterId","writerList","reduce","acc","envConfigWriter","forEach","configWriter","push","envsExecutionContext","opts","envCompDirsMap","getEnvComponentsDirsMap","configsRootDir","getConfigsRootDir","writerIdsToEnvEntriesMap","filteredWriterIdsToEnvEntriesMap","pick","totalRealConfigFiles","totalExtendingConfigFiles","results","pMapSeries","entries","writerId","envEntries","oneResult","handleOneIdWriter","totalWrittenFiles","envCompsDirsMap","writtenRealConfigFilesMap","handleRealConfigFiles","writtenExtendingConfigFiles","handleExtendingConfigFiles","writtenRealConfigFiles","values","length","curr","realConfigFiles","userConfiguredDir","getCacheDir","rootDir","components","list","runtime","createEnvironment","getEnvExecutionContext","envExecution","toString","env","paths","c","componentDir","relative","envExecutionContext","workspaceConfig","isFunction","addToEnvsNotImplementing","getFlatConfigWriters","promptForCleaning","filteredConfigWriters","uniq","patterns","currPaths","globby","sync","cwd","dot","onlyFiles","ignore","filteredPaths","fullPath","isBitGenerated","flat","envsNotImplementing","getEnvsNotImplementing","keys","clearStatusLine","ok","yesno","question","chalk","underline","bold","PromptCanceled","Promise","all","f","fs","remove","provider","cli","loggerAspect","createLogger","WorkspaceConfigFilesAspect","registerService","WorkspaceConfigFilesService","workspaceConfigFilesMain","wsConfigCmd","WsConfigCmd","commands","WsConfigWriteCmd","WsConfigCleanCmd","WsConfigListCmd","register","exports","CLIAspect","WorkspaceAspect","EnvsAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["workspace-config-files.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { join } from 'path';\nimport globby from 'globby';\nimport chalk from 'chalk';\nimport { PromptCanceled } from '@teambit/legacy.cli.prompts';\nimport pMapSeries from 'p-map-series';\nimport { ConsumerNotFound } from '@teambit/legacy.consumer';\nimport yesno from 'yesno';\nimport { defaults, flatMap, isFunction, pick, uniq } from 'lodash';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { Workspace } from '@teambit/workspace';\nimport { Environment, EnvsAspect, ExecutionContext } from '@teambit/envs';\nimport type { EnvsMain } from '@teambit/envs';\nimport { Logger, LoggerAspect } from '@teambit/logger';\nimport type { LoggerMain } from '@teambit/logger';\nimport { WorkspaceConfigFilesAspect } from './workspace-config-files.aspect';\nimport { ConfigWriterEntry } from './config-writer-entry';\nimport { WsConfigCleanCmd, WsConfigCmd, WsConfigListCmd, WsConfigWriteCmd } from './ws-config.cmd';\nimport WriteConfigFilesFailed from './exceptions/write-failed';\nimport { WorkspaceConfigFilesService } from './workspace-config-files.service';\nimport {\n handleRealConfigFiles,\n handleExtendingConfigFiles,\n EnvsWrittenExtendingConfigFiles,\n EnvsWrittenRealConfigFiles,\n} from './writers';\n\n/**\n * Configs that can be configured in the workspace.jsonc file\n */\nexport type WorkspaceConfigFilesAspectConfig = {\n configsRootDir?: string;\n enableWorkspaceConfigWrite?: boolean;\n};\n\nexport type EnvConfigWriter = {\n envId: string;\n executionContext: ExecutionContext;\n configWriters: ConfigWriterEntry[];\n};\n\nexport type EnvConfigWriterEntry = {\n envId: string;\n configWriter: ConfigWriterEntry;\n executionContext: ExecutionContext;\n};\n\ntype WriterIdsToEnvEntriesMap = {\n [writerId: string]: EnvConfigWriterEntry[];\n};\n\nexport type EnvConfigWritersList = Array<EnvConfigWriter>;\n\nexport type CleanConfigFilesOptions = {\n silent?: boolean; // no prompt\n dryRun?: boolean;\n writers?: string[];\n};\n\nexport type WriteConfigFilesOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n throw?: boolean;\n writers?: string[];\n};\n\nexport type CompPathExtendingHashMap = { [compPath: string]: string };\n\nexport type EnvMapValue = { env: Environment; id: string[]; paths: string[] };\nexport type EnvCompsDirsMap = { [envId: string]: EnvMapValue };\n\nexport type OneConfigWriterIdResult = {\n writerId: string;\n totalWrittenFiles: number;\n realConfigFiles: EnvsWrittenRealConfigFiles;\n totalRealConfigFiles: number;\n extendingConfigFiles: EnvsWrittenExtendingConfigFiles;\n totalExtendingConfigFiles: number;\n};\n\nexport type WriteResults = {\n writersResult: OneConfigWriterIdResult[];\n totalWrittenFiles: number;\n totalRealConfigFiles: number;\n totalExtendingConfigFiles: number;\n};\n\nexport type WriteConfigFilesResult = {\n cleanResults?: string[];\n writeResults: WriteResults;\n wsDir: string;\n err?: Error;\n};\n\nexport class WorkspaceConfigFilesMain {\n private envsNotImplementing = {};\n\n constructor(\n private workspace: Workspace,\n private envs: EnvsMain,\n private logger: Logger,\n private config: WorkspaceConfigFilesAspectConfig\n ) {}\n\n /**\n * It writes the configuration files for the workspace\n * for example: tsconfig, eslint config and prettier config files.\n * @param {WriteConfigFilesOptions} options - WriteConfigFilesOptions = {}\n * @returns An object with the following properties:\n * - writeResults: An object with the following properties:\n * - aspectsWritersResults: An array of objects with the following properties:\n * - aspect: The aspect that was written\n * - totalWrittenFiles: The number of files that were written\n * - totalWrittenFiles: The total number of files that were written\n * - cleanResults: array of deleted paths\n */\n async writeConfigFiles(options: WriteConfigFilesOptions = {}): Promise<WriteConfigFilesResult> {\n if (!this.workspace) {\n throw new ConsumerNotFound();\n }\n const defaultOpts: WriteConfigFilesOptions = {\n clean: false,\n dedupe: false,\n silent: false,\n dryRun: false,\n throw: true,\n };\n const optionsWithDefaults = defaults(options, defaultOpts);\n const execContext = await this.getExecContext();\n\n let pathsToClean: string[] | undefined = [];\n let writeErr;\n let writeResults;\n try {\n if (optionsWithDefaults.clean) {\n pathsToClean = await this.calcPathsToClean({ writers: optionsWithDefaults.writers });\n }\n\n writeResults = await this.write(execContext, optionsWithDefaults);\n const allWrittenFiles = writeResults.writersResult.flatMap((writerResult) => {\n return writerResult.extendingConfigFiles.flatMap((extendingConfigFile) => {\n return extendingConfigFile.extendingConfigFile.filePaths;\n });\n });\n // Avoid delete and re-create files that were written by other config writers\n // instead of deleting at the beginning then write all\n // we write all and then delete the files that were not written by the config writers\n // This reduces the config files that re-created (as many times no changes needed)\n // which prevent issues with needing to restart the ts-server in the ide\n pathsToClean = pathsToClean.filter(\n (pathToClean) => !allWrittenFiles.includes(join(this.workspace.path, pathToClean))\n );\n await this.deleteFiles(pathsToClean);\n } catch (err) {\n this.logger.info('writeConfigFiles failed', err);\n if (optionsWithDefaults.throw) {\n throw new WriteConfigFilesFailed();\n }\n writeErr = err;\n }\n\n return { writeResults, cleanResults: pathsToClean, wsDir: this.workspace.path, err: writeErr };\n }\n\n /**\n * This will check the config.enableWorkspaceConfigWrite before writing the config files.\n */\n async writeConfigFilesIfEnabled(options: WriteConfigFilesOptions = {}): Promise<WriteConfigFilesResult | undefined> {\n const shouldWrite = this.isWorkspaceConfigWriteEnabled();\n if (!shouldWrite) return undefined;\n return this.writeConfigFiles(options);\n }\n\n /**\n * It cleans (delete) the config files from the workspace.\n * This will check each file and will only delete it in case it was generated by bit\n * @param {CleanConfigFilesOptions} options - CleanConfigFilesOptions = {}\n * @returns An array of strings.\n */\n async cleanConfigFiles(options: CleanConfigFilesOptions = {}): Promise<string[]> {\n // const execContext = await this.getExecContext();\n if (!this.workspace) {\n throw new ConsumerNotFound();\n }\n const cleanResults = await this.clean(options);\n return cleanResults;\n }\n\n /**\n * The function checks if the auto writing of workspace configuration is enabled.\n * if it's enabled we will re-generate the configuration files upon bit create\n * @returns the boolean value of `!!this.config.enableWorkspaceConfigWrite`.\n */\n isWorkspaceConfigWriteEnabled() {\n return !!this.config.enableWorkspaceConfigWrite;\n }\n\n /**\n * It returns a list of all the config writers that have been registered with the config writer slot\n * @returns An array of objects with aspectId and configWriter properties.\n */\n async listConfigWriters(): Promise<EnvConfigWritersList> {\n if (!this.workspace) {\n throw new ConsumerNotFound();\n }\n const execContexts = await this.getExecContext();\n\n const result: EnvConfigWritersList = execContexts.map((executionContext) => {\n const configWriters = this.getConfigWriters(executionContext);\n return { envId: executionContext.envRuntime.id, executionContext, configWriters };\n });\n return result;\n }\n\n private groupByWriterId(writerList: EnvConfigWritersList): WriterIdsToEnvEntriesMap {\n return writerList.reduce((acc, envConfigWriter: EnvConfigWriter) => {\n envConfigWriter.configWriters.forEach((configWriter: ConfigWriterEntry) => {\n acc[configWriter.id] = acc[configWriter.id] || [];\n acc[configWriter.id].push({ configWriter, envId: envConfigWriter.envId });\n });\n return acc;\n }, {});\n }\n\n private async write(envsExecutionContext: ExecutionContext[], opts: WriteConfigFilesOptions): Promise<WriteResults> {\n const envCompDirsMap = this.getEnvComponentsDirsMap(envsExecutionContext);\n const configsRootDir = this.getConfigsRootDir();\n const configWriters = await this.listConfigWriters();\n const writerIdsToEnvEntriesMap = this.groupByWriterId(configWriters);\n const filteredWriterIdsToEnvEntriesMap = opts.writers\n ? pick(writerIdsToEnvEntriesMap, opts.writers)\n : writerIdsToEnvEntriesMap;\n let totalRealConfigFiles = 0;\n let totalExtendingConfigFiles = 0;\n const results = await pMapSeries(\n Object.entries(filteredWriterIdsToEnvEntriesMap),\n async ([writerId, envEntries]) => {\n const oneResult = await this.handleOneIdWriter(writerId, envEntries, envCompDirsMap, configsRootDir, opts);\n totalRealConfigFiles += oneResult.totalRealConfigFiles;\n totalExtendingConfigFiles += oneResult.totalExtendingConfigFiles;\n return oneResult;\n }\n );\n\n const totalWrittenFiles = totalRealConfigFiles + totalExtendingConfigFiles;\n return { writersResult: results, totalWrittenFiles, totalRealConfigFiles, totalExtendingConfigFiles };\n }\n\n private async handleOneIdWriter(\n writerId: string,\n envEntries: EnvConfigWriterEntry[],\n envCompsDirsMap: EnvCompsDirsMap,\n configsRootDir: string,\n opts: WriteConfigFilesOptions\n ): Promise<OneConfigWriterIdResult> {\n const writtenRealConfigFilesMap = await handleRealConfigFiles(\n envEntries,\n envCompsDirsMap,\n configsRootDir,\n this.workspace.path,\n opts\n );\n const writtenExtendingConfigFiles = await handleExtendingConfigFiles(\n envEntries,\n envCompsDirsMap,\n writtenRealConfigFilesMap,\n configsRootDir,\n this.workspace.path,\n opts\n );\n\n const writtenRealConfigFiles = Object.values(writtenRealConfigFilesMap);\n const totalRealConfigFiles = writtenRealConfigFiles.length;\n const totalExtendingConfigFiles = writtenExtendingConfigFiles.reduce(\n (acc, curr) => acc + curr.extendingConfigFile.filePaths.length,\n 0\n );\n const totalWrittenFiles = totalRealConfigFiles + totalExtendingConfigFiles;\n return {\n writerId,\n totalWrittenFiles,\n realConfigFiles: writtenRealConfigFiles,\n totalRealConfigFiles,\n extendingConfigFiles: writtenExtendingConfigFiles,\n totalExtendingConfigFiles,\n };\n }\n\n private getConfigsRootDir(): string {\n const userConfiguredDir = this.config.configsRootDir;\n return userConfiguredDir ? join(this.workspace.path, userConfiguredDir) : this.getCacheDir(this.workspace.path);\n }\n\n private getCacheDir(rootDir): string {\n return join(rootDir, 'node_modules', '.cache');\n }\n\n private async getExecContext(): Promise<ExecutionContext[]> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n return execContext;\n }\n\n private getEnvComponentsDirsMap(envsExecutionContext: ExecutionContext[]): EnvCompsDirsMap {\n const envCompDirsMap = envsExecutionContext.reduce((acc, envExecution) => {\n const envRuntime = envExecution.envRuntime;\n const envId = envRuntime.id.toString();\n const value = {\n id: envRuntime.id,\n env: envRuntime.env,\n paths: envRuntime.components.map((c) => this.workspace.componentDir(c.id, undefined, { relative: true })),\n };\n acc[envId] = value;\n return acc;\n }, {});\n return envCompDirsMap;\n }\n\n private getConfigWriters(envExecutionContext: ExecutionContext): ConfigWriterEntry[] {\n if (envExecutionContext.env.workspaceConfig && isFunction(envExecutionContext.env.workspaceConfig)) {\n return envExecutionContext.env.workspaceConfig();\n }\n this.addToEnvsNotImplementing(envExecutionContext.env.id);\n return [];\n }\n\n private getFlatConfigWriters(envsExecutionContext: ExecutionContext[]): ConfigWriterEntry[] {\n return flatMap(envsExecutionContext, (envExecutionContext) => {\n return this.getConfigWriters(envExecutionContext);\n });\n }\n\n /**\n * Clean config files written by the config-writers\n * @param envsExecutionContext\n * @param param1\n * @returns Array of paths of deleted config files\n */\n async clean({ dryRun, silent, writers }: WriteConfigFilesOptions): Promise<string[]> {\n const paths = await this.calcPathsToClean({ writers });\n if (dryRun) return paths;\n if (!silent) await this.promptForCleaning(paths);\n await this.deleteFiles(paths);\n return paths;\n }\n\n private async calcPathsToClean({ writers }: WriteConfigFilesOptions): Promise<string[]> {\n const execContext = await this.getExecContext();\n const configWriters = this.getFlatConfigWriters(execContext);\n const filteredConfigWriters = writers\n ? configWriters.filter((configWriter) => writers.includes(configWriter.id))\n : configWriters;\n\n const paths = uniq(\n filteredConfigWriters\n .map((configWriter) => {\n const patterns = configWriter.patterns;\n const currPaths = globby.sync(patterns, {\n cwd: this.workspace.path,\n dot: true,\n onlyFiles: true,\n ignore: ['**/node_modules/**'],\n });\n const filteredPaths = currPaths.filter((path) => {\n const fullPath = join(this.workspace.path, path);\n return configWriter.isBitGenerated ? configWriter.isBitGenerated(fullPath) : true;\n });\n return filteredPaths;\n })\n .flat()\n );\n return paths;\n }\n\n private addToEnvsNotImplementing(envId: string) {\n this.envsNotImplementing[envId] = true;\n }\n\n getEnvsNotImplementing() {\n return Object.keys(this.envsNotImplementing);\n }\n\n private async promptForCleaning(paths: string[]) {\n this.logger.clearStatusLine();\n const ok = await yesno({\n question: `${chalk.underline('The following files will be deleted:')}\n${paths.join('\\n')}\n${chalk.bold('Do you want to continue? [yes(y)/no(n)]')}`,\n });\n if (!ok) {\n throw new PromptCanceled();\n }\n }\n\n private async deleteFiles(paths: string[]) {\n await Promise.all(paths.map((f) => fs.remove(join(this.workspace.path, f))));\n }\n\n static slots = [];\n // define your aspect dependencies here.\n // in case you need to use another aspect API.\n static dependencies = [CLIAspect, WorkspaceAspect, EnvsAspect, LoggerAspect];\n\n static runtime = MainRuntime;\n\n static defaultConfig: Partial<WorkspaceConfigFilesAspectConfig> = {\n enableWorkspaceConfigWrite: false,\n };\n\n static async provider(\n [cli, workspace, envs, loggerAspect]: [CLIMain, Workspace, EnvsMain, LoggerMain],\n config: WorkspaceConfigFilesAspectConfig\n ) {\n const logger = loggerAspect.createLogger(WorkspaceConfigFilesAspect.id);\n envs.registerService(new WorkspaceConfigFilesService(logger));\n\n const workspaceConfigFilesMain = new WorkspaceConfigFilesMain(workspace, envs, logger, config);\n const wsConfigCmd = new WsConfigCmd();\n wsConfigCmd.commands = [\n new WsConfigWriteCmd(workspaceConfigFilesMain),\n new WsConfigCleanCmd(workspaceConfigFilesMain),\n new WsConfigListCmd(workspaceConfigFilesMain),\n ];\n cli.register(wsConfigCmd);\n return workspaceConfigFilesMain;\n }\n}\n\nWorkspaceConfigFilesAspect.addRuntime(WorkspaceConfigFilesMain);\n\nexport default WorkspaceConfigFilesMain;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_globby","_chalk","_legacyCli","_pMapSeries","_legacy","_yesno","_lodash","_cli","_workspace","_envs","_logger","_workspaceConfigFiles","_wsConfig","_writeFailed","_workspaceConfigFiles2","_writers","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","WorkspaceConfigFilesMain","constructor","workspace","envs","logger","config","writeConfigFiles","options","ConsumerNotFound","defaultOpts","clean","dedupe","silent","dryRun","throw","optionsWithDefaults","defaults","execContext","getExecContext","pathsToClean","writeErr","writeResults","calcPathsToClean","writers","write","allWrittenFiles","writersResult","flatMap","writerResult","extendingConfigFiles","extendingConfigFile","filePaths","filter","pathToClean","includes","join","path","deleteFiles","err","info","WriteConfigFilesFailed","cleanResults","wsDir","writeConfigFilesIfEnabled","shouldWrite","isWorkspaceConfigWriteEnabled","undefined","cleanConfigFiles","enableWorkspaceConfigWrite","listConfigWriters","execContexts","result","map","executionContext","configWriters","getConfigWriters","envId","envRuntime","id","groupByWriterId","writerList","reduce","acc","envConfigWriter","forEach","configWriter","push","envsExecutionContext","opts","envCompDirsMap","getEnvComponentsDirsMap","configsRootDir","getConfigsRootDir","componentsRootDir","getComponentsRootDir","writerIdsToEnvEntriesMap","filteredWriterIdsToEnvEntriesMap","pick","totalRealConfigFiles","totalExtendingConfigFiles","results","pMapSeries","entries","writerId","envEntries","oneResult","handleOneIdWriter","totalWrittenFiles","envCompsDirsMap","writtenRealConfigFilesMap","handleRealConfigFiles","writtenExtendingConfigFiles","handleExtendingConfigFiles","writtenRealConfigFiles","values","length","curr","realConfigFiles","userConfiguredDir","getCacheDir","getComponentsRootDirFromComponentsRootDir","normalized","normalize","replace","getComponentsRootDirFromDefaultDir","useDefaultDirectory","defaultDir","defaultDirectory","segments","split","dynamicSegmentIndex","findIndex","segment","startsWith","slice","fromComponentsRootDir","fromDefaultDir","rootDir","components","list","runtime","createEnvironment","getEnvExecutionContext","envExecution","toString","env","paths","c","componentDir","relative","envExecutionContext","workspaceConfig","isFunction","addToEnvsNotImplementing","getFlatConfigWriters","promptForCleaning","filteredConfigWriters","uniq","patterns","currPaths","globby","sync","cwd","dot","onlyFiles","ignore","filteredPaths","fullPath","isBitGenerated","flat","envsNotImplementing","getEnvsNotImplementing","keys","clearStatusLine","ok","yesno","question","chalk","underline","bold","PromptCanceled","Promise","all","f","fs","remove","provider","cli","loggerAspect","createLogger","WorkspaceConfigFilesAspect","registerService","WorkspaceConfigFilesService","workspaceConfigFilesMain","wsConfigCmd","WsConfigCmd","commands","WsConfigWriteCmd","WsConfigCleanCmd","WsConfigListCmd","register","exports","CLIAspect","WorkspaceAspect","EnvsAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["workspace-config-files.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { join, normalize } from 'path';\nimport globby from 'globby';\nimport chalk from 'chalk';\nimport { PromptCanceled } from '@teambit/legacy.cli.prompts';\nimport pMapSeries from 'p-map-series';\nimport { ConsumerNotFound } from '@teambit/legacy.consumer';\nimport yesno from 'yesno';\nimport { defaults, flatMap, isFunction, pick, uniq } from 'lodash';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { Workspace } from '@teambit/workspace';\nimport { Environment, EnvsAspect, ExecutionContext } from '@teambit/envs';\nimport type { EnvsMain } from '@teambit/envs';\nimport { Logger, LoggerAspect } from '@teambit/logger';\nimport type { LoggerMain } from '@teambit/logger';\nimport { WorkspaceConfigFilesAspect } from './workspace-config-files.aspect';\nimport { ConfigWriterEntry } from './config-writer-entry';\nimport { WsConfigCleanCmd, WsConfigCmd, WsConfigListCmd, WsConfigWriteCmd } from './ws-config.cmd';\nimport WriteConfigFilesFailed from './exceptions/write-failed';\nimport { WorkspaceConfigFilesService } from './workspace-config-files.service';\nimport {\n handleRealConfigFiles,\n handleExtendingConfigFiles,\n EnvsWrittenExtendingConfigFiles,\n EnvsWrittenRealConfigFiles,\n} from './writers';\n\n/**\n * Configs that can be configured in the workspace.jsonc file\n */\nexport type WorkspaceConfigFilesAspectConfig = {\n /**\n * The root directory for real configuration files\n * This is usually under node_modules\n */\n configsRootDir?: string;\n /**\n * The root directory for component files\n * We will hoist config files only up to this directory\n */\n componentsRootDir?: string;\n /**\n * Whether to use the default directory as components root dir for configuration files\n * This will take the config from:\n * \"teambit.workspace/workspace\": {\n * \"componentsRootDir\": \"bit-components/{scope}/{name}\"\n * }\n * it will take the constant part from it, up until the first {\n */\n useDefaultDirectory?: boolean;\n enableWorkspaceConfigWrite?: boolean;\n};\n\nexport type EnvConfigWriter = {\n envId: string;\n executionContext: ExecutionContext;\n configWriters: ConfigWriterEntry[];\n};\n\nexport type EnvConfigWriterEntry = {\n envId: string;\n configWriter: ConfigWriterEntry;\n executionContext: ExecutionContext;\n};\n\ntype WriterIdsToEnvEntriesMap = {\n [writerId: string]: EnvConfigWriterEntry[];\n};\n\nexport type EnvConfigWritersList = Array<EnvConfigWriter>;\n\nexport type CleanConfigFilesOptions = {\n silent?: boolean; // no prompt\n dryRun?: boolean;\n writers?: string[];\n};\n\nexport type WriteConfigFilesOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n throw?: boolean;\n writers?: string[];\n};\n\nexport type CompPathExtendingHashMap = { [compPath: string]: string };\n\nexport type EnvMapValue = { env: Environment; id: string[]; paths: string[] };\nexport type EnvCompsDirsMap = { [envId: string]: EnvMapValue };\n\nexport type OneConfigWriterIdResult = {\n writerId: string;\n totalWrittenFiles: number;\n realConfigFiles: EnvsWrittenRealConfigFiles;\n totalRealConfigFiles: number;\n extendingConfigFiles: EnvsWrittenExtendingConfigFiles;\n totalExtendingConfigFiles: number;\n};\n\nexport type WriteResults = {\n writersResult: OneConfigWriterIdResult[];\n totalWrittenFiles: number;\n totalRealConfigFiles: number;\n totalExtendingConfigFiles: number;\n};\n\nexport type WriteConfigFilesResult = {\n cleanResults?: string[];\n writeResults: WriteResults;\n wsDir: string;\n err?: Error;\n};\n\nexport class WorkspaceConfigFilesMain {\n private envsNotImplementing = {};\n\n constructor(\n private workspace: Workspace,\n private envs: EnvsMain,\n private logger: Logger,\n private config: WorkspaceConfigFilesAspectConfig\n ) {}\n\n /**\n * It writes the configuration files for the workspace\n * for example: tsconfig, eslint config and prettier config files.\n * @param {WriteConfigFilesOptions} options - WriteConfigFilesOptions = {}\n * @returns An object with the following properties:\n * - writeResults: An object with the following properties:\n * - aspectsWritersResults: An array of objects with the following properties:\n * - aspect: The aspect that was written\n * - totalWrittenFiles: The number of files that were written\n * - totalWrittenFiles: The total number of files that were written\n * - cleanResults: array of deleted paths\n */\n async writeConfigFiles(options: WriteConfigFilesOptions = {}): Promise<WriteConfigFilesResult> {\n if (!this.workspace) {\n throw new ConsumerNotFound();\n }\n const defaultOpts: WriteConfigFilesOptions = {\n clean: false,\n dedupe: false,\n silent: false,\n dryRun: false,\n throw: true,\n };\n const optionsWithDefaults = defaults(options, defaultOpts);\n const execContext = await this.getExecContext();\n\n let pathsToClean: string[] | undefined = [];\n let writeErr;\n let writeResults;\n try {\n if (optionsWithDefaults.clean) {\n pathsToClean = await this.calcPathsToClean({ writers: optionsWithDefaults.writers });\n }\n\n writeResults = await this.write(execContext, optionsWithDefaults);\n const allWrittenFiles = writeResults.writersResult.flatMap((writerResult) => {\n return writerResult.extendingConfigFiles.flatMap((extendingConfigFile) => {\n return extendingConfigFile.extendingConfigFile.filePaths;\n });\n });\n // Avoid delete and re-create files that were written by other config writers\n // instead of deleting at the beginning then write all\n // we write all and then delete the files that were not written by the config writers\n // This reduces the config files that re-created (as many times no changes needed)\n // which prevent issues with needing to restart the ts-server in the ide\n pathsToClean = pathsToClean.filter(\n (pathToClean) => !allWrittenFiles.includes(join(this.workspace.path, pathToClean))\n );\n await this.deleteFiles(pathsToClean);\n } catch (err) {\n this.logger.info('writeConfigFiles failed', err);\n if (optionsWithDefaults.throw) {\n throw new WriteConfigFilesFailed();\n }\n writeErr = err;\n }\n\n return { writeResults, cleanResults: pathsToClean, wsDir: this.workspace.path, err: writeErr };\n }\n\n /**\n * This will check the config.enableWorkspaceConfigWrite before writing the config files.\n */\n async writeConfigFilesIfEnabled(options: WriteConfigFilesOptions = {}): Promise<WriteConfigFilesResult | undefined> {\n const shouldWrite = this.isWorkspaceConfigWriteEnabled();\n if (!shouldWrite) return undefined;\n return this.writeConfigFiles(options);\n }\n\n /**\n * It cleans (delete) the config files from the workspace.\n * This will check each file and will only delete it in case it was generated by bit\n * @param {CleanConfigFilesOptions} options - CleanConfigFilesOptions = {}\n * @returns An array of strings.\n */\n async cleanConfigFiles(options: CleanConfigFilesOptions = {}): Promise<string[]> {\n // const execContext = await this.getExecContext();\n if (!this.workspace) {\n throw new ConsumerNotFound();\n }\n const cleanResults = await this.clean(options);\n return cleanResults;\n }\n\n /**\n * The function checks if the auto writing of workspace configuration is enabled.\n * if it's enabled we will re-generate the configuration files upon bit create\n * @returns the boolean value of `!!this.config.enableWorkspaceConfigWrite`.\n */\n isWorkspaceConfigWriteEnabled() {\n return !!this.config.enableWorkspaceConfigWrite;\n }\n\n /**\n * It returns a list of all the config writers that have been registered with the config writer slot\n * @returns An array of objects with aspectId and configWriter properties.\n */\n async listConfigWriters(): Promise<EnvConfigWritersList> {\n if (!this.workspace) {\n throw new ConsumerNotFound();\n }\n const execContexts = await this.getExecContext();\n\n const result: EnvConfigWritersList = execContexts.map((executionContext) => {\n const configWriters = this.getConfigWriters(executionContext);\n return { envId: executionContext.envRuntime.id, executionContext, configWriters };\n });\n return result;\n }\n\n private groupByWriterId(writerList: EnvConfigWritersList): WriterIdsToEnvEntriesMap {\n return writerList.reduce((acc, envConfigWriter: EnvConfigWriter) => {\n envConfigWriter.configWriters.forEach((configWriter: ConfigWriterEntry) => {\n acc[configWriter.id] = acc[configWriter.id] || [];\n acc[configWriter.id].push({ configWriter, envId: envConfigWriter.envId });\n });\n return acc;\n }, {});\n }\n\n private async write(envsExecutionContext: ExecutionContext[], opts: WriteConfigFilesOptions): Promise<WriteResults> {\n const envCompDirsMap = this.getEnvComponentsDirsMap(envsExecutionContext);\n const configsRootDir = this.getConfigsRootDir();\n const componentsRootDir = this.getComponentsRootDir();\n const configWriters = await this.listConfigWriters();\n const writerIdsToEnvEntriesMap = this.groupByWriterId(configWriters);\n const filteredWriterIdsToEnvEntriesMap = opts.writers\n ? pick(writerIdsToEnvEntriesMap, opts.writers)\n : writerIdsToEnvEntriesMap;\n let totalRealConfigFiles = 0;\n let totalExtendingConfigFiles = 0;\n const results = await pMapSeries(\n Object.entries(filteredWriterIdsToEnvEntriesMap),\n async ([writerId, envEntries]) => {\n const oneResult = await this.handleOneIdWriter(\n writerId,\n envEntries,\n envCompDirsMap,\n configsRootDir,\n componentsRootDir,\n opts\n );\n totalRealConfigFiles += oneResult.totalRealConfigFiles;\n totalExtendingConfigFiles += oneResult.totalExtendingConfigFiles;\n return oneResult;\n }\n );\n\n const totalWrittenFiles = totalRealConfigFiles + totalExtendingConfigFiles;\n return { writersResult: results, totalWrittenFiles, totalRealConfigFiles, totalExtendingConfigFiles };\n }\n\n private async handleOneIdWriter(\n writerId: string,\n envEntries: EnvConfigWriterEntry[],\n envCompsDirsMap: EnvCompsDirsMap,\n configsRootDir: string,\n componentsRootDir: string | undefined,\n opts: WriteConfigFilesOptions\n ): Promise<OneConfigWriterIdResult> {\n const writtenRealConfigFilesMap = await handleRealConfigFiles(\n envEntries,\n envCompsDirsMap,\n configsRootDir,\n this.workspace.path,\n opts\n );\n const writtenExtendingConfigFiles = await handleExtendingConfigFiles(\n envEntries,\n envCompsDirsMap,\n writtenRealConfigFilesMap,\n configsRootDir,\n componentsRootDir,\n this.workspace.path,\n opts\n );\n\n const writtenRealConfigFiles = Object.values(writtenRealConfigFilesMap);\n const totalRealConfigFiles = writtenRealConfigFiles.length;\n const totalExtendingConfigFiles = writtenExtendingConfigFiles.reduce(\n (acc, curr) => acc + curr.extendingConfigFile.filePaths.length,\n 0\n );\n const totalWrittenFiles = totalRealConfigFiles + totalExtendingConfigFiles;\n return {\n writerId,\n totalWrittenFiles,\n realConfigFiles: writtenRealConfigFiles,\n totalRealConfigFiles,\n extendingConfigFiles: writtenExtendingConfigFiles,\n totalExtendingConfigFiles,\n };\n }\n\n private getConfigsRootDir(): string {\n const userConfiguredDir = this.config.configsRootDir;\n return userConfiguredDir ? join(this.workspace.path, userConfiguredDir) : this.getCacheDir(this.workspace.path);\n }\n\n private getComponentsRootDirFromComponentsRootDir(): string | undefined {\n const componentsRootDir = this.config.componentsRootDir;\n if (!componentsRootDir) return undefined;\n // Remove leading './' or '/' and trailing slash\n const normalized = normalize(componentsRootDir)\n .replace(/^\\.?\\//, '')\n .replace(/\\/$/, '');\n return normalized;\n }\n\n private getComponentsRootDirFromDefaultDir(): string | undefined {\n if (!this.config.useDefaultDirectory) return undefined;\n const defaultDir = this.workspace.defaultDirectory;\n if (!defaultDir) return undefined;\n // get path until first dynamic segment (segment with {})\n const segments = defaultDir.split('/');\n const dynamicSegmentIndex = segments.findIndex((segment) => segment.startsWith('{'));\n if (dynamicSegmentIndex === -1) return defaultDir;\n return segments.slice(0, dynamicSegmentIndex).join('/');\n }\n\n private getComponentsRootDir(): string | undefined {\n const fromComponentsRootDir = this.getComponentsRootDirFromComponentsRootDir();\n if (fromComponentsRootDir) return fromComponentsRootDir;\n const fromDefaultDir = this.getComponentsRootDirFromDefaultDir();\n if (fromDefaultDir) return fromDefaultDir;\n }\n\n private getCacheDir(rootDir): string {\n return join(rootDir, 'node_modules', '.cache');\n }\n\n private async getExecContext(): Promise<ExecutionContext[]> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n return execContext;\n }\n\n private getEnvComponentsDirsMap(envsExecutionContext: ExecutionContext[]): EnvCompsDirsMap {\n const envCompDirsMap = envsExecutionContext.reduce((acc, envExecution) => {\n const envRuntime = envExecution.envRuntime;\n const envId = envRuntime.id.toString();\n const value = {\n id: envRuntime.id,\n env: envRuntime.env,\n paths: envRuntime.components.map((c) => this.workspace.componentDir(c.id, undefined, { relative: true })),\n };\n acc[envId] = value;\n return acc;\n }, {});\n return envCompDirsMap;\n }\n\n private getConfigWriters(envExecutionContext: ExecutionContext): ConfigWriterEntry[] {\n if (envExecutionContext.env.workspaceConfig && isFunction(envExecutionContext.env.workspaceConfig)) {\n return envExecutionContext.env.workspaceConfig();\n }\n this.addToEnvsNotImplementing(envExecutionContext.env.id);\n return [];\n }\n\n private getFlatConfigWriters(envsExecutionContext: ExecutionContext[]): ConfigWriterEntry[] {\n return flatMap(envsExecutionContext, (envExecutionContext) => {\n return this.getConfigWriters(envExecutionContext);\n });\n }\n\n /**\n * Clean config files written by the config-writers\n * @param envsExecutionContext\n * @param param1\n * @returns Array of paths of deleted config files\n */\n async clean({ dryRun, silent, writers }: WriteConfigFilesOptions): Promise<string[]> {\n const paths = await this.calcPathsToClean({ writers });\n if (dryRun) return paths;\n if (!silent) await this.promptForCleaning(paths);\n await this.deleteFiles(paths);\n return paths;\n }\n\n private async calcPathsToClean({ writers }: WriteConfigFilesOptions): Promise<string[]> {\n const execContext = await this.getExecContext();\n const configWriters = this.getFlatConfigWriters(execContext);\n const filteredConfigWriters = writers\n ? configWriters.filter((configWriter) => writers.includes(configWriter.id))\n : configWriters;\n\n const paths = uniq(\n filteredConfigWriters\n .map((configWriter) => {\n const patterns = configWriter.patterns;\n const currPaths = globby.sync(patterns, {\n cwd: this.workspace.path,\n dot: true,\n onlyFiles: true,\n ignore: ['**/node_modules/**'],\n });\n const filteredPaths = currPaths.filter((path) => {\n const fullPath = join(this.workspace.path, path);\n return configWriter.isBitGenerated ? configWriter.isBitGenerated(fullPath) : true;\n });\n return filteredPaths;\n })\n .flat()\n );\n return paths;\n }\n\n private addToEnvsNotImplementing(envId: string) {\n this.envsNotImplementing[envId] = true;\n }\n\n getEnvsNotImplementing() {\n return Object.keys(this.envsNotImplementing);\n }\n\n private async promptForCleaning(paths: string[]) {\n this.logger.clearStatusLine();\n const ok = await yesno({\n question: `${chalk.underline('The following files will be deleted:')}\n${paths.join('\\n')}\n${chalk.bold('Do you want to continue? [yes(y)/no(n)]')}`,\n });\n if (!ok) {\n throw new PromptCanceled();\n }\n }\n\n private async deleteFiles(paths: string[]) {\n await Promise.all(paths.map((f) => fs.remove(join(this.workspace.path, f))));\n }\n\n static slots = [];\n // define your aspect dependencies here.\n // in case you need to use another aspect API.\n static dependencies = [CLIAspect, WorkspaceAspect, EnvsAspect, LoggerAspect];\n\n static runtime = MainRuntime;\n\n static defaultConfig: Partial<WorkspaceConfigFilesAspectConfig> = {\n enableWorkspaceConfigWrite: false,\n };\n\n static async provider(\n [cli, workspace, envs, loggerAspect]: [CLIMain, Workspace, EnvsMain, LoggerMain],\n config: WorkspaceConfigFilesAspectConfig\n ) {\n const logger = loggerAspect.createLogger(WorkspaceConfigFilesAspect.id);\n envs.registerService(new WorkspaceConfigFilesService(logger));\n\n const workspaceConfigFilesMain = new WorkspaceConfigFilesMain(workspace, envs, logger, config);\n const wsConfigCmd = new WsConfigCmd();\n wsConfigCmd.commands = [\n new WsConfigWriteCmd(workspaceConfigFilesMain),\n new WsConfigCleanCmd(workspaceConfigFilesMain),\n new WsConfigListCmd(workspaceConfigFilesMain),\n ];\n cli.register(wsConfigCmd);\n return workspaceConfigFilesMain;\n }\n}\n\nWorkspaceConfigFilesAspect.addRuntime(WorkspaceConfigFilesMain);\n\nexport default WorkspaceConfigFilesMain;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,4 +15,4 @@ export type ExtendingConfigFilesMap = {
|
|
|
15
15
|
extendingConfigFile: Required<ExtendingConfigFile>;
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
export declare function handleExtendingConfigFiles(envEntries: EnvConfigWriterEntry[], envCompsDirsMap: EnvCompsDirsMap, writtenRealConfigFiles: WrittenRealConfigFilesByHash, configsRootDir: string, workspaceDir: string, opts: WriteConfigFilesOptions): Promise<EnvsWrittenExtendingConfigFiles>;
|
|
18
|
+
export declare function handleExtendingConfigFiles(envEntries: EnvConfigWriterEntry[], envCompsDirsMap: EnvCompsDirsMap, writtenRealConfigFiles: WrittenRealConfigFilesByHash, configsRootDir: string, componentsRootDir: string | undefined, workspaceDir: string, opts: WriteConfigFilesOptions): Promise<EnvsWrittenExtendingConfigFiles>;
|
|
@@ -66,9 +66,9 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
66
66
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
67
67
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
68
68
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
69
|
-
async function handleExtendingConfigFiles(envEntries, envCompsDirsMap, writtenRealConfigFiles, configsRootDir, workspaceDir, opts) {
|
|
69
|
+
async function handleExtendingConfigFiles(envEntries, envCompsDirsMap, writtenRealConfigFiles, configsRootDir, componentsRootDir, workspaceDir, opts) {
|
|
70
70
|
const extendingConfigFilesMap = await buildExtendingConfigFilesMap(envEntries, writtenRealConfigFiles, envCompsDirsMap, configsRootDir, workspaceDir);
|
|
71
|
-
const fileHashPerDedupedPaths = (0, _dedupPaths().dedupePaths)(extendingConfigFilesMap, envCompsDirsMap);
|
|
71
|
+
const fileHashPerDedupedPaths = (0, _dedupPaths().dedupePaths)(extendingConfigFilesMap, envCompsDirsMap, componentsRootDir);
|
|
72
72
|
await postProcessExtendingConfigFiles(envEntries, envCompsDirsMap, extendingConfigFilesMap, fileHashPerDedupedPaths, configsRootDir, workspaceDir);
|
|
73
73
|
const envsWrittenExtendingConfigFiles = await writeExtendingConfigFiles(extendingConfigFilesMap, fileHashPerDedupedPaths, workspaceDir, opts);
|
|
74
74
|
return envsWrittenExtendingConfigFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_normalizePath","data","_interopRequireDefault","require","_stringFormat","_toolboxCrypto","_fsExtra","_path","_pMapSeries","_lodash","_dedupPaths","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","handleExtendingConfigFiles","envEntries","envCompsDirsMap","writtenRealConfigFiles","configsRootDir","workspaceDir","opts","extendingConfigFilesMap","buildExtendingConfigFilesMap","fileHashPerDedupedPaths","dedupePaths","postProcessExtendingConfigFiles","envsWrittenExtendingConfigFiles","writeExtendingConfigFiles","allEnvsCalculatedExtendingConfigFiles","compact","pMapSeries","envConfigFileEntry","envMapVal","envId","writtenConfigFilesForEnv","getEnvOnlyWrittenRealConfigFiles","extendingConfigFile","generateOneExtendingConfigFile","undefined","indexExtendingConfigFiles","values","reduce","acc","envIds","writtenRealConfigFile","includes","writtenConfigFiles","envMapValue","configWriter","executionContext","args","generateExtendingFile","hash","sha1","content","useAbsPaths","multiEnvCalculatedExtendingConfigFiles","mergedConfigFiles","curr","currentValue","postProcessFunc","extendingConfigFileEntry","find","entry","dedupEntry","fileHashPerDedupedPath","fileHash","postProcessRes","paths","supportSpecificPathChange","path","currPath","newHash","JSON","parse","stringify","foundNewHash","finalResult","Promise","all","map","envsConfigFile","configFile","name","format","writtenPaths","filePath","join","targetPath","extendingTarget","normalize","relative","dirname","replace","dryRun","fs","outputFile","res","filePaths"],"sources":["extending-config-files.ts"],"sourcesContent":["import normalize from 'normalize-path';\nimport format from 'string-format';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport fs from 'fs-extra';\nimport { dirname, join, relative } from 'path';\nimport pMapSeries from 'p-map-series';\nimport { compact } from 'lodash';\nimport { ExtendingConfigFile } from '../config-writer-entry';\nimport { DedupedPaths, dedupePaths } from '../dedup-paths';\nimport {\n EnvCompsDirsMap,\n EnvConfigWriterEntry,\n EnvMapValue,\n WriteConfigFilesOptions,\n} from '../workspace-config-files.main.runtime';\nimport { WrittenConfigFile, WrittenRealConfigFilesByHash } from './real-config-files';\n\ntype EnvCalculatedExtendingConfigFile = {\n envId: string;\n extendingConfigFile: Required<ExtendingConfigFile>;\n};\nexport type WrittenExtendingConfigFile = ExtendingConfigFile & {\n filePaths: string[];\n};\nexport type EnvsWrittenExtendingConfigFile = { envIds: string[]; extendingConfigFile: WrittenExtendingConfigFile };\nexport type EnvsWrittenExtendingConfigFiles = Array<EnvsWrittenExtendingConfigFile>;\nexport type ExtendingConfigFilesMap = {\n [configFileHash: string]: {\n envIds: string[];\n extendingConfigFile: Required<ExtendingConfigFile>;\n };\n};\n\nexport async function handleExtendingConfigFiles(\n envEntries: EnvConfigWriterEntry[],\n envCompsDirsMap: EnvCompsDirsMap,\n writtenRealConfigFiles: WrittenRealConfigFilesByHash,\n configsRootDir: string,\n workspaceDir: string,\n opts: WriteConfigFilesOptions\n): Promise<EnvsWrittenExtendingConfigFiles> {\n const extendingConfigFilesMap = await buildExtendingConfigFilesMap(\n envEntries,\n writtenRealConfigFiles,\n envCompsDirsMap,\n configsRootDir,\n workspaceDir\n );\n const fileHashPerDedupedPaths = dedupePaths(extendingConfigFilesMap, envCompsDirsMap);\n await postProcessExtendingConfigFiles(\n envEntries,\n envCompsDirsMap,\n extendingConfigFilesMap,\n fileHashPerDedupedPaths,\n configsRootDir,\n workspaceDir\n );\n const envsWrittenExtendingConfigFiles = await writeExtendingConfigFiles(\n extendingConfigFilesMap,\n fileHashPerDedupedPaths,\n workspaceDir,\n opts\n );\n return envsWrittenExtendingConfigFiles;\n}\n\nasync function buildExtendingConfigFilesMap(\n envEntries: EnvConfigWriterEntry[],\n writtenRealConfigFiles: WrittenRealConfigFilesByHash,\n envCompsDirsMap: EnvCompsDirsMap,\n configsRootDir: string,\n workspaceDir: string\n): Promise<ExtendingConfigFilesMap> {\n const allEnvsCalculatedExtendingConfigFiles: EnvCalculatedExtendingConfigFile[] = compact(\n await pMapSeries(envEntries, async (envConfigFileEntry) => {\n const envMapVal = envCompsDirsMap[envConfigFileEntry.envId];\n const writtenConfigFilesForEnv: WrittenConfigFile[] = getEnvOnlyWrittenRealConfigFiles(\n envConfigFileEntry.envId,\n writtenRealConfigFiles\n );\n const extendingConfigFile = generateOneExtendingConfigFile(\n writtenConfigFilesForEnv,\n envConfigFileEntry,\n envMapVal,\n configsRootDir,\n workspaceDir\n );\n if (!extendingConfigFile) {\n return undefined;\n }\n return {\n envId: envConfigFileEntry.envId,\n extendingConfigFile,\n };\n })\n );\n const extendingConfigFilesMap: ExtendingConfigFilesMap = indexExtendingConfigFiles(\n allEnvsCalculatedExtendingConfigFiles\n );\n return extendingConfigFilesMap;\n}\n\nfunction getEnvOnlyWrittenRealConfigFiles(\n envId: string,\n writtenRealConfigFiles: WrittenRealConfigFilesByHash\n): WrittenConfigFile[] {\n return Object.values(writtenRealConfigFiles).reduce((acc, { envIds, writtenRealConfigFile }) => {\n if (envIds.includes(envId)) {\n acc.push(writtenRealConfigFile);\n }\n return acc;\n }, [] as WrittenConfigFile[]);\n}\n\nfunction generateOneExtendingConfigFile(\n writtenConfigFiles: WrittenConfigFile[],\n envConfigFileEntry: EnvConfigWriterEntry,\n envMapValue: EnvMapValue,\n configsRootDir: string,\n workspaceDir: string\n): Required<ExtendingConfigFile> | undefined {\n const { configWriter, executionContext } = envConfigFileEntry;\n const args = {\n workspaceDir,\n configsRootDir,\n writtenConfigFiles,\n executionContext,\n envMapValue,\n };\n const extendingConfigFile = configWriter.generateExtendingFile(args);\n if (!extendingConfigFile) return undefined;\n const hash = extendingConfigFile.hash || sha1(extendingConfigFile.content);\n return {\n ...extendingConfigFile,\n useAbsPaths: !!extendingConfigFile.useAbsPaths,\n hash,\n };\n}\n\nfunction indexExtendingConfigFiles(\n multiEnvCalculatedExtendingConfigFiles: EnvCalculatedExtendingConfigFile[]\n): ExtendingConfigFilesMap {\n const mergedConfigFiles = multiEnvCalculatedExtendingConfigFiles.reduce(\n (acc, curr: EnvCalculatedExtendingConfigFile) => {\n const extendingConfigFile = curr.extendingConfigFile;\n const currentValue = acc[extendingConfigFile.hash];\n if (currentValue) {\n currentValue.envIds.push(curr.envId);\n } else {\n acc[extendingConfigFile.hash] = { envIds: [curr.envId], extendingConfigFile };\n }\n return acc;\n },\n {}\n );\n return mergedConfigFiles;\n}\n\nasync function postProcessExtendingConfigFiles(\n envEntries: EnvConfigWriterEntry[],\n envCompsDirsMap: EnvCompsDirsMap,\n extendingConfigFilesMap: ExtendingConfigFilesMap,\n fileHashPerDedupedPaths: DedupedPaths,\n configsRootDir: string,\n workspaceDir: string\n) {\n await pMapSeries(envEntries, async (envConfigFileEntry) => {\n const postProcessFunc = envConfigFileEntry.configWriter.postProcessExtendingConfigFiles;\n if (!postProcessFunc) {\n return undefined;\n }\n const envMapVal = envCompsDirsMap[envConfigFileEntry.envId];\n const extendingConfigFileEntry = Object.values(extendingConfigFilesMap).find((entry) => {\n return entry.envIds.includes(envConfigFileEntry.envId);\n });\n if (!extendingConfigFileEntry) {\n return undefined;\n }\n const dedupEntry = fileHashPerDedupedPaths.find((fileHashPerDedupedPath) => {\n return fileHashPerDedupedPath.fileHash === extendingConfigFileEntry.extendingConfigFile.hash;\n });\n if (!dedupEntry) {\n return undefined;\n }\n\n const postProcessRes = await postProcessFunc({\n configsRootDir,\n extendingConfigFile: extendingConfigFileEntry.extendingConfigFile,\n envMapValue: envMapVal,\n workspaceDir,\n paths: dedupEntry.paths,\n supportSpecificPathChange: true,\n });\n if (!postProcessRes) {\n return undefined;\n }\n if (typeof postProcessRes === 'string') {\n extendingConfigFileEntry.extendingConfigFile.content = postProcessRes;\n return undefined;\n }\n postProcessRes.forEach(({ path, content }) => {\n // Remove it from the current entry\n dedupEntry.paths = dedupEntry.paths.filter((currPath) => currPath !== path);\n const newHash = sha1(content);\n extendingConfigFilesMap[newHash] = JSON.parse(JSON.stringify(extendingConfigFileEntry));\n extendingConfigFilesMap[newHash].extendingConfigFile.content = content;\n const foundNewHash = fileHashPerDedupedPaths.find((entry) => entry.fileHash === newHash);\n if (foundNewHash) {\n foundNewHash.paths.push(path);\n } else {\n fileHashPerDedupedPaths.push({ fileHash: newHash, paths: [path] });\n }\n });\n return undefined;\n });\n}\n\nasync function writeExtendingConfigFiles(\n extendingConfigFilesMap: ExtendingConfigFilesMap,\n fileHashPerDedupedPaths: DedupedPaths,\n workspaceDir: string,\n opts: WriteConfigFilesOptions\n): Promise<EnvsWrittenExtendingConfigFiles> {\n const finalResult: EnvsWrittenExtendingConfigFiles = await Promise.all(\n fileHashPerDedupedPaths.map(async ({ fileHash, paths }) => {\n const envsConfigFile = extendingConfigFilesMap[fileHash];\n const configFile = envsConfigFile.extendingConfigFile;\n const hash = configFile.hash || sha1(configFile.content);\n const name = format(configFile.name, { hash });\n const writtenPaths = await Promise.all(\n paths.map(async (path) => {\n const filePath = join(workspaceDir, path, name);\n const targetPath = configFile.useAbsPaths\n ? configFile.extendingTarget.filePath\n : normalize(`./${relative(dirname(filePath), configFile.extendingTarget.filePath)}`);\n const content = configFile.content.replace(`{${configFile.extendingTarget.name}}`, targetPath);\n if (!opts.dryRun) {\n await fs.outputFile(filePath, content);\n }\n return filePath;\n })\n );\n const res: EnvsWrittenExtendingConfigFile = {\n envIds: envsConfigFile.envIds,\n extendingConfigFile: {\n name,\n hash,\n content: configFile.content,\n extendingTarget: configFile.extendingTarget,\n filePaths: writtenPaths,\n },\n };\n return res;\n })\n );\n return finalResult;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_normalizePath","data","_interopRequireDefault","require","_stringFormat","_toolboxCrypto","_fsExtra","_path","_pMapSeries","_lodash","_dedupPaths","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","handleExtendingConfigFiles","envEntries","envCompsDirsMap","writtenRealConfigFiles","configsRootDir","componentsRootDir","workspaceDir","opts","extendingConfigFilesMap","buildExtendingConfigFilesMap","fileHashPerDedupedPaths","dedupePaths","postProcessExtendingConfigFiles","envsWrittenExtendingConfigFiles","writeExtendingConfigFiles","allEnvsCalculatedExtendingConfigFiles","compact","pMapSeries","envConfigFileEntry","envMapVal","envId","writtenConfigFilesForEnv","getEnvOnlyWrittenRealConfigFiles","extendingConfigFile","generateOneExtendingConfigFile","undefined","indexExtendingConfigFiles","values","reduce","acc","envIds","writtenRealConfigFile","includes","writtenConfigFiles","envMapValue","configWriter","executionContext","args","generateExtendingFile","hash","sha1","content","useAbsPaths","multiEnvCalculatedExtendingConfigFiles","mergedConfigFiles","curr","currentValue","postProcessFunc","extendingConfigFileEntry","find","entry","dedupEntry","fileHashPerDedupedPath","fileHash","postProcessRes","paths","supportSpecificPathChange","path","currPath","newHash","JSON","parse","stringify","foundNewHash","finalResult","Promise","all","map","envsConfigFile","configFile","name","format","writtenPaths","filePath","join","targetPath","extendingTarget","normalize","relative","dirname","replace","dryRun","fs","outputFile","res","filePaths"],"sources":["extending-config-files.ts"],"sourcesContent":["import normalize from 'normalize-path';\nimport format from 'string-format';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport fs from 'fs-extra';\nimport { dirname, join, relative } from 'path';\nimport pMapSeries from 'p-map-series';\nimport { compact } from 'lodash';\nimport { ExtendingConfigFile } from '../config-writer-entry';\nimport { DedupedPaths, dedupePaths } from '../dedup-paths';\nimport {\n EnvCompsDirsMap,\n EnvConfigWriterEntry,\n EnvMapValue,\n WriteConfigFilesOptions,\n} from '../workspace-config-files.main.runtime';\nimport { WrittenConfigFile, WrittenRealConfigFilesByHash } from './real-config-files';\n\ntype EnvCalculatedExtendingConfigFile = {\n envId: string;\n extendingConfigFile: Required<ExtendingConfigFile>;\n};\nexport type WrittenExtendingConfigFile = ExtendingConfigFile & {\n filePaths: string[];\n};\nexport type EnvsWrittenExtendingConfigFile = { envIds: string[]; extendingConfigFile: WrittenExtendingConfigFile };\nexport type EnvsWrittenExtendingConfigFiles = Array<EnvsWrittenExtendingConfigFile>;\nexport type ExtendingConfigFilesMap = {\n [configFileHash: string]: {\n envIds: string[];\n extendingConfigFile: Required<ExtendingConfigFile>;\n };\n};\n\nexport async function handleExtendingConfigFiles(\n envEntries: EnvConfigWriterEntry[],\n envCompsDirsMap: EnvCompsDirsMap,\n writtenRealConfigFiles: WrittenRealConfigFilesByHash,\n configsRootDir: string,\n componentsRootDir: string | undefined,\n workspaceDir: string,\n opts: WriteConfigFilesOptions\n): Promise<EnvsWrittenExtendingConfigFiles> {\n const extendingConfigFilesMap = await buildExtendingConfigFilesMap(\n envEntries,\n writtenRealConfigFiles,\n envCompsDirsMap,\n configsRootDir,\n workspaceDir\n );\n const fileHashPerDedupedPaths = dedupePaths(extendingConfigFilesMap, envCompsDirsMap, componentsRootDir);\n await postProcessExtendingConfigFiles(\n envEntries,\n envCompsDirsMap,\n extendingConfigFilesMap,\n fileHashPerDedupedPaths,\n configsRootDir,\n workspaceDir\n );\n const envsWrittenExtendingConfigFiles = await writeExtendingConfigFiles(\n extendingConfigFilesMap,\n fileHashPerDedupedPaths,\n workspaceDir,\n opts\n );\n return envsWrittenExtendingConfigFiles;\n}\n\nasync function buildExtendingConfigFilesMap(\n envEntries: EnvConfigWriterEntry[],\n writtenRealConfigFiles: WrittenRealConfigFilesByHash,\n envCompsDirsMap: EnvCompsDirsMap,\n configsRootDir: string,\n workspaceDir: string\n): Promise<ExtendingConfigFilesMap> {\n const allEnvsCalculatedExtendingConfigFiles: EnvCalculatedExtendingConfigFile[] = compact(\n await pMapSeries(envEntries, async (envConfigFileEntry) => {\n const envMapVal = envCompsDirsMap[envConfigFileEntry.envId];\n const writtenConfigFilesForEnv: WrittenConfigFile[] = getEnvOnlyWrittenRealConfigFiles(\n envConfigFileEntry.envId,\n writtenRealConfigFiles\n );\n const extendingConfigFile = generateOneExtendingConfigFile(\n writtenConfigFilesForEnv,\n envConfigFileEntry,\n envMapVal,\n configsRootDir,\n workspaceDir\n );\n if (!extendingConfigFile) {\n return undefined;\n }\n return {\n envId: envConfigFileEntry.envId,\n extendingConfigFile,\n };\n })\n );\n const extendingConfigFilesMap: ExtendingConfigFilesMap = indexExtendingConfigFiles(\n allEnvsCalculatedExtendingConfigFiles\n );\n return extendingConfigFilesMap;\n}\n\nfunction getEnvOnlyWrittenRealConfigFiles(\n envId: string,\n writtenRealConfigFiles: WrittenRealConfigFilesByHash\n): WrittenConfigFile[] {\n return Object.values(writtenRealConfigFiles).reduce((acc, { envIds, writtenRealConfigFile }) => {\n if (envIds.includes(envId)) {\n acc.push(writtenRealConfigFile);\n }\n return acc;\n }, [] as WrittenConfigFile[]);\n}\n\nfunction generateOneExtendingConfigFile(\n writtenConfigFiles: WrittenConfigFile[],\n envConfigFileEntry: EnvConfigWriterEntry,\n envMapValue: EnvMapValue,\n configsRootDir: string,\n workspaceDir: string\n): Required<ExtendingConfigFile> | undefined {\n const { configWriter, executionContext } = envConfigFileEntry;\n const args = {\n workspaceDir,\n configsRootDir,\n writtenConfigFiles,\n executionContext,\n envMapValue,\n };\n const extendingConfigFile = configWriter.generateExtendingFile(args);\n if (!extendingConfigFile) return undefined;\n const hash = extendingConfigFile.hash || sha1(extendingConfigFile.content);\n return {\n ...extendingConfigFile,\n useAbsPaths: !!extendingConfigFile.useAbsPaths,\n hash,\n };\n}\n\nfunction indexExtendingConfigFiles(\n multiEnvCalculatedExtendingConfigFiles: EnvCalculatedExtendingConfigFile[]\n): ExtendingConfigFilesMap {\n const mergedConfigFiles = multiEnvCalculatedExtendingConfigFiles.reduce(\n (acc, curr: EnvCalculatedExtendingConfigFile) => {\n const extendingConfigFile = curr.extendingConfigFile;\n const currentValue = acc[extendingConfigFile.hash];\n if (currentValue) {\n currentValue.envIds.push(curr.envId);\n } else {\n acc[extendingConfigFile.hash] = { envIds: [curr.envId], extendingConfigFile };\n }\n return acc;\n },\n {}\n );\n return mergedConfigFiles;\n}\n\nasync function postProcessExtendingConfigFiles(\n envEntries: EnvConfigWriterEntry[],\n envCompsDirsMap: EnvCompsDirsMap,\n extendingConfigFilesMap: ExtendingConfigFilesMap,\n fileHashPerDedupedPaths: DedupedPaths,\n configsRootDir: string,\n workspaceDir: string\n) {\n await pMapSeries(envEntries, async (envConfigFileEntry) => {\n const postProcessFunc = envConfigFileEntry.configWriter.postProcessExtendingConfigFiles;\n if (!postProcessFunc) {\n return undefined;\n }\n const envMapVal = envCompsDirsMap[envConfigFileEntry.envId];\n const extendingConfigFileEntry = Object.values(extendingConfigFilesMap).find((entry) => {\n return entry.envIds.includes(envConfigFileEntry.envId);\n });\n if (!extendingConfigFileEntry) {\n return undefined;\n }\n const dedupEntry = fileHashPerDedupedPaths.find((fileHashPerDedupedPath) => {\n return fileHashPerDedupedPath.fileHash === extendingConfigFileEntry.extendingConfigFile.hash;\n });\n if (!dedupEntry) {\n return undefined;\n }\n\n const postProcessRes = await postProcessFunc({\n configsRootDir,\n extendingConfigFile: extendingConfigFileEntry.extendingConfigFile,\n envMapValue: envMapVal,\n workspaceDir,\n paths: dedupEntry.paths,\n supportSpecificPathChange: true,\n });\n if (!postProcessRes) {\n return undefined;\n }\n if (typeof postProcessRes === 'string') {\n extendingConfigFileEntry.extendingConfigFile.content = postProcessRes;\n return undefined;\n }\n postProcessRes.forEach(({ path, content }) => {\n // Remove it from the current entry\n dedupEntry.paths = dedupEntry.paths.filter((currPath) => currPath !== path);\n const newHash = sha1(content);\n extendingConfigFilesMap[newHash] = JSON.parse(JSON.stringify(extendingConfigFileEntry));\n extendingConfigFilesMap[newHash].extendingConfigFile.content = content;\n const foundNewHash = fileHashPerDedupedPaths.find((entry) => entry.fileHash === newHash);\n if (foundNewHash) {\n foundNewHash.paths.push(path);\n } else {\n fileHashPerDedupedPaths.push({ fileHash: newHash, paths: [path] });\n }\n });\n return undefined;\n });\n}\n\nasync function writeExtendingConfigFiles(\n extendingConfigFilesMap: ExtendingConfigFilesMap,\n fileHashPerDedupedPaths: DedupedPaths,\n workspaceDir: string,\n opts: WriteConfigFilesOptions\n): Promise<EnvsWrittenExtendingConfigFiles> {\n const finalResult: EnvsWrittenExtendingConfigFiles = await Promise.all(\n fileHashPerDedupedPaths.map(async ({ fileHash, paths }) => {\n const envsConfigFile = extendingConfigFilesMap[fileHash];\n const configFile = envsConfigFile.extendingConfigFile;\n const hash = configFile.hash || sha1(configFile.content);\n const name = format(configFile.name, { hash });\n const writtenPaths = await Promise.all(\n paths.map(async (path) => {\n const filePath = join(workspaceDir, path, name);\n const targetPath = configFile.useAbsPaths\n ? configFile.extendingTarget.filePath\n : normalize(`./${relative(dirname(filePath), configFile.extendingTarget.filePath)}`);\n const content = configFile.content.replace(`{${configFile.extendingTarget.name}}`, targetPath);\n if (!opts.dryRun) {\n await fs.outputFile(filePath, content);\n }\n return filePath;\n })\n );\n const res: EnvsWrittenExtendingConfigFile = {\n envIds: envsConfigFile.envIds,\n extendingConfigFile: {\n name,\n hash,\n content: configFile.content,\n extendingTarget: configFile.extendingTarget,\n filePaths: writtenPaths,\n },\n };\n return res;\n })\n );\n return finalResult;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/workspace-config-files",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.652",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/workspace/workspace-config-files",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.workspace",
|
|
8
8
|
"name": "workspace-config-files",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.652"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
"string-format": "0.5.0",
|
|
20
20
|
"@teambit/harmony": "0.4.7",
|
|
21
21
|
"@teambit/bit-error": "0.0.404",
|
|
22
|
-
"@teambit/envs": "1.0.
|
|
22
|
+
"@teambit/envs": "1.0.652",
|
|
23
23
|
"@teambit/toolbox.path.path": "0.0.8",
|
|
24
|
-
"@teambit/cli": "0.0.
|
|
24
|
+
"@teambit/cli": "0.0.1229",
|
|
25
25
|
"@teambit/legacy.cli.prompts": "0.0.18",
|
|
26
26
|
"@teambit/legacy.consumer": "0.0.55",
|
|
27
|
-
"@teambit/logger": "0.0.
|
|
28
|
-
"@teambit/workspace": "1.0.
|
|
27
|
+
"@teambit/logger": "0.0.1322",
|
|
28
|
+
"@teambit/workspace": "1.0.652",
|
|
29
29
|
"@teambit/toolbox.crypto.sha1": "0.0.7"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
@@ -36,6 +36,7 @@ export async function handleExtendingConfigFiles(
|
|
|
36
36
|
envCompsDirsMap: EnvCompsDirsMap,
|
|
37
37
|
writtenRealConfigFiles: WrittenRealConfigFilesByHash,
|
|
38
38
|
configsRootDir: string,
|
|
39
|
+
componentsRootDir: string | undefined,
|
|
39
40
|
workspaceDir: string,
|
|
40
41
|
opts: WriteConfigFilesOptions
|
|
41
42
|
): Promise<EnvsWrittenExtendingConfigFiles> {
|
|
@@ -46,7 +47,7 @@ export async function handleExtendingConfigFiles(
|
|
|
46
47
|
configsRootDir,
|
|
47
48
|
workspaceDir
|
|
48
49
|
);
|
|
49
|
-
const fileHashPerDedupedPaths = dedupePaths(extendingConfigFilesMap, envCompsDirsMap);
|
|
50
|
+
const fileHashPerDedupedPaths = dedupePaths(extendingConfigFilesMap, envCompsDirsMap, componentsRootDir);
|
|
50
51
|
await postProcessExtendingConfigFiles(
|
|
51
52
|
envEntries,
|
|
52
53
|
envCompsDirsMap,
|