@teambit/typescript 0.0.726 → 0.0.729
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/transformer-not-found.js +14 -1
- package/dist/exceptions/transformer-not-found.js.map +1 -1
- package/dist/schema-extractor-context.d.ts +33 -4
- package/dist/schema-extractor-context.js +163 -24
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/transformers/class-deceleration.d.ts +11 -0
- package/dist/transformers/class-deceleration.js +126 -0
- package/dist/transformers/class-deceleration.js.map +1 -0
- package/dist/transformers/constructor.d.ts +10 -0
- package/dist/transformers/constructor.js +70 -0
- package/dist/transformers/constructor.js.map +1 -0
- package/dist/transformers/export-declaration.d.ts +2 -1
- package/dist/transformers/export-declaration.js +64 -13
- package/dist/transformers/export-declaration.js.map +1 -1
- package/dist/transformers/function-declaration.d.ts +1 -3
- package/dist/transformers/function-declaration.js +25 -31
- package/dist/transformers/function-declaration.js.map +1 -1
- package/dist/transformers/index-signature.d.ts +9 -0
- package/dist/transformers/index-signature.js +61 -0
- package/dist/transformers/index-signature.js.map +1 -0
- package/dist/transformers/index.d.ts +14 -0
- package/dist/transformers/index.js +224 -0
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/interface-declaration.d.ts +10 -0
- package/dist/transformers/interface-declaration.js +73 -0
- package/dist/transformers/interface-declaration.js.map +1 -0
- package/dist/transformers/literal-type.d.ts +8 -0
- package/dist/transformers/literal-type.js +50 -0
- package/dist/transformers/literal-type.js.map +1 -0
- package/dist/transformers/method-declaration.d.ts +11 -0
- package/dist/transformers/method-declaration.js +94 -0
- package/dist/transformers/method-declaration.js.map +1 -0
- package/dist/transformers/method-signature.d.ts +10 -0
- package/dist/transformers/method-signature.js +81 -0
- package/dist/transformers/method-signature.js.map +1 -0
- package/dist/transformers/property-declaration.d.ts +11 -0
- package/dist/transformers/property-declaration.js +81 -0
- package/dist/transformers/property-declaration.js.map +1 -0
- package/dist/transformers/property-signature.d.ts +10 -0
- package/dist/transformers/property-signature.js +91 -0
- package/dist/transformers/property-signature.js.map +1 -0
- package/dist/transformers/source-file-transformer.d.ts +2 -1
- package/dist/transformers/source-file-transformer.js +23 -3
- package/dist/transformers/source-file-transformer.js.map +1 -1
- package/dist/transformers/type-alias.d.ts +4 -1
- package/dist/transformers/type-alias.js +22 -2
- package/dist/transformers/type-alias.js.map +1 -1
- package/dist/transformers/type-intersection.d.ts +9 -0
- package/dist/transformers/type-intersection.js +63 -0
- package/dist/transformers/type-intersection.js.map +1 -0
- package/dist/transformers/type-literal.d.ts +14 -0
- package/dist/transformers/type-literal.js +67 -0
- package/dist/transformers/type-literal.js.map +1 -0
- package/dist/transformers/type-reference.d.ts +8 -0
- package/dist/transformers/type-reference.js +41 -0
- package/dist/transformers/type-reference.js.map +1 -0
- package/dist/transformers/type-union.d.ts +9 -0
- package/dist/transformers/type-union.js +63 -0
- package/dist/transformers/type-union.js.map +1 -0
- package/dist/transformers/utils/get-params.d.ts +4 -0
- package/dist/transformers/utils/get-params.js +67 -0
- package/dist/transformers/utils/get-params.js.map +1 -0
- package/dist/transformers/utils/parse-type-from-quick-info.d.ts +2 -0
- package/dist/transformers/utils/parse-type-from-quick-info.js +26 -0
- package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -0
- package/dist/transformers/variable-declaration.d.ts +11 -0
- package/dist/transformers/variable-declaration.js +98 -0
- package/dist/transformers/variable-declaration.js.map +1 -0
- package/dist/transformers/variable-statement.d.ts +7 -1
- package/dist/transformers/variable-statement.js +42 -2
- package/dist/transformers/variable-statement.js.map +1 -1
- package/dist/typescript.extractor.d.ts +3 -3
- package/dist/typescript.extractor.js +7 -4
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.main.runtime.js +1 -1
- package/dist/typescript.main.runtime.js.map +1 -1
- package/exceptions/transformer-not-found.ts +5 -4
- package/package-tar/teambit-typescript-0.0.729.tgz +0 -0
- package/package.json +15 -15
- package/{preview-1651721125153.js → preview-1652239597845.js} +2 -2
- package/transformers/class-deceleration.ts +49 -0
- package/transformers/constructor.ts +22 -0
- package/transformers/export-declaration.ts +42 -13
- package/transformers/function-declaration.ts +7 -27
- package/transformers/index-signature.ts +21 -0
- package/transformers/index.ts +14 -0
- package/transformers/interface-declaration.ts +24 -0
- package/transformers/literal-type.ts +18 -0
- package/transformers/method-declaration.ts +32 -0
- package/transformers/method-signature.ts +30 -0
- package/transformers/property-declaration.ts +31 -0
- package/transformers/property-signature.ts +38 -0
- package/transformers/source-file-transformer.ts +6 -6
- package/transformers/type-alias.ts +12 -2
- package/transformers/type-intersection.ts +23 -0
- package/transformers/type-literal.ts +28 -0
- package/transformers/type-reference.ts +19 -0
- package/transformers/type-union.ts +23 -0
- package/transformers/utils/get-params.ts +30 -0
- package/transformers/utils/parse-type-from-quick-info.ts +12 -0
- package/transformers/variable-declaration.ts +36 -0
- package/transformers/variable-statement.ts +16 -2
- package/package-tar/teambit-typescript-0.0.726.tgz +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Parameter } from '@teambit/semantics.entities.semantic-schema';
|
|
2
|
+
import { ParameterDeclaration, NodeArray } from 'typescript';
|
|
3
|
+
import { SchemaExtractorContext } from '../../schema-extractor-context';
|
|
4
|
+
export declare function getParams(parameterNodes: NodeArray<ParameterDeclaration>, context: SchemaExtractorContext): Promise<Parameter[]>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.promise.js");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.getParams = getParams;
|
|
11
|
+
|
|
12
|
+
function _semanticsEntities() {
|
|
13
|
+
const data = require("@teambit/semantics.entities.semantic-schema");
|
|
14
|
+
|
|
15
|
+
_semanticsEntities = function () {
|
|
16
|
+
return data;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function _pMapSeries() {
|
|
23
|
+
const data = _interopRequireDefault(require("p-map-series"));
|
|
24
|
+
|
|
25
|
+
_pMapSeries = function () {
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function _parseTypeFromQuickInfo() {
|
|
33
|
+
const data = require("./parse-type-from-quick-info");
|
|
34
|
+
|
|
35
|
+
_parseTypeFromQuickInfo = function () {
|
|
36
|
+
return data;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async function getParams(parameterNodes, context) {
|
|
43
|
+
return (0, _pMapSeries().default)(parameterNodes, async param => {
|
|
44
|
+
return {
|
|
45
|
+
name: param.name.getText(),
|
|
46
|
+
type: await getParamType(param, context),
|
|
47
|
+
defaultValue: param.initializer ? param.initializer.getText() : undefined
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function getParamType(param, context) {
|
|
53
|
+
var _info$body;
|
|
54
|
+
|
|
55
|
+
if (param.type) {
|
|
56
|
+
const type = param.type; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
57
|
+
|
|
58
|
+
return context.resolveType(type, (type === null || type === void 0 ? void 0 : type.getText()) || 'any');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const info = await context.getQuickInfo(param.name);
|
|
62
|
+
const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
|
|
63
|
+
const parsed = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(displaySig);
|
|
64
|
+
return new (_semanticsEntities().TypeRefSchema)(parsed || 'any');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=get-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["get-params.ts"],"names":["getParams","parameterNodes","context","param","name","getText","type","getParamType","defaultValue","initializer","undefined","resolveType","info","getQuickInfo","displaySig","body","displayString","parsed","TypeRefSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,eAAeA,SAAf,CACLC,cADK,EAELC,OAFK,EAGiB;AACtB,SAAO,2BAAWD,cAAX,EAA2B,MAAOE,KAAP,IAAiB;AACjD,WAAO;AACLC,MAAAA,IAAI,EAAED,KAAK,CAACC,IAAN,CAAWC,OAAX,EADD;AAELC,MAAAA,IAAI,EAAE,MAAMC,YAAY,CAACJ,KAAD,EAAQD,OAAR,CAFnB;AAGLM,MAAAA,YAAY,EAAEL,KAAK,CAACM,WAAN,GAAoBN,KAAK,CAACM,WAAN,CAAkBJ,OAAlB,EAApB,GAAkDK;AAH3D,KAAP;AAKD,GANM,CAAP;AAOD;;AAED,eAAeH,YAAf,CAA4BJ,KAA5B,EAAyDD,OAAzD,EAAkH;AAAA;;AAChH,MAAIC,KAAK,CAACG,IAAV,EAAgB;AACd,UAAMA,IAAI,GAAGH,KAAK,CAACG,IAAnB,CADc,CAEd;;AACA,WAAOJ,OAAO,CAACS,WAAR,CAAoBL,IAApB,EAA2B,CAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAED,OAAN,OAAmB,KAA9C,CAAP;AACD;;AACD,QAAMO,IAAI,GAAG,MAAMV,OAAO,CAACW,YAAR,CAAqBV,KAAK,CAACC,IAA3B,CAAnB;AACA,QAAMU,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,QAAMC,MAAM,GAAG,sDAAuBH,UAAvB,CAAf;AACA,SAAO,KAAII,kCAAJ,EAAkBD,MAAM,IAAI,KAA5B,CAAP;AACD","sourcesContent":["import { Parameter, TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { ParameterDeclaration, NodeArray } from 'typescript';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\n\nexport async function getParams(\n parameterNodes: NodeArray<ParameterDeclaration>,\n context: SchemaExtractorContext\n): Promise<Parameter[]> {\n return pMapSeries(parameterNodes, async (param) => {\n return {\n name: param.name.getText(),\n type: await getParamType(param, context),\n defaultValue: param.initializer ? param.initializer.getText() : undefined,\n };\n });\n}\n\nasync function getParamType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<TypeRefSchema> {\n if (param.type) {\n const type = param.type;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return context.resolveType(type!, type?.getText() || 'any');\n }\n const info = await context.getQuickInfo(param.name);\n const displaySig = info?.body?.displayString;\n const parsed = parseTypeFromQuickInfo(displaySig);\n return new TypeRefSchema(parsed || 'any');\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.string.trim.js");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.parseReturnTypeFromQuickInfo = parseReturnTypeFromQuickInfo;
|
|
11
|
+
exports.parseTypeFromQuickInfo = parseTypeFromQuickInfo;
|
|
12
|
+
|
|
13
|
+
function parseTypeFromQuickInfo(displayString) {
|
|
14
|
+
if (!displayString) return '';
|
|
15
|
+
const array = displayString.split(':');
|
|
16
|
+
return array[array.length - 1].trim();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function parseReturnTypeFromQuickInfo(displayString) {
|
|
20
|
+
if (!displayString) return '';
|
|
21
|
+
const typeStr = parseTypeFromQuickInfo(displayString);
|
|
22
|
+
const array = typeStr.split('=>');
|
|
23
|
+
return array[array.length - 1].trim();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=parse-type-from-quick-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["parse-type-from-quick-info.ts"],"names":["parseTypeFromQuickInfo","displayString","array","split","length","trim","parseReturnTypeFromQuickInfo","typeStr"],"mappings":";;;;;;;;;;;;AAAO,SAASA,sBAAT,CAAgCC,aAAhC,EAAwD;AAC7D,MAAI,CAACA,aAAL,EAAoB,OAAO,EAAP;AACpB,QAAMC,KAAK,GAAGD,aAAa,CAACE,KAAd,CAAoB,GAApB,CAAd;AACA,SAAOD,KAAK,CAACA,KAAK,CAACE,MAAN,GAAe,CAAhB,CAAL,CAAwBC,IAAxB,EAAP;AACD;;AAEM,SAASC,4BAAT,CAAsCL,aAAtC,EAA8D;AACnE,MAAI,CAACA,aAAL,EAAoB,OAAO,EAAP;AACpB,QAAMM,OAAO,GAAGP,sBAAsB,CAACC,aAAD,CAAtC;AACA,QAAMC,KAAK,GAAGK,OAAO,CAACJ,KAAR,CAAc,IAAd,CAAd;AACA,SAAOD,KAAK,CAACA,KAAK,CAACE,MAAN,GAAe,CAAhB,CAAL,CAAwBC,IAAxB,EAAP;AACD","sourcesContent":["export function parseTypeFromQuickInfo(displayString?: string) {\n if (!displayString) return '';\n const array = displayString.split(':');\n return array[array.length - 1].trim();\n}\n\nexport function parseReturnTypeFromQuickInfo(displayString?: string) {\n if (!displayString) return '';\n const typeStr = parseTypeFromQuickInfo(displayString);\n const array = typeStr.split('=>');\n return array[array.length - 1].trim();\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
|
|
2
|
+
import { Node, VariableDeclaration as VariableDeclarationNode } from 'typescript';
|
|
3
|
+
import { SchemaTransformer } from '../schema-transformer';
|
|
4
|
+
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
5
|
+
import { ExportIdentifier } from '../export-identifier';
|
|
6
|
+
export declare class VariableDeclaration implements SchemaTransformer {
|
|
7
|
+
predicate(node: Node): boolean;
|
|
8
|
+
getName(node: VariableDeclarationNode): string;
|
|
9
|
+
getIdentifiers(node: VariableDeclarationNode): Promise<ExportIdentifier[]>;
|
|
10
|
+
transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.promise.js");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.VariableDeclaration = void 0;
|
|
11
|
+
|
|
12
|
+
function _semanticsEntities() {
|
|
13
|
+
const data = require("@teambit/semantics.entities.semantic-schema");
|
|
14
|
+
|
|
15
|
+
_semanticsEntities = function () {
|
|
16
|
+
return data;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function _typescript() {
|
|
23
|
+
const data = _interopRequireDefault(require("typescript"));
|
|
24
|
+
|
|
25
|
+
_typescript = function () {
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function _exportIdentifier() {
|
|
33
|
+
const data = require("../export-identifier");
|
|
34
|
+
|
|
35
|
+
_exportIdentifier = function () {
|
|
36
|
+
return data;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function _getParams() {
|
|
43
|
+
const data = require("./utils/get-params");
|
|
44
|
+
|
|
45
|
+
_getParams = function () {
|
|
46
|
+
return data;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
return data;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function _parseTypeFromQuickInfo() {
|
|
53
|
+
const data = require("./utils/parse-type-from-quick-info");
|
|
54
|
+
|
|
55
|
+
_parseTypeFromQuickInfo = function () {
|
|
56
|
+
return data;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return data;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
class VariableDeclaration {
|
|
63
|
+
predicate(node) {
|
|
64
|
+
return node.kind === _typescript().default.SyntaxKind.VariableDeclaration;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getName(node) {
|
|
68
|
+
return node.name.getText();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async getIdentifiers(node) {
|
|
72
|
+
return [new (_exportIdentifier().ExportIdentifier)(node.name.getText(), node.getSourceFile().fileName)];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async transform(varDec, context) {
|
|
76
|
+
var _info$body, _varDec$initializer;
|
|
77
|
+
|
|
78
|
+
const name = this.getName(varDec);
|
|
79
|
+
const info = await context.getQuickInfo(varDec.name);
|
|
80
|
+
const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
|
|
81
|
+
|
|
82
|
+
if (((_varDec$initializer = varDec.initializer) === null || _varDec$initializer === void 0 ? void 0 : _varDec$initializer.kind) === _typescript().default.SyntaxKind.ArrowFunction) {
|
|
83
|
+
const args = await (0, _getParams().getParams)(varDec.initializer.parameters, context);
|
|
84
|
+
const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(displaySig);
|
|
85
|
+
const returnType = await context.resolveType(varDec, typeStr);
|
|
86
|
+
return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(displaySig);
|
|
90
|
+
const type = await context.resolveType(varDec, typeStr);
|
|
91
|
+
return new (_semanticsEntities().VariableSchema)(name, displaySig, type);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
exports.VariableDeclaration = VariableDeclaration;
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=variable-declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["variable-declaration.ts"],"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","initializer","ArrowFunction","args","parameters","typeStr","returnType","resolveType","FunctionSchema","type","VariableSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;AAC5DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,mBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAAgC;AACrC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,CAACP,IAAD,EAAgC;AAClD,WAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;AACD;;AAEc,QAATC,SAAS,CAACC,MAAD,EAAkCC,OAAlC,EAAwF;AAAA;;AACrG,UAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,MAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,MAAM,CAACP,IAA5B,CAAnB;AACA,UAAMW,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;;AACA,QAAI,wBAAAN,MAAM,CAACO,WAAP,4EAAoBlB,IAApB,MAA6BC,sBAAGC,UAAH,CAAciB,aAA/C,EAA8D;AAC5D,YAAMC,IAAI,GAAG,MAAM,4BAAWT,MAAM,CAACO,WAAR,CAAsCG,UAAhD,EAA4DT,OAA5D,CAAnB;AACA,YAAMU,OAAO,GAAG,4DAA6BP,UAA7B,CAAhB;AACA,YAAMQ,UAAU,GAAG,MAAMX,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAzB;AACA,aAAO,KAAIG,mCAAJ,EAAmBrB,IAAnB,EAAyBgB,IAAzB,EAA+BG,UAA/B,EAA2CR,UAA3C,CAAP;AACD;;AACD,UAAMO,OAAO,GAAG,sDAAuBP,UAAvB,CAAhB;AACA,UAAMW,IAAI,GAAG,MAAMd,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAnB;AACA,WAAO,KAAIK,mCAAJ,EAAmBvB,IAAnB,EAAyBW,UAAzB,EAAqCW,IAArC,CAAP;AACD;;AA1B2D","sourcesContent":["import { SchemaNode, VariableSchema, FunctionSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(displaySig);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionSchema(name, args, returnType, displaySig);\n }\n const typeStr = parseTypeFromQuickInfo(displaySig);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableSchema(name, displaySig, type);\n }\n}\n"]}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
|
|
1
2
|
import { Node, VariableStatement } from 'typescript';
|
|
2
3
|
import { SchemaTransformer } from '../schema-transformer';
|
|
4
|
+
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
3
5
|
import { ExportIdentifier } from '../export-identifier';
|
|
6
|
+
/**
|
|
7
|
+
* variable statement is a collection of variable declarations.
|
|
8
|
+
* e.g. `export const a = 1, b = () => {}, c = {};`
|
|
9
|
+
*/
|
|
4
10
|
export declare class VariableStatementTransformer implements SchemaTransformer {
|
|
5
11
|
predicate(node: Node): boolean;
|
|
6
12
|
getIdentifiers(node: VariableStatement): Promise<ExportIdentifier[]>;
|
|
7
|
-
transform(): Promise<
|
|
13
|
+
transform(node: VariableStatement, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
8
14
|
}
|
|
@@ -9,6 +9,36 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.VariableStatementTransformer = void 0;
|
|
11
11
|
|
|
12
|
+
function _semanticsEntities() {
|
|
13
|
+
const data = require("@teambit/semantics.entities.semantic-schema");
|
|
14
|
+
|
|
15
|
+
_semanticsEntities = function () {
|
|
16
|
+
return data;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function _lodash() {
|
|
23
|
+
const data = require("lodash");
|
|
24
|
+
|
|
25
|
+
_lodash = function () {
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function _pMapSeries() {
|
|
33
|
+
const data = _interopRequireDefault(require("p-map-series"));
|
|
34
|
+
|
|
35
|
+
_pMapSeries = function () {
|
|
36
|
+
return data;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
|
|
12
42
|
function _typescript() {
|
|
13
43
|
const data = _interopRequireDefault(require("typescript"));
|
|
14
44
|
|
|
@@ -29,6 +59,10 @@ function _exportIdentifier() {
|
|
|
29
59
|
return data;
|
|
30
60
|
}
|
|
31
61
|
|
|
62
|
+
/**
|
|
63
|
+
* variable statement is a collection of variable declarations.
|
|
64
|
+
* e.g. `export const a = 1, b = () => {}, c = {};`
|
|
65
|
+
*/
|
|
32
66
|
class VariableStatementTransformer {
|
|
33
67
|
predicate(node) {
|
|
34
68
|
return node.kind === _typescript().default.SyntaxKind.VariableStatement;
|
|
@@ -40,8 +74,14 @@ class VariableStatementTransformer {
|
|
|
40
74
|
});
|
|
41
75
|
}
|
|
42
76
|
|
|
43
|
-
async transform() {
|
|
44
|
-
|
|
77
|
+
async transform(node, context) {
|
|
78
|
+
const schemas = await (0, _pMapSeries().default)(node.declarationList.declarations, async dec => {
|
|
79
|
+
// this will get the schema from variable-declaration
|
|
80
|
+
const schema = await context.visitDefinition(dec.name);
|
|
81
|
+
return schema;
|
|
82
|
+
}); // @todo: find a better way to return an array of SchemaNode. this is not really a module
|
|
83
|
+
|
|
84
|
+
return new (_semanticsEntities().Module)((0, _lodash().compact)(schemas));
|
|
45
85
|
}
|
|
46
86
|
|
|
47
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["variable-statement.ts"],"names":["VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","ExportIdentifier","name","getText","getSourceFile","fileName","transform"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;
|
|
1
|
+
{"version":3,"sources":["variable-statement.ts"],"names":["VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","ExportIdentifier","name","getText","getSourceFile","fileName","transform","context","schemas","schema","visitDefinition","Module"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACO,MAAMA,4BAAN,CAAgE;AACrEC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,iBAAnC;AACD;;AAEmB,QAAdC,cAAc,CAACL,IAAD,EAA0B;AAC5C,WAAOA,IAAI,CAACM,eAAL,CAAqBC,YAArB,CAAkCC,GAAlC,CAAuCC,GAAD,IAAS;AACpD,aAAO,KAAIC,oCAAJ,EAAqBD,GAAG,CAACE,IAAJ,CAASC,OAAT,EAArB,EAAyCH,GAAG,CAACI,aAAJ,GAAoBC,QAA7D,CAAP;AACD,KAFM,CAAP;AAGD;;AAEc,QAATC,SAAS,CAACf,IAAD,EAA0BgB,OAA1B,EAAgF;AAC7F,UAAMC,OAAO,GAAG,MAAM,2BAAWjB,IAAI,CAACM,eAAL,CAAqBC,YAAhC,EAA8C,MAAOE,GAAP,IAAe;AACjF;AACA,YAAMS,MAAM,GAAG,MAAMF,OAAO,CAACG,eAAR,CAAwBV,GAAG,CAACE,IAA5B,CAArB;AACA,aAAOO,MAAP;AACD,KAJqB,CAAtB,CAD6F,CAM7F;;AACA,WAAO,KAAIE,2BAAJ,EAAW,uBAAQH,OAAR,CAAX,CAAP;AACD;;AAnBoE","sourcesContent":["import { SchemaNode, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { compact } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport ts, { Node, VariableStatement } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\n\n/**\n * variable statement is a collection of variable declarations.\n * e.g. `export const a = 1, b = () => {}, c = {};`\n */\nexport class VariableStatementTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableStatement;\n }\n\n async getIdentifiers(node: VariableStatement) {\n return node.declarationList.declarations.map((dec) => {\n return new ExportIdentifier(dec.name.getText(), dec.getSourceFile().fileName);\n });\n }\n\n async transform(node: VariableStatement, context: SchemaExtractorContext): Promise<SchemaNode> {\n const schemas = await pMapSeries(node.declarationList.declarations, async (dec) => {\n // this will get the schema from variable-declaration\n const schema = await context.visitDefinition(dec.name);\n return schema;\n });\n // @todo: find a better way to return an array of SchemaNode. this is not really a module\n return new Module(compact(schemas));\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ts, { Node } from 'typescript';
|
|
2
2
|
import { SchemaExtractor } from '@teambit/schema';
|
|
3
|
-
import { SchemaNode,
|
|
3
|
+
import { SchemaNode, APISchema } from '@teambit/semantics.entities.semantic-schema';
|
|
4
4
|
import { Component } from '@teambit/component';
|
|
5
5
|
import { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';
|
|
6
6
|
import { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';
|
|
@@ -15,12 +15,12 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
|
|
|
15
15
|
/**
|
|
16
16
|
* extract a component schema.
|
|
17
17
|
*/
|
|
18
|
-
extract(component: Component): Promise<
|
|
18
|
+
extract(component: Component): Promise<APISchema>;
|
|
19
19
|
computeExportedIdentifiers(node: Node, context: SchemaExtractorContext): Promise<import("./export-identifier").ExportIdentifier[]>;
|
|
20
20
|
private createContext;
|
|
21
21
|
private tsserver;
|
|
22
22
|
private getTsServer;
|
|
23
|
-
computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode
|
|
23
|
+
computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
24
24
|
/**
|
|
25
25
|
* select the correct transformer for a node.
|
|
26
26
|
*/
|
|
@@ -105,9 +105,11 @@ class TypeScriptExtractor {
|
|
|
105
105
|
const context = this.createContext(tsserver, component);
|
|
106
106
|
const exportNames = await this.computeExportedIdentifiers(mainAst, context);
|
|
107
107
|
context.setExports(new (_exportList().ExportList)(exportNames));
|
|
108
|
-
await this.computeSchema(mainAst, context);
|
|
108
|
+
const moduleSchema = await this.computeSchema(mainAst, context);
|
|
109
|
+
moduleSchema.flatExportsRecursively();
|
|
110
|
+
const apiScheme = moduleSchema; // return APISchema.from({ });
|
|
109
111
|
|
|
110
|
-
return _semanticsEntities().
|
|
112
|
+
return new (_semanticsEntities().APISchema)(apiScheme);
|
|
111
113
|
}
|
|
112
114
|
|
|
113
115
|
async computeExportedIdentifiers(node, context) {
|
|
@@ -137,8 +139,9 @@ class TypeScriptExtractor {
|
|
|
137
139
|
}
|
|
138
140
|
|
|
139
141
|
async computeSchema(node, context) {
|
|
140
|
-
const transformer = this.getTransformer(node, context.component);
|
|
141
|
-
|
|
142
|
+
const transformer = this.getTransformer(node, context.component); // leave the next line commented out, it is used for debugging
|
|
143
|
+
// console.log('transformer', transformer.constructor.name, node.getText());
|
|
144
|
+
|
|
142
145
|
return transformer.transform(node, context);
|
|
143
146
|
}
|
|
144
147
|
/**
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
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","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","APISchema","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","SchemaExtractorContext","getTsserverClient","initTsserverClient","transform","transformers","values","find","singleTransformer","predicate"],"mappings":"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","sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\n// @ts-ignore david what to do?\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): Promise<APISchema> {\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 const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n\n // return APISchema.from({ });\n return new APISchema(apiScheme);\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> {\n const transformer = this.getTransformer(node, context.component);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\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"]}
|
|
@@ -380,7 +380,7 @@ class TypescriptMain {
|
|
|
380
380
|
const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
|
|
381
381
|
aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
|
|
382
382
|
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);
|
|
383
|
-
schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)()]);
|
|
383
|
+
schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().MethodDeclaration)(), new (_transformers().PropertyDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().Constructor)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().TypeIntersectionTransformer)(), new (_transformers().TypeReferenceTransformer)(), new (_transformers().TypeLiteralTransformer)(), new (_transformers().PropertySignature)(), new (_transformers().TypeUnionTransformer)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().IndexSignature)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().MethodSignatureTransformer)()]);
|
|
384
384
|
|
|
385
385
|
if (workspace) {
|
|
386
386
|
workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));
|
|
@@ -1 +1 @@
|
|
|
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","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","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAOA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAeO,MAAMA,cAAN,CAAqB;AAC1BC,EAAAA,WAAW,CACDC,MADC,EAEDC,qBAFC,EAGDC,SAHC,EAIT;AAAA,SAHQF,MAGR,GAHQA,MAGR;AAAA,SAFQC,qBAER,GAFQA,qBAER;AAAA,SADQC,SACR,GADQA,SACR;AAAA;AAAE;;AAGJ;AACF;AACA;AACEC,EAAAA,cAAc,CACZC,OADY,EAEZC,YAAmC,GAAG,EAF1B,EAGZC,QAAQ,GAAGC,qBAHC,EAIF;AACV,UAAMC,aAAa,GAAG,KAAIC,4CAAJ,EAA4BL,OAA5B,CAAtB;AACA,UAAMM,kBAA4C,GAAG,EAArD;AACA,UAAMC,aAAa,GAAGC,0BAA0B,CAACJ,aAAa,CAACK,KAAd,EAAD,EAAwBR,YAAxB,EAAsCK,kBAAtC,CAAhD;AACA,WAAO,KAAII,iCAAJ,EAAuBC,gCAAiBC,EAAxC,EAA4C,KAAKhB,MAAjD,EAAyDW,aAAa,CAACM,GAAvE,EAA4EX,QAA5E,CAAP;AACD;AAED;AACF;AACA;;;AACEY,EAAAA,iBAAiB,GAA+B;AAC9C,WAAO,KAAKC,QAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AAC0B,QAAlBC,kBAAkB,CACtBC,WADsB,EAEtBjB,OAA2B,GAAG,EAFR,EAGtBkB,KAAe,GAAG,EAHI,EAIG;AACzB,SAAKH,QAAL,GAAgB,KAAII,0BAAJ,EAAmBF,WAAnB,EAAgC,KAAKrB,MAArC,EAA6CI,OAA7C,EAAsDkB,KAAtD,CAAhB;AACA,SAAKH,QAAL,CAAcK,IAAd;AACA,WAAO,KAAKL,QAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACuC,QAA/BM,+BAA+B,CACnCrB,OAA2B,GAAG,EADK,EAEnCkB,KAAe,GAAG,EAFiB,EAGV;AACzB,QAAI,CAAC,KAAKpB,SAAV,EAAqB;AACnB,YAAM,IAAIwB,KAAJ,CAAW,0DAAX,CAAN;AACD;;AACD,WAAO,KAAKN,kBAAL,CAAwB,KAAKlB,SAAL,CAAeyB,IAAvC,EAA6CvB,OAA7C,EAAsDkB,KAAtD,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEM,EAAAA,iBAAiB,CAACxB,OAAD,EAAqCC,YAAmC,GAAG,EAA3E,EAA+EC,QAAQ,GAAGC,qBAA1F,EAA8F;AAC7G,WAAO,KAAKJ,cAAL,CAAoBC,OAApB,EAA6B,CAAC,KAAKyB,iBAAL,EAAD,EAA2B,GAAGxB,YAA9B,CAA7B,EAA0EC,QAA1E,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEwB,EAAAA,iBAAiB,CAAC1B,OAAD,EAAqCC,YAAmC,GAAG,EAA3E,EAA+EC,QAAQ,GAAGC,qBAA1F,EAA8F;AAC7G,WAAO,KAAKJ,cAAL,CAAoBC,OAApB,EAA6B,CAAC,KAAK2B,iBAAL,EAAD,EAA2B,GAAG1B,YAA9B,CAA7B,EAA0EC,QAA1E,CAAP;AACD;AAED;AACF;AACA;AACA;;;AACEuB,EAAAA,iBAAiB,GAAwB;AACvC,UAAMG,cAAc,GAAIC,MAAD,IAAqC;AAC1DA,MAAAA,MAAM,CAACC,SAAP,CAAiB,UAAjB;AACA,aAAOD,MAAP;AACD,KAHD;;AAIA,WAAOD,cAAP;AACD;AAED;AACF;AACA;AACA;;;AACED,EAAAA,iBAAiB,GAAwB;AACvC,UAAMI,cAAc,GAAIF,MAAD,IAAqC;AAC1DA,MAAAA,MAAM,CAACC,SAAP,CAAiB,QAAjB;AACA,aAAOD,MAAP;AACD,KAHD;;AAIA,WAAOE,cAAP;AACD;AAED;AACF;AACA;;;AACEC,EAAAA,qBAAqB,CAACC,QAAD,EAAgBV,IAAhB,EAAgD;AACnE,WAAO,KAAIW,kCAAJ,EAAwBD,QAAxB,EAAkC,KAAKpC,qBAAvC,EAA8D,IAA9D,EAAoE0B,IAAI,IAAI,KAAKzB,SAAL,CAAeyB,IAA3F,CAAP;AACD;AAED;AACF;AACA;AACA;;;AACEY,EAAAA,sBAAsB,GAAqB;AACzC,WAAO;AACLC,MAAAA,IAAI,EAAE,gBADD;AAELC,MAAAA,KAAK,EAAE;AAFF,KAAP;AAID;AAED;AACF;AACA;AACA;;;AACEC,EAAAA,sBAAsB,GAAqB;AACzC,WAAO;AACL;AACAF,MAAAA,IAAI,EAAE,gBAFD;AAGLG,MAAAA,IAAI,EAAE,QAHD;AAILF,MAAAA,KAAK,EAAE;AAJF,KAAP;AAMD;;AAEMG,EAAAA,4BAA4B,CAACC,UAAD,EAAoC;AACrE,UAAMvB,KAAK,GAAGuB,UAAU,CACrBC,GADW,CACNC,CAAD,IAAOA,CAAC,CAACC,UAAF,CAAa1B,KADb,EAEX2B,IAFW,GAGXH,GAHW,CAGNI,CAAD,IAAOA,CAAC,CAACvB,IAHF,CAAd;AAIA,WAAOL,KAAK,CAAC6B,MAAN,CAAcD,CAAD,IAAOA,CAAC,CAACE,QAAF,CAAW,KAAX,KAAqBF,CAAC,CAACE,QAAF,CAAW,MAAX,CAAzC,CAAP;AACD;;AAEuB,QAAVC,UAAU,CAACR,UAAD,EAA0BS,SAA1B,EAAmD;AACzE,UAAMpD,SAAS,GAAG,KAAKA,SAAvB;;AACA,QAAI,CAACA,SAAD,IAAc,CAACoD,SAAS,CAACC,aAA7B,EAA4C;AAC1C;AACD;;AACD,UAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAA0BH,SAAhC;AACA,UAAMhC,KAAK,GAAGmC,UAAU,GAAG,KAAKb,4BAAL,CAAkCC,UAAlC,CAAH,GAAmD,EAA3E;AACA,UAAMa,eAAe,GAAGC,OAAO,CAACF,UAAD,CAA/B;AACA,UAAM,KAAKhC,+BAAL,CAAqC;AAAE+B,MAAAA,OAAF;AAAWC,MAAAA,UAAX;AAAuBC,MAAAA;AAAvB,KAArC,EAA+EpC,KAA/E,CAAN;AACD;;AAE8B,QAAjBsC,iBAAiB,CAACC,SAAD,EAAuBvC,KAAvB,EAAwC;AACrE,QAAI,CAAC,KAAKH,QAAV,EAAoB;AAClB,aAAO;AACL2C,QAAAA,OAAO,EAAE;AADJ,OAAP;AAGD;;AACD,UAAM,2BAAWxC,KAAX,EAAmByC,IAAD,IAAU,KAAK5C,QAAL,CAAc6C,YAAd,CAA2BD,IAA3B,CAA5B,CAAN;AACA,WAAO;AACLD,MAAAA,OAAO,EAAE;AADJ,KAAP;AAGD;;AAMoB,eAARG,QAAQ,CACnB,CAACC,MAAD,EAASC,SAAT,EAAoBC,YAApB,EAAkClE,SAAlC,EAA6CmE,GAA7C,CADmB,EAEnBpC,MAFmB,EAGnB,CAAChC,qBAAD,CAHmB,EAInB;AACAiE,IAAAA,MAAM,CAACI,cAAP,CAAsB,KAAIC,+BAAJ,GAAtB;AACA,UAAMvE,MAAM,GAAGmE,SAAS,CAACK,YAAV,CAAuBzD,gCAAiBC,EAAxC,CAAf;AACAoD,IAAAA,YAAY,CAACK,eAAb,CAA6B,CAAC,KAAIC,4CAAJ,EAA4BzE,qBAA5B,CAAD,CAA7B;AACA,UAAM0E,MAAM,GAAG,IAAI7E,cAAJ,CAAmBE,MAAnB,EAA2BC,qBAA3B,EAAkDC,SAAlD,CAAf;AACAD,IAAAA,qBAAqB,CAAC2E,QAAtB,CAA+B,CAC7B,KAAIC,iCAAJ,GAD6B,EAE7B,KAAIC,mCAAJ,GAF6B,EAG7B,KAAIC,4CAAJ,GAH6B,EAI7B,KAAIC,qCAAJ,GAJ6B,EAK7B,KAAIC,oCAAJ,GAL6B,CAA/B;;AAQA,QAAI/E,SAAJ,EAAe;AACbA,MAAAA,SAAS,CAACgF,kBAAV,CAA6BP,MAAM,CAACtB,UAAP,CAAkB8B,IAAlB,CAAuB,IAAvB,CAA7B;AACAjF,MAAAA,SAAS,CAACkF,yBAAV,CAAoCT,MAAM,CAACf,iBAAP,CAAyBuB,IAAzB,CAA8B,IAA9B,CAApC;AACAjF,MAAAA,SAAS,CAACmF,sBAAV,CAAiCV,MAAM,CAACf,iBAAP,CAAyBuB,IAAzB,CAA8B,IAA9B,CAAjC;AACD;;AAED,UAAMG,aAAa,GAAG,KAAIC,2BAAJ,EAAkBZ,MAAlB,EAA0BzE,SAA1B,EAAqCF,MAArC,CAAtB;AACAqE,IAAAA,GAAG,CAACO,QAAJ,CAAaU,aAAb;AAEA,WAAOX,MAAP;AACD;;AAzMyB;;;gCAAf7E,c,aA0KM0F,kB;gCA1KN1F,c,kBA2KW,CAAC2F,sBAAD,EAAeC,sBAAf,EAA6BC,uBAA7B,EAAiDC,4BAAjD,EAAkEC,gBAAlE,C;gCA3KX/F,c,WA4KI,CAACgG,gBAAKC,QAAL,EAAD,C;;AAgCjBhF,gCAAiBiF,UAAjB,CAA4BlG,cAA5B;;AAEO,SAASc,0BAAT,CACLqB,MADK,EAEL5B,YAAmC,GAAG,EAFjC,EAGL4F,OAHK,EAIoB;AACzB,MAAI,CAACC,KAAK,CAACC,OAAN,CAAc9F,YAAd,CAAL,EAAkC,OAAO4B,MAAP;AAClC,QAAMmE,SAAS,GAAG/F,YAAY,CAACgG,MAAb,CAAoB,CAACC,GAAD,EAAMC,WAAN,KAAsB;AAC1D,WAAOA,WAAW,CAACD,GAAD,EAAML,OAAN,CAAlB;AACD,GAFiB,EAEfhE,MAFe,CAAlB;AAGA,SAAOmE,SAAP;AACD","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 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(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 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 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
|
+
{"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","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","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","MethodDeclaration","PropertyDeclaration","VariableStatementTransformer","VariableDeclaration","Constructor","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","TypeIntersectionTransformer","TypeReferenceTransformer","TypeLiteralTransformer","PropertySignature","TypeUnionTransformer","LiteralTypeTransformer","IndexSignature","InterfaceDeclarationTransformer","MethodSignatureTransformer","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 MethodDeclaration,\n PropertyDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n TypeIntersectionTransformer,\n TypeReferenceTransformer,\n Constructor,\n TypeLiteralTransformer,\n PropertySignature,\n TypeUnionTransformer,\n LiteralTypeTransformer,\n IndexSignature,\n InterfaceDeclarationTransformer,\n MethodSignatureTransformer,\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 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(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 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 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 MethodDeclaration(),\n new PropertyDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new Constructor(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new TypeIntersectionTransformer(),\n new TypeReferenceTransformer(),\n new TypeLiteralTransformer(),\n new PropertySignature(),\n new TypeUnionTransformer(),\n new LiteralTypeTransformer(),\n new IndexSignature(),\n new InterfaceDeclarationTransformer(),\n new MethodSignatureTransformer(),\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,12 +1,13 @@
|
|
|
1
|
-
import { Node } from 'typescript';
|
|
1
|
+
import ts, { Node } from 'typescript';
|
|
2
2
|
import { Component } from '@teambit/component';
|
|
3
3
|
|
|
4
4
|
export class TransformerNotFound extends Error {
|
|
5
5
|
constructor(readonly node: Node, readonly component: Component) {
|
|
6
6
|
super(
|
|
7
|
-
`typescript: could not find schema transformer for node of kind ${
|
|
8
|
-
node.kind
|
|
9
|
-
} in component ${component.id.toString()}
|
|
7
|
+
`typescript: could not find schema transformer for node of kind ${node.kind} (${
|
|
8
|
+
ts.SyntaxKind[node.kind]
|
|
9
|
+
}) in component ${component.id.toString()}.
|
|
10
|
+
node text: ${node.getText()}`
|
|
10
11
|
);
|
|
11
12
|
}
|
|
12
13
|
}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/typescript",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.729",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/typescript/typescript",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.typescript",
|
|
8
8
|
"name": "typescript",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.729"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -18,20 +18,20 @@
|
|
|
18
18
|
"@babel/runtime": "7.12.18",
|
|
19
19
|
"core-js": "^3.0.0",
|
|
20
20
|
"@teambit/harmony": "0.3.3",
|
|
21
|
-
"@teambit/compiler": "0.0.
|
|
21
|
+
"@teambit/compiler": "0.0.729",
|
|
22
22
|
"@teambit/typescript.modules.ts-config-mutator": "0.0.68",
|
|
23
|
-
"@teambit/component": "0.0.
|
|
24
|
-
"@teambit/semantics.entities.semantic-schema": "0.0.
|
|
23
|
+
"@teambit/component": "0.0.729",
|
|
24
|
+
"@teambit/semantics.entities.semantic-schema": "0.0.8",
|
|
25
25
|
"@teambit/ts-server": "0.0.32",
|
|
26
|
-
"@teambit/aspect-loader": "0.0.
|
|
26
|
+
"@teambit/aspect-loader": "0.0.729",
|
|
27
27
|
"@teambit/bit-error": "0.0.394",
|
|
28
|
-
"@teambit/builder": "0.0.
|
|
29
|
-
"@teambit/isolator": "0.0.
|
|
30
|
-
"@teambit/logger": "0.0.
|
|
31
|
-
"@teambit/schema": "0.0.
|
|
32
|
-
"@teambit/cli": "0.0.
|
|
33
|
-
"@teambit/pkg": "0.0.
|
|
34
|
-
"@teambit/workspace": "0.0.
|
|
28
|
+
"@teambit/builder": "0.0.729",
|
|
29
|
+
"@teambit/isolator": "0.0.729",
|
|
30
|
+
"@teambit/logger": "0.0.578",
|
|
31
|
+
"@teambit/schema": "0.0.729",
|
|
32
|
+
"@teambit/cli": "0.0.486",
|
|
33
|
+
"@teambit/pkg": "0.0.729",
|
|
34
|
+
"@teambit/workspace": "0.0.729"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/lodash": "4.14.165",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@teambit/typescript.aspect-docs.typescript": "0.0.137"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@teambit/legacy": "1.0.
|
|
50
|
+
"@teambit/legacy": "1.0.265",
|
|
51
51
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
52
52
|
"react": "^16.8.0 || ^17.0.0"
|
|
53
53
|
},
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"react": "-"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
|
-
"@teambit/legacy": "1.0.
|
|
78
|
+
"@teambit/legacy": "1.0.265",
|
|
79
79
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
80
80
|
"react": "^16.8.0 || ^17.0.0"
|
|
81
81
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.
|
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.
|
|
1
|
+
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.729/dist/typescript.composition.js')]
|
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.729/dist/typescript.docs.mdx')]
|