@teambit/typescript 0.0.880 → 0.0.882

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/cmds/check-types.cmd.js +0 -21
  2. package/dist/cmds/check-types.cmd.js.map +1 -1
  3. package/dist/cmds/write-tsconfig.cmd.js +2 -25
  4. package/dist/cmds/write-tsconfig.cmd.js.map +1 -1
  5. package/dist/dedupe-path.spec.js +6 -8
  6. package/dist/dedupe-path.spec.js.map +1 -1
  7. package/dist/exceptions/index.js +0 -3
  8. package/dist/exceptions/index.js.map +1 -1
  9. package/dist/exceptions/transformer-not-found.js +0 -7
  10. package/dist/exceptions/transformer-not-found.js.map +1 -1
  11. package/dist/export-identifier.js +0 -3
  12. package/dist/export-identifier.js.map +1 -1
  13. package/dist/export-list.js +0 -4
  14. package/dist/export-list.js.map +1 -1
  15. package/dist/index.js +0 -9
  16. package/dist/index.js.map +1 -1
  17. package/dist/schema-extractor-context.js +16 -120
  18. package/dist/schema-extractor-context.js.map +1 -1
  19. package/dist/schema-transformer.plugin.js +0 -8
  20. package/dist/schema-transformer.plugin.js.map +1 -1
  21. package/dist/transformers/binding-element.js +0 -23
  22. package/dist/transformers/binding-element.js.map +1 -1
  23. package/dist/transformers/class-deceleration.js +2 -34
  24. package/dist/transformers/class-deceleration.js.map +1 -1
  25. package/dist/transformers/enum-declaration.js +0 -16
  26. package/dist/transformers/enum-declaration.js.map +1 -1
  27. package/dist/transformers/export-declaration.js +8 -47
  28. package/dist/transformers/export-declaration.js.map +1 -1
  29. package/dist/transformers/function-declaration.js +2 -19
  30. package/dist/transformers/function-declaration.js.map +1 -1
  31. package/dist/transformers/index.js +0 -30
  32. package/dist/transformers/index.js.map +1 -1
  33. package/dist/transformers/interface-declaration.js +0 -25
  34. package/dist/transformers/interface-declaration.js.map +1 -1
  35. package/dist/transformers/source-file-transformer.js +3 -24
  36. package/dist/transformers/source-file-transformer.js.map +1 -1
  37. package/dist/transformers/type-alias.js +0 -23
  38. package/dist/transformers/type-alias.js.map +1 -1
  39. package/dist/transformers/utils/class-element-to-schema.js +0 -35
  40. package/dist/transformers/utils/class-element-to-schema.js.map +1 -1
  41. package/dist/transformers/utils/get-params.js +6 -33
  42. package/dist/transformers/utils/get-params.js.map +1 -1
  43. package/dist/transformers/utils/jsdoc-to-doc-schema.js +4 -49
  44. package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -1
  45. package/dist/transformers/utils/parse-type-from-quick-info.js +4 -16
  46. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
  47. package/dist/transformers/utils/to-function-like-schema.js +0 -15
  48. package/dist/transformers/utils/to-function-like-schema.js.map +1 -1
  49. package/dist/transformers/utils/type-element-to-schema.js +0 -37
  50. package/dist/transformers/utils/type-element-to-schema.js.map +1 -1
  51. package/dist/transformers/utils/type-node-to-schema.js +5 -71
  52. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  53. package/dist/transformers/variable-declaration.js +0 -30
  54. package/dist/transformers/variable-declaration.js.map +1 -1
  55. package/dist/transformers/variable-statement.js +0 -22
  56. package/dist/transformers/variable-statement.js.map +1 -1
  57. package/dist/tsconfig-writer.js +8 -58
  58. package/dist/tsconfig-writer.js.map +1 -1
  59. package/dist/typescript.aspect.js +0 -5
  60. package/dist/typescript.aspect.js.map +1 -1
  61. package/dist/typescript.compiler.js +16 -83
  62. package/dist/typescript.compiler.js.map +1 -1
  63. package/dist/typescript.compiler.spec.js +0 -25
  64. package/dist/typescript.compiler.spec.js.map +1 -1
  65. package/dist/typescript.composition.js +0 -6
  66. package/dist/typescript.composition.js.map +1 -1
  67. package/dist/typescript.extractor.js +6 -50
  68. package/dist/typescript.extractor.js.map +1 -1
  69. package/dist/typescript.main.runtime.js +10 -114
  70. package/dist/typescript.main.runtime.js.map +1 -1
  71. package/dist/typescript.parser.js +3 -30
  72. package/dist/typescript.parser.js.map +1 -1
  73. package/dist/typescript.parser.spec.js +0 -22
  74. package/dist/typescript.parser.spec.js.map +1 -1
  75. package/package-tar/teambit-typescript-0.0.882.tgz +0 -0
  76. package/package.json +15 -15
  77. package/{preview-1666312873430.js → preview-1666496165706.js} +2 -2
  78. package/package-tar/teambit-typescript-0.0.880.tgz +0 -0
@@ -1,241 +1,169 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.flat.js");
6
-
7
5
  require("core-js/modules/es.array.iterator.js");
8
-
9
6
  require("core-js/modules/es.array.unscopables.flat.js");
10
-
11
7
  require("core-js/modules/es.promise.js");
12
-
13
8
  Object.defineProperty(exports, "__esModule", {
14
9
  value: true
15
10
  });
16
11
  exports.default = exports.TypescriptMain = void 0;
17
12
  exports.runTransformersWithContext = runTransformersWithContext;
18
-
19
13
  function _defineProperty2() {
20
14
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
15
  _defineProperty2 = function () {
23
16
  return data;
24
17
  };
25
-
26
18
  return data;
27
19
  }
28
-
29
20
  function _typescript() {
30
21
  const data = _interopRequireDefault(require("typescript"));
31
-
32
22
  _typescript = function () {
33
23
  return data;
34
24
  };
35
-
36
25
  return data;
37
26
  }
38
-
39
27
  function _harmony() {
40
28
  const data = require("@teambit/harmony");
41
-
42
29
  _harmony = function () {
43
30
  return data;
44
31
  };
45
-
46
32
  return data;
47
33
  }
48
-
49
34
  function _cli() {
50
35
  const data = require("@teambit/cli");
51
-
52
36
  _cli = function () {
53
37
  return data;
54
38
  };
55
-
56
39
  return data;
57
40
  }
58
-
59
41
  function _logger() {
60
42
  const data = require("@teambit/logger");
61
-
62
43
  _logger = function () {
63
44
  return data;
64
45
  };
65
-
66
46
  return data;
67
47
  }
68
-
69
48
  function _schema() {
70
49
  const data = require("@teambit/schema");
71
-
72
50
  _schema = function () {
73
51
  return data;
74
52
  };
75
-
76
53
  return data;
77
54
  }
78
-
79
55
  function _typescriptModules() {
80
56
  const data = require("@teambit/typescript.modules.ts-config-mutator");
81
-
82
57
  _typescriptModules = function () {
83
58
  return data;
84
59
  };
85
-
86
60
  return data;
87
61
  }
88
-
89
62
  function _workspace() {
90
63
  const data = require("@teambit/workspace");
91
-
92
64
  _workspace = function () {
93
65
  return data;
94
66
  };
95
-
96
67
  return data;
97
68
  }
98
-
99
69
  function _dependencyResolver() {
100
70
  const data = require("@teambit/dependency-resolver");
101
-
102
71
  _dependencyResolver = function () {
103
72
  return data;
104
73
  };
105
-
106
74
  return data;
107
75
  }
108
-
109
76
  function _pMapSeries() {
110
77
  const data = _interopRequireDefault(require("p-map-series"));
111
-
112
78
  _pMapSeries = function () {
113
79
  return data;
114
80
  };
115
-
116
81
  return data;
117
82
  }
118
-
119
83
  function _tsServer() {
120
84
  const data = require("@teambit/ts-server");
121
-
122
85
  _tsServer = function () {
123
86
  return data;
124
87
  };
125
-
126
88
  return data;
127
89
  }
128
-
129
90
  function _aspectLoader() {
130
91
  const data = _interopRequireDefault(require("@teambit/aspect-loader"));
131
-
132
92
  _aspectLoader = function () {
133
93
  return data;
134
94
  };
135
-
136
95
  return data;
137
96
  }
138
-
139
97
  function _envs() {
140
98
  const data = _interopRequireDefault(require("@teambit/envs"));
141
-
142
99
  _envs = function () {
143
100
  return data;
144
101
  };
145
-
146
102
  return data;
147
103
  }
148
-
149
104
  function _typescript2() {
150
105
  const data = require("./typescript.extractor");
151
-
152
106
  _typescript2 = function () {
153
107
  return data;
154
108
  };
155
-
156
109
  return data;
157
110
  }
158
-
159
111
  function _typescript3() {
160
112
  const data = require("./typescript.aspect");
161
-
162
113
  _typescript3 = function () {
163
114
  return data;
164
115
  };
165
-
166
116
  return data;
167
117
  }
168
-
169
118
  function _typescript4() {
170
119
  const data = require("./typescript.compiler");
171
-
172
120
  _typescript4 = function () {
173
121
  return data;
174
122
  };
175
-
176
123
  return data;
177
124
  }
178
-
179
125
  function _typescript5() {
180
126
  const data = require("./typescript.parser");
181
-
182
127
  _typescript5 = function () {
183
128
  return data;
184
129
  };
185
-
186
130
  return data;
187
131
  }
188
-
189
132
  function _schemaTransformer() {
190
133
  const data = require("./schema-transformer.plugin");
191
-
192
134
  _schemaTransformer = function () {
193
135
  return data;
194
136
  };
195
-
196
137
  return data;
197
138
  }
198
-
199
139
  function _transformers() {
200
140
  const data = require("./transformers");
201
-
202
141
  _transformers = function () {
203
142
  return data;
204
143
  };
205
-
206
144
  return data;
207
145
  }
208
-
209
146
  function _checkTypes() {
210
147
  const data = require("./cmds/check-types.cmd");
211
-
212
148
  _checkTypes = function () {
213
149
  return data;
214
150
  };
215
-
216
151
  return data;
217
152
  }
218
-
219
153
  function _tsconfigWriter() {
220
154
  const data = require("./tsconfig-writer");
221
-
222
155
  _tsconfigWriter = function () {
223
156
  return data;
224
157
  };
225
-
226
158
  return data;
227
159
  }
228
-
229
160
  function _writeTsconfig() {
230
161
  const data = _interopRequireDefault(require("./cmds/write-tsconfig.cmd"));
231
-
232
162
  _writeTsconfig = function () {
233
163
  return data;
234
164
  };
235
-
236
165
  return data;
237
166
  }
238
-
239
167
  class TypescriptMain {
240
168
  constructor(logger, schemaTransformerSlot, workspace, depResolver, envs, tsConfigWriter) {
241
169
  this.logger = logger;
@@ -246,7 +174,6 @@ class TypescriptMain {
246
174
  this.tsConfigWriter = tsConfigWriter;
247
175
  (0, _defineProperty2().default)(this, "tsServer", void 0);
248
176
  }
249
-
250
177
  /**
251
178
  * create a new compiler.
252
179
  */
@@ -256,14 +183,14 @@ class TypescriptMain {
256
183
  const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);
257
184
  return new (_typescript4().TypescriptCompiler)(_typescript3().TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);
258
185
  }
186
+
259
187
  /**
260
188
  * get TsserverClient instance if initiated already, otherwise, return undefined.
261
189
  */
262
-
263
-
264
190
  getTsserverClient() {
265
191
  return this.tsServer;
266
192
  }
193
+
267
194
  /**
268
195
  * starts a tsserver process to communicate with its API.
269
196
  * @param projectPath absolute path of the project root directory
@@ -271,28 +198,25 @@ class TypescriptMain {
271
198
  * @param files optionally, if check-types is enabled, provide files to open and type check.
272
199
  * @returns TsserverClient
273
200
  */
274
-
275
-
276
201
  async initTsserverClient(projectPath, options = {}, files = []) {
277
202
  this.tsServer = new (_tsServer().TsserverClient)(projectPath, this.logger, options, files);
278
203
  this.tsServer.init();
279
204
  return this.tsServer;
280
205
  }
206
+
281
207
  /**
282
208
  * starts a tsserver process to communicate with its API. use only when running on the workspace.
283
209
  * @param options TsserverClientOpts
284
210
  * @param files optionally, if check-types is enabled, provide files to open and type check.
285
211
  * @returns TsserverClient
286
212
  */
287
-
288
-
289
213
  async initTsserverClientFromWorkspace(options = {}, files = []) {
290
214
  if (!this.workspace) {
291
215
  throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);
292
216
  }
293
-
294
217
  return this.initTsserverClient(this.workspace.path, options, files);
295
218
  }
219
+
296
220
  /**
297
221
  * Create a compiler instance and run the cjs transformer for it
298
222
  * @param options
@@ -300,11 +224,10 @@ class TypescriptMain {
300
224
  * @param tsModule
301
225
  * @returns
302
226
  */
303
-
304
-
305
227
  createCjsCompiler(options, transformers = [], tsModule = _typescript().default) {
306
228
  return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);
307
229
  }
230
+
308
231
  /**
309
232
  * Create a compiler instance and run the esm transformer for it
310
233
  * @param options
@@ -312,65 +235,56 @@ class TypescriptMain {
312
235
  * @param tsModule
313
236
  * @returns
314
237
  */
315
-
316
-
317
238
  createEsmCompiler(options, transformers = [], tsModule = _typescript().default) {
318
239
  return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);
319
240
  }
241
+
320
242
  /**
321
243
  * Create a transformer that change the ts module to CommonJS
322
244
  * @returns
323
245
  */
324
-
325
-
326
246
  getCjsTransformer() {
327
247
  const cjsTransformer = config => {
328
248
  config.setModule('CommonJS');
329
249
  return config;
330
250
  };
331
-
332
251
  return cjsTransformer;
333
252
  }
253
+
334
254
  /**
335
255
  * Create a transformer that change the ts module to ES2020
336
256
  * @returns
337
257
  */
338
-
339
-
340
258
  getEsmTransformer() {
341
259
  const esmTransformer = config => {
342
260
  config.setModule('ES2020');
343
261
  return config;
344
262
  };
345
-
346
263
  return esmTransformer;
347
264
  }
265
+
348
266
  /**
349
267
  * create an instance of a typescript semantic schema extractor.
350
268
  */
351
-
352
-
353
269
  createSchemaExtractor(tsconfig, path) {
354
270
  return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path, this.depResolver, this.workspace);
355
271
  }
272
+
356
273
  /**
357
274
  * add the default package json properties to the component
358
275
  * :TODO @gilad why do we need this DSL? can't I just get the args here.
359
276
  */
360
-
361
-
362
277
  getCjsPackageJsonProps() {
363
278
  return {
364
279
  main: 'dist/{main}.js',
365
280
  types: '{main}.ts'
366
281
  };
367
282
  }
283
+
368
284
  /**
369
285
  * add type: module to the package.json props and the default props
370
286
  * :TODO @gilad why do we need this DSL? can't I just get the args here.
371
287
  */
372
-
373
-
374
288
  getEsmPackageJsonProps() {
375
289
  return {
376
290
  // main: 'dist-esm/{main}.js',
@@ -379,12 +293,10 @@ class TypescriptMain {
379
293
  types: '{main}.ts'
380
294
  };
381
295
  }
382
-
383
296
  getSupportedFilesForTsserver(components) {
384
297
  const files = components.map(c => c.filesystem.files).flat().map(f => f.path);
385
298
  return files.filter(f => f.endsWith('.ts') || f.endsWith('.tsx'));
386
299
  }
387
-
388
300
  async cleanTsconfigJson(options = {}) {
389
301
  const components = await this.workspace.list();
390
302
  const runtime = await this.envs.createEnvironment(components);
@@ -392,31 +304,25 @@ class TypescriptMain {
392
304
  const results = await new (_tsconfigWriter().TsconfigWriter)(this.workspace, this.logger).clean(execContext, options);
393
305
  return results;
394
306
  }
395
-
396
307
  async writeTsconfigJson(options = {}) {
397
308
  const components = await this.workspace.list();
398
309
  const runtime = await this.envs.createEnvironment(components);
399
310
  const execContext = runtime.getEnvExecutionContext();
400
311
  let cleanResults;
401
-
402
312
  if (options.clean) {
403
313
  cleanResults = await this.tsConfigWriter.clean(execContext, options);
404
314
  }
405
-
406
315
  const writeResults = await this.tsConfigWriter.write(execContext, options);
407
316
  return {
408
317
  writeResults,
409
318
  cleanResults
410
319
  };
411
320
  }
412
-
413
321
  async onPreWatch(components, watchOpts) {
414
322
  const workspace = this.workspace;
415
-
416
323
  if (!workspace || !watchOpts.spawnTSServer) {
417
324
  return;
418
325
  }
419
-
420
326
  const {
421
327
  verbose,
422
328
  checkTypes
@@ -429,20 +335,17 @@ class TypescriptMain {
429
335
  printTypeErrors
430
336
  }, files);
431
337
  }
432
-
433
338
  async onComponentChange(component, files) {
434
339
  if (!this.tsServer) {
435
340
  return {
436
341
  results: 'N/A'
437
342
  };
438
343
  }
439
-
440
344
  await (0, _pMapSeries().default)(files, file => this.tsServer.onFileChange(file));
441
345
  return {
442
346
  results: 'succeed'
443
347
  };
444
348
  }
445
-
446
349
  static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs], config, [schemaTransformerSlot]) {
447
350
  schema.registerParser(new (_typescript5().TypeScriptParser)());
448
351
  const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
@@ -450,28 +353,22 @@ class TypescriptMain {
450
353
  const tsconfigWriter = new (_tsconfigWriter().TsconfigWriter)(workspace, logger);
451
354
  const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);
452
355
  schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)(), new (_transformers().BindingElementTransformer)()]);
453
-
454
356
  if (workspace) {
455
357
  workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));
456
358
  workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));
457
359
  workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));
458
360
  }
459
-
460
361
  const checkTypesCmd = new (_checkTypes().CheckTypesCmd)(tsMain, workspace, logger);
461
362
  const writeTsconfigCmd = new (_writeTsconfig().default)(tsMain);
462
363
  cli.register(checkTypesCmd, writeTsconfigCmd);
463
364
  return tsMain;
464
365
  }
465
-
466
366
  }
467
-
468
367
  exports.TypescriptMain = TypescriptMain;
469
368
  (0, _defineProperty2().default)(TypescriptMain, "runtime", _cli().MainRuntime);
470
369
  (0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect, _dependencyResolver().DependencyResolverAspect, _envs().default]);
471
370
  (0, _defineProperty2().default)(TypescriptMain, "slots", [_harmony().Slot.withType()]);
472
-
473
371
  _typescript3().TypescriptAspect.addRuntime(TypescriptMain);
474
-
475
372
  function runTransformersWithContext(config, transformers = [], context) {
476
373
  if (!Array.isArray(transformers)) return config;
477
374
  const newConfig = transformers.reduce((acc, transformer) => {
@@ -479,7 +376,6 @@ function runTransformersWithContext(config, transformers = [], context) {
479
376
  }, config);
480
377
  return newConfig;
481
378
  }
482
-
483
379
  var _default = TypescriptMain;
484
380
  exports.default = _default;
485
381
 
@@ -1 +1 @@
1
- {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","envs","tsConfigWriter","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","createSchemaExtractor","tsconfig","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","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclaration","FunctionDeclaration","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","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 { WatchOptions, 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 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 ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\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 private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace,\n private depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter\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.setModule('ES2020');\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 );\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 ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain\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(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\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","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","createSchemaExtractor","tsconfig","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","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclaration","FunctionDeclaration","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","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 { WatchOptions, 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 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 ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\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 private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace,\n private depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter\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.setModule('ES2020');\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 );\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 ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain\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(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\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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"}