@teambit/typescript 0.0.731 → 0.0.734

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/schema-extractor-context.d.ts +2 -5
  2. package/dist/schema-extractor-context.js +1 -0
  3. package/dist/schema-extractor-context.js.map +1 -1
  4. package/dist/transformers/class-deceleration.js +1 -1
  5. package/dist/transformers/class-deceleration.js.map +1 -1
  6. package/dist/transformers/function-declaration.js +4 -34
  7. package/dist/transformers/function-declaration.js.map +1 -1
  8. package/dist/transformers/method-declaration.js +4 -33
  9. package/dist/transformers/method-declaration.js.map +1 -1
  10. package/dist/transformers/method-signature.js +4 -32
  11. package/dist/transformers/method-signature.js.map +1 -1
  12. package/dist/transformers/property-signature.js +7 -10
  13. package/dist/transformers/property-signature.js.map +1 -1
  14. package/dist/transformers/utils/to-function-schema.d.ts +4 -0
  15. package/dist/transformers/utils/to-function-schema.js +55 -0
  16. package/dist/transformers/utils/to-function-schema.js.map +1 -0
  17. package/dist/transformers/utils/type-node-to-schema.js +2 -1
  18. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  19. package/dist/transformers/variable-declaration.js +2 -1
  20. package/dist/transformers/variable-declaration.js.map +1 -1
  21. package/package-tar/teambit-typescript-0.0.734.tgz +0 -0
  22. package/package.json +16 -16
  23. package/{preview-1652498684867.js → preview-1652785756723.js} +2 -2
  24. package/transformers/class-deceleration.ts +1 -1
  25. package/transformers/function-declaration.ts +3 -13
  26. package/transformers/method-declaration.ts +3 -11
  27. package/transformers/method-signature.ts +3 -10
  28. package/transformers/property-signature.ts +4 -7
  29. package/transformers/utils/to-function-schema.ts +19 -0
  30. package/transformers/utils/type-node-to-schema.ts +3 -2
  31. package/transformers/variable-declaration.ts +3 -2
  32. package/package-tar/teambit-typescript-0.0.731.tgz +0 -0
@@ -2,7 +2,7 @@ import { TsserverClient } from '@teambit/ts-server';
2
2
  import ts, { ExportDeclaration, Node, TypeNode } from 'typescript';
3
3
  import type { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';
4
4
  import { Component } from '@teambit/component';
5
- import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
5
+ import { SchemaNode, Location } from '@teambit/semantics.entities.semantic-schema';
6
6
  import { TypeScriptExtractor } from './typescript.extractor';
7
7
  import { ExportList } from './export-list';
8
8
  export declare class SchemaExtractorContext {
@@ -14,10 +14,7 @@ export declare class SchemaExtractorContext {
14
14
  /**
15
15
  * returns the location of a node in a source file.
16
16
  */
17
- getLocation(node: Node, targetSourceFile?: ts.SourceFile): {
18
- line: number;
19
- character: number;
20
- };
17
+ getLocation(node: Node, targetSourceFile?: ts.SourceFile): Location;
21
18
  /**
22
19
  * returns a signature for a node.
23
20
  */
@@ -125,6 +125,7 @@ class SchemaExtractorContext {
125
125
  const line = position.line + 1;
126
126
  const character = position.character + 1;
127
127
  return {
128
+ file: sourceFile.fileName,
128
129
  line,
129
130
  character
130
131
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["schema-extractor-context.ts"],"names":["SchemaExtractorContext","constructor","tsserver","component","extractor","undefined","computeSchema","node","getLocation","targetSourceFile","sourceFile","getSourceFile","position","getLineAndCharacterOfPosition","getStart","line","character","getSignature","getSignatureHelp","getPath","getPosition","offset","getPositionOfLineAndCharacter","fileName","getQuickInfo","getQuickInfoDisplayString","quickInfo","body","displayString","typeDefinition","getTypeDefinition","visitTypeDefinition","findFileInComponent","filePath","filesystem","files","find","file","path","includes","strings","map","format","endsWith","string","parsePackageNameFromPath","parts","split","length","lastPart","replace","sep","pkgParts","startsWith","pkgName","parseSourceFile","getSourceFileFromNode","def","getDefinition","firstDef","definition","startPosition","start","pos","nodeAtPos","visitDefinition","visit","parent","references","isExported","isFromComponent","getFileExports","exportDec","specifierPathStr","moduleSpecifier","getText","specifierPath","substring","absPath","computeExportedIdentifiers","setExports","exports","_exports","getExportedIdentifiers","jump","err","TransformerNotFound","resolveType","typeStr","isTypeStrFromQuickInfo","TypeRefSchema","type","ts","isTypeNode","getDef","headTypeDefinition","unknownExactType","InferenceTypeSchema","info","isDefInSameLocation","loc","schemaNode"],"mappings":"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","sourcesContent":["import { TsserverClient } from '@teambit/ts-server';\nimport ts, { ExportDeclaration, Node, TypeNode } from 'typescript';\nimport { getTokenAtPosition } from 'tsutils';\nimport { head } from 'lodash';\n// @ts-ignore david we should figure fix this.\nimport type { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { resolve, sep } from 'path';\nimport { Component } from '@teambit/component';\nimport { TypeRefSchema, SchemaNode, InferenceTypeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { ExportList } from './export-list';\nimport { typeNodeToSchema } from './transformers/utils/type-node-to-schema';\nimport { TransformerNotFound } from './exceptions';\nimport { parseTypeFromQuickInfo } from './transformers/utils/parse-type-from-quick-info';\n\nexport class SchemaExtractorContext {\n constructor(\n readonly tsserver: TsserverClient,\n readonly component: Component,\n readonly extractor: TypeScriptExtractor\n ) {}\n\n computeSchema(node: Node) {\n return this.extractor.computeSchema(node, this);\n }\n\n /**\n * returns the location of a node in a source file.\n */\n getLocation(node: Node, targetSourceFile?: ts.SourceFile) {\n const sourceFile = targetSourceFile || node.getSourceFile();\n const position = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n const line = position.line + 1;\n const character = position.character + 1;\n\n return {\n line,\n character,\n };\n }\n\n /**\n * returns a signature for a node.\n */\n async getSignature(node: Node) {\n return this.tsserver.getSignatureHelp(this.getPath(node), this.getLocation(node));\n }\n\n /**\n * get the position for the tsserver.\n */\n getPosition(sourceFile: ts.SourceFile, line: number, offset: number): number {\n return sourceFile.getPositionOfLineAndCharacter(line - 1, offset - 1);\n }\n\n /**\n * get the path for a source file.\n */\n getPath(node: Node) {\n const sourceFile = node.getSourceFile();\n return sourceFile.fileName;\n }\n\n /**\n * create a reference to a type from a component.\n * think if we don't need this because of type ref\n */\n // createRef() {\n // return {};\n // }\n\n getQuickInfo(node: Node) {\n return this.tsserver.getQuickInfo(this.getPath(node), this.getLocation(node));\n }\n\n async getQuickInfoDisplayString(node: Node): Promise<string> {\n const quickInfo = await this.tsserver.getQuickInfo(this.getPath(node), this.getLocation(node));\n return quickInfo?.body?.displayString || '';\n }\n\n /**\n * returns the type definition for a type.\n */\n typeDefinition(node: Node) {\n return this.tsserver.getTypeDefinition(this.getPath(node), this.getLocation(node));\n }\n\n visitTypeDefinition() {}\n\n private findFileInComponent(filePath: string) {\n return this.component.filesystem.files.find((file) => {\n // TODO: fix this line to support further extensions.\n if (file.path.includes(filePath)) {\n const strings = ['ts', 'tsx', 'js', 'jsx'].map((format) => {\n if (filePath.endsWith(format)) return filePath;\n return `${filePath}.${format}`;\n });\n\n return strings.find((string) => string === file.path);\n }\n\n return false;\n });\n }\n\n private parsePackageNameFromPath(path: string) {\n const parts = path.split('node_modules');\n if (parts.length === 1) return '';\n const lastPart = parts[parts.length - 1].replace(sep, '');\n const pkgParts = lastPart.split('/');\n if (lastPart.startsWith('@')) {\n // scoped package\n return `${pkgParts[0]}/${pkgParts[1]}`;\n }\n const pkgName = pkgParts[0];\n if (pkgName === 'typescript') {\n // it's a built-in type, such as \"string\".\n return '';\n }\n return pkgName;\n }\n\n /**\n * return the file if part of the component.\n * otherwise, a reference to the target package and the type name.\n */\n private getSourceFile(filePath: string) {\n const file = this.findFileInComponent(filePath);\n if (!file) return undefined;\n return this.extractor.parseSourceFile(file);\n }\n\n async getSourceFileFromNode(node: Node) {\n const def = await this.tsserver.getDefinition(this.getPath(node), this.getLocation(node));\n\n const firstDef = head(def.body);\n if (!firstDef) {\n return undefined;\n }\n\n const sourceFile = this.getSourceFile(firstDef.file);\n\n return sourceFile;\n }\n\n /**\n * get a definition for a given node.\n */\n async definition(node: Node): Promise<Node | undefined> {\n const def = await this.tsserver.getDefinition(this.getPath(node), this.getLocation(node));\n\n const firstDef = head(def.body);\n if (!firstDef) {\n return undefined;\n }\n\n const startPosition = firstDef.start;\n const sourceFile = this.getSourceFile(firstDef.file);\n if (!sourceFile) {\n return undefined; // learn how to return a reference to a different component here.\n }\n const pos = this.getPosition(sourceFile, startPosition.line, startPosition.offset);\n const nodeAtPos = getTokenAtPosition(sourceFile, pos);\n return nodeAtPos;\n }\n\n /**\n * visit a definition for node - e.g. return it's schema.\n */\n async visitDefinition(node: Node): Promise<SchemaNode | undefined> {\n const definition = await this.definition(node);\n if (!definition) {\n return undefined;\n }\n return this.visit(definition.parent);\n }\n\n async visit(node: Node): Promise<SchemaNode> {\n return this.extractor.computeSchema(node, this);\n }\n\n references() {}\n\n isExported() {}\n\n isFromComponent() {}\n\n async getFileExports(exportDec: ExportDeclaration) {\n const file = exportDec.getSourceFile().fileName;\n const specifierPathStr = exportDec.moduleSpecifier?.getText() || '';\n const specifierPath = specifierPathStr.substring(1, specifierPathStr.length - 1);\n const absPath = resolve(file, '..', specifierPath);\n const sourceFile = this.getSourceFile(absPath);\n if (!sourceFile) return [];\n return this.extractor.computeExportedIdentifiers(sourceFile, this);\n }\n\n _exports: ExportList | undefined = undefined;\n\n setExports(exports: ExportList) {\n this._exports = exports;\n return this;\n }\n\n getExportedIdentifiers(node: Node) {\n return this.extractor.computeExportedIdentifiers(node, this);\n }\n\n async jump(file: AbstractVinyl, start: any): Promise<SchemaNode | undefined> {\n const sourceFile = this.extractor.parseSourceFile(file);\n const pos = this.getPosition(sourceFile, start.line, start.offset);\n const nodeAtPos = getTokenAtPosition(sourceFile, pos);\n if (!nodeAtPos) return undefined;\n\n // this causes some infinite loops. it's helpful for getting more data from types that are not exported.\n // e.g.\n // ```ts\n // class Bar {}\n // export const getBar = () => new Bar();\n // ```\n // if (nodeAtPos.kind === ts.SyntaxKind.Identifier) {\n // // @todo: make sure with Ran that it's fine. Maybe it's better to do: `this.visit(nodeAtPos.parent);`\n // return this.visitDefinition(nodeAtPos);\n // }\n try {\n return await this.visit(nodeAtPos);\n } catch (err) {\n if (err instanceof TransformerNotFound) {\n return undefined;\n }\n throw err;\n }\n }\n\n /**\n * resolve a type by a node and its identifier.\n */\n async resolveType(\n node: Node & { type?: TypeNode },\n typeStr: string,\n isTypeStrFromQuickInfo = true\n ): Promise<SchemaNode> {\n if (this._exports?.includes(typeStr)) return new TypeRefSchema(typeStr);\n if (node.type && ts.isTypeNode(node.type)) {\n // if a node has \"type\" prop, it has the type data of the node. this normally happens when the code has the type\n // explicitly, e.g. `const str: string` vs implicitly `const str = 'some-string'`, which the node won't have \"type\"\n return typeNodeToSchema(node.type, this);\n }\n /**\n * tsserver has two different calls: \"definition\" and \"typeDefinition\".\n * normally, we need the \"typeDefinition\" to get the type data of a node.\n * sometimes, it has no data, for example when the node is of type TypeReference, and then using \"definition\" is\n * helpful. (couldn't find a rule when to use each one. e.g. \"VariableDeclaration\" sometimes has data only in\n * \"definition\" but it's not clear when/why).\n */\n const getDef = async () => {\n const typeDefinition = await this.typeDefinition(node);\n const headTypeDefinition = head(typeDefinition?.body);\n if (headTypeDefinition) {\n return headTypeDefinition;\n }\n const definition = await this.tsserver.getDefinition(node.getSourceFile().fileName, this.getLocation(node));\n return head(definition?.body);\n };\n const definition = await getDef();\n\n // when we can't figure out the component/package/type of this node, we'll use the typeStr as the type.\n const unknownExactType = async () => {\n if (isTypeStrFromQuickInfo) {\n return new InferenceTypeSchema(typeStr);\n }\n const info = await this.getQuickInfo(node);\n const type = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(type);\n };\n if (!definition) {\n return unknownExactType();\n }\n\n // the reason for this check is to avoid infinite loop when calling `this.jump` with the same file+location\n const isDefInSameLocation = () => {\n if (definition.file !== node.getSourceFile().fileName) {\n return false;\n }\n const loc = this.getLocation(node);\n return loc.line === definition.start.line && loc.character === definition.start.offset;\n };\n\n const file = this.findFileInComponent(definition.file);\n if (file) {\n if (isDefInSameLocation()) {\n return unknownExactType();\n }\n const schemaNode = await this.jump(file, definition.start);\n return schemaNode || unknownExactType();\n }\n const pkgName = this.parsePackageNameFromPath(definition.file);\n // TODO: find component id is exists, otherwise add the package name.\n return new TypeRefSchema(typeStr, undefined, pkgName);\n }\n}\n"]}
1
+ {"version":3,"sources":["schema-extractor-context.ts"],"names":["SchemaExtractorContext","constructor","tsserver","component","extractor","undefined","computeSchema","node","getLocation","targetSourceFile","sourceFile","getSourceFile","position","getLineAndCharacterOfPosition","getStart","line","character","file","fileName","getSignature","getSignatureHelp","getPath","getPosition","offset","getPositionOfLineAndCharacter","getQuickInfo","getQuickInfoDisplayString","quickInfo","body","displayString","typeDefinition","getTypeDefinition","visitTypeDefinition","findFileInComponent","filePath","filesystem","files","find","path","includes","strings","map","format","endsWith","string","parsePackageNameFromPath","parts","split","length","lastPart","replace","sep","pkgParts","startsWith","pkgName","parseSourceFile","getSourceFileFromNode","def","getDefinition","firstDef","definition","startPosition","start","pos","nodeAtPos","visitDefinition","visit","parent","references","isExported","isFromComponent","getFileExports","exportDec","specifierPathStr","moduleSpecifier","getText","specifierPath","substring","absPath","computeExportedIdentifiers","setExports","exports","_exports","getExportedIdentifiers","jump","err","TransformerNotFound","resolveType","typeStr","isTypeStrFromQuickInfo","TypeRefSchema","type","ts","isTypeNode","getDef","headTypeDefinition","unknownExactType","InferenceTypeSchema","info","isDefInSameLocation","loc","schemaNode"],"mappings":"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","sourcesContent":["import { TsserverClient } from '@teambit/ts-server';\nimport ts, { ExportDeclaration, Node, TypeNode } from 'typescript';\nimport { getTokenAtPosition } from 'tsutils';\nimport { head } from 'lodash';\n// @ts-ignore david we should figure fix this.\nimport type { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { resolve, sep } from 'path';\nimport { Component } from '@teambit/component';\nimport { TypeRefSchema, SchemaNode, InferenceTypeSchema, Location } from '@teambit/semantics.entities.semantic-schema';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { ExportList } from './export-list';\nimport { typeNodeToSchema } from './transformers/utils/type-node-to-schema';\nimport { TransformerNotFound } from './exceptions';\nimport { parseTypeFromQuickInfo } from './transformers/utils/parse-type-from-quick-info';\n\nexport class SchemaExtractorContext {\n constructor(\n readonly tsserver: TsserverClient,\n readonly component: Component,\n readonly extractor: TypeScriptExtractor\n ) {}\n\n computeSchema(node: Node) {\n return this.extractor.computeSchema(node, this);\n }\n\n /**\n * returns the location of a node in a source file.\n */\n getLocation(node: Node, targetSourceFile?: ts.SourceFile): Location {\n const sourceFile = targetSourceFile || node.getSourceFile();\n const position = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n const line = position.line + 1;\n const character = position.character + 1;\n\n return {\n file: sourceFile.fileName,\n line,\n character,\n };\n }\n\n /**\n * returns a signature for a node.\n */\n async getSignature(node: Node) {\n return this.tsserver.getSignatureHelp(this.getPath(node), this.getLocation(node));\n }\n\n /**\n * get the position for the tsserver.\n */\n getPosition(sourceFile: ts.SourceFile, line: number, offset: number): number {\n return sourceFile.getPositionOfLineAndCharacter(line - 1, offset - 1);\n }\n\n /**\n * get the path for a source file.\n */\n getPath(node: Node) {\n const sourceFile = node.getSourceFile();\n return sourceFile.fileName;\n }\n\n /**\n * create a reference to a type from a component.\n * think if we don't need this because of type ref\n */\n // createRef() {\n // return {};\n // }\n\n getQuickInfo(node: Node) {\n return this.tsserver.getQuickInfo(this.getPath(node), this.getLocation(node));\n }\n\n async getQuickInfoDisplayString(node: Node): Promise<string> {\n const quickInfo = await this.tsserver.getQuickInfo(this.getPath(node), this.getLocation(node));\n return quickInfo?.body?.displayString || '';\n }\n\n /**\n * returns the type definition for a type.\n */\n typeDefinition(node: Node) {\n return this.tsserver.getTypeDefinition(this.getPath(node), this.getLocation(node));\n }\n\n visitTypeDefinition() {}\n\n private findFileInComponent(filePath: string) {\n return this.component.filesystem.files.find((file) => {\n // TODO: fix this line to support further extensions.\n if (file.path.includes(filePath)) {\n const strings = ['ts', 'tsx', 'js', 'jsx'].map((format) => {\n if (filePath.endsWith(format)) return filePath;\n return `${filePath}.${format}`;\n });\n\n return strings.find((string) => string === file.path);\n }\n\n return false;\n });\n }\n\n private parsePackageNameFromPath(path: string) {\n const parts = path.split('node_modules');\n if (parts.length === 1) return '';\n const lastPart = parts[parts.length - 1].replace(sep, '');\n const pkgParts = lastPart.split('/');\n if (lastPart.startsWith('@')) {\n // scoped package\n return `${pkgParts[0]}/${pkgParts[1]}`;\n }\n const pkgName = pkgParts[0];\n if (pkgName === 'typescript') {\n // it's a built-in type, such as \"string\".\n return '';\n }\n return pkgName;\n }\n\n /**\n * return the file if part of the component.\n * otherwise, a reference to the target package and the type name.\n */\n private getSourceFile(filePath: string) {\n const file = this.findFileInComponent(filePath);\n if (!file) return undefined;\n return this.extractor.parseSourceFile(file);\n }\n\n async getSourceFileFromNode(node: Node) {\n const def = await this.tsserver.getDefinition(this.getPath(node), this.getLocation(node));\n\n const firstDef = head(def.body);\n if (!firstDef) {\n return undefined;\n }\n\n const sourceFile = this.getSourceFile(firstDef.file);\n\n return sourceFile;\n }\n\n /**\n * get a definition for a given node.\n */\n async definition(node: Node): Promise<Node | undefined> {\n const def = await this.tsserver.getDefinition(this.getPath(node), this.getLocation(node));\n\n const firstDef = head(def.body);\n if (!firstDef) {\n return undefined;\n }\n\n const startPosition = firstDef.start;\n const sourceFile = this.getSourceFile(firstDef.file);\n if (!sourceFile) {\n return undefined; // learn how to return a reference to a different component here.\n }\n const pos = this.getPosition(sourceFile, startPosition.line, startPosition.offset);\n const nodeAtPos = getTokenAtPosition(sourceFile, pos);\n return nodeAtPos;\n }\n\n /**\n * visit a definition for node - e.g. return it's schema.\n */\n async visitDefinition(node: Node): Promise<SchemaNode | undefined> {\n const definition = await this.definition(node);\n if (!definition) {\n return undefined;\n }\n return this.visit(definition.parent);\n }\n\n async visit(node: Node): Promise<SchemaNode> {\n return this.extractor.computeSchema(node, this);\n }\n\n references() {}\n\n isExported() {}\n\n isFromComponent() {}\n\n async getFileExports(exportDec: ExportDeclaration) {\n const file = exportDec.getSourceFile().fileName;\n const specifierPathStr = exportDec.moduleSpecifier?.getText() || '';\n const specifierPath = specifierPathStr.substring(1, specifierPathStr.length - 1);\n const absPath = resolve(file, '..', specifierPath);\n const sourceFile = this.getSourceFile(absPath);\n if (!sourceFile) return [];\n return this.extractor.computeExportedIdentifiers(sourceFile, this);\n }\n\n _exports: ExportList | undefined = undefined;\n\n setExports(exports: ExportList) {\n this._exports = exports;\n return this;\n }\n\n getExportedIdentifiers(node: Node) {\n return this.extractor.computeExportedIdentifiers(node, this);\n }\n\n async jump(file: AbstractVinyl, start: any): Promise<SchemaNode | undefined> {\n const sourceFile = this.extractor.parseSourceFile(file);\n const pos = this.getPosition(sourceFile, start.line, start.offset);\n const nodeAtPos = getTokenAtPosition(sourceFile, pos);\n if (!nodeAtPos) return undefined;\n\n // this causes some infinite loops. it's helpful for getting more data from types that are not exported.\n // e.g.\n // ```ts\n // class Bar {}\n // export const getBar = () => new Bar();\n // ```\n // if (nodeAtPos.kind === ts.SyntaxKind.Identifier) {\n // // @todo: make sure with Ran that it's fine. Maybe it's better to do: `this.visit(nodeAtPos.parent);`\n // return this.visitDefinition(nodeAtPos);\n // }\n try {\n return await this.visit(nodeAtPos);\n } catch (err) {\n if (err instanceof TransformerNotFound) {\n return undefined;\n }\n throw err;\n }\n }\n\n /**\n * resolve a type by a node and its identifier.\n */\n async resolveType(\n node: Node & { type?: TypeNode },\n typeStr: string,\n isTypeStrFromQuickInfo = true\n ): Promise<SchemaNode> {\n if (this._exports?.includes(typeStr)) return new TypeRefSchema(typeStr);\n if (node.type && ts.isTypeNode(node.type)) {\n // if a node has \"type\" prop, it has the type data of the node. this normally happens when the code has the type\n // explicitly, e.g. `const str: string` vs implicitly `const str = 'some-string'`, which the node won't have \"type\"\n return typeNodeToSchema(node.type, this);\n }\n /**\n * tsserver has two different calls: \"definition\" and \"typeDefinition\".\n * normally, we need the \"typeDefinition\" to get the type data of a node.\n * sometimes, it has no data, for example when the node is of type TypeReference, and then using \"definition\" is\n * helpful. (couldn't find a rule when to use each one. e.g. \"VariableDeclaration\" sometimes has data only in\n * \"definition\" but it's not clear when/why).\n */\n const getDef = async () => {\n const typeDefinition = await this.typeDefinition(node);\n const headTypeDefinition = head(typeDefinition?.body);\n if (headTypeDefinition) {\n return headTypeDefinition;\n }\n const definition = await this.tsserver.getDefinition(node.getSourceFile().fileName, this.getLocation(node));\n return head(definition?.body);\n };\n const definition = await getDef();\n\n // when we can't figure out the component/package/type of this node, we'll use the typeStr as the type.\n const unknownExactType = async () => {\n if (isTypeStrFromQuickInfo) {\n return new InferenceTypeSchema(typeStr);\n }\n const info = await this.getQuickInfo(node);\n const type = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(type);\n };\n if (!definition) {\n return unknownExactType();\n }\n\n // the reason for this check is to avoid infinite loop when calling `this.jump` with the same file+location\n const isDefInSameLocation = () => {\n if (definition.file !== node.getSourceFile().fileName) {\n return false;\n }\n const loc = this.getLocation(node);\n return loc.line === definition.start.line && loc.character === definition.start.offset;\n };\n\n const file = this.findFileInComponent(definition.file);\n if (file) {\n if (isDefInSameLocation()) {\n return unknownExactType();\n }\n const schemaNode = await this.jump(file, definition.start);\n return schemaNode || unknownExactType();\n }\n const pkgName = this.parsePackageNameFromPath(definition.file);\n // TODO: find component id is exists, otherwise add the package name.\n return new TypeRefSchema(typeStr, undefined, pkgName);\n }\n}\n"]}
@@ -131,7 +131,7 @@ class ClassDecelerationTransformer {
131
131
  return context.computeSchema(member);
132
132
  }
133
133
  });
134
- return new (_semanticsEntities().ClassSchema)(className, (0, _lodash().compact)(members));
134
+ return new (_semanticsEntities().ClassSchema)(className, (0, _lodash().compact)(members), context.getLocation(node));
135
135
  }
136
136
 
137
137
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["class-deceleration.ts"],"names":["ClassDecelerationTransformer","predicate","node","kind","ts","SyntaxKind","ClassDeclaration","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","context","className","members","member","isPrivate","modifiers","some","modifier","PrivateKeyword","GetAccessor","getter","info","getQuickInfo","displaySig","body","displayString","typeStr","type","resolveType","GetAccessorSchema","SetAccessor","setter","params","parameters","getQuickInfoDisplayString","SetAccessorSchema","computeSchema","ClassSchema"],"mappings":"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","sourcesContent":["import pMapSeries from 'p-map-series';\nimport { compact } from 'lodash';\nimport { ClassSchema, GetAccessorSchema, SetAccessorSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, ClassDeclaration } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { getParams } from './utils/get-params';\n\nexport class ClassDecelerationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.ClassDeclaration;\n }\n\n // @todo: in case of `export default class` the class has no name.\n private getName(node: ClassDeclaration) {\n return node.name?.getText() || 'default';\n }\n\n async getIdentifiers(node: ClassDeclaration) {\n return [new ExportIdentifier(this.getName(node), node.getSourceFile().fileName)];\n }\n\n async transform(node: ClassDeclaration, context: SchemaExtractorContext) {\n const className = this.getName(node);\n const members = await pMapSeries(node.members, async (member) => {\n const isPrivate = member.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.PrivateKeyword);\n if (isPrivate) {\n return null;\n }\n switch (member.kind) {\n case ts.SyntaxKind.GetAccessor: {\n const getter = member as ts.GetAccessorDeclaration;\n const info = await context.getQuickInfo(getter.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(getter, typeStr);\n return new GetAccessorSchema(getter.name.getText(), type, displaySig);\n }\n case ts.SyntaxKind.SetAccessor: {\n const setter = member as ts.SetAccessorDeclaration;\n const params = await getParams(setter.parameters, context);\n const displaySig = await context.getQuickInfoDisplayString(setter.name);\n return new SetAccessorSchema(setter.name.getText(), params[0], displaySig);\n }\n default:\n return context.computeSchema(member);\n }\n });\n return new ClassSchema(className, compact(members));\n }\n}\n"]}
1
+ {"version":3,"sources":["class-deceleration.ts"],"names":["ClassDecelerationTransformer","predicate","node","kind","ts","SyntaxKind","ClassDeclaration","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","context","className","members","member","isPrivate","modifiers","some","modifier","PrivateKeyword","GetAccessor","getter","info","getQuickInfo","displaySig","body","displayString","typeStr","type","resolveType","GetAccessorSchema","SetAccessor","setter","params","parameters","getQuickInfoDisplayString","SetAccessorSchema","computeSchema","ClassSchema","getLocation"],"mappings":"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","sourcesContent":["import pMapSeries from 'p-map-series';\nimport { compact } from 'lodash';\nimport { ClassSchema, GetAccessorSchema, SetAccessorSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, ClassDeclaration } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { getParams } from './utils/get-params';\n\nexport class ClassDecelerationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.ClassDeclaration;\n }\n\n // @todo: in case of `export default class` the class has no name.\n private getName(node: ClassDeclaration) {\n return node.name?.getText() || 'default';\n }\n\n async getIdentifiers(node: ClassDeclaration) {\n return [new ExportIdentifier(this.getName(node), node.getSourceFile().fileName)];\n }\n\n async transform(node: ClassDeclaration, context: SchemaExtractorContext) {\n const className = this.getName(node);\n const members = await pMapSeries(node.members, async (member) => {\n const isPrivate = member.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.PrivateKeyword);\n if (isPrivate) {\n return null;\n }\n switch (member.kind) {\n case ts.SyntaxKind.GetAccessor: {\n const getter = member as ts.GetAccessorDeclaration;\n const info = await context.getQuickInfo(getter.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(getter, typeStr);\n return new GetAccessorSchema(getter.name.getText(), type, displaySig);\n }\n case ts.SyntaxKind.SetAccessor: {\n const setter = member as ts.SetAccessorDeclaration;\n const params = await getParams(setter.parameters, context);\n const displaySig = await context.getQuickInfoDisplayString(setter.name);\n return new SetAccessorSchema(setter.name.getText(), params[0], displaySig);\n }\n default:\n return context.computeSchema(member);\n }\n });\n return new ClassSchema(className, compact(members), context.getLocation(node));\n }\n}\n"]}
@@ -9,16 +9,6 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.FunctionDeclaration = void 0;
11
11
 
12
- function _semanticsEntities() {
13
- const data = require("@teambit/semantics.entities.semantic-schema");
14
-
15
- _semanticsEntities = function () {
16
- return data;
17
- };
18
-
19
- return data;
20
- }
21
-
22
12
  function _typescript() {
23
13
  const data = _interopRequireDefault(require("typescript"));
24
14
 
@@ -39,20 +29,10 @@ function _exportIdentifier() {
39
29
  return data;
40
30
  }
41
31
 
42
- function _getParams() {
43
- const data = require("./utils/get-params");
44
-
45
- _getParams = function () {
46
- return data;
47
- };
48
-
49
- return data;
50
- }
51
-
52
- function _parseTypeFromQuickInfo() {
53
- const data = require("./utils/parse-type-from-quick-info");
32
+ function _toFunctionSchema() {
33
+ const data = require("./utils/to-function-schema");
54
34
 
55
- _parseTypeFromQuickInfo = function () {
35
+ _toFunctionSchema = function () {
56
36
  return data;
57
37
  };
58
38
 
@@ -76,17 +56,7 @@ class FunctionDeclaration {
76
56
  }
77
57
 
78
58
  async transform(funcDec, context) {
79
- var _info$body, _funcDec$modifiers;
80
-
81
- const name = this.getName(funcDec); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
82
-
83
- const info = await context.getQuickInfo(funcDec.name);
84
- const returnTypeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
85
- const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
86
- const args = await (0, _getParams().getParams)(funcDec.parameters, context);
87
- const returnType = await context.resolveType(funcDec, returnTypeStr);
88
- const modifiers = ((_funcDec$modifiers = funcDec.modifiers) === null || _funcDec$modifiers === void 0 ? void 0 : _funcDec$modifiers.map(modifier => modifier.getText())) || [];
89
- return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig || '', modifiers);
59
+ return (0, _toFunctionSchema().toFunctionLikeSchema)(funcDec, context);
90
60
  }
91
61
 
92
62
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["function-declaration.ts"],"names":["FunctionDeclaration","predicate","node","kind","ts","SyntaxKind","getIdentifiers","funcDec","ExportIdentifier","getName","getSourceFile","fileName","name","getText","transform","context","info","getQuickInfo","returnTypeStr","displaySig","body","displayString","args","parameters","returnType","resolveType","modifiers","map","modifier","FunctionSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;AAC5DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,mBAAnC;AACD,GAH2D,CAK5D;;;AACoB,QAAdM,cAAc,CAACC,OAAD,EAAmC;AACrD,WAAO,CAAC,KAAIC,oCAAJ,EAAqB,KAAKC,OAAL,CAAaF,OAAb,CAArB,EAA4CA,OAAO,CAACG,aAAR,GAAwBC,QAApE,CAAD,CAAP;AACD;;AAEOF,EAAAA,OAAO,CAACF,OAAD,EAAmC;AAAA;;AAChD,WAAO,kBAAAA,OAAO,CAACK,IAAR,gEAAcC,OAAd,OAA2B,EAAlC;AACD;;AAEc,QAATC,SAAS,CAACP,OAAD,EAAmCQ,OAAnC,EAAyF;AAAA;;AACtG,UAAMH,IAAI,GAAG,KAAKH,OAAL,CAAaF,OAAb,CAAb,CADsG,CAEtG;;AACA,UAAMS,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBV,OAAO,CAACK,IAA7B,CAAnB;AACA,UAAMM,aAAa,GAAG,sDAAuBF,IAAvB,CAAtB;AACA,UAAMG,UAAU,GAAGH,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEI,IAAT,+CAAG,WAAYC,aAA/B;AACA,UAAMC,IAAI,GAAG,MAAM,4BAAUf,OAAO,CAACgB,UAAlB,EAA8BR,OAA9B,CAAnB;AACA,UAAMS,UAAU,GAAG,MAAMT,OAAO,CAACU,WAAR,CAAoBlB,OAApB,EAA6BW,aAA7B,CAAzB;AACA,UAAMQ,SAAS,GAAG,uBAAAnB,OAAO,CAACmB,SAAR,0EAAmBC,GAAnB,CAAwBC,QAAD,IAAcA,QAAQ,CAACf,OAAT,EAArC,MAA4D,EAA9E;AAEA,WAAO,KAAIgB,mCAAJ,EAAmBjB,IAAnB,EAAyBU,IAAzB,EAA+BE,UAA/B,EAA2CL,UAAU,IAAI,EAAzD,EAA6DO,SAA7D,CAAP;AACD;;AAzB2D","sourcesContent":["import { SchemaNode, FunctionSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, FunctionDeclaration as FunctionDeclarationNode } from 'typescript';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class FunctionDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.FunctionDeclaration;\n }\n\n // need to check for anonymous functions assigned for vars, const and let.\n async getIdentifiers(funcDec: FunctionDeclarationNode) {\n return [new ExportIdentifier(this.getName(funcDec), funcDec.getSourceFile().fileName)];\n }\n\n private getName(funcDec: FunctionDeclarationNode) {\n return funcDec.name?.getText() || '';\n }\n\n async transform(funcDec: FunctionDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(funcDec);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const info = await context.getQuickInfo(funcDec.name!);\n const returnTypeStr = parseTypeFromQuickInfo(info);\n const displaySig = info?.body?.displayString;\n const args = await getParams(funcDec.parameters, context);\n const returnType = await context.resolveType(funcDec, returnTypeStr);\n const modifiers = funcDec.modifiers?.map((modifier) => modifier.getText()) || [];\n\n return new FunctionSchema(name, args, returnType, displaySig || '', modifiers as Modifier[]);\n }\n}\n"]}
1
+ {"version":3,"sources":["function-declaration.ts"],"names":["FunctionDeclaration","predicate","node","kind","ts","SyntaxKind","getIdentifiers","funcDec","ExportIdentifier","getName","getSourceFile","fileName","name","getText","transform","context"],"mappings":";;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;AAC5DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,mBAAnC;AACD,GAH2D,CAK5D;;;AACoB,QAAdM,cAAc,CAACC,OAAD,EAAmC;AACrD,WAAO,CAAC,KAAIC,oCAAJ,EAAqB,KAAKC,OAAL,CAAaF,OAAb,CAArB,EAA4CA,OAAO,CAACG,aAAR,GAAwBC,QAApE,CAAD,CAAP;AACD;;AAEOF,EAAAA,OAAO,CAACF,OAAD,EAAmC;AAAA;;AAChD,WAAO,kBAAAA,OAAO,CAACK,IAAR,gEAAcC,OAAd,OAA2B,EAAlC;AACD;;AAEc,QAATC,SAAS,CAACP,OAAD,EAAmCQ,OAAnC,EAAyF;AACtG,WAAO,8CAAqBR,OAArB,EAA8BQ,OAA9B,CAAP;AACD;;AAhB2D","sourcesContent":["import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, FunctionDeclaration as FunctionDeclarationNode } from 'typescript';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\nimport { toFunctionLikeSchema } from './utils/to-function-schema';\n\nexport class FunctionDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.FunctionDeclaration;\n }\n\n // need to check for anonymous functions assigned for vars, const and let.\n async getIdentifiers(funcDec: FunctionDeclarationNode) {\n return [new ExportIdentifier(this.getName(funcDec), funcDec.getSourceFile().fileName)];\n }\n\n private getName(funcDec: FunctionDeclarationNode) {\n return funcDec.name?.getText() || '';\n }\n\n async transform(funcDec: FunctionDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n return toFunctionLikeSchema(funcDec, context);\n }\n}\n"]}
@@ -9,16 +9,6 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.MethodDeclaration = void 0;
11
11
 
12
- function _semanticsEntities() {
13
- const data = require("@teambit/semantics.entities.semantic-schema");
14
-
15
- _semanticsEntities = function () {
16
- return data;
17
- };
18
-
19
- return data;
20
- }
21
-
22
12
  function _typescript() {
23
13
  const data = _interopRequireDefault(require("typescript"));
24
14
 
@@ -39,20 +29,10 @@ function _exportIdentifier() {
39
29
  return data;
40
30
  }
41
31
 
42
- function _parseTypeFromQuickInfo() {
43
- const data = require("./utils/parse-type-from-quick-info");
44
-
45
- _parseTypeFromQuickInfo = function () {
46
- return data;
47
- };
48
-
49
- return data;
50
- }
51
-
52
- function _getParams() {
53
- const data = require("./utils/get-params");
32
+ function _toFunctionSchema() {
33
+ const data = require("./utils/to-function-schema");
54
34
 
55
- _getParams = function () {
35
+ _toFunctionSchema = function () {
56
36
  return data;
57
37
  };
58
38
 
@@ -75,16 +55,7 @@ class MethodDeclaration {
75
55
  }
76
56
 
77
57
  async transform(methodDec, context) {
78
- var _info$body, _methodDec$modifiers;
79
-
80
- const name = this.getName(methodDec);
81
- const info = await context.getQuickInfo(methodDec.name);
82
- const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
83
- const returnTypeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
84
- const params = await (0, _getParams().getParams)(methodDec.parameters, context);
85
- const modifiers = ((_methodDec$modifiers = methodDec.modifiers) === null || _methodDec$modifiers === void 0 ? void 0 : _methodDec$modifiers.map(modifier => modifier.getText())) || [];
86
- const returnType = await context.resolveType(methodDec, returnTypeStr);
87
- return new (_semanticsEntities().FunctionSchema)(name, params, returnType, displaySig || '', modifiers);
58
+ return (0, _toFunctionSchema().toFunctionLikeSchema)(methodDec, context);
88
59
  }
89
60
 
90
61
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["method-declaration.ts"],"names":["MethodDeclaration","predicate","node","kind","ts","SyntaxKind","getIdentifiers","funcDec","ExportIdentifier","getName","getSourceFile","fileName","name","getText","transform","methodDec","context","info","getQuickInfo","displaySig","body","displayString","returnTypeStr","params","parameters","modifiers","map","modifier","returnType","resolveType","FunctionSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,iBAAN,CAAqD;AAC1DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,iBAAnC;AACD;;AAEmB,QAAdM,cAAc,CAACC,OAAD,EAAiC;AACnD,WAAO,CAAC,KAAIC,oCAAJ,EAAqB,KAAKC,OAAL,CAAaF,OAAb,CAArB,EAA4CA,OAAO,CAACG,aAAR,GAAwBC,QAApE,CAAD,CAAP;AACD;;AAEOF,EAAAA,OAAO,CAACF,OAAD,EAAiC;AAAA;;AAC9C,WAAO,kBAAAA,OAAO,CAACK,IAAR,gEAAcC,OAAd,OAA2B,EAAlC;AACD;;AAEc,QAATC,SAAS,CAACC,SAAD,EAAmCC,OAAnC,EAAyF;AAAA;;AACtG,UAAMJ,IAAI,GAAG,KAAKH,OAAL,CAAaM,SAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,SAAS,CAACH,IAA/B,CAAnB;AACA,UAAMO,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,UAAMC,aAAa,GAAG,sDAAuBL,IAAvB,CAAtB;AACA,UAAMM,MAAM,GAAG,MAAM,4BAAUR,SAAS,CAACS,UAApB,EAAgCR,OAAhC,CAArB;AACA,UAAMS,SAAS,GAAG,yBAAAV,SAAS,CAACU,SAAV,8EAAqBC,GAArB,CAA0BC,QAAD,IAAcA,QAAQ,CAACd,OAAT,EAAvC,MAA8D,EAAhF;AACA,UAAMe,UAAU,GAAG,MAAMZ,OAAO,CAACa,WAAR,CAAoBd,SAApB,EAA+BO,aAA/B,CAAzB;AACA,WAAO,KAAIQ,mCAAJ,EAAmBlB,IAAnB,EAAyBW,MAAzB,EAAiCK,UAAjC,EAA6CT,UAAU,IAAI,EAA3D,EAA+DM,SAA/D,CAAP;AACD;;AAtByD","sourcesContent":["import { SchemaNode, FunctionSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, MethodDeclaration as MethodDeclarationNode } from 'typescript';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { getParams } from './utils/get-params';\n\nexport class MethodDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.MethodDeclaration;\n }\n\n async getIdentifiers(funcDec: MethodDeclarationNode) {\n return [new ExportIdentifier(this.getName(funcDec), funcDec.getSourceFile().fileName)];\n }\n\n private getName(funcDec: MethodDeclarationNode) {\n return funcDec.name?.getText() || '';\n }\n\n async transform(methodDec: MethodDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(methodDec);\n const info = await context.getQuickInfo(methodDec.name);\n const displaySig = info?.body?.displayString;\n const returnTypeStr = parseTypeFromQuickInfo(info);\n const params = await getParams(methodDec.parameters, context);\n const modifiers = methodDec.modifiers?.map((modifier) => modifier.getText()) || [];\n const returnType = await context.resolveType(methodDec, returnTypeStr);\n return new FunctionSchema(name, params, returnType, displaySig || '', modifiers as Modifier[]);\n }\n}\n"]}
1
+ {"version":3,"sources":["method-declaration.ts"],"names":["MethodDeclaration","predicate","node","kind","ts","SyntaxKind","getIdentifiers","funcDec","ExportIdentifier","getName","getSourceFile","fileName","name","getText","transform","methodDec","context"],"mappings":";;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,iBAAN,CAAqD;AAC1DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,iBAAnC;AACD;;AAEmB,QAAdM,cAAc,CAACC,OAAD,EAAiC;AACnD,WAAO,CAAC,KAAIC,oCAAJ,EAAqB,KAAKC,OAAL,CAAaF,OAAb,CAArB,EAA4CA,OAAO,CAACG,aAAR,GAAwBC,QAApE,CAAD,CAAP;AACD;;AAEOF,EAAAA,OAAO,CAACF,OAAD,EAAiC;AAAA;;AAC9C,WAAO,kBAAAA,OAAO,CAACK,IAAR,gEAAcC,OAAd,OAA2B,EAAlC;AACD;;AAEc,QAATC,SAAS,CAACC,SAAD,EAAmCC,OAAnC,EAAyF;AACtG,WAAO,8CAAqBD,SAArB,EAAgCC,OAAhC,CAAP;AACD;;AAfyD","sourcesContent":["import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, MethodDeclaration as MethodDeclarationNode } from 'typescript';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\nimport { toFunctionLikeSchema } from './utils/to-function-schema';\n\nexport class MethodDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.MethodDeclaration;\n }\n\n async getIdentifiers(funcDec: MethodDeclarationNode) {\n return [new ExportIdentifier(this.getName(funcDec), funcDec.getSourceFile().fileName)];\n }\n\n private getName(funcDec: MethodDeclarationNode) {\n return funcDec.name?.getText() || '';\n }\n\n async transform(methodDec: MethodDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n return toFunctionLikeSchema(methodDec, context);\n }\n}\n"]}
@@ -9,16 +9,6 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.MethodSignatureTransformer = void 0;
11
11
 
12
- function _semanticsEntities() {
13
- const data = require("@teambit/semantics.entities.semantic-schema");
14
-
15
- _semanticsEntities = function () {
16
- return data;
17
- };
18
-
19
- return data;
20
- }
21
-
22
12
  function _typescript() {
23
13
  const data = _interopRequireDefault(require("typescript"));
24
14
 
@@ -29,20 +19,10 @@ function _typescript() {
29
19
  return data;
30
20
  }
31
21
 
32
- function _parseTypeFromQuickInfo() {
33
- const data = require("./utils/parse-type-from-quick-info");
34
-
35
- _parseTypeFromQuickInfo = function () {
36
- return data;
37
- };
38
-
39
- return data;
40
- }
41
-
42
- function _getParams() {
43
- const data = require("./utils/get-params");
22
+ function _toFunctionSchema() {
23
+ const data = require("./utils/to-function-schema");
44
24
 
45
- _getParams = function () {
25
+ _toFunctionSchema = function () {
46
26
  return data;
47
27
  };
48
28
 
@@ -63,15 +43,7 @@ class MethodSignatureTransformer {
63
43
  }
64
44
 
65
45
  async transform(methodSig, context) {
66
- var _info$body;
67
-
68
- const name = this.getName(methodSig);
69
- const info = await context.getQuickInfo(methodSig.name);
70
- const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
71
- const returnTypeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
72
- const args = await (0, _getParams().getParams)(methodSig.parameters, context);
73
- const returnType = await context.resolveType(methodSig, returnTypeStr);
74
- return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig || '');
46
+ return (0, _toFunctionSchema().toFunctionLikeSchema)(methodSig, context);
75
47
  }
76
48
 
77
49
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["method-signature.ts"],"names":["MethodSignatureTransformer","predicate","node","kind","ts","SyntaxKind","MethodSignature","getName","name","getText","getIdentifiers","transform","methodSig","context","info","getQuickInfo","displaySig","body","displayString","returnTypeStr","args","parameters","returnType","resolveType","FunctionSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,0BAAN,CAA8D;AACnEC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,eAAnC;AACD;;AAEDC,EAAAA,OAAO,CAACL,IAAD,EAA4B;AACjC,WAAOA,IAAI,CAACM,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,GAAG;AACrB,WAAO,EAAP;AACD;;AAEc,QAATC,SAAS,CAACC,SAAD,EAAiCC,OAAjC,EAAuF;AAAA;;AACpG,UAAML,IAAI,GAAG,KAAKD,OAAL,CAAaK,SAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,SAAS,CAACJ,IAA/B,CAAnB;AACA,UAAMQ,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,UAAMC,aAAa,GAAG,sDAAuBL,IAAvB,CAAtB;AACA,UAAMM,IAAI,GAAG,MAAM,4BAAUR,SAAS,CAACS,UAApB,EAAgCR,OAAhC,CAAnB;AACA,UAAMS,UAAU,GAAG,MAAMT,OAAO,CAACU,WAAR,CAAoBX,SAApB,EAA+BO,aAA/B,CAAzB;AACA,WAAO,KAAIK,mCAAJ,EAAmBhB,IAAnB,EAAyBY,IAAzB,EAA+BE,UAA/B,EAA2CN,UAAU,IAAI,EAAzD,CAAP;AACD;;AArBkE","sourcesContent":["import { SchemaNode, FunctionSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, MethodSignature as MethodSignatureNode } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { getParams } from './utils/get-params';\n\nexport class MethodSignatureTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.MethodSignature;\n }\n\n getName(node: MethodSignatureNode) {\n return node.name.getText();\n }\n\n async getIdentifiers() {\n return [];\n }\n\n async transform(methodSig: MethodSignatureNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(methodSig);\n const info = await context.getQuickInfo(methodSig.name);\n const displaySig = info?.body?.displayString;\n const returnTypeStr = parseTypeFromQuickInfo(info);\n const args = await getParams(methodSig.parameters, context);\n const returnType = await context.resolveType(methodSig, returnTypeStr);\n return new FunctionSchema(name, args, returnType, displaySig || '');\n }\n}\n"]}
1
+ {"version":3,"sources":["method-signature.ts"],"names":["MethodSignatureTransformer","predicate","node","kind","ts","SyntaxKind","MethodSignature","getName","name","getText","getIdentifiers","transform","methodSig","context"],"mappings":";;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,0BAAN,CAA8D;AACnEC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,eAAnC;AACD;;AAEDC,EAAAA,OAAO,CAACL,IAAD,EAA4B;AACjC,WAAOA,IAAI,CAACM,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,GAAG;AACrB,WAAO,EAAP;AACD;;AAEc,QAATC,SAAS,CAACC,SAAD,EAAiCC,OAAjC,EAAuF;AACpG,WAAO,8CAAqBD,SAArB,EAAgCC,OAAhC,CAAP;AACD;;AAfkE","sourcesContent":["import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, MethodSignature as MethodSignatureNode } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { toFunctionLikeSchema } from './utils/to-function-schema';\n\nexport class MethodSignatureTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.MethodSignature;\n }\n\n getName(node: MethodSignatureNode) {\n return node.name.getText();\n }\n\n async getIdentifiers() {\n return [];\n }\n\n async transform(methodSig: MethodSignatureNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n return toFunctionLikeSchema(methodSig, context);\n }\n}\n"]}
@@ -29,20 +29,20 @@ function _typescript() {
29
29
  return data;
30
30
  }
31
31
 
32
- function _getParams() {
33
- const data = require("./utils/get-params");
32
+ function _parseTypeFromQuickInfo() {
33
+ const data = require("./utils/parse-type-from-quick-info");
34
34
 
35
- _getParams = function () {
35
+ _parseTypeFromQuickInfo = function () {
36
36
  return data;
37
37
  };
38
38
 
39
39
  return data;
40
40
  }
41
41
 
42
- function _parseTypeFromQuickInfo() {
43
- const data = require("./utils/parse-type-from-quick-info");
42
+ function _typeNodeToSchema() {
43
+ const data = require("./utils/type-node-to-schema");
44
44
 
45
- _parseTypeFromQuickInfo = function () {
45
+ _typeNodeToSchema = function () {
46
46
  return data;
47
47
  };
48
48
 
@@ -72,10 +72,7 @@ class PropertySignature {
72
72
  if (((_prop$type = prop.type) === null || _prop$type === void 0 ? void 0 : _prop$type.kind) === _typescript().default.SyntaxKind.FunctionType) {
73
73
  // e.g. `propertySig: () => void;` inside interface
74
74
  const propType = prop.type;
75
- const args = await (0, _getParams().getParams)(propType.parameters, context);
76
- const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(info);
77
- const returnType = await context.resolveType(propType, typeStr);
78
- return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig);
75
+ return (0, _typeNodeToSchema().typeNodeToSchema)(propType, context);
79
76
  }
80
77
 
81
78
  const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
@@ -1 +1 @@
1
- {"version":3,"sources":["property-signature.ts"],"names":["PropertySignature","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","transform","prop","context","info","getQuickInfo","displaySig","body","displayString","type","FunctionType","propType","args","parameters","typeStr","returnType","resolveType","FunctionSchema","VariableSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,iBAAN,CAAqD;AAC1DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,iBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAA8B;AACnC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,GAAG;AACrB,WAAO,EAAP;AACD;;AAEc,QAATC,SAAS,CAACC,IAAD,EAA8BC,OAA9B,EAAoF;AAAA;;AACjG,UAAML,IAAI,GAAG,KAAKD,OAAL,CAAaK,IAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,IAAI,CAACJ,IAA1B,CAAnB;AACA,UAAMQ,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;;AACA,QAAI,eAAAN,IAAI,CAACO,IAAL,0DAAWf,IAAX,MAAoBC,sBAAGC,UAAH,CAAcc,YAAtC,EAAoD;AAClD;AACA,YAAMC,QAAQ,GAAGT,IAAI,CAACO,IAAtB;AACA,YAAMG,IAAI,GAAG,MAAM,4BAAUD,QAAQ,CAACE,UAAnB,EAA+BV,OAA/B,CAAnB;AACA,YAAMW,OAAO,GAAG,4DAA6BV,IAA7B,CAAhB;AACA,YAAMW,UAAU,GAAG,MAAMZ,OAAO,CAACa,WAAR,CAAoBL,QAApB,EAA8BG,OAA9B,CAAzB;AACA,aAAO,KAAIG,mCAAJ,EAAmBnB,IAAnB,EAAyBc,IAAzB,EAA+BG,UAA/B,EAA2CT,UAA3C,CAAP;AACD;;AACD,UAAMQ,OAAO,GAAG,sDAAuBV,IAAvB,CAAhB;AACA,UAAMK,IAAI,GAAG,MAAMN,OAAO,CAACa,WAAR,CAAoBd,IAApB,EAA0BY,OAA1B,CAAnB;AACA,WAAO,KAAII,mCAAJ,EAAmBpB,IAAnB,EAAyBQ,UAAzB,EAAqCG,IAArC,CAAP;AACD;;AA5ByD","sourcesContent":["import { FunctionSchema, SchemaNode, VariableSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { FunctionTypeNode, Node, PropertySignature as PropertySignatureNode } from 'typescript';\nimport { getParams } from './utils/get-params';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class PropertySignature implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.PropertySignature;\n }\n\n getName(node: PropertySignatureNode) {\n return node.name.getText();\n }\n\n async getIdentifiers() {\n return [];\n }\n\n async transform(prop: PropertySignatureNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(prop);\n const info = await context.getQuickInfo(prop.name);\n const displaySig = info?.body?.displayString || '';\n if (prop.type?.kind === ts.SyntaxKind.FunctionType) {\n // e.g. `propertySig: () => void;` inside interface\n const propType = prop.type as FunctionTypeNode;\n const args = await getParams(propType.parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(propType, typeStr);\n return new FunctionSchema(name, args, returnType, displaySig);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(prop, typeStr);\n return new VariableSchema(name, displaySig, type);\n }\n}\n"]}
1
+ {"version":3,"sources":["property-signature.ts"],"names":["PropertySignature","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","transform","prop","context","info","getQuickInfo","displaySig","body","displayString","type","FunctionType","propType","typeStr","resolveType","VariableSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,iBAAN,CAAqD;AAC1DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,iBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAA8B;AACnC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,GAAG;AACrB,WAAO,EAAP;AACD;;AAEc,QAATC,SAAS,CAACC,IAAD,EAA8BC,OAA9B,EAAoF;AAAA;;AACjG,UAAML,IAAI,GAAG,KAAKD,OAAL,CAAaK,IAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,IAAI,CAACJ,IAA1B,CAAnB;AACA,UAAMQ,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;;AACA,QAAI,eAAAN,IAAI,CAACO,IAAL,0DAAWf,IAAX,MAAoBC,sBAAGC,UAAH,CAAcc,YAAtC,EAAoD;AAClD;AACA,YAAMC,QAAQ,GAAGT,IAAI,CAACO,IAAtB;AACA,aAAO,0CAAiBE,QAAjB,EAA2BR,OAA3B,CAAP;AACD;;AACD,UAAMS,OAAO,GAAG,sDAAuBR,IAAvB,CAAhB;AACA,UAAMK,IAAI,GAAG,MAAMN,OAAO,CAACU,WAAR,CAAoBX,IAApB,EAA0BU,OAA1B,CAAnB;AACA,WAAO,KAAIE,mCAAJ,EAAmBhB,IAAnB,EAAyBQ,UAAzB,EAAqCG,IAArC,CAAP;AACD;;AAzByD","sourcesContent":["import { SchemaNode, VariableSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { FunctionTypeNode, Node, PropertySignature as PropertySignatureNode } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { typeNodeToSchema } from './utils/type-node-to-schema';\n\nexport class PropertySignature implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.PropertySignature;\n }\n\n getName(node: PropertySignatureNode) {\n return node.name.getText();\n }\n\n async getIdentifiers() {\n return [];\n }\n\n async transform(prop: PropertySignatureNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(prop);\n const info = await context.getQuickInfo(prop.name);\n const displaySig = info?.body?.displayString || '';\n if (prop.type?.kind === ts.SyntaxKind.FunctionType) {\n // e.g. `propertySig: () => void;` inside interface\n const propType = prop.type as FunctionTypeNode;\n return typeNodeToSchema(propType, context);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(prop, typeStr);\n return new VariableSchema(name, displaySig, type);\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { SignatureDeclaration } from 'typescript';
2
+ import { FunctionLikeSchema } from '@teambit/semantics.entities.semantic-schema';
3
+ import { SchemaExtractorContext } from '../../schema-extractor-context';
4
+ export declare function toFunctionLikeSchema(node: SignatureDeclaration, context: SchemaExtractorContext): Promise<FunctionLikeSchema>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.promise.js");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.toFunctionLikeSchema = toFunctionLikeSchema;
9
+
10
+ function _semanticsEntities() {
11
+ const data = require("@teambit/semantics.entities.semantic-schema");
12
+
13
+ _semanticsEntities = function () {
14
+ return data;
15
+ };
16
+
17
+ return data;
18
+ }
19
+
20
+ function _getParams() {
21
+ const data = require("./get-params");
22
+
23
+ _getParams = function () {
24
+ return data;
25
+ };
26
+
27
+ return data;
28
+ }
29
+
30
+ function _parseTypeFromQuickInfo() {
31
+ const data = require("./parse-type-from-quick-info");
32
+
33
+ _parseTypeFromQuickInfo = function () {
34
+ return data;
35
+ };
36
+
37
+ return data;
38
+ }
39
+
40
+ async function toFunctionLikeSchema(node, context) {
41
+ var _node$name, _info$body, _node$modifiers;
42
+
43
+ const name = ((_node$name = node.name) === null || _node$name === void 0 ? void 0 : _node$name.getText()) || ''; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
44
+
45
+ const info = await context.getQuickInfo(node.name);
46
+ const returnTypeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
47
+ const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
48
+ const args = await (0, _getParams().getParams)(node.parameters, context);
49
+ const returnType = await context.resolveType(node, returnTypeStr);
50
+ const modifiers = ((_node$modifiers = node.modifiers) === null || _node$modifiers === void 0 ? void 0 : _node$modifiers.map(modifier => modifier.getText())) || [];
51
+ const location = context.getLocation(node);
52
+ return new (_semanticsEntities().FunctionLikeSchema)(name, args, returnType, displaySig || '', location, modifiers);
53
+ }
54
+
55
+ //# sourceMappingURL=to-function-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["to-function-schema.ts"],"names":["toFunctionLikeSchema","node","context","name","getText","info","getQuickInfo","returnTypeStr","displaySig","body","displayString","args","parameters","returnType","resolveType","modifiers","map","modifier","location","getLocation","FunctionLikeSchema"],"mappings":";;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,eAAeA,oBAAf,CAAoCC,IAApC,EAAgEC,OAAhE,EAAiG;AAAA;;AACtG,QAAMC,IAAI,GAAG,eAAAF,IAAI,CAACE,IAAL,0DAAWC,OAAX,OAAwB,EAArC,CADsG,CAEtG;;AACA,QAAMC,IAAI,GAAG,MAAMH,OAAO,CAACI,YAAR,CAAqBL,IAAI,CAACE,IAA1B,CAAnB;AACA,QAAMI,aAAa,GAAG,sDAAuBF,IAAvB,CAAtB;AACA,QAAMG,UAAU,GAAGH,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEI,IAAT,+CAAG,WAAYC,aAA/B;AACA,QAAMC,IAAI,GAAG,MAAM,4BAAUV,IAAI,CAACW,UAAf,EAA2BV,OAA3B,CAAnB;AACA,QAAMW,UAAU,GAAG,MAAMX,OAAO,CAACY,WAAR,CAAoBb,IAApB,EAA0BM,aAA1B,CAAzB;AACA,QAAMQ,SAAS,GAAG,oBAAAd,IAAI,CAACc,SAAL,oEAAgBC,GAAhB,CAAqBC,QAAD,IAAcA,QAAQ,CAACb,OAAT,EAAlC,MAAyD,EAA3E;AACA,QAAMc,QAAQ,GAAGhB,OAAO,CAACiB,WAAR,CAAoBlB,IAApB,CAAjB;AAEA,SAAO,KAAImB,uCAAJ,EAAuBjB,IAAvB,EAA6BQ,IAA7B,EAAmCE,UAAnC,EAA+CL,UAAU,IAAI,EAA7D,EAAiEU,QAAjE,EAA2EH,SAA3E,CAAP;AACD","sourcesContent":["import { SignatureDeclaration } from 'typescript';\nimport { FunctionLikeSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\n\nexport async function toFunctionLikeSchema(node: SignatureDeclaration, context: SchemaExtractorContext) {\n const name = node.name?.getText() || '';\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const info = await context.getQuickInfo(node.name!);\n const returnTypeStr = parseTypeFromQuickInfo(info);\n const displaySig = info?.body?.displayString;\n const args = await getParams(node.parameters, context);\n const returnType = await context.resolveType(node, returnTypeStr);\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const location = context.getLocation(node);\n\n return new FunctionLikeSchema(name, args, returnType, displaySig || '', location, modifiers as Modifier[]);\n}\n"]}
@@ -196,7 +196,8 @@ async function functionType(node, context) {
196
196
  const name = ((_node$name = node.name) === null || _node$name === void 0 ? void 0 : _node$name.getText()) || '';
197
197
  const params = await (0, _getParams().getParams)(node.parameters, context);
198
198
  const returnType = await typeNodeToSchema(node.type, context);
199
- return new (_semanticsEntities().FunctionSchema)(name, params, returnType, '');
199
+ const location = context.getLocation(node);
200
+ return new (_semanticsEntities().FunctionLikeSchema)(name, params, returnType, '', location);
200
201
  }
201
202
  /**
202
203
  * e.g. `typeof Foo`
@@ -1 +1 @@
1
- {"version":3,"sources":["type-node-to-schema.ts"],"names":["typeNodeToSchema","node","context","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","TypePredicate","ConstructorType","NamedTupleMember","OptionalType","RestType","ConditionalType","InferType","ParenthesizedType","ThisType","IndexedAccessType","MappedType","TemplateLiteralType","TemplateLiteralTypeSpan","ImportType","ExpressionWithTypeArguments","JSDocTypeExpression","JSDocAllType","JSDocUnknownType","JSDocNonNullableType","JSDocNullableType","JSDocOptionalType","JSDocFunctionType","JSDocVariadicType","JSDocNamepathType","JSDocSignature","JSDocTypeLiteral","Error","AnyKeyword","BigIntKeyword","BooleanKeyword","IntrinsicKeyword","NeverKeyword","NumberKeyword","ObjectKeyword","StringKeyword","SymbolKeyword","UndefinedKeyword","UnknownKeyword","VoidKeyword","types","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","computeSchema","TypeLiteralSchema","name","typeName","resolveType","params","parameters","returnType","FunctionSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema"],"mappings":"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","sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n} from 'typescript';\nimport {\n SchemaNode,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n FunctionSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\n\n// eslint-disable-next-line complexity\nexport async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (isKeywordType(node)) {\n return new KeywordTypeSchema(node.getText());\n }\n switch (node.kind) {\n case SyntaxKind.IntersectionType:\n return intersectionType(node as IntersectionTypeNode, context);\n case SyntaxKind.UnionType:\n return unionType(node as UnionTypeNode, context);\n case SyntaxKind.TypeReference:\n return typeReference(node as TypeReferenceNode, context);\n case SyntaxKind.TypeLiteral:\n return typeLiteral(node as TypeLiteralNode, context);\n case SyntaxKind.LiteralType: // e.g. string/boolean\n return new LiteralTypeSchema(node.getText());\n case SyntaxKind.FunctionType:\n return functionType(node as FunctionTypeNode, context);\n case SyntaxKind.TypeQuery:\n return typeQuery(node as TypeQueryNode, context);\n case SyntaxKind.ArrayType:\n return arrayType(node as ArrayTypeNode, context);\n case SyntaxKind.TypeOperator:\n return typeOperator(node as TypeOperatorNode, context);\n case SyntaxKind.TupleType:\n return tupleType(node as TupleTypeNode, context);\n case SyntaxKind.TypePredicate:\n case SyntaxKind.ConstructorType:\n case SyntaxKind.NamedTupleMember:\n case SyntaxKind.OptionalType:\n case SyntaxKind.RestType:\n case SyntaxKind.ConditionalType:\n case SyntaxKind.InferType:\n case SyntaxKind.ParenthesizedType:\n case SyntaxKind.ThisType:\n case SyntaxKind.IndexedAccessType:\n case SyntaxKind.MappedType:\n case SyntaxKind.TemplateLiteralType:\n case SyntaxKind.TemplateLiteralTypeSpan:\n case SyntaxKind.ImportType:\n case SyntaxKind.ExpressionWithTypeArguments:\n case SyntaxKind.JSDocTypeExpression:\n case SyntaxKind.JSDocAllType:\n case SyntaxKind.JSDocUnknownType:\n case SyntaxKind.JSDocNonNullableType:\n case SyntaxKind.JSDocNullableType:\n case SyntaxKind.JSDocOptionalType:\n case SyntaxKind.JSDocFunctionType:\n case SyntaxKind.JSDocVariadicType:\n case SyntaxKind.JSDocNamepathType:\n case SyntaxKind.JSDocSignature:\n case SyntaxKind.JSDocTypeLiteral:\n throw new Error(`TypeNode \"${SyntaxKind[node.kind]}\" was not implemented yet.\ncontext: ${node.getText()}`);\n default:\n throw new Error(`Node \"${SyntaxKind[node.kind]}\" is not a TypeNode.\ncontext: ${node.getText()}`);\n }\n}\n\n/**\n * whether it's kind of `ts.KeywordTypeSyntaxKind`\n */\nfunction isKeywordType(node: TypeNode): node is KeywordTypeNode {\n switch (node.kind) {\n case SyntaxKind.AnyKeyword:\n case SyntaxKind.BigIntKeyword:\n case SyntaxKind.BooleanKeyword:\n case SyntaxKind.IntrinsicKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.NumberKeyword:\n case SyntaxKind.ObjectKeyword:\n case SyntaxKind.StringKeyword:\n case SyntaxKind.SymbolKeyword:\n case SyntaxKind.UndefinedKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.VoidKeyword:\n return true;\n default:\n return false;\n }\n}\n\nasync function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n return new TypeIntersectionSchema(types);\n}\n\nasync function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n return new TypeUnionSchema(types);\n}\n\n/**\n * not to be confused with \"LiteralType\", which is string/boolean/null.\n * this \"TypeLiteral\" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.\n */\nasync function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {\n const members = await pMapSeries(node.members, async (member) => {\n const typeSchema = await context.computeSchema(member);\n return typeSchema;\n });\n return new TypeLiteralSchema(members);\n}\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 */\nasync function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n const type = await context.resolveType(node, name, false);\n return type;\n}\n\nasync function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = node.name?.getText() || '';\n const params = await getParams(node.parameters, context);\n const returnType = await typeNodeToSchema(node.type, context);\n return new FunctionSchema(name, params, returnType, '');\n}\n\n/**\n * e.g. `typeof Foo`\n */\nasync function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n return new TypeQuerySchema(type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n return new TypeArraySchema(type);\n}\n\n/**\n * e.g. keyof typeof Foo\n */\nasync function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {\n const operatorName = getOperatorName(node.operator);\n const type = await typeNodeToSchema(node.type, context);\n return new TypeOperatorSchema(operatorName, type);\n}\n\nfunction getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {\n switch (operator) {\n case SyntaxKind.KeyOfKeyword:\n return 'keyof';\n case SyntaxKind.UniqueKeyword:\n return 'unique';\n case SyntaxKind.ReadonlyKeyword:\n return 'readonly';\n default:\n throw new Error(`getOperatorName: unable to find operator name for ${operator}`);\n }\n}\n\nasync function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {\n const elements = await pMapSeries(node.elements, async (elem) => {\n const typeSchema = await typeNodeToSchema(elem, context);\n return typeSchema;\n });\n return new TupleTypeSchema(elements);\n}\n"]}
1
+ {"version":3,"sources":["type-node-to-schema.ts"],"names":["typeNodeToSchema","node","context","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","TypePredicate","ConstructorType","NamedTupleMember","OptionalType","RestType","ConditionalType","InferType","ParenthesizedType","ThisType","IndexedAccessType","MappedType","TemplateLiteralType","TemplateLiteralTypeSpan","ImportType","ExpressionWithTypeArguments","JSDocTypeExpression","JSDocAllType","JSDocUnknownType","JSDocNonNullableType","JSDocNullableType","JSDocOptionalType","JSDocFunctionType","JSDocVariadicType","JSDocNamepathType","JSDocSignature","JSDocTypeLiteral","Error","AnyKeyword","BigIntKeyword","BooleanKeyword","IntrinsicKeyword","NeverKeyword","NumberKeyword","ObjectKeyword","StringKeyword","SymbolKeyword","UndefinedKeyword","UnknownKeyword","VoidKeyword","types","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","computeSchema","TypeLiteralSchema","name","typeName","resolveType","params","parameters","returnType","location","getLocation","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema"],"mappings":"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","sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n} from 'typescript';\nimport {\n SchemaNode,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\n\n// eslint-disable-next-line complexity\nexport async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (isKeywordType(node)) {\n return new KeywordTypeSchema(node.getText());\n }\n switch (node.kind) {\n case SyntaxKind.IntersectionType:\n return intersectionType(node as IntersectionTypeNode, context);\n case SyntaxKind.UnionType:\n return unionType(node as UnionTypeNode, context);\n case SyntaxKind.TypeReference:\n return typeReference(node as TypeReferenceNode, context);\n case SyntaxKind.TypeLiteral:\n return typeLiteral(node as TypeLiteralNode, context);\n case SyntaxKind.LiteralType: // e.g. string/boolean\n return new LiteralTypeSchema(node.getText());\n case SyntaxKind.FunctionType:\n return functionType(node as FunctionTypeNode, context);\n case SyntaxKind.TypeQuery:\n return typeQuery(node as TypeQueryNode, context);\n case SyntaxKind.ArrayType:\n return arrayType(node as ArrayTypeNode, context);\n case SyntaxKind.TypeOperator:\n return typeOperator(node as TypeOperatorNode, context);\n case SyntaxKind.TupleType:\n return tupleType(node as TupleTypeNode, context);\n case SyntaxKind.TypePredicate:\n case SyntaxKind.ConstructorType:\n case SyntaxKind.NamedTupleMember:\n case SyntaxKind.OptionalType:\n case SyntaxKind.RestType:\n case SyntaxKind.ConditionalType:\n case SyntaxKind.InferType:\n case SyntaxKind.ParenthesizedType:\n case SyntaxKind.ThisType:\n case SyntaxKind.IndexedAccessType:\n case SyntaxKind.MappedType:\n case SyntaxKind.TemplateLiteralType:\n case SyntaxKind.TemplateLiteralTypeSpan:\n case SyntaxKind.ImportType:\n case SyntaxKind.ExpressionWithTypeArguments:\n case SyntaxKind.JSDocTypeExpression:\n case SyntaxKind.JSDocAllType:\n case SyntaxKind.JSDocUnknownType:\n case SyntaxKind.JSDocNonNullableType:\n case SyntaxKind.JSDocNullableType:\n case SyntaxKind.JSDocOptionalType:\n case SyntaxKind.JSDocFunctionType:\n case SyntaxKind.JSDocVariadicType:\n case SyntaxKind.JSDocNamepathType:\n case SyntaxKind.JSDocSignature:\n case SyntaxKind.JSDocTypeLiteral:\n throw new Error(`TypeNode \"${SyntaxKind[node.kind]}\" was not implemented yet.\ncontext: ${node.getText()}`);\n default:\n throw new Error(`Node \"${SyntaxKind[node.kind]}\" is not a TypeNode.\ncontext: ${node.getText()}`);\n }\n}\n\n/**\n * whether it's kind of `ts.KeywordTypeSyntaxKind`\n */\nfunction isKeywordType(node: TypeNode): node is KeywordTypeNode {\n switch (node.kind) {\n case SyntaxKind.AnyKeyword:\n case SyntaxKind.BigIntKeyword:\n case SyntaxKind.BooleanKeyword:\n case SyntaxKind.IntrinsicKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.NumberKeyword:\n case SyntaxKind.ObjectKeyword:\n case SyntaxKind.StringKeyword:\n case SyntaxKind.SymbolKeyword:\n case SyntaxKind.UndefinedKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.VoidKeyword:\n return true;\n default:\n return false;\n }\n}\n\nasync function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n return new TypeIntersectionSchema(types);\n}\n\nasync function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n return new TypeUnionSchema(types);\n}\n\n/**\n * not to be confused with \"LiteralType\", which is string/boolean/null.\n * this \"TypeLiteral\" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.\n */\nasync function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {\n const members = await pMapSeries(node.members, async (member) => {\n const typeSchema = await context.computeSchema(member);\n return typeSchema;\n });\n return new TypeLiteralSchema(members);\n}\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 */\nasync function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n const type = await context.resolveType(node, name, false);\n return type;\n}\n\nasync function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = node.name?.getText() || '';\n const params = await getParams(node.parameters, context);\n const returnType = await typeNodeToSchema(node.type, context);\n const location = context.getLocation(node);\n return new FunctionLikeSchema(name, params, returnType, '', location);\n}\n\n/**\n * e.g. `typeof Foo`\n */\nasync function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n return new TypeQuerySchema(type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n return new TypeArraySchema(type);\n}\n\n/**\n * e.g. keyof typeof Foo\n */\nasync function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {\n const operatorName = getOperatorName(node.operator);\n const type = await typeNodeToSchema(node.type, context);\n return new TypeOperatorSchema(operatorName, type);\n}\n\nfunction getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {\n switch (operator) {\n case SyntaxKind.KeyOfKeyword:\n return 'keyof';\n case SyntaxKind.UniqueKeyword:\n return 'unique';\n case SyntaxKind.ReadonlyKeyword:\n return 'readonly';\n default:\n throw new Error(`getOperatorName: unable to find operator name for ${operator}`);\n }\n}\n\nasync function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {\n const elements = await pMapSeries(node.elements, async (elem) => {\n const typeSchema = await typeNodeToSchema(elem, context);\n return typeSchema;\n });\n return new TupleTypeSchema(elements);\n}\n"]}
@@ -83,7 +83,8 @@ class VariableDeclaration {
83
83
  const args = await (0, _getParams().getParams)(varDec.initializer.parameters, context);
84
84
  const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(info);
85
85
  const returnType = await context.resolveType(varDec, typeStr);
86
- return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig);
86
+ const location = context.getLocation(varDec);
87
+ return new (_semanticsEntities().FunctionLikeSchema)(name, args, returnType, displaySig, location);
87
88
  }
88
89
 
89
90
  const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
@@ -1 +1 @@
1
- {"version":3,"sources":["variable-declaration.ts"],"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","initializer","ArrowFunction","args","parameters","typeStr","returnType","resolveType","FunctionSchema","type","VariableSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;AAC5DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,mBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAAgC;AACrC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,CAACP,IAAD,EAAgC;AAClD,WAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;AACD;;AAEc,QAATC,SAAS,CAACC,MAAD,EAAkCC,OAAlC,EAAwF;AAAA;;AACrG,UAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,MAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,MAAM,CAACP,IAA5B,CAAnB;AACA,UAAMW,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;;AACA,QAAI,wBAAAN,MAAM,CAACO,WAAP,4EAAoBlB,IAApB,MAA6BC,sBAAGC,UAAH,CAAciB,aAA/C,EAA8D;AAC5D,YAAMC,IAAI,GAAG,MAAM,4BAAWT,MAAM,CAACO,WAAR,CAAsCG,UAAhD,EAA4DT,OAA5D,CAAnB;AACA,YAAMU,OAAO,GAAG,4DAA6BT,IAA7B,CAAhB;AACA,YAAMU,UAAU,GAAG,MAAMX,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAzB;AACA,aAAO,KAAIG,mCAAJ,EAAmBrB,IAAnB,EAAyBgB,IAAzB,EAA+BG,UAA/B,EAA2CR,UAA3C,CAAP;AACD;;AACD,UAAMO,OAAO,GAAG,sDAAuBT,IAAvB,CAAhB;AACA,UAAMa,IAAI,GAAG,MAAMd,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAnB;AACA,WAAO,KAAIK,mCAAJ,EAAmBvB,IAAnB,EAAyBW,UAAzB,EAAqCW,IAArC,CAAP;AACD;;AA1B2D","sourcesContent":["import { SchemaNode, VariableSchema, FunctionSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionSchema(name, args, returnType, displaySig);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableSchema(name, displaySig, type);\n }\n}\n"]}
1
+ {"version":3,"sources":["variable-declaration.ts"],"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","initializer","ArrowFunction","args","parameters","typeStr","returnType","resolveType","location","getLocation","FunctionLikeSchema","type","VariableSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;AAC5DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,mBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAAgC;AACrC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,CAACP,IAAD,EAAgC;AAClD,WAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;AACD;;AAEc,QAATC,SAAS,CAACC,MAAD,EAAkCC,OAAlC,EAAwF;AAAA;;AACrG,UAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,MAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,MAAM,CAACP,IAA5B,CAAnB;AACA,UAAMW,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;;AACA,QAAI,wBAAAN,MAAM,CAACO,WAAP,4EAAoBlB,IAApB,MAA6BC,sBAAGC,UAAH,CAAciB,aAA/C,EAA8D;AAC5D,YAAMC,IAAI,GAAG,MAAM,4BAAWT,MAAM,CAACO,WAAR,CAAsCG,UAAhD,EAA4DT,OAA5D,CAAnB;AACA,YAAMU,OAAO,GAAG,4DAA6BT,IAA7B,CAAhB;AACA,YAAMU,UAAU,GAAG,MAAMX,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAzB;AACA,YAAMG,QAAQ,GAAGb,OAAO,CAACc,WAAR,CAAoBf,MAApB,CAAjB;AACA,aAAO,KAAIgB,uCAAJ,EAAuBvB,IAAvB,EAA6BgB,IAA7B,EAAmCG,UAAnC,EAA+CR,UAA/C,EAA2DU,QAA3D,CAAP;AACD;;AACD,UAAMH,OAAO,GAAG,sDAAuBT,IAAvB,CAAhB;AACA,UAAMe,IAAI,GAAG,MAAMhB,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAnB;AACA,WAAO,KAAIO,mCAAJ,EAAmBzB,IAAnB,EAAyBW,UAAzB,EAAqCa,IAArC,CAAP;AACD;;AA3B2D","sourcesContent":["import { SchemaNode, VariableSchema, FunctionLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n const location = context.getLocation(varDec);\n return new FunctionLikeSchema(name, args, returnType, displaySig, location);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableSchema(name, displaySig, type);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/typescript",
3
- "version": "0.0.731",
3
+ "version": "0.0.734",
4
4
  "homepage": "https://bit.dev/teambit/typescript/typescript",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.typescript",
8
8
  "name": "typescript",
9
- "version": "0.0.731"
9
+ "version": "0.0.734"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -14,24 +14,24 @@
14
14
  "typescript": "4.4.2",
15
15
  "fs-extra": "10.0.0",
16
16
  "p-map-series": "2.1.0",
17
- "chalk": "4.1.2",
17
+ "chalk": "2.4.2",
18
18
  "@babel/runtime": "7.12.18",
19
19
  "core-js": "^3.0.0",
20
20
  "@teambit/harmony": "0.3.3",
21
- "@teambit/compiler": "0.0.731",
21
+ "@teambit/compiler": "0.0.734",
22
22
  "@teambit/typescript.modules.ts-config-mutator": "0.0.68",
23
- "@teambit/component": "0.0.731",
24
- "@teambit/semantics.entities.semantic-schema": "0.0.9",
23
+ "@teambit/component": "0.0.734",
24
+ "@teambit/semantics.entities.semantic-schema": "0.0.10",
25
25
  "@teambit/ts-server": "0.0.32",
26
- "@teambit/aspect-loader": "0.0.731",
26
+ "@teambit/aspect-loader": "0.0.734",
27
27
  "@teambit/bit-error": "0.0.394",
28
- "@teambit/builder": "0.0.731",
29
- "@teambit/isolator": "0.0.731",
30
- "@teambit/logger": "0.0.580",
31
- "@teambit/schema": "0.0.731",
32
- "@teambit/cli": "0.0.488",
33
- "@teambit/pkg": "0.0.731",
34
- "@teambit/workspace": "0.0.731"
28
+ "@teambit/builder": "0.0.734",
29
+ "@teambit/isolator": "0.0.734",
30
+ "@teambit/logger": "0.0.582",
31
+ "@teambit/schema": "0.0.734",
32
+ "@teambit/cli": "0.0.490",
33
+ "@teambit/pkg": "0.0.734",
34
+ "@teambit/workspace": "0.0.734"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/lodash": "4.14.165",
@@ -47,7 +47,7 @@
47
47
  "@teambit/typescript.aspect-docs.typescript": "0.0.137"
48
48
  },
49
49
  "peerDependencies": {
50
- "@teambit/legacy": "1.0.268",
50
+ "@teambit/legacy": "1.0.270",
51
51
  "react-dom": "^16.8.0 || ^17.0.0",
52
52
  "react": "^16.8.0 || ^17.0.0"
53
53
  },
@@ -75,7 +75,7 @@
75
75
  "react": "-"
76
76
  },
77
77
  "peerDependencies": {
78
- "@teambit/legacy": "1.0.268",
78
+ "@teambit/legacy": "1.0.270",
79
79
  "react-dom": "^16.8.0 || ^17.0.0",
80
80
  "react": "^16.8.0 || ^17.0.0"
81
81
  }
@@ -1,2 +1,2 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.731/dist/typescript.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.731/dist/typescript.docs.mdx')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.734/dist/typescript.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.734/dist/typescript.docs.mdx')]
@@ -48,6 +48,6 @@ export class ClassDecelerationTransformer implements SchemaTransformer {
48
48
  return context.computeSchema(member);
49
49
  }
50
50
  });
51
- return new ClassSchema(className, compact(members));
51
+ return new ClassSchema(className, compact(members), context.getLocation(node));
52
52
  }
53
53
  }
@@ -1,10 +1,9 @@
1
- import { SchemaNode, FunctionSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';
1
+ import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
2
2
  import ts, { Node, FunctionDeclaration as FunctionDeclarationNode } from 'typescript';
3
3
  import { SchemaExtractorContext } from '../schema-extractor-context';
4
4
  import { SchemaTransformer } from '../schema-transformer';
5
5
  import { ExportIdentifier } from '../export-identifier';
6
- import { getParams } from './utils/get-params';
7
- import { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';
6
+ import { toFunctionLikeSchema } from './utils/to-function-schema';
8
7
 
9
8
  export class FunctionDeclaration implements SchemaTransformer {
10
9
  predicate(node: Node) {
@@ -21,15 +20,6 @@ export class FunctionDeclaration implements SchemaTransformer {
21
20
  }
22
21
 
23
22
  async transform(funcDec: FunctionDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {
24
- const name = this.getName(funcDec);
25
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
26
- const info = await context.getQuickInfo(funcDec.name!);
27
- const returnTypeStr = parseTypeFromQuickInfo(info);
28
- const displaySig = info?.body?.displayString;
29
- const args = await getParams(funcDec.parameters, context);
30
- const returnType = await context.resolveType(funcDec, returnTypeStr);
31
- const modifiers = funcDec.modifiers?.map((modifier) => modifier.getText()) || [];
32
-
33
- return new FunctionSchema(name, args, returnType, displaySig || '', modifiers as Modifier[]);
23
+ return toFunctionLikeSchema(funcDec, context);
34
24
  }
35
25
  }
@@ -1,10 +1,9 @@
1
- import { SchemaNode, FunctionSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';
1
+ import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
2
2
  import ts, { Node, MethodDeclaration as MethodDeclarationNode } from 'typescript';
3
3
  import { SchemaExtractorContext } from '../schema-extractor-context';
4
4
  import { SchemaTransformer } from '../schema-transformer';
5
5
  import { ExportIdentifier } from '../export-identifier';
6
- import { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';
7
- import { getParams } from './utils/get-params';
6
+ import { toFunctionLikeSchema } from './utils/to-function-schema';
8
7
 
9
8
  export class MethodDeclaration implements SchemaTransformer {
10
9
  predicate(node: Node) {
@@ -20,13 +19,6 @@ export class MethodDeclaration implements SchemaTransformer {
20
19
  }
21
20
 
22
21
  async transform(methodDec: MethodDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {
23
- const name = this.getName(methodDec);
24
- const info = await context.getQuickInfo(methodDec.name);
25
- const displaySig = info?.body?.displayString;
26
- const returnTypeStr = parseTypeFromQuickInfo(info);
27
- const params = await getParams(methodDec.parameters, context);
28
- const modifiers = methodDec.modifiers?.map((modifier) => modifier.getText()) || [];
29
- const returnType = await context.resolveType(methodDec, returnTypeStr);
30
- return new FunctionSchema(name, params, returnType, displaySig || '', modifiers as Modifier[]);
22
+ return toFunctionLikeSchema(methodDec, context);
31
23
  }
32
24
  }
@@ -1,9 +1,8 @@
1
- import { SchemaNode, FunctionSchema } from '@teambit/semantics.entities.semantic-schema';
1
+ import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
2
2
  import ts, { Node, MethodSignature as MethodSignatureNode } from 'typescript';
3
3
  import { SchemaTransformer } from '../schema-transformer';
4
4
  import { SchemaExtractorContext } from '../schema-extractor-context';
5
- import { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';
6
- import { getParams } from './utils/get-params';
5
+ import { toFunctionLikeSchema } from './utils/to-function-schema';
7
6
 
8
7
  export class MethodSignatureTransformer implements SchemaTransformer {
9
8
  predicate(node: Node) {
@@ -19,12 +18,6 @@ export class MethodSignatureTransformer implements SchemaTransformer {
19
18
  }
20
19
 
21
20
  async transform(methodSig: MethodSignatureNode, context: SchemaExtractorContext): Promise<SchemaNode> {
22
- const name = this.getName(methodSig);
23
- const info = await context.getQuickInfo(methodSig.name);
24
- const displaySig = info?.body?.displayString;
25
- const returnTypeStr = parseTypeFromQuickInfo(info);
26
- const args = await getParams(methodSig.parameters, context);
27
- const returnType = await context.resolveType(methodSig, returnTypeStr);
28
- return new FunctionSchema(name, args, returnType, displaySig || '');
21
+ return toFunctionLikeSchema(methodSig, context);
29
22
  }
30
23
  }
@@ -1,9 +1,9 @@
1
- import { FunctionSchema, SchemaNode, VariableSchema } from '@teambit/semantics.entities.semantic-schema';
1
+ import { SchemaNode, VariableSchema } from '@teambit/semantics.entities.semantic-schema';
2
2
  import ts, { FunctionTypeNode, Node, PropertySignature as PropertySignatureNode } from 'typescript';
3
- import { getParams } from './utils/get-params';
4
3
  import { SchemaTransformer } from '../schema-transformer';
5
4
  import { SchemaExtractorContext } from '../schema-extractor-context';
6
- import { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';
5
+ import { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';
6
+ import { typeNodeToSchema } from './utils/type-node-to-schema';
7
7
 
8
8
  export class PropertySignature implements SchemaTransformer {
9
9
  predicate(node: Node) {
@@ -25,10 +25,7 @@ export class PropertySignature implements SchemaTransformer {
25
25
  if (prop.type?.kind === ts.SyntaxKind.FunctionType) {
26
26
  // e.g. `propertySig: () => void;` inside interface
27
27
  const propType = prop.type as FunctionTypeNode;
28
- const args = await getParams(propType.parameters, context);
29
- const typeStr = parseReturnTypeFromQuickInfo(info);
30
- const returnType = await context.resolveType(propType, typeStr);
31
- return new FunctionSchema(name, args, returnType, displaySig);
28
+ return typeNodeToSchema(propType, context);
32
29
  }
33
30
  const typeStr = parseTypeFromQuickInfo(info);
34
31
  const type = await context.resolveType(prop, typeStr);
@@ -0,0 +1,19 @@
1
+ import { SignatureDeclaration } from 'typescript';
2
+ import { FunctionLikeSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';
3
+ import { SchemaExtractorContext } from '../../schema-extractor-context';
4
+ import { getParams } from './get-params';
5
+ import { parseTypeFromQuickInfo } from './parse-type-from-quick-info';
6
+
7
+ export async function toFunctionLikeSchema(node: SignatureDeclaration, context: SchemaExtractorContext) {
8
+ const name = node.name?.getText() || '';
9
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
10
+ const info = await context.getQuickInfo(node.name!);
11
+ const returnTypeStr = parseTypeFromQuickInfo(info);
12
+ const displaySig = info?.body?.displayString;
13
+ const args = await getParams(node.parameters, context);
14
+ const returnType = await context.resolveType(node, returnTypeStr);
15
+ const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];
16
+ const location = context.getLocation(node);
17
+
18
+ return new FunctionLikeSchema(name, args, returnType, displaySig || '', location, modifiers as Modifier[]);
19
+ }
@@ -17,13 +17,13 @@ import {
17
17
  TypeIntersectionSchema,
18
18
  TypeUnionSchema,
19
19
  TypeLiteralSchema,
20
- FunctionSchema,
21
20
  TypeQuerySchema,
22
21
  LiteralTypeSchema,
23
22
  KeywordTypeSchema,
24
23
  TypeArraySchema,
25
24
  TypeOperatorSchema,
26
25
  TupleTypeSchema,
26
+ FunctionLikeSchema,
27
27
  } from '@teambit/semantics.entities.semantic-schema';
28
28
  import pMapSeries from 'p-map-series';
29
29
  import { SchemaExtractorContext } from '../../schema-extractor-context';
@@ -157,7 +157,8 @@ async function functionType(node: FunctionTypeNode, context: SchemaExtractorCont
157
157
  const name = node.name?.getText() || '';
158
158
  const params = await getParams(node.parameters, context);
159
159
  const returnType = await typeNodeToSchema(node.type, context);
160
- return new FunctionSchema(name, params, returnType, '');
160
+ const location = context.getLocation(node);
161
+ return new FunctionLikeSchema(name, params, returnType, '', location);
161
162
  }
162
163
 
163
164
  /**
@@ -1,4 +1,4 @@
1
- import { SchemaNode, VariableSchema, FunctionSchema } from '@teambit/semantics.entities.semantic-schema';
1
+ import { SchemaNode, VariableSchema, FunctionLikeSchema } from '@teambit/semantics.entities.semantic-schema';
2
2
  import ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';
3
3
  import { SchemaTransformer } from '../schema-transformer';
4
4
  import { SchemaExtractorContext } from '../schema-extractor-context';
@@ -27,7 +27,8 @@ export class VariableDeclaration implements SchemaTransformer {
27
27
  const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);
28
28
  const typeStr = parseReturnTypeFromQuickInfo(info);
29
29
  const returnType = await context.resolveType(varDec, typeStr);
30
- return new FunctionSchema(name, args, returnType, displaySig);
30
+ const location = context.getLocation(varDec);
31
+ return new FunctionLikeSchema(name, args, returnType, displaySig, location);
31
32
  }
32
33
  const typeStr = parseTypeFromQuickInfo(info);
33
34
  const type = await context.resolveType(varDec, typeStr);