@teambit/typescript 0.0.588 → 0.0.589
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/exceptions/index.d.ts +1 -0
- package/dist/exceptions/index.js +23 -0
- package/dist/exceptions/index.js.map +1 -0
- package/dist/exceptions/transformer-not-found.d.ts +7 -0
- package/dist/exceptions/transformer-not-found.js +19 -0
- package/dist/exceptions/transformer-not-found.js.map +1 -0
- package/dist/export-identifier.d.ts +5 -0
- package/dist/export-identifier.js +18 -0
- package/dist/export-identifier.js.map +1 -0
- package/dist/export-list.d.ts +6 -0
- package/dist/export-list.js +21 -0
- package/dist/export-list.js.map +1 -0
- package/dist/schema-extractor-context.d.ts +44 -0
- package/dist/schema-extractor-context.js +225 -0
- package/dist/schema-extractor-context.js.map +1 -0
- package/dist/schema-transformer.d.ts +15 -0
- package/dist/schema-transformer.js +3 -0
- package/dist/schema-transformer.js.map +1 -0
- package/dist/schema-transformer.plugin.d.ts +9 -0
- package/dist/schema-transformer.plugin.js +35 -0
- package/dist/schema-transformer.plugin.js.map +1 -0
- package/dist/transformers/export-declaration-type.d.ts +0 -0
- package/dist/transformers/export-declaration-type.js +3 -0
- package/dist/transformers/export-declaration-type.js.map +1 -0
- package/dist/transformers/export-declaration.d.ts +9 -0
- package/dist/transformers/export-declaration.js +87 -0
- package/dist/transformers/export-declaration.js.map +1 -0
- package/dist/transformers/function-declaration.d.ts +13 -0
- package/dist/transformers/function-declaration.js +101 -0
- package/dist/transformers/function-declaration.js.map +1 -0
- package/dist/transformers/index.d.ts +5 -0
- package/dist/transformers/index.js +87 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/source-file-transformer.d.ts +13 -0
- package/dist/transformers/source-file-transformer.js +82 -0
- package/dist/transformers/source-file-transformer.js.map +1 -0
- package/dist/transformers/type-alias.d.ts +8 -0
- package/dist/transformers/type-alias.js +49 -0
- package/dist/transformers/type-alias.js.map +1 -0
- package/dist/transformers/variable-statement.d.ts +8 -0
- package/dist/transformers/variable-statement.js +51 -0
- package/dist/transformers/variable-statement.js.map +1 -0
- package/dist/typescript.compiler.js +2 -2
- package/dist/typescript.compiler.spec.js +2 -2
- package/dist/typescript.extractor.d.ts +24 -4
- package/dist/typescript.extractor.js +132 -26
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.main.runtime.d.ts +11 -5
- package/dist/typescript.main.runtime.js +61 -18
- package/dist/typescript.main.runtime.js.map +1 -1
- package/dist/typescript.parser.d.ts +2 -1
- package/dist/typescript.parser.js +7 -7
- package/dist/typescript.parser.js.map +1 -1
- package/exceptions/index.ts +1 -0
- package/exceptions/transformer-not-found.ts +12 -0
- package/package-tar/teambit-typescript-0.0.589.tgz +0 -0
- package/package.json +16 -12
- package/transformers/export-declaration-type.ts +0 -0
- package/transformers/export-declaration.ts +53 -0
- package/transformers/function-declaration.ts +54 -0
- package/transformers/index.ts +5 -0
- package/transformers/source-file-transformer.ts +60 -0
- package/transformers/type-alias.ts +17 -0
- package/transformers/variable-statement.ts +19 -0
- package/package-tar/teambit-typescript-0.0.588.tgz +0 -0
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.array.iterator.js");
|
|
6
|
+
|
|
3
7
|
require("core-js/modules/es.promise.js");
|
|
4
8
|
|
|
5
9
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -7,44 +11,146 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
11
|
});
|
|
8
12
|
exports.TypeScriptExtractor = void 0;
|
|
9
13
|
|
|
10
|
-
function
|
|
11
|
-
const data = require("
|
|
14
|
+
function _defineProperty2() {
|
|
15
|
+
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
|
|
17
|
+
_defineProperty2 = function () {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function _typescript() {
|
|
25
|
+
const data = _interopRequireDefault(require("typescript"));
|
|
26
|
+
|
|
27
|
+
_typescript = function () {
|
|
28
|
+
return data;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function _semanticsEntities() {
|
|
35
|
+
const data = require("@teambit/semantics.entities.semantic-schema");
|
|
36
|
+
|
|
37
|
+
_semanticsEntities = function () {
|
|
38
|
+
return data;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function _lodash() {
|
|
45
|
+
const data = require("lodash");
|
|
46
|
+
|
|
47
|
+
_lodash = function () {
|
|
48
|
+
return data;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return data;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function _exceptions() {
|
|
55
|
+
const data = require("./exceptions");
|
|
56
|
+
|
|
57
|
+
_exceptions = function () {
|
|
58
|
+
return data;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function _schemaExtractorContext() {
|
|
65
|
+
const data = require("./schema-extractor-context");
|
|
66
|
+
|
|
67
|
+
_schemaExtractorContext = function () {
|
|
68
|
+
return data;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
return data;
|
|
72
|
+
}
|
|
12
73
|
|
|
13
|
-
|
|
74
|
+
function _exportList() {
|
|
75
|
+
const data = require("./export-list");
|
|
76
|
+
|
|
77
|
+
_exportList = function () {
|
|
14
78
|
return data;
|
|
15
79
|
};
|
|
16
80
|
|
|
17
81
|
return data;
|
|
18
82
|
}
|
|
19
83
|
|
|
20
|
-
// import { tmpdir } from 'os';
|
|
21
|
-
// import { resolve, join } from 'path';
|
|
22
84
|
class TypeScriptExtractor {
|
|
23
|
-
constructor(tsconfig) {
|
|
85
|
+
constructor(tsconfig, schemaTransformerSlot, tsMain, rootPath) {
|
|
24
86
|
this.tsconfig = tsconfig;
|
|
87
|
+
this.schemaTransformerSlot = schemaTransformerSlot;
|
|
88
|
+
this.tsMain = tsMain;
|
|
89
|
+
this.rootPath = rootPath;
|
|
90
|
+
(0, _defineProperty2().default)(this, "tsserver", undefined);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
parseSourceFile(file) {
|
|
94
|
+
return _typescript().default.createSourceFile(file.path, file.contents.toString('utf8'), _typescript().default.ScriptTarget.Latest, true, this.tsconfig.compilerOptions);
|
|
25
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* extract a component schema.
|
|
98
|
+
*/
|
|
99
|
+
|
|
26
100
|
|
|
27
101
|
async extract(component) {
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
102
|
+
const tsserver = await this.getTsServer();
|
|
103
|
+
const mainFile = component.mainFile;
|
|
104
|
+
const mainAst = this.parseSourceFile(mainFile);
|
|
105
|
+
const context = this.createContext(tsserver, component);
|
|
106
|
+
const exportNames = await this.computeExportedIdentifiers(mainAst, context);
|
|
107
|
+
context.setExports(new (_exportList().ExportList)(exportNames));
|
|
108
|
+
await this.computeSchema(mainAst, context); // TODO: create the schema
|
|
109
|
+
|
|
110
|
+
return _semanticsEntities().SemanticSchema.from({});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
async computeExportedIdentifiers(node, context) {
|
|
114
|
+
const transformer = this.getTransformer(node, context.component);
|
|
115
|
+
if (!transformer || !transformer.getIdentifiers) throw new (_exceptions().TransformerNotFound)(node, context.component);
|
|
116
|
+
return transformer.getIdentifiers(node, context);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
createContext(tsserver, component) {
|
|
120
|
+
return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async getTsServer() {
|
|
124
|
+
if (!this.tsserver) {
|
|
125
|
+
const tsserver = this.tsMain.getTsserverClient();
|
|
126
|
+
|
|
127
|
+
if (tsserver) {
|
|
128
|
+
this.tsserver = tsserver;
|
|
129
|
+
return tsserver;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);
|
|
133
|
+
return this.tsserver;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return this.tsserver;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
async computeSchema(node, context) {
|
|
140
|
+
const transformer = this.getTransformer(node, context.component);
|
|
141
|
+
if (!transformer) return undefined;
|
|
142
|
+
return transformer.transform(node, context);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* select the correct transformer for a node.
|
|
146
|
+
*/
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
getTransformer(node, component) {
|
|
150
|
+
const transformers = (0, _lodash().flatten)(this.schemaTransformerSlot.values());
|
|
151
|
+
const transformer = transformers.find(singleTransformer => singleTransformer.predicate(node));
|
|
152
|
+
if (!transformer) throw new (_exceptions().TransformerNotFound)(node, component);
|
|
153
|
+
return transformer;
|
|
48
154
|
}
|
|
49
155
|
|
|
50
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["typescript.extractor.ts"],"names":["TypeScriptExtractor","constructor","tsconfig","extract","component","
|
|
1
|
+
{"version":3,"sources":["typescript.extractor.ts"],"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","undefined","parseSourceFile","file","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","compilerOptions","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","computeSchema","SemanticSchema","from","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","SchemaExtractorContext","getTsserverClient","initTsserverClient","transform","transformers","values","find","singleTransformer","predicate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;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;;AAEO,MAAMA,mBAAN,CAAqD;AAC1DC,EAAAA,WAAW,CACDC,QADC,EAEDC,qBAFC,EAGDC,MAHC,EAIDC,QAJC,EAKT;AAAA,SAJQH,QAIR,GAJQA,QAIR;AAAA,SAHQC,qBAGR,GAHQA,qBAGR;AAAA,SAFQC,MAER,GAFQA,MAER;AAAA,SADQC,QACR,GADQA,QACR;AAAA,sDAqC6CC,SArC7C;AAAE;;AAEJC,EAAAA,eAAe,CAACC,IAAD,EAAsB;AACnC,WAAOC,sBAAGC,gBAAH,CACLF,IAAI,CAACG,IADA,EAELH,IAAI,CAACI,QAAL,CAAcC,QAAd,CAAuB,MAAvB,CAFK,EAGLJ,sBAAGK,YAAH,CAAgBC,MAHX,EAIL,IAJK,EAKL,KAAKb,QAAL,CAAcc,eALT,CAAP;AAOD;AAED;AACF;AACA;;;AACe,QAAPC,OAAO,CAACC,SAAD,EAAuB;AAClC,UAAMC,QAAQ,GAAG,MAAM,KAAKC,WAAL,EAAvB;AACA,UAAMC,QAAQ,GAAGH,SAAS,CAACG,QAA3B;AACA,UAAMC,OAAO,GAAG,KAAKf,eAAL,CAAqBc,QAArB,CAAhB;AACA,UAAME,OAAO,GAAG,KAAKC,aAAL,CAAmBL,QAAnB,EAA6BD,SAA7B,CAAhB;AACA,UAAMO,WAAW,GAAG,MAAM,KAAKC,0BAAL,CAAgCJ,OAAhC,EAAyCC,OAAzC,CAA1B;AACAA,IAAAA,OAAO,CAACI,UAAR,CAAmB,KAAIC,wBAAJ,EAAeH,WAAf,CAAnB;AACA,UAAM,KAAKI,aAAL,CAAmBP,OAAnB,EAA4BC,OAA5B,CAAN,CAPkC,CAOU;;AAE5C,WAAOO,oCAAeC,IAAf,CAAoB,EAApB,CAAP;AACD;;AAE+B,QAA1BL,0BAA0B,CAACM,IAAD,EAAaT,OAAb,EAA8C;AAC5E,UAAMU,WAAW,GAAG,KAAKC,cAAL,CAAoBF,IAApB,EAA0BT,OAAO,CAACL,SAAlC,CAApB;AACA,QAAI,CAACe,WAAD,IAAgB,CAACA,WAAW,CAACE,cAAjC,EAAiD,MAAM,KAAIC,iCAAJ,EAAwBJ,IAAxB,EAA8BT,OAAO,CAACL,SAAtC,CAAN;AACjD,WAAOe,WAAW,CAACE,cAAZ,CAA2BH,IAA3B,EAAiCT,OAAjC,CAAP;AACD;;AAEOC,EAAAA,aAAa,CAACL,QAAD,EAA2BD,SAA3B,EAAyE;AAC5F,WAAO,KAAImB,gDAAJ,EAA2BlB,QAA3B,EAAqCD,SAArC,EAAgD,IAAhD,CAAP;AACD;;AAIwB,QAAXE,WAAW,GAAG;AAC1B,QAAI,CAAC,KAAKD,QAAV,EAAoB;AAClB,YAAMA,QAAQ,GAAG,KAAKf,MAAL,CAAYkC,iBAAZ,EAAjB;;AACA,UAAInB,QAAJ,EAAc;AACZ,aAAKA,QAAL,GAAgBA,QAAhB;AACA,eAAOA,QAAP;AACD;;AAED,WAAKA,QAAL,GAAgB,MAAM,KAAKf,MAAL,CAAYmC,kBAAZ,CAA+B,KAAKlC,QAApC,CAAtB;AACA,aAAO,KAAKc,QAAZ;AACD;;AAED,WAAO,KAAKA,QAAZ;AACD;;AAEkB,QAAbU,aAAa,CAACG,IAAD,EAAaT,OAAb,EAA+E;AAChG,UAAMU,WAAW,GAAG,KAAKC,cAAL,CAAoBF,IAApB,EAA0BT,OAAO,CAACL,SAAlC,CAApB;AACA,QAAI,CAACe,WAAL,EAAkB,OAAO3B,SAAP;AAClB,WAAO2B,WAAW,CAACO,SAAZ,CAAsBR,IAAtB,EAA4BT,OAA5B,CAAP;AACD;AAED;AACF;AACA;;;AACUW,EAAAA,cAAc,CAACF,IAAD,EAAad,SAAb,EAAmC;AACvD,UAAMuB,YAAY,GAAG,uBAAQ,KAAKtC,qBAAL,CAA2BuC,MAA3B,EAAR,CAArB;AACA,UAAMT,WAAW,GAAGQ,YAAY,CAACE,IAAb,CAAmBC,iBAAD,IAAuBA,iBAAiB,CAACC,SAAlB,CAA4Bb,IAA5B,CAAzC,CAApB;AAEA,QAAI,CAACC,WAAL,EAAkB,MAAM,KAAIG,iCAAJ,EAAwBJ,IAAxB,EAA8Bd,SAA9B,CAAN;AAElB,WAAOe,WAAP;AACD;;AA5EyD","sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { SchemaNode, SemanticSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string\n ) {}\n\n parseSourceFile(file: AbstractVinyl) {\n return ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true,\n this.tsconfig.compilerOptions\n );\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component) {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n await this.computeSchema(mainAst, context); // TODO: create the schema\n\n return SemanticSchema.from({});\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context.component);\n if (!transformer || !transformer.getIdentifiers) throw new TransformerNotFound(node, context.component);\n return transformer.getIdentifiers(node, context);\n }\n\n private createContext(tsserver: TsserverClient, component: Component): SchemaExtractorContext {\n return new SchemaExtractorContext(tsserver, component, this);\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode | undefined> {\n const transformer = this.getTransformer(node, context.component);\n if (!transformer) return undefined;\n return transformer.transform(node, context);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, component: Component) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, component);\n\n return transformer;\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import ts
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { SlotRegistry } from '@teambit/harmony';
|
|
2
3
|
import { CLIMain } from '@teambit/cli';
|
|
3
4
|
import { Compiler } from '@teambit/compiler';
|
|
4
5
|
import { Logger, LoggerMain } from '@teambit/logger';
|
|
@@ -7,16 +8,20 @@ import { PackageJsonProps } from '@teambit/pkg';
|
|
|
7
8
|
import { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';
|
|
8
9
|
import type { Workspace } from '@teambit/workspace';
|
|
9
10
|
import { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';
|
|
11
|
+
import { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
10
12
|
import type { Component } from '@teambit/component';
|
|
11
13
|
import { TypeScriptCompilerOptions } from './compiler-options';
|
|
14
|
+
import { SchemaTransformer } from './schema-transformer';
|
|
12
15
|
export declare type TsMode = 'build' | 'dev';
|
|
16
|
+
export declare type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;
|
|
13
17
|
export declare type TsConfigTransformContext = {};
|
|
14
18
|
export declare type TsConfigTransformer = (config: TypescriptConfigMutator, context: TsConfigTransformContext) => TypescriptConfigMutator;
|
|
15
19
|
export declare class TypescriptMain {
|
|
16
20
|
private logger;
|
|
17
|
-
private
|
|
21
|
+
private schemaTransformerSlot;
|
|
22
|
+
private workspace;
|
|
23
|
+
constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, workspace: Workspace);
|
|
18
24
|
private tsServer;
|
|
19
|
-
constructor(logger: Logger, workspace?: Workspace | undefined);
|
|
20
25
|
/**
|
|
21
26
|
* create a new compiler.
|
|
22
27
|
*/
|
|
@@ -43,7 +48,7 @@ export declare class TypescriptMain {
|
|
|
43
48
|
/**
|
|
44
49
|
* create an instance of a typescript semantic schema extractor.
|
|
45
50
|
*/
|
|
46
|
-
createSchemaExtractor(tsconfig:
|
|
51
|
+
createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor;
|
|
47
52
|
/**
|
|
48
53
|
* add the default package json properties to the component
|
|
49
54
|
* :TODO @gilad why do we need this DSL? can't I just get the args here.
|
|
@@ -54,6 +59,7 @@ export declare class TypescriptMain {
|
|
|
54
59
|
private onComponentChange;
|
|
55
60
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
56
61
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
57
|
-
static
|
|
62
|
+
static slots: ((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>)[];
|
|
63
|
+
static provider([schema, loggerExt, aspectLoader, workspace, cli]: [SchemaMain, LoggerMain, AspectLoaderMain, Workspace, CLIMain], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
|
|
58
64
|
}
|
|
59
65
|
export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[] | undefined, context: TsConfigTransformContext): TypescriptConfigMutator;
|
|
@@ -36,6 +36,16 @@ function _typescript() {
|
|
|
36
36
|
return data;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
function _harmony() {
|
|
40
|
+
const data = require("@teambit/harmony");
|
|
41
|
+
|
|
42
|
+
_harmony = function () {
|
|
43
|
+
return data;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return data;
|
|
47
|
+
}
|
|
48
|
+
|
|
39
49
|
function _cli() {
|
|
40
50
|
const data = require("@teambit/cli");
|
|
41
51
|
|
|
@@ -77,7 +87,7 @@ function _typescriptModules() {
|
|
|
77
87
|
}
|
|
78
88
|
|
|
79
89
|
function _workspace() {
|
|
80
|
-
const data =
|
|
90
|
+
const data = require("@teambit/workspace");
|
|
81
91
|
|
|
82
92
|
_workspace = function () {
|
|
83
93
|
return data;
|
|
@@ -106,6 +116,16 @@ function _tsServer() {
|
|
|
106
116
|
return data;
|
|
107
117
|
}
|
|
108
118
|
|
|
119
|
+
function _aspectLoader() {
|
|
120
|
+
const data = _interopRequireDefault(require("@teambit/aspect-loader"));
|
|
121
|
+
|
|
122
|
+
_aspectLoader = function () {
|
|
123
|
+
return data;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
return data;
|
|
127
|
+
}
|
|
128
|
+
|
|
109
129
|
function _typescript2() {
|
|
110
130
|
const data = require("./typescript.extractor");
|
|
111
131
|
|
|
@@ -146,6 +166,26 @@ function _typescript5() {
|
|
|
146
166
|
return data;
|
|
147
167
|
}
|
|
148
168
|
|
|
169
|
+
function _schemaTransformer() {
|
|
170
|
+
const data = require("./schema-transformer.plugin");
|
|
171
|
+
|
|
172
|
+
_schemaTransformer = function () {
|
|
173
|
+
return data;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
return data;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function _transformers() {
|
|
180
|
+
const data = require("./transformers");
|
|
181
|
+
|
|
182
|
+
_transformers = function () {
|
|
183
|
+
return data;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
return data;
|
|
187
|
+
}
|
|
188
|
+
|
|
149
189
|
function _checkTypes() {
|
|
150
190
|
const data = require("./cmds/check-types.cmd");
|
|
151
191
|
|
|
@@ -157,22 +197,16 @@ function _checkTypes() {
|
|
|
157
197
|
}
|
|
158
198
|
|
|
159
199
|
class TypescriptMain {
|
|
160
|
-
constructor(logger, workspace) {
|
|
200
|
+
constructor(logger, schemaTransformerSlot, workspace) {
|
|
161
201
|
this.logger = logger;
|
|
202
|
+
this.schemaTransformerSlot = schemaTransformerSlot;
|
|
162
203
|
this.workspace = workspace;
|
|
163
204
|
(0, _defineProperty2().default)(this, "tsServer", void 0);
|
|
164
|
-
|
|
165
|
-
if (this.workspace) {
|
|
166
|
-
this.workspace.registerOnPreWatch(this.onPreWatch.bind(this));
|
|
167
|
-
this.workspace.registerOnComponentChange(this.onComponentChange.bind(this));
|
|
168
|
-
this.workspace.registerOnComponentAdd(this.onComponentChange.bind(this));
|
|
169
|
-
}
|
|
170
205
|
}
|
|
206
|
+
|
|
171
207
|
/**
|
|
172
208
|
* create a new compiler.
|
|
173
209
|
*/
|
|
174
|
-
|
|
175
|
-
|
|
176
210
|
createCompiler(options, transformers = [], tsModule = _typescript().default) {
|
|
177
211
|
const configMutator = new (_typescriptModules().TypescriptConfigMutator)(options);
|
|
178
212
|
const transformerContext = {};
|
|
@@ -221,8 +255,8 @@ class TypescriptMain {
|
|
|
221
255
|
*/
|
|
222
256
|
|
|
223
257
|
|
|
224
|
-
createSchemaExtractor(tsconfig) {
|
|
225
|
-
return new (_typescript2().TypeScriptExtractor)(tsconfig);
|
|
258
|
+
createSchemaExtractor(tsconfig, path) {
|
|
259
|
+
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);
|
|
226
260
|
}
|
|
227
261
|
/**
|
|
228
262
|
* add the default package json properties to the component
|
|
@@ -275,21 +309,30 @@ class TypescriptMain {
|
|
|
275
309
|
};
|
|
276
310
|
}
|
|
277
311
|
|
|
278
|
-
static async provider([schema, loggerExt, workspace, cli]) {
|
|
312
|
+
static async provider([schema, loggerExt, aspectLoader, workspace, cli], config, [schemaTransformerSlot]) {
|
|
279
313
|
schema.registerParser(new (_typescript5().TypeScriptParser)());
|
|
280
314
|
const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
|
|
281
|
-
|
|
282
|
-
const
|
|
283
|
-
|
|
315
|
+
aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
|
|
316
|
+
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);
|
|
317
|
+
schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)()]);
|
|
318
|
+
|
|
319
|
+
if (workspace) {
|
|
320
|
+
workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));
|
|
321
|
+
workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));
|
|
322
|
+
workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
const checkTypesCmd = new (_checkTypes().CheckTypesCmd)(tsMain, workspace, logger);
|
|
284
326
|
cli.register(checkTypesCmd);
|
|
285
|
-
return
|
|
327
|
+
return tsMain;
|
|
286
328
|
}
|
|
287
329
|
|
|
288
330
|
}
|
|
289
331
|
|
|
290
332
|
exports.TypescriptMain = TypescriptMain;
|
|
291
333
|
(0, _defineProperty2().default)(TypescriptMain, "runtime", _cli().MainRuntime);
|
|
292
|
-
(0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect,
|
|
334
|
+
(0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect]);
|
|
335
|
+
(0, _defineProperty2().default)(TypescriptMain, "slots", [_harmony().Slot.withType()]);
|
|
293
336
|
|
|
294
337
|
_typescript3().TypescriptAspect.addRuntime(TypescriptMain);
|
|
295
338
|
|
|
@@ -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","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createSchemaExtractor","tsconfig","TypeScriptExtractor","getPackageJsonProps","main","types","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","component","results","file","onFileChange","provider","schema","loggerExt","cli","registerParser","TypeScriptParser","createLogger","typescriptMain","checkTypesCmd","CheckTypesCmd","register","MainRuntime","SchemaAspect","LoggerAspect","WorkspaceAspect","CLIAspect","addRuntime","config","context","Array","isArray","newConfig","reduce","acc","transformer"],"mappings":"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","sourcesContent":["import ts, { TsConfigSourceFile } from 'typescript';\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 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';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\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 public 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 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 = [SchemaAspect, LoggerAspect, WorkspaceAspect, CLIAspect];\n\n static async provider([schema, loggerExt, workspace, cli]: [SchemaMain, LoggerMain, Workspace, CLIMain]) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n schema.registerParser(new TypeScriptParser(logger));\n const typescriptMain = new TypescriptMain(logger, workspace);\n const checkTypesCmd = new CheckTypesCmd(typescriptMain, workspace, logger);\n cli.register(checkTypesCmd);\n\n return typescriptMain;\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","schemaTransformerSlot","workspace","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","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","config","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","VariableStatementTransformer","SourceFileTransformer","TypeAliasTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"mappings":"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","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 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 { 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 SourceFileTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\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 constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace\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 an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);\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 public 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 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 = [SchemaAspect, LoggerAspect, AspectLoaderAspect, WorkspaceAspect, CLIAspect];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli]: [SchemaMain, LoggerMain, AspectLoaderMain, Workspace, CLIMain],\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 tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new VariableStatementTransformer(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\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 cli.register(checkTypesCmd);\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"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Parser } from '@teambit/schema';
|
|
2
|
+
import { Export, Module, StaticProperties } from '@teambit/semantics.entities.semantic-schema';
|
|
2
3
|
import { Logger } from '@teambit/logger';
|
|
3
4
|
import { SourceFile } from 'typescript';
|
|
4
5
|
export declare class TypeScriptParser implements Parser {
|
|
@@ -19,10 +19,10 @@ function _defineProperty2() {
|
|
|
19
19
|
return data;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
function
|
|
23
|
-
const data = require("@teambit/schema");
|
|
22
|
+
function _semanticsEntities() {
|
|
23
|
+
const data = require("@teambit/semantics.entities.semantic-schema");
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
_semanticsEntities = function () {
|
|
26
26
|
return data;
|
|
27
27
|
};
|
|
28
28
|
|
|
@@ -67,19 +67,19 @@ class TypeScriptParser {
|
|
|
67
67
|
if ((0, _typescript().isVariableStatement)(statement)) {
|
|
68
68
|
const child = statement.declarationList.declarations[0];
|
|
69
69
|
const name = child.name.text;
|
|
70
|
-
return new (
|
|
70
|
+
return new (_semanticsEntities().Export)(name, undefined, staticProperties.get(name));
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
if ((0, _typescript().isFunctionDeclaration)(statement)) {
|
|
74
74
|
if (!statement.name) return undefined;
|
|
75
75
|
const name = statement.name.text;
|
|
76
|
-
return new (
|
|
76
|
+
return new (_semanticsEntities().Export)(name, undefined, staticProperties.get(name));
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
if ((0, _typescript().isClassDeclaration)(statement)) {
|
|
80
80
|
if (!statement.name) return undefined;
|
|
81
81
|
const name = statement.name.text;
|
|
82
|
-
return new (
|
|
82
|
+
return new (_semanticsEntities().Export)(name, undefined, staticProperties.get(name));
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
return undefined;
|
|
@@ -93,7 +93,7 @@ class TypeScriptParser {
|
|
|
93
93
|
const ast = _typescript().default.createSourceFile(modulePath, (0, _fsExtra().readFileSync)(modulePath, 'utf8'), _typescript().default.ScriptTarget.Latest);
|
|
94
94
|
|
|
95
95
|
const moduleExports = this.getExports(ast);
|
|
96
|
-
return new (
|
|
96
|
+
return new (_semanticsEntities().Module)(moduleExports);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
parseStaticProperties(sourceFile) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["typescript.parser.ts"],"names":["TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exports","statements","filter","statement","modifiers","find","modifier","kind","ts","SyntaxKind","ExportKeyword","exportModels","map","child","declarationList","declarations","name","text","Export","
|
|
1
|
+
{"version":3,"sources":["typescript.parser.ts"],"names":["TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exports","statements","filter","statement","modifiers","find","modifier","kind","ts","SyntaxKind","ExportKeyword","exportModels","map","child","declarationList","declarations","name","text","Export","undefined","get","withoutEmpty","exportModel","parseModule","modulePath","ast","createSourceFile","ScriptTarget","Latest","moduleExports","Module","exportStaticProperties","Map","forEach","isExpressionStatement","isBinaryExpression","expression","operatorToken","EqualsToken","isPropertyAccessExpression","left","isIdentifier","targetName","propertyName","has","set","existingProperties","isStringLiteral","right","isNumericLiteral","UndefinedKeyword","NullKeyword","TrueKeyword","FalseKeyword","err","logger","error","constructor"],"mappings":"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","sourcesContent":["import { Parser } from '@teambit/schema';\nimport { Export, Module, StaticProperties } from '@teambit/semantics.entities.semantic-schema';\nimport { Logger } from '@teambit/logger';\nimport { readFileSync } from 'fs-extra';\nimport ts, {\n isClassDeclaration,\n isFunctionDeclaration,\n isVariableStatement,\n SourceFile,\n VariableStatement,\n} from 'typescript';\n\nexport class TypeScriptParser implements Parser {\n public extension = /^.*\\.(js|jsx|ts|tsx)$/;\n\n getExports(sourceFile: SourceFile): Export[] {\n const staticProperties = this.parseStaticProperties(sourceFile);\n\n const exports = sourceFile.statements.filter((statement) => {\n if (!statement.modifiers) return false;\n return statement.modifiers.find((modifier) => {\n return modifier.kind === ts.SyntaxKind.ExportKeyword;\n });\n });\n\n const exportModels = exports.map((statement) => {\n // todo refactor to a registry of variable statements.\n if (isVariableStatement(statement)) {\n const child = (statement as VariableStatement).declarationList.declarations[0];\n const name = (child as any).name.text;\n return new Export(name, undefined, staticProperties.get(name));\n }\n\n if (isFunctionDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, undefined, staticProperties.get(name));\n }\n\n if (isClassDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, undefined, staticProperties.get(name));\n }\n\n return undefined;\n });\n const withoutEmpty = exportModels.filter((exportModel) => exportModel !== undefined);\n // @ts-ignore\n return withoutEmpty;\n }\n\n parseModule(modulePath: string) {\n const ast = ts.createSourceFile(modulePath, readFileSync(modulePath, 'utf8'), ts.ScriptTarget.Latest);\n\n const moduleExports = this.getExports(ast);\n\n return new Module(moduleExports);\n }\n\n parseStaticProperties(sourceFile: SourceFile) {\n // TODO - should we also parse staticProperties inside classes / objects?\n\n const exportStaticProperties = new Map<string, StaticProperties>();\n\n sourceFile.statements.forEach((statement) => {\n try {\n if (!ts.isExpressionStatement(statement)) return;\n if (!ts.isBinaryExpression(statement.expression)) return;\n if (statement.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return;\n if (!ts.isPropertyAccessExpression(statement.expression.left)) return;\n if (!ts.isIdentifier(statement.expression.left.expression)) return;\n\n const targetName = statement.expression.left.expression.text;\n const propertyName = statement.expression.left.name.text;\n\n if (!exportStaticProperties.has(targetName)) exportStaticProperties.set(targetName, new Map());\n\n const existingProperties = exportStaticProperties.get(targetName);\n\n if (ts.isStringLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, statement.expression.right.text);\n } else if (ts.isNumericLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, +statement.expression.right.text);\n } else if (statement.expression.right.kind === ts.SyntaxKind.UndefinedKeyword) {\n existingProperties?.set(propertyName, undefined);\n } else if (statement.expression.right.kind === ts.SyntaxKind.NullKeyword) {\n existingProperties?.set(propertyName, null);\n } else if (statement.expression.right.kind === ts.SyntaxKind.TrueKeyword) {\n existingProperties?.set(propertyName, true);\n } else if (statement.expression.right.kind === ts.SyntaxKind.FalseKeyword) {\n existingProperties?.set(propertyName, false);\n }\n } catch (err) {\n this.logger?.error('failed parsing static properties', err);\n }\n });\n\n return exportStaticProperties;\n }\n\n constructor(private logger?: Logger | undefined) {}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TransformerNotFound } from './transformer-not-found';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Node } from 'typescript';
|
|
2
|
+
import { Component } from '@teambit/component';
|
|
3
|
+
|
|
4
|
+
export class TransformerNotFound extends Error {
|
|
5
|
+
constructor(readonly node: Node, readonly component: Component) {
|
|
6
|
+
super(
|
|
7
|
+
`typescript: could not find schema transformer for node of kind ${
|
|
8
|
+
node.kind
|
|
9
|
+
} in component ${component.id.toString()}`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
Binary file
|