@teambit/typescript 1.0.6 → 1.0.7
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/preview-1695513012057.js +7 -0
- package/dist/transformers/parameter.d.ts +2 -2
- package/dist/transformers/parameter.js +6 -4
- package/dist/transformers/parameter.js.map +1 -1
- package/dist/transformers/variable-declaration.js +25 -5
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/package.json +18 -18
- package/transformers/parameter.ts +7 -5
- package/transformers/variable-declaration.ts +50 -8
- package/dist/preview-1695413141774.js +0 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@1.0.7/dist/typescript.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@1.0.7/dist/typescript.docs.mdx';
|
|
3
|
+
|
|
4
|
+
export const compositions = [compositions_0];
|
|
5
|
+
export const overview = [overview_0];
|
|
6
|
+
|
|
7
|
+
export const compositions_metadata = {"compositions":[{"displayName":"Logo","identifier":"Logo"}]};
|
|
@@ -7,7 +7,7 @@ export declare class ParameterTransformer implements SchemaTransformer {
|
|
|
7
7
|
predicate(node: Node): boolean;
|
|
8
8
|
getIdentifiers(): Promise<Identifier[]>;
|
|
9
9
|
transform(node: ParameterDeclaration, context: SchemaExtractorContext): Promise<ParameterSchema<SchemaNode>>;
|
|
10
|
-
getName(param: ParameterDeclaration): string;
|
|
10
|
+
static getName(param: ParameterDeclaration): string;
|
|
11
11
|
getType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
12
|
-
getObjectBindingNodes(param: ParameterDeclaration, paramType: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode[] | undefined>;
|
|
12
|
+
static getObjectBindingNodes(param: ParameterDeclaration, paramType: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode[] | undefined>;
|
|
13
13
|
}
|
|
@@ -44,9 +44,9 @@ class ParameterTransformer {
|
|
|
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),
|
|
47
|
+
return new (_semanticsEntities().ParameterSchema)(context.getLocation(node), ParameterTransformer.getName(node), type, Boolean(node.questionToken), node.initializer ? node.initializer.getText() : undefined, undefined, await ParameterTransformer.getObjectBindingNodes(node, type, context), Boolean(node.dotDotDotToken));
|
|
48
48
|
}
|
|
49
|
-
getName(param) {
|
|
49
|
+
static getName(param) {
|
|
50
50
|
if ((0, _typescript().isIdentifier)(param.name)) {
|
|
51
51
|
return param.name.getText();
|
|
52
52
|
}
|
|
@@ -87,14 +87,16 @@ class ParameterTransformer {
|
|
|
87
87
|
}
|
|
88
88
|
throw new Error(`unknown param type`);
|
|
89
89
|
}
|
|
90
|
-
async getObjectBindingNodes(param, paramType, context) {
|
|
90
|
+
static async getObjectBindingNodes(param, paramType, context) {
|
|
91
91
|
if (param.name.kind !== _typescript().SyntaxKind.ObjectBindingPattern) return undefined;
|
|
92
92
|
return (0, _pMapSeries().default)(param.name.elements, async elem => {
|
|
93
93
|
var _paramType$findNode;
|
|
94
94
|
const existing = (_paramType$findNode = paramType.findNode) === null || _paramType$findNode === void 0 ? void 0 : _paramType$findNode.call(paramType, node => {
|
|
95
95
|
return node.name === elem.name.getText().trim();
|
|
96
96
|
});
|
|
97
|
-
if (existing
|
|
97
|
+
if (existing && existing.__schema !== 'InferenceTypeSchema') {
|
|
98
|
+
return existing;
|
|
99
|
+
}
|
|
98
100
|
const info = await context.getQuickInfo(elem.name);
|
|
99
101
|
const parsed = info ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info) : elem.getText();
|
|
100
102
|
const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;
|
|
@@ -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","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(\n context.getLocation(elem.name),\n parsed,\n elem.name.getText(),\n defaultValue,\n Boolean(elem.dotDotDotToken)\n );\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","__schema","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 ParameterTransformer.getName(node),\n type,\n Boolean(node.questionToken),\n node.initializer ? node.initializer.getText() : undefined,\n undefined,\n await ParameterTransformer.getObjectBindingNodes(node, type, context),\n Boolean(node.dotDotDotToken)\n );\n }\n\n static 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 static 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 && existing.__schema !== 'InferenceTypeSchema') {\n return existing;\n }\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(\n context.getLocation(elem.name),\n parsed,\n elem.name.getText(),\n defaultValue,\n Boolean(elem.dotDotDotToken)\n );\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -39,6 +39,13 @@ function _identifier() {
|
|
|
39
39
|
};
|
|
40
40
|
return data;
|
|
41
41
|
}
|
|
42
|
+
function _parameter() {
|
|
43
|
+
const data = require("./parameter");
|
|
44
|
+
_parameter = function () {
|
|
45
|
+
return data;
|
|
46
|
+
};
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
42
49
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
43
50
|
class VariableDeclaration {
|
|
44
51
|
predicate(node) {
|
|
@@ -59,17 +66,30 @@ class VariableDeclaration {
|
|
|
59
66
|
const doc = await context.jsDocToDocSchema(varDec);
|
|
60
67
|
const modifiers = ((_varDec$modifiers = varDec.modifiers) === null || _varDec$modifiers === void 0 ? void 0 : _varDec$modifiers.map(modifier => modifier.getText())) || [];
|
|
61
68
|
if (((_varDec$initializer = varDec.initializer) === null || _varDec$initializer === void 0 ? void 0 : _varDec$initializer.kind) === _typescript().default.SyntaxKind.ArrowFunction) {
|
|
62
|
-
|
|
69
|
+
var _functionLikeInfo$bod3;
|
|
70
|
+
const functionLikeInfo = await context.getQuickInfo(varDec.initializer.equalsGreaterThanToken);
|
|
71
|
+
const returnTypeStr = functionLikeInfo ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(functionLikeInfo) : 'any';
|
|
63
72
|
// example => export const useLanesContext: () => LanesContextModel | undefined = () => {
|
|
64
73
|
if (varDec.type) {
|
|
65
74
|
const funcType = await context.resolveType(varDec, '');
|
|
66
75
|
if (isFunctionLike(funcType)) {
|
|
67
|
-
|
|
76
|
+
var _functionLikeInfo$bod;
|
|
77
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, funcType.params, funcType.returnType, (functionLikeInfo === null || functionLikeInfo === void 0 || (_functionLikeInfo$bod = functionLikeInfo.body) === null || _functionLikeInfo$bod === void 0 ? void 0 : _functionLikeInfo$bod.displayString) || '', modifiers, doc);
|
|
78
|
+
}
|
|
79
|
+
// e.g. export const MyComponent: React.FC<T> = ({}) => {}
|
|
80
|
+
if (funcType instanceof _semanticsEntities().TypeRefSchema) {
|
|
81
|
+
var _functionLikeInfo$bod2;
|
|
82
|
+
const paramTypes = funcType.typeArgs;
|
|
83
|
+
const params = varDec.initializer.parameters;
|
|
84
|
+
const paramsSchema = await (0, _pMapSeries().default)(params, async (param, index) => {
|
|
85
|
+
const objectBindingNodes = await _parameter().ParameterTransformer.getObjectBindingNodes(param, (paramTypes === null || paramTypes === void 0 ? void 0 : paramTypes[index]) ?? funcType, context);
|
|
86
|
+
return new (_semanticsEntities().ParameterSchema)(location, _parameter().ParameterTransformer.getName(param), (paramTypes === null || paramTypes === void 0 ? void 0 : paramTypes[index]) ?? funcType, Boolean(param.questionToken), param.initializer ? param.initializer.getText() : undefined, undefined, objectBindingNodes, Boolean(param.dotDotDotToken));
|
|
87
|
+
});
|
|
88
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, paramsSchema, await context.resolveType(varDec.initializer, returnTypeStr), (functionLikeInfo === null || functionLikeInfo === void 0 || (_functionLikeInfo$bod2 = functionLikeInfo.body) === null || _functionLikeInfo$bod2 === void 0 ? void 0 : _functionLikeInfo$bod2.displayString) || '', modifiers, doc);
|
|
68
89
|
}
|
|
69
90
|
}
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
return new (_semanticsEntities().FunctionLikeSchema)(location, name, args, returnType, displaySig, modifiers, doc);
|
|
91
|
+
const args = await (0, _pMapSeries().default)(varDec.initializer.parameters, async param => context.computeSchema(param));
|
|
92
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, args, await context.resolveType(varDec.initializer, returnTypeStr), (functionLikeInfo === null || functionLikeInfo === void 0 || (_functionLikeInfo$bod3 = functionLikeInfo.body) === null || _functionLikeInfo$bod3 === void 0 ? void 0 : _functionLikeInfo$bod3.displayString) || '', modifiers, doc);
|
|
73
93
|
}
|
|
74
94
|
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
75
95
|
const type = await context.resolveType(varDec, typeStr);
|
|
@@ -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","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":";;;;;;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,gBAAAH,UAAA,GAAJG,IAAI,CAAEG,IAAI,cAAAN,UAAA,uBAAVA,UAAA,CAAYO,aAAa,KAAI,EAAE;IAClD,MAAMC,QAAQ,GAAGT,OAAO,CAACU,WAAW,CAACX,MAAM,CAAC;IAC5C,MAAMY,GAAG,GAAG,MAAMX,OAAO,CAACY,gBAAgB,CAACb,MAAM,CAAC;IAClD,MAAMc,SAAS,GAAG,EAAAX,iBAAA,GAAAH,MAAM,CAACc,SAAS,cAAAX,iBAAA,uBAAhBA,iBAAA,CAAkBY,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAACtB,OAAO,CAAC,CAAC,CAAC,KAAI,EAAE;IAC/E,IAAI,EAAAU,mBAAA,GAAAJ,MAAM,CAACiB,WAAW,cAAAb,mBAAA,uBAAlBA,mBAAA,CAAoBf,IAAI,MAAKC,qBAAE,CAACC,UAAU,CAAC2B,aAAa,EAAE;MAC5D,MAAMC,IAAI,GAAI,MAAM,IAAAC,qBAAU,EAAEpB,MAAM,CAACiB,WAAW,CAAmBI,UAAU,EAAE,MAAOC,KAAK,IAC3FrB,OAAO,CAACsB,aAAa,CAACD,KAAK,CAC7B,CAAuB;MACvB;MACA,IAAItB,MAAM,CAACwB,IAAI,EAAE;QACf,MAAMC,QAAQ,GAAG,MAAMxB,OAAO,CAACyB,WAAW,CAAC1B,MAAM,EAAE,EAAE,CAAC;QACtD,IAAI2B,cAAc,CAACF,QAAQ,CAAC,EAAE;UAC5B,OAAO,KAAIG,uCAAkB,EAC3BlB,QAAQ,EACRjB,IAAI,EACJgC,QAAQ,CAACI,MAAM,EACfJ,QAAQ,CAACK,UAAU,EACnBvB,UAAU,EACVO,SAAS,EACTF,GACF,CAAC;QACH;MACF;MACA,MAAMmB,OAAO,GAAG,IAAAC,sDAA4B,EAAC3B,IAAI,CAAC;MAClD,MAAMyB,UAAU,GAAG,MAAM7B,OAAO,CAACyB,WAAW,CAAC1B,MAAM,EAAE+B,OAAO,CAAC;MAC7D,OAAO,KAAIH,uCAAkB,EAAClB,QAAQ,EAAEjB,IAAI,EAAE0B,IAAI,EAAEW,UAAU,EAAEvB,UAAU,EAAEO,SAAS,EAAgBF,GAAG,CAAC;IAC3G;IACA,MAAMmB,OAAO,GAAG,IAAAE,gDAAsB,EAAC5B,IAAI,CAAC;IAC5C,MAAMmB,IAAI,GAAG,MAAMvB,OAAO,CAACyB,WAAW,CAAC1B,MAAM,EAAE+B,OAAO,CAAC;IACvD,MAAMG,YAAY,GAAGlC,MAAM,CAACiB,WAAW,GAAGjB,MAAM,CAACiB,WAAW,CAACvB,OAAO,CAAC,CAAC,GAAGyC,SAAS;IAElF,OAAO,KAAIC,uCAAkB,EAAC1B,QAAQ,EAAEjB,IAAI,EAAEc,UAAU,EAAEiB,IAAI,EAAE,KAAK,EAAEZ,GAAG,EAAEsB,YAAY,CAAC;EAC3F;AACF;AAACG,OAAA,CAAAnD,mBAAA,GAAAA,mBAAA;AAED,SAASyC,cAAcA,CAACvC,IAAgB,EAA8B;EACpE,OAAOA,IAAI,YAAYwC,uCAAkB;AAC3C"}
|
|
1
|
+
{"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","_parameter","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","_functionLikeInfo$bod3","functionLikeInfo","equalsGreaterThanToken","returnTypeStr","parseTypeFromQuickInfo","type","funcType","resolveType","isFunctionLike","_functionLikeInfo$bod","FunctionLikeSchema","params","returnType","TypeRefSchema","_functionLikeInfo$bod2","paramTypes","typeArgs","parameters","paramsSchema","pMapSeries","param","index","objectBindingNodes","ParameterTransformer","getObjectBindingNodes","ParameterSchema","Boolean","questionToken","undefined","dotDotDotToken","args","computeSchema","typeStr","defaultValue","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\n TypeRefSchema,\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 { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\nimport { ParameterTransformer } from './parameter';\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 functionLikeInfo = await context.getQuickInfo((varDec.initializer as ArrowFunction).equalsGreaterThanToken);\n const returnTypeStr = functionLikeInfo ? parseTypeFromQuickInfo(functionLikeInfo) : 'any';\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 functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n // e.g. export const MyComponent: React.FC<T> = ({}) => {}\n if (funcType instanceof TypeRefSchema) {\n const paramTypes = funcType.typeArgs;\n const params = (varDec.initializer as ArrowFunction).parameters;\n const paramsSchema = await pMapSeries(params, async (param, index) => {\n const objectBindingNodes = await ParameterTransformer.getObjectBindingNodes(\n param,\n paramTypes?.[index] ?? funcType,\n context\n );\n return new ParameterSchema(\n location,\n ParameterTransformer.getName(param),\n paramTypes?.[index] ?? funcType,\n Boolean(param.questionToken),\n param.initializer ? param.initializer.getText() : undefined,\n undefined,\n objectBindingNodes,\n Boolean(param.dotDotDotToken)\n );\n });\n\n return new FunctionLikeSchema(\n location,\n name,\n paramsSchema,\n await context.resolveType(varDec.initializer, returnTypeStr),\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n }\n const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n return new FunctionLikeSchema(\n location,\n name,\n args,\n await context.resolveType(varDec.initializer, returnTypeStr),\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\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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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/typescript",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/typescript/typescript",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.typescript",
|
|
8
8
|
"name": "typescript",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.7"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -20,25 +20,25 @@
|
|
|
20
20
|
"core-js": "^3.0.0",
|
|
21
21
|
"@babel/runtime": "7.20.0",
|
|
22
22
|
"@teambit/harmony": "0.4.6",
|
|
23
|
-
"@teambit/compiler": "1.0.
|
|
23
|
+
"@teambit/compiler": "1.0.7",
|
|
24
24
|
"@teambit/typescript.modules.ts-config-mutator": "0.0.78",
|
|
25
|
-
"@teambit/builder": "1.0.
|
|
26
|
-
"@teambit/isolator": "1.0.
|
|
27
|
-
"@teambit/component": "1.0.
|
|
28
|
-
"@teambit/dependency-resolver": "1.0.
|
|
29
|
-
"@teambit/formatter": "1.0.
|
|
25
|
+
"@teambit/builder": "1.0.7",
|
|
26
|
+
"@teambit/isolator": "1.0.7",
|
|
27
|
+
"@teambit/component": "1.0.7",
|
|
28
|
+
"@teambit/dependency-resolver": "1.0.7",
|
|
29
|
+
"@teambit/formatter": "1.0.7",
|
|
30
30
|
"@teambit/semantics.entities.semantic-schema": "0.0.58",
|
|
31
31
|
"@teambit/ts-server": "0.0.50",
|
|
32
|
-
"@teambit/aspect-loader": "1.0.
|
|
33
|
-
"@teambit/envs": "1.0.
|
|
34
|
-
"@teambit/logger": "0.0.
|
|
35
|
-
"@teambit/workspace": "1.0.
|
|
32
|
+
"@teambit/aspect-loader": "1.0.7",
|
|
33
|
+
"@teambit/envs": "1.0.7",
|
|
34
|
+
"@teambit/logger": "0.0.882",
|
|
35
|
+
"@teambit/workspace": "1.0.7",
|
|
36
36
|
"@teambit/bit-error": "0.0.404",
|
|
37
|
-
"@teambit/schema": "1.0.
|
|
38
|
-
"@teambit/scope": "1.0.
|
|
39
|
-
"@teambit/cli": "0.0.
|
|
40
|
-
"@teambit/pkg": "1.0.
|
|
41
|
-
"@teambit/watcher": "1.0.
|
|
37
|
+
"@teambit/schema": "1.0.7",
|
|
38
|
+
"@teambit/scope": "1.0.7",
|
|
39
|
+
"@teambit/cli": "0.0.789",
|
|
40
|
+
"@teambit/pkg": "1.0.7",
|
|
41
|
+
"@teambit/watcher": "1.0.7"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/lodash": "4.14.165",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@teambit/typescript.aspect-docs.typescript": "0.0.161"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@teambit/legacy": "1.0.
|
|
57
|
+
"@teambit/legacy": "1.0.569",
|
|
58
58
|
"react": "^16.8.0 || ^17.0.0",
|
|
59
59
|
"react-dom": "^16.8.0 || ^17.0.0"
|
|
60
60
|
},
|
|
@@ -32,17 +32,17 @@ export class ParameterTransformer implements SchemaTransformer {
|
|
|
32
32
|
const type = await this.getType(node, context);
|
|
33
33
|
return new ParameterSchema(
|
|
34
34
|
context.getLocation(node),
|
|
35
|
-
|
|
35
|
+
ParameterTransformer.getName(node),
|
|
36
36
|
type,
|
|
37
37
|
Boolean(node.questionToken),
|
|
38
38
|
node.initializer ? node.initializer.getText() : undefined,
|
|
39
39
|
undefined,
|
|
40
|
-
await
|
|
40
|
+
await ParameterTransformer.getObjectBindingNodes(node, type, context),
|
|
41
41
|
Boolean(node.dotDotDotToken)
|
|
42
42
|
);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
getName(param: ParameterDeclaration): string {
|
|
45
|
+
static getName(param: ParameterDeclaration): string {
|
|
46
46
|
if (isIdentifier(param.name)) {
|
|
47
47
|
return param.name.getText();
|
|
48
48
|
}
|
|
@@ -86,7 +86,7 @@ export class ParameterTransformer implements SchemaTransformer {
|
|
|
86
86
|
throw new Error(`unknown param type`);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
async getObjectBindingNodes(
|
|
89
|
+
static async getObjectBindingNodes(
|
|
90
90
|
param: ParameterDeclaration,
|
|
91
91
|
paramType: SchemaNode,
|
|
92
92
|
context: SchemaExtractorContext
|
|
@@ -96,7 +96,9 @@ export class ParameterTransformer implements SchemaTransformer {
|
|
|
96
96
|
const existing = paramType.findNode?.((node) => {
|
|
97
97
|
return node.name === elem.name.getText().trim();
|
|
98
98
|
});
|
|
99
|
-
if (existing
|
|
99
|
+
if (existing && existing.__schema !== 'InferenceTypeSchema') {
|
|
100
|
+
return existing;
|
|
101
|
+
}
|
|
100
102
|
const info = await context.getQuickInfo(elem.name);
|
|
101
103
|
const parsed = info ? parseTypeFromQuickInfo(info) : elem.getText();
|
|
102
104
|
const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;
|
|
@@ -4,13 +4,15 @@ import {
|
|
|
4
4
|
FunctionLikeSchema,
|
|
5
5
|
Modifier,
|
|
6
6
|
ParameterSchema,
|
|
7
|
+
TypeRefSchema,
|
|
7
8
|
} from '@teambit/semantics.entities.semantic-schema';
|
|
8
9
|
import ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';
|
|
9
10
|
import pMapSeries from 'p-map-series';
|
|
10
11
|
import { SchemaTransformer } from '../schema-transformer';
|
|
11
12
|
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
12
|
-
import {
|
|
13
|
+
import { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';
|
|
13
14
|
import { Identifier } from '../identifier';
|
|
15
|
+
import { ParameterTransformer } from './parameter';
|
|
14
16
|
|
|
15
17
|
export class VariableDeclaration implements SchemaTransformer {
|
|
16
18
|
predicate(node: Node) {
|
|
@@ -33,9 +35,8 @@ export class VariableDeclaration implements SchemaTransformer {
|
|
|
33
35
|
const doc = await context.jsDocToDocSchema(varDec);
|
|
34
36
|
const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];
|
|
35
37
|
if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
)) as ParameterSchema[];
|
|
38
|
+
const functionLikeInfo = await context.getQuickInfo((varDec.initializer as ArrowFunction).equalsGreaterThanToken);
|
|
39
|
+
const returnTypeStr = functionLikeInfo ? parseTypeFromQuickInfo(functionLikeInfo) : 'any';
|
|
39
40
|
// example => export const useLanesContext: () => LanesContextModel | undefined = () => {
|
|
40
41
|
if (varDec.type) {
|
|
41
42
|
const funcType = await context.resolveType(varDec, '');
|
|
@@ -45,15 +46,56 @@ export class VariableDeclaration implements SchemaTransformer {
|
|
|
45
46
|
name,
|
|
46
47
|
funcType.params,
|
|
47
48
|
funcType.returnType,
|
|
48
|
-
|
|
49
|
+
functionLikeInfo?.body?.displayString || '',
|
|
50
|
+
modifiers as Modifier[],
|
|
51
|
+
doc
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
// e.g. export const MyComponent: React.FC<T> = ({}) => {}
|
|
55
|
+
if (funcType instanceof TypeRefSchema) {
|
|
56
|
+
const paramTypes = funcType.typeArgs;
|
|
57
|
+
const params = (varDec.initializer as ArrowFunction).parameters;
|
|
58
|
+
const paramsSchema = await pMapSeries(params, async (param, index) => {
|
|
59
|
+
const objectBindingNodes = await ParameterTransformer.getObjectBindingNodes(
|
|
60
|
+
param,
|
|
61
|
+
paramTypes?.[index] ?? funcType,
|
|
62
|
+
context
|
|
63
|
+
);
|
|
64
|
+
return new ParameterSchema(
|
|
65
|
+
location,
|
|
66
|
+
ParameterTransformer.getName(param),
|
|
67
|
+
paramTypes?.[index] ?? funcType,
|
|
68
|
+
Boolean(param.questionToken),
|
|
69
|
+
param.initializer ? param.initializer.getText() : undefined,
|
|
70
|
+
undefined,
|
|
71
|
+
objectBindingNodes,
|
|
72
|
+
Boolean(param.dotDotDotToken)
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
return new FunctionLikeSchema(
|
|
77
|
+
location,
|
|
78
|
+
name,
|
|
79
|
+
paramsSchema,
|
|
80
|
+
await context.resolveType(varDec.initializer, returnTypeStr),
|
|
81
|
+
functionLikeInfo?.body?.displayString || '',
|
|
49
82
|
modifiers as Modifier[],
|
|
50
83
|
doc
|
|
51
84
|
);
|
|
52
85
|
}
|
|
53
86
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
87
|
+
const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>
|
|
88
|
+
context.computeSchema(param)
|
|
89
|
+
)) as ParameterSchema[];
|
|
90
|
+
return new FunctionLikeSchema(
|
|
91
|
+
location,
|
|
92
|
+
name,
|
|
93
|
+
args,
|
|
94
|
+
await context.resolveType(varDec.initializer, returnTypeStr),
|
|
95
|
+
functionLikeInfo?.body?.displayString || '',
|
|
96
|
+
modifiers as Modifier[],
|
|
97
|
+
doc
|
|
98
|
+
);
|
|
57
99
|
}
|
|
58
100
|
const typeStr = parseTypeFromQuickInfo(info);
|
|
59
101
|
const type = await context.resolveType(varDec, typeStr);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as compositions_0 from '/Users/davidfirst/Library/Caches/Bit/capsules/05de4a3a532ca288e0160acc2b7343648396ffb2/teambit.typescript_typescript@1.0.6/dist/typescript.composition.js';
|
|
2
|
-
import * as overview_0 from '/Users/davidfirst/Library/Caches/Bit/capsules/05de4a3a532ca288e0160acc2b7343648396ffb2/teambit.typescript_typescript@1.0.6/dist/typescript.docs.mdx';
|
|
3
|
-
|
|
4
|
-
export const compositions = [compositions_0];
|
|
5
|
-
export const overview = [overview_0];
|
|
6
|
-
|
|
7
|
-
export const compositions_metadata = {"compositions":[{"displayName":"Logo","identifier":"Logo"}]};
|