@teambit/typescript 0.0.1019 → 0.0.1021

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.
@@ -0,0 +1,10 @@
1
+ import { TsConfigJson } from 'get-tsconfig';
2
+ /**
3
+ * It takes a tsconfig.json file, a list of component directories, and returns a new tsconfig.json file with the include
4
+ * and exclude properties expanded to include all the component directories
5
+ * @param {string} tsConfigPath - The path to the tsconfig.json file.
6
+ * @param {TsConfigJson} tsConfig - The tsconfig.json file that we're going to modify.
7
+ * @param {string[]} compDirs - An array of paths to the component directories.
8
+ * @returns the tsConfig object.
9
+ */
10
+ export declare function expandIncludeExclude(tsConfigPath: string, tsConfig: TsConfigJson, compDirs: string[]): TsConfigJson;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.expandIncludeExclude = expandIncludeExclude;
7
+ function _lodash() {
8
+ const data = require("lodash");
9
+ _lodash = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _path() {
15
+ const data = require("path");
16
+ _path = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ /**
22
+ * It takes a tsconfig.json file, a list of component directories, and returns a new tsconfig.json file with the include
23
+ * and exclude properties expanded to include all the component directories
24
+ * @param {string} tsConfigPath - The path to the tsconfig.json file.
25
+ * @param {TsConfigJson} tsConfig - The tsconfig.json file that we're going to modify.
26
+ * @param {string[]} compDirs - An array of paths to the component directories.
27
+ * @returns the tsConfig object.
28
+ */
29
+
30
+ function expandIncludeExclude(tsConfigPath, tsConfig, compDirs) {
31
+ const tsConfigDir = (0, _path().dirname)(tsConfigPath);
32
+ if (tsConfig.include) {
33
+ tsConfig.include = (0, _lodash().flatten)(tsConfig.include.map(includedPath => {
34
+ return compDirs.map(compDir => {
35
+ const compDirRelative = (0, _path().relative)(tsConfigDir, compDir);
36
+ return `${compDirRelative}/${includedPath}`;
37
+ });
38
+ }));
39
+ }
40
+ if (tsConfig.exclude) {
41
+ tsConfig.exclude = (0, _lodash().flatten)(tsConfig.exclude.map(excludedPath => {
42
+ return compDirs.map(compDir => {
43
+ const compDirRelative = (0, _path().relative)(tsConfigDir, compDir);
44
+ return `${compDirRelative}/${excludedPath}`;
45
+ });
46
+ }));
47
+ }
48
+ return tsConfig;
49
+ }
50
+
51
+ //# sourceMappingURL=expand-include-exclude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["expandIncludeExclude","tsConfigPath","tsConfig","compDirs","tsConfigDir","dirname","include","flatten","map","includedPath","compDir","compDirRelative","relative","exclude","excludedPath"],"sources":["expand-include-exclude.ts"],"sourcesContent":["import { TsConfigJson } from 'get-tsconfig';\nimport { flatten } from 'lodash';\nimport { dirname, relative } from 'path';\n\n/**\n * It takes a tsconfig.json file, a list of component directories, and returns a new tsconfig.json file with the include\n * and exclude properties expanded to include all the component directories\n * @param {string} tsConfigPath - The path to the tsconfig.json file.\n * @param {TsConfigJson} tsConfig - The tsconfig.json file that we're going to modify.\n * @param {string[]} compDirs - An array of paths to the component directories.\n * @returns the tsConfig object.\n */\n\nexport function expandIncludeExclude(tsConfigPath: string, tsConfig: TsConfigJson, compDirs: string[]) {\n const tsConfigDir = dirname(tsConfigPath);\n\n if (tsConfig.include) {\n tsConfig.include = flatten(\n tsConfig.include.map((includedPath) => {\n return compDirs.map((compDir) => {\n const compDirRelative = relative(tsConfigDir, compDir);\n return `${compDirRelative}/${includedPath}`;\n });\n })\n );\n }\n if (tsConfig.exclude) {\n tsConfig.exclude = flatten(\n tsConfig.exclude.map((excludedPath) => {\n return compDirs.map((compDir) => {\n const compDirRelative = relative(tsConfigDir, compDir);\n return `${compDirRelative}/${excludedPath}`;\n });\n })\n );\n }\n return tsConfig;\n}\n"],"mappings":";;;;;;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASA,oBAAoB,CAACC,YAAoB,EAAEC,QAAsB,EAAEC,QAAkB,EAAE;EACrG,MAAMC,WAAW,GAAG,IAAAC,eAAO,EAACJ,YAAY,CAAC;EAEzC,IAAIC,QAAQ,CAACI,OAAO,EAAE;IACpBJ,QAAQ,CAACI,OAAO,GAAG,IAAAC,iBAAO,EACxBL,QAAQ,CAACI,OAAO,CAACE,GAAG,CAAEC,YAAY,IAAK;MACrC,OAAON,QAAQ,CAACK,GAAG,CAAEE,OAAO,IAAK;QAC/B,MAAMC,eAAe,GAAG,IAAAC,gBAAQ,EAACR,WAAW,EAAEM,OAAO,CAAC;QACtD,OAAQ,GAAEC,eAAgB,IAAGF,YAAa,EAAC;MAC7C,CAAC,CAAC;IACJ,CAAC,CAAC,CACH;EACH;EACA,IAAIP,QAAQ,CAACW,OAAO,EAAE;IACpBX,QAAQ,CAACW,OAAO,GAAG,IAAAN,iBAAO,EACxBL,QAAQ,CAACW,OAAO,CAACL,GAAG,CAAEM,YAAY,IAAK;MACrC,OAAOX,QAAQ,CAACK,GAAG,CAAEE,OAAO,IAAK;QAC/B,MAAMC,eAAe,GAAG,IAAAC,gBAAQ,EAACR,WAAW,EAAEM,OAAO,CAAC;QACtD,OAAQ,GAAEC,eAAgB,IAAGG,YAAa,EAAC;MAC7C,CAAC,CAAC;IACJ,CAAC,CAAC,CACH;EACH;EACA,OAAOZ,QAAQ;AACjB"}
package/dist/index.d.ts CHANGED
@@ -4,3 +4,5 @@ export { TypescriptCompiler } from './typescript.compiler';
4
4
  export type { TypescriptMain, TsConfigTransformer } from './typescript.main.runtime';
5
5
  export type { TypeScriptCompilerOptions, TsCompilerOptionsWithoutTsConfig } from './compiler-options';
6
6
  export { TypescriptAspect } from './typescript.aspect';
7
+ export type { TypescriptCompilerInterface } from './typescript-compiler-interface';
8
+ export { expandIncludeExclude } from './expand-include-exclude';
package/dist/index.js CHANGED
@@ -27,6 +27,12 @@ Object.defineProperty(exports, "TypescriptConfigMutator", {
27
27
  return _typescriptModules().TypescriptConfigMutator;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "expandIncludeExclude", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _expandIncludeExclude().expandIncludeExclude;
34
+ }
35
+ });
30
36
  function _typescriptModules() {
31
37
  const data = require("@teambit/typescript.modules.ts-config-mutator");
32
38
  _typescriptModules = function () {
@@ -55,5 +61,12 @@ function _typescript3() {
55
61
  };
56
62
  return data;
57
63
  }
64
+ function _expandIncludeExclude() {
65
+ const data = require("./expand-include-exclude");
66
+ _expandIncludeExclude = function () {
67
+ return data;
68
+ };
69
+ return data;
70
+ }
58
71
 
59
72
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nexport { TypeScriptExtractor } from './typescript.extractor';\nexport { TypescriptCompiler } from './typescript.compiler';\nexport type { TypescriptMain, TsConfigTransformer } from './typescript.main.runtime';\nexport type { TypeScriptCompilerOptions, TsCompilerOptionsWithoutTsConfig } from './compiler-options';\nexport { TypescriptAspect } from './typescript.aspect';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nexport { TypeScriptExtractor } from './typescript.extractor';\nexport { TypescriptCompiler } from './typescript.compiler';\nexport type { TypescriptMain, TsConfigTransformer } from './typescript.main.runtime';\nexport type { TypeScriptCompilerOptions, TsCompilerOptionsWithoutTsConfig } from './compiler-options';\nexport { TypescriptAspect } from './typescript.aspect';\nexport type { TypescriptCompilerInterface } from './typescript-compiler-interface';\nexport { expandIncludeExclude } from './expand-include-exclude';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.1019/dist/typescript.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.1019/dist/typescript.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.1021/dist/typescript.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.1021/dist/typescript.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -0,0 +1,16 @@
1
+ import { ExecutionContext } from '@teambit/envs';
2
+ import type { ConfigWriterEntry, WrittenConfigFile, ExtendingConfigFile, ConfigFile, EnvMapValue, PostProcessExtendingConfigFilesArgs } from '@teambit/workspace-config-files';
3
+ import { CompilerMain } from '@teambit/compiler';
4
+ export declare class TypescriptConfigWriter implements ConfigWriterEntry {
5
+ private compiler;
6
+ name: string;
7
+ cliName: string;
8
+ constructor(compiler: CompilerMain);
9
+ patterns: string[];
10
+ calcConfigFiles(executionContext: ExecutionContext): ConfigFile[] | undefined;
11
+ private getGlobalTypesConfigFiles;
12
+ postProcessConfigFiles(writtenConfigFiles: WrittenConfigFile[], executionContext: ExecutionContext, envMapValue: EnvMapValue): Promise<void>;
13
+ generateExtendingFile(writtenConfigFiles: WrittenConfigFile[]): ExtendingConfigFile | undefined;
14
+ postProcessExtendingConfigFiles?(args: PostProcessExtendingConfigFilesArgs): Promise<void>;
15
+ isBitGenerated(filePath: string): boolean;
16
+ }
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.promise.js");
6
+ require("core-js/modules/es.regexp.exec.js");
7
+ require("core-js/modules/es.string.replace.js");
8
+ Object.defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports.TypescriptConfigWriter = void 0;
12
+ function _defineProperty2() {
13
+ const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ _defineProperty2 = function () {
15
+ return data;
16
+ };
17
+ return data;
18
+ }
19
+ function _commentJson() {
20
+ const data = require("comment-json");
21
+ _commentJson = function () {
22
+ return data;
23
+ };
24
+ return data;
25
+ }
26
+ function _utils() {
27
+ const data = require("@teambit/legacy/dist/utils");
28
+ _utils = function () {
29
+ return data;
30
+ };
31
+ return data;
32
+ }
33
+ function _fsExtra() {
34
+ const data = _interopRequireDefault(require("fs-extra"));
35
+ _fsExtra = function () {
36
+ return data;
37
+ };
38
+ return data;
39
+ }
40
+ function _path() {
41
+ const data = require("path");
42
+ _path = function () {
43
+ return data;
44
+ };
45
+ return data;
46
+ }
47
+ function _expandIncludeExclude() {
48
+ const data = require("./expand-include-exclude");
49
+ _expandIncludeExclude = function () {
50
+ return data;
51
+ };
52
+ return data;
53
+ }
54
+ const CONFIG_NAME = 'tsconfig.json';
55
+ const BIT_GENERATED_TS_CONFIG_COMMENT = '// bit-generated-typescript-config';
56
+ const GLOBAL_TYPES_DIR = 'global-types';
57
+ class TypescriptConfigWriter {
58
+ constructor(compiler) {
59
+ this.compiler = compiler;
60
+ (0, _defineProperty2().default)(this, "name", 'TypescriptConfigWriter');
61
+ (0, _defineProperty2().default)(this, "cliName", 'ts');
62
+ (0, _defineProperty2().default)(this, "patterns", [`**/${CONFIG_NAME}`]);
63
+ }
64
+ calcConfigFiles(executionContext) {
65
+ var _compiler$generateIde;
66
+ const compiler = this.compiler.getCompiler(executionContext);
67
+ if (!compiler) return undefined;
68
+ if (!compiler.id.toLowerCase().includes('typescript')) return undefined;
69
+ const config = (_compiler$generateIde = compiler.generateIdeConfig) === null || _compiler$generateIde === void 0 ? void 0 : _compiler$generateIde.call(compiler);
70
+ if (!config || !config.tsconfig) return undefined;
71
+ const tsConfigContent = JSON.stringify(config.tsconfig, null, 2);
72
+ const tsConfigHash = (0, _utils().sha1)(tsConfigContent);
73
+ const tsConfigName = `tsconfig.bit.${tsConfigHash}.json`;
74
+ const typescriptConfigFile = {
75
+ content: tsConfigContent,
76
+ hash: tsConfigHash,
77
+ name: tsConfigName
78
+ };
79
+ const globalTypesConfigFiles = this.getGlobalTypesConfigFiles(config);
80
+ return [typescriptConfigFile, ...globalTypesConfigFiles];
81
+ }
82
+ getGlobalTypesConfigFiles(config) {
83
+ const files = config.globalTypesPaths.map(path => {
84
+ const content = _fsExtra().default.readFileSync(path).toString();
85
+ const origName = (0, _path().basename)(path);
86
+ const nameWithHash = origName.replace(/\.d\.ts$/, '.{hash}.d.ts');
87
+ const name = `${GLOBAL_TYPES_DIR}/${nameWithHash}`;
88
+ return {
89
+ content,
90
+ name
91
+ };
92
+ });
93
+ return files;
94
+ }
95
+ async postProcessConfigFiles(writtenConfigFiles, executionContext, envMapValue) {
96
+ const tsConfigFile = writtenConfigFiles.find(file => file.name.includes('tsconfig.bit'));
97
+ if (!tsConfigFile) return Promise.resolve();
98
+ const tsConfigPath = tsConfigFile.filePath;
99
+ const tsConfig = await _fsExtra().default.readJson(tsConfigPath);
100
+ const compDirs = envMapValue.paths;
101
+ const newTsConfig = (0, _expandIncludeExclude().expandIncludeExclude)(tsConfigPath, tsConfig, compDirs);
102
+ _fsExtra().default.outputJSONSync(tsConfigPath, newTsConfig, {
103
+ spaces: 2
104
+ });
105
+ return Promise.resolve();
106
+ }
107
+ generateExtendingFile(writtenConfigFiles) {
108
+ const tsconfigFile = writtenConfigFiles.find(file => file.name.includes('tsconfig.bit'));
109
+ if (!tsconfigFile) return undefined;
110
+ const config = {
111
+ extends: tsconfigFile.filePath
112
+ };
113
+ const content = `${BIT_GENERATED_TS_CONFIG_COMMENT}\n\n${JSON.stringify(config, null, 2)}`;
114
+ return {
115
+ content,
116
+ name: 'tsconfig.json',
117
+ extendingTarget: tsconfigFile.filePath
118
+ };
119
+ }
120
+ async postProcessExtendingConfigFiles(args) {
121
+ const {
122
+ workspaceDir,
123
+ configsRootDir
124
+ } = args;
125
+ const rootTsConfigPath = (0, _path().join)(workspaceDir, 'tsconfig.json');
126
+ const exists = await _fsExtra().default.pathExists(rootTsConfigPath);
127
+ let tsConfig = {};
128
+ if (exists) {
129
+ const content = (await _fsExtra().default.readFile(rootTsConfigPath)).toString();
130
+ tsConfig = (0, _commentJson().parse)(content);
131
+ }
132
+ // @ts-ignore
133
+ const typeRoots = tsConfig.typeRoots || [];
134
+ typeRoots.push((0, _path().join)(configsRootDir, GLOBAL_TYPES_DIR));
135
+ (0, _commentJson().assign)(tsConfig, {
136
+ typeRoots
137
+ });
138
+ await _fsExtra().default.outputFile(rootTsConfigPath, (0, _commentJson().stringify)(tsConfig, null, 2));
139
+ }
140
+ isBitGenerated(filePath) {
141
+ const content = _fsExtra().default.readFileSync(filePath).toString();
142
+ return content.includes(BIT_GENERATED_TS_CONFIG_COMMENT);
143
+ }
144
+ }
145
+ exports.TypescriptConfigWriter = TypescriptConfigWriter;
146
+
147
+ //# sourceMappingURL=ts-config-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CONFIG_NAME","BIT_GENERATED_TS_CONFIG_COMMENT","GLOBAL_TYPES_DIR","TypescriptConfigWriter","constructor","compiler","calcConfigFiles","executionContext","getCompiler","undefined","id","toLowerCase","includes","config","generateIdeConfig","tsconfig","tsConfigContent","JSON","stringify","tsConfigHash","sha1","tsConfigName","typescriptConfigFile","content","hash","name","globalTypesConfigFiles","getGlobalTypesConfigFiles","files","globalTypesPaths","map","path","fs","readFileSync","toString","origName","basename","nameWithHash","replace","postProcessConfigFiles","writtenConfigFiles","envMapValue","tsConfigFile","find","file","Promise","resolve","tsConfigPath","filePath","tsConfig","readJson","compDirs","paths","newTsConfig","expandIncludeExclude","outputJSONSync","spaces","generateExtendingFile","tsconfigFile","extends","extendingTarget","postProcessExtendingConfigFiles","args","workspaceDir","configsRootDir","rootTsConfigPath","join","exists","pathExists","readFile","parse","typeRoots","push","assign","outputFile","isBitGenerated"],"sources":["ts-config-writer.ts"],"sourcesContent":["import { stringify, parse, assign } from 'comment-json';\nimport { sha1 } from '@teambit/legacy/dist/utils';\nimport fs from 'fs-extra';\nimport { ExecutionContext } from '@teambit/envs';\nimport { basename, join } from 'path';\nimport type {\n ConfigWriterEntry,\n WrittenConfigFile,\n ExtendingConfigFile,\n ConfigFile,\n EnvMapValue,\n PostProcessExtendingConfigFilesArgs,\n} from '@teambit/workspace-config-files';\nimport { CompilerMain } from '@teambit/compiler';\nimport { IdeConfig, TypescriptCompilerInterface } from './typescript-compiler-interface';\nimport { expandIncludeExclude } from './expand-include-exclude';\n\nconst CONFIG_NAME = 'tsconfig.json';\nconst BIT_GENERATED_TS_CONFIG_COMMENT = '// bit-generated-typescript-config';\nconst GLOBAL_TYPES_DIR = 'global-types';\n\nexport class TypescriptConfigWriter implements ConfigWriterEntry {\n name = 'TypescriptConfigWriter';\n cliName = 'ts';\n\n constructor(private compiler: CompilerMain) {}\n patterns: string[] = [`**/${CONFIG_NAME}`];\n\n calcConfigFiles(executionContext: ExecutionContext): ConfigFile[] | undefined {\n const compiler = this.compiler.getCompiler(executionContext) as TypescriptCompilerInterface;\n if (!compiler) return undefined;\n if (!compiler.id.toLowerCase().includes('typescript')) return undefined;\n const config = compiler.generateIdeConfig?.();\n if (!config || !config.tsconfig) return undefined;\n const tsConfigContent = JSON.stringify(config.tsconfig, null, 2);\n const tsConfigHash = sha1(tsConfigContent);\n const tsConfigName = `tsconfig.bit.${tsConfigHash}.json`;\n const typescriptConfigFile = {\n content: tsConfigContent,\n hash: tsConfigHash,\n name: tsConfigName,\n };\n const globalTypesConfigFiles = this.getGlobalTypesConfigFiles(config);\n return [typescriptConfigFile, ...globalTypesConfigFiles];\n }\n\n private getGlobalTypesConfigFiles(config: IdeConfig) {\n const files = config.globalTypesPaths.map((path) => {\n const content = fs.readFileSync(path).toString();\n const origName = basename(path);\n const nameWithHash = origName.replace(/\\.d\\.ts$/, '.{hash}.d.ts');\n const name = `${GLOBAL_TYPES_DIR}/${nameWithHash}`;\n return {\n content,\n name\n }\n });\n return files;\n }\n\n async postProcessConfigFiles(\n writtenConfigFiles: WrittenConfigFile[],\n executionContext: ExecutionContext,\n envMapValue: EnvMapValue\n ): Promise<void> {\n const tsConfigFile = writtenConfigFiles.find((file) => file.name.includes('tsconfig.bit'));\n if (!tsConfigFile) return Promise.resolve();\n const tsConfigPath = tsConfigFile.filePath;\n const tsConfig = await fs.readJson(tsConfigPath);\n const compDirs: string[] = envMapValue.paths;\n\n const newTsConfig = expandIncludeExclude(tsConfigPath, tsConfig, compDirs);\n\n fs.outputJSONSync(tsConfigPath, newTsConfig, { spaces: 2 });\n return Promise.resolve();\n }\n\n generateExtendingFile(writtenConfigFiles: WrittenConfigFile[]): ExtendingConfigFile | undefined {\n const tsconfigFile = writtenConfigFiles.find((file) => file.name.includes('tsconfig.bit'));\n if (!tsconfigFile) return undefined;\n const config = {\n extends: tsconfigFile.filePath,\n };\n const content = `${BIT_GENERATED_TS_CONFIG_COMMENT}\\n\\n${JSON.stringify(config, null, 2)}`;\n return { content, name: 'tsconfig.json', extendingTarget: tsconfigFile.filePath };\n }\n\n async postProcessExtendingConfigFiles?(args: PostProcessExtendingConfigFilesArgs): Promise<void> {\n const { workspaceDir, configsRootDir } = args;\n const rootTsConfigPath = join(workspaceDir, 'tsconfig.json');\n const exists = await fs.pathExists(rootTsConfigPath);\n let tsConfig = {};\n if (exists) {\n const content = (await fs.readFile(rootTsConfigPath)).toString();\n tsConfig = parse(content);\n }\n // @ts-ignore\n const typeRoots = tsConfig.typeRoots || [];\n typeRoots.push(join(configsRootDir, GLOBAL_TYPES_DIR));\n assign(tsConfig, { typeRoots });\n await fs.outputFile(rootTsConfigPath, stringify(tsConfig, null, 2));\n }\n\n isBitGenerated(filePath: string): boolean {\n const content = fs.readFileSync(filePath).toString();\n return content.includes(BIT_GENERATED_TS_CONFIG_COMMENT);\n }\n}\n"],"mappings":"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"}
@@ -282,10 +282,11 @@ function dedupePaths(pathsPerEnvId) {
282
282
  // rootDir parent is always rootDir, so leave it as is.
283
283
  if (allPathsPerEnvId[rootDir]) dedupedPathsPerEnvIds[rootDir] = allPathsPerEnvId[rootDir];
284
284
  const envIdsPerDedupedPaths = (0, _lodash().invertBy)(dedupedPathsPerEnvIds);
285
- return Object.keys(envIdsPerDedupedPaths).map(envIdStr => ({
285
+ const dedupedPaths = Object.keys(envIdsPerDedupedPaths).map(envIdStr => ({
286
286
  ids: envIdStr.split(','),
287
287
  paths: envIdsPerDedupedPaths[envIdStr]
288
288
  }));
289
+ return dedupedPaths;
289
290
  }
290
291
 
291
292
  //# sourceMappingURL=tsconfig-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TsconfigWriter","constructor","workspace","logger","write","envsExecutionContext","options","pathsPerEnvs","getPathsPerEnv","tsconfigPathsPerEnv","map","pathsPerEnv","envIds","ids","tsconfig","getTsconfigFromEnv","env","paths","dryRun","silent","promptForWriting","p","flat","writeFiles","compiler","getCompiler","id","TypescriptAspect","displayConfig","JSON","stringify","getTsConfig","undefined","clean","dedupe","componentPaths","allPossibleDirs","getAllPossibleDirsFromPaths","dirsWithTsconfig","filterDirsWithTsconfigFile","tsconfigFiles","dir","path","join","length","promptForCleaning","deleteFiles","dirs","clearStatusLine","ok","yesno","question","chalk","underline","bold","PromptCanceled","Promise","all","f","fs","remove","tsconfigPathsPerEnvs","writeFile","envExecution","components","c","componentDir","relative","envsWithFiles","e","file","envsPerFile","isEnvProcessed","envId","find","forEach","foundSameFile","filter","isEqual","push","fileContent","pathsPerEnvIds","compact","envsPerDedupedPaths","dedupePaths","dedupedPathsPerEnvs","envWithDedupePaths","found","includes","Error","hasTsconfig","pathExists","getAllParentsDirOfPath","uniq","current","dirname","pathsPerEnvId","rootDir","individualPathPerConcatenatedEnvIds","reduce","acc","allPaths","Object","keys","allPathsPerEnvId","calculateBestEnvForDir","allPathsShareSameDir","startsWith","countPerEnv","envIdStr","max","Math","values","envWithMax","dirPath","dedupedPathsPerEnvIds","envIdsPerDedupedPaths","invertBy","split"],"sources":["tsconfig-writer.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport yesno from 'yesno';\nimport { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';\nimport { compact, invertBy, isEqual, uniq } from 'lodash';\nimport { PromptCanceled } from '@teambit/legacy/dist/prompts/exceptions';\nimport { Environment, ExecutionContext } from '@teambit/envs';\nimport { Workspace } from '@teambit/workspace';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport { TsconfigWriterOptions } from './typescript.main.runtime';\nimport { TypescriptAspect } from '.';\n\nexport type TsconfigPathsPerEnv = { envIds: string[]; tsconfig: string; paths: string[] };\n\ntype PathsPerEnv = { env: Environment; ids: string[]; paths: string[] };\n\nexport class TsconfigWriter {\n constructor(private workspace: Workspace, private logger: Logger) {}\n\n async write(\n envsExecutionContext: ExecutionContext[],\n options: TsconfigWriterOptions\n ): Promise<TsconfigPathsPerEnv[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, options);\n const tsconfigPathsPerEnv = pathsPerEnvs.map((pathsPerEnv) => ({\n envIds: pathsPerEnv.ids,\n tsconfig: this.getTsconfigFromEnv(pathsPerEnv.env), // pathsPerEnv.env.getTsConfig(),\n paths: pathsPerEnv.paths,\n }));\n if (options.dryRun) return tsconfigPathsPerEnv;\n if (!options.silent) await this.promptForWriting(tsconfigPathsPerEnv.map((p) => p.paths).flat());\n await this.writeFiles(tsconfigPathsPerEnv);\n return tsconfigPathsPerEnv;\n }\n\n private getTsconfigFromEnv(env: Environment) {\n const compiler = env.getCompiler();\n if (compiler.id === TypescriptAspect.id) {\n return compiler.displayConfig() as string;\n }\n return JSON.stringify(env.getTsConfig(), undefined, 2);\n }\n\n async clean(envsExecutionContext: ExecutionContext[], { dryRun, silent }: TsconfigWriterOptions): Promise<string[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, { dedupe: false });\n const componentPaths = pathsPerEnvs.map((p) => p.paths).flat();\n const allPossibleDirs = getAllPossibleDirsFromPaths(componentPaths);\n const dirsWithTsconfig = await filterDirsWithTsconfigFile(allPossibleDirs);\n const tsconfigFiles = dirsWithTsconfig.map((dir) => path.join(dir, 'tsconfig.json'));\n if (dryRun) return tsconfigFiles;\n if (!dirsWithTsconfig.length) return [];\n if (!silent) await this.promptForCleaning(tsconfigFiles);\n await this.deleteFiles(tsconfigFiles);\n return tsconfigFiles;\n }\n\n private async promptForWriting(dirs: string[]) {\n this.logger.clearStatusLine();\n const tsconfigFiles = dirs.map((dir) => path.join(dir, 'tsconfig.json'));\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be written:')}\n${tsconfigFiles.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 promptForCleaning(tsconfigFiles: string[]) {\n this.logger.clearStatusLine();\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be deleted:')}\n${tsconfigFiles.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(tsconfigFiles: string[]) {\n await Promise.all(tsconfigFiles.map((f) => fs.remove(f)));\n }\n\n private async writeFiles(tsconfigPathsPerEnvs: TsconfigPathsPerEnv[]) {\n await Promise.all(\n tsconfigPathsPerEnvs.map((pathsPerEnv) => {\n return Promise.all(\n pathsPerEnv.paths.map((p) => fs.writeFile(path.join(p, 'tsconfig.json'), pathsPerEnv.tsconfig))\n );\n })\n );\n }\n\n private getPathsPerEnv(envsExecutionContext: ExecutionContext[], { dedupe }: TsconfigWriterOptions): PathsPerEnv[] {\n const pathsPerEnvs = envsExecutionContext.map((envExecution) => {\n return {\n id: envExecution.id,\n env: envExecution.env,\n paths: envExecution.components.map((c) => this.workspace.componentDir(c.id, undefined, { relative: true })),\n };\n });\n if (!dedupe) {\n return pathsPerEnvs.map(({ id, env, paths }) => ({ ids: [id], env, paths }));\n }\n\n const envsWithFiles = envsExecutionContext.map((e) => ({\n id: e.id,\n file: e.env.getTsConfig(),\n }));\n const envsPerFile: { envIds: string[]; fileContent: Record<string, any> }[] = [];\n const isEnvProcessed = (envId: string) =>\n envsPerFile\n .map((e) => e.envIds)\n .flat()\n .find((e) => e === envId);\n envsWithFiles.forEach(({ id, file }) => {\n if (isEnvProcessed(id)) return;\n const foundSameFile = envsWithFiles.filter((e) => isEqual(file, e.file));\n envsPerFile.push({ envIds: foundSameFile.map((f) => f.id), fileContent: file });\n });\n const pathsPerEnvIds = envsPerFile.map((e) => ({\n ids: e.envIds,\n paths: compact(e.envIds.map((envId) => pathsPerEnvs.find((p) => p.id === envId)?.paths).flat()),\n }));\n // const pathsPerEnvIds = pathsPerEnvs.map((p) => ({ ids: p.ids, paths: p.paths }));\n const envsPerDedupedPaths = dedupePaths(pathsPerEnvIds);\n const dedupedPathsPerEnvs: PathsPerEnv[] = envsPerDedupedPaths.map((envWithDedupePaths) => {\n const found = pathsPerEnvs.find((p) => envWithDedupePaths.ids.includes(p.id));\n if (!found) throw new Error(`dedupedPathsPerEnvs, unable to find ${envWithDedupePaths.ids}`);\n return {\n env: found.env,\n ids: envWithDedupePaths.ids,\n paths: envWithDedupePaths.paths,\n };\n });\n\n return dedupedPathsPerEnvs;\n }\n}\n\ntype PathsPerEnvIds = { ids: string[]; paths: string[] };\n\nasync function filterDirsWithTsconfigFile(dirs: string[]): Promise<string[]> {\n const dirsWithTsconfig = await Promise.all(\n dirs.map(async (dir) => {\n const hasTsconfig = await fs.pathExists(path.join(dir, 'tsconfig.json'));\n return hasTsconfig ? dir : undefined;\n })\n );\n return compact(dirsWithTsconfig);\n}\n\nfunction getAllPossibleDirsFromPaths(paths: PathLinuxRelative[]): PathLinuxRelative[] {\n const dirs = paths.map((p) => getAllParentsDirOfPath(p)).flat();\n dirs.push('.'); // add the root dir\n return uniq(dirs);\n}\n\nfunction getAllParentsDirOfPath(p: PathLinuxRelative): PathLinuxRelative[] {\n const all: string[] = [];\n let current = p;\n while (current !== '.') {\n all.push(current);\n current = path.dirname(current);\n }\n return all;\n}\n\n/**\n * easier to understand by an example:\n * input:\n * [\n * { id: react, paths: [ui/button, ui/form] },\n * { id: aspect, paths: [p/a1, p/a2] },\n * { id: node, paths: [p/n1] },\n * ]\n *\n * output:\n * [\n * { id: react, paths: [ui] },\n * { id: aspect, paths: [p] },\n * { id: node, 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(pathsPerEnvId: PathsPerEnvIds[]): PathsPerEnvIds[] {\n const rootDir = '.';\n const individualPathPerConcatenatedEnvIds: { [path: string]: string } = pathsPerEnvId.reduce((acc, current) => {\n current.paths.forEach((p) => {\n acc[p] = current.ids.join(',');\n });\n return acc;\n }, {});\n const allPaths = Object.keys(individualPathPerConcatenatedEnvIds);\n const allPossibleDirs = getAllPossibleDirsFromPaths(allPaths);\n\n const allPathsPerEnvId: { [path: string]: string | null } = {}; // null when parent-dir has same amount of comps per env.\n\n const calculateBestEnvForDir = (dir: string) => {\n if (individualPathPerConcatenatedEnvIds[dir]) {\n // it's the component dir, so it's the best env\n allPathsPerEnvId[dir] = individualPathPerConcatenatedEnvIds[dir];\n return;\n }\n const allPathsShareSameDir = dir === rootDir ? allPaths : allPaths.filter((p) => p.startsWith(`${dir}/`));\n const countPerEnv: { [env: string]: number } = {};\n allPathsShareSameDir.forEach((p) => {\n const envIdStr = individualPathPerConcatenatedEnvIds[p];\n if (countPerEnv[envIdStr]) countPerEnv[envIdStr] += 1;\n else countPerEnv[envIdStr] = 1;\n });\n const max = Math.max(...Object.values(countPerEnv));\n const envWithMax = Object.keys(countPerEnv).filter((env) => countPerEnv[env] === max);\n if (!envWithMax.length) throw new Error(`must be at least one env related to path \"${dir}\"`);\n if (envWithMax.length > 1) allPathsPerEnvId[dir] = null;\n else allPathsPerEnvId[dir] = envWithMax[0];\n };\n\n allPossibleDirs.forEach((dirPath) => {\n calculateBestEnvForDir(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 dedupedPathsPerEnvIds = Object.keys(allPathsPerEnvId).reduce((acc, current) => {\n if (allPathsPerEnvId[current] && allPathsPerEnvId[path.dirname(current)] !== allPathsPerEnvId[current]) {\n acc[current] = allPathsPerEnvId[current];\n }\n\n return acc;\n }, {});\n // rootDir parent is always rootDir, so leave it as is.\n if (allPathsPerEnvId[rootDir]) dedupedPathsPerEnvIds[rootDir] = allPathsPerEnvId[rootDir];\n\n const envIdsPerDedupedPaths = invertBy(dedupedPathsPerEnvIds);\n\n return Object.keys(envIdsPerDedupedPaths).map((envIdStr) => ({\n ids: envIdStr.split(','),\n paths: envIdsPerDedupedPaths[envIdStr],\n }));\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["TsconfigWriter","constructor","workspace","logger","write","envsExecutionContext","options","pathsPerEnvs","getPathsPerEnv","tsconfigPathsPerEnv","map","pathsPerEnv","envIds","ids","tsconfig","getTsconfigFromEnv","env","paths","dryRun","silent","promptForWriting","p","flat","writeFiles","compiler","getCompiler","id","TypescriptAspect","displayConfig","JSON","stringify","getTsConfig","undefined","clean","dedupe","componentPaths","allPossibleDirs","getAllPossibleDirsFromPaths","dirsWithTsconfig","filterDirsWithTsconfigFile","tsconfigFiles","dir","path","join","length","promptForCleaning","deleteFiles","dirs","clearStatusLine","ok","yesno","question","chalk","underline","bold","PromptCanceled","Promise","all","f","fs","remove","tsconfigPathsPerEnvs","writeFile","envExecution","components","c","componentDir","relative","envsWithFiles","e","file","envsPerFile","isEnvProcessed","envId","find","forEach","foundSameFile","filter","isEqual","push","fileContent","pathsPerEnvIds","compact","envsPerDedupedPaths","dedupePaths","dedupedPathsPerEnvs","envWithDedupePaths","found","includes","Error","hasTsconfig","pathExists","getAllParentsDirOfPath","uniq","current","dirname","pathsPerEnvId","rootDir","individualPathPerConcatenatedEnvIds","reduce","acc","allPaths","Object","keys","allPathsPerEnvId","calculateBestEnvForDir","allPathsShareSameDir","startsWith","countPerEnv","envIdStr","max","Math","values","envWithMax","dirPath","dedupedPathsPerEnvIds","envIdsPerDedupedPaths","invertBy","dedupedPaths","split"],"sources":["tsconfig-writer.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport yesno from 'yesno';\nimport { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';\nimport { compact, invertBy, isEqual, uniq } from 'lodash';\nimport { PromptCanceled } from '@teambit/legacy/dist/prompts/exceptions';\nimport { Environment, ExecutionContext } from '@teambit/envs';\nimport { Workspace } from '@teambit/workspace';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport { TsconfigWriterOptions } from './typescript.main.runtime';\nimport { TypescriptAspect } from '.';\n\nexport type TsconfigPathsPerEnv = { envIds: string[]; tsconfig: string; paths: string[] };\n\ntype PathsPerEnv = { env: Environment; ids: string[]; paths: string[] };\n\nexport class TsconfigWriter {\n constructor(private workspace: Workspace, private logger: Logger) {}\n\n async write(\n envsExecutionContext: ExecutionContext[],\n options: TsconfigWriterOptions\n ): Promise<TsconfigPathsPerEnv[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, options);\n const tsconfigPathsPerEnv = pathsPerEnvs.map((pathsPerEnv) => ({\n envIds: pathsPerEnv.ids,\n tsconfig: this.getTsconfigFromEnv(pathsPerEnv.env), // pathsPerEnv.env.getTsConfig(),\n paths: pathsPerEnv.paths,\n }));\n if (options.dryRun) return tsconfigPathsPerEnv;\n if (!options.silent) await this.promptForWriting(tsconfigPathsPerEnv.map((p) => p.paths).flat());\n await this.writeFiles(tsconfigPathsPerEnv);\n return tsconfigPathsPerEnv;\n }\n\n private getTsconfigFromEnv(env: Environment) {\n const compiler = env.getCompiler();\n if (compiler.id === TypescriptAspect.id) {\n return compiler.displayConfig() as string;\n }\n return JSON.stringify(env.getTsConfig(), undefined, 2);\n }\n\n async clean(envsExecutionContext: ExecutionContext[], { dryRun, silent }: TsconfigWriterOptions): Promise<string[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, { dedupe: false });\n const componentPaths = pathsPerEnvs.map((p) => p.paths).flat();\n const allPossibleDirs = getAllPossibleDirsFromPaths(componentPaths);\n const dirsWithTsconfig = await filterDirsWithTsconfigFile(allPossibleDirs);\n const tsconfigFiles = dirsWithTsconfig.map((dir) => path.join(dir, 'tsconfig.json'));\n if (dryRun) return tsconfigFiles;\n if (!dirsWithTsconfig.length) return [];\n if (!silent) await this.promptForCleaning(tsconfigFiles);\n await this.deleteFiles(tsconfigFiles);\n return tsconfigFiles;\n }\n\n private async promptForWriting(dirs: string[]) {\n this.logger.clearStatusLine();\n const tsconfigFiles = dirs.map((dir) => path.join(dir, 'tsconfig.json'));\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be written:')}\n${tsconfigFiles.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 promptForCleaning(tsconfigFiles: string[]) {\n this.logger.clearStatusLine();\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be deleted:')}\n${tsconfigFiles.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(tsconfigFiles: string[]) {\n await Promise.all(tsconfigFiles.map((f) => fs.remove(f)));\n }\n\n private async writeFiles(tsconfigPathsPerEnvs: TsconfigPathsPerEnv[]) {\n await Promise.all(\n tsconfigPathsPerEnvs.map((pathsPerEnv) => {\n return Promise.all(\n pathsPerEnv.paths.map((p) => fs.writeFile(path.join(p, 'tsconfig.json'), pathsPerEnv.tsconfig))\n );\n })\n );\n }\n\n private getPathsPerEnv(envsExecutionContext: ExecutionContext[], { dedupe }: TsconfigWriterOptions): PathsPerEnv[] {\n const pathsPerEnvs = envsExecutionContext.map((envExecution) => {\n return {\n id: envExecution.id,\n env: envExecution.env,\n paths: envExecution.components.map((c) => this.workspace.componentDir(c.id, undefined, { relative: true })),\n };\n });\n if (!dedupe) {\n return pathsPerEnvs.map(({ id, env, paths }) => ({ ids: [id], env, paths }));\n }\n\n const envsWithFiles = envsExecutionContext.map((e) => ({\n id: e.id,\n file: e.env.getTsConfig(),\n }));\n const envsPerFile: { envIds: string[]; fileContent: Record<string, any> }[] = [];\n const isEnvProcessed = (envId: string) =>\n envsPerFile\n .map((e) => e.envIds)\n .flat()\n .find((e) => e === envId);\n envsWithFiles.forEach(({ id, file }) => {\n if (isEnvProcessed(id)) return;\n const foundSameFile = envsWithFiles.filter((e) => isEqual(file, e.file));\n envsPerFile.push({ envIds: foundSameFile.map((f) => f.id), fileContent: file });\n });\n const pathsPerEnvIds = envsPerFile.map((e) => ({\n ids: e.envIds,\n paths: compact(e.envIds.map((envId) => pathsPerEnvs.find((p) => p.id === envId)?.paths).flat()),\n }));\n // const pathsPerEnvIds = pathsPerEnvs.map((p) => ({ ids: p.ids, paths: p.paths }));\n const envsPerDedupedPaths = dedupePaths(pathsPerEnvIds);\n const dedupedPathsPerEnvs: PathsPerEnv[] = envsPerDedupedPaths.map((envWithDedupePaths) => {\n const found = pathsPerEnvs.find((p) => envWithDedupePaths.ids.includes(p.id));\n if (!found) throw new Error(`dedupedPathsPerEnvs, unable to find ${envWithDedupePaths.ids}`);\n return {\n env: found.env,\n ids: envWithDedupePaths.ids,\n paths: envWithDedupePaths.paths,\n };\n });\n\n return dedupedPathsPerEnvs;\n }\n}\n\ntype PathsPerEnvIds = { ids: string[]; paths: string[] };\n\nasync function filterDirsWithTsconfigFile(dirs: string[]): Promise<string[]> {\n const dirsWithTsconfig = await Promise.all(\n dirs.map(async (dir) => {\n const hasTsconfig = await fs.pathExists(path.join(dir, 'tsconfig.json'));\n return hasTsconfig ? dir : undefined;\n })\n );\n return compact(dirsWithTsconfig);\n}\n\nfunction getAllPossibleDirsFromPaths(paths: PathLinuxRelative[]): PathLinuxRelative[] {\n const dirs = paths.map((p) => getAllParentsDirOfPath(p)).flat();\n dirs.push('.'); // add the root dir\n return uniq(dirs);\n}\n\nfunction getAllParentsDirOfPath(p: PathLinuxRelative): PathLinuxRelative[] {\n const all: string[] = [];\n let current = p;\n while (current !== '.') {\n all.push(current);\n current = path.dirname(current);\n }\n return all;\n}\n\n/**\n * easier to understand by an example:\n * input:\n * [\n * { id: react, paths: [ui/button, ui/form] },\n * { id: aspect, paths: [p/a1, p/a2] },\n * { id: node, paths: [p/n1] },\n * ]\n *\n * output:\n * [\n * { id: react, paths: [ui] },\n * { id: aspect, paths: [p] },\n * { id: node, 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(pathsPerEnvId: PathsPerEnvIds[]): PathsPerEnvIds[] {\n const rootDir = '.';\n const individualPathPerConcatenatedEnvIds: { [path: string]: string } = pathsPerEnvId.reduce((acc, current) => {\n current.paths.forEach((p) => {\n acc[p] = current.ids.join(',');\n });\n return acc;\n }, {});\n const allPaths = Object.keys(individualPathPerConcatenatedEnvIds);\n const allPossibleDirs = getAllPossibleDirsFromPaths(allPaths);\n\n const allPathsPerEnvId: { [path: string]: string | null } = {}; // null when parent-dir has same amount of comps per env.\n\n const calculateBestEnvForDir = (dir: string) => {\n if (individualPathPerConcatenatedEnvIds[dir]) {\n // it's the component dir, so it's the best env\n allPathsPerEnvId[dir] = individualPathPerConcatenatedEnvIds[dir];\n return;\n }\n const allPathsShareSameDir = dir === rootDir ? allPaths : allPaths.filter((p) => p.startsWith(`${dir}/`));\n const countPerEnv: { [env: string]: number } = {};\n allPathsShareSameDir.forEach((p) => {\n const envIdStr = individualPathPerConcatenatedEnvIds[p];\n if (countPerEnv[envIdStr]) countPerEnv[envIdStr] += 1;\n else countPerEnv[envIdStr] = 1;\n });\n const max = Math.max(...Object.values(countPerEnv));\n const envWithMax = Object.keys(countPerEnv).filter((env) => countPerEnv[env] === max);\n if (!envWithMax.length) throw new Error(`must be at least one env related to path \"${dir}\"`);\n if (envWithMax.length > 1) allPathsPerEnvId[dir] = null;\n else allPathsPerEnvId[dir] = envWithMax[0];\n };\n\n allPossibleDirs.forEach((dirPath) => {\n calculateBestEnvForDir(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 dedupedPathsPerEnvIds = Object.keys(allPathsPerEnvId).reduce((acc, current) => {\n if (allPathsPerEnvId[current] && allPathsPerEnvId[path.dirname(current)] !== allPathsPerEnvId[current]) {\n acc[current] = allPathsPerEnvId[current];\n }\n\n return acc;\n }, {});\n // rootDir parent is always rootDir, so leave it as is.\n if (allPathsPerEnvId[rootDir]) dedupedPathsPerEnvIds[rootDir] = allPathsPerEnvId[rootDir];\n\n const envIdsPerDedupedPaths = invertBy(dedupedPathsPerEnvIds);\n\n const dedupedPaths = Object.keys(envIdsPerDedupedPaths).map((envIdStr) => ({\n ids: envIdStr.split(','),\n paths: envIdsPerDedupedPaths[envIdStr],\n }));\n return dedupedPaths;\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Compiler } from "@teambit/compiler";
2
+ export declare type IdeConfig = {
3
+ tsconfig?: Object;
4
+ globalTypesPaths: string[];
5
+ };
6
+ export interface TypescriptCompilerInterface extends Compiler {
7
+ generateIdeConfig?: () => IdeConfig;
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=typescript-compiler-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["typescript-compiler-interface.ts"],"sourcesContent":["import { Compiler } from \"@teambit/compiler\";\n\nexport type IdeConfig = {\n tsconfig?: Object;\n globalTypesPaths: string[]\n}\n\nexport interface TypescriptCompilerInterface extends Compiler {\n generateIdeConfig?: () => IdeConfig\n}\n"],"mappings":""}
@@ -3,7 +3,8 @@ import { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/com
3
3
  import { Logger } from '@teambit/logger';
4
4
  import ts from 'typescript';
5
5
  import { TypeScriptCompilerOptions } from './compiler-options';
6
- export declare class TypescriptCompiler implements Compiler {
6
+ import { TypescriptCompilerInterface } from './typescript-compiler-interface';
7
+ export declare class TypescriptCompiler implements Compiler, TypescriptCompilerInterface {
7
8
  readonly id: string;
8
9
  private logger;
9
10
  private options;
@@ -15,6 +16,10 @@ export declare class TypescriptCompiler implements Compiler {
15
16
  constructor(id: string, logger: Logger, options: TypeScriptCompilerOptions, tsModule: typeof ts);
16
17
  displayName: string;
17
18
  deleteDistDir: boolean;
19
+ generateIdeConfig(): {
20
+ tsconfig: Record<string, any>;
21
+ globalTypesPaths: string[];
22
+ };
18
23
  displayConfig(): string;
19
24
  getDistDir(): string;
20
25
  /**
@@ -69,6 +69,12 @@ class TypescriptCompiler {
69
69
  // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion
70
70
  this.options.tsconfig.compilerOptions.outDir = this.distDir;
71
71
  }
72
+ generateIdeConfig() {
73
+ return {
74
+ tsconfig: this.options.tsconfig,
75
+ globalTypesPaths: this.options.types
76
+ };
77
+ }
72
78
  displayConfig() {
73
79
  return this.stringifyTsconfig(this.options.tsconfig);
74
80
  }
@@ -1 +1 @@
1
- {"version":3,"names":["TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","length","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","push","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","postBuild","Promise","all","packageJson","PackageJsonFile","loadFromCapsuleSync","packageJsonObject","types","write","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","undefined","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n async postBuild(context: BuildContext) {\n await Promise.all(\n context.capsuleNetwork.seedersCapsules.map(async (capsule) => {\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n // the types['index.ts'] is needed only during the build to avoid errors when tsc finds the\n // same type once in the d.ts and once in the ts file.\n if (packageJson.packageJsonObject.types) {\n delete packageJson.packageJsonObject.types;\n await packageJson.write();\n }\n })\n );\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","generateIdeConfig","globalTypesPaths","types","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","length","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","push","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","postBuild","Promise","all","packageJson","PackageJsonFile","loadFromCapsuleSync","packageJsonObject","write","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","undefined","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptCompilerInterface } from './typescript-compiler-interface';\n\nexport class TypescriptCompiler implements Compiler, TypescriptCompilerInterface {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n generateIdeConfig(){\n return {\n tsconfig: this.options.tsconfig,\n globalTypesPaths: this.options.types\n }\n }\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n async postBuild(context: BuildContext) {\n await Promise.all(\n context.capsuleNetwork.seedersCapsules.map(async (capsule) => {\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n // the types['index.ts'] is needed only during the build to avoid errors when tsc finds the\n // same type once in the d.ts and once in the ts file.\n if (packageJson.packageJsonObject.types) {\n delete packageJson.packageJsonObject.types;\n await packageJson.write();\n }\n })\n );\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import ts from 'typescript';
2
2
  import { SlotRegistry } from '@teambit/harmony';
3
3
  import { CLIMain } from '@teambit/cli';
4
- import { Compiler } from '@teambit/compiler';
4
+ import { Compiler, CompilerMain } from '@teambit/compiler';
5
5
  import { Logger, LoggerMain } from '@teambit/logger';
6
6
  import { SchemaExtractor, SchemaMain } from '@teambit/schema';
7
7
  import { PackageJsonProps } from '@teambit/pkg';
@@ -10,6 +10,7 @@ import type { Workspace } from '@teambit/workspace';
10
10
  import { DependencyResolverMain } from '@teambit/dependency-resolver';
11
11
  import { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';
12
12
  import { AspectLoaderMain } from '@teambit/aspect-loader';
13
+ import { WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';
13
14
  import { WatcherMain } from '@teambit/watcher';
14
15
  import type { Component } from '@teambit/component';
15
16
  import { EnvsMain } from '@teambit/envs';
@@ -111,7 +112,7 @@ export declare class TypescriptMain {
111
112
  static runtime: import("@teambit/harmony").RuntimeDefinition;
112
113
  static dependencies: import("@teambit/harmony").Aspect[];
113
114
  static slots: ((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>)[];
114
- static provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher]: [
115
+ static provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, workspaceConfigFiles, compiler]: [
115
116
  SchemaMain,
116
117
  LoggerMain,
117
118
  AspectLoaderMain,
@@ -119,7 +120,9 @@ export declare class TypescriptMain {
119
120
  CLIMain,
120
121
  DependencyResolverMain,
121
122
  EnvsMain,
122
- WatcherMain
123
+ WatcherMain,
124
+ WorkspaceConfigFilesMain,
125
+ CompilerMain
123
126
  ], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
124
127
  }
125
128
  export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[] | undefined, context: TsConfigTransformContext): TypescriptConfigMutator;
@@ -38,6 +38,13 @@ function _cli() {
38
38
  };
39
39
  return data;
40
40
  }
41
+ function _compiler() {
42
+ const data = require("@teambit/compiler");
43
+ _compiler = function () {
44
+ return data;
45
+ };
46
+ return data;
47
+ }
41
48
  function _logger() {
42
49
  const data = require("@teambit/logger");
43
50
  _logger = function () {
@@ -94,6 +101,13 @@ function _aspectLoader() {
94
101
  };
95
102
  return data;
96
103
  }
104
+ function _workspaceConfigFiles() {
105
+ const data = _interopRequireDefault(require("@teambit/workspace-config-files"));
106
+ _workspaceConfigFiles = function () {
107
+ return data;
108
+ };
109
+ return data;
110
+ }
97
111
  function _watcher() {
98
112
  const data = _interopRequireDefault(require("@teambit/watcher"));
99
113
  _watcher = function () {
@@ -171,6 +185,13 @@ function _writeTsconfig() {
171
185
  };
172
186
  return data;
173
187
  }
188
+ function _tsConfigWriter() {
189
+ const data = require("./ts-config-writer");
190
+ _tsConfigWriter = function () {
191
+ return data;
192
+ };
193
+ return data;
194
+ }
174
195
  class TypescriptMain {
175
196
  constructor(logger, schemaTransformerSlot, workspace, depResolver, envs, tsConfigWriter, aspectLoader) {
176
197
  this.logger = logger;
@@ -356,9 +377,10 @@ class TypescriptMain {
356
377
  results: 'succeed'
357
378
  };
358
379
  }
359
- static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher], config, [schemaTransformerSlot]) {
380
+ static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, workspaceConfigFiles, compiler], config, [schemaTransformerSlot]) {
360
381
  schema.registerParser(new (_typescript5().TypeScriptParser)());
361
382
  const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
383
+ workspaceConfigFiles.registerConfigWriter(new (_tsConfigWriter().TypescriptConfigWriter)(compiler));
362
384
  aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
363
385
  const tsconfigWriter = new (_tsconfigWriter().TsconfigWriter)(workspace, logger);
364
386
  const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter, aspectLoader);
@@ -376,7 +398,7 @@ class TypescriptMain {
376
398
  }
377
399
  exports.TypescriptMain = TypescriptMain;
378
400
  (0, _defineProperty2().default)(TypescriptMain, "runtime", _cli().MainRuntime);
379
- (0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect, _dependencyResolver().DependencyResolverAspect, _envs().default, _watcher().default]);
401
+ (0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect, _dependencyResolver().DependencyResolverAspect, _envs().default, _watcher().default, _workspaceConfigFiles().default, _compiler().CompilerAspect]);
380
402
  (0, _defineProperty2().default)(TypescriptMain, "slots", [_harmony().Slot.withType()]);
381
403
  _typescript3().TypescriptAspect.addRuntime(TypescriptMain);
382
404
  function runTransformersWithContext(config, transformers = [], context) {
@@ -1 +1 @@
1
- {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","envs","tsConfigWriter","aspectLoader","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","setTarget","tsconfig","compilerOptions","module","lib","createSchemaExtractor","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","cleanTsconfigJson","list","runtime","createEnvironment","execContext","getEnvExecutionContext","results","TsconfigWriter","clean","writeTsconfigJson","cleanResults","writeResults","write","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","cli","watcher","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclarationTransformer","ExportAssignmentTransformer","FunctionLikeTransformer","ParameterTransformer","SetAccessorTransformer","GetAccessorTransformer","IndexSignatureTransformer","PropertyDeclarationTransformer","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDeclarationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","IntersectionTypeTransformer","UnionTypeTransformer","TypeReferenceTransformer","TypeLiteralTransformer","LiteralTypeTransformer","TypeQueryTransformer","ArrayTypeTransformer","TypeOperatorTransformer","KeywordTypeTransformer","TupleTypeTransformer","ParenthesizedTypeTransformer","TypePredicateTransformer","IndexedAccessTypeTransformer","TemplateLiteralTypeSpanTransformer","TemplateLiteralTypeTransformer","ThisTypeTransformer","ConditionalTypeTransformer","NamedTupleTransformer","ConstructorTransformer","ImportDeclarationTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","WatcherAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { Workspace } from '@teambit/workspace';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport WatcherAspect, { WatcherMain, WatchOptions } from '@teambit/watcher';\nimport type { Component } from '@teambit/component';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclarationTransformer,\n TypeAliasTransformer,\n FunctionLikeTransformer,\n SetAccessorTransformer,\n GetAccessorTransformer,\n IndexSignatureTransformer,\n PropertyDeclarationTransformer,\n ParameterTransformer,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDeclarationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\n ExportAssignmentTransformer,\n ImportDeclarationTransformer,\n IntersectionTypeTransformer,\n UnionTypeTransformer,\n TypeReferenceTransformer,\n TypeLiteralTransformer,\n LiteralTypeTransformer,\n TypeQueryTransformer,\n ArrayTypeTransformer,\n TypeOperatorTransformer,\n KeywordTypeTransformer,\n TupleTypeTransformer,\n ParenthesizedTypeTransformer,\n TypePredicateTransformer,\n IndexedAccessTypeTransformer,\n TemplateLiteralTypeSpanTransformer,\n TemplateLiteralTypeTransformer,\n ThisTypeTransformer,\n ConditionalTypeTransformer,\n NamedTupleTransformer,\n ConstructorTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsconfigWriterOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n dryRunWithTsconfig?: boolean;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n readonly schemaTransformerSlot: SchemaTransformerSlot,\n readonly workspace: Workspace,\n readonly depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setTarget('ES2017');\n config.raw.tsconfig.compilerOptions.module = 'es2020';\n config.raw.tsconfig.compilerOptions.lib = ['es2021', 'dom', 'ESNext.String', 'dom.Iterable'];\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace,\n this.aspectLoader,\n this.logger\n );\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n async cleanTsconfigJson(options: TsconfigWriterOptions = {}) {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n const results = await new TsconfigWriter(this.workspace, this.logger).clean(execContext, options);\n\n return results;\n }\n\n async writeTsconfigJson(options: TsconfigWriterOptions = {}): Promise<{\n cleanResults?: string[];\n writeResults: TsconfigPathsPerEnv[];\n }> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n let cleanResults: string[] | undefined;\n if (options.clean) {\n cleanResults = await this.tsConfigWriter.clean(execContext, options);\n }\n\n const writeResults = await this.tsConfigWriter.write(execContext, options);\n\n return { writeResults, cleanResults };\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n EnvsAspect,\n WatcherAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain,\n WatcherMain\n ],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(\n logger,\n schemaTransformerSlot,\n workspace,\n depResolver,\n envs,\n tsconfigWriter,\n aspectLoader\n );\n schemaTransformerSlot.register([\n new ExportDeclarationTransformer(),\n new ExportAssignmentTransformer(),\n new FunctionLikeTransformer(),\n new ParameterTransformer(),\n new SetAccessorTransformer(),\n new GetAccessorTransformer(),\n new IndexSignatureTransformer(),\n new PropertyDeclarationTransformer(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDeclarationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n new IntersectionTypeTransformer(),\n new UnionTypeTransformer(),\n new TypeReferenceTransformer(),\n new TypeLiteralTransformer(),\n new LiteralTypeTransformer(),\n new TypeQueryTransformer(),\n new ArrayTypeTransformer(),\n new TypeOperatorTransformer(),\n new KeywordTypeTransformer(),\n new TupleTypeTransformer(),\n new ParenthesizedTypeTransformer(),\n new TypePredicateTransformer(),\n new IndexedAccessTypeTransformer(),\n new TemplateLiteralTypeSpanTransformer(),\n new TemplateLiteralTypeTransformer(),\n new ThisTypeTransformer(),\n new ConditionalTypeTransformer(),\n new NamedTupleTransformer(),\n new ConstructorTransformer(),\n new ImportDeclarationTransformer(),\n ]);\n\n if (workspace) {\n watcher.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n const writeTsconfigCmd = new WriteTsconfigCmd(tsMain);\n cli.register(checkTypesCmd, writeTsconfigCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n\nexport default TypescriptMain;\n"],"mappings":"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"}
1
+ {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","envs","tsConfigWriter","aspectLoader","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","setTarget","tsconfig","compilerOptions","module","lib","createSchemaExtractor","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","cleanTsconfigJson","list","runtime","createEnvironment","execContext","getEnvExecutionContext","results","TsconfigWriter","clean","writeTsconfigJson","cleanResults","writeResults","write","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","cli","watcher","workspaceConfigFiles","compiler","registerParser","TypeScriptParser","createLogger","registerConfigWriter","TypescriptConfigWriter","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclarationTransformer","ExportAssignmentTransformer","FunctionLikeTransformer","ParameterTransformer","SetAccessorTransformer","GetAccessorTransformer","IndexSignatureTransformer","PropertyDeclarationTransformer","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDeclarationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","IntersectionTypeTransformer","UnionTypeTransformer","TypeReferenceTransformer","TypeLiteralTransformer","LiteralTypeTransformer","TypeQueryTransformer","ArrayTypeTransformer","TypeOperatorTransformer","KeywordTypeTransformer","TupleTypeTransformer","ParenthesizedTypeTransformer","TypePredicateTransformer","IndexedAccessTypeTransformer","TemplateLiteralTypeSpanTransformer","TemplateLiteralTypeTransformer","ThisTypeTransformer","ConditionalTypeTransformer","NamedTupleTransformer","ConstructorTransformer","ImportDeclarationTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","WatcherAspect","WorkspaceConfigFilesAspect","CompilerAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler, CompilerAspect, CompilerMain } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { Workspace } from '@teambit/workspace';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport WorkspaceConfigFilesAspect, { WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';\nimport WatcherAspect, { WatcherMain, WatchOptions } from '@teambit/watcher';\nimport type { Component } from '@teambit/component';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclarationTransformer,\n TypeAliasTransformer,\n FunctionLikeTransformer,\n SetAccessorTransformer,\n GetAccessorTransformer,\n IndexSignatureTransformer,\n PropertyDeclarationTransformer,\n ParameterTransformer,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDeclarationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\n ExportAssignmentTransformer,\n ImportDeclarationTransformer,\n IntersectionTypeTransformer,\n UnionTypeTransformer,\n TypeReferenceTransformer,\n TypeLiteralTransformer,\n LiteralTypeTransformer,\n TypeQueryTransformer,\n ArrayTypeTransformer,\n TypeOperatorTransformer,\n KeywordTypeTransformer,\n TupleTypeTransformer,\n ParenthesizedTypeTransformer,\n TypePredicateTransformer,\n IndexedAccessTypeTransformer,\n TemplateLiteralTypeSpanTransformer,\n TemplateLiteralTypeTransformer,\n ThisTypeTransformer,\n ConditionalTypeTransformer,\n NamedTupleTransformer,\n ConstructorTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\nimport { TypescriptConfigWriter } from './ts-config-writer';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsconfigWriterOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n dryRunWithTsconfig?: boolean;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n readonly schemaTransformerSlot: SchemaTransformerSlot,\n readonly workspace: Workspace,\n readonly depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setTarget('ES2017');\n config.raw.tsconfig.compilerOptions.module = 'es2020';\n config.raw.tsconfig.compilerOptions.lib = ['es2021', 'dom', 'ESNext.String', 'dom.Iterable'];\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace,\n this.aspectLoader,\n this.logger\n );\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n async cleanTsconfigJson(options: TsconfigWriterOptions = {}) {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n const results = await new TsconfigWriter(this.workspace, this.logger).clean(execContext, options);\n\n return results;\n }\n\n async writeTsconfigJson(options: TsconfigWriterOptions = {}): Promise<{\n cleanResults?: string[];\n writeResults: TsconfigPathsPerEnv[];\n }> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n let cleanResults: string[] | undefined;\n if (options.clean) {\n cleanResults = await this.tsConfigWriter.clean(execContext, options);\n }\n\n const writeResults = await this.tsConfigWriter.write(execContext, options);\n\n return { writeResults, cleanResults };\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n EnvsAspect,\n WatcherAspect,\n WorkspaceConfigFilesAspect,\n CompilerAspect\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, workspaceConfigFiles, compiler]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain,\n WatcherMain,\n WorkspaceConfigFilesMain,\n CompilerMain\n ],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n workspaceConfigFiles.registerConfigWriter(new TypescriptConfigWriter(compiler));\n\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(\n logger,\n schemaTransformerSlot,\n workspace,\n depResolver,\n envs,\n tsconfigWriter,\n aspectLoader\n );\n schemaTransformerSlot.register([\n new ExportDeclarationTransformer(),\n new ExportAssignmentTransformer(),\n new FunctionLikeTransformer(),\n new ParameterTransformer(),\n new SetAccessorTransformer(),\n new GetAccessorTransformer(),\n new IndexSignatureTransformer(),\n new PropertyDeclarationTransformer(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDeclarationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n new IntersectionTypeTransformer(),\n new UnionTypeTransformer(),\n new TypeReferenceTransformer(),\n new TypeLiteralTransformer(),\n new LiteralTypeTransformer(),\n new TypeQueryTransformer(),\n new ArrayTypeTransformer(),\n new TypeOperatorTransformer(),\n new KeywordTypeTransformer(),\n new TupleTypeTransformer(),\n new ParenthesizedTypeTransformer(),\n new TypePredicateTransformer(),\n new IndexedAccessTypeTransformer(),\n new TemplateLiteralTypeSpanTransformer(),\n new TemplateLiteralTypeTransformer(),\n new ThisTypeTransformer(),\n new ConditionalTypeTransformer(),\n new NamedTupleTransformer(),\n new ConstructorTransformer(),\n new ImportDeclarationTransformer(),\n ]);\n\n if (workspace) {\n watcher.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n const writeTsconfigCmd = new WriteTsconfigCmd(tsMain);\n cli.register(checkTypesCmd, writeTsconfigCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n\nexport default TypescriptMain;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,43 +1,45 @@
1
1
  {
2
2
  "name": "@teambit/typescript",
3
- "version": "0.0.1019",
3
+ "version": "0.0.1021",
4
4
  "homepage": "https://bit.dev/teambit/typescript/typescript",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.typescript",
8
8
  "name": "typescript",
9
- "version": "0.0.1019"
9
+ "version": "0.0.1021"
10
10
  },
11
11
  "dependencies": {
12
+ "get-tsconfig": "4.2.0",
12
13
  "lodash": "4.17.21",
13
14
  "p-map-series": "2.1.0",
14
15
  "tsutils": "3.21.0",
15
16
  "typescript": "4.7.4",
16
- "chalk": "2.4.2",
17
+ "comment-json": "3.0.3",
17
18
  "fs-extra": "10.0.0",
19
+ "chalk": "2.4.2",
18
20
  "yesno": "0.4.0",
19
- "get-tsconfig": "4.2.0",
20
21
  "core-js": "^3.0.0",
21
22
  "@babel/runtime": "7.20.0",
22
23
  "@teambit/harmony": "0.4.6",
23
- "@teambit/compiler": "0.0.1019",
24
+ "@teambit/compiler": "0.0.1021",
24
25
  "@teambit/typescript.modules.ts-config-mutator": "0.0.76",
25
- "@teambit/component": "0.0.1019",
26
- "@teambit/dependency-resolver": "0.0.1019",
27
- "@teambit/formatter": "0.0.570",
26
+ "@teambit/component": "0.0.1021",
27
+ "@teambit/dependency-resolver": "0.0.1021",
28
+ "@teambit/formatter": "0.0.572",
28
29
  "@teambit/semantics.entities.semantic-schema": "0.0.53",
29
30
  "@teambit/ts-server": "0.0.43",
30
- "@teambit/aspect-loader": "0.0.1019",
31
- "@teambit/envs": "0.0.1019",
32
- "@teambit/logger": "0.0.776",
33
- "@teambit/workspace": "0.0.1019",
31
+ "@teambit/aspect-loader": "0.0.1021",
32
+ "@teambit/envs": "0.0.1021",
33
+ "@teambit/workspace-config-files": "0.0.1",
34
+ "@teambit/logger": "0.0.777",
35
+ "@teambit/workspace": "0.0.1021",
34
36
  "@teambit/bit-error": "0.0.402",
35
- "@teambit/builder": "0.0.1019",
36
- "@teambit/isolator": "0.0.1019",
37
- "@teambit/schema": "0.0.1019",
38
- "@teambit/cli": "0.0.683",
39
- "@teambit/pkg": "0.0.1019",
40
- "@teambit/watcher": "0.0.31"
37
+ "@teambit/builder": "0.0.1021",
38
+ "@teambit/isolator": "0.0.1021",
39
+ "@teambit/schema": "0.0.1021",
40
+ "@teambit/cli": "0.0.684",
41
+ "@teambit/pkg": "0.0.1021",
42
+ "@teambit/watcher": "0.0.33"
41
43
  },
42
44
  "devDependencies": {
43
45
  "@types/lodash": "4.14.165",
@@ -53,7 +55,7 @@
53
55
  "@teambit/typescript.aspect-docs.typescript": "0.0.151"
54
56
  },
55
57
  "peerDependencies": {
56
- "@teambit/legacy": "1.0.462",
58
+ "@teambit/legacy": "1.0.464",
57
59
  "react": "^16.8.0 || ^17.0.0",
58
60
  "react-dom": "^16.8.0 || ^17.0.0"
59
61
  },