@teambit/typescript 0.0.531 → 0.0.535
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -4
- package/dist/typescript.main.runtime.d.ts +4 -4
- package/dist/typescript.main.runtime.js +55 -48
- package/dist/typescript.main.runtime.js.map +1 -1
- package/package-tar/teambit-typescript-0.0.535.tgz +0 -0
- package/package.json +13 -13
- package/typescript.main.runtime.ts +51 -52
- package/package-tar/teambit-typescript-0.0.531.tgz +0 -0
package/dist/index.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "TypescriptAspect", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return
|
|
9
|
+
return _typescript2().TypescriptAspect;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "TypescriptCompiler", {
|
|
@@ -15,10 +15,10 @@ Object.defineProperty(exports, "TypescriptCompiler", {
|
|
|
15
15
|
return _typescript().TypescriptCompiler;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
Object.defineProperty(exports, "
|
|
18
|
+
Object.defineProperty(exports, "TypescriptConfigMutator", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function () {
|
|
21
|
-
return
|
|
21
|
+
return _typescriptModules().TypescriptConfigMutator;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
|
|
@@ -17,13 +17,13 @@ export declare class TypescriptMain {
|
|
|
17
17
|
constructor(logger: Logger, workspace?: Workspace | undefined);
|
|
18
18
|
createCompiler(options: TypeScriptCompilerOptions, transformers?: TsConfigTransformer[], tsModule?: typeof ts): Compiler;
|
|
19
19
|
getTsserverClient(): TsserverClient | undefined;
|
|
20
|
-
initTsserverClient(projectPath: string, options?: TsserverClientOpts): Promise<TsserverClient>;
|
|
21
|
-
initTsserverClientFromWorkspace(options?: TsserverClientOpts): Promise<TsserverClient>;
|
|
20
|
+
initTsserverClient(projectPath: string, options?: TsserverClientOpts, files?: string[]): Promise<TsserverClient>;
|
|
21
|
+
initTsserverClientFromWorkspace(options?: TsserverClientOpts, files?: string[]): Promise<TsserverClient>;
|
|
22
|
+
createSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor;
|
|
23
|
+
getPackageJsonProps(): PackageJsonProps;
|
|
22
24
|
private getAllFilesForTsserver;
|
|
23
25
|
private onPreWatch;
|
|
24
26
|
private onComponentChange;
|
|
25
|
-
createSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor;
|
|
26
|
-
getPackageJsonProps(): PackageJsonProps;
|
|
27
27
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
28
28
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
29
29
|
static provider([schema, loggerExt, workspace]: [SchemaMain, LoggerMain, Workspace]): Promise<TypescriptMain>;
|
|
@@ -13,8 +13,8 @@ require("core-js/modules/es.promise.js");
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", {
|
|
14
14
|
value: true
|
|
15
15
|
});
|
|
16
|
-
exports.runTransformersWithContext = runTransformersWithContext;
|
|
17
16
|
exports.TypescriptMain = void 0;
|
|
17
|
+
exports.runTransformersWithContext = runTransformersWithContext;
|
|
18
18
|
|
|
19
19
|
function _defineProperty2() {
|
|
20
20
|
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
@@ -169,23 +169,62 @@ class TypescriptMain {
|
|
|
169
169
|
const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);
|
|
170
170
|
return new (_typescript4().TypescriptCompiler)(_typescript3().TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);
|
|
171
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* get TsserverClient instance if initiated already, otherwise, return undefined.
|
|
174
|
+
*/
|
|
175
|
+
|
|
172
176
|
|
|
173
177
|
getTsserverClient() {
|
|
174
178
|
return this.tsServer;
|
|
175
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* starts a tsserver process to communicate with its API.
|
|
182
|
+
* @param projectPath absolute path of the project root directory
|
|
183
|
+
* @param options TsserverClientOpts
|
|
184
|
+
* @param files optionally, if check-types is enabled, provide files to open and type check.
|
|
185
|
+
* @returns TsserverClient
|
|
186
|
+
*/
|
|
176
187
|
|
|
177
|
-
|
|
178
|
-
|
|
188
|
+
|
|
189
|
+
async initTsserverClient(projectPath, options = {}, files = []) {
|
|
190
|
+
this.tsServer = new (_tsServer().TsserverClient)(projectPath, this.logger, options, files);
|
|
179
191
|
this.tsServer.init();
|
|
180
192
|
return this.tsServer;
|
|
181
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* starts a tsserver process to communicate with its API. use only when running on the workspace.
|
|
196
|
+
* @param options TsserverClientOpts
|
|
197
|
+
* @param files optionally, if check-types is enabled, provide files to open and type check.
|
|
198
|
+
* @returns TsserverClient
|
|
199
|
+
*/
|
|
182
200
|
|
|
183
|
-
|
|
201
|
+
|
|
202
|
+
async initTsserverClientFromWorkspace(options = {}, files = []) {
|
|
184
203
|
if (!this.workspace) {
|
|
185
204
|
throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);
|
|
186
205
|
}
|
|
187
206
|
|
|
188
|
-
return this.initTsserverClient(this.workspace.path, options);
|
|
207
|
+
return this.initTsserverClient(this.workspace.path, options, files);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* create an instance of a typescript semantic schema extractor.
|
|
211
|
+
*/
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
createSchemaExtractor(tsconfig) {
|
|
215
|
+
return new (_typescript2().TypeScriptExtractor)(tsconfig);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* add the default package json properties to the component
|
|
219
|
+
* :TODO @gilad why do we need this DSL? can't I just get the args here.
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
getPackageJsonProps() {
|
|
224
|
+
return {
|
|
225
|
+
main: 'dist/{main}.js',
|
|
226
|
+
types: '{main}.ts'
|
|
227
|
+
};
|
|
189
228
|
}
|
|
190
229
|
|
|
191
230
|
getAllFilesForTsserver(components) {
|
|
@@ -196,22 +235,19 @@ class TypescriptMain {
|
|
|
196
235
|
async onPreWatch(components, watchOpts) {
|
|
197
236
|
const workspace = this.workspace;
|
|
198
237
|
|
|
199
|
-
if (!workspace || !watchOpts.
|
|
238
|
+
if (!workspace || !watchOpts.spawnTSServer) {
|
|
200
239
|
return;
|
|
201
240
|
}
|
|
202
241
|
|
|
242
|
+
const {
|
|
243
|
+
verbose,
|
|
244
|
+
checkTypes
|
|
245
|
+
} = watchOpts;
|
|
246
|
+
const files = checkTypes ? this.getAllFilesForTsserver(components) : [];
|
|
203
247
|
await this.initTsserverClientFromWorkspace({
|
|
204
|
-
verbose
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
this.tsServer.openMultipleFiles(supportedFiles);
|
|
208
|
-
const start = Date.now();
|
|
209
|
-
this.tsServer.getDiagnostic().then(() => {
|
|
210
|
-
const end = Date.now() - start;
|
|
211
|
-
this.logger.console(`\ncompleted preliminary type checking. took ${end / 1000} sec`);
|
|
212
|
-
}).catch(err => {
|
|
213
|
-
this.logger.error(`failed getting the diag info from ts-server`, err);
|
|
214
|
-
});
|
|
248
|
+
verbose,
|
|
249
|
+
checkTypes
|
|
250
|
+
}, files);
|
|
215
251
|
}
|
|
216
252
|
|
|
217
253
|
async onComponentChange(component, files) {
|
|
@@ -221,38 +257,9 @@ class TypescriptMain {
|
|
|
221
257
|
};
|
|
222
258
|
}
|
|
223
259
|
|
|
224
|
-
await (0, _pMapSeries().default)(files, file => this.tsServer.
|
|
225
|
-
let results = 'succeed';
|
|
226
|
-
const start = Date.now();
|
|
227
|
-
this.tsServer.getDiagnostic().then(() => {
|
|
228
|
-
const end = Date.now() - start;
|
|
229
|
-
this.logger.console(`\ntype checking had been completed (${end / 1000} sec) for the following files:\n${files.join('\n')}`);
|
|
230
|
-
}).catch(err => {
|
|
231
|
-
results = 'failed';
|
|
232
|
-
this.logger.error(`failed getting the diag info from ts-server`, err);
|
|
233
|
-
});
|
|
260
|
+
await (0, _pMapSeries().default)(files, file => this.tsServer.onFileChange(file));
|
|
234
261
|
return {
|
|
235
|
-
results
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* create an instance of a typescript semantic schema extractor.
|
|
240
|
-
*/
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
createSchemaExtractor(tsconfig) {
|
|
244
|
-
return new (_typescript2().TypeScriptExtractor)(tsconfig);
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* add the default package json properties to the component
|
|
248
|
-
* :TODO @gilad why do we need this DSL? can't I just get the args here.
|
|
249
|
-
*/
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
getPackageJsonProps() {
|
|
253
|
-
return {
|
|
254
|
-
main: 'dist/{main}.js',
|
|
255
|
-
types: '{main}.ts'
|
|
262
|
+
results: 'succeed'
|
|
256
263
|
};
|
|
257
264
|
}
|
|
258
265
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["typescript.main.runtime.ts"],"names":["TypescriptMain","constructor","logger","workspace","registerOnPreWatch","onPreWatch","bind","registerOnComponentChange","onComponentChange","registerOnComponentAdd","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","getAllFilesForTsserver","components","files","map","c","filesystem","flat","f","filter","endsWith","watchOpts","checkTypes","verbose","supportedFiles","openMultipleFiles","start","Date","now","getDiagnostic","then","end","console","catch","err","error","component","results","file","changed","join","createSchemaExtractor","tsconfig","TypeScriptExtractor","getPackageJsonProps","main","types","provider","schema","loggerExt","registerParser","TypeScriptParser","createLogger","MainRuntime","SchemaAspect","LoggerAspect","WorkspaceAspect","addRuntime","config","context","Array","isArray","newConfig","reduce","acc","transformer"],"mappings":"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","sourcesContent":["import ts, { TsConfigSourceFile } from 'typescript';\nimport { 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 { WatchOptions, Workspace } from '@teambit/workspace';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport type { Component } from '@teambit/component';\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';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n private tsServer: TsserverClient;\n constructor(private logger: Logger, private workspace?: Workspace) {\n if (this.workspace) {\n this.workspace.registerOnPreWatch(this.onPreWatch.bind(this));\n this.workspace.registerOnComponentChange(this.onComponentChange.bind(this));\n this.workspace.registerOnComponentAdd(this.onComponentChange.bind(this));\n }\n }\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 getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n async initTsserverClient(projectPath: string, options: TsserverClientOpts = {}): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options);\n this.tsServer.init();\n return this.tsServer;\n }\n\n async initTsserverClientFromWorkspace(options: TsserverClientOpts = {}): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options);\n }\n\n private getAllFilesForTsserver(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 private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.checkTypes) {\n return;\n }\n await this.initTsserverClientFromWorkspace({ verbose: watchOpts.verbose });\n const supportedFiles = this.getAllFilesForTsserver(components);\n this.tsServer.openMultipleFiles(supportedFiles);\n const start = Date.now();\n this.tsServer\n .getDiagnostic()\n .then(() => {\n const end = Date.now() - start;\n this.logger.console(`\\ncompleted preliminary type checking. took ${end / 1000} sec`);\n })\n .catch((err) => {\n this.logger.error(`failed getting the diag info from ts-server`, err);\n });\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.changed(file));\n let results = 'succeed';\n const start = Date.now();\n this.tsServer\n .getDiagnostic()\n .then(() => {\n const end = Date.now() - start;\n this.logger.console(\n `\\ntype checking had been completed (${end / 1000} sec) for the following files:\\n${files.join('\\n')}`\n );\n })\n .catch((err) => {\n results = 'failed';\n this.logger.error(`failed getting the diag info from ts-server`, err);\n });\n return {\n results,\n };\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor {\n return new TypeScriptExtractor(tsconfig);\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 getPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [SchemaAspect, LoggerAspect, WorkspaceAspect];\n\n static async provider([schema, loggerExt, workspace]: [SchemaMain, LoggerMain, Workspace]) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n schema.registerParser(new TypeScriptParser(logger));\n\n return new TypescriptMain(logger, workspace);\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"]}
|
|
1
|
+
{"version":3,"sources":["typescript.main.runtime.ts"],"names":["TypescriptMain","constructor","logger","workspace","registerOnPreWatch","onPreWatch","bind","registerOnComponentChange","onComponentChange","registerOnComponentAdd","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","createSchemaExtractor","tsconfig","TypeScriptExtractor","getPackageJsonProps","main","types","getAllFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","watchOpts","spawnTSServer","verbose","checkTypes","component","results","file","onFileChange","provider","schema","loggerExt","registerParser","TypeScriptParser","createLogger","MainRuntime","SchemaAspect","LoggerAspect","WorkspaceAspect","addRuntime","config","context","Array","isArray","newConfig","reduce","acc","transformer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAaO,MAAMA,cAAN,CAAqB;AAE1BC,EAAAA,WAAW,CAASC,MAAT,EAAiCC,SAAjC,EAAwD;AAAA,SAA/CD,MAA+C,GAA/CA,MAA+C;AAAA,SAAvBC,SAAuB,GAAvBA,SAAuB;AAAA;;AACjE,QAAI,KAAKA,SAAT,EAAoB;AAClB,WAAKA,SAAL,CAAeC,kBAAf,CAAkC,KAAKC,UAAL,CAAgBC,IAAhB,CAAqB,IAArB,CAAlC;AACA,WAAKH,SAAL,CAAeI,yBAAf,CAAyC,KAAKC,iBAAL,CAAuBF,IAAvB,CAA4B,IAA5B,CAAzC;AACA,WAAKH,SAAL,CAAeM,sBAAf,CAAsC,KAAKD,iBAAL,CAAuBF,IAAvB,CAA4B,IAA5B,CAAtC;AACD;AACF;AACD;AACF;AACA;;;AACEI,EAAAA,cAAc,CACZC,OADY,EAEZC,YAAmC,GAAG,EAF1B,EAGZC,QAAQ,GAAGC,qBAHC,EAIF;AACV,UAAMC,aAAa,GAAG,KAAIC,4CAAJ,EAA4BL,OAA5B,CAAtB;AACA,UAAMM,kBAA4C,GAAG,EAArD;AACA,UAAMC,aAAa,GAAGC,0BAA0B,CAACJ,aAAa,CAACK,KAAd,EAAD,EAAwBR,YAAxB,EAAsCK,kBAAtC,CAAhD;AACA,WAAO,KAAII,iCAAJ,EAAuBC,gCAAiBC,EAAxC,EAA4C,KAAKrB,MAAjD,EAAyDgB,aAAa,CAACM,GAAvE,EAA4EX,QAA5E,CAAP;AACD;AAED;AACF;AACA;;;AACEY,EAAAA,iBAAiB,GAA+B;AAC9C,WAAO,KAAKC,QAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AAC0B,QAAlBC,kBAAkB,CACtBC,WADsB,EAEtBjB,OAA2B,GAAG,EAFR,EAGtBkB,KAAe,GAAG,EAHI,EAIG;AACzB,SAAKH,QAAL,GAAgB,KAAII,0BAAJ,EAAmBF,WAAnB,EAAgC,KAAK1B,MAArC,EAA6CS,OAA7C,EAAsDkB,KAAtD,CAAhB;AACA,SAAKH,QAAL,CAAcK,IAAd;AACA,WAAO,KAAKL,QAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACuC,QAA/BM,+BAA+B,CACnCrB,OAA2B,GAAG,EADK,EAEnCkB,KAAe,GAAG,EAFiB,EAGV;AACzB,QAAI,CAAC,KAAK1B,SAAV,EAAqB;AACnB,YAAM,IAAI8B,KAAJ,CAAW,0DAAX,CAAN;AACD;;AACD,WAAO,KAAKN,kBAAL,CAAwB,KAAKxB,SAAL,CAAe+B,IAAvC,EAA6CvB,OAA7C,EAAsDkB,KAAtD,CAAP;AACD;AAED;AACF;AACA;;;AACEM,EAAAA,qBAAqB,CAACC,QAAD,EAAgD;AACnE,WAAO,KAAIC,kCAAJ,EAAwBD,QAAxB,CAAP;AACD;AAED;AACF;AACA;AACA;;;AACEE,EAAAA,mBAAmB,GAAqB;AACtC,WAAO;AACLC,MAAAA,IAAI,EAAE,gBADD;AAELC,MAAAA,KAAK,EAAE;AAFF,KAAP;AAID;;AAEOC,EAAAA,sBAAsB,CAACC,UAAD,EAAoC;AAChE,UAAMb,KAAK,GAAGa,UAAU,CACrBC,GADW,CACNC,CAAD,IAAOA,CAAC,CAACC,UAAF,CAAahB,KADb,EAEXiB,IAFW,GAGXH,GAHW,CAGNI,CAAD,IAAOA,CAAC,CAACb,IAHF,CAAd;AAIA,WAAOL,KAAK,CAACmB,MAAN,CAAcD,CAAD,IAAOA,CAAC,CAACE,QAAF,CAAW,KAAX,KAAqBF,CAAC,CAACE,QAAF,CAAW,MAAX,CAAzC,CAAP;AACD;;AAEuB,QAAV5C,UAAU,CAACqC,UAAD,EAA0BQ,SAA1B,EAAmD;AACzE,UAAM/C,SAAS,GAAG,KAAKA,SAAvB;;AACA,QAAI,CAACA,SAAD,IAAc,CAAC+C,SAAS,CAACC,aAA7B,EAA4C;AAC1C;AACD;;AACD,UAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAA0BH,SAAhC;AACA,UAAMrB,KAAK,GAAGwB,UAAU,GAAG,KAAKZ,sBAAL,CAA4BC,UAA5B,CAAH,GAA6C,EAArE;AACA,UAAM,KAAKV,+BAAL,CAAqC;AAAEoB,MAAAA,OAAF;AAAWC,MAAAA;AAAX,KAArC,EAA8DxB,KAA9D,CAAN;AACD;;AAE8B,QAAjBrB,iBAAiB,CAAC8C,SAAD,EAAuBzB,KAAvB,EAAwC;AACrE,QAAI,CAAC,KAAKH,QAAV,EAAoB;AAClB,aAAO;AACL6B,QAAAA,OAAO,EAAE;AADJ,OAAP;AAGD;;AACD,UAAM,2BAAW1B,KAAX,EAAmB2B,IAAD,IAAU,KAAK9B,QAAL,CAAc+B,YAAd,CAA2BD,IAA3B,CAA5B,CAAN;AACA,WAAO;AACLD,MAAAA,OAAO,EAAE;AADJ,KAAP;AAGD;;AAKoB,eAARG,QAAQ,CAAC,CAACC,MAAD,EAASC,SAAT,EAAoBzD,SAApB,CAAD,EAAsE;AACzFwD,IAAAA,MAAM,CAACE,cAAP,CAAsB,KAAIC,+BAAJ,GAAtB;AACA,UAAM5D,MAAM,GAAG0D,SAAS,CAACG,YAAV,CAAuBzC,gCAAiBC,EAAxC,CAAf;AACAoC,IAAAA,MAAM,CAACE,cAAP,CAAsB,KAAIC,+BAAJ,EAAqB5D,MAArB,CAAtB;AAEA,WAAO,IAAIF,cAAJ,CAAmBE,MAAnB,EAA2BC,SAA3B,CAAP;AACD;;AAxHyB;;;gCAAfH,c,aA+GMgE,kB;gCA/GNhE,c,kBAgHW,CAACiE,sBAAD,EAAeC,sBAAf,EAA6BC,oBAA7B,C;;AAWxB7C,gCAAiB8C,UAAjB,CAA4BpE,cAA5B;;AAEO,SAASmB,0BAAT,CACLkD,MADK,EAELzD,YAAmC,GAAG,EAFjC,EAGL0D,OAHK,EAIoB;AACzB,MAAI,CAACC,KAAK,CAACC,OAAN,CAAc5D,YAAd,CAAL,EAAkC,OAAOyD,MAAP;AAClC,QAAMI,SAAS,GAAG7D,YAAY,CAAC8D,MAAb,CAAoB,CAACC,GAAD,EAAMC,WAAN,KAAsB;AAC1D,WAAOA,WAAW,CAACD,GAAD,EAAML,OAAN,CAAlB;AACD,GAFiB,EAEfD,MAFe,CAAlB;AAGA,SAAOI,SAAP;AACD","sourcesContent":["import ts, { TsConfigSourceFile } from 'typescript';\nimport { 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 { WatchOptions, Workspace } from '@teambit/workspace';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport type { Component } from '@teambit/component';\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';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n private tsServer: TsserverClient;\n constructor(private logger: Logger, private workspace?: Workspace) {\n if (this.workspace) {\n this.workspace.registerOnPreWatch(this.onPreWatch.bind(this));\n this.workspace.registerOnComponentChange(this.onComponentChange.bind(this));\n this.workspace.registerOnComponentAdd(this.onComponentChange.bind(this));\n }\n }\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 an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor {\n return new TypeScriptExtractor(tsconfig);\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 getPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n private getAllFilesForTsserver(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 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.getAllFilesForTsserver(components) : [];\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes }, 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 = [SchemaAspect, LoggerAspect, WorkspaceAspect];\n\n static async provider([schema, loggerExt, workspace]: [SchemaMain, LoggerMain, Workspace]) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n schema.registerParser(new TypeScriptParser(logger));\n\n return new TypescriptMain(logger, workspace);\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"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/typescript",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.535",
|
|
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.
|
|
9
|
+
"version": "0.0.535"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@teambit/harmony": "0.2.11",
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
"p-map-series": "2.1.0",
|
|
17
17
|
"@babel/runtime": "7.12.18",
|
|
18
18
|
"core-js": "^3.0.0",
|
|
19
|
-
"@teambit/compiler": "0.0.
|
|
20
|
-
"@teambit/typescript.modules.ts-config-mutator": "0.0.
|
|
19
|
+
"@teambit/compiler": "0.0.535",
|
|
20
|
+
"@teambit/typescript.modules.ts-config-mutator": "0.0.31",
|
|
21
21
|
"@teambit/bit-error": "0.0.366",
|
|
22
|
-
"@teambit/builder": "0.0.
|
|
23
|
-
"@teambit/isolator": "0.0.
|
|
24
|
-
"@teambit/logger": "0.0.
|
|
25
|
-
"@teambit/component": "0.0.
|
|
26
|
-
"@teambit/schema": "0.0.
|
|
22
|
+
"@teambit/builder": "0.0.535",
|
|
23
|
+
"@teambit/isolator": "0.0.535",
|
|
24
|
+
"@teambit/logger": "0.0.457",
|
|
25
|
+
"@teambit/component": "0.0.535",
|
|
26
|
+
"@teambit/schema": "0.0.535",
|
|
27
27
|
"@teambit/cli": "0.0.380",
|
|
28
|
-
"@teambit/pkg": "0.0.
|
|
29
|
-
"@teambit/ts-server": "0.0.
|
|
30
|
-
"@teambit/workspace": "0.0.
|
|
28
|
+
"@teambit/pkg": "0.0.535",
|
|
29
|
+
"@teambit/ts-server": "0.0.3",
|
|
30
|
+
"@teambit/workspace": "0.0.535"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"chai": "4.3.0",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@types/react-dom": "^17.0.5",
|
|
40
40
|
"@types/react": "^17.0.8",
|
|
41
41
|
"@types/node": "12.20.4",
|
|
42
|
-
"@teambit/typescript.aspect-docs.typescript": "0.0.
|
|
42
|
+
"@teambit/typescript.aspect-docs.typescript": "0.0.93"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@teambit/legacy": "1.0.76",
|
|
@@ -50,21 +50,62 @@ export class TypescriptMain {
|
|
|
50
50
|
return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* get TsserverClient instance if initiated already, otherwise, return undefined.
|
|
55
|
+
*/
|
|
53
56
|
getTsserverClient(): TsserverClient | undefined {
|
|
54
57
|
return this.tsServer;
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
/**
|
|
61
|
+
* starts a tsserver process to communicate with its API.
|
|
62
|
+
* @param projectPath absolute path of the project root directory
|
|
63
|
+
* @param options TsserverClientOpts
|
|
64
|
+
* @param files optionally, if check-types is enabled, provide files to open and type check.
|
|
65
|
+
* @returns TsserverClient
|
|
66
|
+
*/
|
|
67
|
+
async initTsserverClient(
|
|
68
|
+
projectPath: string,
|
|
69
|
+
options: TsserverClientOpts = {},
|
|
70
|
+
files: string[] = []
|
|
71
|
+
): Promise<TsserverClient> {
|
|
72
|
+
this.tsServer = new TsserverClient(projectPath, this.logger, options, files);
|
|
59
73
|
this.tsServer.init();
|
|
60
74
|
return this.tsServer;
|
|
61
75
|
}
|
|
62
76
|
|
|
63
|
-
|
|
77
|
+
/**
|
|
78
|
+
* starts a tsserver process to communicate with its API. use only when running on the workspace.
|
|
79
|
+
* @param options TsserverClientOpts
|
|
80
|
+
* @param files optionally, if check-types is enabled, provide files to open and type check.
|
|
81
|
+
* @returns TsserverClient
|
|
82
|
+
*/
|
|
83
|
+
async initTsserverClientFromWorkspace(
|
|
84
|
+
options: TsserverClientOpts = {},
|
|
85
|
+
files: string[] = []
|
|
86
|
+
): Promise<TsserverClient> {
|
|
64
87
|
if (!this.workspace) {
|
|
65
88
|
throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);
|
|
66
89
|
}
|
|
67
|
-
return this.initTsserverClient(this.workspace.path, options);
|
|
90
|
+
return this.initTsserverClient(this.workspace.path, options, files);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* create an instance of a typescript semantic schema extractor.
|
|
95
|
+
*/
|
|
96
|
+
createSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor {
|
|
97
|
+
return new TypeScriptExtractor(tsconfig);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* add the default package json properties to the component
|
|
102
|
+
* :TODO @gilad why do we need this DSL? can't I just get the args here.
|
|
103
|
+
*/
|
|
104
|
+
getPackageJsonProps(): PackageJsonProps {
|
|
105
|
+
return {
|
|
106
|
+
main: 'dist/{main}.js',
|
|
107
|
+
types: '{main}.ts',
|
|
108
|
+
};
|
|
68
109
|
}
|
|
69
110
|
|
|
70
111
|
private getAllFilesForTsserver(components: Component[]): string[] {
|
|
@@ -77,22 +118,12 @@ export class TypescriptMain {
|
|
|
77
118
|
|
|
78
119
|
private async onPreWatch(components: Component[], watchOpts: WatchOptions) {
|
|
79
120
|
const workspace = this.workspace;
|
|
80
|
-
if (!workspace || !watchOpts.
|
|
121
|
+
if (!workspace || !watchOpts.spawnTSServer) {
|
|
81
122
|
return;
|
|
82
123
|
}
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
this.
|
|
86
|
-
const start = Date.now();
|
|
87
|
-
this.tsServer
|
|
88
|
-
.getDiagnostic()
|
|
89
|
-
.then(() => {
|
|
90
|
-
const end = Date.now() - start;
|
|
91
|
-
this.logger.console(`\ncompleted preliminary type checking. took ${end / 1000} sec`);
|
|
92
|
-
})
|
|
93
|
-
.catch((err) => {
|
|
94
|
-
this.logger.error(`failed getting the diag info from ts-server`, err);
|
|
95
|
-
});
|
|
124
|
+
const { verbose, checkTypes } = watchOpts;
|
|
125
|
+
const files = checkTypes ? this.getAllFilesForTsserver(components) : [];
|
|
126
|
+
await this.initTsserverClientFromWorkspace({ verbose, checkTypes }, files);
|
|
96
127
|
}
|
|
97
128
|
|
|
98
129
|
private async onComponentChange(component: Component, files: string[]) {
|
|
@@ -101,41 +132,9 @@ export class TypescriptMain {
|
|
|
101
132
|
results: 'N/A',
|
|
102
133
|
};
|
|
103
134
|
}
|
|
104
|
-
await pMapSeries(files, (file) => this.tsServer.
|
|
105
|
-
let results = 'succeed';
|
|
106
|
-
const start = Date.now();
|
|
107
|
-
this.tsServer
|
|
108
|
-
.getDiagnostic()
|
|
109
|
-
.then(() => {
|
|
110
|
-
const end = Date.now() - start;
|
|
111
|
-
this.logger.console(
|
|
112
|
-
`\ntype checking had been completed (${end / 1000} sec) for the following files:\n${files.join('\n')}`
|
|
113
|
-
);
|
|
114
|
-
})
|
|
115
|
-
.catch((err) => {
|
|
116
|
-
results = 'failed';
|
|
117
|
-
this.logger.error(`failed getting the diag info from ts-server`, err);
|
|
118
|
-
});
|
|
135
|
+
await pMapSeries(files, (file) => this.tsServer.onFileChange(file));
|
|
119
136
|
return {
|
|
120
|
-
results,
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* create an instance of a typescript semantic schema extractor.
|
|
126
|
-
*/
|
|
127
|
-
createSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor {
|
|
128
|
-
return new TypeScriptExtractor(tsconfig);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* add the default package json properties to the component
|
|
133
|
-
* :TODO @gilad why do we need this DSL? can't I just get the args here.
|
|
134
|
-
*/
|
|
135
|
-
getPackageJsonProps(): PackageJsonProps {
|
|
136
|
-
return {
|
|
137
|
-
main: 'dist/{main}.js',
|
|
138
|
-
types: '{main}.ts',
|
|
137
|
+
results: 'succeed',
|
|
139
138
|
};
|
|
140
139
|
}
|
|
141
140
|
|
|
Binary file
|