@teambit/typescript 1.0.8 → 1.0.10

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.
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@1.0.8/dist/typescript.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@1.0.8/dist/typescript.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@1.0.10/dist/typescript.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@1.0.10/dist/typescript.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -515,7 +515,7 @@ class SchemaExtractorContext {
515
515
  async resolveTypeRef(identifier, location, isExportedFromMain) {
516
516
  var _this$identifiers$get;
517
517
  const sourceFilePath = identifier.sourceFilePath;
518
- if (!sourceFilePath || isExportedFromMain) {
518
+ if (!sourceFilePath || isExportedFromMain && (0, _isRelativeImport().default)(sourceFilePath)) {
519
519
  return new (_semanticsEntities().TypeRefSchema)(location, identifier.id, undefined, undefined, !isExportedFromMain ? this.getPathRelativeToComponent(identifier.filePath) : undefined);
520
520
  }
521
521
  if (!(0, _isRelativeImport().default)(sourceFilePath)) {
@@ -1 +1 @@
1
- {"version":3,"names":["_tsutils","data","require","_typescript","_interopRequireWildcard","_lodash","_utils","_path","_semanticsEntities","_isRelativeImport","_interopRequireDefault","_pMapSeries","_identifierList","_parseTypeFromQuickInfo","_jsdocToDocSchema","_identifier","_exportIdentifier","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","SchemaExtractorContext","mainFile","pathNormalizeToLinux","getPathRelativeToComponent","component","path","identifiers","_identifiers","internalIdentifiers","_internalIdentifiers","computed","_computed","mainFileIdentifierKey","getIdentifierKey","mainModuleIdentifiers","constructor","tsserver","extractor","componentDeps","componentRootPath","hostRootPath","formatter","Map","getComputedNodeKey","filePath","line","character","getIdentifierKeyForNode","node","getSourceFile","fileName","setComputed","location","setIdentifiers","setInternalIdentifiers","existing","uniqueIdentifiers","uniqBy","concat","k","aliasId","id","IdentifierList","findComputedSchemaByName","name","Array","from","values","filter","schema","computeSchema","getLocation","existingComputedSchema","computedSchema","transformSchemaNode","transformAPI","targetSourceFile","absolutePath","sourceFile","position","getLineAndCharacterOfPosition","getStart","getLocationAsString","basePath","filesystem","files","base","relative","getSignature","getSignatureHelp","getPath","getPosition","offset","getPositionOfLineAndCharacter","startsWith","join","getQuickInfo","err","message","Error","getQuickInfoDisplayString","_quickInfo$body","quickInfo","body","displayString","typeDefinition","getTypeDefinition","visitTypeDefinition","getPathWithoutExtension","knownExtensions","fileExtension","extname","substring","filePathWithoutExtension","includes","replace","RegExp","isAbsolute","isIndexFile","currentFilePath","indexFilePath","findFileInComponent","normalizedFilePath","pathToCompareWithoutExtension","matchingFile","find","file","currentFilePathWithoutExtension","isSameFilePath","matches","parsePackageNameFromPath","parts","split","length","lastPart","sep","pkgParts","pkgName","getSourceFileInsideComponent","parseSourceFile","getSourceFileFromNode","getFilePathByNode","def","getDefinition","firstDef","head","definitionInfo","definition","startPosition","start","pos","nodeAtPos","getTokenAtPosition","visitDefinition","getTypeRefForExternalNode","visit","parent","kind","SyntaxKind","Identifier","SourceFile","references","isExported","isFromComponent","getFileIdentifiers","exportDec","_exportDec$moduleSpec","specifierPathStr","ExportDeclaration","moduleSpecifier","getText","specifierPath","absPath","resolve","getIdentifiers","getFileExports","identifier","ExportIdentifier","isExportIdentifier","getFileInternals","computeIdentifiers","headTypeDefinition","headDefinition","unknownExactType","typeStr","isTypeStrFromQuickInfo","InferenceTypeSchema","info","type","parseTypeFromQuickInfo","isDefInSameLocation","loc","resolveType","internalRef","getTypeRef","ts","isTypeNode","definitionNode","definitionNodeName","definitionInternalRef","transformer","getTransformer","getTypeRefForExternalPath","schemaNode","apiTransformer","getAPITransformer","transform","getCompIdByPkgName","_this$componentDeps$f","dep","packageName","componentId","nodeIdentifierKey","nodeIdentifierList","mainIdentifierList","nodeIdentifier","mainIdentifier","parsedNodeIdentifier","parsedMainIdentifier","isExportedFromMain","resolveTypeRef","_this$identifiers$get","sourceFilePath","TypeRefSchema","isRelativeImport","compIdByPkg","compIdByPath","getComponentIDByPath","relativeDir","lastIndexOf","absFilePath","compFilePath","idKey","exportedIdentifier","i","jsDocToDocSchema","canHaveJsDoc","jsDocs","getJsDoc","jsDoc","comment","getTextOfJSDocComment","tags","pMapSeries","tag","tagParser","DocSchema","exports"],"sources":["schema-extractor-context.ts"],"sourcesContent":["import { TsserverClient } from '@teambit/ts-server';\nimport { getTokenAtPosition, canHaveJsDoc, getJsDoc } from 'tsutils';\nimport ts, { ExportAssignment, getTextOfJSDocComment, ExportDeclaration, Node, SyntaxKind, TypeNode } from 'typescript';\nimport { head, uniqBy } from 'lodash';\n// @ts-ignore david we should figure fix this.\n// eslint-disable-next-line import/no-unresolved\nimport protocol from 'typescript/lib/protocol';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport { resolve, sep, relative, join, isAbsolute, extname } from 'path';\nimport { Component, ComponentID } from '@teambit/component';\nimport {\n TypeRefSchema,\n SchemaNode,\n InferenceTypeSchema,\n Location,\n DocSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport isRelativeImport from '@teambit/legacy/dist/utils/is-relative-import';\nimport { ComponentDependency } from '@teambit/dependency-resolver';\nimport { Formatter } from '@teambit/formatter';\nimport pMapSeries from 'p-map-series';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { IdentifierList } from './identifier-list';\nimport { parseTypeFromQuickInfo } from './transformers/utils/parse-type-from-quick-info';\nimport { tagParser } from './transformers/utils/jsdoc-to-doc-schema';\nimport { Identifier } from './identifier';\nimport { ExportIdentifier } from './export-identifier';\n\nexport class SchemaExtractorContext {\n /**\n * list of all declared identifiers (exported and internal) by filename\n */\n private _identifiers = new Map<string, IdentifierList>();\n private _internalIdentifiers = new Map<string, IdentifierList>();\n\n /**\n * computed nodes by filename and (position (line:character))\n */\n private _computed = new Map<string, SchemaNode>();\n\n get mainFile() {\n return pathNormalizeToLinux(this.getPathRelativeToComponent(this.component.mainFile.path));\n }\n\n get identifiers() {\n return this._identifiers;\n }\n\n get internalIdentifiers() {\n return this._internalIdentifiers;\n }\n\n get computed() {\n return this._computed;\n }\n\n get mainFileIdentifierKey() {\n const mainFile = this.component.mainFile;\n return this.getIdentifierKey(mainFile.path);\n }\n\n get mainModuleIdentifiers() {\n return this.identifiers.get(this.mainFileIdentifierKey);\n }\n\n constructor(\n readonly tsserver: TsserverClient,\n readonly component: Component,\n readonly extractor: TypeScriptExtractor,\n readonly componentDeps: ComponentDependency[],\n readonly componentRootPath: string,\n readonly hostRootPath: string,\n readonly formatter?: Formatter\n ) {\n this.componentRootPath = pathNormalizeToLinux(componentRootPath);\n this.hostRootPath = pathNormalizeToLinux(hostRootPath);\n }\n\n getComputedNodeKey({ filePath, line, character }: Location) {\n return `${filePath}:${line}:${character}`;\n }\n\n getIdentifierKeyForNode(node: Node) {\n const filePath = node.getSourceFile().fileName;\n return this.getIdentifierKey(filePath);\n }\n\n getIdentifierKey(filePath: string) {\n return pathNormalizeToLinux(filePath);\n }\n\n setComputed(node: SchemaNode) {\n const { location } = node;\n const key = this.getComputedNodeKey(location);\n this.computed.set(key, node);\n }\n\n setIdentifiers(filePath: string, identifiers: IdentifierList) {\n this._identifiers.set(this.getIdentifierKey(filePath), identifiers);\n }\n\n setInternalIdentifiers(filePath: string, identifiers: IdentifierList) {\n const existing = this._internalIdentifiers.get(filePath);\n if (!existing) {\n this._internalIdentifiers.set(filePath, identifiers);\n } else {\n const uniqueIdentifiers = uniqBy(existing.identifiers.concat(identifiers.identifiers), (k) => k.aliasId || k.id);\n this._internalIdentifiers.set(filePath, new IdentifierList(uniqueIdentifiers));\n }\n }\n\n findComputedSchemaByName(name: string) {\n const computed = Array.from(this.computed.values());\n return computed.filter((schema) => schema.name === name);\n }\n\n async computeSchema(node: Node): Promise<SchemaNode> {\n const location = this.getLocation(node);\n const key = this.getComputedNodeKey(location);\n const existingComputedSchema = this.computed.get(key);\n if (existingComputedSchema) {\n return existingComputedSchema;\n }\n const computedSchema = await this.extractor.computeSchema(node, this);\n this.setComputed(computedSchema);\n return computedSchema;\n }\n\n async transformSchemaNode(schema: SchemaNode) {\n return this.extractor.transformAPI(schema, this);\n }\n\n /**\n * returns the location of a node in a source file.\n */\n getLocation(node: Node, targetSourceFile?: ts.SourceFile, absolutePath = false): Location {\n const sourceFile = targetSourceFile || node.getSourceFile();\n const filePath = absolutePath ? sourceFile.fileName : this.getPathRelativeToComponent(sourceFile.fileName);\n const position = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n const line = position.line + 1;\n const character = position.character + 1;\n\n return {\n filePath: pathNormalizeToLinux(filePath),\n line,\n character,\n };\n }\n\n getLocationAsString(node: Node): string {\n const location = this.getLocation(node);\n return `${node.getSourceFile().fileName}, line: ${location.line}, character: ${location.character}`;\n }\n\n getPathRelativeToComponent(filePath: string): string {\n const basePath = this.component.filesystem.files[0].base;\n return relative(basePath, filePath);\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\n const fileName = sourceFile.fileName;\n\n if (!fileName.startsWith(this.componentRootPath) && !fileName.startsWith(this.hostRootPath)) {\n return join(this.componentRootPath, fileName);\n }\n\n return sourceFile.fileName;\n }\n\n async getQuickInfo(node: Node) {\n const location = this.getLocation(node);\n try {\n return await this.tsserver.getQuickInfo(this.getPath(node), location);\n } catch (err: any) {\n if (err.message === 'No content available.') {\n throw new Error(\n `unable to get quickinfo data from tsserver at ${this.getPath(node)}, Ln ${location.line}, Col ${\n location.character\n }`\n );\n }\n throw err;\n }\n }\n\n async getQuickInfoDisplayString(node: Node): Promise<string> {\n const quickInfo = await this.getQuickInfo(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 getPathWithoutExtension(filePath: string) {\n const knownExtensions = ['ts', 'js', 'jsx', 'tsx'];\n const fileExtension = extname(filePath).substring(1);\n\n const filePathWithoutExtension = () => {\n if (knownExtensions.includes(fileExtension)) {\n return filePath.replace(new RegExp(`\\\\.${fileExtension}$`), '');\n }\n return filePath;\n };\n\n if (!isAbsolute(filePath)) {\n return filePathWithoutExtension();\n }\n\n if (filePath.startsWith(this.componentRootPath)) {\n return relative(this.componentRootPath, filePathWithoutExtension());\n }\n if (filePath.startsWith(this.hostRootPath)) {\n return relative(this.hostRootPath, filePathWithoutExtension());\n }\n return filePathWithoutExtension();\n }\n\n private isIndexFile(filePath: string, currentFilePath: string) {\n const indexFilePath = join(filePath, 'index');\n return pathNormalizeToLinux(indexFilePath) === currentFilePath;\n }\n\n findFileInComponent(filePath: string) {\n const normalizedFilePath = pathNormalizeToLinux(filePath);\n const pathToCompareWithoutExtension = this.getPathWithoutExtension(normalizedFilePath);\n\n const matchingFile = this.component.filesystem.files.find((file) => {\n const currentFilePath = pathNormalizeToLinux(file.path);\n const currentFilePathWithoutExtension = this.getPathWithoutExtension(currentFilePath);\n\n const isSameFilePath = pathToCompareWithoutExtension === currentFilePathWithoutExtension;\n\n const matches =\n isSameFilePath || this.isIndexFile(pathToCompareWithoutExtension, currentFilePathWithoutExtension);\n\n return matches;\n });\n return matchingFile;\n }\n\n private parsePackageNameFromPath(path: string) {\n const parts = path.split('node_modules');\n\n if (parts.length === 1) {\n return path;\n }\n\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 getSourceFileInsideComponent(filePath: string) {\n const file = this.findFileInComponent(filePath);\n return file && this.extractor.parseSourceFile(file);\n }\n\n async getSourceFileFromNode(node: Node) {\n const filePath = await this.getFilePathByNode(node);\n if (!filePath) {\n return undefined;\n }\n return this.getSourceFileInsideComponent(filePath);\n }\n\n async getFilePathByNode(node: Node) {\n const def = await this.tsserver.getDefinition(this.getPath(node), this.getLocation(node));\n\n const firstDef = head(def?.body);\n return firstDef?.file;\n }\n\n async definitionInfo(node: Node): Promise<protocol.DefinitionInfo | undefined> {\n const location = this.getLocation(node);\n const filePath = this.getPath(node);\n\n const def = await this.tsserver.getDefinition(filePath, location);\n\n const firstDef = head(def?.body);\n\n return firstDef;\n }\n\n /**\n * get a definition for a given node.\n */\n async definition(definition: protocol.DefinitionInfo): Promise<Node | undefined> {\n const startPosition = definition.start;\n const sourceFile = this.getSourceFileInsideComponent(definition.file);\n if (!sourceFile) {\n // it might be an external reference, cant get the node\n return undefined;\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 definitionInfo = await this.definitionInfo(node);\n if (!definitionInfo) {\n return undefined;\n }\n\n const definition = await this.definition(definitionInfo);\n if (!definition) {\n return this.getTypeRefForExternalNode(node);\n }\n\n return this.visit(definition.parent);\n }\n\n async visit(node: Node): Promise<SchemaNode> {\n if (node.kind === SyntaxKind.Identifier && node.parent.parent.kind !== SyntaxKind.SourceFile) {\n return this.visit(node.parent);\n }\n return this.extractor.computeSchema(node, this);\n }\n\n references() {}\n\n isExported() {}\n\n isFromComponent() {}\n\n async getFileIdentifiers(exportDec: ExportDeclaration | ExportAssignment) {\n const file = exportDec.getSourceFile().fileName;\n const specifierPathStr =\n (exportDec.kind === SyntaxKind.ExportDeclaration && exportDec.moduleSpecifier?.getText()) || '';\n const specifierPath = specifierPathStr.substring(1, specifierPathStr.length - 1);\n const absPath = resolve(file, '..', specifierPath);\n const sourceFile = this.getSourceFileInsideComponent(absPath);\n if (!sourceFile) return [];\n return this.getIdentifiers(sourceFile);\n }\n\n async getFileExports(exportDec: ExportDeclaration | ExportAssignment) {\n const identifiers = await this.getFileIdentifiers(exportDec);\n return identifiers.filter((identifier) => ExportIdentifier.isExportIdentifier(identifier));\n }\n\n async getFileInternals(exportDec: ExportDeclaration | ExportAssignment) {\n const identifiers = await this.getFileIdentifiers(exportDec);\n return identifiers.filter((identifier) => !ExportIdentifier.isExportIdentifier(identifier));\n }\n\n getIdentifiers(node: Node) {\n return this.extractor.computeIdentifiers(node, this);\n }\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 async getDefinition(node: Node) {\n const typeDefinition = await this.typeDefinition(node);\n const headTypeDefinition = head(typeDefinition?.body);\n if (headTypeDefinition) {\n return headTypeDefinition;\n }\n\n const definition = await this.tsserver.getDefinition(node.getSourceFile().fileName, this.getLocation(node));\n const headDefinition = head(definition?.body);\n\n return headDefinition;\n }\n\n // when we can't figure out the component/package/type of this node, we'll use the typeStr as the type.\n private async unknownExactType(node: Node, location: Location, typeStr = 'any', isTypeStrFromQuickInfo = true) {\n if (isTypeStrFromQuickInfo) {\n return new InferenceTypeSchema(location, typeStr || 'any');\n }\n const info = await this.getQuickInfo(node);\n const type = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(location, type, typeStr);\n }\n\n // the reason for this check is to avoid infinite loop when calling `this.jump` with the same file+location\n private isDefInSameLocation(node: Node, definition: protocol.FileSpanWithContext) {\n if (definition.file !== node.getSourceFile().fileName) {\n return false;\n }\n const loc = this.getLocation(node);\n\n return loc.line === definition.start.line && loc.character === definition.start.offset;\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 const location = this.getLocation(node);\n\n // check if internal ref with typeInfo\n const internalRef = await this.getTypeRef(typeStr, this.getIdentifierKeyForNode(node), location);\n\n if (internalRef) return internalRef;\n\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 if (node.type && ts.isTypeNode(node.type)) {\n return this.computeSchema(node.type);\n }\n\n const definition = await this.getDefinition(node);\n\n if (!definition) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n if (this.isDefInSameLocation(node, definition)) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const definitionNode = await this.definition(definition);\n\n if (!definitionNode) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const definitionNodeName = definitionNode?.getText();\n\n // check if internal ref with definition info\n const definitionInternalRef = await this.getTypeRef(\n definitionNodeName,\n this.getIdentifierKeyForNode(definitionNode),\n location\n );\n\n if (definitionInternalRef) return definitionInternalRef;\n\n const transformer = this.extractor.getTransformer(definitionNode, this);\n\n if (transformer === undefined) {\n const file = this.findFileInComponent(definition.file);\n if (!file) return this.getTypeRefForExternalPath(typeStr, definition.file, location);\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const schemaNode = await this.visit(definitionNode);\n\n if (!schemaNode) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const apiTransformer = this.extractor.getAPITransformer(schemaNode);\n return apiTransformer ? apiTransformer.transform(schemaNode, this) : schemaNode;\n }\n\n private getCompIdByPkgName(pkgName: string): ComponentID | undefined {\n return this.componentDeps.find((dep) => dep.packageName === pkgName)?.componentId;\n }\n\n async getTypeRef(typeStr: string, filePath: string, location: Location): Promise<TypeRefSchema | undefined> {\n const nodeIdentifierKey = this.getIdentifierKey(filePath);\n const mainFileIdentifierKey = this.mainFileIdentifierKey;\n\n const nodeIdentifierList = this.identifiers.get(nodeIdentifierKey);\n const mainIdentifierList = this.identifiers.get(mainFileIdentifierKey);\n\n const nodeIdentifier = new Identifier(typeStr, nodeIdentifierKey);\n const mainIdentifier = new Identifier(typeStr, mainFileIdentifierKey);\n\n const parsedNodeIdentifier = nodeIdentifierList?.find(nodeIdentifier);\n const parsedMainIdentifier = mainIdentifierList?.find(mainIdentifier);\n const isExportedFromMain = parsedMainIdentifier && ExportIdentifier.isExportIdentifier(parsedMainIdentifier);\n\n if (!parsedNodeIdentifier) return undefined;\n\n const internalRef = !isExportedFromMain;\n\n if (internalRef) {\n this.setInternalIdentifiers(filePath, new IdentifierList([parsedNodeIdentifier]));\n }\n\n return this.resolveTypeRef(parsedNodeIdentifier, location, isExportedFromMain);\n }\n\n async resolveTypeRef(\n identifier: Identifier,\n location: Location,\n isExportedFromMain?: boolean\n ): Promise<TypeRefSchema> {\n const sourceFilePath = identifier.sourceFilePath;\n\n if (!sourceFilePath || isExportedFromMain) {\n return new TypeRefSchema(\n location,\n identifier.id,\n undefined,\n undefined,\n !isExportedFromMain ? this.getPathRelativeToComponent(identifier.filePath) : undefined\n );\n }\n\n if (!isRelativeImport(sourceFilePath)) {\n const pkgName = this.parsePackageNameFromPath(sourceFilePath);\n const compIdByPkg = this.getCompIdByPkgName(pkgName);\n\n const compIdByPath = await this.extractor.getComponentIDByPath(sourceFilePath);\n\n if (compIdByPath) {\n return new TypeRefSchema(location, identifier.id, compIdByPath);\n }\n\n if (compIdByPkg) {\n return new TypeRefSchema(location, identifier.id, compIdByPkg);\n }\n\n // package without comp id\n return new TypeRefSchema(location, identifier.id, undefined, pkgName);\n }\n\n const relativeDir = identifier.filePath.substring(0, identifier.filePath.lastIndexOf('/'));\n const absFilePath = resolve(this.componentRootPath, relativeDir, sourceFilePath);\n\n const compFilePath = this.findFileInComponent(absFilePath);\n if (!compFilePath) {\n // @todo handle this better\n throw new Error(\n `cannot find file in component \\n source file path ${sourceFilePath}\\n \n identifier file path ${identifier.filePath}\\nrelative dir ${relativeDir}\\n\n absFilePath ${absFilePath}`\n );\n return new TypeRefSchema(location, identifier.id);\n }\n\n const idKey = this.getIdentifierKey(compFilePath?.path);\n\n // if re exported from a file, recurse until definition\n const exportedIdentifier = (this.identifiers.get(idKey)?.identifiers || []).find((i) => i.id === identifier.id);\n\n if (exportedIdentifier) {\n return this.resolveTypeRef(exportedIdentifier, location, isExportedFromMain);\n }\n\n return new TypeRefSchema(location, identifier.id);\n }\n\n async getTypeRefForExternalNode(node: Node): Promise<TypeRefSchema> {\n const info = await this.getQuickInfo(node);\n const typeStr = parseTypeFromQuickInfo(info);\n const location = this.getLocation(node);\n const filePath = this.getPath(node);\n return this.getTypeRefForExternalPath(typeStr, filePath, location);\n }\n\n async getTypeRefForExternalPath(typeStr: string, filePath: string, location: Location): Promise<TypeRefSchema> {\n const compIdByPath = await this.extractor.getComponentIDByPath(filePath);\n if (compIdByPath) {\n return new TypeRefSchema(location, typeStr, compIdByPath);\n }\n const pkgName = this.parsePackageNameFromPath(filePath);\n const compIdByPkg = this.getCompIdByPkgName(pkgName);\n if (compIdByPkg) {\n return new TypeRefSchema(location, typeStr, compIdByPkg);\n }\n return new TypeRefSchema(location, typeStr, undefined, pkgName);\n }\n\n async jsDocToDocSchema(node: Node): Promise<DocSchema | undefined> {\n if (!canHaveJsDoc(node)) {\n return undefined;\n }\n const jsDocs = getJsDoc(node);\n if (!jsDocs.length) {\n return undefined;\n }\n // not sure how common it is to have multiple JSDocs. never seen it before.\n // regardless, in typescript implementation of methods like `getJSDocDeprecatedTag()`, they use the first one. (`getFirstJSDocTag()`)\n const jsDoc = jsDocs[0];\n const location = this.getLocation(jsDoc);\n const comment = getTextOfJSDocComment(jsDoc.comment);\n const tags = jsDoc.tags ? await pMapSeries(jsDoc.tags, (tag) => tagParser(tag, this, this.formatter)) : undefined;\n return new DocSchema(location, jsDoc.getText(), comment, tags);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_tsutils","data","require","_typescript","_interopRequireWildcard","_lodash","_utils","_path","_semanticsEntities","_isRelativeImport","_interopRequireDefault","_pMapSeries","_identifierList","_parseTypeFromQuickInfo","_jsdocToDocSchema","_identifier","_exportIdentifier","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","SchemaExtractorContext","mainFile","pathNormalizeToLinux","getPathRelativeToComponent","component","path","identifiers","_identifiers","internalIdentifiers","_internalIdentifiers","computed","_computed","mainFileIdentifierKey","getIdentifierKey","mainModuleIdentifiers","constructor","tsserver","extractor","componentDeps","componentRootPath","hostRootPath","formatter","Map","getComputedNodeKey","filePath","line","character","getIdentifierKeyForNode","node","getSourceFile","fileName","setComputed","location","setIdentifiers","setInternalIdentifiers","existing","uniqueIdentifiers","uniqBy","concat","k","aliasId","id","IdentifierList","findComputedSchemaByName","name","Array","from","values","filter","schema","computeSchema","getLocation","existingComputedSchema","computedSchema","transformSchemaNode","transformAPI","targetSourceFile","absolutePath","sourceFile","position","getLineAndCharacterOfPosition","getStart","getLocationAsString","basePath","filesystem","files","base","relative","getSignature","getSignatureHelp","getPath","getPosition","offset","getPositionOfLineAndCharacter","startsWith","join","getQuickInfo","err","message","Error","getQuickInfoDisplayString","_quickInfo$body","quickInfo","body","displayString","typeDefinition","getTypeDefinition","visitTypeDefinition","getPathWithoutExtension","knownExtensions","fileExtension","extname","substring","filePathWithoutExtension","includes","replace","RegExp","isAbsolute","isIndexFile","currentFilePath","indexFilePath","findFileInComponent","normalizedFilePath","pathToCompareWithoutExtension","matchingFile","find","file","currentFilePathWithoutExtension","isSameFilePath","matches","parsePackageNameFromPath","parts","split","length","lastPart","sep","pkgParts","pkgName","getSourceFileInsideComponent","parseSourceFile","getSourceFileFromNode","getFilePathByNode","def","getDefinition","firstDef","head","definitionInfo","definition","startPosition","start","pos","nodeAtPos","getTokenAtPosition","visitDefinition","getTypeRefForExternalNode","visit","parent","kind","SyntaxKind","Identifier","SourceFile","references","isExported","isFromComponent","getFileIdentifiers","exportDec","_exportDec$moduleSpec","specifierPathStr","ExportDeclaration","moduleSpecifier","getText","specifierPath","absPath","resolve","getIdentifiers","getFileExports","identifier","ExportIdentifier","isExportIdentifier","getFileInternals","computeIdentifiers","headTypeDefinition","headDefinition","unknownExactType","typeStr","isTypeStrFromQuickInfo","InferenceTypeSchema","info","type","parseTypeFromQuickInfo","isDefInSameLocation","loc","resolveType","internalRef","getTypeRef","ts","isTypeNode","definitionNode","definitionNodeName","definitionInternalRef","transformer","getTransformer","getTypeRefForExternalPath","schemaNode","apiTransformer","getAPITransformer","transform","getCompIdByPkgName","_this$componentDeps$f","dep","packageName","componentId","nodeIdentifierKey","nodeIdentifierList","mainIdentifierList","nodeIdentifier","mainIdentifier","parsedNodeIdentifier","parsedMainIdentifier","isExportedFromMain","resolveTypeRef","_this$identifiers$get","sourceFilePath","isRelativeImport","TypeRefSchema","compIdByPkg","compIdByPath","getComponentIDByPath","relativeDir","lastIndexOf","absFilePath","compFilePath","idKey","exportedIdentifier","i","jsDocToDocSchema","canHaveJsDoc","jsDocs","getJsDoc","jsDoc","comment","getTextOfJSDocComment","tags","pMapSeries","tag","tagParser","DocSchema","exports"],"sources":["schema-extractor-context.ts"],"sourcesContent":["import { TsserverClient } from '@teambit/ts-server';\nimport { getTokenAtPosition, canHaveJsDoc, getJsDoc } from 'tsutils';\nimport ts, { ExportAssignment, getTextOfJSDocComment, ExportDeclaration, Node, SyntaxKind, TypeNode } from 'typescript';\nimport { head, uniqBy } from 'lodash';\n// @ts-ignore david we should figure fix this.\n// eslint-disable-next-line import/no-unresolved\nimport protocol from 'typescript/lib/protocol';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport { resolve, sep, relative, join, isAbsolute, extname } from 'path';\nimport { Component, ComponentID } from '@teambit/component';\nimport {\n TypeRefSchema,\n SchemaNode,\n InferenceTypeSchema,\n Location,\n DocSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport isRelativeImport from '@teambit/legacy/dist/utils/is-relative-import';\nimport { ComponentDependency } from '@teambit/dependency-resolver';\nimport { Formatter } from '@teambit/formatter';\nimport pMapSeries from 'p-map-series';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { IdentifierList } from './identifier-list';\nimport { parseTypeFromQuickInfo } from './transformers/utils/parse-type-from-quick-info';\nimport { tagParser } from './transformers/utils/jsdoc-to-doc-schema';\nimport { Identifier } from './identifier';\nimport { ExportIdentifier } from './export-identifier';\n\nexport class SchemaExtractorContext {\n /**\n * list of all declared identifiers (exported and internal) by filename\n */\n private _identifiers = new Map<string, IdentifierList>();\n private _internalIdentifiers = new Map<string, IdentifierList>();\n\n /**\n * computed nodes by filename and (position (line:character))\n */\n private _computed = new Map<string, SchemaNode>();\n\n get mainFile() {\n return pathNormalizeToLinux(this.getPathRelativeToComponent(this.component.mainFile.path));\n }\n\n get identifiers() {\n return this._identifiers;\n }\n\n get internalIdentifiers() {\n return this._internalIdentifiers;\n }\n\n get computed() {\n return this._computed;\n }\n\n get mainFileIdentifierKey() {\n const mainFile = this.component.mainFile;\n return this.getIdentifierKey(mainFile.path);\n }\n\n get mainModuleIdentifiers() {\n return this.identifiers.get(this.mainFileIdentifierKey);\n }\n\n constructor(\n readonly tsserver: TsserverClient,\n readonly component: Component,\n readonly extractor: TypeScriptExtractor,\n readonly componentDeps: ComponentDependency[],\n readonly componentRootPath: string,\n readonly hostRootPath: string,\n readonly formatter?: Formatter\n ) {\n this.componentRootPath = pathNormalizeToLinux(componentRootPath);\n this.hostRootPath = pathNormalizeToLinux(hostRootPath);\n }\n\n getComputedNodeKey({ filePath, line, character }: Location) {\n return `${filePath}:${line}:${character}`;\n }\n\n getIdentifierKeyForNode(node: Node) {\n const filePath = node.getSourceFile().fileName;\n return this.getIdentifierKey(filePath);\n }\n\n getIdentifierKey(filePath: string) {\n return pathNormalizeToLinux(filePath);\n }\n\n setComputed(node: SchemaNode) {\n const { location } = node;\n const key = this.getComputedNodeKey(location);\n this.computed.set(key, node);\n }\n\n setIdentifiers(filePath: string, identifiers: IdentifierList) {\n this._identifiers.set(this.getIdentifierKey(filePath), identifiers);\n }\n\n setInternalIdentifiers(filePath: string, identifiers: IdentifierList) {\n const existing = this._internalIdentifiers.get(filePath);\n if (!existing) {\n this._internalIdentifiers.set(filePath, identifiers);\n } else {\n const uniqueIdentifiers = uniqBy(existing.identifiers.concat(identifiers.identifiers), (k) => k.aliasId || k.id);\n this._internalIdentifiers.set(filePath, new IdentifierList(uniqueIdentifiers));\n }\n }\n\n findComputedSchemaByName(name: string) {\n const computed = Array.from(this.computed.values());\n return computed.filter((schema) => schema.name === name);\n }\n\n async computeSchema(node: Node): Promise<SchemaNode> {\n const location = this.getLocation(node);\n const key = this.getComputedNodeKey(location);\n const existingComputedSchema = this.computed.get(key);\n if (existingComputedSchema) {\n return existingComputedSchema;\n }\n const computedSchema = await this.extractor.computeSchema(node, this);\n this.setComputed(computedSchema);\n return computedSchema;\n }\n\n async transformSchemaNode(schema: SchemaNode) {\n return this.extractor.transformAPI(schema, this);\n }\n\n /**\n * returns the location of a node in a source file.\n */\n getLocation(node: Node, targetSourceFile?: ts.SourceFile, absolutePath = false): Location {\n const sourceFile = targetSourceFile || node.getSourceFile();\n const filePath = absolutePath ? sourceFile.fileName : this.getPathRelativeToComponent(sourceFile.fileName);\n const position = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n const line = position.line + 1;\n const character = position.character + 1;\n\n return {\n filePath: pathNormalizeToLinux(filePath),\n line,\n character,\n };\n }\n\n getLocationAsString(node: Node): string {\n const location = this.getLocation(node);\n return `${node.getSourceFile().fileName}, line: ${location.line}, character: ${location.character}`;\n }\n\n getPathRelativeToComponent(filePath: string): string {\n const basePath = this.component.filesystem.files[0].base;\n return relative(basePath, filePath);\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\n const fileName = sourceFile.fileName;\n\n if (!fileName.startsWith(this.componentRootPath) && !fileName.startsWith(this.hostRootPath)) {\n return join(this.componentRootPath, fileName);\n }\n\n return sourceFile.fileName;\n }\n\n async getQuickInfo(node: Node) {\n const location = this.getLocation(node);\n try {\n return await this.tsserver.getQuickInfo(this.getPath(node), location);\n } catch (err: any) {\n if (err.message === 'No content available.') {\n throw new Error(\n `unable to get quickinfo data from tsserver at ${this.getPath(node)}, Ln ${location.line}, Col ${\n location.character\n }`\n );\n }\n throw err;\n }\n }\n\n async getQuickInfoDisplayString(node: Node): Promise<string> {\n const quickInfo = await this.getQuickInfo(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 getPathWithoutExtension(filePath: string) {\n const knownExtensions = ['ts', 'js', 'jsx', 'tsx'];\n const fileExtension = extname(filePath).substring(1);\n\n const filePathWithoutExtension = () => {\n if (knownExtensions.includes(fileExtension)) {\n return filePath.replace(new RegExp(`\\\\.${fileExtension}$`), '');\n }\n return filePath;\n };\n\n if (!isAbsolute(filePath)) {\n return filePathWithoutExtension();\n }\n\n if (filePath.startsWith(this.componentRootPath)) {\n return relative(this.componentRootPath, filePathWithoutExtension());\n }\n if (filePath.startsWith(this.hostRootPath)) {\n return relative(this.hostRootPath, filePathWithoutExtension());\n }\n return filePathWithoutExtension();\n }\n\n private isIndexFile(filePath: string, currentFilePath: string) {\n const indexFilePath = join(filePath, 'index');\n return pathNormalizeToLinux(indexFilePath) === currentFilePath;\n }\n\n findFileInComponent(filePath: string) {\n const normalizedFilePath = pathNormalizeToLinux(filePath);\n const pathToCompareWithoutExtension = this.getPathWithoutExtension(normalizedFilePath);\n\n const matchingFile = this.component.filesystem.files.find((file) => {\n const currentFilePath = pathNormalizeToLinux(file.path);\n const currentFilePathWithoutExtension = this.getPathWithoutExtension(currentFilePath);\n\n const isSameFilePath = pathToCompareWithoutExtension === currentFilePathWithoutExtension;\n\n const matches =\n isSameFilePath || this.isIndexFile(pathToCompareWithoutExtension, currentFilePathWithoutExtension);\n\n return matches;\n });\n return matchingFile;\n }\n\n private parsePackageNameFromPath(path: string) {\n const parts = path.split('node_modules');\n\n if (parts.length === 1) {\n return path;\n }\n\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 getSourceFileInsideComponent(filePath: string) {\n const file = this.findFileInComponent(filePath);\n return file && this.extractor.parseSourceFile(file);\n }\n\n async getSourceFileFromNode(node: Node) {\n const filePath = await this.getFilePathByNode(node);\n if (!filePath) {\n return undefined;\n }\n return this.getSourceFileInsideComponent(filePath);\n }\n\n async getFilePathByNode(node: Node) {\n const def = await this.tsserver.getDefinition(this.getPath(node), this.getLocation(node));\n\n const firstDef = head(def?.body);\n return firstDef?.file;\n }\n\n async definitionInfo(node: Node): Promise<protocol.DefinitionInfo | undefined> {\n const location = this.getLocation(node);\n const filePath = this.getPath(node);\n\n const def = await this.tsserver.getDefinition(filePath, location);\n\n const firstDef = head(def?.body);\n\n return firstDef;\n }\n\n /**\n * get a definition for a given node.\n */\n async definition(definition: protocol.DefinitionInfo): Promise<Node | undefined> {\n const startPosition = definition.start;\n const sourceFile = this.getSourceFileInsideComponent(definition.file);\n if (!sourceFile) {\n // it might be an external reference, cant get the node\n return undefined;\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 definitionInfo = await this.definitionInfo(node);\n if (!definitionInfo) {\n return undefined;\n }\n\n const definition = await this.definition(definitionInfo);\n if (!definition) {\n return this.getTypeRefForExternalNode(node);\n }\n\n return this.visit(definition.parent);\n }\n\n async visit(node: Node): Promise<SchemaNode> {\n if (node.kind === SyntaxKind.Identifier && node.parent.parent.kind !== SyntaxKind.SourceFile) {\n return this.visit(node.parent);\n }\n return this.extractor.computeSchema(node, this);\n }\n\n references() {}\n\n isExported() {}\n\n isFromComponent() {}\n\n async getFileIdentifiers(exportDec: ExportDeclaration | ExportAssignment) {\n const file = exportDec.getSourceFile().fileName;\n const specifierPathStr =\n (exportDec.kind === SyntaxKind.ExportDeclaration && exportDec.moduleSpecifier?.getText()) || '';\n const specifierPath = specifierPathStr.substring(1, specifierPathStr.length - 1);\n const absPath = resolve(file, '..', specifierPath);\n const sourceFile = this.getSourceFileInsideComponent(absPath);\n if (!sourceFile) return [];\n return this.getIdentifiers(sourceFile);\n }\n\n async getFileExports(exportDec: ExportDeclaration | ExportAssignment) {\n const identifiers = await this.getFileIdentifiers(exportDec);\n return identifiers.filter((identifier) => ExportIdentifier.isExportIdentifier(identifier));\n }\n\n async getFileInternals(exportDec: ExportDeclaration | ExportAssignment) {\n const identifiers = await this.getFileIdentifiers(exportDec);\n return identifiers.filter((identifier) => !ExportIdentifier.isExportIdentifier(identifier));\n }\n\n getIdentifiers(node: Node) {\n return this.extractor.computeIdentifiers(node, this);\n }\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 async getDefinition(node: Node) {\n const typeDefinition = await this.typeDefinition(node);\n const headTypeDefinition = head(typeDefinition?.body);\n if (headTypeDefinition) {\n return headTypeDefinition;\n }\n\n const definition = await this.tsserver.getDefinition(node.getSourceFile().fileName, this.getLocation(node));\n const headDefinition = head(definition?.body);\n\n return headDefinition;\n }\n\n // when we can't figure out the component/package/type of this node, we'll use the typeStr as the type.\n private async unknownExactType(node: Node, location: Location, typeStr = 'any', isTypeStrFromQuickInfo = true) {\n if (isTypeStrFromQuickInfo) {\n return new InferenceTypeSchema(location, typeStr || 'any');\n }\n const info = await this.getQuickInfo(node);\n const type = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(location, type, typeStr);\n }\n\n // the reason for this check is to avoid infinite loop when calling `this.jump` with the same file+location\n private isDefInSameLocation(node: Node, definition: protocol.FileSpanWithContext) {\n if (definition.file !== node.getSourceFile().fileName) {\n return false;\n }\n const loc = this.getLocation(node);\n\n return loc.line === definition.start.line && loc.character === definition.start.offset;\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 const location = this.getLocation(node);\n\n // check if internal ref with typeInfo\n const internalRef = await this.getTypeRef(typeStr, this.getIdentifierKeyForNode(node), location);\n\n if (internalRef) return internalRef;\n\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 if (node.type && ts.isTypeNode(node.type)) {\n return this.computeSchema(node.type);\n }\n\n const definition = await this.getDefinition(node);\n\n if (!definition) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n if (this.isDefInSameLocation(node, definition)) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const definitionNode = await this.definition(definition);\n\n if (!definitionNode) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const definitionNodeName = definitionNode?.getText();\n\n // check if internal ref with definition info\n const definitionInternalRef = await this.getTypeRef(\n definitionNodeName,\n this.getIdentifierKeyForNode(definitionNode),\n location\n );\n\n if (definitionInternalRef) return definitionInternalRef;\n\n const transformer = this.extractor.getTransformer(definitionNode, this);\n\n if (transformer === undefined) {\n const file = this.findFileInComponent(definition.file);\n if (!file) return this.getTypeRefForExternalPath(typeStr, definition.file, location);\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const schemaNode = await this.visit(definitionNode);\n\n if (!schemaNode) {\n return this.unknownExactType(node, location, typeStr, isTypeStrFromQuickInfo);\n }\n\n const apiTransformer = this.extractor.getAPITransformer(schemaNode);\n return apiTransformer ? apiTransformer.transform(schemaNode, this) : schemaNode;\n }\n\n private getCompIdByPkgName(pkgName: string): ComponentID | undefined {\n return this.componentDeps.find((dep) => dep.packageName === pkgName)?.componentId;\n }\n\n async getTypeRef(typeStr: string, filePath: string, location: Location): Promise<TypeRefSchema | undefined> {\n const nodeIdentifierKey = this.getIdentifierKey(filePath);\n const mainFileIdentifierKey = this.mainFileIdentifierKey;\n\n const nodeIdentifierList = this.identifiers.get(nodeIdentifierKey);\n const mainIdentifierList = this.identifiers.get(mainFileIdentifierKey);\n\n const nodeIdentifier = new Identifier(typeStr, nodeIdentifierKey);\n const mainIdentifier = new Identifier(typeStr, mainFileIdentifierKey);\n\n const parsedNodeIdentifier = nodeIdentifierList?.find(nodeIdentifier);\n const parsedMainIdentifier = mainIdentifierList?.find(mainIdentifier);\n const isExportedFromMain = parsedMainIdentifier && ExportIdentifier.isExportIdentifier(parsedMainIdentifier);\n\n if (!parsedNodeIdentifier) return undefined;\n\n const internalRef = !isExportedFromMain;\n\n if (internalRef) {\n this.setInternalIdentifiers(filePath, new IdentifierList([parsedNodeIdentifier]));\n }\n\n return this.resolveTypeRef(parsedNodeIdentifier, location, isExportedFromMain);\n }\n\n async resolveTypeRef(\n identifier: Identifier,\n location: Location,\n isExportedFromMain?: boolean\n ): Promise<TypeRefSchema> {\n const sourceFilePath = identifier.sourceFilePath;\n\n if (!sourceFilePath || (isExportedFromMain && isRelativeImport(sourceFilePath))) {\n return new TypeRefSchema(\n location,\n identifier.id,\n undefined,\n undefined,\n !isExportedFromMain ? this.getPathRelativeToComponent(identifier.filePath) : undefined\n );\n }\n\n if (!isRelativeImport(sourceFilePath)) {\n const pkgName = this.parsePackageNameFromPath(sourceFilePath);\n const compIdByPkg = this.getCompIdByPkgName(pkgName);\n\n const compIdByPath = await this.extractor.getComponentIDByPath(sourceFilePath);\n\n if (compIdByPath) {\n return new TypeRefSchema(location, identifier.id, compIdByPath);\n }\n\n if (compIdByPkg) {\n return new TypeRefSchema(location, identifier.id, compIdByPkg);\n }\n\n // package without comp id\n return new TypeRefSchema(location, identifier.id, undefined, pkgName);\n }\n\n const relativeDir = identifier.filePath.substring(0, identifier.filePath.lastIndexOf('/'));\n const absFilePath = resolve(this.componentRootPath, relativeDir, sourceFilePath);\n\n const compFilePath = this.findFileInComponent(absFilePath);\n if (!compFilePath) {\n // @todo handle this better\n throw new Error(\n `cannot find file in component \\n source file path ${sourceFilePath}\\n \n identifier file path ${identifier.filePath}\\nrelative dir ${relativeDir}\\n\n absFilePath ${absFilePath}`\n );\n return new TypeRefSchema(location, identifier.id);\n }\n\n const idKey = this.getIdentifierKey(compFilePath?.path);\n\n // if re exported from a file, recurse until definition\n const exportedIdentifier = (this.identifiers.get(idKey)?.identifiers || []).find((i) => i.id === identifier.id);\n\n if (exportedIdentifier) {\n return this.resolveTypeRef(exportedIdentifier, location, isExportedFromMain);\n }\n\n return new TypeRefSchema(location, identifier.id);\n }\n\n async getTypeRefForExternalNode(node: Node): Promise<TypeRefSchema> {\n const info = await this.getQuickInfo(node);\n const typeStr = parseTypeFromQuickInfo(info);\n const location = this.getLocation(node);\n const filePath = this.getPath(node);\n return this.getTypeRefForExternalPath(typeStr, filePath, location);\n }\n\n async getTypeRefForExternalPath(typeStr: string, filePath: string, location: Location): Promise<TypeRefSchema> {\n const compIdByPath = await this.extractor.getComponentIDByPath(filePath);\n if (compIdByPath) {\n return new TypeRefSchema(location, typeStr, compIdByPath);\n }\n const pkgName = this.parsePackageNameFromPath(filePath);\n const compIdByPkg = this.getCompIdByPkgName(pkgName);\n if (compIdByPkg) {\n return new TypeRefSchema(location, typeStr, compIdByPkg);\n }\n return new TypeRefSchema(location, typeStr, undefined, pkgName);\n }\n\n async jsDocToDocSchema(node: Node): Promise<DocSchema | undefined> {\n if (!canHaveJsDoc(node)) {\n return undefined;\n }\n const jsDocs = getJsDoc(node);\n if (!jsDocs.length) {\n return undefined;\n }\n // not sure how common it is to have multiple JSDocs. never seen it before.\n // regardless, in typescript implementation of methods like `getJSDocDeprecatedTag()`, they use the first one. (`getFirstJSDocTag()`)\n const jsDoc = jsDocs[0];\n const location = this.getLocation(jsDoc);\n const comment = getTextOfJSDocComment(jsDoc.comment);\n const tags = jsDoc.tags ? await pMapSeries(jsDoc.tags, (tag) => tagParser(tag, this, this.formatter)) : undefined;\n return new DocSchema(location, jsDoc.getText(), comment, tags);\n }\n}\n"],"mappings":"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"}
@@ -40,8 +40,8 @@ function _identifier() {
40
40
  return data;
41
41
  }
42
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
44
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
43
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
44
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
45
45
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
46
46
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
47
47
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -1 +1 @@
1
- {"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_lodash","_semanticsEntities","_typescript","_identifier","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","ClassDeclarationTransformer","predicate","node","kind","ts","SyntaxKind","ClassDeclaration","getName","_node$name","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","getExpressionWithTypeArgs","context","token","heritageClauses","pMapSeries","heritageClause","flatMap","h","types","map","type","expressionWithTypeArgs","typeArguments","expression","typeArgsNodes","t","computeSchema","location","getLocation","expressionNode","visitDefinition","UnresolvedSchema","ExpressionWithTypeArgumentsSchema","transform","_node$typeParameters","className","extendsExpressionsWithTypeArgs","ExtendsKeyword","implementsExpressionsWithTypeArgs","ImplementsKeyword","typeParameters","typeParam","signature","getQuickInfoDisplayString","members","member","_member$modifiers","isPrivate","modifiers","some","modifier","PrivateKeyword","doc","jsDocToDocSchema","Error","ClassSchema","compact","exports"],"sources":["class-declaration.ts"],"sourcesContent":["import pMapSeries from 'p-map-series';\nimport { compact } from 'lodash';\nimport {\n ClassSchema,\n UnresolvedSchema,\n ExpressionWithTypeArgumentsSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, ClassDeclaration } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class ClassDeclarationTransformer 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 Identifier(this.getName(node), node.getSourceFile().fileName)];\n }\n\n private async getExpressionWithTypeArgs(\n node: ClassDeclaration,\n context: SchemaExtractorContext,\n token: ts.SyntaxKind.ExtendsKeyword | ts.SyntaxKind.ImplementsKeyword\n ) {\n if (!node.heritageClauses) return [];\n\n return pMapSeries(\n node.heritageClauses\n .filter((heritageClause: ts.HeritageClause) => heritageClause.token === token)\n .flatMap((h: ts.HeritageClause) => {\n const { types } = h;\n const name = h.getText();\n return types.map((type) => ({ ...type, name }));\n }),\n async (expressionWithTypeArgs: ts.ExpressionWithTypeArguments & { name: string }) => {\n const { typeArguments, expression, name } = expressionWithTypeArgs;\n const typeArgsNodes = typeArguments ? await pMapSeries(typeArguments, (t) => context.computeSchema(t)) : [];\n const location = context.getLocation(expression);\n const expressionNode =\n (await context.visitDefinition(expression)) || new UnresolvedSchema(location, expression.getText());\n return new ExpressionWithTypeArgumentsSchema(typeArgsNodes, expressionNode, name, location);\n }\n );\n }\n\n async transform(node: ClassDeclaration, context: SchemaExtractorContext) {\n const className = this.getName(node);\n const extendsExpressionsWithTypeArgs = await this.getExpressionWithTypeArgs(\n node,\n context,\n ts.SyntaxKind.ExtendsKeyword\n );\n\n const implementsExpressionsWithTypeArgs = await this.getExpressionWithTypeArgs(\n node,\n context,\n ts.SyntaxKind.ImplementsKeyword\n );\n\n const typeParameters = node.typeParameters?.map((typeParam) => {\n return typeParam.name.getText();\n });\n const signature = node.name ? await context.getQuickInfoDisplayString(node.name) : undefined;\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 return context.computeSchema(member);\n });\n const doc = await context.jsDocToDocSchema(node);\n\n if (!signature) {\n throw Error(`Missing signature for class ${className} declaration`);\n }\n\n return new ClassSchema(\n className,\n compact(members),\n context.getLocation(node),\n signature,\n doc,\n typeParameters,\n extendsExpressionsWithTypeArgs,\n implementsExpressionsWithTypeArgs\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_lodash","_semanticsEntities","_typescript","_identifier","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","ClassDeclarationTransformer","predicate","node","kind","ts","SyntaxKind","ClassDeclaration","getName","_node$name","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","getExpressionWithTypeArgs","context","token","heritageClauses","pMapSeries","heritageClause","flatMap","h","types","map","type","expressionWithTypeArgs","typeArguments","expression","typeArgsNodes","computeSchema","location","getLocation","expressionNode","visitDefinition","UnresolvedSchema","ExpressionWithTypeArgumentsSchema","transform","_node$typeParameters","className","extendsExpressionsWithTypeArgs","ExtendsKeyword","implementsExpressionsWithTypeArgs","ImplementsKeyword","typeParameters","typeParam","signature","getQuickInfoDisplayString","members","member","_member$modifiers","isPrivate","modifiers","some","modifier","PrivateKeyword","doc","jsDocToDocSchema","Error","ClassSchema","compact","exports"],"sources":["class-declaration.ts"],"sourcesContent":["import pMapSeries from 'p-map-series';\nimport { compact } from 'lodash';\nimport {\n ClassSchema,\n UnresolvedSchema,\n ExpressionWithTypeArgumentsSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, ClassDeclaration } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class ClassDeclarationTransformer 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 Identifier(this.getName(node), node.getSourceFile().fileName)];\n }\n\n private async getExpressionWithTypeArgs(\n node: ClassDeclaration,\n context: SchemaExtractorContext,\n token: ts.SyntaxKind.ExtendsKeyword | ts.SyntaxKind.ImplementsKeyword\n ) {\n if (!node.heritageClauses) return [];\n\n return pMapSeries(\n node.heritageClauses\n .filter((heritageClause: ts.HeritageClause) => heritageClause.token === token)\n .flatMap((h: ts.HeritageClause) => {\n const { types } = h;\n const name = h.getText();\n return types.map((type) => ({ ...type, name }));\n }),\n async (expressionWithTypeArgs: ts.ExpressionWithTypeArguments & { name: string }) => {\n const { typeArguments, expression, name } = expressionWithTypeArgs;\n const typeArgsNodes = typeArguments ? await pMapSeries(typeArguments, (t) => context.computeSchema(t)) : [];\n const location = context.getLocation(expression);\n const expressionNode =\n (await context.visitDefinition(expression)) || new UnresolvedSchema(location, expression.getText());\n return new ExpressionWithTypeArgumentsSchema(typeArgsNodes, expressionNode, name, location);\n }\n );\n }\n\n async transform(node: ClassDeclaration, context: SchemaExtractorContext) {\n const className = this.getName(node);\n const extendsExpressionsWithTypeArgs = await this.getExpressionWithTypeArgs(\n node,\n context,\n ts.SyntaxKind.ExtendsKeyword\n );\n\n const implementsExpressionsWithTypeArgs = await this.getExpressionWithTypeArgs(\n node,\n context,\n ts.SyntaxKind.ImplementsKeyword\n );\n\n const typeParameters = node.typeParameters?.map((typeParam) => {\n return typeParam.name.getText();\n });\n const signature = node.name ? await context.getQuickInfoDisplayString(node.name) : undefined;\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 return context.computeSchema(member);\n });\n const doc = await context.jsDocToDocSchema(node);\n\n if (!signature) {\n throw Error(`Missing signature for class ${className} declaration`);\n }\n\n return new ClassSchema(\n className,\n compact(members),\n context.getLocation(node),\n signature,\n doc,\n typeParameters,\n extendsExpressionsWithTypeArgs,\n implementsExpressionsWithTypeArgs\n );\n }\n}\n"],"mappings":"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"}
@@ -34,11 +34,12 @@ class ConstructorTransformer {
34
34
  return [];
35
35
  }
36
36
  async transform(node, context) {
37
- var _info$body, _node$modifiers;
37
+ var _info$body, _node$parent, _node$modifiers;
38
38
  const args = await (0, _pMapSeries().default)(node.parameters, async param => context.computeSchema(param));
39
39
  const info = await context.getQuickInfo(node);
40
40
  const displaySig = (info === null || info === void 0 || (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
41
- const returns = new (_semanticsEntities().ThisTypeSchema)(context.getLocation(node.parent));
41
+ const name = ((_node$parent = node.parent) === null || _node$parent === void 0 || (_node$parent = _node$parent.name) === null || _node$parent === void 0 ? void 0 : _node$parent.getText()) || '';
42
+ const returns = new (_semanticsEntities().ThisTypeSchema)(context.getLocation(node.parent), name);
42
43
  const modifiers = ((_node$modifiers = node.modifiers) === null || _node$modifiers === void 0 ? void 0 : _node$modifiers.map(modifier => modifier.getText())) || [];
43
44
  const doc = await context.jsDocToDocSchema(node);
44
45
  return new (_semanticsEntities().ConstructorSchema)(context.getLocation(node), args, returns, displaySig, modifiers, doc);
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","ConstructorTransformer","predicate","node","kind","ts","SyntaxKind","Constructor","getIdentifiers","transform","context","_info$body","_node$modifiers","args","pMapSeries","parameters","param","computeSchema","info","getQuickInfo","displaySig","body","displayString","returns","ThisTypeSchema","getLocation","parent","modifiers","map","modifier","getText","doc","jsDocToDocSchema","ConstructorSchema","exports"],"sources":["constructor.ts"],"sourcesContent":["import ts, { Node, ConstructorDeclaration } from 'typescript';\nimport {\n ConstructorSchema,\n ParameterSchema,\n ThisTypeSchema,\n Modifier,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class ConstructorTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Constructor;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ConstructorDeclaration, context: SchemaExtractorContext) {\n const args = await pMapSeries(node.parameters, async (param) => context.computeSchema(param));\n const info = await context.getQuickInfo(node);\n const displaySig = info?.body?.displayString || '';\n\n const returns = new ThisTypeSchema(context.getLocation(node.parent));\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const doc = await context.jsDocToDocSchema(node);\n\n return new ConstructorSchema(\n context.getLocation(node),\n args as ParameterSchema[],\n returns,\n displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAK/B,MAAMG,sBAAsB,CAA8B;EAC/DC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,WAAW;EAChD;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAA4B,EAAEO,OAA+B,EAAE;IAAA,IAAAC,UAAA,EAAAC,eAAA;IAC7E,MAAMC,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAACX,IAAI,CAACY,UAAU,EAAE,MAAOC,KAAK,IAAKN,OAAO,CAACO,aAAa,CAACD,KAAK,CAAC,CAAC;IAC7F,MAAME,IAAI,GAAG,MAAMR,OAAO,CAACS,YAAY,CAAChB,IAAI,CAAC;IAC7C,MAAMiB,UAAU,GAAG,CAAAF,IAAI,aAAJA,IAAI,gBAAAP,UAAA,GAAJO,IAAI,CAAEG,IAAI,cAAAV,UAAA,uBAAVA,UAAA,CAAYW,aAAa,KAAI,EAAE;IAElD,MAAMC,OAAO,GAAG,KAAIC,mCAAc,EAACd,OAAO,CAACe,WAAW,CAACtB,IAAI,CAACuB,MAAM,CAAC,CAAC;IACpE,MAAMC,SAAS,GAAG,EAAAf,eAAA,GAAAT,IAAI,CAACwB,SAAS,cAAAf,eAAA,uBAAdA,eAAA,CAAgBgB,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,OAAO,CAAC,CAAC,CAAC,KAAI,EAAE;IAC7E,MAAMC,GAAG,GAAG,MAAMrB,OAAO,CAACsB,gBAAgB,CAAC7B,IAAI,CAAC;IAEhD,OAAO,KAAI8B,sCAAiB,EAC1BvB,OAAO,CAACe,WAAW,CAACtB,IAAI,CAAC,EACzBU,IAAI,EACJU,OAAO,EACPH,UAAU,EACVO,SAAS,EACTI,GACF,CAAC;EACH;AACF;AAACG,OAAA,CAAAjC,sBAAA,GAAAA,sBAAA"}
1
+ {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","ConstructorTransformer","predicate","node","kind","ts","SyntaxKind","Constructor","getIdentifiers","transform","context","_info$body","_node$parent","_node$modifiers","args","pMapSeries","parameters","param","computeSchema","info","getQuickInfo","displaySig","body","displayString","name","parent","getText","returns","ThisTypeSchema","getLocation","modifiers","map","modifier","doc","jsDocToDocSchema","ConstructorSchema","exports"],"sources":["constructor.ts"],"sourcesContent":["import ts, { Node, ConstructorDeclaration } from 'typescript';\nimport {\n ConstructorSchema,\n ParameterSchema,\n ThisTypeSchema,\n Modifier,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class ConstructorTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Constructor;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ConstructorDeclaration, context: SchemaExtractorContext) {\n const args = await pMapSeries(node.parameters, async (param) => context.computeSchema(param));\n const info = await context.getQuickInfo(node);\n const displaySig = info?.body?.displayString || '';\n const name = node.parent?.name?.getText() || '';\n const returns = new ThisTypeSchema(context.getLocation(node.parent), name);\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const doc = await context.jsDocToDocSchema(node);\n\n return new ConstructorSchema(\n context.getLocation(node),\n args as ParameterSchema[],\n returns,\n displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAK/B,MAAMG,sBAAsB,CAA8B;EAC/DC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,WAAW;EAChD;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAA4B,EAAEO,OAA+B,EAAE;IAAA,IAAAC,UAAA,EAAAC,YAAA,EAAAC,eAAA;IAC7E,MAAMC,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAACZ,IAAI,CAACa,UAAU,EAAE,MAAOC,KAAK,IAAKP,OAAO,CAACQ,aAAa,CAACD,KAAK,CAAC,CAAC;IAC7F,MAAME,IAAI,GAAG,MAAMT,OAAO,CAACU,YAAY,CAACjB,IAAI,CAAC;IAC7C,MAAMkB,UAAU,GAAG,CAAAF,IAAI,aAAJA,IAAI,gBAAAR,UAAA,GAAJQ,IAAI,CAAEG,IAAI,cAAAX,UAAA,uBAAVA,UAAA,CAAYY,aAAa,KAAI,EAAE;IAClD,MAAMC,IAAI,GAAG,EAAAZ,YAAA,GAAAT,IAAI,CAACsB,MAAM,cAAAb,YAAA,gBAAAA,YAAA,GAAXA,YAAA,CAAaY,IAAI,cAAAZ,YAAA,uBAAjBA,YAAA,CAAmBc,OAAO,CAAC,CAAC,KAAI,EAAE;IAC/C,MAAMC,OAAO,GAAG,KAAIC,mCAAc,EAAClB,OAAO,CAACmB,WAAW,CAAC1B,IAAI,CAACsB,MAAM,CAAC,EAAED,IAAI,CAAC;IAC1E,MAAMM,SAAS,GAAG,EAAAjB,eAAA,GAAAV,IAAI,CAAC2B,SAAS,cAAAjB,eAAA,uBAAdA,eAAA,CAAgBkB,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAACN,OAAO,CAAC,CAAC,CAAC,KAAI,EAAE;IAC7E,MAAMO,GAAG,GAAG,MAAMvB,OAAO,CAACwB,gBAAgB,CAAC/B,IAAI,CAAC;IAEhD,OAAO,KAAIgC,sCAAiB,EAC1BzB,OAAO,CAACmB,WAAW,CAAC1B,IAAI,CAAC,EACzBW,IAAI,EACJa,OAAO,EACPN,UAAU,EACVS,SAAS,EACTG,GACF,CAAC;EACH;AACF;AAACG,OAAA,CAAAnC,sBAAA,GAAAA,sBAAA"}
@@ -33,8 +33,8 @@ function _identifier() {
33
33
  return data;
34
34
  }
35
35
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
37
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
36
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
37
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
38
38
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
39
39
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
40
40
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","require","_pMapSeries","_interopRequireDefault","_semanticsEntities","_identifier","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","InterfaceDeclarationTransformer","predicate","node","kind","SyntaxKind","InterfaceDeclaration","getIdentifiers","Identifier","name","getText","getSourceFile","fileName","getExpressionWithTypeArgs","context","heritageClauses","pMapSeries","heritageClause","token","ExtendsKeyword","flatMap","h","types","map","type","expressionWithTypeArgs","typeArguments","expression","typeArgsNodes","t","computeSchema","location","getLocation","expressionNode","visitDefinition","UnresolvedSchema","ExpressionWithTypeArgumentsSchema","transform","interfaceDec","_interfaceDec$typePar","members","member","doc","jsDocToDocSchema","signature","getQuickInfoDisplayString","extendsNodes","typeParameters","typeParam","Error","InterfaceSchema","exports"],"sources":["interface-declaration.ts"],"sourcesContent":["import ts, { Node, InterfaceDeclaration, SyntaxKind } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport {\n ExpressionWithTypeArgumentsSchema,\n InterfaceSchema,\n UnresolvedSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class InterfaceDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.InterfaceDeclaration;\n }\n\n async getIdentifiers(node: InterfaceDeclaration): Promise<Identifier[]> {\n return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n private async getExpressionWithTypeArgs(node: InterfaceDeclaration, context: SchemaExtractorContext) {\n if (!node.heritageClauses) return [];\n\n return pMapSeries(\n node.heritageClauses\n .filter((heritageClause: ts.HeritageClause) => heritageClause.token === SyntaxKind.ExtendsKeyword)\n .flatMap((h: ts.HeritageClause) => {\n const { types } = h;\n const name = h.getText();\n return types.map((type) => ({ ...type, name }));\n }),\n async (expressionWithTypeArgs: ts.ExpressionWithTypeArguments & { name: string }) => {\n const { typeArguments, expression, name } = expressionWithTypeArgs;\n const typeArgsNodes = typeArguments ? await pMapSeries(typeArguments, (t) => context.computeSchema(t)) : [];\n const location = context.getLocation(expression);\n const expressionNode =\n (await context.visitDefinition(expression)) || new UnresolvedSchema(location, expression.getText());\n return new ExpressionWithTypeArgumentsSchema(typeArgsNodes, expressionNode, name, location);\n }\n );\n }\n\n async transform(interfaceDec: InterfaceDeclaration, context: SchemaExtractorContext) {\n const members = await pMapSeries(interfaceDec.members, (member) => context.computeSchema(member));\n const doc = await context.jsDocToDocSchema(interfaceDec);\n const signature = interfaceDec.name ? await context.getQuickInfoDisplayString(interfaceDec.name) : undefined;\n const extendsNodes = await this.getExpressionWithTypeArgs(interfaceDec, context);\n const typeParameters = interfaceDec.typeParameters?.map((typeParam) => {\n return typeParam.name.getText();\n });\n\n if (!signature) {\n throw Error(`Missing signature for interface ${interfaceDec.name.getText()} declaration`);\n }\n\n return new InterfaceSchema(\n context.getLocation(interfaceDec),\n interfaceDec.name.getText(),\n signature,\n extendsNodes,\n members,\n doc,\n typeParameters\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_typescript","data","require","_pMapSeries","_interopRequireDefault","_semanticsEntities","_identifier","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","InterfaceDeclarationTransformer","predicate","node","kind","SyntaxKind","InterfaceDeclaration","getIdentifiers","Identifier","name","getText","getSourceFile","fileName","getExpressionWithTypeArgs","context","heritageClauses","pMapSeries","heritageClause","token","ExtendsKeyword","flatMap","h","types","map","type","expressionWithTypeArgs","typeArguments","expression","typeArgsNodes","computeSchema","location","getLocation","expressionNode","visitDefinition","UnresolvedSchema","ExpressionWithTypeArgumentsSchema","transform","interfaceDec","_interfaceDec$typePar","members","member","doc","jsDocToDocSchema","signature","getQuickInfoDisplayString","extendsNodes","typeParameters","typeParam","Error","InterfaceSchema","exports"],"sources":["interface-declaration.ts"],"sourcesContent":["import ts, { Node, InterfaceDeclaration, SyntaxKind } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport {\n ExpressionWithTypeArgumentsSchema,\n InterfaceSchema,\n UnresolvedSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class InterfaceDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.InterfaceDeclaration;\n }\n\n async getIdentifiers(node: InterfaceDeclaration): Promise<Identifier[]> {\n return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n private async getExpressionWithTypeArgs(node: InterfaceDeclaration, context: SchemaExtractorContext) {\n if (!node.heritageClauses) return [];\n\n return pMapSeries(\n node.heritageClauses\n .filter((heritageClause: ts.HeritageClause) => heritageClause.token === SyntaxKind.ExtendsKeyword)\n .flatMap((h: ts.HeritageClause) => {\n const { types } = h;\n const name = h.getText();\n return types.map((type) => ({ ...type, name }));\n }),\n async (expressionWithTypeArgs: ts.ExpressionWithTypeArguments & { name: string }) => {\n const { typeArguments, expression, name } = expressionWithTypeArgs;\n const typeArgsNodes = typeArguments ? await pMapSeries(typeArguments, (t) => context.computeSchema(t)) : [];\n const location = context.getLocation(expression);\n const expressionNode =\n (await context.visitDefinition(expression)) || new UnresolvedSchema(location, expression.getText());\n return new ExpressionWithTypeArgumentsSchema(typeArgsNodes, expressionNode, name, location);\n }\n );\n }\n\n async transform(interfaceDec: InterfaceDeclaration, context: SchemaExtractorContext) {\n const members = await pMapSeries(interfaceDec.members, (member) => context.computeSchema(member));\n const doc = await context.jsDocToDocSchema(interfaceDec);\n const signature = interfaceDec.name ? await context.getQuickInfoDisplayString(interfaceDec.name) : undefined;\n const extendsNodes = await this.getExpressionWithTypeArgs(interfaceDec, context);\n const typeParameters = interfaceDec.typeParameters?.map((typeParam) => {\n return typeParam.name.getText();\n });\n\n if (!signature) {\n throw Error(`Missing signature for interface ${interfaceDec.name.getText()} declaration`);\n }\n\n return new InterfaceSchema(\n context.getLocation(interfaceDec),\n interfaceDec.name.getText(),\n signature,\n extendsNodes,\n members,\n doc,\n typeParameters\n );\n }\n}\n"],"mappings":"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"}
@@ -44,7 +44,7 @@ class ParameterTransformer {
44
44
  }
45
45
  async transform(node, context) {
46
46
  const type = await this.getType(node, context);
47
- return new (_semanticsEntities().ParameterSchema)(context.getLocation(node), ParameterTransformer.getName(node), type, Boolean(node.questionToken), node.initializer ? node.initializer.getText() : undefined, undefined, await ParameterTransformer.getObjectBindingNodes(node, type, context), Boolean(node.dotDotDotToken));
47
+ return new (_semanticsEntities().ParameterSchema)(context.getLocation(node), ParameterTransformer.getName(node), type, Boolean(node.questionToken) || Boolean(node.initializer), node.initializer ? node.initializer.getText() : undefined, undefined, await ParameterTransformer.getObjectBindingNodes(node, type, context), Boolean(node.dotDotDotToken));
48
48
  }
49
49
  static getName(param) {
50
50
  if ((0, _typescript().isIdentifier)(param.name)) {
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_semanticsEntities","_pMapSeries","_interopRequireDefault","_parseTypeFromQuickInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ParameterTransformer","predicate","node","kind","ts","SyntaxKind","Parameter","getIdentifiers","transform","context","type","getType","ParameterSchema","getLocation","getName","Boolean","questionToken","initializer","getText","undefined","getObjectBindingNodes","dotDotDotToken","param","isIdentifier","name","elements","map","elem","elementsStr","join","ArrayBindingPattern","computeSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","pMapSeries","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error","paramType","_paramType$findNode","existing","findNode","trim","__schema","defaultValue","exports"],"sources":["parameter.ts"],"sourcesContent":["import ts, {\n BindingElement,\n isIdentifier,\n Node,\n ParameterDeclaration,\n SyntaxKind,\n ArrayBindingElement,\n} from 'typescript';\nimport {\n InferenceTypeSchema,\n ParameterSchema,\n SchemaNode,\n TupleTypeSchema,\n TypeLiteralSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class ParameterTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Parameter;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ParameterDeclaration, context: SchemaExtractorContext) {\n const type = await this.getType(node, context);\n return new ParameterSchema(\n context.getLocation(node),\n ParameterTransformer.getName(node),\n type,\n Boolean(node.questionToken),\n node.initializer ? node.initializer.getText() : undefined,\n undefined,\n await ParameterTransformer.getObjectBindingNodes(node, type, context),\n Boolean(node.dotDotDotToken)\n );\n }\n\n static getName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n }\n\n async getType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n return context.computeSchema(param.type);\n }\n\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n }\n\n static async getObjectBindingNodes(\n param: ParameterDeclaration,\n paramType: SchemaNode,\n context: SchemaExtractorContext\n ): Promise<SchemaNode[] | undefined> {\n if (param.name.kind !== SyntaxKind.ObjectBindingPattern) return undefined;\n return pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const existing = paramType.findNode?.((node) => {\n return node.name === elem.name.getText().trim();\n });\n if (existing && existing.__schema !== 'InferenceTypeSchema') {\n return existing;\n }\n const info = await context.getQuickInfo(elem.name);\n const parsed = info ? parseTypeFromQuickInfo(info) : elem.getText();\n const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;\n return new InferenceTypeSchema(\n context.getLocation(elem.name),\n parsed,\n elem.name.getText(),\n defaultValue,\n Boolean(elem.dotDotDotToken)\n );\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_semanticsEntities","_pMapSeries","_interopRequireDefault","_parseTypeFromQuickInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ParameterTransformer","predicate","node","kind","ts","SyntaxKind","Parameter","getIdentifiers","transform","context","type","getType","ParameterSchema","getLocation","getName","Boolean","questionToken","initializer","getText","undefined","getObjectBindingNodes","dotDotDotToken","param","isIdentifier","name","elements","map","elem","elementsStr","join","ArrayBindingPattern","computeSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","pMapSeries","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error","paramType","_paramType$findNode","existing","findNode","trim","__schema","defaultValue","exports"],"sources":["parameter.ts"],"sourcesContent":["import ts, {\n BindingElement,\n isIdentifier,\n Node,\n ParameterDeclaration,\n SyntaxKind,\n ArrayBindingElement,\n} from 'typescript';\nimport {\n InferenceTypeSchema,\n ParameterSchema,\n SchemaNode,\n TupleTypeSchema,\n TypeLiteralSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class ParameterTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Parameter;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ParameterDeclaration, context: SchemaExtractorContext) {\n const type = await this.getType(node, context);\n return new ParameterSchema(\n context.getLocation(node),\n ParameterTransformer.getName(node),\n type,\n Boolean(node.questionToken) || Boolean(node.initializer),\n node.initializer ? node.initializer.getText() : undefined,\n undefined,\n await ParameterTransformer.getObjectBindingNodes(node, type, context),\n Boolean(node.dotDotDotToken)\n );\n }\n\n static getName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n }\n\n async getType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n return context.computeSchema(param.type);\n }\n\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n }\n\n static async getObjectBindingNodes(\n param: ParameterDeclaration,\n paramType: SchemaNode,\n context: SchemaExtractorContext\n ): Promise<SchemaNode[] | undefined> {\n if (param.name.kind !== SyntaxKind.ObjectBindingPattern) return undefined;\n return pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const existing = paramType.findNode?.((node) => {\n return node.name === elem.name.getText().trim();\n });\n if (existing && existing.__schema !== 'InferenceTypeSchema') {\n return existing;\n }\n const info = await context.getQuickInfo(elem.name);\n const parsed = info ? parseTypeFromQuickInfo(info) : elem.getText();\n const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;\n return new InferenceTypeSchema(\n context.getLocation(elem.name),\n parsed,\n elem.name.getText(),\n defaultValue,\n Boolean(elem.dotDotDotToken)\n );\n });\n }\n}\n"],"mappings":"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"}
@@ -46,7 +46,7 @@ class PropertyDeclarationTransformer {
46
46
  const displaySig = (info === null || info === void 0 || (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || node.getText();
47
47
  const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
48
48
  const type = await context.resolveType(node, typeStr);
49
- const isOptional = Boolean(node.questionToken);
49
+ const isOptional = Boolean(node.questionToken) || Boolean(node.initializer);
50
50
  const doc = await context.jsDocToDocSchema(node);
51
51
  const defaultValue = node.initializer ? node.initializer.getText() : undefined;
52
52
  return new (_semanticsEntities().VariableLikeSchema)(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","require","_semanticsEntities","_parseTypeFromQuickInfo","PropertyDeclarationTransformer","predicate","node","kind","SyntaxKind","PropertyDeclaration","PropertySignature","getIdentifiers","isComputedProperty","name","ComputedPropertyName","transform","context","_info$body","getText","info","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","doc","jsDocToDocSchema","defaultValue","initializer","VariableLikeSchema","getLocation","exports"],"sources":["property-declaration.ts"],"sourcesContent":["import { Node, PropertyDeclaration, PropertySignature, SyntaxKind } from 'typescript';\nimport { VariableLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class PropertyDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n // [computedName]: string\n private isComputedProperty(node: PropertyDeclaration | PropertySignature) {\n return node.name.kind === SyntaxKind.ComputedPropertyName;\n }\n\n // @todo - handle arrow function objects\n async transform(node: PropertyDeclaration | PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || node.getText();\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n const isOptional = Boolean(node.questionToken);\n const doc = await context.jsDocToDocSchema(node);\n const defaultValue = node.initializer ? node.initializer.getText() : undefined;\n return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAMI,8BAA8B,CAA8B;EACvEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,mBAAmB,IAAIH,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACE,iBAAiB;EACnG;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;;EAEA;EACQC,kBAAkBA,CAACN,IAA6C,EAAE;IACxE,OAAOA,IAAI,CAACO,IAAI,CAACN,IAAI,KAAKC,wBAAU,CAACM,oBAAoB;EAC3D;;EAEA;EACA,MAAMC,SAASA,CAACT,IAA6C,EAAEU,OAA+B,EAAE;IAAA,IAAAC,UAAA;IAC9F,MAAMJ,IAAI,GAAGP,IAAI,CAACO,IAAI,CAACK,OAAO,CAAC,CAAC;IAChC,MAAMC,IAAI,GAAG,IAAI,CAACP,kBAAkB,CAACN,IAAI,CAAC,GAAGc,SAAS,GAAG,MAAMJ,OAAO,CAACK,YAAY,CAACf,IAAI,CAACO,IAAI,CAAC;IAC9F,MAAMS,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,gBAAAF,UAAA,GAAJE,IAAI,CAAEI,IAAI,cAAAN,UAAA,uBAAVA,UAAA,CAAYO,aAAa,KAAIlB,IAAI,CAACY,OAAO,CAAC,CAAC;IAC9D,MAAMO,OAAO,GAAG,IAAAC,gDAAsB,EAACP,IAAI,CAAC;IAC5C,MAAMQ,IAAI,GAAG,MAAMX,OAAO,CAACY,WAAW,CAACtB,IAAI,EAAEmB,OAAO,CAAC;IACrD,MAAMI,UAAU,GAAGC,OAAO,CAACxB,IAAI,CAACyB,aAAa,CAAC;IAC9C,MAAMC,GAAG,GAAG,MAAMhB,OAAO,CAACiB,gBAAgB,CAAC3B,IAAI,CAAC;IAChD,MAAM4B,YAAY,GAAG5B,IAAI,CAAC6B,WAAW,GAAG7B,IAAI,CAAC6B,WAAW,CAACjB,OAAO,CAAC,CAAC,GAAGE,SAAS;IAC9E,OAAO,KAAIgB,uCAAkB,EAACpB,OAAO,CAACqB,WAAW,CAAC/B,IAAI,CAAC,EAAEO,IAAI,EAAES,UAAU,EAAEK,IAAI,EAAEE,UAAU,EAAEG,GAAG,EAAEE,YAAY,CAAC;EACjH;AACF;AAACI,OAAA,CAAAlC,8BAAA,GAAAA,8BAAA"}
1
+ {"version":3,"names":["_typescript","data","require","_semanticsEntities","_parseTypeFromQuickInfo","PropertyDeclarationTransformer","predicate","node","kind","SyntaxKind","PropertyDeclaration","PropertySignature","getIdentifiers","isComputedProperty","name","ComputedPropertyName","transform","context","_info$body","getText","info","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","initializer","doc","jsDocToDocSchema","defaultValue","VariableLikeSchema","getLocation","exports"],"sources":["property-declaration.ts"],"sourcesContent":["import { Node, PropertyDeclaration, PropertySignature, SyntaxKind } from 'typescript';\nimport { VariableLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class PropertyDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n // [computedName]: string\n private isComputedProperty(node: PropertyDeclaration | PropertySignature) {\n return node.name.kind === SyntaxKind.ComputedPropertyName;\n }\n\n // @todo - handle arrow function objects\n async transform(node: PropertyDeclaration | PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || node.getText();\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n const isOptional = Boolean(node.questionToken) || Boolean(node.initializer);\n const doc = await context.jsDocToDocSchema(node);\n const defaultValue = node.initializer ? node.initializer.getText() : undefined;\n return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAMI,8BAA8B,CAA8B;EACvEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,mBAAmB,IAAIH,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACE,iBAAiB;EACnG;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;;EAEA;EACQC,kBAAkBA,CAACN,IAA6C,EAAE;IACxE,OAAOA,IAAI,CAACO,IAAI,CAACN,IAAI,KAAKC,wBAAU,CAACM,oBAAoB;EAC3D;;EAEA;EACA,MAAMC,SAASA,CAACT,IAA6C,EAAEU,OAA+B,EAAE;IAAA,IAAAC,UAAA;IAC9F,MAAMJ,IAAI,GAAGP,IAAI,CAACO,IAAI,CAACK,OAAO,CAAC,CAAC;IAChC,MAAMC,IAAI,GAAG,IAAI,CAACP,kBAAkB,CAACN,IAAI,CAAC,GAAGc,SAAS,GAAG,MAAMJ,OAAO,CAACK,YAAY,CAACf,IAAI,CAACO,IAAI,CAAC;IAC9F,MAAMS,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,gBAAAF,UAAA,GAAJE,IAAI,CAAEI,IAAI,cAAAN,UAAA,uBAAVA,UAAA,CAAYO,aAAa,KAAIlB,IAAI,CAACY,OAAO,CAAC,CAAC;IAC9D,MAAMO,OAAO,GAAG,IAAAC,gDAAsB,EAACP,IAAI,CAAC;IAC5C,MAAMQ,IAAI,GAAG,MAAMX,OAAO,CAACY,WAAW,CAACtB,IAAI,EAAEmB,OAAO,CAAC;IACrD,MAAMI,UAAU,GAAGC,OAAO,CAACxB,IAAI,CAACyB,aAAa,CAAC,IAAID,OAAO,CAACxB,IAAI,CAAC0B,WAAW,CAAC;IAC3E,MAAMC,GAAG,GAAG,MAAMjB,OAAO,CAACkB,gBAAgB,CAAC5B,IAAI,CAAC;IAChD,MAAM6B,YAAY,GAAG7B,IAAI,CAAC0B,WAAW,GAAG1B,IAAI,CAAC0B,WAAW,CAACd,OAAO,CAAC,CAAC,GAAGE,SAAS;IAC9E,OAAO,KAAIgB,uCAAkB,EAACpB,OAAO,CAACqB,WAAW,CAAC/B,IAAI,CAAC,EAAEO,IAAI,EAAES,UAAU,EAAEK,IAAI,EAAEE,UAAU,EAAEI,GAAG,EAAEE,YAAY,CAAC;EACjH;AACF;AAACG,OAAA,CAAAlC,8BAAA,GAAAA,8BAAA"}
@@ -26,7 +26,7 @@ class ThisTypeTransformer {
26
26
  return [];
27
27
  }
28
28
  async transform(node, context) {
29
- return new (_semanticsEntities().ThisTypeSchema)(context.getLocation(node));
29
+ return new (_semanticsEntities().ThisTypeSchema)(context.getLocation(node), 'this');
30
30
  }
31
31
  }
32
32
  exports.ThisTypeTransformer = ThisTypeTransformer;
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","require","_semanticsEntities","ThisTypeTransformer","predicate","node","kind","SyntaxKind","ThisType","getIdentifiers","transform","context","ThisTypeSchema","getLocation","exports"],"sources":["this-type.ts"],"sourcesContent":["import { Node, SyntaxKind, ThisTypeNode } from 'typescript';\nimport { ThisTypeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class ThisTypeTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.ThisType;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ThisTypeNode, context: SchemaExtractorContext) {\n return new ThisTypeSchema(context.getLocation(node));\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKO,MAAMG,mBAAmB,CAA8B;EAC5DC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,QAAQ;EAC1C;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACL,IAAkB,EAAEM,OAA+B,EAAE;IACnE,OAAO,KAAIC,mCAAc,EAACD,OAAO,CAACE,WAAW,CAACR,IAAI,CAAC,CAAC;EACtD;AACF;AAACS,OAAA,CAAAX,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["_typescript","data","require","_semanticsEntities","ThisTypeTransformer","predicate","node","kind","SyntaxKind","ThisType","getIdentifiers","transform","context","ThisTypeSchema","getLocation","exports"],"sources":["this-type.ts"],"sourcesContent":["import { Node, SyntaxKind, ThisTypeNode } from 'typescript';\nimport { ThisTypeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\nexport class ThisTypeTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.ThisType;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ThisTypeNode, context: SchemaExtractorContext) {\n return new ThisTypeSchema(context.getLocation(node), 'this');\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKO,MAAMG,mBAAmB,CAA8B;EAC5DC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,QAAQ;EAC1C;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACL,IAAkB,EAAEM,OAA+B,EAAE;IACnE,OAAO,KAAIC,mCAAc,EAACD,OAAO,CAACE,WAAW,CAACR,IAAI,CAAC,EAAE,MAAM,CAAC;EAC9D;AACF;AAACS,OAAA,CAAAX,mBAAA,GAAAA,mBAAA"}
@@ -43,9 +43,12 @@ class TypeReferenceTransformer {
43
43
  async transform(node, context) {
44
44
  const name = node.typeName.getText();
45
45
  let type = await context.resolveType(node, name, false);
46
+ if (!(type instanceof _semanticsEntities().TypeRefSchema)) {
47
+ type = new (_semanticsEntities().TypeRefSchema)(context.getLocation(node), name);
48
+ }
46
49
  if (node.typeArguments && type instanceof _semanticsEntities().TypeRefSchema) {
47
50
  const args = await (0, _pMapSeries().default)(node.typeArguments, arg => context.computeSchema(arg));
48
- type = type.withTypeArgs(args);
51
+ type.withTypeArgs(args);
49
52
  }
50
53
  return type;
51
54
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","TypeReferenceTransformer","predicate","node","kind","ts","SyntaxKind","TypeReference","getIdentifiers","transform","context","name","typeName","getText","type","resolveType","typeArguments","TypeRefSchema","args","pMapSeries","arg","computeSchema","withTypeArgs","exports"],"sources":["type-reference.ts"],"sourcesContent":["import ts, { Node, TypeReferenceNode } from 'typescript';\nimport { TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nexport class TypeReferenceTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeReference;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n let type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => context.computeSchema(arg));\n type = type.withTypeArgs(args);\n }\n return type;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKtC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,wBAAwB,CAA8B;EACjEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,aAAa;EAClD;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAAuB,EAAEO,OAA+B,EAAE;IACxE,MAAMC,IAAI,GAAGR,IAAI,CAACS,QAAQ,CAACC,OAAO,CAAC,CAAC;IACpC,IAAIC,IAAI,GAAG,MAAMJ,OAAO,CAACK,WAAW,CAACZ,IAAI,EAAEQ,IAAI,EAAE,KAAK,CAAC;IACvD,IAAIR,IAAI,CAACa,aAAa,IAAIF,IAAI,YAAYG,kCAAa,EAAE;MACvD,MAAMC,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAAChB,IAAI,CAACa,aAAa,EAAGI,GAAG,IAAKV,OAAO,CAACW,aAAa,CAACD,GAAG,CAAC,CAAC;MACtFN,IAAI,GAAGA,IAAI,CAACQ,YAAY,CAACJ,IAAI,CAAC;IAChC;IACA,OAAOJ,IAAI;EACb;AACF;AAACS,OAAA,CAAAtB,wBAAA,GAAAA,wBAAA"}
1
+ {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","TypeReferenceTransformer","predicate","node","kind","ts","SyntaxKind","TypeReference","getIdentifiers","transform","context","name","typeName","getText","type","resolveType","TypeRefSchema","getLocation","typeArguments","args","pMapSeries","arg","computeSchema","withTypeArgs","exports"],"sources":["type-reference.ts"],"sourcesContent":["import ts, { Node, TypeReferenceNode } from 'typescript';\nimport { TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nexport class TypeReferenceTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeReference;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n let type = await context.resolveType(node, name, false);\n if (!(type instanceof TypeRefSchema)) {\n type = new TypeRefSchema(context.getLocation(node), name);\n }\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => context.computeSchema(arg));\n type.withTypeArgs(args);\n }\n return type;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKtC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,wBAAwB,CAA8B;EACjEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,aAAa;EAClD;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAAuB,EAAEO,OAA+B,EAAE;IACxE,MAAMC,IAAI,GAAGR,IAAI,CAACS,QAAQ,CAACC,OAAO,CAAC,CAAC;IACpC,IAAIC,IAAI,GAAG,MAAMJ,OAAO,CAACK,WAAW,CAACZ,IAAI,EAAEQ,IAAI,EAAE,KAAK,CAAC;IACvD,IAAI,EAAEG,IAAI,YAAYE,kCAAa,CAAC,EAAE;MACpCF,IAAI,GAAG,KAAIE,kCAAa,EAACN,OAAO,CAACO,WAAW,CAACd,IAAI,CAAC,EAAEQ,IAAI,CAAC;IAC3D;IACA,IAAIR,IAAI,CAACe,aAAa,IAAIJ,IAAI,YAAYE,kCAAa,EAAE;MACvD,MAAMG,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAACjB,IAAI,CAACe,aAAa,EAAGG,GAAG,IAAKX,OAAO,CAACY,aAAa,CAACD,GAAG,CAAC,CAAC;MACtFP,IAAI,CAACS,YAAY,CAACJ,IAAI,CAAC;IACzB;IACA,OAAOL,IAAI;EACb;AACF;AAACU,OAAA,CAAAvB,wBAAA,GAAAA,wBAAA"}
@@ -26,8 +26,8 @@ function _bitError() {
26
26
  return data;
27
27
  }
28
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
29
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
30
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
31
31
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
32
32
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
33
33
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -1 +1 @@
1
- {"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_bitError","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","Promise","all","types","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version","exports"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_bitError","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","Promise","all","types","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version","exports"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
@@ -43,8 +43,8 @@ function _typescript3() {
43
43
  return data;
44
44
  }
45
45
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
47
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
46
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
47
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
48
48
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
49
49
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
50
50
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -1 +1 @@
1
- {"version":3,"names":["_logger","data","require","_typescript","_interopRequireDefault","_chai","_path","_typescript2","_typescript3","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","defaultOpts","tsconfig","types","describe","it","tsCompiler","getTsCompiler","expect","getDistPathBySrcPath","to","equal","path","join","isFileSupported","be","true","false","compileJsx","compileJs","opts","finalOpts","assign","TypescriptCompiler","TypescriptAspect","id","Logger","ts"],"sources":["typescript.compiler.spec.ts"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport ts from 'typescript';\nimport { expect } from 'chai';\nimport path from 'path';\nimport { TypescriptAspect } from './typescript.aspect';\n\nimport { TypescriptCompiler } from './typescript.compiler';\nimport type { TsCompilerOptionsWithoutTsConfig } from './compiler-options';\n\nconst defaultOpts = {\n tsconfig: {},\n types: [],\n};\n\ndescribe('TypescriptCompiler', () => {\n describe('getDistPathBySrcPath', () => {\n it('should replace the extension with .js and prepend the dist dir', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('index.ts')).to.equal(path.join('dist', 'index.js'));\n expect(tsCompiler.getDistPathBySrcPath('index.tsx')).to.equal(path.join('dist', 'index.js'));\n });\n it('should not replace the extension if the file is not supported', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('style.css')).to.equal(path.join('dist', 'style.css'));\n expect(tsCompiler.getDistPathBySrcPath('index.d.ts')).to.equal(path.join('dist', 'index.d.ts'));\n });\n });\n describe('isFileSupported', () => {\n it('should support .ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.ts')).to.be.true;\n });\n it('should support .tsx files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.tsx')).to.be.true;\n });\n it('should not support .jsx files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.false;\n });\n it('should not support .js files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.js')).to.be.false;\n });\n it('should support .jsx files when passing compileJsx', () => {\n const tsCompiler = getTsCompiler({ compileJsx: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.true;\n });\n it('should support .js files when passing compileJs', () => {\n const tsCompiler = getTsCompiler({ compileJs: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.js')).to.be.true;\n });\n it('should not support .d.ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.d.ts')).to.be.false;\n });\n });\n});\n\nfunction getTsCompiler(opts: TsCompilerOptionsWithoutTsConfig = defaultOpts) {\n const finalOpts = Object.assign({}, defaultOpts, opts);\n return new TypescriptCompiler(TypescriptAspect.id, new Logger('test'), finalOpts, ts);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_logger","data","require","_typescript","_interopRequireDefault","_chai","_path","_typescript2","_typescript3","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","defaultOpts","tsconfig","types","describe","it","tsCompiler","getTsCompiler","expect","getDistPathBySrcPath","to","equal","path","join","isFileSupported","be","true","false","compileJsx","compileJs","opts","finalOpts","assign","TypescriptCompiler","TypescriptAspect","id","Logger","ts"],"sources":["typescript.compiler.spec.ts"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport ts from 'typescript';\nimport { expect } from 'chai';\nimport path from 'path';\nimport { TypescriptAspect } from './typescript.aspect';\n\nimport { TypescriptCompiler } from './typescript.compiler';\nimport type { TsCompilerOptionsWithoutTsConfig } from './compiler-options';\n\nconst defaultOpts = {\n tsconfig: {},\n types: [],\n};\n\ndescribe('TypescriptCompiler', () => {\n describe('getDistPathBySrcPath', () => {\n it('should replace the extension with .js and prepend the dist dir', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('index.ts')).to.equal(path.join('dist', 'index.js'));\n expect(tsCompiler.getDistPathBySrcPath('index.tsx')).to.equal(path.join('dist', 'index.js'));\n });\n it('should not replace the extension if the file is not supported', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('style.css')).to.equal(path.join('dist', 'style.css'));\n expect(tsCompiler.getDistPathBySrcPath('index.d.ts')).to.equal(path.join('dist', 'index.d.ts'));\n });\n });\n describe('isFileSupported', () => {\n it('should support .ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.ts')).to.be.true;\n });\n it('should support .tsx files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.tsx')).to.be.true;\n });\n it('should not support .jsx files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.false;\n });\n it('should not support .js files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.js')).to.be.false;\n });\n it('should support .jsx files when passing compileJsx', () => {\n const tsCompiler = getTsCompiler({ compileJsx: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.true;\n });\n it('should support .js files when passing compileJs', () => {\n const tsCompiler = getTsCompiler({ compileJs: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.js')).to.be.true;\n });\n it('should not support .d.ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.d.ts')).to.be.false;\n });\n });\n});\n\nfunction getTsCompiler(opts: TsCompilerOptionsWithoutTsConfig = defaultOpts) {\n const finalOpts = Object.assign({}, defaultOpts, opts);\n return new TypescriptCompiler(TypescriptAspect.id, new Logger('test'), finalOpts, ts);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/typescript",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "homepage": "https://bit.cloud/teambit/typescript/typescript",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.typescript",
8
8
  "name": "typescript",
9
- "version": "1.0.8"
9
+ "version": "1.0.10"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -20,25 +20,25 @@
20
20
  "core-js": "^3.0.0",
21
21
  "@babel/runtime": "7.20.0",
22
22
  "@teambit/harmony": "0.4.6",
23
- "@teambit/compiler": "1.0.8",
23
+ "@teambit/compiler": "1.0.10",
24
24
  "@teambit/typescript.modules.ts-config-mutator": "0.0.78",
25
- "@teambit/builder": "1.0.8",
26
- "@teambit/isolator": "1.0.8",
27
- "@teambit/component": "1.0.8",
28
- "@teambit/dependency-resolver": "1.0.8",
29
- "@teambit/formatter": "1.0.8",
30
- "@teambit/semantics.entities.semantic-schema": "0.0.58",
25
+ "@teambit/builder": "1.0.10",
26
+ "@teambit/isolator": "1.0.10",
27
+ "@teambit/component": "1.0.10",
28
+ "@teambit/dependency-resolver": "1.0.10",
29
+ "@teambit/formatter": "1.0.10",
30
+ "@teambit/semantics.entities.semantic-schema": "0.0.59",
31
31
  "@teambit/ts-server": "0.0.50",
32
- "@teambit/aspect-loader": "1.0.8",
33
- "@teambit/envs": "1.0.8",
34
- "@teambit/logger": "0.0.883",
35
- "@teambit/workspace": "1.0.8",
32
+ "@teambit/aspect-loader": "1.0.10",
33
+ "@teambit/envs": "1.0.10",
34
+ "@teambit/logger": "0.0.885",
35
+ "@teambit/workspace": "1.0.10",
36
36
  "@teambit/bit-error": "0.0.404",
37
- "@teambit/schema": "1.0.8",
38
- "@teambit/scope": "1.0.8",
39
- "@teambit/cli": "0.0.790",
40
- "@teambit/pkg": "1.0.8",
41
- "@teambit/watcher": "1.0.8"
37
+ "@teambit/schema": "1.0.10",
38
+ "@teambit/scope": "1.0.10",
39
+ "@teambit/cli": "0.0.792",
40
+ "@teambit/pkg": "1.0.10",
41
+ "@teambit/watcher": "1.0.10"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/lodash": "4.14.165",
@@ -54,7 +54,7 @@
54
54
  "@teambit/typescript.aspect-docs.typescript": "0.0.161"
55
55
  },
56
56
  "peerDependencies": {
57
- "@teambit/legacy": "1.0.570",
57
+ "@teambit/legacy": "1.0.572",
58
58
  "react": "^16.8.0 || ^17.0.0",
59
59
  "react-dom": "^16.8.0 || ^17.0.0"
60
60
  },
@@ -23,8 +23,8 @@ export class ConstructorTransformer implements SchemaTransformer {
23
23
  const args = await pMapSeries(node.parameters, async (param) => context.computeSchema(param));
24
24
  const info = await context.getQuickInfo(node);
25
25
  const displaySig = info?.body?.displayString || '';
26
-
27
- const returns = new ThisTypeSchema(context.getLocation(node.parent));
26
+ const name = node.parent?.name?.getText() || '';
27
+ const returns = new ThisTypeSchema(context.getLocation(node.parent), name);
28
28
  const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];
29
29
  const doc = await context.jsDocToDocSchema(node);
30
30
 
@@ -34,7 +34,7 @@ export class ParameterTransformer implements SchemaTransformer {
34
34
  context.getLocation(node),
35
35
  ParameterTransformer.getName(node),
36
36
  type,
37
- Boolean(node.questionToken),
37
+ Boolean(node.questionToken) || Boolean(node.initializer),
38
38
  node.initializer ? node.initializer.getText() : undefined,
39
39
  undefined,
40
40
  await ParameterTransformer.getObjectBindingNodes(node, type, context),
@@ -26,7 +26,7 @@ export class PropertyDeclarationTransformer implements SchemaTransformer {
26
26
  const displaySig = info?.body?.displayString || node.getText();
27
27
  const typeStr = parseTypeFromQuickInfo(info);
28
28
  const type = await context.resolveType(node, typeStr);
29
- const isOptional = Boolean(node.questionToken);
29
+ const isOptional = Boolean(node.questionToken) || Boolean(node.initializer);
30
30
  const doc = await context.jsDocToDocSchema(node);
31
31
  const defaultValue = node.initializer ? node.initializer.getText() : undefined;
32
32
  return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);
@@ -14,6 +14,6 @@ export class ThisTypeTransformer implements SchemaTransformer {
14
14
  }
15
15
 
16
16
  async transform(node: ThisTypeNode, context: SchemaExtractorContext) {
17
- return new ThisTypeSchema(context.getLocation(node));
17
+ return new ThisTypeSchema(context.getLocation(node), 'this');
18
18
  }
19
19
  }
@@ -24,9 +24,12 @@ export class TypeReferenceTransformer implements SchemaTransformer {
24
24
  async transform(node: TypeReferenceNode, context: SchemaExtractorContext) {
25
25
  const name = node.typeName.getText();
26
26
  let type = await context.resolveType(node, name, false);
27
+ if (!(type instanceof TypeRefSchema)) {
28
+ type = new TypeRefSchema(context.getLocation(node), name);
29
+ }
27
30
  if (node.typeArguments && type instanceof TypeRefSchema) {
28
31
  const args = await pMapSeries(node.typeArguments, (arg) => context.computeSchema(arg));
29
- type = type.withTypeArgs(args);
32
+ type.withTypeArgs(args);
30
33
  }
31
34
  return type;
32
35
  }