@teambit/typescript 1.0.551 → 1.0.553

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 +1 @@
1
- {"version":3,"names":["_tsutils","data","require","_typescript","_interopRequireWildcard","_lodash","_legacy","_path","_semanticsEntities","_pMapSeries","_interopRequireDefault","_identifierList","_parseTypeFromQuickInfo","_jsdocToDocSchema","_identifier","_exportIdentifier","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","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","schema","getIdentifierKeyForNode","node","getSourceFile","fileName","setComputed","location","__schema","key","setIdentifiers","setInternalIdentifiers","existing","uniqueIdentifiers","uniqBy","concat","k","aliasId","id","IdentifierList","findComputedSchemaByName","name","Array","from","values","filter","computeSchema","getLocation","SyntaxKind","kind","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","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","undefined","def","getDefinition","firstDef","head","definitionInfo","definition","startPosition","start","pos","nodeAtPos","getTokenAtPosition","visitDefinition","getTypeRefForExternalNode","visit","parent","Identifier","SourceFile","references","isExported","isFromComponent","getFileIdentifiers","exportDec","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","transformedApi","transform","IgnoredSchema","getCompIdByPkgName","dep","packageName","componentId","nodeIdentifierKey","nodeIdentifierList","mainIdentifierList","nodeIdentifier","mainIdentifier","parsedNodeIdentifier","parsedMainIdentifier","isExportedFromMain","resolveTypeRef","sourceFilePath","isRelativeImport","TypeRefSchema","compIdByPkg","compIdByPath","getComponentIDByPath","relativeDir","lastIndexOf","absFilePath","compFilePath","idKey","exportedIdentifier","jsDocToDocSchema","canHaveJsDoc","jsDocs","getJsDoc","jsDoc","linkComments","comment","c","JSDocLink","linkTags","map","linkComment","tagName","tagText","text","tagLocation","TagSchema","commentsWithoutLink","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, isRelativeImport } from '@teambit/legacy.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 IgnoredSchema,\n TagSchema,\n} from '@teambit/semantics.entities.semantic-schema';\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, schema: string) {\n return `${filePath}:${line}:${character}__${schema}`;\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, __schema } = node;\n const key = this.getComputedNodeKey(location, __schema);\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, SyntaxKind[node.kind]);\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 let transformedApi = apiTransformer ? await apiTransformer.transform(schemaNode, this) : schemaNode;\n if (!transformedApi) {\n transformedApi = new IgnoredSchema(schemaNode);\n }\n return transformedApi;\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\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\n const location = this.getLocation(jsDoc);\n // Extract link comments and filter them out from the main comment\n const linkComments = (\n typeof jsDoc.comment !== 'string' ? (jsDoc.comment?.filter((c) => c.kind === ts.SyntaxKind.JSDocLink) ?? []) : []\n ) as ts.JSDocLink[];\n const linkTags = linkComments.map((linkComment) => {\n const tagName = 'link';\n const tagText = `${linkComment.name?.getText() ?? ''}${linkComment.text ?? ''}`;\n const tagLocation = this.getLocation(linkComment);\n return new TagSchema(tagLocation, tagName, tagText);\n });\n\n const commentsWithoutLink = (typeof jsDoc.comment !== 'string'\n ? (jsDoc.comment?.filter((c) => c.kind !== ts.SyntaxKind.JSDocLink) ?? '')\n : jsDoc.comment) as unknown as ts.NodeArray<ts.JSDocComment>;\n\n const comment = getTextOfJSDocComment(commentsWithoutLink);\n\n const tags = (jsDoc.tags ? await pMapSeries(jsDoc.tags, (tag) => tagParser(tag, this, this.formatter)) : []).concat(\n linkTags\n );\n\n return new DocSchema(location, jsDoc.getText(), comment, tags);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_tsutils","data","require","_typescript","_interopRequireWildcard","_lodash","_legacy","_path","_semanticsEntities","_pMapSeries","_interopRequireDefault","_identifierList","_parseTypeFromQuickInfo","_jsdocToDocSchema","_identifier","_exportIdentifier","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","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","schema","getIdentifierKeyForNode","node","getSourceFile","fileName","setComputed","location","__schema","key","setIdentifiers","setInternalIdentifiers","existing","uniqueIdentifiers","uniqBy","concat","k","aliasId","id","IdentifierList","findComputedSchemaByName","name","Array","from","values","filter","computeSchema","getLocation","SyntaxKind","kind","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","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","undefined","def","getDefinition","firstDef","head","definitionInfo","definition","startPosition","start","pos","nodeAtPos","getTokenAtPosition","visitDefinition","getTypeRefForExternalNode","visit","parent","Identifier","SourceFile","references","isExported","isFromComponent","getFileIdentifiers","exportDec","specifierPathStr","ExportDeclaration","moduleSpecifier","getText","specifierPath","absPath","resolve","getIdentifiers","getFileExports","identifier","ExportIdentifier","isExportIdentifier","getFileInternals","computeIdentifiers","headTypeDefinition","headDefinition","unknownExactType","typeStr","isArrayType","baseType","getArrayBaseType","baseTypeRef","getTypeRef","TypeArraySchema","InferenceTypeSchema","typeRef","info","returnType","extractMethodReturnType","createMethodReturnSchema","createFunctionSchema","createObjectSchema","innerType","extractGenericType","createPromiseSchema","endsWith","slice","match","exec","returnTypeMatch","trim","type","wrapper","signature","FunctionLikeSchema","paramsStr","returnTypeStr","params","createFunctionParameters","paramSchemas","param","nameWithOptional","map","s","isOptional","push","ParameterSchema","objMatch","objContent","properties","prop","Boolean","ArrayLiteralExpressionSchema","isDefInSameLocation","loc","resolveType","internalRef","ts","isTypeNode","definitionNode","definitionNodeName","definitionInternalRef","transformer","getTransformer","getTypeRefForExternalPath","schemaNode","apiTransformer","getAPITransformer","transformedApi","transform","IgnoredSchema","getCompIdByPkgName","dep","packageName","componentId","nodeIdentifierKey","nodeIdentifierList","mainIdentifierList","nodeIdentifier","mainIdentifier","parsedNodeIdentifier","parsedMainIdentifier","isExportedFromMain","normalizedPath","resolveTypeRef","sourceFilePath","isRelativeImport","TypeRefSchema","compIdByPkg","compIdByPath","getComponentIDByPath","relativeDir","lastIndexOf","absFilePath","compFilePath","idKey","exportedIdentifier","parseTypeFromQuickInfo","jsDocToDocSchema","canHaveJsDoc","jsDocs","getJsDoc","jsDoc","linkComments","comment","c","JSDocLink","linkTags","linkComment","tagName","tagText","text","tagLocation","TagSchema","commentsWithoutLink","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, isRelativeImport } from '@teambit/legacy.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 IgnoredSchema,\n TagSchema,\n TypeArraySchema,\n ArrayLiteralExpressionSchema,\n ParameterSchema,\n FunctionLikeSchema,\n} from '@teambit/semantics.entities.semantic-schema';\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, schema: string) {\n return `${filePath}:${line}:${character}__${schema}`;\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, __schema } = node;\n const key = this.getComputedNodeKey(location, __schema);\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, SyntaxKind[node.kind]);\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 ${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 /**\n * Handles type resolution for unknown or external types.\n * Attempts to:\n * 1. Get type references when possible\n * 2. Fall back to inference when references can't be found\n */\n private async unknownExactType(node: Node, location: Location, typeStr = 'any') {\n try {\n if (this.isArrayType(typeStr)) {\n const baseType = this.getArrayBaseType(typeStr);\n const currentFilePath = node.getSourceFile().fileName;\n const baseTypeRef = await this.getTypeRef(baseType, this.getIdentifierKey(currentFilePath), location);\n\n if (baseTypeRef) {\n return new TypeArraySchema(location, baseTypeRef);\n }\n\n return new TypeArraySchema(\n location,\n new InferenceTypeSchema(location, baseType)\n );\n }\n\n const currentFilePath = node.getSourceFile().fileName;\n const typeRef = await this.getTypeRef(typeStr, this.getIdentifierKey(currentFilePath), location);\n if (typeRef) {\n return typeRef;\n }\n\n const info = await this.getQuickInfo(node);\n if (!info?.body?.displayString) {\n return new InferenceTypeSchema(location, typeStr || 'any');\n }\n\n const { displayString, kind } = info.body;\n\n if (kind === 'method') {\n const returnType = this.extractMethodReturnType(displayString);\n return await this.createMethodReturnSchema(node, location, returnType);\n }\n\n if (kind === 'function' || displayString.includes('=>')) {\n return await this.createFunctionSchema(node, location, displayString);\n }\n\n if (displayString.includes('{') && displayString.includes('}')) {\n return this.createObjectSchema(node, location, displayString);\n }\n\n if (displayString.includes('Promise<')) {\n const innerType = this.extractGenericType(displayString, 'Promise');\n return await this.createPromiseSchema(node, location, innerType);\n }\n\n return new InferenceTypeSchema(location, typeStr || 'any');\n } catch {\n return new InferenceTypeSchema(location, typeStr || 'any');\n }\n }\n\n /**\n * Check if type is an array type (either T[] or Array<T>)\n */\n private isArrayType(typeStr: string): boolean {\n return typeStr.endsWith('[]') || typeStr.startsWith('Array<');\n }\n\n /**\n * Extract base type from array type\n */\n private getArrayBaseType(typeStr: string): string {\n if (typeStr.endsWith('[]')) {\n return typeStr.slice(0, -2);\n }\n if (typeStr.startsWith('Array<')) {\n const match = /Array<(.+)>/.exec(typeStr);\n return match?.[1] || 'any';\n }\n return typeStr;\n }\n\n /**\n * Extract return type from method signature\n */\n private extractMethodReturnType(displayString: string): string {\n const returnTypeMatch = displayString.match(/\\):\\s*(.+)$/);\n return returnTypeMatch ? returnTypeMatch[1].trim() : 'any';\n }\n\n /**\n * Extract content from generic type\n */\n private extractGenericType(type: string, wrapper: string): string {\n const match = new RegExp(`${wrapper}<(.+)>`).exec(type);\n return match ? match[1].trim() : type;\n }\n\n /**\n * Create schema for method return type, attempting to get type reference\n */\n private async createMethodReturnSchema(node: Node, location: Location, returnType: string): Promise<SchemaNode> {\n if (this.isArrayType(returnType)) {\n const baseType = this.getArrayBaseType(returnType);\n const currentFilePath = node.getSourceFile().fileName;\n const baseTypeRef = await this.getTypeRef(baseType, this.getIdentifierKey(currentFilePath), location);\n\n if (baseTypeRef) {\n return new TypeArraySchema(location, baseTypeRef);\n }\n return new TypeArraySchema(location, new InferenceTypeSchema(location, baseType));\n }\n\n const typeRef = await this.getTypeRef(returnType, this.getIdentifierKeyForNode(node), location);\n return typeRef || new InferenceTypeSchema(location, returnType);\n }\n\n /**\n * Create schema for function type, handling params and return type\n */\n private async createFunctionSchema(node: Node, location: Location, signature: string): Promise<FunctionLikeSchema> {\n const match = signature.match(/\\((.*)\\)\\s*(?:=>|:)\\s*(.+)/);\n if (!match) {\n return new FunctionLikeSchema(\n location,\n 'anonymous',\n [],\n new InferenceTypeSchema(location, 'any'),\n signature\n );\n }\n\n const [, paramsStr, returnTypeStr] = match;\n const params = await this.createFunctionParameters(node, location, paramsStr);\n const returnType = await this.createMethodReturnSchema(node, location, returnTypeStr.trim());\n\n return new FunctionLikeSchema(\n location,\n 'anonymous',\n params,\n returnType,\n signature\n );\n }\n\n /**\n * Create parameters for function schema, attempting to get type references for param types\n */\n private async createFunctionParameters(\n node: Node, location: Location, paramsStr: string): Promise<ParameterSchema[]> {\n if (!paramsStr.trim()) return [];\n\n const params = paramsStr.split(',');\n const paramSchemas: ParameterSchema[] = [];\n\n for (const param of params) {\n const [nameWithOptional, type] = param.split(':').map(s => s.trim());\n const isOptional = nameWithOptional.includes('?');\n const name = nameWithOptional.replace('?', '');\n\n if (!type) {\n paramSchemas.push(new ParameterSchema(\n location,\n name,\n new InferenceTypeSchema(location, 'any'),\n isOptional\n ));\n continue;\n }\n\n const currentFilePath = node.getSourceFile().fileName;\n const typeRef = await this.getTypeRef(type, this.getIdentifierKey(currentFilePath), location);\n paramSchemas.push(new ParameterSchema(\n location,\n name,\n typeRef || new InferenceTypeSchema(location, type),\n isOptional\n ));\n }\n\n return paramSchemas;\n }\n\n /**\n * Create schema for object literal type\n */\n private createObjectSchema(node: Node, location: Location, displayString: string): SchemaNode {\n const objMatch = displayString.match(/{([^}]+)}/);\n if (!objMatch) {\n return new InferenceTypeSchema(location, 'object');\n }\n\n const objContent = objMatch[1];\n const properties = objContent.split(';')\n .map(prop => prop.trim())\n .filter(Boolean)\n .map(prop => new InferenceTypeSchema(location, prop));\n\n return new ArrayLiteralExpressionSchema(properties, location);\n }\n\n /**\n * Create schema for Promise type, attempting to get type reference for the contained type\n */\n private async createPromiseSchema(node: Node, location: Location, innerType: string): Promise<SchemaNode> {\n const typeRef = await this.getTypeRef(innerType, this.getIdentifierKeyForNode(node), location);\n return typeRef || new InferenceTypeSchema(location, innerType);\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 ): 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);\n }\n\n if (this.isDefInSameLocation(node, definition)) {\n return this.unknownExactType(node, location, typeStr);\n }\n\n const definitionNode = await this.definition(definition);\n\n if (!definitionNode) {\n return this.unknownExactType(node, location, typeStr);\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);\n }\n\n const schemaNode = await this.visit(definitionNode);\n\n if (!schemaNode) {\n return this.unknownExactType(node, location, typeStr);\n }\n\n const apiTransformer = this.extractor.getAPITransformer(schemaNode);\n let transformedApi = apiTransformer ? await apiTransformer.transform(schemaNode, this) : schemaNode;\n if (!transformedApi) {\n transformedApi = new IgnoredSchema(schemaNode);\n }\n return transformedApi;\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 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 if (internalRef) {\n this.setInternalIdentifiers(parsedNodeIdentifier.normalizedPath, new IdentifierList([parsedNodeIdentifier]));\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\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\n const location = this.getLocation(jsDoc);\n // Extract link comments and filter them out from the main comment\n const linkComments = (\n typeof jsDoc.comment !== 'string' ? (jsDoc.comment?.filter((c) => c.kind === ts.SyntaxKind.JSDocLink) ?? []) : []\n ) as ts.JSDocLink[];\n const linkTags = linkComments.map((linkComment) => {\n const tagName = 'link';\n const tagText = `${linkComment.name?.getText() ?? ''}${linkComment.text ?? ''}`;\n const tagLocation = this.getLocation(linkComment);\n return new TagSchema(tagLocation, tagName, tagText);\n });\n\n const commentsWithoutLink = (typeof jsDoc.comment !== 'string'\n ? (jsDoc.comment?.filter((c) => c.kind !== ts.SyntaxKind.JSDocLink) ?? '')\n : jsDoc.comment) as unknown as ts.NodeArray<ts.JSDocComment>;\n\n const comment = getTextOfJSDocComment(commentsWithoutLink);\n\n const tags = (jsDoc.tags ? await pMapSeries(jsDoc.tags, (tag) => tagParser(tag, this, this.formatter)) : []).concat(\n linkTags\n );\n\n return new DocSchema(location, jsDoc.getText(), comment, tags);\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAG,uBAAA,CAAAF,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,MAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,KAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,mBAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,kBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAeA,SAAAQ,YAAA;EAAA,MAAAR,IAAA,GAAAS,sBAAA,CAAAR,OAAA;EAAAO,WAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAU,gBAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,eAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,wBAAA;EAAA,MAAAX,IAAA,GAAAC,OAAA;EAAAU,uBAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,kBAAA;EAAA,MAAAZ,IAAA,GAAAC,OAAA;EAAAW,iBAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,YAAA;EAAA,MAAAb,IAAA,GAAAC,OAAA;EAAAY,WAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,kBAAA;EAAA,MAAAd,IAAA,GAAAC,OAAA;EAAAa,iBAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAuD,SAAAS,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAZ,wBAAAY,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAA,SAAAW,gBAAApB,CAAA,EAAAK,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAgB,cAAA,CAAAhB,CAAA,MAAAL,CAAA,GAAAY,MAAA,CAAAC,cAAA,CAAAb,CAAA,EAAAK,CAAA,IAAAiB,KAAA,EAAAhB,CAAA,EAAAiB,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAzB,CAAA,CAAAK,CAAA,IAAAC,CAAA,EAAAN,CAAA;AAAA,SAAAqB,eAAAf,CAAA,QAAAY,CAAA,GAAAQ,YAAA,CAAApB,CAAA,uCAAAY,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAQ,aAAApB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAN,CAAA,GAAAM,CAAA,CAAAqB,MAAA,CAAAC,WAAA,kBAAA5B,CAAA,QAAAkB,CAAA,GAAAlB,CAAA,CAAAiB,IAAA,CAAAX,CAAA,EAAAD,CAAA,uCAAAa,CAAA,SAAAA,CAAA,YAAAW,SAAA,yEAAAxB,CAAA,GAAAyB,MAAA,GAAAC,MAAA,EAAAzB,CAAA,KA3BvD;AACA;AA4BO,MAAM0B,sBAAsB,CAAC;EAYlC,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAO,IAAAC,8BAAoB,EAAC,IAAI,CAACC,0BAA0B,CAAC,IAAI,CAACC,SAAS,CAACH,QAAQ,CAACI,IAAI,CAAC,CAAC;EAC5F;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACC,YAAY;EAC1B;EAEA,IAAIC,mBAAmBA,CAAA,EAAG;IACxB,OAAO,IAAI,CAACC,oBAAoB;EAClC;EAEA,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACC,SAAS;EACvB;EAEA,IAAIC,qBAAqBA,CAAA,EAAG;IAC1B,MAAMX,QAAQ,GAAG,IAAI,CAACG,SAAS,CAACH,QAAQ;IACxC,OAAO,IAAI,CAACY,gBAAgB,CAACZ,QAAQ,CAACI,IAAI,CAAC;EAC7C;EAEA,IAAIS,qBAAqBA,CAAA,EAAG;IAC1B,OAAO,IAAI,CAACR,WAAW,CAAC9B,GAAG,CAAC,IAAI,CAACoC,qBAAqB,CAAC;EACzD;EAEAG,WAAWA,CACAC,QAAwB,EACxBZ,SAAoB,EACpBa,SAA8B,EAC9BC,aAAoC,EACpCC,iBAAyB,EACzBC,YAAoB,EACpBC,SAAqB,EAC9B;IAAA,KAPSL,QAAwB,GAAxBA,QAAwB;IAAA,KACxBZ,SAAoB,GAApBA,SAAoB;IAAA,KACpBa,SAA8B,GAA9BA,SAA8B;IAAA,KAC9BC,aAAoC,GAApCA,aAAoC;IAAA,KACpCC,iBAAyB,GAAzBA,iBAAyB;IAAA,KACzBC,YAAoB,GAApBA,YAAoB;IAAA,KACpBC,SAAqB,GAArBA,SAAqB;IA3ChC;AACF;AACA;IAFEjC,eAAA,uBAGuB,IAAIkC,GAAG,CAAyB,CAAC;IAAAlC,eAAA,+BACzB,IAAIkC,GAAG,CAAyB,CAAC;IAEhE;AACF;AACA;IAFElC,eAAA,oBAGoB,IAAIkC,GAAG,CAAqB,CAAC;IAoC/C,IAAI,CAACH,iBAAiB,GAAG,IAAAjB,8BAAoB,EAACiB,iBAAiB,CAAC;IAChE,IAAI,CAACC,YAAY,GAAG,IAAAlB,8BAAoB,EAACkB,YAAY,CAAC;EACxD;EAEAG,kBAAkBA,CAAC;IAAEC,QAAQ;IAAEC,IAAI;IAAEC;EAAoB,CAAC,EAAEC,MAAc,EAAE;IAC1E,OAAO,GAAGH,QAAQ,IAAIC,IAAI,IAAIC,SAAS,KAAKC,MAAM,EAAE;EACtD;EAEAC,uBAAuBA,CAACC,IAAU,EAAE;IAClC,MAAML,QAAQ,GAAGK,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ;IAC9C,OAAO,IAAI,CAAClB,gBAAgB,CAACW,QAAQ,CAAC;EACxC;EAEAX,gBAAgBA,CAACW,QAAgB,EAAE;IACjC,OAAO,IAAAtB,8BAAoB,EAACsB,QAAQ,CAAC;EACvC;EAEAQ,WAAWA,CAACH,IAAgB,EAAE;IAC5B,MAAM;MAAEI,QAAQ;MAAEC;IAAS,CAAC,GAAGL,IAAI;IACnC,MAAMM,GAAG,GAAG,IAAI,CAACZ,kBAAkB,CAACU,QAAQ,EAAEC,QAAQ,CAAC;IACvD,IAAI,CAACxB,QAAQ,CAACvB,GAAG,CAACgD,GAAG,EAAEN,IAAI,CAAC;EAC9B;EAEAO,cAAcA,CAACZ,QAAgB,EAAElB,WAA2B,EAAE;IAC5D,IAAI,CAACC,YAAY,CAACpB,GAAG,CAAC,IAAI,CAAC0B,gBAAgB,CAACW,QAAQ,CAAC,EAAElB,WAAW,CAAC;EACrE;EAEA+B,sBAAsBA,CAACb,QAAgB,EAAElB,WAA2B,EAAE;IACpE,MAAMgC,QAAQ,GAAG,IAAI,CAAC7B,oBAAoB,CAACjC,GAAG,CAACgD,QAAQ,CAAC;IACxD,IAAI,CAACc,QAAQ,EAAE;MACb,IAAI,CAAC7B,oBAAoB,CAACtB,GAAG,CAACqC,QAAQ,EAAElB,WAAW,CAAC;IACtD,CAAC,MAAM;MACL,MAAMiC,iBAAiB,GAAG,IAAAC,gBAAM,EAACF,QAAQ,CAAChC,WAAW,CAACmC,MAAM,CAACnC,WAAW,CAACA,WAAW,CAAC,EAAGoC,CAAC,IAAKA,CAAC,CAACC,OAAO,IAAID,CAAC,CAACE,EAAE,CAAC;MAChH,IAAI,CAACnC,oBAAoB,CAACtB,GAAG,CAACqC,QAAQ,EAAE,KAAIqB,gCAAc,EAACN,iBAAiB,CAAC,CAAC;IAChF;EACF;EAEAO,wBAAwBA,CAACC,IAAY,EAAE;IACrC,MAAMrC,QAAQ,GAAGsC,KAAK,CAACC,IAAI,CAAC,IAAI,CAACvC,QAAQ,CAACwC,MAAM,CAAC,CAAC,CAAC;IACnD,OAAOxC,QAAQ,CAACyC,MAAM,CAAExB,MAAM,IAAKA,MAAM,CAACoB,IAAI,KAAKA,IAAI,CAAC;EAC1D;EAEA,MAAMK,aAAaA,CAACvB,IAAU,EAAuB;IACnD,MAAMI,QAAQ,GAAG,IAAI,CAACoB,WAAW,CAACxB,IAAI,CAAC;IACvC,MAAMM,GAAG,GAAG,IAAI,CAACZ,kBAAkB,CAACU,QAAQ,EAAEqB,wBAAU,CAACzB,IAAI,CAAC0B,IAAI,CAAC,CAAC;IACpE,MAAMC,sBAAsB,GAAG,IAAI,CAAC9C,QAAQ,CAAClC,GAAG,CAAC2D,GAAG,CAAC;IACrD,IAAIqB,sBAAsB,EAAE;MAC1B,OAAOA,sBAAsB;IAC/B;IACA,MAAMC,cAAc,GAAG,MAAM,IAAI,CAACxC,SAAS,CAACmC,aAAa,CAACvB,IAAI,EAAE,IAAI,CAAC;IACrE,IAAI,CAACG,WAAW,CAACyB,cAAc,CAAC;IAChC,OAAOA,cAAc;EACvB;EAEA,MAAMC,mBAAmBA,CAAC/B,MAAkB,EAAE;IAC5C,OAAO,IAAI,CAACV,SAAS,CAAC0C,YAAY,CAAChC,MAAM,EAAE,IAAI,CAAC;EAClD;;EAEA;AACF;AACA;EACE0B,WAAWA,CAACxB,IAAU,EAAE+B,gBAAgC,EAAEC,YAAY,GAAG,KAAK,EAAY;IACxF,MAAMC,UAAU,GAAGF,gBAAgB,IAAI/B,IAAI,CAACC,aAAa,CAAC,CAAC;IAC3D,MAAMN,QAAQ,GAAGqC,YAAY,GAAGC,UAAU,CAAC/B,QAAQ,GAAG,IAAI,CAAC5B,0BAA0B,CAAC2D,UAAU,CAAC/B,QAAQ,CAAC;IAC1G,MAAMgC,QAAQ,GAAGD,UAAU,CAACE,6BAA6B,CAACnC,IAAI,CAACoC,QAAQ,CAAC,CAAC,CAAC;IAC1E,MAAMxC,IAAI,GAAGsC,QAAQ,CAACtC,IAAI,GAAG,CAAC;IAC9B,MAAMC,SAAS,GAAGqC,QAAQ,CAACrC,SAAS,GAAG,CAAC;IAExC,OAAO;MACLF,QAAQ,EAAE,IAAAtB,8BAAoB,EAACsB,QAAQ,CAAC;MACxCC,IAAI;MACJC;IACF,CAAC;EACH;EAEAwC,mBAAmBA,CAACrC,IAAU,EAAU;IACtC,MAAMI,QAAQ,GAAG,IAAI,CAACoB,WAAW,CAACxB,IAAI,CAAC;IACvC,OAAO,GAAGA,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ,WAAWE,QAAQ,CAACR,IAAI,gBAAgBQ,QAAQ,CAACP,SAAS,EAAE;EACrG;EAEAvB,0BAA0BA,CAACqB,QAAgB,EAAU;IACnD,MAAM2C,QAAQ,GAAG,IAAI,CAAC/D,SAAS,CAACgE,UAAU,CAACC,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI;IACxD,OAAO,IAAAC,gBAAQ,EAACJ,QAAQ,EAAE3C,QAAQ,CAAC;EACrC;;EAEA;AACF;AACA;EACE,MAAMgD,YAAYA,CAAC3C,IAAU,EAAE;IAC7B,OAAO,IAAI,CAACb,QAAQ,CAACyD,gBAAgB,CAAC,IAAI,CAACC,OAAO,CAAC7C,IAAI,CAAC,EAAE,IAAI,CAACwB,WAAW,CAACxB,IAAI,CAAC,CAAC;EACnF;;EAEA;AACF;AACA;EACE8C,WAAWA,CAACb,UAAyB,EAAErC,IAAY,EAAEmD,MAAc,EAAU;IAC3E,OAAOd,UAAU,CAACe,6BAA6B,CAACpD,IAAI,GAAG,CAAC,EAAEmD,MAAM,GAAG,CAAC,CAAC;EACvE;;EAEA;AACF;AACA;EACEF,OAAOA,CAAC7C,IAAU,EAAE;IAClB,MAAMiC,UAAU,GAAGjC,IAAI,CAACC,aAAa,CAAC,CAAC;IAEvC,MAAMC,QAAQ,GAAG+B,UAAU,CAAC/B,QAAQ;IAEpC,IAAI,CAACA,QAAQ,CAAC+C,UAAU,CAAC,IAAI,CAAC3D,iBAAiB,CAAC,IAAI,CAACY,QAAQ,CAAC+C,UAAU,CAAC,IAAI,CAAC1D,YAAY,CAAC,EAAE;MAC3F,OAAO,IAAA2D,YAAI,EAAC,IAAI,CAAC5D,iBAAiB,EAAEY,QAAQ,CAAC;IAC/C;IAEA,OAAO+B,UAAU,CAAC/B,QAAQ;EAC5B;EAEA,MAAMiD,YAAYA,CAACnD,IAAU,EAAE;IAC7B,MAAMI,QAAQ,GAAG,IAAI,CAACoB,WAAW,CAACxB,IAAI,CAAC;IACvC,IAAI;MACF,OAAO,MAAM,IAAI,CAACb,QAAQ,CAACgE,YAAY,CAAC,IAAI,CAACN,OAAO,CAAC7C,IAAI,CAAC,EAAEI,QAAQ,CAAC;IACvE,CAAC,CAAC,OAAOgD,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACC,OAAO,KAAK,uBAAuB,EAAE;QAC3C,MAAM,IAAIC,KAAK,CACb,iDAAiD,IAAI,CAACT,OAAO,CAAC7C,IAAI,CAAC,QAAQI,QAAQ,CAACR,IAAI,SAASQ,QAAQ,CAACP,SAAS,EAErH,CAAC;MACH;MACA,MAAMuD,GAAG;IACX;EACF;EAEA,MAAMG,yBAAyBA,CAACvD,IAAU,EAAmB;IAC3D,MAAMwD,SAAS,GAAG,MAAM,IAAI,CAACL,YAAY,CAACnD,IAAI,CAAC;IAC/C,OAAOwD,SAAS,EAAEC,IAAI,EAAEC,aAAa,IAAI,EAAE;EAC7C;;EAEA;AACF;AACA;EACEC,cAAcA,CAAC3D,IAAU,EAAE;IACzB,OAAO,IAAI,CAACb,QAAQ,CAACyE,iBAAiB,CAAC,IAAI,CAACf,OAAO,CAAC7C,IAAI,CAAC,EAAE,IAAI,CAACwB,WAAW,CAACxB,IAAI,CAAC,CAAC;EACpF;EAEA6D,mBAAmBA,CAAA,EAAG,CAAE;EAEhBC,uBAAuBA,CAACnE,QAAgB,EAAE;IAChD,MAAMoE,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;IAClD,MAAMC,aAAa,GAAG,IAAAC,eAAO,EAACtE,QAAQ,CAAC,CAACuE,SAAS,CAAC,CAAC,CAAC;IAEpD,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;MACrC,IAAIJ,eAAe,CAACK,QAAQ,CAACJ,aAAa,CAAC,EAAE;QAC3C,OAAOrE,QAAQ,CAAC0E,OAAO,CAAC,IAAIC,MAAM,CAAC,MAAMN,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC;MACjE;MACA,OAAOrE,QAAQ;IACjB,CAAC;IAED,IAAI,CAAC,IAAA4E,kBAAU,EAAC5E,QAAQ,CAAC,EAAE;MACzB,OAAOwE,wBAAwB,CAAC,CAAC;IACnC;IAEA,IAAIxE,QAAQ,CAACsD,UAAU,CAAC,IAAI,CAAC3D,iBAAiB,CAAC,EAAE;MAC/C,OAAO,IAAAoD,gBAAQ,EAAC,IAAI,CAACpD,iBAAiB,EAAE6E,wBAAwB,CAAC,CAAC,CAAC;IACrE;IACA,IAAIxE,QAAQ,CAACsD,UAAU,CAAC,IAAI,CAAC1D,YAAY,CAAC,EAAE;MAC1C,OAAO,IAAAmD,gBAAQ,EAAC,IAAI,CAACnD,YAAY,EAAE4E,wBAAwB,CAAC,CAAC,CAAC;IAChE;IACA,OAAOA,wBAAwB,CAAC,CAAC;EACnC;EAEQK,WAAWA,CAAC7E,QAAgB,EAAE8E,eAAuB,EAAE;IAC7D,MAAMC,aAAa,GAAG,IAAAxB,YAAI,EAACvD,QAAQ,EAAE,OAAO,CAAC;IAC7C,OAAO,IAAAtB,8BAAoB,EAACqG,aAAa,CAAC,KAAKD,eAAe;EAChE;EAEAE,mBAAmBA,CAAChF,QAAgB,EAAE;IACpC,MAAMiF,kBAAkB,GAAG,IAAAvG,8BAAoB,EAACsB,QAAQ,CAAC;IACzD,MAAMkF,6BAA6B,GAAG,IAAI,CAACf,uBAAuB,CAACc,kBAAkB,CAAC;IAEtF,MAAME,YAAY,GAAG,IAAI,CAACvG,SAAS,CAACgE,UAAU,CAACC,KAAK,CAACuC,IAAI,CAAEC,IAAI,IAAK;MAClE,MAAMP,eAAe,GAAG,IAAApG,8BAAoB,EAAC2G,IAAI,CAACxG,IAAI,CAAC;MACvD,MAAMyG,+BAA+B,GAAG,IAAI,CAACnB,uBAAuB,CAACW,eAAe,CAAC;MAErF,MAAMS,cAAc,GAAGL,6BAA6B,KAAKI,+BAA+B;MAExF,MAAME,OAAO,GACXD,cAAc,IAAI,IAAI,CAACV,WAAW,CAACK,6BAA6B,EAAEI,+BAA+B,CAAC;MAEpG,OAAOE,OAAO;IAChB,CAAC,CAAC;IACF,OAAOL,YAAY;EACrB;EAEQM,wBAAwBA,CAAC5G,IAAY,EAAE;IAC7C,MAAM6G,KAAK,GAAG7G,IAAI,CAAC8G,KAAK,CAAC,cAAc,CAAC;IAExC,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;MACtB,OAAO/G,IAAI;IACb;IAEA,MAAMgH,QAAQ,GAAGH,KAAK,CAACA,KAAK,CAACE,MAAM,GAAG,CAAC,CAAC,CAAClB,OAAO,CAACoB,WAAG,EAAE,EAAE,CAAC;IACzD,MAAMC,QAAQ,GAAGF,QAAQ,CAACF,KAAK,CAAC,GAAG,CAAC;IACpC,IAAIE,QAAQ,CAACvC,UAAU,CAAC,GAAG,CAAC,EAAE;MAC5B;MACA,OAAO,GAAGyC,QAAQ,CAAC,CAAC,CAAC,IAAIA,QAAQ,CAAC,CAAC,CAAC,EAAE;IACxC;IACA,MAAMC,OAAO,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAC3B,IAAIC,OAAO,KAAK,YAAY,EAAE;MAC5B;MACA,OAAO,EAAE;IACX;IACA,OAAOA,OAAO;EAChB;;EAEA;AACF;AACA;AACA;EACEC,4BAA4BA,CAACjG,QAAgB,EAAE;IAC7C,MAAMqF,IAAI,GAAG,IAAI,CAACL,mBAAmB,CAAChF,QAAQ,CAAC;IAC/C,OAAOqF,IAAI,IAAI,IAAI,CAAC5F,SAAS,CAACyG,eAAe,CAACb,IAAI,CAAC;EACrD;EAEA,MAAMc,qBAAqBA,CAAC9F,IAAU,EAAE;IACtC,MAAML,QAAQ,GAAG,MAAM,IAAI,CAACoG,iBAAiB,CAAC/F,IAAI,CAAC;IACnD,IAAI,CAACL,QAAQ,EAAE;MACb,OAAOqG,SAAS;IAClB;IACA,OAAO,IAAI,CAACJ,4BAA4B,CAACjG,QAAQ,CAAC;EACpD;EAEA,MAAMoG,iBAAiBA,CAAC/F,IAAU,EAAE;IAClC,MAAMiG,GAAG,GAAG,MAAM,IAAI,CAAC9G,QAAQ,CAAC+G,aAAa,CAAC,IAAI,CAACrD,OAAO,CAAC7C,IAAI,CAAC,EAAE,IAAI,CAACwB,WAAW,CAACxB,IAAI,CAAC,CAAC;IAEzF,MAAMmG,QAAQ,GAAG,IAAAC,cAAI,EAACH,GAAG,EAAExC,IAAI,CAAC;IAChC,OAAO0C,QAAQ,EAAEnB,IAAI;EACvB;EAEA,MAAMqB,cAAcA,CAACrG,IAAU,EAAgD;IAC7E,MAAMI,QAAQ,GAAG,IAAI,CAACoB,WAAW,CAACxB,IAAI,CAAC;IACvC,MAAML,QAAQ,GAAG,IAAI,CAACkD,OAAO,CAAC7C,IAAI,CAAC;IAEnC,MAAMiG,GAAG,GAAG,MAAM,IAAI,CAAC9G,QAAQ,CAAC+G,aAAa,CAACvG,QAAQ,EAAES,QAAQ,CAAC;IAEjE,MAAM+F,QAAQ,GAAG,IAAAC,cAAI,EAACH,GAAG,EAAExC,IAAI,CAAC;IAEhC,OAAO0C,QAAQ;EACjB;;EAEA;AACF;AACA;EACE,MAAMG,UAAUA,CAACA,UAAmC,EAA6B;IAC/E,MAAMC,aAAa,GAAGD,UAAU,CAACE,KAAK;IACtC,MAAMvE,UAAU,GAAG,IAAI,CAAC2D,4BAA4B,CAACU,UAAU,CAACtB,IAAI,CAAC;IACrE,IAAI,CAAC/C,UAAU,EAAE;MACf;MACA,OAAO+D,SAAS;IAClB;IACA,MAAMS,GAAG,GAAG,IAAI,CAAC3D,WAAW,CAACb,UAAU,EAAEsE,aAAa,CAAC3G,IAAI,EAAE2G,aAAa,CAACxD,MAAM,CAAC;IAClF,MAAM2D,SAAS,GAAG,IAAAC,6BAAkB,EAAC1E,UAAU,EAAEwE,GAAG,CAAC;IACrD,OAAOC,SAAS;EAClB;;EAEA;AACF;AACA;EACE,MAAME,eAAeA,CAAC5G,IAAU,EAAmC;IACjE,MAAMqG,cAAc,GAAG,MAAM,IAAI,CAACA,cAAc,CAACrG,IAAI,CAAC;IACtD,IAAI,CAACqG,cAAc,EAAE;MACnB,OAAOL,SAAS;IAClB;IAEA,MAAMM,UAAU,GAAG,MAAM,IAAI,CAACA,UAAU,CAACD,cAAc,CAAC;IACxD,IAAI,CAACC,UAAU,EAAE;MACf,OAAO,IAAI,CAACO,yBAAyB,CAAC7G,IAAI,CAAC;IAC7C;IAEA,OAAO,IAAI,CAAC8G,KAAK,CAACR,UAAU,CAACS,MAAM,CAAC;EACtC;EAEA,MAAMD,KAAKA,CAAC9G,IAAU,EAAuB;IAC3C,IAAIA,IAAI,CAAC0B,IAAI,KAAKD,wBAAU,CAACuF,UAAU,IAAIhH,IAAI,CAAC+G,MAAM,CAACA,MAAM,CAACrF,IAAI,KAAKD,wBAAU,CAACwF,UAAU,EAAE;MAC5F,OAAO,IAAI,CAACH,KAAK,CAAC9G,IAAI,CAAC+G,MAAM,CAAC;IAChC;IACA,OAAO,IAAI,CAAC3H,SAAS,CAACmC,aAAa,CAACvB,IAAI,EAAE,IAAI,CAAC;EACjD;EAEAkH,UAAUA,CAAA,EAAG,CAAE;EAEfC,UAAUA,CAAA,EAAG,CAAE;EAEfC,eAAeA,CAAA,EAAG,CAAE;EAEpB,MAAMC,kBAAkBA,CAACC,SAA+C,EAAE;IACxE,MAAMtC,IAAI,GAAGsC,SAAS,CAACrH,aAAa,CAAC,CAAC,CAACC,QAAQ;IAC/C,MAAMqH,gBAAgB,GACnBD,SAAS,CAAC5F,IAAI,KAAKD,wBAAU,CAAC+F,iBAAiB,IAAIF,SAAS,CAACG,eAAe,EAAEC,OAAO,CAAC,CAAC,IAAK,EAAE;IACjG,MAAMC,aAAa,GAAGJ,gBAAgB,CAACrD,SAAS,CAAC,CAAC,EAAEqD,gBAAgB,CAAChC,MAAM,GAAG,CAAC,CAAC;IAChF,MAAMqC,OAAO,GAAG,IAAAC,eAAO,EAAC7C,IAAI,EAAE,IAAI,EAAE2C,aAAa,CAAC;IAClD,MAAM1F,UAAU,GAAG,IAAI,CAAC2D,4BAA4B,CAACgC,OAAO,CAAC;IAC7D,IAAI,CAAC3F,UAAU,EAAE,OAAO,EAAE;IAC1B,OAAO,IAAI,CAAC6F,cAAc,CAAC7F,UAAU,CAAC;EACxC;EAEA,MAAM8F,cAAcA,CAACT,SAA+C,EAAE;IACpE,MAAM7I,WAAW,GAAG,MAAM,IAAI,CAAC4I,kBAAkB,CAACC,SAAS,CAAC;IAC5D,OAAO7I,WAAW,CAAC6C,MAAM,CAAE0G,UAAU,IAAKC,oCAAgB,CAACC,kBAAkB,CAACF,UAAU,CAAC,CAAC;EAC5F;EAEA,MAAMG,gBAAgBA,CAACb,SAA+C,EAAE;IACtE,MAAM7I,WAAW,GAAG,MAAM,IAAI,CAAC4I,kBAAkB,CAACC,SAAS,CAAC;IAC5D,OAAO7I,WAAW,CAAC6C,MAAM,CAAE0G,UAAU,IAAK,CAACC,oCAAgB,CAACC,kBAAkB,CAACF,UAAU,CAAC,CAAC;EAC7F;EAEAF,cAAcA,CAAC9H,IAAU,EAAE;IACzB,OAAO,IAAI,CAACZ,SAAS,CAACgJ,kBAAkB,CAACpI,IAAI,EAAE,IAAI,CAAC;EACtD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMkG,aAAaA,CAAClG,IAAU,EAAE;IAC9B,MAAM2D,cAAc,GAAG,MAAM,IAAI,CAACA,cAAc,CAAC3D,IAAI,CAAC;IACtD,MAAMqI,kBAAkB,GAAG,IAAAjC,cAAI,EAACzC,cAAc,EAAEF,IAAI,CAAC;IACrD,IAAI4E,kBAAkB,EAAE;MACtB,OAAOA,kBAAkB;IAC3B;IAEA,MAAM/B,UAAU,GAAG,MAAM,IAAI,CAACnH,QAAQ,CAAC+G,aAAa,CAAClG,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ,EAAE,IAAI,CAACsB,WAAW,CAACxB,IAAI,CAAC,CAAC;IAC3G,MAAMsI,cAAc,GAAG,IAAAlC,cAAI,EAACE,UAAU,EAAE7C,IAAI,CAAC;IAE7C,OAAO6E,cAAc;EACvB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAcC,gBAAgBA,CAACvI,IAAU,EAAEI,QAAkB,EAAEoI,OAAO,GAAG,KAAK,EAAE;IAC9E,IAAI;MACF,IAAI,IAAI,CAACC,WAAW,CAACD,OAAO,CAAC,EAAE;QAC7B,MAAME,QAAQ,GAAG,IAAI,CAACC,gBAAgB,CAACH,OAAO,CAAC;QAC/C,MAAM/D,eAAe,GAAGzE,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ;QACrD,MAAM0I,WAAW,GAAG,MAAM,IAAI,CAACC,UAAU,CAACH,QAAQ,EAAE,IAAI,CAAC1J,gBAAgB,CAACyF,eAAe,CAAC,EAAErE,QAAQ,CAAC;QAErG,IAAIwI,WAAW,EAAE;UACf,OAAO,KAAIE,oCAAe,EAAC1I,QAAQ,EAAEwI,WAAW,CAAC;QACnD;QAEA,OAAO,KAAIE,oCAAe,EACxB1I,QAAQ,EACR,KAAI2I,wCAAmB,EAAC3I,QAAQ,EAAEsI,QAAQ,CAC5C,CAAC;MACH;MAEA,MAAMjE,eAAe,GAAGzE,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ;MACrD,MAAM8I,OAAO,GAAG,MAAM,IAAI,CAACH,UAAU,CAACL,OAAO,EAAE,IAAI,CAACxJ,gBAAgB,CAACyF,eAAe,CAAC,EAAErE,QAAQ,CAAC;MAChG,IAAI4I,OAAO,EAAE;QACX,OAAOA,OAAO;MAChB;MAEA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAAC9F,YAAY,CAACnD,IAAI,CAAC;MAC1C,IAAI,CAACiJ,IAAI,EAAExF,IAAI,EAAEC,aAAa,EAAE;QAC9B,OAAO,KAAIqF,wCAAmB,EAAC3I,QAAQ,EAAEoI,OAAO,IAAI,KAAK,CAAC;MAC5D;MAEA,MAAM;QAAE9E,aAAa;QAAEhC;MAAK,CAAC,GAAGuH,IAAI,CAACxF,IAAI;MAEzC,IAAI/B,IAAI,KAAK,QAAQ,EAAE;QACrB,MAAMwH,UAAU,GAAG,IAAI,CAACC,uBAAuB,CAACzF,aAAa,CAAC;QAC9D,OAAO,MAAM,IAAI,CAAC0F,wBAAwB,CAACpJ,IAAI,EAAEI,QAAQ,EAAE8I,UAAU,CAAC;MACxE;MAEA,IAAIxH,IAAI,KAAK,UAAU,IAAIgC,aAAa,CAACU,QAAQ,CAAC,IAAI,CAAC,EAAE;QACvD,OAAO,MAAM,IAAI,CAACiF,oBAAoB,CAACrJ,IAAI,EAAEI,QAAQ,EAAEsD,aAAa,CAAC;MACvE;MAEA,IAAIA,aAAa,CAACU,QAAQ,CAAC,GAAG,CAAC,IAAIV,aAAa,CAACU,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC9D,OAAO,IAAI,CAACkF,kBAAkB,CAACtJ,IAAI,EAAEI,QAAQ,EAAEsD,aAAa,CAAC;MAC/D;MAEA,IAAIA,aAAa,CAACU,QAAQ,CAAC,UAAU,CAAC,EAAE;QACtC,MAAMmF,SAAS,GAAG,IAAI,CAACC,kBAAkB,CAAC9F,aAAa,EAAE,SAAS,CAAC;QACnE,OAAO,MAAM,IAAI,CAAC+F,mBAAmB,CAACzJ,IAAI,EAAEI,QAAQ,EAAEmJ,SAAS,CAAC;MAClE;MAEA,OAAO,KAAIR,wCAAmB,EAAC3I,QAAQ,EAAEoI,OAAO,IAAI,KAAK,CAAC;IAC5D,CAAC,CAAC,MAAM;MACN,OAAO,KAAIO,wCAAmB,EAAC3I,QAAQ,EAAEoI,OAAO,IAAI,KAAK,CAAC;IAC5D;EACF;;EAEA;AACF;AACA;EACUC,WAAWA,CAACD,OAAe,EAAW;IAC5C,OAAOA,OAAO,CAACkB,QAAQ,CAAC,IAAI,CAAC,IAAIlB,OAAO,CAACvF,UAAU,CAAC,QAAQ,CAAC;EAC/D;;EAEA;AACF;AACA;EACU0F,gBAAgBA,CAACH,OAAe,EAAU;IAChD,IAAIA,OAAO,CAACkB,QAAQ,CAAC,IAAI,CAAC,EAAE;MAC1B,OAAOlB,OAAO,CAACmB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B;IACA,IAAInB,OAAO,CAACvF,UAAU,CAAC,QAAQ,CAAC,EAAE;MAChC,MAAM2G,KAAK,GAAG,aAAa,CAACC,IAAI,CAACrB,OAAO,CAAC;MACzC,OAAOoB,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK;IAC5B;IACA,OAAOpB,OAAO;EAChB;;EAEA;AACF;AACA;EACUW,uBAAuBA,CAACzF,aAAqB,EAAU;IAC7D,MAAMoG,eAAe,GAAGpG,aAAa,CAACkG,KAAK,CAAC,aAAa,CAAC;IAC1D,OAAOE,eAAe,GAAGA,eAAe,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,GAAG,KAAK;EAC5D;;EAEA;AACF;AACA;EACUP,kBAAkBA,CAACQ,IAAY,EAAEC,OAAe,EAAU;IAChE,MAAML,KAAK,GAAG,IAAItF,MAAM,CAAC,GAAG2F,OAAO,QAAQ,CAAC,CAACJ,IAAI,CAACG,IAAI,CAAC;IACvD,OAAOJ,KAAK,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACG,IAAI,CAAC,CAAC,GAAGC,IAAI;EACvC;;EAEA;AACF;AACA;EACE,MAAcZ,wBAAwBA,CAACpJ,IAAU,EAAEI,QAAkB,EAAE8I,UAAkB,EAAuB;IAC9G,IAAI,IAAI,CAACT,WAAW,CAACS,UAAU,CAAC,EAAE;MAChC,MAAMR,QAAQ,GAAG,IAAI,CAACC,gBAAgB,CAACO,UAAU,CAAC;MAClD,MAAMzE,eAAe,GAAGzE,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ;MACrD,MAAM0I,WAAW,GAAG,MAAM,IAAI,CAACC,UAAU,CAACH,QAAQ,EAAE,IAAI,CAAC1J,gBAAgB,CAACyF,eAAe,CAAC,EAAErE,QAAQ,CAAC;MAErG,IAAIwI,WAAW,EAAE;QACf,OAAO,KAAIE,oCAAe,EAAC1I,QAAQ,EAAEwI,WAAW,CAAC;MACnD;MACA,OAAO,KAAIE,oCAAe,EAAC1I,QAAQ,EAAE,KAAI2I,wCAAmB,EAAC3I,QAAQ,EAAEsI,QAAQ,CAAC,CAAC;IACnF;IAEA,MAAMM,OAAO,GAAG,MAAM,IAAI,CAACH,UAAU,CAACK,UAAU,EAAE,IAAI,CAACnJ,uBAAuB,CAACC,IAAI,CAAC,EAAEI,QAAQ,CAAC;IAC/F,OAAO4I,OAAO,IAAI,KAAID,wCAAmB,EAAC3I,QAAQ,EAAE8I,UAAU,CAAC;EACjE;;EAEA;AACF;AACA;EACE,MAAcG,oBAAoBA,CAACrJ,IAAU,EAAEI,QAAkB,EAAE8J,SAAiB,EAA+B;IACjH,MAAMN,KAAK,GAAGM,SAAS,CAACN,KAAK,CAAC,4BAA4B,CAAC;IAC3D,IAAI,CAACA,KAAK,EAAE;MACV,OAAO,KAAIO,uCAAkB,EAC3B/J,QAAQ,EACR,WAAW,EACX,EAAE,EACF,KAAI2I,wCAAmB,EAAC3I,QAAQ,EAAE,KAAK,CAAC,EACxC8J,SACF,CAAC;IACH;IAEA,MAAM,GAAGE,SAAS,EAAEC,aAAa,CAAC,GAAGT,KAAK;IAC1C,MAAMU,MAAM,GAAG,MAAM,IAAI,CAACC,wBAAwB,CAACvK,IAAI,EAAEI,QAAQ,EAAEgK,SAAS,CAAC;IAC7E,MAAMlB,UAAU,GAAG,MAAM,IAAI,CAACE,wBAAwB,CAACpJ,IAAI,EAAEI,QAAQ,EAAEiK,aAAa,CAACN,IAAI,CAAC,CAAC,CAAC;IAE5F,OAAO,KAAII,uCAAkB,EAC3B/J,QAAQ,EACR,WAAW,EACXkK,MAAM,EACNpB,UAAU,EACVgB,SACF,CAAC;EACH;;EAEA;AACF;AACA;EACE,MAAcK,wBAAwBA,CACpCvK,IAAU,EAAEI,QAAkB,EAAEgK,SAAiB,EAA8B;IAC/E,IAAI,CAACA,SAAS,CAACL,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE;IAEhC,MAAMO,MAAM,GAAGF,SAAS,CAAC9E,KAAK,CAAC,GAAG,CAAC;IACnC,MAAMkF,YAA+B,GAAG,EAAE;IAE1C,KAAK,MAAMC,KAAK,IAAIH,MAAM,EAAE;MAC1B,MAAM,CAACI,gBAAgB,EAAEV,IAAI,CAAC,GAAGS,KAAK,CAACnF,KAAK,CAAC,GAAG,CAAC,CAACqF,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACb,IAAI,CAAC,CAAC,CAAC;MACpE,MAAMc,UAAU,GAAGH,gBAAgB,CAACtG,QAAQ,CAAC,GAAG,CAAC;MACjD,MAAMlD,IAAI,GAAGwJ,gBAAgB,CAACrG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;MAE9C,IAAI,CAAC2F,IAAI,EAAE;QACTQ,YAAY,CAACM,IAAI,CAAC,KAAIC,oCAAe,EACnC3K,QAAQ,EACRc,IAAI,EACJ,KAAI6H,wCAAmB,EAAC3I,QAAQ,EAAE,KAAK,CAAC,EACxCyK,UACF,CAAC,CAAC;QACF;MACF;MAEA,MAAMpG,eAAe,GAAGzE,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ;MACrD,MAAM8I,OAAO,GAAG,MAAM,IAAI,CAACH,UAAU,CAACmB,IAAI,EAAE,IAAI,CAAChL,gBAAgB,CAACyF,eAAe,CAAC,EAAErE,QAAQ,CAAC;MAC7FoK,YAAY,CAACM,IAAI,CAAC,KAAIC,oCAAe,EACnC3K,QAAQ,EACRc,IAAI,EACJ8H,OAAO,IAAI,KAAID,wCAAmB,EAAC3I,QAAQ,EAAE4J,IAAI,CAAC,EAClDa,UACF,CAAC,CAAC;IACJ;IAEA,OAAOL,YAAY;EACrB;;EAEA;AACF;AACA;EACUlB,kBAAkBA,CAACtJ,IAAU,EAAEI,QAAkB,EAAEsD,aAAqB,EAAc;IAC5F,MAAMsH,QAAQ,GAAGtH,aAAa,CAACkG,KAAK,CAAC,WAAW,CAAC;IACjD,IAAI,CAACoB,QAAQ,EAAE;MACb,OAAO,KAAIjC,wCAAmB,EAAC3I,QAAQ,EAAE,QAAQ,CAAC;IACpD;IAEA,MAAM6K,UAAU,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAC9B,MAAME,UAAU,GAAGD,UAAU,CAAC3F,KAAK,CAAC,GAAG,CAAC,CACrCqF,GAAG,CAACQ,IAAI,IAAIA,IAAI,CAACpB,IAAI,CAAC,CAAC,CAAC,CACxBzI,MAAM,CAAC8J,OAAO,CAAC,CACfT,GAAG,CAACQ,IAAI,IAAI,KAAIpC,wCAAmB,EAAC3I,QAAQ,EAAE+K,IAAI,CAAC,CAAC;IAEvD,OAAO,KAAIE,iDAA4B,EAACH,UAAU,EAAE9K,QAAQ,CAAC;EAC/D;;EAEA;AACF;AACA;EACE,MAAcqJ,mBAAmBA,CAACzJ,IAAU,EAAEI,QAAkB,EAAEmJ,SAAiB,EAAuB;IACxG,MAAMP,OAAO,GAAG,MAAM,IAAI,CAACH,UAAU,CAACU,SAAS,EAAE,IAAI,CAACxJ,uBAAuB,CAACC,IAAI,CAAC,EAAEI,QAAQ,CAAC;IAC9F,OAAO4I,OAAO,IAAI,KAAID,wCAAmB,EAAC3I,QAAQ,EAAEmJ,SAAS,CAAC;EAChE;;EAEA;EACQ+B,mBAAmBA,CAACtL,IAAU,EAAEsG,UAAwC,EAAE;IAChF,IAAIA,UAAU,CAACtB,IAAI,KAAKhF,IAAI,CAACC,aAAa,CAAC,CAAC,CAACC,QAAQ,EAAE;MACrD,OAAO,KAAK;IACd;IACA,MAAMqL,GAAG,GAAG,IAAI,CAAC/J,WAAW,CAACxB,IAAI,CAAC;IAElC,OAAOuL,GAAG,CAAC3L,IAAI,KAAK0G,UAAU,CAACE,KAAK,CAAC5G,IAAI,IAAI2L,GAAG,CAAC1L,SAAS,KAAKyG,UAAU,CAACE,KAAK,CAACzD,MAAM;EACxF;;EAEA;AACF;AACA;EACE,MAAMyI,WAAWA,CACfxL,IAAgC,EAChCwI,OAAe,EACM;IACrB,MAAMpI,QAAQ,GAAG,IAAI,CAACoB,WAAW,CAACxB,IAAI,CAAC;;IAEvC;IACA,MAAMyL,WAAW,GAAG,MAAM,IAAI,CAAC5C,UAAU,CAACL,OAAO,EAAE,IAAI,CAACzI,uBAAuB,CAACC,IAAI,CAAC,EAAEI,QAAQ,CAAC;IAEhG,IAAIqL,WAAW,EAAE,OAAOA,WAAW;;IAEnC;IACA;IACA,IAAIzL,IAAI,CAACgK,IAAI,IAAI0B,qBAAE,CAACC,UAAU,CAAC3L,IAAI,CAACgK,IAAI,CAAC,EAAE;MACzC,OAAO,IAAI,CAACzI,aAAa,CAACvB,IAAI,CAACgK,IAAI,CAAC;IACtC;IAEA,MAAM1D,UAAU,GAAG,MAAM,IAAI,CAACJ,aAAa,CAAClG,IAAI,CAAC;IAEjD,IAAI,CAACsG,UAAU,EAAE;MACf,OAAO,IAAI,CAACiC,gBAAgB,CAACvI,IAAI,EAAEI,QAAQ,EAAEoI,OAAO,CAAC;IACvD;IAEA,IAAI,IAAI,CAAC8C,mBAAmB,CAACtL,IAAI,EAAEsG,UAAU,CAAC,EAAE;MAC9C,OAAO,IAAI,CAACiC,gBAAgB,CAACvI,IAAI,EAAEI,QAAQ,EAAEoI,OAAO,CAAC;IACvD;IAEA,MAAMoD,cAAc,GAAG,MAAM,IAAI,CAACtF,UAAU,CAACA,UAAU,CAAC;IAExD,IAAI,CAACsF,cAAc,EAAE;MACnB,OAAO,IAAI,CAACrD,gBAAgB,CAACvI,IAAI,EAAEI,QAAQ,EAAEoI,OAAO,CAAC;IACvD;IAEA,MAAMqD,kBAAkB,GAAGD,cAAc,EAAElE,OAAO,CAAC,CAAC;;IAEpD;IACA,MAAMoE,qBAAqB,GAAG,MAAM,IAAI,CAACjD,UAAU,CACjDgD,kBAAkB,EAClB,IAAI,CAAC9L,uBAAuB,CAAC6L,cAAc,CAAC,EAC5CxL,QACF,CAAC;IAED,IAAI0L,qBAAqB,EAAE,OAAOA,qBAAqB;IAEvD,MAAMC,WAAW,GAAG,IAAI,CAAC3M,SAAS,CAAC4M,cAAc,CAACJ,cAAc,EAAE,IAAI,CAAC;IAEvE,IAAIG,WAAW,KAAK/F,SAAS,EAAE;MAC7B,MAAMhB,IAAI,GAAG,IAAI,CAACL,mBAAmB,CAAC2B,UAAU,CAACtB,IAAI,CAAC;MACtD,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI,CAACiH,yBAAyB,CAACzD,OAAO,EAAElC,UAAU,CAACtB,IAAI,EAAE5E,QAAQ,CAAC;MACpF,OAAO,IAAI,CAACmI,gBAAgB,CAACvI,IAAI,EAAEI,QAAQ,EAAEoI,OAAO,CAAC;IACvD;IAEA,MAAM0D,UAAU,GAAG,MAAM,IAAI,CAACpF,KAAK,CAAC8E,cAAc,CAAC;IAEnD,IAAI,CAACM,UAAU,EAAE;MACf,OAAO,IAAI,CAAC3D,gBAAgB,CAACvI,IAAI,EAAEI,QAAQ,EAAEoI,OAAO,CAAC;IACvD;IAEA,MAAM2D,cAAc,GAAG,IAAI,CAAC/M,SAAS,CAACgN,iBAAiB,CAACF,UAAU,CAAC;IACnE,IAAIG,cAAc,GAAGF,cAAc,GAAG,MAAMA,cAAc,CAACG,SAAS,CAACJ,UAAU,EAAE,IAAI,CAAC,GAAGA,UAAU;IACnG,IAAI,CAACG,cAAc,EAAE;MACnBA,cAAc,GAAG,KAAIE,kCAAa,EAACL,UAAU,CAAC;IAChD;IACA,OAAOG,cAAc;EACvB;EAEQG,kBAAkBA,CAAC7G,OAAe,EAA2B;IACnE,OAAO,IAAI,CAACtG,aAAa,CAAC0F,IAAI,CAAE0H,GAAG,IAAKA,GAAG,CAACC,WAAW,KAAK/G,OAAO,CAAC,EAAEgH,WAAW;EACnF;EAEA,MAAM9D,UAAUA,CAACL,OAAe,EAAE7I,QAAgB,EAAES,QAAkB,EAAsC;IAC1G,MAAMwM,iBAAiB,GAAG,IAAI,CAAC5N,gBAAgB,CAACW,QAAQ,CAAC;IACzD,MAAMZ,qBAAqB,GAAG,IAAI,CAACA,qBAAqB;IACxD,MAAM8N,kBAAkB,GAAG,IAAI,CAACpO,WAAW,CAAC9B,GAAG,CAACiQ,iBAAiB,CAAC;IAClE,MAAME,kBAAkB,GAAG,IAAI,CAACrO,WAAW,CAAC9B,GAAG,CAACoC,qBAAqB,CAAC;IAEtE,MAAMgO,cAAc,GAAG,KAAI/F,wBAAU,EAACwB,OAAO,EAAEoE,iBAAiB,CAAC;IACjE,MAAMI,cAAc,GAAG,KAAIhG,wBAAU,EAACwB,OAAO,EAAEzJ,qBAAqB,CAAC;IAErE,MAAMkO,oBAAoB,GAAGJ,kBAAkB,EAAE9H,IAAI,CAACgI,cAAc,CAAC;IACrE,MAAMG,oBAAoB,GAAGJ,kBAAkB,EAAE/H,IAAI,CAACiI,cAAc,CAAC;IACrE,MAAMG,kBAAkB,GAAGD,oBAAoB,IAAIjF,oCAAgB,CAACC,kBAAkB,CAACgF,oBAAoB,CAAC;IAE5G,IAAI,CAACD,oBAAoB,EAAE,OAAOjH,SAAS;IAE3C,MAAMyF,WAAW,GAAG,CAAC0B,kBAAkB;IACvC,IAAI1B,WAAW,EAAE;MACf,IAAI,CAACjL,sBAAsB,CAACyM,oBAAoB,CAACG,cAAc,EAAE,KAAIpM,gCAAc,EAAC,CAACiM,oBAAoB,CAAC,CAAC,CAAC;IAC9G;IACA,OAAO,IAAI,CAACI,cAAc,CAACJ,oBAAoB,EAAE7M,QAAQ,EAAE+M,kBAAkB,CAAC;EAChF;EAEA,MAAME,cAAcA,CAClBrF,UAAsB,EACtB5H,QAAkB,EAClB+M,kBAA4B,EACJ;IACxB,MAAMG,cAAc,GAAGtF,UAAU,CAACsF,cAAc;IAEhD,IAAI,CAACA,cAAc,IAAKH,kBAAkB,IAAI,IAAAI,0BAAgB,EAACD,cAAc,CAAE,EAAE;MAC/E,OAAO,KAAIE,kCAAa,EACtBpN,QAAQ,EACR4H,UAAU,CAACjH,EAAE,EACbiF,SAAS,EACTA,SAAS,EACT,CAACmH,kBAAkB,GAAG,IAAI,CAAC7O,0BAA0B,CAAC0J,UAAU,CAACrI,QAAQ,CAAC,GAAGqG,SAC/E,CAAC;IACH;IAEA,IAAI,CAAC,IAAAuH,0BAAgB,EAACD,cAAc,CAAC,EAAE;MACrC,MAAM3H,OAAO,GAAG,IAAI,CAACP,wBAAwB,CAACkI,cAAc,CAAC;MAC7D,MAAMG,WAAW,GAAG,IAAI,CAACjB,kBAAkB,CAAC7G,OAAO,CAAC;MAEpD,MAAM+H,YAAY,GAAG,MAAM,IAAI,CAACtO,SAAS,CAACuO,oBAAoB,CAACL,cAAc,CAAC;MAE9E,IAAII,YAAY,EAAE;QAChB,OAAO,KAAIF,kCAAa,EAACpN,QAAQ,EAAE4H,UAAU,CAACjH,EAAE,EAAE2M,YAAY,CAAC;MACjE;MAEA,IAAID,WAAW,EAAE;QACf,OAAO,KAAID,kCAAa,EAACpN,QAAQ,EAAE4H,UAAU,CAACjH,EAAE,EAAE0M,WAAW,CAAC;MAChE;;MAEA;MACA,OAAO,KAAID,kCAAa,EAACpN,QAAQ,EAAE4H,UAAU,CAACjH,EAAE,EAAEiF,SAAS,EAAEL,OAAO,CAAC;IACvE;IAEA,MAAMiI,WAAW,GAAG5F,UAAU,CAACrI,QAAQ,CAACuE,SAAS,CAAC,CAAC,EAAE8D,UAAU,CAACrI,QAAQ,CAACkO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1F,MAAMC,WAAW,GAAG,IAAAjG,eAAO,EAAC,IAAI,CAACvI,iBAAiB,EAAEsO,WAAW,EAAEN,cAAc,CAAC;IAEhF,MAAMS,YAAY,GAAG,IAAI,CAACpJ,mBAAmB,CAACmJ,WAAW,CAAC;IAC1D,IAAI,CAACC,YAAY,EAAE;MACjB;MACA,MAAM,IAAIzK,KAAK,CACb,qDAAqDgK,cAAc;AAC3E,+BAA+BtF,UAAU,CAACrI,QAAQ,kBAAkBiO,WAAW;AAC/E,sBAAsBE,WAAW,EAC3B,CAAC;MACD,OAAO,KAAIN,kCAAa,EAACpN,QAAQ,EAAE4H,UAAU,CAACjH,EAAE,CAAC;IACnD;IAEA,MAAMiN,KAAK,GAAG,IAAI,CAAChP,gBAAgB,CAAC+O,YAAY,EAAEvP,IAAI,CAAC;;IAEvD;IACA,MAAMyP,kBAAkB,GAAG,CAAC,IAAI,CAACxP,WAAW,CAAC9B,GAAG,CAACqR,KAAK,CAAC,EAAEvP,WAAW,IAAI,EAAE,EAAEsG,IAAI,CAAE1H,CAAC,IAAKA,CAAC,CAAC0D,EAAE,KAAKiH,UAAU,CAACjH,EAAE,CAAC;IAE/G,IAAIkN,kBAAkB,EAAE;MACtB,OAAO,IAAI,CAACZ,cAAc,CAACY,kBAAkB,EAAE7N,QAAQ,EAAE+M,kBAAkB,CAAC;IAC9E;IAEA,OAAO,KAAIK,kCAAa,EAACpN,QAAQ,EAAE4H,UAAU,CAACjH,EAAE,CAAC;EACnD;EAEA,MAAM8F,yBAAyBA,CAAC7G,IAAU,EAA0B;IAClE,MAAMiJ,IAAI,GAAG,MAAM,IAAI,CAAC9F,YAAY,CAACnD,IAAI,CAAC;IAC1C,MAAMwI,OAAO,GAAG,IAAA0F,gDAAsB,EAACjF,IAAI,CAAC;IAC5C,MAAM7I,QAAQ,GAAG,IAAI,CAACoB,WAAW,CAACxB,IAAI,CAAC;IACvC,MAAML,QAAQ,GAAG,IAAI,CAACkD,OAAO,CAAC7C,IAAI,CAAC;IACnC,OAAO,IAAI,CAACiM,yBAAyB,CAACzD,OAAO,EAAE7I,QAAQ,EAAES,QAAQ,CAAC;EACpE;EAEA,MAAM6L,yBAAyBA,CAACzD,OAAe,EAAE7I,QAAgB,EAAES,QAAkB,EAA0B;IAC7G,MAAMsN,YAAY,GAAG,MAAM,IAAI,CAACtO,SAAS,CAACuO,oBAAoB,CAAChO,QAAQ,CAAC;IACxE,IAAI+N,YAAY,EAAE;MAChB,OAAO,KAAIF,kCAAa,EAACpN,QAAQ,EAAEoI,OAAO,EAAEkF,YAAY,CAAC;IAC3D;IACA,MAAM/H,OAAO,GAAG,IAAI,CAACP,wBAAwB,CAACzF,QAAQ,CAAC;IACvD,MAAM8N,WAAW,GAAG,IAAI,CAACjB,kBAAkB,CAAC7G,OAAO,CAAC;IACpD,IAAI8H,WAAW,EAAE;MACf,OAAO,KAAID,kCAAa,EAACpN,QAAQ,EAAEoI,OAAO,EAAEiF,WAAW,CAAC;IAC1D;IACA,OAAO,KAAID,kCAAa,EAACpN,QAAQ,EAAEoI,OAAO,EAAExC,SAAS,EAAEL,OAAO,CAAC;EACjE;EAEA,MAAMwI,gBAAgBA,CAACnO,IAAU,EAAkC;IACjE,IAAI,CAAC,IAAAoO,uBAAY,EAACpO,IAAI,CAAC,EAAE;MACvB,OAAOgG,SAAS;IAClB;IACA,MAAMqI,MAAM,GAAG,IAAAC,mBAAQ,EAACtO,IAAI,CAAC;IAE7B,IAAI,CAACqO,MAAM,CAAC9I,MAAM,EAAE;MAClB,OAAOS,SAAS;IAClB;IACA;IACA;IACA,MAAMuI,KAAK,GAAGF,MAAM,CAAC,CAAC,CAAC;IAEvB,MAAMjO,QAAQ,GAAG,IAAI,CAACoB,WAAW,CAAC+M,KAAK,CAAC;IACxC;IACA,MAAMC,YAAY,GAChB,OAAOD,KAAK,CAACE,OAAO,KAAK,QAAQ,GAAIF,KAAK,CAACE,OAAO,EAAEnN,MAAM,CAAEoN,CAAC,IAAKA,CAAC,CAAChN,IAAI,KAAKgK,qBAAE,CAACjK,UAAU,CAACkN,SAAS,CAAC,IAAI,EAAE,GAAI,EAC9F;IACnB,MAAMC,QAAQ,GAAGJ,YAAY,CAAC7D,GAAG,CAAEkE,WAAW,IAAK;MACjD,MAAMC,OAAO,GAAG,MAAM;MACtB,MAAMC,OAAO,GAAG,GAAGF,WAAW,CAAC3N,IAAI,EAAEwG,OAAO,CAAC,CAAC,IAAI,EAAE,GAAGmH,WAAW,CAACG,IAAI,IAAI,EAAE,EAAE;MAC/E,MAAMC,WAAW,GAAG,IAAI,CAACzN,WAAW,CAACqN,WAAW,CAAC;MACjD,OAAO,KAAIK,8BAAS,EAACD,WAAW,EAAEH,OAAO,EAAEC,OAAO,CAAC;IACrD,CAAC,CAAC;IAEF,MAAMI,mBAAmB,GAAI,OAAOZ,KAAK,CAACE,OAAO,KAAK,QAAQ,GACzDF,KAAK,CAACE,OAAO,EAAEnN,MAAM,CAAEoN,CAAC,IAAKA,CAAC,CAAChN,IAAI,KAAKgK,qBAAE,CAACjK,UAAU,CAACkN,SAAS,CAAC,IAAI,EAAE,GACvEJ,KAAK,CAACE,OAAoD;IAE9D,MAAMA,OAAO,GAAG,IAAAW,mCAAqB,EAACD,mBAAmB,CAAC;IAE1D,MAAME,IAAI,GAAG,CAACd,KAAK,CAACc,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAACf,KAAK,CAACc,IAAI,EAAGE,GAAG,IAAK,IAAAC,6BAAS,EAACD,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC/P,SAAS,CAAC,CAAC,GAAG,EAAE,EAAEoB,MAAM,CACjHgO,QACF,CAAC;IAED,OAAO,KAAIa,8BAAS,EAACrP,QAAQ,EAAEmO,KAAK,CAAC7G,OAAO,CAAC,CAAC,EAAE+G,OAAO,EAAEY,IAAI,CAAC;EAChE;AACF;AAACK,OAAA,CAAAvR,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -111,7 +111,7 @@ async function exportSpecifierToSchemaNode(element, context) {
111
111
  }
112
112
  const definitionNode = await context.definition(definitionInfo);
113
113
  if (!definitionNode) {
114
- const exportNode = await context.resolveType(element, name, false);
114
+ const exportNode = await context.resolveType(element, name);
115
115
  return new (_semanticsEntities().ExportSchema)(location, name, exportNode, alias);
116
116
  }
117
117
 
@@ -1 +1 @@
1
- {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireWildcard","_exportIdentifier","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExportDeclarationTransformer","predicate","node","kind","SyntaxKind","ExportDeclaration","getIdentifiers","exportDec","context","rawSourceFilePath","moduleSpecifier","getText","sourceFilePath","substring","length","exportClause","ts","NamedExports","elements","map","elm","alias","propertyName","name","undefined","id","fileName","getSourceFile","ExportIdentifier","NamespaceExport","getFileExports","transform","specifier","Error","sourceFile","getSourceFileFromNode","UnImplementedSchema","getLocation","computeSchema","schemas","namedExport","ModuleSchema","namespaceExport","exports","isSameNode","nodeA","nodeB","pos","end","Promise","all","element","exportSpecifierToSchemaNode","location","definitionInfo","isTypeOnly","exportNode","UnresolvedSchema","ExportSchema","definitionNode","definition","resolveType","parent","getLocationAsString","ExportSpecifier","namespace","filePath","getFilePathByNode","getSourceFileInsideComponent","getTypeRefForExternalPath","result"],"sources":["export-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n ModuleSchema,\n UnresolvedSchema,\n UnImplementedSchema,\n ExportSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, {\n Node,\n SyntaxKind,\n ExportDeclaration as ExportDeclarationNode,\n NamedExports,\n NamespaceExport,\n ExportSpecifier,\n} from 'typescript';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\n\nexport class ExportDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.ExportDeclaration;\n }\n\n async getIdentifiers(exportDec: ExportDeclarationNode, context: SchemaExtractorContext) {\n // e.g. `export { button1, button2 } as Composition from './button';\n const rawSourceFilePath = exportDec.moduleSpecifier?.getText();\n\n // strip off quotes ''\n const sourceFilePath = rawSourceFilePath && rawSourceFilePath.substring(1, rawSourceFilePath?.length - 1);\n\n if (exportDec.exportClause?.kind === ts.SyntaxKind.NamedExports) {\n return exportDec.exportClause.elements.map((elm) => {\n const alias = (elm.propertyName && elm.name.getText()) || undefined;\n const id = elm.propertyName?.getText() || elm.name.getText();\n const fileName = elm.getSourceFile().fileName;\n\n return new ExportIdentifier(id, fileName, alias, sourceFilePath);\n });\n }\n\n // e.g. `export * as Composition from './button';\n if (exportDec.exportClause?.kind === ts.SyntaxKind.NamespaceExport) {\n return [\n new ExportIdentifier(\n exportDec.exportClause.name.getText(),\n exportDec.getSourceFile().fileName,\n undefined,\n sourceFilePath\n ),\n ];\n }\n\n if (exportDec.moduleSpecifier) {\n return context.getFileExports(exportDec);\n }\n\n return [];\n }\n\n async transform(exportDec: ExportDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const exportClause = exportDec.exportClause;\n\n // it's export-all, e.g. `export * from './button'`;\n if (!exportClause) {\n const specifier = exportDec.moduleSpecifier;\n if (!specifier) {\n throw new Error(`fatal: no specifier`);\n }\n const sourceFile = await context.getSourceFileFromNode(specifier);\n // export * from 'webpack', export-all from a package\n if (!sourceFile) {\n return new UnImplementedSchema(\n context.getLocation(exportDec),\n exportDec.getText(),\n SyntaxKind[SyntaxKind.ExportDeclaration]\n );\n }\n return context.computeSchema(sourceFile);\n }\n\n // e.g. `export { button1, button2 } as Composition from './button';\n if (exportClause.kind === SyntaxKind.NamedExports) {\n const schemas = await namedExport(exportClause, context);\n return new ModuleSchema(context.getLocation(exportDec), schemas, []);\n }\n // e.g. `export * as Composition from './button';\n if (exportClause.kind === SyntaxKind.NamespaceExport) {\n return namespaceExport(exportClause, exportDec, context);\n }\n\n // should never reach here. exportClause can be either NamespaceExport or NamedExports\n throw new Error(`unrecognized exportClause type`);\n }\n}\n\nfunction isSameNode(nodeA: Node, nodeB: Node): boolean {\n return nodeA.kind === nodeB.kind && nodeA.pos === nodeB.pos && nodeA.end === nodeB.end;\n}\n\nasync function namedExport(exportClause: NamedExports, context: SchemaExtractorContext): Promise<ExportSchema[]> {\n const schemas = await Promise.all(\n exportClause.elements.map(async (element) => {\n return exportSpecifierToSchemaNode(element, context);\n })\n );\n\n return schemas;\n}\n\nasync function exportSpecifierToSchemaNode(\n element: ExportSpecifier,\n context: SchemaExtractorContext\n): Promise<ExportSchema> {\n try {\n const name = element.propertyName?.getText() || element.name.getText();\n const alias = element.propertyName ? element.name.getText() : undefined;\n const location = context.getLocation(element.name);\n const definitionInfo = element.isTypeOnly\n ? await context.definitionInfo(element.name)\n : await context.definitionInfo(element);\n\n if (!definitionInfo) {\n const exportNode = new UnresolvedSchema(location, element.name.getText());\n // happens for example when the main index.ts file exports variable from an mdx file.\n // tsserver is unable to get the definition node because it doesn't know to parse mdx files.\n // return new UnresolvedSchema(context.getLocation(element.name), element.name.getText());\n return new ExportSchema(location, name, exportNode, alias);\n }\n\n const definitionNode = await context.definition(definitionInfo);\n\n if (!definitionNode) {\n const exportNode = await context.resolveType(element, name, false);\n return new ExportSchema(location, name, exportNode, alias);\n }\n\n // if it is reexported from another export\n if (isSameNode(element, definitionNode.parent)) {\n // the definition node is the same node as element.name. tsserver wasn't able to find the source for it\n // normally, \"bit install\" should fix it. another option is to open vscode and look for errors.\n throw new Error(`error: tsserver is unable to locate the identifier \"${element.name.getText()}\" at ${context.getLocationAsString(\n element.name\n )}.\nmake sure \"bit status\" is clean and there are no errors about missing packages/links.\nalso, make sure the tsconfig.json in the root has the \"jsx\" setting defined.`);\n }\n\n if (definitionNode.parent.kind === SyntaxKind.ExportSpecifier) {\n return await exportSpecifierToSchemaNode(definitionNode.parent as ExportSpecifier, context);\n }\n\n const exportNode = await context.computeSchema(definitionNode.parent);\n return new ExportSchema(location, name, exportNode, alias);\n } catch {\n const exportNode = new UnresolvedSchema(context.getLocation(element.name), element.name.getText());\n return new ExportSchema(context.getLocation(element.name), element.name.getText(), exportNode);\n }\n}\n\nasync function namespaceExport(\n exportClause: NamespaceExport,\n exportDec: ExportDeclarationNode,\n context: SchemaExtractorContext\n) {\n const namespace = exportClause.name.getText();\n const filePath = await context.getFilePathByNode(exportClause.name);\n if (!filePath) {\n throw new Error(`unable to find the file-path for \"${namespace}\"`);\n }\n const sourceFile = context.getSourceFileInsideComponent(filePath);\n if (!sourceFile) {\n // it's a namespace from another component or an external package.\n return context.getTypeRefForExternalPath(namespace, filePath, context.getLocation(exportDec));\n }\n const result = await context.computeSchema(sourceFile);\n if (!(result instanceof ModuleSchema)) {\n throw new Error(`expect result to be instance of Module`);\n }\n result.namespace = namespace;\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireWildcard","_exportIdentifier","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExportDeclarationTransformer","predicate","node","kind","SyntaxKind","ExportDeclaration","getIdentifiers","exportDec","context","rawSourceFilePath","moduleSpecifier","getText","sourceFilePath","substring","length","exportClause","ts","NamedExports","elements","map","elm","alias","propertyName","name","undefined","id","fileName","getSourceFile","ExportIdentifier","NamespaceExport","getFileExports","transform","specifier","Error","sourceFile","getSourceFileFromNode","UnImplementedSchema","getLocation","computeSchema","schemas","namedExport","ModuleSchema","namespaceExport","exports","isSameNode","nodeA","nodeB","pos","end","Promise","all","element","exportSpecifierToSchemaNode","location","definitionInfo","isTypeOnly","exportNode","UnresolvedSchema","ExportSchema","definitionNode","definition","resolveType","parent","getLocationAsString","ExportSpecifier","namespace","filePath","getFilePathByNode","getSourceFileInsideComponent","getTypeRefForExternalPath","result"],"sources":["export-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n ModuleSchema,\n UnresolvedSchema,\n UnImplementedSchema,\n ExportSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, {\n Node,\n SyntaxKind,\n ExportDeclaration as ExportDeclarationNode,\n NamedExports,\n NamespaceExport,\n ExportSpecifier,\n} from 'typescript';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\n\nexport class ExportDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.ExportDeclaration;\n }\n\n async getIdentifiers(exportDec: ExportDeclarationNode, context: SchemaExtractorContext) {\n // e.g. `export { button1, button2 } as Composition from './button';\n const rawSourceFilePath = exportDec.moduleSpecifier?.getText();\n\n // strip off quotes ''\n const sourceFilePath = rawSourceFilePath && rawSourceFilePath.substring(1, rawSourceFilePath?.length - 1);\n\n if (exportDec.exportClause?.kind === ts.SyntaxKind.NamedExports) {\n return exportDec.exportClause.elements.map((elm) => {\n const alias = (elm.propertyName && elm.name.getText()) || undefined;\n const id = elm.propertyName?.getText() || elm.name.getText();\n const fileName = elm.getSourceFile().fileName;\n\n return new ExportIdentifier(id, fileName, alias, sourceFilePath);\n });\n }\n\n // e.g. `export * as Composition from './button';\n if (exportDec.exportClause?.kind === ts.SyntaxKind.NamespaceExport) {\n return [\n new ExportIdentifier(\n exportDec.exportClause.name.getText(),\n exportDec.getSourceFile().fileName,\n undefined,\n sourceFilePath\n ),\n ];\n }\n\n if (exportDec.moduleSpecifier) {\n return context.getFileExports(exportDec);\n }\n\n return [];\n }\n\n async transform(exportDec: ExportDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const exportClause = exportDec.exportClause;\n\n // it's export-all, e.g. `export * from './button'`;\n if (!exportClause) {\n const specifier = exportDec.moduleSpecifier;\n if (!specifier) {\n throw new Error(`fatal: no specifier`);\n }\n const sourceFile = await context.getSourceFileFromNode(specifier);\n // export * from 'webpack', export-all from a package\n if (!sourceFile) {\n return new UnImplementedSchema(\n context.getLocation(exportDec),\n exportDec.getText(),\n SyntaxKind[SyntaxKind.ExportDeclaration]\n );\n }\n return context.computeSchema(sourceFile);\n }\n\n // e.g. `export { button1, button2 } as Composition from './button';\n if (exportClause.kind === SyntaxKind.NamedExports) {\n const schemas = await namedExport(exportClause, context);\n return new ModuleSchema(context.getLocation(exportDec), schemas, []);\n }\n // e.g. `export * as Composition from './button';\n if (exportClause.kind === SyntaxKind.NamespaceExport) {\n return namespaceExport(exportClause, exportDec, context);\n }\n\n // should never reach here. exportClause can be either NamespaceExport or NamedExports\n throw new Error(`unrecognized exportClause type`);\n }\n}\n\nfunction isSameNode(nodeA: Node, nodeB: Node): boolean {\n return nodeA.kind === nodeB.kind && nodeA.pos === nodeB.pos && nodeA.end === nodeB.end;\n}\n\nasync function namedExport(exportClause: NamedExports, context: SchemaExtractorContext): Promise<ExportSchema[]> {\n const schemas = await Promise.all(\n exportClause.elements.map(async (element) => {\n return exportSpecifierToSchemaNode(element, context);\n })\n );\n\n return schemas;\n}\n\nasync function exportSpecifierToSchemaNode(\n element: ExportSpecifier,\n context: SchemaExtractorContext\n): Promise<ExportSchema> {\n try {\n const name = element.propertyName?.getText() || element.name.getText();\n const alias = element.propertyName ? element.name.getText() : undefined;\n const location = context.getLocation(element.name);\n const definitionInfo = element.isTypeOnly\n ? await context.definitionInfo(element.name)\n : await context.definitionInfo(element);\n\n if (!definitionInfo) {\n const exportNode = new UnresolvedSchema(location, element.name.getText());\n // happens for example when the main index.ts file exports variable from an mdx file.\n // tsserver is unable to get the definition node because it doesn't know to parse mdx files.\n // return new UnresolvedSchema(context.getLocation(element.name), element.name.getText());\n return new ExportSchema(location, name, exportNode, alias);\n }\n\n const definitionNode = await context.definition(definitionInfo);\n\n if (!definitionNode) {\n const exportNode = await context.resolveType(element, name);\n return new ExportSchema(location, name, exportNode, alias);\n }\n\n // if it is reexported from another export\n if (isSameNode(element, definitionNode.parent)) {\n // the definition node is the same node as element.name. tsserver wasn't able to find the source for it\n // normally, \"bit install\" should fix it. another option is to open vscode and look for errors.\n throw new Error(`error: tsserver is unable to locate the identifier \"${element.name.getText()}\" at ${context.getLocationAsString(\n element.name\n )}.\nmake sure \"bit status\" is clean and there are no errors about missing packages/links.\nalso, make sure the tsconfig.json in the root has the \"jsx\" setting defined.`);\n }\n\n if (definitionNode.parent.kind === SyntaxKind.ExportSpecifier) {\n return await exportSpecifierToSchemaNode(definitionNode.parent as ExportSpecifier, context);\n }\n\n const exportNode = await context.computeSchema(definitionNode.parent);\n return new ExportSchema(location, name, exportNode, alias);\n } catch {\n const exportNode = new UnresolvedSchema(context.getLocation(element.name), element.name.getText());\n return new ExportSchema(context.getLocation(element.name), element.name.getText(), exportNode);\n }\n}\n\nasync function namespaceExport(\n exportClause: NamespaceExport,\n exportDec: ExportDeclarationNode,\n context: SchemaExtractorContext\n) {\n const namespace = exportClause.name.getText();\n const filePath = await context.getFilePathByNode(exportClause.name);\n if (!filePath) {\n throw new Error(`unable to find the file-path for \"${namespace}\"`);\n }\n const sourceFile = context.getSourceFileInsideComponent(filePath);\n if (!sourceFile) {\n // it's a namespace from another component or an external package.\n return context.getTypeRefForExternalPath(namespace, filePath, context.getLocation(exportDec));\n }\n const result = await context.computeSchema(sourceFile);\n if (!(result instanceof ModuleSchema)) {\n throw new Error(`expect result to be instance of Module`);\n }\n result.namespace = namespace;\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -66,7 +66,7 @@ class FunctionLikeTransformer {
66
66
  const returnTypeStr = info ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info) : 'any';
67
67
  const displaySig = info?.body?.displayString || '';
68
68
  const args = await (0, _pMapSeries().default)(node.parameters, async param => context.computeSchema(param));
69
- const returnType = await context.resolveType(node, returnTypeStr, Boolean(info));
69
+ const returnType = await context.resolveType(node, returnTypeStr);
70
70
  const modifiers = nodeModifiers?.map(modifier => modifier.getText()) || [];
71
71
  const typeParameters = node.typeParameters?.map(typeParam => typeParam.name.getText());
72
72
  const location = context.getLocation(node);
@@ -1 +1 @@
1
- {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","e","__esModule","default","FunctionLikeTransformer","predicate","node","kind","ts","SyntaxKind","FunctionDeclaration","ArrowFunction","MethodDeclaration","CallSignature","ConstructSignature","FunctionType","MethodSignature","getIdentifiers","funcDec","Identifier","getName","getSourceFile","fileName","name","getText","transform","context","nodeModifiers","canHaveModifiers","getModifiers","undefined","getQuickInfoFromDefaultModifier","defaultModifier","find","modifier","DefaultKeyword","getQuickInfo","equalsGreaterThanToken","info","returnTypeStr","parseTypeFromQuickInfo","displaySig","body","displayString","args","pMapSeries","parameters","param","computeSchema","returnType","resolveType","Boolean","modifiers","map","typeParameters","typeParam","location","getLocation","doc","jsDocToDocSchema","nodeDecorators","canHaveDecorators","getDecorators","decorators","length","decorator","FunctionLikeSchema","exports"],"sources":["function-like.ts"],"sourcesContent":["import { FunctionLikeSchema, ParameterSchema, SchemaNode, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, SignatureDeclaration } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class FunctionLikeTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return (\n node.kind === ts.SyntaxKind.FunctionDeclaration ||\n node.kind === ts.SyntaxKind.ArrowFunction ||\n node.kind === ts.SyntaxKind.MethodDeclaration ||\n node.kind === ts.SyntaxKind.CallSignature ||\n node.kind === ts.SyntaxKind.ConstructSignature ||\n node.kind === ts.SyntaxKind.FunctionType ||\n node.kind === ts.SyntaxKind.MethodSignature\n );\n }\n\n // need to check for anonymous functions assigned for vars, const and let.\n async getIdentifiers(funcDec: SignatureDeclaration) {\n return [new Identifier(this.getName(funcDec), funcDec.getSourceFile().fileName)];\n }\n\n private getName(funcDec: SignatureDeclaration) {\n if (funcDec.kind === ts.SyntaxKind.ConstructSignature) return 'new';\n return funcDec.name?.getText() || '';\n }\n\n async transform(node: SignatureDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(node);\n const nodeModifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;\n const getQuickInfoFromDefaultModifier = async () => {\n const defaultModifier = nodeModifiers?.find((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword);\n if (defaultModifier) return context.getQuickInfo(defaultModifier);\n if (node.kind === ts.SyntaxKind.ArrowFunction) return context.getQuickInfo(node.equalsGreaterThanToken);\n return null;\n };\n const info = node.name ? await context.getQuickInfo(node.name) : await getQuickInfoFromDefaultModifier();\n const returnTypeStr = info ? parseTypeFromQuickInfo(info) : 'any';\n const displaySig = info?.body?.displayString || '';\n const args = (await pMapSeries(node.parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n\n const returnType = await context.resolveType(node, returnTypeStr, Boolean(info));\n const modifiers = nodeModifiers?.map((modifier) => modifier.getText()) || [];\n const typeParameters = node.typeParameters?.map((typeParam) => typeParam.name.getText());\n const location = context.getLocation(node);\n const doc = await context.jsDocToDocSchema(node);\n const nodeDecorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;\n const decorators = nodeDecorators?.length\n ? await pMapSeries(nodeDecorators, (decorator) => context.computeSchema(decorator))\n : undefined;\n\n return new FunctionLikeSchema(\n location,\n name,\n args,\n returnType,\n displaySig,\n modifiers as Modifier[],\n doc,\n typeParameters,\n decorators\n );\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,mBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,kBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAK,wBAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,uBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpC,MAAMG,uBAAuB,CAA8B;EAChEC,SAASA,CAACC,IAAU,EAAE;IACpB,OACEA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,mBAAmB,IAC/CJ,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACE,aAAa,IACzCL,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACG,iBAAiB,IAC7CN,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACI,aAAa,IACzCP,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACK,kBAAkB,IAC9CR,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACM,YAAY,IACxCT,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACO,eAAe;EAE/C;;EAEA;EACA,MAAMC,cAAcA,CAACC,OAA6B,EAAE;IAClD,OAAO,CAAC,KAAIC,wBAAU,EAAC,IAAI,CAACC,OAAO,CAACF,OAAO,CAAC,EAAEA,OAAO,CAACG,aAAa,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EAClF;EAEQF,OAAOA,CAACF,OAA6B,EAAE;IAC7C,IAAIA,OAAO,CAACX,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACK,kBAAkB,EAAE,OAAO,KAAK;IACnE,OAAOI,OAAO,CAACK,IAAI,EAAEC,OAAO,CAAC,CAAC,IAAI,EAAE;EACtC;EAEA,MAAMC,SAASA,CAACnB,IAA0B,EAAEoB,OAA+B,EAAuB;IAChG,MAAMH,IAAI,GAAG,IAAI,CAACH,OAAO,CAACd,IAAI,CAAC;IAC/B,MAAMqB,aAAa,GAAGnB,qBAAE,CAACoB,gBAAgB,CAACtB,IAAI,CAAC,GAAGE,qBAAE,CAACqB,YAAY,CAACvB,IAAI,CAAC,GAAGwB,SAAS;IACnF,MAAMC,+BAA+B,GAAG,MAAAA,CAAA,KAAY;MAClD,MAAMC,eAAe,GAAGL,aAAa,EAAEM,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAAC3B,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAAC0B,cAAc,CAAC;MACzG,IAAIH,eAAe,EAAE,OAAON,OAAO,CAACU,YAAY,CAACJ,eAAe,CAAC;MACjE,IAAI1B,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACE,aAAa,EAAE,OAAOe,OAAO,CAACU,YAAY,CAAC9B,IAAI,CAAC+B,sBAAsB,CAAC;MACvG,OAAO,IAAI;IACb,CAAC;IACD,MAAMC,IAAI,GAAGhC,IAAI,CAACiB,IAAI,GAAG,MAAMG,OAAO,CAACU,YAAY,CAAC9B,IAAI,CAACiB,IAAI,CAAC,GAAG,MAAMQ,+BAA+B,CAAC,CAAC;IACxG,MAAMQ,aAAa,GAAGD,IAAI,GAAG,IAAAE,gDAAsB,EAACF,IAAI,CAAC,GAAG,KAAK;IACjE,MAAMG,UAAU,GAAGH,IAAI,EAAEI,IAAI,EAAEC,aAAa,IAAI,EAAE;IAClD,MAAMC,IAAI,GAAI,MAAM,IAAAC,qBAAU,EAACvC,IAAI,CAACwC,UAAU,EAAE,MAAOC,KAAK,IAC1DrB,OAAO,CAACsB,aAAa,CAACD,KAAK,CAC7B,CAAuB;IAEvB,MAAME,UAAU,GAAG,MAAMvB,OAAO,CAACwB,WAAW,CAAC5C,IAAI,EAAEiC,aAAa,EAAEY,OAAO,CAACb,IAAI,CAAC,CAAC;IAChF,MAAMc,SAAS,GAAGzB,aAAa,EAAE0B,GAAG,CAAEnB,QAAQ,IAAKA,QAAQ,CAACV,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;IAC5E,MAAM8B,cAAc,GAAGhD,IAAI,CAACgD,cAAc,EAAED,GAAG,CAAEE,SAAS,IAAKA,SAAS,CAAChC,IAAI,CAACC,OAAO,CAAC,CAAC,CAAC;IACxF,MAAMgC,QAAQ,GAAG9B,OAAO,CAAC+B,WAAW,CAACnD,IAAI,CAAC;IAC1C,MAAMoD,GAAG,GAAG,MAAMhC,OAAO,CAACiC,gBAAgB,CAACrD,IAAI,CAAC;IAChD,MAAMsD,cAAc,GAAGpD,qBAAE,CAACqD,iBAAiB,CAACvD,IAAI,CAAC,GAAGE,qBAAE,CAACsD,aAAa,CAACxD,IAAI,CAAC,GAAGwB,SAAS;IACtF,MAAMiC,UAAU,GAAGH,cAAc,EAAEI,MAAM,GACrC,MAAM,IAAAnB,qBAAU,EAACe,cAAc,EAAGK,SAAS,IAAKvC,OAAO,CAACsB,aAAa,CAACiB,SAAS,CAAC,CAAC,GACjFnC,SAAS;IAEb,OAAO,KAAIoC,uCAAkB,EAC3BV,QAAQ,EACRjC,IAAI,EACJqB,IAAI,EACJK,UAAU,EACVR,UAAU,EACVW,SAAS,EACTM,GAAG,EACHJ,cAAc,EACdS,UACF,CAAC;EACH;AACF;AAACI,OAAA,CAAA/D,uBAAA,GAAAA,uBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","e","__esModule","default","FunctionLikeTransformer","predicate","node","kind","ts","SyntaxKind","FunctionDeclaration","ArrowFunction","MethodDeclaration","CallSignature","ConstructSignature","FunctionType","MethodSignature","getIdentifiers","funcDec","Identifier","getName","getSourceFile","fileName","name","getText","transform","context","nodeModifiers","canHaveModifiers","getModifiers","undefined","getQuickInfoFromDefaultModifier","defaultModifier","find","modifier","DefaultKeyword","getQuickInfo","equalsGreaterThanToken","info","returnTypeStr","parseTypeFromQuickInfo","displaySig","body","displayString","args","pMapSeries","parameters","param","computeSchema","returnType","resolveType","modifiers","map","typeParameters","typeParam","location","getLocation","doc","jsDocToDocSchema","nodeDecorators","canHaveDecorators","getDecorators","decorators","length","decorator","FunctionLikeSchema","exports"],"sources":["function-like.ts"],"sourcesContent":["import { FunctionLikeSchema, ParameterSchema, SchemaNode, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, SignatureDeclaration } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class FunctionLikeTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return (\n node.kind === ts.SyntaxKind.FunctionDeclaration ||\n node.kind === ts.SyntaxKind.ArrowFunction ||\n node.kind === ts.SyntaxKind.MethodDeclaration ||\n node.kind === ts.SyntaxKind.CallSignature ||\n node.kind === ts.SyntaxKind.ConstructSignature ||\n node.kind === ts.SyntaxKind.FunctionType ||\n node.kind === ts.SyntaxKind.MethodSignature\n );\n }\n\n // need to check for anonymous functions assigned for vars, const and let.\n async getIdentifiers(funcDec: SignatureDeclaration) {\n return [new Identifier(this.getName(funcDec), funcDec.getSourceFile().fileName)];\n }\n\n private getName(funcDec: SignatureDeclaration) {\n if (funcDec.kind === ts.SyntaxKind.ConstructSignature) return 'new';\n return funcDec.name?.getText() || '';\n }\n\n async transform(node: SignatureDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(node);\n const nodeModifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;\n const getQuickInfoFromDefaultModifier = async () => {\n const defaultModifier = nodeModifiers?.find((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword);\n if (defaultModifier) return context.getQuickInfo(defaultModifier);\n if (node.kind === ts.SyntaxKind.ArrowFunction) return context.getQuickInfo(node.equalsGreaterThanToken);\n return null;\n };\n const info = node.name ? await context.getQuickInfo(node.name) : await getQuickInfoFromDefaultModifier();\n const returnTypeStr = info ? parseTypeFromQuickInfo(info) : 'any';\n const displaySig = info?.body?.displayString || '';\n const args = (await pMapSeries(node.parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n\n const returnType = await context.resolveType(node, returnTypeStr);\n const modifiers = nodeModifiers?.map((modifier) => modifier.getText()) || [];\n const typeParameters = node.typeParameters?.map((typeParam) => typeParam.name.getText());\n const location = context.getLocation(node);\n const doc = await context.jsDocToDocSchema(node);\n const nodeDecorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;\n const decorators = nodeDecorators?.length\n ? await pMapSeries(nodeDecorators, (decorator) => context.computeSchema(decorator))\n : undefined;\n\n return new FunctionLikeSchema(\n location,\n name,\n args,\n returnType,\n displaySig,\n modifiers as Modifier[],\n doc,\n typeParameters,\n decorators\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -31,7 +31,7 @@ class TypeQueryTransformer {
31
31
  }
32
32
  async transform(node, context) {
33
33
  const displaySig = await context.getQuickInfoDisplayString(node.exprName);
34
- const type = await context.resolveType(node.exprName, node.exprName.getText(), false);
34
+ const type = await context.resolveType(node.exprName, node.exprName.getText());
35
35
  const location = context.getLocation(node);
36
36
  return new (_semanticsEntities().TypeQuerySchema)(location, type, displaySig);
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","e","__esModule","default","TypeQueryTransformer","predicate","node","kind","ts","SyntaxKind","TypeQuery","getIdentifiers","transform","context","displaySig","getQuickInfoDisplayString","exprName","type","resolveType","getText","location","getLocation","TypeQuerySchema","exports"],"sources":["type-query.ts"],"sourcesContent":["import ts, { Node, TypeQueryNode } from 'typescript';\nimport { TypeQuerySchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\n/**\n * e.g. `typeof Foo`\n */\nexport class TypeQueryTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeQuery;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n const location = context.getLocation(node);\n return new TypeQuerySchema(location, type, displaySig);\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;AAA8E,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAK9E;AACA;AACA;AACO,MAAMG,oBAAoB,CAA8B;EAC7DC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,SAAS;EAC9C;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAAmB,EAAEO,OAA+B,EAAE;IACpE,MAAMC,UAAU,GAAG,MAAMD,OAAO,CAACE,yBAAyB,CAACT,IAAI,CAACU,QAAQ,CAAC;IACzE,MAAMC,IAAI,GAAG,MAAMJ,OAAO,CAACK,WAAW,CAACZ,IAAI,CAACU,QAAQ,EAAEV,IAAI,CAACU,QAAQ,CAACG,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC;IACrF,MAAMC,QAAQ,GAAGP,OAAO,CAACQ,WAAW,CAACf,IAAI,CAAC;IAC1C,OAAO,KAAIgB,oCAAe,EAACF,QAAQ,EAAEH,IAAI,EAAEH,UAAU,CAAC;EACxD;AACF;AAACS,OAAA,CAAAnB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","e","__esModule","default","TypeQueryTransformer","predicate","node","kind","ts","SyntaxKind","TypeQuery","getIdentifiers","transform","context","displaySig","getQuickInfoDisplayString","exprName","type","resolveType","getText","location","getLocation","TypeQuerySchema","exports"],"sources":["type-query.ts"],"sourcesContent":["import ts, { Node, TypeQueryNode } from 'typescript';\nimport { TypeQuerySchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\n/**\n * e.g. `typeof Foo`\n */\nexport class TypeQueryTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeQuery;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText());\n const location = context.getLocation(node);\n return new TypeQuerySchema(location, type, displaySig);\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;AAA8E,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAK9E;AACA;AACA;AACO,MAAMG,oBAAoB,CAA8B;EAC7DC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,SAAS;EAC9C;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAAmB,EAAEO,OAA+B,EAAE;IACpE,MAAMC,UAAU,GAAG,MAAMD,OAAO,CAACE,yBAAyB,CAACT,IAAI,CAACU,QAAQ,CAAC;IACzE,MAAMC,IAAI,GAAG,MAAMJ,OAAO,CAACK,WAAW,CAACZ,IAAI,CAACU,QAAQ,EAAEV,IAAI,CAACU,QAAQ,CAACG,OAAO,CAAC,CAAC,CAAC;IAC9E,MAAMC,QAAQ,GAAGP,OAAO,CAACQ,WAAW,CAACf,IAAI,CAAC;IAC1C,OAAO,KAAIgB,oCAAe,EAACF,QAAQ,EAAEH,IAAI,EAAEH,UAAU,CAAC;EACxD;AACF;AAACS,OAAA,CAAAnB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -42,7 +42,7 @@ class TypeReferenceTransformer {
42
42
  }
43
43
  async transform(node, context) {
44
44
  const name = node.typeName.getText();
45
- let type = await context.resolveType(node, name, false);
45
+ let type = await context.resolveType(node, name);
46
46
  if (!(type instanceof _semanticsEntities().TypeRefSchema)) {
47
47
  type = new (_semanticsEntities().TypeRefSchema)(context.getLocation(node), name);
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","e","__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,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;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","ignoreList":[]}
1
+ {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","e","__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);\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,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;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,CAAC;IAChD,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","ignoreList":[]}
@@ -18,6 +18,7 @@ function _semanticsEntities() {
18
18
  };
19
19
  return data;
20
20
  }
21
+ /* eslint-disable complexity */
21
22
  /* eslint-disable no-fallthrough */
22
23
 
23
24
  async function tagParser(tag, context, formatter) {
@@ -70,8 +71,9 @@ async function tagParser(tag, context, formatter) {
70
71
  const comment = (0, _typescript().getTextOfJSDocComment)(tag.comment);
71
72
  if (!formatter) return simpleTag(tag, tagName, context);
72
73
  try {
73
- const formattedComment = comment && (await formatter.formatSnippet(comment));
74
- return new (_semanticsEntities().TagSchema)(context.getLocation(tag), tagName, formattedComment);
74
+ const extractedSnippetToFormat = comment && extractCodeBlock(comment);
75
+ const formattedComment = extractedSnippetToFormat && (await formatter.formatSnippet(extractedSnippetToFormat.code));
76
+ return new (_semanticsEntities().TagSchema)(context.getLocation(tag), tagName, formattedComment ?? undefined);
75
77
  } catch {
76
78
  return simpleTag(tag, tagName, context);
77
79
  }
@@ -91,5 +93,22 @@ async function propertyLikeTag(tag, context) {
91
93
  const type = tag.typeExpression?.type ? await context.computeSchema(tag.typeExpression?.type) : undefined;
92
94
  return new (_semanticsEntities().PropertyLikeTagSchema)(context.getLocation(tag), tag.name.getText(), (0, _typescript().getTextOfJSDocComment)(tag.comment), type);
93
95
  }
96
+ function extractCodeBlock(text) {
97
+ let processedText = text;
98
+ if (text.endsWith(';') && !text.endsWith('```')) {
99
+ processedText = text.slice(0, -1) + '```';
100
+ }
101
+ const regex = /```([\w+-]*)\s*([\s\S]*?)```/;
102
+ const match = processedText.match(regex);
103
+ if (match) {
104
+ const lang = match[1];
105
+ const code = match[2];
106
+ return {
107
+ lang,
108
+ code
109
+ };
110
+ }
111
+ return null;
112
+ }
94
113
 
95
114
  //# sourceMappingURL=jsdoc-to-doc-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","require","_semanticsEntities","tagParser","tag","context","formatter","kind","SyntaxKind","JSDocReturnTag","returnTag","JSDocPropertyTag","propertyLikeTag","JSDocParameterTag","JSDocAugmentsTag","simpleTag","TagName","augments","JSDocAuthorTag","author","JSDocClassTag","class","JSDocCallbackTag","callback","JSDocPublicTag","public","JSDocPrivateTag","private","JSDocProtectedTag","protected","JSDocReadonlyTag","readonly","JSDocOverrideTag","override","JSDocDeprecatedTag","deprecated","JSDocSeeTag","see","JSDocEnumTag","enum","JSDocThisTag","this","JSDocTypeTag","type","JSDocTemplateTag","template","JSDocTypedefTag","typedef","JSDocImplementsTag","implements","tagName","getText","getSourceFile","comment","getTextOfJSDocComment","formattedComment","formatSnippet","TagSchema","getLocation","typeExpression","computeSchema","undefined","ReturnTagSchema","PropertyLikeTagSchema","name"],"sources":["jsdoc-to-doc-schema.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\nimport {\n getTextOfJSDocComment,\n JSDocParameterTag,\n JSDocPropertyLikeTag,\n JSDocPropertyTag,\n JSDocReturnTag,\n JSDocTag,\n SyntaxKind,\n} from 'typescript';\nimport {\n PropertyLikeTagSchema,\n ReturnTagSchema,\n TagName,\n TagSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { Formatter } from '@teambit/formatter';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\n\nexport async function tagParser(\n tag: JSDocTag,\n context: SchemaExtractorContext,\n formatter?: Formatter\n): Promise<TagSchema> {\n // for some reason, in some cases, if `tag.getSourceFile()` is not provided to the `getText()`, it throws \"Cannot read property 'text' of undefined\"\n switch (tag.kind) {\n case SyntaxKind.JSDocReturnTag:\n return returnTag(tag as JSDocReturnTag, context);\n case SyntaxKind.JSDocPropertyTag:\n return propertyLikeTag(tag as JSDocPropertyTag, context);\n case SyntaxKind.JSDocParameterTag:\n return propertyLikeTag(tag as JSDocParameterTag, context);\n case SyntaxKind.JSDocAugmentsTag:\n return simpleTag(tag, TagName.augments, context);\n case SyntaxKind.JSDocAuthorTag:\n return simpleTag(tag, TagName.author, context);\n case SyntaxKind.JSDocClassTag:\n return simpleTag(tag, TagName.class, context);\n case SyntaxKind.JSDocCallbackTag:\n return simpleTag(tag, TagName.callback, context);\n case SyntaxKind.JSDocPublicTag:\n return simpleTag(tag, TagName.public, context);\n case SyntaxKind.JSDocPrivateTag:\n return simpleTag(tag, TagName.private, context);\n case SyntaxKind.JSDocProtectedTag:\n return simpleTag(tag, TagName.protected, context);\n case SyntaxKind.JSDocReadonlyTag:\n return simpleTag(tag, TagName.readonly, context);\n case SyntaxKind.JSDocOverrideTag:\n return simpleTag(tag, TagName.override, context);\n case SyntaxKind.JSDocDeprecatedTag:\n return simpleTag(tag, TagName.deprecated, context);\n case SyntaxKind.JSDocSeeTag:\n return simpleTag(tag, TagName.see, context);\n case SyntaxKind.JSDocEnumTag:\n return simpleTag(tag, TagName.enum, context);\n case SyntaxKind.JSDocThisTag:\n return simpleTag(tag, TagName.this, context);\n case SyntaxKind.JSDocTypeTag:\n return simpleTag(tag, TagName.type, context);\n case SyntaxKind.JSDocTemplateTag:\n return simpleTag(tag, TagName.template, context);\n case SyntaxKind.JSDocTypedefTag:\n return simpleTag(tag, TagName.typedef, context);\n case SyntaxKind.JSDocImplementsTag:\n return simpleTag(tag, TagName.implements, context);\n default: {\n const tagName: TagName | string = tag.tagName.getText(tag.getSourceFile());\n if (tagName === 'example') {\n const comment = getTextOfJSDocComment(tag.comment);\n if (!formatter) return simpleTag(tag, tagName, context);\n try {\n const formattedComment = comment && (await formatter.formatSnippet(comment));\n return new TagSchema(context.getLocation(tag), tagName, formattedComment);\n } catch {\n return simpleTag(tag, tagName, context);\n }\n }\n return simpleTag(tag, tagName, context);\n }\n }\n}\n\nfunction simpleTag(tag: JSDocTag, tagName: TagName | string, context: SchemaExtractorContext): TagSchema {\n return new TagSchema(context.getLocation(tag), tagName, getTextOfJSDocComment(tag.comment));\n}\n\nasync function returnTag(tag: JSDocReturnTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await context.computeSchema(tag.typeExpression?.type) : undefined;\n return new ReturnTagSchema(context.getLocation(tag), getTextOfJSDocComment(tag.comment), type);\n}\n\nasync function propertyLikeTag(tag: JSDocPropertyLikeTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await context.computeSchema(tag.typeExpression?.type) : undefined;\n return new PropertyLikeTagSchema(\n context.getLocation(tag),\n tag.name.getText(),\n getTextOfJSDocComment(tag.comment),\n type\n );\n}\n"],"mappings":";;;;;;AACA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AASA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAVA;;AAmBO,eAAeG,SAASA,CAC7BC,GAAa,EACbC,OAA+B,EAC/BC,SAAqB,EACD;EACpB;EACA,QAAQF,GAAG,CAACG,IAAI;IACd,KAAKC,wBAAU,CAACC,cAAc;MAC5B,OAAOC,SAAS,CAACN,GAAG,EAAoBC,OAAO,CAAC;IAClD,KAAKG,wBAAU,CAACG,gBAAgB;MAC9B,OAAOC,eAAe,CAACR,GAAG,EAAsBC,OAAO,CAAC;IAC1D,KAAKG,wBAAU,CAACK,iBAAiB;MAC/B,OAAOD,eAAe,CAACR,GAAG,EAAuBC,OAAO,CAAC;IAC3D,KAAKG,wBAAU,CAACM,gBAAgB;MAC9B,OAAOC,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACC,QAAQ,EAAEZ,OAAO,CAAC;IAClD,KAAKG,wBAAU,CAACU,cAAc;MAC5B,OAAOH,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACG,MAAM,EAAEd,OAAO,CAAC;IAChD,KAAKG,wBAAU,CAACY,aAAa;MAC3B,OAAOL,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACK,KAAK,EAAEhB,OAAO,CAAC;IAC/C,KAAKG,wBAAU,CAACc,gBAAgB;MAC9B,OAAOP,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACO,QAAQ,EAAElB,OAAO,CAAC;IAClD,KAAKG,wBAAU,CAACgB,cAAc;MAC5B,OAAOT,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACS,MAAM,EAAEpB,OAAO,CAAC;IAChD,KAAKG,wBAAU,CAACkB,eAAe;MAC7B,OAAOX,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACW,OAAO,EAAEtB,OAAO,CAAC;IACjD,KAAKG,wBAAU,CAACoB,iBAAiB;MAC/B,OAAOb,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACa,SAAS,EAAExB,OAAO,CAAC;IACnD,KAAKG,wBAAU,CAACsB,gBAAgB;MAC9B,OAAOf,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACe,QAAQ,EAAE1B,OAAO,CAAC;IAClD,KAAKG,wBAAU,CAACwB,gBAAgB;MAC9B,OAAOjB,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACiB,QAAQ,EAAE5B,OAAO,CAAC;IAClD,KAAKG,wBAAU,CAAC0B,kBAAkB;MAChC,OAAOnB,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACmB,UAAU,EAAE9B,OAAO,CAAC;IACpD,KAAKG,wBAAU,CAAC4B,WAAW;MACzB,OAAOrB,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACqB,GAAG,EAAEhC,OAAO,CAAC;IAC7C,KAAKG,wBAAU,CAAC8B,YAAY;MAC1B,OAAOvB,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACuB,IAAI,EAAElC,OAAO,CAAC;IAC9C,KAAKG,wBAAU,CAACgC,YAAY;MAC1B,OAAOzB,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACyB,IAAI,EAAEpC,OAAO,CAAC;IAC9C,KAAKG,wBAAU,CAACkC,YAAY;MAC1B,OAAO3B,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAAC2B,IAAI,EAAEtC,OAAO,CAAC;IAC9C,KAAKG,wBAAU,CAACoC,gBAAgB;MAC9B,OAAO7B,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAAC6B,QAAQ,EAAExC,OAAO,CAAC;IAClD,KAAKG,wBAAU,CAACsC,eAAe;MAC7B,OAAO/B,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAAC+B,OAAO,EAAE1C,OAAO,CAAC;IACjD,KAAKG,wBAAU,CAACwC,kBAAkB;MAChC,OAAOjC,SAAS,CAACX,GAAG,EAAEY,4BAAO,CAACiC,UAAU,EAAE5C,OAAO,CAAC;IACpD;MAAS;QACP,MAAM6C,OAAyB,GAAG9C,GAAG,CAAC8C,OAAO,CAACC,OAAO,CAAC/C,GAAG,CAACgD,aAAa,CAAC,CAAC,CAAC;QAC1E,IAAIF,OAAO,KAAK,SAAS,EAAE;UACzB,MAAMG,OAAO,GAAG,IAAAC,mCAAqB,EAAClD,GAAG,CAACiD,OAAO,CAAC;UAClD,IAAI,CAAC/C,SAAS,EAAE,OAAOS,SAAS,CAACX,GAAG,EAAE8C,OAAO,EAAE7C,OAAO,CAAC;UACvD,IAAI;YACF,MAAMkD,gBAAgB,GAAGF,OAAO,KAAK,MAAM/C,SAAS,CAACkD,aAAa,CAACH,OAAO,CAAC,CAAC;YAC5E,OAAO,KAAII,8BAAS,EAACpD,OAAO,CAACqD,WAAW,CAACtD,GAAG,CAAC,EAAE8C,OAAO,EAAEK,gBAAgB,CAAC;UAC3E,CAAC,CAAC,MAAM;YACN,OAAOxC,SAAS,CAACX,GAAG,EAAE8C,OAAO,EAAE7C,OAAO,CAAC;UACzC;QACF;QACA,OAAOU,SAAS,CAACX,GAAG,EAAE8C,OAAO,EAAE7C,OAAO,CAAC;MACzC;EACF;AACF;AAEA,SAASU,SAASA,CAACX,GAAa,EAAE8C,OAAyB,EAAE7C,OAA+B,EAAa;EACvG,OAAO,KAAIoD,8BAAS,EAACpD,OAAO,CAACqD,WAAW,CAACtD,GAAG,CAAC,EAAE8C,OAAO,EAAE,IAAAI,mCAAqB,EAAClD,GAAG,CAACiD,OAAO,CAAC,CAAC;AAC7F;AAEA,eAAe3C,SAASA,CAACN,GAAmB,EAAEC,OAA+B,EAAE;EAC7E,MAAMsC,IAAI,GAAGvC,GAAG,CAACuD,cAAc,EAAEhB,IAAI,GAAG,MAAMtC,OAAO,CAACuD,aAAa,CAACxD,GAAG,CAACuD,cAAc,EAAEhB,IAAI,CAAC,GAAGkB,SAAS;EACzG,OAAO,KAAIC,oCAAe,EAACzD,OAAO,CAACqD,WAAW,CAACtD,GAAG,CAAC,EAAE,IAAAkD,mCAAqB,EAAClD,GAAG,CAACiD,OAAO,CAAC,EAAEV,IAAI,CAAC;AAChG;AAEA,eAAe/B,eAAeA,CAACR,GAAyB,EAAEC,OAA+B,EAAE;EACzF,MAAMsC,IAAI,GAAGvC,GAAG,CAACuD,cAAc,EAAEhB,IAAI,GAAG,MAAMtC,OAAO,CAACuD,aAAa,CAACxD,GAAG,CAACuD,cAAc,EAAEhB,IAAI,CAAC,GAAGkB,SAAS;EACzG,OAAO,KAAIE,0CAAqB,EAC9B1D,OAAO,CAACqD,WAAW,CAACtD,GAAG,CAAC,EACxBA,GAAG,CAAC4D,IAAI,CAACb,OAAO,CAAC,CAAC,EAClB,IAAAG,mCAAqB,EAAClD,GAAG,CAACiD,OAAO,CAAC,EAClCV,IACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_typescript","data","require","_semanticsEntities","tagParser","tag","context","formatter","kind","SyntaxKind","JSDocReturnTag","returnTag","JSDocPropertyTag","propertyLikeTag","JSDocParameterTag","JSDocAugmentsTag","simpleTag","TagName","augments","JSDocAuthorTag","author","JSDocClassTag","class","JSDocCallbackTag","callback","JSDocPublicTag","public","JSDocPrivateTag","private","JSDocProtectedTag","protected","JSDocReadonlyTag","readonly","JSDocOverrideTag","override","JSDocDeprecatedTag","deprecated","JSDocSeeTag","see","JSDocEnumTag","enum","JSDocThisTag","this","JSDocTypeTag","type","JSDocTemplateTag","template","JSDocTypedefTag","typedef","JSDocImplementsTag","implements","tagName","getText","getSourceFile","comment","getTextOfJSDocComment","extractedSnippetToFormat","extractCodeBlock","formattedComment","formatSnippet","code","TagSchema","getLocation","undefined","typeExpression","computeSchema","ReturnTagSchema","PropertyLikeTagSchema","name","text","processedText","endsWith","slice","regex","match","lang"],"sources":["jsdoc-to-doc-schema.ts"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable no-fallthrough */\nimport {\n getTextOfJSDocComment,\n JSDocParameterTag,\n JSDocPropertyLikeTag,\n JSDocPropertyTag,\n JSDocReturnTag,\n JSDocTag,\n SyntaxKind,\n} from 'typescript';\nimport {\n PropertyLikeTagSchema,\n ReturnTagSchema,\n TagName,\n TagSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { Formatter } from '@teambit/formatter';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\n\nexport async function tagParser(\n tag: JSDocTag,\n context: SchemaExtractorContext,\n formatter?: Formatter\n): Promise<TagSchema> {\n // for some reason, in some cases, if `tag.getSourceFile()` is not provided to the `getText()`, it throws \"Cannot read property 'text' of undefined\"\n switch (tag.kind) {\n case SyntaxKind.JSDocReturnTag:\n return returnTag(tag as JSDocReturnTag, context);\n case SyntaxKind.JSDocPropertyTag:\n return propertyLikeTag(tag as JSDocPropertyTag, context);\n case SyntaxKind.JSDocParameterTag:\n return propertyLikeTag(tag as JSDocParameterTag, context);\n case SyntaxKind.JSDocAugmentsTag:\n return simpleTag(tag, TagName.augments, context);\n case SyntaxKind.JSDocAuthorTag:\n return simpleTag(tag, TagName.author, context);\n case SyntaxKind.JSDocClassTag:\n return simpleTag(tag, TagName.class, context);\n case SyntaxKind.JSDocCallbackTag:\n return simpleTag(tag, TagName.callback, context);\n case SyntaxKind.JSDocPublicTag:\n return simpleTag(tag, TagName.public, context);\n case SyntaxKind.JSDocPrivateTag:\n return simpleTag(tag, TagName.private, context);\n case SyntaxKind.JSDocProtectedTag:\n return simpleTag(tag, TagName.protected, context);\n case SyntaxKind.JSDocReadonlyTag:\n return simpleTag(tag, TagName.readonly, context);\n case SyntaxKind.JSDocOverrideTag:\n return simpleTag(tag, TagName.override, context);\n case SyntaxKind.JSDocDeprecatedTag:\n return simpleTag(tag, TagName.deprecated, context);\n case SyntaxKind.JSDocSeeTag:\n return simpleTag(tag, TagName.see, context);\n case SyntaxKind.JSDocEnumTag:\n return simpleTag(tag, TagName.enum, context);\n case SyntaxKind.JSDocThisTag:\n return simpleTag(tag, TagName.this, context);\n case SyntaxKind.JSDocTypeTag:\n return simpleTag(tag, TagName.type, context);\n case SyntaxKind.JSDocTemplateTag:\n return simpleTag(tag, TagName.template, context);\n case SyntaxKind.JSDocTypedefTag:\n return simpleTag(tag, TagName.typedef, context);\n case SyntaxKind.JSDocImplementsTag:\n return simpleTag(tag, TagName.implements, context);\n default: {\n const tagName: TagName | string = tag.tagName.getText(tag.getSourceFile());\n if (tagName === 'example') {\n const comment = getTextOfJSDocComment(tag.comment);\n if (!formatter) return simpleTag(tag, tagName, context);\n try {\n const extractedSnippetToFormat = comment && extractCodeBlock(comment);\n const formattedComment = extractedSnippetToFormat \n && (await formatter.formatSnippet(extractedSnippetToFormat.code));\n return new TagSchema(context.getLocation(tag), tagName, formattedComment ?? undefined);\n } catch {\n return simpleTag(tag, tagName, context);\n }\n }\n\n return simpleTag(tag, tagName, context);\n }\n }\n}\n\nfunction simpleTag(tag: JSDocTag, tagName: TagName | string, context: SchemaExtractorContext): TagSchema {\n return new TagSchema(context.getLocation(tag), tagName, getTextOfJSDocComment(tag.comment));\n}\n\nasync function returnTag(tag: JSDocReturnTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await context.computeSchema(tag.typeExpression?.type) : undefined;\n return new ReturnTagSchema(context.getLocation(tag), getTextOfJSDocComment(tag.comment), type);\n}\n\nasync function propertyLikeTag(tag: JSDocPropertyLikeTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await context.computeSchema(tag.typeExpression?.type) : undefined;\n return new PropertyLikeTagSchema(\n context.getLocation(tag),\n tag.name.getText(),\n getTextOfJSDocComment(tag.comment),\n type\n );\n}\n\nfunction extractCodeBlock(text: string): { lang: string; code: string } | null {\n let processedText = text;\n if (text.endsWith(';') && !text.endsWith('```')) {\n processedText = text.slice(0, -1) + '```';\n }\n const regex = /```([\\w+-]*)\\s*([\\s\\S]*?)```/;\n const match = processedText.match(regex);\n\n if (match) {\n const lang = match[1];\n const code = match[2];\n return { lang, code };\n }\n return null;\n}"],"mappings":"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","ignoreList":[]}
@@ -137,7 +137,7 @@ class TypeScriptExtractor {
137
137
  async computeInternalModules(context, internalFiles) {
138
138
  if (internalFiles.length === 0) return [];
139
139
  const internals = (0, _lodash().compact)(await Promise.all([...context.internalIdentifiers.entries()].map(async ([filePath]) => {
140
- const file = internalFiles.find(internalFile => internalFile.path === filePath);
140
+ const file = context.findFileInComponent(filePath);
141
141
  if (!file) return undefined;
142
142
  const fileAst = this.parseSourceFile(file);
143
143
  const moduleSchema = await this.computeSchema(fileAst, context);