@teambit/typescript 0.0.1160 → 0.0.1162
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/{preview-1694661423555.js → preview-1694747817610.js} +2 -2
- package/dist/schema-extractor-context.d.ts +2 -0
- package/dist/schema-extractor-context.js +17 -5
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/schema-transformer.d.ts +4 -0
- package/dist/schema-transformer.js.map +1 -1
- package/dist/transformers/binding-element.js +3 -2
- package/dist/transformers/binding-element.js.map +1 -1
- package/dist/transformers/constructor.js +1 -1
- package/dist/transformers/constructor.js.map +1 -1
- package/dist/transformers/function-like.js +1 -1
- package/dist/transformers/function-like.js.map +1 -1
- package/dist/transformers/get-accessor.js +1 -1
- package/dist/transformers/get-accessor.js.map +1 -1
- package/dist/transformers/parameter.d.ts +2 -2
- package/dist/transformers/parameter.js +11 -15
- package/dist/transformers/parameter.js.map +1 -1
- package/dist/transformers/property-declaration.js +3 -2
- package/dist/transformers/property-declaration.js.map +1 -1
- package/dist/transformers/type-reference.js +2 -2
- package/dist/transformers/type-reference.js.map +1 -1
- package/dist/transformers/variable-declaration.js +3 -2
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/typescript.extractor.d.ts +5 -2
- package/dist/typescript.extractor.js +19 -3
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.main.runtime.d.ts +8 -4
- package/dist/typescript.main.runtime.js +15 -6
- package/dist/typescript.main.runtime.js.map +1 -1
- package/dist/typescript.parser.js +7 -7
- package/dist/typescript.parser.js.map +1 -1
- package/dist/typescript.parser.spec.js +3 -3
- package/dist/typescript.parser.spec.js.map +1 -1
- package/package.json +19 -19
- package/transformers/binding-element.ts +2 -1
- package/transformers/parameter.ts +12 -16
- package/transformers/property-declaration.ts +2 -1
- package/transformers/type-reference.ts +2 -2
- package/transformers/variable-declaration.ts +3 -1
|
@@ -43,7 +43,8 @@ class ParameterTransformer {
|
|
|
43
43
|
return [];
|
|
44
44
|
}
|
|
45
45
|
async transform(node, context) {
|
|
46
|
-
|
|
46
|
+
const type = await this.getType(node, context);
|
|
47
|
+
return new (_semanticsEntities().ParameterSchema)(context.getLocation(node), this.getName(node), type, Boolean(node.questionToken), node.initializer ? node.initializer.getText() : undefined, undefined, await this.getObjectBindingNodes(node, type, context), Boolean(node.dotDotDotToken));
|
|
47
48
|
}
|
|
48
49
|
getName(param) {
|
|
49
50
|
if ((0, _typescript().isIdentifier)(param.name)) {
|
|
@@ -86,23 +87,18 @@ class ParameterTransformer {
|
|
|
86
87
|
}
|
|
87
88
|
throw new Error(`unknown param type`);
|
|
88
89
|
}
|
|
89
|
-
async getObjectBindingNodes(param, context) {
|
|
90
|
+
async getObjectBindingNodes(param, paramType, context) {
|
|
90
91
|
if (param.name.kind !== _typescript().SyntaxKind.ObjectBindingPattern) return undefined;
|
|
91
92
|
return (0, _pMapSeries().default)(param.name.elements, async elem => {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
signature: defaultSignature,
|
|
99
|
-
doc,
|
|
100
|
-
location: { filePath },
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
*/
|
|
93
|
+
var _paramType$findNode;
|
|
94
|
+
const existing = (_paramType$findNode = paramType.findNode) === null || _paramType$findNode === void 0 ? void 0 : _paramType$findNode.call(paramType, node => {
|
|
95
|
+
return node.name === elem.name.getText().trim();
|
|
96
|
+
});
|
|
97
|
+
if (existing) return existing;
|
|
98
|
+
const info = await context.getQuickInfo(elem.name);
|
|
104
99
|
const parsed = info ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info) : elem.getText();
|
|
105
|
-
|
|
100
|
+
const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;
|
|
101
|
+
return new (_semanticsEntities().InferenceTypeSchema)(context.getLocation(elem.name), parsed, elem.name.getText(), defaultValue);
|
|
106
102
|
});
|
|
107
103
|
}
|
|
108
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_semanticsEntities","_pMapSeries","_interopRequireDefault","_parseTypeFromQuickInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ParameterTransformer","predicate","node","kind","ts","SyntaxKind","Parameter","getIdentifiers","transform","context","ParameterSchema","getLocation","getName","getType","Boolean","questionToken","initializer","getText","undefined","getObjectBindingNodes","param","isIdentifier","name","elements","map","elem","elementsStr","join","ArrayBindingPattern","type","computeSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","pMapSeries","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error","exports"],"sources":["parameter.ts"],"sourcesContent":["import ts, {\n BindingElement,\n isIdentifier,\n Node,\n ParameterDeclaration,\n SyntaxKind,\n ArrayBindingElement,\n} from 'typescript';\nimport {\n InferenceTypeSchema,\n ParameterSchema,\n SchemaNode,\n TupleTypeSchema,\n TypeLiteralSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class ParameterTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Parameter;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ParameterDeclaration, context: SchemaExtractorContext) {\n return new ParameterSchema(\n context.getLocation(node),\n this.getName(node),\n await this.getType(node, context),\n Boolean(node.questionToken),\n node.initializer ? node.initializer.getText() : undefined,\n undefined,\n await this.getObjectBindingNodes(node, context)\n );\n }\n\n getName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n }\n\n async getType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n return context.computeSchema(param.type);\n }\n\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n }\n\n async getObjectBindingNodes(\n param: ParameterDeclaration,\n context: SchemaExtractorContext\n ): Promise<SchemaNode[] | undefined> {\n if (param.name.kind !== SyntaxKind.ObjectBindingPattern) return undefined;\n return pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info =\n elem.name.kind === SyntaxKind.ObjectBindingPattern ? undefined : await context.getQuickInfo(elem.name);\n // @todo look into extracting nested objected binding patters\n /**\n * apiNode: {\n api: {\n name,\n signature: defaultSignature,\n doc, \n location: { filePath },\n },\n },\n */\n const parsed = info ? parseTypeFromQuickInfo(info) : elem.getText();\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_semanticsEntities","_pMapSeries","_interopRequireDefault","_parseTypeFromQuickInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ParameterTransformer","predicate","node","kind","ts","SyntaxKind","Parameter","getIdentifiers","transform","context","type","getType","ParameterSchema","getLocation","getName","Boolean","questionToken","initializer","getText","undefined","getObjectBindingNodes","dotDotDotToken","param","isIdentifier","name","elements","map","elem","elementsStr","join","ArrayBindingPattern","computeSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","pMapSeries","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error","paramType","_paramType$findNode","existing","findNode","trim","defaultValue","exports"],"sources":["parameter.ts"],"sourcesContent":["import ts, {\n BindingElement,\n isIdentifier,\n Node,\n ParameterDeclaration,\n SyntaxKind,\n ArrayBindingElement,\n} from 'typescript';\nimport {\n InferenceTypeSchema,\n ParameterSchema,\n SchemaNode,\n TupleTypeSchema,\n TypeLiteralSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class ParameterTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Parameter;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ParameterDeclaration, context: SchemaExtractorContext) {\n const type = await this.getType(node, context);\n return new ParameterSchema(\n context.getLocation(node),\n this.getName(node),\n type,\n Boolean(node.questionToken),\n node.initializer ? node.initializer.getText() : undefined,\n undefined,\n await this.getObjectBindingNodes(node, type, context),\n Boolean(node.dotDotDotToken)\n );\n }\n\n getName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n }\n\n async getType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n return context.computeSchema(param.type);\n }\n\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n }\n\n async getObjectBindingNodes(\n param: ParameterDeclaration,\n paramType: SchemaNode,\n context: SchemaExtractorContext\n ): Promise<SchemaNode[] | undefined> {\n if (param.name.kind !== SyntaxKind.ObjectBindingPattern) return undefined;\n return pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const existing = paramType.findNode?.((node) => {\n return node.name === elem.name.getText().trim();\n });\n if (existing) return existing;\n const info = await context.getQuickInfo(elem.name);\n const parsed = info ? parseTypeFromQuickInfo(info) : elem.getText();\n const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;\n return new InferenceTypeSchema(context.getLocation(elem.name), parsed, elem.name.getText(), defaultValue);\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -43,12 +43,13 @@ class PropertyDeclarationTransformer {
|
|
|
43
43
|
var _info$body;
|
|
44
44
|
const name = node.name.getText();
|
|
45
45
|
const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);
|
|
46
|
-
const displaySig = (info === null || info === void 0
|
|
46
|
+
const displaySig = (info === null || info === void 0 || (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || node.getText();
|
|
47
47
|
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
48
48
|
const type = await context.resolveType(node, typeStr);
|
|
49
49
|
const isOptional = Boolean(node.questionToken);
|
|
50
50
|
const doc = await context.jsDocToDocSchema(node);
|
|
51
|
-
|
|
51
|
+
const defaultValue = node.initializer ? node.initializer.getText() : undefined;
|
|
52
|
+
return new (_semanticsEntities().VariableLikeSchema)(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
exports.PropertyDeclarationTransformer = PropertyDeclarationTransformer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_typescript","data","require","_semanticsEntities","_parseTypeFromQuickInfo","PropertyDeclarationTransformer","predicate","node","kind","SyntaxKind","PropertyDeclaration","PropertySignature","getIdentifiers","isComputedProperty","name","ComputedPropertyName","transform","context","_info$body","getText","info","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","doc","jsDocToDocSchema","VariableLikeSchema","getLocation","exports"],"sources":["property-declaration.ts"],"sourcesContent":["import { Node, PropertyDeclaration, PropertySignature, SyntaxKind } from 'typescript';\nimport { VariableLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class PropertyDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n // [computedName]: string\n private isComputedProperty(node: PropertyDeclaration | PropertySignature) {\n return node.name.kind === SyntaxKind.ComputedPropertyName;\n }\n\n // @todo - handle arrow function objects\n async transform(node: PropertyDeclaration | PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || node.getText();\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n const isOptional = Boolean(node.questionToken);\n const doc = await context.jsDocToDocSchema(node);\n return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAMI,8BAA8B,CAA8B;EACvEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,mBAAmB,IAAIH,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACE,iBAAiB;EACnG;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;;EAEA;EACQC,kBAAkBA,CAACN,IAA6C,EAAE;IACxE,OAAOA,IAAI,CAACO,IAAI,CAACN,IAAI,KAAKC,wBAAU,CAACM,oBAAoB;EAC3D;;EAEA;EACA,MAAMC,SAASA,CAACT,IAA6C,EAAEU,OAA+B,EAAE;IAAA,IAAAC,UAAA;IAC9F,MAAMJ,IAAI,GAAGP,IAAI,CAACO,IAAI,CAACK,OAAO,CAAC,CAAC;IAChC,MAAMC,IAAI,GAAG,IAAI,CAACP,kBAAkB,CAACN,IAAI,CAAC,GAAGc,SAAS,GAAG,MAAMJ,OAAO,CAACK,YAAY,CAACf,IAAI,CAACO,IAAI,CAAC;IAC9F,MAAMS,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,
|
|
1
|
+
{"version":3,"names":["_typescript","data","require","_semanticsEntities","_parseTypeFromQuickInfo","PropertyDeclarationTransformer","predicate","node","kind","SyntaxKind","PropertyDeclaration","PropertySignature","getIdentifiers","isComputedProperty","name","ComputedPropertyName","transform","context","_info$body","getText","info","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","doc","jsDocToDocSchema","defaultValue","initializer","VariableLikeSchema","getLocation","exports"],"sources":["property-declaration.ts"],"sourcesContent":["import { Node, PropertyDeclaration, PropertySignature, SyntaxKind } from 'typescript';\nimport { VariableLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class PropertyDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n // [computedName]: string\n private isComputedProperty(node: PropertyDeclaration | PropertySignature) {\n return node.name.kind === SyntaxKind.ComputedPropertyName;\n }\n\n // @todo - handle arrow function objects\n async transform(node: PropertyDeclaration | PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || node.getText();\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n const isOptional = Boolean(node.questionToken);\n const doc = await context.jsDocToDocSchema(node);\n const defaultValue = node.initializer ? node.initializer.getText() : undefined;\n return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAMI,8BAA8B,CAA8B;EACvEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,mBAAmB,IAAIH,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACE,iBAAiB;EACnG;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;;EAEA;EACQC,kBAAkBA,CAACN,IAA6C,EAAE;IACxE,OAAOA,IAAI,CAACO,IAAI,CAACN,IAAI,KAAKC,wBAAU,CAACM,oBAAoB;EAC3D;;EAEA;EACA,MAAMC,SAASA,CAACT,IAA6C,EAAEU,OAA+B,EAAE;IAAA,IAAAC,UAAA;IAC9F,MAAMJ,IAAI,GAAGP,IAAI,CAACO,IAAI,CAACK,OAAO,CAAC,CAAC;IAChC,MAAMC,IAAI,GAAG,IAAI,CAACP,kBAAkB,CAACN,IAAI,CAAC,GAAGc,SAAS,GAAG,MAAMJ,OAAO,CAACK,YAAY,CAACf,IAAI,CAACO,IAAI,CAAC;IAC9F,MAAMS,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,gBAAAF,UAAA,GAAJE,IAAI,CAAEI,IAAI,cAAAN,UAAA,uBAAVA,UAAA,CAAYO,aAAa,KAAIlB,IAAI,CAACY,OAAO,CAAC,CAAC;IAC9D,MAAMO,OAAO,GAAG,IAAAC,gDAAsB,EAACP,IAAI,CAAC;IAC5C,MAAMQ,IAAI,GAAG,MAAMX,OAAO,CAACY,WAAW,CAACtB,IAAI,EAAEmB,OAAO,CAAC;IACrD,MAAMI,UAAU,GAAGC,OAAO,CAACxB,IAAI,CAACyB,aAAa,CAAC;IAC9C,MAAMC,GAAG,GAAG,MAAMhB,OAAO,CAACiB,gBAAgB,CAAC3B,IAAI,CAAC;IAChD,MAAM4B,YAAY,GAAG5B,IAAI,CAAC6B,WAAW,GAAG7B,IAAI,CAAC6B,WAAW,CAACjB,OAAO,CAAC,CAAC,GAAGE,SAAS;IAC9E,OAAO,KAAIgB,uCAAkB,EAACpB,OAAO,CAACqB,WAAW,CAAC/B,IAAI,CAAC,EAAEO,IAAI,EAAES,UAAU,EAAEK,IAAI,EAAEE,UAAU,EAAEG,GAAG,EAAEE,YAAY,CAAC;EACjH;AACF;AAACI,OAAA,CAAAlC,8BAAA,GAAAA,8BAAA"}
|
|
@@ -42,10 +42,10 @@ class TypeReferenceTransformer {
|
|
|
42
42
|
}
|
|
43
43
|
async transform(node, context) {
|
|
44
44
|
const name = node.typeName.getText();
|
|
45
|
-
|
|
45
|
+
let type = await context.resolveType(node, name, false);
|
|
46
46
|
if (node.typeArguments && type instanceof _semanticsEntities().TypeRefSchema) {
|
|
47
47
|
const args = await (0, _pMapSeries().default)(node.typeArguments, arg => context.computeSchema(arg));
|
|
48
|
-
type
|
|
48
|
+
type = type.withTypeArgs(args);
|
|
49
49
|
}
|
|
50
50
|
return type;
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","TypeReferenceTransformer","predicate","node","kind","ts","SyntaxKind","TypeReference","getIdentifiers","transform","context","name","typeName","getText","type","resolveType","typeArguments","TypeRefSchema","args","pMapSeries","arg","computeSchema","
|
|
1
|
+
{"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","TypeReferenceTransformer","predicate","node","kind","ts","SyntaxKind","TypeReference","getIdentifiers","transform","context","name","typeName","getText","type","resolveType","typeArguments","TypeRefSchema","args","pMapSeries","arg","computeSchema","withTypeArgs","exports"],"sources":["type-reference.ts"],"sourcesContent":["import ts, { Node, TypeReferenceNode } from 'typescript';\nimport { TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nexport class TypeReferenceTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeReference;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n let type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => context.computeSchema(arg));\n type = type.withTypeArgs(args);\n }\n return type;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKtC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,wBAAwB,CAA8B;EACjEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,aAAa;EAClD;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAAuB,EAAEO,OAA+B,EAAE;IACxE,MAAMC,IAAI,GAAGR,IAAI,CAACS,QAAQ,CAACC,OAAO,CAAC,CAAC;IACpC,IAAIC,IAAI,GAAG,MAAMJ,OAAO,CAACK,WAAW,CAACZ,IAAI,EAAEQ,IAAI,EAAE,KAAK,CAAC;IACvD,IAAIR,IAAI,CAACa,aAAa,IAAIF,IAAI,YAAYG,kCAAa,EAAE;MACvD,MAAMC,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAAChB,IAAI,CAACa,aAAa,EAAGI,GAAG,IAAKV,OAAO,CAACW,aAAa,CAACD,GAAG,CAAC,CAAC;MACtFN,IAAI,GAAGA,IAAI,CAACQ,YAAY,CAACJ,IAAI,CAAC;IAChC;IACA,OAAOJ,IAAI;EACb;AACF;AAACS,OAAA,CAAAtB,wBAAA,GAAAA,wBAAA"}
|
|
@@ -54,7 +54,7 @@ class VariableDeclaration {
|
|
|
54
54
|
var _info$body, _varDec$modifiers, _varDec$initializer;
|
|
55
55
|
const name = this.getName(varDec);
|
|
56
56
|
const info = await context.getQuickInfo(varDec.name);
|
|
57
|
-
const displaySig = (info === null || info === void 0
|
|
57
|
+
const displaySig = (info === null || info === void 0 || (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
|
|
58
58
|
const location = context.getLocation(varDec);
|
|
59
59
|
const doc = await context.jsDocToDocSchema(varDec);
|
|
60
60
|
const modifiers = ((_varDec$modifiers = varDec.modifiers) === null || _varDec$modifiers === void 0 ? void 0 : _varDec$modifiers.map(modifier => modifier.getText())) || [];
|
|
@@ -73,7 +73,8 @@ class VariableDeclaration {
|
|
|
73
73
|
}
|
|
74
74
|
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
75
75
|
const type = await context.resolveType(varDec, typeStr);
|
|
76
|
-
|
|
76
|
+
const defaultValue = varDec.initializer ? varDec.initializer.getText() : undefined;
|
|
77
|
+
return new (_semanticsEntities().VariableLikeSchema)(location, name, displaySig, type, false, doc, defaultValue);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
exports.VariableDeclaration = VariableDeclaration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","obj","__esModule","default","VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","transform","varDec","context","_info$body","_varDec$modifiers","_varDec$initializer","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","modifiers","map","modifier","initializer","ArrowFunction","args","pMapSeries","parameters","param","computeSchema","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","typeStr","parseReturnTypeFromQuickInfo","parseTypeFromQuickInfo","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\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 Identifier(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 const location = context.getLocation(varDec);\n const doc = await context.jsDocToDocSchema(varDec);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n // example => export const useLanesContext: () => LanesContextModel | undefined = () => {\n if (varDec.type) {\n const funcType = await context.resolveType(varDec, '');\n if (isFunctionLike(funcType)) {\n return new FunctionLikeSchema(\n location,\n name,\n funcType.params,\n funcType.returnType,\n displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n }\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableLikeSchema(location, name, displaySig, type, false, doc);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":";;;;;;AAAA,SAAAA,mBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,kBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAOA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAK,wBAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,uBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAG,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEpC,MAAMG,mBAAmB,CAA8B;EAC5DC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACL,mBAAmB;EACxD;EAEAM,OAAOA,CAACJ,IAA6B,EAAE;IACrC,OAAOA,IAAI,CAACK,IAAI,CAACC,OAAO,CAAC,CAAC;EAC5B;EAEA,MAAMC,cAAcA,CAACP,IAA6B,EAAE;IAClD,OAAO,CAAC,KAAIQ,wBAAU,EAACR,IAAI,CAACK,IAAI,CAACC,OAAO,CAAC,CAAC,EAAEN,IAAI,CAACS,aAAa,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EAC7E;EAEA,MAAMC,SAASA,CAACC,MAA+B,EAAEC,OAA+B,EAAuB;IAAA,IAAAC,UAAA,EAAAC,iBAAA,EAAAC,mBAAA;IACrG,MAAMX,IAAI,GAAG,IAAI,CAACD,OAAO,CAACQ,MAAM,CAAC;IACjC,MAAMK,IAAI,GAAG,MAAMJ,OAAO,CAACK,YAAY,CAACN,MAAM,CAACP,IAAI,CAAC;IACpD,MAAMc,UAAU,GAAG,CAAAF,IAAI,aAAJA,IAAI,
|
|
1
|
+
{"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","obj","__esModule","default","VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","transform","varDec","context","_info$body","_varDec$modifiers","_varDec$initializer","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","modifiers","map","modifier","initializer","ArrowFunction","args","pMapSeries","parameters","param","computeSchema","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","typeStr","parseReturnTypeFromQuickInfo","parseTypeFromQuickInfo","defaultValue","undefined","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\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 Identifier(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 const location = context.getLocation(varDec);\n const doc = await context.jsDocToDocSchema(varDec);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n // example => export const useLanesContext: () => LanesContextModel | undefined = () => {\n if (varDec.type) {\n const funcType = await context.resolveType(varDec, '');\n if (isFunctionLike(funcType)) {\n return new FunctionLikeSchema(\n location,\n name,\n funcType.params,\n funcType.returnType,\n displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n }\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n const defaultValue = varDec.initializer ? varDec.initializer.getText() : undefined;\n\n return new VariableLikeSchema(location, name, displaySig, type, false, doc, defaultValue);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":"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"}
|
|
@@ -9,13 +9,14 @@ import { EnvContext } from '@teambit/envs';
|
|
|
9
9
|
import { Logger } from '@teambit/logger';
|
|
10
10
|
import { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
11
11
|
import { ScopeMain } from '@teambit/scope';
|
|
12
|
-
import { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';
|
|
12
|
+
import { TypescriptMain, SchemaTransformerSlot, APITransformerSlot } from './typescript.main.runtime';
|
|
13
13
|
import { SchemaExtractorContext } from './schema-extractor-context';
|
|
14
14
|
import { Identifier } from './identifier';
|
|
15
15
|
import { ExtractorOptions } from './extractor-options';
|
|
16
16
|
export declare class TypeScriptExtractor implements SchemaExtractor {
|
|
17
17
|
private tsconfig;
|
|
18
18
|
private schemaTransformerSlot;
|
|
19
|
+
private apiTransformerSlot;
|
|
19
20
|
private tsMain;
|
|
20
21
|
private rootTsserverPath;
|
|
21
22
|
private rootContextPath;
|
|
@@ -24,7 +25,7 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
|
|
|
24
25
|
private scope;
|
|
25
26
|
private aspectLoader;
|
|
26
27
|
private logger;
|
|
27
|
-
constructor(tsconfig: any, schemaTransformerSlot: SchemaTransformerSlot, tsMain: TypescriptMain, rootTsserverPath: string, rootContextPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined, scope: ScopeMain, aspectLoader: AspectLoaderMain, logger: Logger);
|
|
28
|
+
constructor(tsconfig: any, schemaTransformerSlot: SchemaTransformerSlot, apiTransformerSlot: APITransformerSlot, tsMain: TypescriptMain, rootTsserverPath: string, rootContextPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined, scope: ScopeMain, aspectLoader: AspectLoaderMain, logger: Logger);
|
|
28
29
|
parseSourceFile(file: AbstractVinyl): SourceFile;
|
|
29
30
|
/**
|
|
30
31
|
* extract a component schema.
|
|
@@ -38,10 +39,12 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
|
|
|
38
39
|
private tsserver;
|
|
39
40
|
private getTsServer;
|
|
40
41
|
computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
42
|
+
transformAPI(schema: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
41
43
|
getComponentIDByPath(file: string): Promise<import("@teambit/component").ComponentID | null | undefined>;
|
|
42
44
|
/**
|
|
43
45
|
* select the correct transformer for a node.
|
|
44
46
|
*/
|
|
45
47
|
getTransformer(node: Node, context: SchemaExtractorContext): import("./schema-transformer").SchemaTransformer | undefined;
|
|
48
|
+
getAPITransformer(node: SchemaNode): import("./schema-transformer").SchemaNodeTransformer | undefined;
|
|
46
49
|
static from(options: ExtractorOptions): (context: EnvContext) => TypeScriptExtractor;
|
|
47
50
|
}
|
|
@@ -81,9 +81,10 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
81
81
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
82
82
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
83
83
|
class TypeScriptExtractor {
|
|
84
|
-
constructor(tsconfig, schemaTransformerSlot, tsMain, rootTsserverPath, rootContextPath, depResolver, workspace, scope, aspectLoader, logger) {
|
|
84
|
+
constructor(tsconfig, schemaTransformerSlot, apiTransformerSlot, tsMain, rootTsserverPath, rootContextPath, depResolver, workspace, scope, aspectLoader, logger) {
|
|
85
85
|
this.tsconfig = tsconfig;
|
|
86
86
|
this.schemaTransformerSlot = schemaTransformerSlot;
|
|
87
|
+
this.apiTransformerSlot = apiTransformerSlot;
|
|
87
88
|
this.tsMain = tsMain;
|
|
88
89
|
this.rootTsserverPath = rootTsserverPath;
|
|
89
90
|
this.rootContextPath = rootContextPath;
|
|
@@ -185,7 +186,12 @@ class TypeScriptExtractor {
|
|
|
185
186
|
if (!transformer) {
|
|
186
187
|
return new (_semanticsEntities().UnImplementedSchema)(context.getLocation(node), node.getText(), _typescript().SyntaxKind[node.kind]);
|
|
187
188
|
}
|
|
188
|
-
|
|
189
|
+
const schemaNode = await transformer.transform(node, context);
|
|
190
|
+
return this.transformAPI(schemaNode, context);
|
|
191
|
+
}
|
|
192
|
+
async transformAPI(schema, context) {
|
|
193
|
+
const apiTransformer = this.getAPITransformer(schema);
|
|
194
|
+
return apiTransformer ? apiTransformer.transform(schema, context) : schema;
|
|
189
195
|
}
|
|
190
196
|
async getComponentIDByPath(file) {
|
|
191
197
|
const coreAspectIds = this.aspectLoader.getCoreAspectIds();
|
|
@@ -213,6 +219,16 @@ class TypeScriptExtractor {
|
|
|
213
219
|
}
|
|
214
220
|
return transformer;
|
|
215
221
|
}
|
|
222
|
+
getAPITransformer(node) {
|
|
223
|
+
const transformers = (0, _lodash().flatten)(this.apiTransformerSlot.values());
|
|
224
|
+
const transformer = transformers.find(singleTransformer => {
|
|
225
|
+
return singleTransformer.predicate(node);
|
|
226
|
+
});
|
|
227
|
+
if (!transformer) {
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
230
|
+
return transformer;
|
|
231
|
+
}
|
|
216
232
|
static from(options) {
|
|
217
233
|
return context => {
|
|
218
234
|
var _getTsconfig, _tsMain$workspace;
|
|
@@ -224,7 +240,7 @@ class TypeScriptExtractor {
|
|
|
224
240
|
|
|
225
241
|
// When loading the env from a scope you don't have a workspace
|
|
226
242
|
const rootPath = ((_tsMain$workspace = tsMain.workspace) === null || _tsMain$workspace === void 0 ? void 0 : _tsMain$workspace.path) || tsMain.scope.path || '';
|
|
227
|
-
return new TypeScriptExtractor(tsconfig, tsMain.schemaTransformerSlot, tsMain, rootPath, rootPath, tsMain.depResolver, tsMain.workspace, tsMain.scope, aspectLoaderMain, context.createLogger(options.name));
|
|
243
|
+
return new TypeScriptExtractor(tsconfig, tsMain.schemaTransformerSlot, tsMain.apiTransformerSlot, tsMain, rootPath, rootPath, tsMain.depResolver, tsMain.workspace, tsMain.scope, aspectLoaderMain, context.createLogger(options.name));
|
|
228
244
|
};
|
|
229
245
|
}
|
|
230
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig2","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootTsserverPath","rootContextPath","depResolver","workspace","scope","aspectLoader","logger","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","options","tsserverPath","contextPath","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","filesystem","files","filter","includes","extname","allFiles","context","createContext","formatter","pMapSeries","ast","identifiers","computeIdentifiers","cacheKey","getIdentifierKeyForNode","setIdentifiers","IdentifierList","mainAst","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","internals","computeInternalModules","location","getLocation","APISchema","id","compact","Promise","all","internalIdentifiers","entries","map","filePath","find","internalFile","fileAst","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","warn","TransformerNotFound","_this$workspace","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","transform","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","transformers","flatten","values","singleTransformer","predicate","from","_getTsconfig","_tsMain$workspace","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","createLogger","name","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile, SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor, SchemaExtractorOptions } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, ModuleSchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { EnvContext } from '@teambit/envs';\nimport { Formatter } from '@teambit/formatter';\nimport { Logger } from '@teambit/logger';\nimport AspectLoaderAspect, { AspectLoaderMain, getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { Identifier } from './identifier';\nimport { IdentifierList } from './identifier-list';\nimport { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootTsserverPath: string,\n private rootContextPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined,\n private scope: ScopeMain,\n private aspectLoader: AspectLoaderMain,\n private logger: Logger\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component, options: SchemaExtractorOptions = {}): Promise<APISchema> {\n // override the rootTsserverPath and rootContextPath if passed via options\n if (options.tsserverPath) {\n this.rootTsserverPath = options.tsserverPath;\n }\n if (options.contextPath) {\n this.rootContextPath = options.contextPath;\n }\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.ts'];\n const internalFiles = component.filesystem.files.filter(\n (file) => compatibleExts.includes(file.extname) && file.path !== mainFile.path\n );\n const allFiles = [mainFile, ...internalFiles];\n\n const context = await this.createContext(tsserver, component, options.formatter);\n\n await pMapSeries(allFiles, async (file) => {\n const ast = this.parseSourceFile(file);\n const identifiers = await this.computeIdentifiers(ast, context); // compute for every file\n const cacheKey = context.getIdentifierKeyForNode(ast);\n context.setIdentifiers(cacheKey, new IdentifierList(identifiers));\n });\n\n const mainAst = this.parseSourceFile(mainFile);\n const moduleSchema = (await this.computeSchema(mainAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const internals = await this.computeInternalModules(context, internalFiles);\n\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, internals, component.id);\n }\n\n async computeInternalModules(context: SchemaExtractorContext, internalFiles: AbstractVinyl[]) {\n const internals = compact(\n await Promise.all(\n [...context.internalIdentifiers.entries()].map(async ([filePath]) => {\n const file = internalFiles.find((internalFile) => internalFile.path === filePath);\n if (!file) return undefined;\n const fileAst = this.parseSourceFile(file);\n const moduleSchema = (await this.computeSchema(fileAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n return moduleSchema;\n })\n )\n );\n return internals;\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n let identifiers: Identifier[] = [];\n if (!transformer || !transformer.getIdentifiers) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n } else {\n identifiers = await transformer.getIdentifiers(node, context);\n }\n return identifiers;\n }\n\n private async createContext(\n tsserver: TsserverClient,\n component: Component,\n formatter?: Formatter\n ): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(\n tsserver,\n component,\n this,\n componentDeps,\n this.rootContextPath,\n this.workspace?.path || this.scope.path,\n formatter\n );\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\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.rootTsserverPath);\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);\n\n if (!transformer) {\n return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);\n }\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const matchingCoreAspect = coreAspectIds.find((c) => file === getCoreAspectPackageName(c));\n\n if (matchingCoreAspect) {\n return (this.workspace || this.scope).resolveComponentId(matchingCoreAspect);\n }\n\n if (this.workspace) {\n return this.workspace.getComponentIdByPath(file);\n }\n return null;\n }\n\n /**\n * select the correct transformer for a node.\n */\n getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n return undefined;\n }\n\n return transformer;\n }\n\n static from(options: ExtractorOptions) {\n return (context: EnvContext) => {\n const tsconfig = getTsconfig(options.tsconfig)?.config || { compilerOptions: options.compilerOptions };\n const tsMain = context.getAspect<TypescriptMain>(TypescriptAspect.id);\n const aspectLoaderMain = context.getAspect<AspectLoaderMain>(AspectLoaderAspect.id);\n\n // When loading the env from a scope you don't have a workspace\n const rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain,\n rootPath,\n rootPath,\n tsMain.depResolver,\n tsMain.workspace,\n tsMain.scope,\n aspectLoaderMain,\n context.createLogger(options.name)\n );\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig2","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","apiTransformerSlot","tsMain","rootTsserverPath","rootContextPath","depResolver","workspace","scope","aspectLoader","logger","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","options","tsserverPath","contextPath","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","filesystem","files","filter","includes","extname","allFiles","context","createContext","formatter","pMapSeries","ast","identifiers","computeIdentifiers","cacheKey","getIdentifierKeyForNode","setIdentifiers","IdentifierList","mainAst","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","internals","computeInternalModules","location","getLocation","APISchema","id","compact","Promise","all","internalIdentifiers","entries","map","filePath","find","internalFile","fileAst","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","warn","TransformerNotFound","_this$workspace","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","schemaNode","transform","transformAPI","schema","apiTransformer","getAPITransformer","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","transformers","flatten","values","singleTransformer","predicate","from","_getTsconfig","_tsMain$workspace","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","createLogger","name","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile, SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor, SchemaExtractorOptions } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, ModuleSchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { EnvContext } from '@teambit/envs';\nimport { Formatter } from '@teambit/formatter';\nimport { Logger } from '@teambit/logger';\nimport AspectLoaderAspect, { AspectLoaderMain, getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot, APITransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { Identifier } from './identifier';\nimport { IdentifierList } from './identifier-list';\nimport { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private apiTransformerSlot: APITransformerSlot,\n private tsMain: TypescriptMain,\n private rootTsserverPath: string,\n private rootContextPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined,\n private scope: ScopeMain,\n private aspectLoader: AspectLoaderMain,\n private logger: Logger\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component, options: SchemaExtractorOptions = {}): Promise<APISchema> {\n // override the rootTsserverPath and rootContextPath if passed via options\n if (options.tsserverPath) {\n this.rootTsserverPath = options.tsserverPath;\n }\n if (options.contextPath) {\n this.rootContextPath = options.contextPath;\n }\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.ts'];\n const internalFiles = component.filesystem.files.filter(\n (file) => compatibleExts.includes(file.extname) && file.path !== mainFile.path\n );\n const allFiles = [mainFile, ...internalFiles];\n\n const context = await this.createContext(tsserver, component, options.formatter);\n\n await pMapSeries(allFiles, async (file) => {\n const ast = this.parseSourceFile(file);\n const identifiers = await this.computeIdentifiers(ast, context); // compute for every file\n const cacheKey = context.getIdentifierKeyForNode(ast);\n context.setIdentifiers(cacheKey, new IdentifierList(identifiers));\n });\n\n const mainAst = this.parseSourceFile(mainFile);\n const moduleSchema = (await this.computeSchema(mainAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const internals = await this.computeInternalModules(context, internalFiles);\n\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, internals, component.id);\n }\n\n async computeInternalModules(context: SchemaExtractorContext, internalFiles: AbstractVinyl[]) {\n const internals = compact(\n await Promise.all(\n [...context.internalIdentifiers.entries()].map(async ([filePath]) => {\n const file = internalFiles.find((internalFile) => internalFile.path === filePath);\n if (!file) return undefined;\n const fileAst = this.parseSourceFile(file);\n const moduleSchema = (await this.computeSchema(fileAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n return moduleSchema;\n })\n )\n );\n return internals;\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n let identifiers: Identifier[] = [];\n if (!transformer || !transformer.getIdentifiers) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n } else {\n identifiers = await transformer.getIdentifiers(node, context);\n }\n return identifiers;\n }\n\n private async createContext(\n tsserver: TsserverClient,\n component: Component,\n formatter?: Formatter\n ): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(\n tsserver,\n component,\n this,\n componentDeps,\n this.rootContextPath,\n this.workspace?.path || this.scope.path,\n formatter\n );\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\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.rootTsserverPath);\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);\n\n if (!transformer) {\n return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);\n }\n\n const schemaNode = await transformer.transform(node, context);\n\n return this.transformAPI(schemaNode, context);\n }\n\n async transformAPI(schema: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const apiTransformer = this.getAPITransformer(schema);\n return apiTransformer ? apiTransformer.transform(schema, context) : schema;\n }\n\n async getComponentIDByPath(file: string) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const matchingCoreAspect = coreAspectIds.find((c) => file === getCoreAspectPackageName(c));\n\n if (matchingCoreAspect) {\n return (this.workspace || this.scope).resolveComponentId(matchingCoreAspect);\n }\n\n if (this.workspace) {\n return this.workspace.getComponentIdByPath(file);\n }\n return null;\n }\n\n /**\n * select the correct transformer for a node.\n */\n getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n return undefined;\n }\n\n return transformer;\n }\n\n getAPITransformer(node: SchemaNode) {\n const transformers = flatten(this.apiTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\n return undefined;\n }\n\n return transformer;\n }\n\n static from(options: ExtractorOptions) {\n return (context: EnvContext) => {\n const tsconfig = getTsconfig(options.tsconfig)?.config || { compilerOptions: options.compilerOptions };\n const tsMain = context.getAspect<TypescriptMain>(TypescriptAspect.id);\n const aspectLoaderMain = context.getAspect<AspectLoaderMain>(AspectLoaderAspect.id);\n\n // When loading the env from a scope you don't have a workspace\n const rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain.apiTransformerSlot,\n tsMain,\n rootPath,\n rootPath,\n tsMain.depResolver,\n tsMain.workspace,\n tsMain.scope,\n aspectLoaderMain,\n context.createLogger(options.name)\n );\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -16,10 +16,11 @@ import { BuilderMain } from '@teambit/builder';
|
|
|
16
16
|
import { EnvsMain } from '@teambit/envs';
|
|
17
17
|
import { ScopeMain } from '@teambit/scope';
|
|
18
18
|
import { TypeScriptCompilerOptions } from './compiler-options';
|
|
19
|
-
import { SchemaTransformer } from './schema-transformer';
|
|
19
|
+
import { SchemaNodeTransformer, SchemaTransformer } from './schema-transformer';
|
|
20
20
|
import { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';
|
|
21
21
|
export declare type TsMode = 'build' | 'dev';
|
|
22
22
|
export declare type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;
|
|
23
|
+
export declare type APITransformerSlot = SlotRegistry<SchemaNodeTransformer[]>;
|
|
23
24
|
export declare type TsConfigTransformContext = {};
|
|
24
25
|
export declare type TsconfigWriterOptions = {
|
|
25
26
|
clean?: boolean;
|
|
@@ -32,13 +33,14 @@ export declare type TsConfigTransformer = (config: TypescriptConfigMutator, cont
|
|
|
32
33
|
export declare class TypescriptMain {
|
|
33
34
|
private logger;
|
|
34
35
|
readonly schemaTransformerSlot: SchemaTransformerSlot;
|
|
36
|
+
readonly apiTransformerSlot: APITransformerSlot;
|
|
35
37
|
readonly workspace: Workspace;
|
|
36
38
|
readonly scope: ScopeMain;
|
|
37
39
|
readonly depResolver: DependencyResolverMain;
|
|
38
40
|
private envs;
|
|
39
41
|
private tsConfigWriter;
|
|
40
42
|
private aspectLoader;
|
|
41
|
-
constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, workspace: Workspace, scope: ScopeMain, depResolver: DependencyResolverMain, envs: EnvsMain, tsConfigWriter: TsconfigWriter, aspectLoader: AspectLoaderMain);
|
|
43
|
+
constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, apiTransformerSlot: APITransformerSlot, workspace: Workspace, scope: ScopeMain, depResolver: DependencyResolverMain, envs: EnvsMain, tsConfigWriter: TsconfigWriter, aspectLoader: AspectLoaderMain);
|
|
42
44
|
private tsServer;
|
|
43
45
|
/**
|
|
44
46
|
* create a new compiler.
|
|
@@ -48,6 +50,8 @@ export declare class TypescriptMain {
|
|
|
48
50
|
* get TsserverClient instance if initiated already, otherwise, return undefined.
|
|
49
51
|
*/
|
|
50
52
|
getTsserverClient(): TsserverClient | undefined;
|
|
53
|
+
registerSchemaTransformer(transformers: SchemaTransformer[]): this;
|
|
54
|
+
registerApiTransformer(transformers: SchemaNodeTransformer[]): this;
|
|
51
55
|
/**
|
|
52
56
|
* starts a tsserver process to communicate with its API.
|
|
53
57
|
* @param projectPath absolute path of the project root directory
|
|
@@ -113,7 +117,7 @@ export declare class TypescriptMain {
|
|
|
113
117
|
private onComponentChange;
|
|
114
118
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
115
119
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
116
|
-
static slots: ((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>)[];
|
|
120
|
+
static slots: (((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>) | ((registerFn: () => string) => SlotRegistry<SchemaNodeTransformer[]>))[];
|
|
117
121
|
static provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder]: [
|
|
118
122
|
SchemaMain,
|
|
119
123
|
LoggerMain,
|
|
@@ -125,7 +129,7 @@ export declare class TypescriptMain {
|
|
|
125
129
|
WatcherMain,
|
|
126
130
|
ScopeMain,
|
|
127
131
|
BuilderMain
|
|
128
|
-
], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
|
|
132
|
+
], config: any, [schemaTransformerSlot, apiTransformerSlot]: [SchemaTransformerSlot, APITransformerSlot]): Promise<TypescriptMain>;
|
|
129
133
|
}
|
|
130
134
|
export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[] | undefined, context: TsConfigTransformContext): TypescriptConfigMutator;
|
|
131
135
|
export default TypescriptMain;
|
|
@@ -185,9 +185,10 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
185
185
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
186
186
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
187
187
|
class TypescriptMain {
|
|
188
|
-
constructor(logger, schemaTransformerSlot, workspace, scope, depResolver, envs, tsConfigWriter, aspectLoader) {
|
|
188
|
+
constructor(logger, schemaTransformerSlot, apiTransformerSlot, workspace, scope, depResolver, envs, tsConfigWriter, aspectLoader) {
|
|
189
189
|
this.logger = logger;
|
|
190
190
|
this.schemaTransformerSlot = schemaTransformerSlot;
|
|
191
|
+
this.apiTransformerSlot = apiTransformerSlot;
|
|
191
192
|
this.workspace = workspace;
|
|
192
193
|
this.scope = scope;
|
|
193
194
|
this.depResolver = depResolver;
|
|
@@ -212,6 +213,14 @@ class TypescriptMain {
|
|
|
212
213
|
getTsserverClient() {
|
|
213
214
|
return this.tsServer;
|
|
214
215
|
}
|
|
216
|
+
registerSchemaTransformer(transformers) {
|
|
217
|
+
this.schemaTransformerSlot.register(transformers);
|
|
218
|
+
return this;
|
|
219
|
+
}
|
|
220
|
+
registerApiTransformer(transformers) {
|
|
221
|
+
this.apiTransformerSlot.register(transformers);
|
|
222
|
+
return this;
|
|
223
|
+
}
|
|
215
224
|
|
|
216
225
|
/**
|
|
217
226
|
* starts a tsserver process to communicate with its API.
|
|
@@ -292,7 +301,7 @@ class TypescriptMain {
|
|
|
292
301
|
*/
|
|
293
302
|
createSchemaExtractor(tsconfig, tsserverPath, contextPath) {
|
|
294
303
|
var _this$workspace, _this$workspace2;
|
|
295
|
-
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, tsserverPath || ((_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.path) || '', contextPath || ((_this$workspace2 = this.workspace) === null || _this$workspace2 === void 0 ? void 0 : _this$workspace2.path) || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger);
|
|
304
|
+
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this.apiTransformerSlot, this, tsserverPath || ((_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.path) || '', contextPath || ((_this$workspace2 = this.workspace) === null || _this$workspace2 === void 0 ? void 0 : _this$workspace2.path) || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger);
|
|
296
305
|
}
|
|
297
306
|
|
|
298
307
|
/**
|
|
@@ -371,13 +380,13 @@ class TypescriptMain {
|
|
|
371
380
|
results: 'succeed'
|
|
372
381
|
};
|
|
373
382
|
}
|
|
374
|
-
static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder], config, [schemaTransformerSlot]) {
|
|
383
|
+
static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder], config, [schemaTransformerSlot, apiTransformerSlot]) {
|
|
375
384
|
schema.registerParser(new (_typescript5().TypeScriptParser)());
|
|
376
385
|
const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
|
|
377
386
|
aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
|
|
378
387
|
const tsconfigWriter = new (_tsconfigWriter().TsconfigWriter)(workspace, logger);
|
|
379
|
-
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, scope, depResolver, envs, tsconfigWriter, aspectLoader);
|
|
380
|
-
|
|
388
|
+
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, apiTransformerSlot, workspace, scope, depResolver, envs, tsconfigWriter, aspectLoader);
|
|
389
|
+
tsMain.registerSchemaTransformer([new (_transformers().ExportDeclarationTransformer)(), new (_transformers().ExportAssignmentTransformer)(), new (_transformers().FunctionLikeTransformer)(), new (_transformers().ParameterTransformer)(), new (_transformers().SetAccessorTransformer)(), new (_transformers().GetAccessorTransformer)(), new (_transformers().IndexSignatureTransformer)(), new (_transformers().PropertyDeclarationTransformer)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDeclarationTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)(), new (_transformers().BindingElementTransformer)(), new (_transformers().IntersectionTypeTransformer)(), new (_transformers().UnionTypeTransformer)(), new (_transformers().TypeReferenceTransformer)(), new (_transformers().TypeLiteralTransformer)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().TypeQueryTransformer)(), new (_transformers().ArrayTypeTransformer)(), new (_transformers().TypeOperatorTransformer)(), new (_transformers().KeywordTypeTransformer)(), new (_transformers().TupleTypeTransformer)(), new (_transformers().ParenthesizedTypeTransformer)(), new (_transformers().TypePredicateTransformer)(), new (_transformers().IndexedAccessTypeTransformer)(), new (_transformers().TemplateLiteralTypeSpanTransformer)(), new (_transformers().TemplateLiteralTypeTransformer)(), new (_transformers().ThisTypeTransformer)(), new (_transformers().ConditionalTypeTransformer)(), new (_transformers().NamedTupleTransformer)(), new (_transformers().ConstructorTransformer)(), new (_transformers().ImportDeclarationTransformer)(), new (_transformers().ExpressionStatementTransformer)(), new (_transformers().ModuleDeclarationTransformer)()]);
|
|
381
390
|
if (workspace) {
|
|
382
391
|
watcher.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));
|
|
383
392
|
workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));
|
|
@@ -395,7 +404,7 @@ class TypescriptMain {
|
|
|
395
404
|
exports.TypescriptMain = TypescriptMain;
|
|
396
405
|
_defineProperty(TypescriptMain, "runtime", _cli().MainRuntime);
|
|
397
406
|
_defineProperty(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect, _dependencyResolver().DependencyResolverAspect, _envs().default, _watcher().default, _scope().ScopeAspect, _builder().BuilderAspect]);
|
|
398
|
-
_defineProperty(TypescriptMain, "slots", [_harmony().Slot.withType()]);
|
|
407
|
+
_defineProperty(TypescriptMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType()]);
|
|
399
408
|
_typescript3().TypescriptAspect.addRuntime(TypescriptMain);
|
|
400
409
|
function runTransformersWithContext(config, transformers = [], context) {
|
|
401
410
|
if (!Array.isArray(transformers)) return config;
|