@teambit/typescript 0.0.735 → 0.0.738

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/cmds/check-types.cmd.js.map +1 -1
  2. package/dist/cmds/init.cmd.js.map +1 -1
  3. package/dist/compiler-options.js.map +1 -1
  4. package/dist/exceptions/index.js.map +1 -1
  5. package/dist/exceptions/transformer-not-found.js.map +1 -1
  6. package/dist/export-identifier.js.map +1 -1
  7. package/dist/export-list.js.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/schema-extractor-context.d.ts +2 -1
  10. package/dist/schema-extractor-context.js +15 -6
  11. package/dist/schema-extractor-context.js.map +1 -1
  12. package/dist/schema-transformer.js.map +1 -1
  13. package/dist/schema-transformer.plugin.js.map +1 -1
  14. package/dist/transformers/class-deceleration.js +2 -2
  15. package/dist/transformers/class-deceleration.js.map +1 -1
  16. package/dist/transformers/constructor.js +1 -1
  17. package/dist/transformers/constructor.js.map +1 -1
  18. package/dist/transformers/export-declaration.js +1 -1
  19. package/dist/transformers/export-declaration.js.map +1 -1
  20. package/dist/transformers/function-declaration.js.map +1 -1
  21. package/dist/transformers/index-signature.js +1 -1
  22. package/dist/transformers/index-signature.js.map +1 -1
  23. package/dist/transformers/index.js.map +1 -1
  24. package/dist/transformers/interface-declaration.js +1 -1
  25. package/dist/transformers/interface-declaration.js.map +1 -1
  26. package/dist/transformers/literal-type.d.ts +2 -1
  27. package/dist/transformers/literal-type.js +2 -2
  28. package/dist/transformers/literal-type.js.map +1 -1
  29. package/dist/transformers/method-declaration.js.map +1 -1
  30. package/dist/transformers/method-signature.js.map +1 -1
  31. package/dist/transformers/property-declaration.js +1 -1
  32. package/dist/transformers/property-declaration.js.map +1 -1
  33. package/dist/transformers/property-signature.js +1 -1
  34. package/dist/transformers/property-signature.js.map +1 -1
  35. package/dist/transformers/source-file-transformer.js +1 -1
  36. package/dist/transformers/source-file-transformer.js.map +1 -1
  37. package/dist/transformers/type-alias.js +1 -1
  38. package/dist/transformers/type-alias.js.map +1 -1
  39. package/dist/transformers/utils/get-params.js +6 -2
  40. package/dist/transformers/utils/get-params.js.map +1 -1
  41. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
  42. package/dist/transformers/utils/to-function-schema.js +2 -2
  43. package/dist/transformers/utils/to-function-schema.js.map +1 -1
  44. package/dist/transformers/utils/type-node-to-schema.js +17 -10
  45. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  46. package/dist/transformers/variable-declaration.js +3 -3
  47. package/dist/transformers/variable-declaration.js.map +1 -1
  48. package/dist/transformers/variable-statement.js +2 -3
  49. package/dist/transformers/variable-statement.js.map +1 -1
  50. package/dist/typescript.aspect.js.map +1 -1
  51. package/dist/typescript.compiler.js.map +1 -1
  52. package/dist/typescript.compiler.spec.js.map +1 -1
  53. package/dist/typescript.composition.js.map +1 -1
  54. package/dist/typescript.extractor.js +3 -3
  55. package/dist/typescript.extractor.js.map +1 -1
  56. package/dist/typescript.main.runtime.js.map +1 -1
  57. package/dist/typescript.parser.d.ts +2 -2
  58. package/dist/typescript.parser.js +4 -4
  59. package/dist/typescript.parser.js.map +1 -1
  60. package/dist/typescript.parser.spec.js.map +1 -1
  61. package/package-tar/teambit-typescript-0.0.738.tgz +0 -0
  62. package/package.json +11 -11
  63. package/{preview-1652808661748.js → preview-1653227849497.js} +2 -2
  64. package/transformers/class-deceleration.ts +2 -2
  65. package/transformers/constructor.ts +1 -1
  66. package/transformers/export-declaration.ts +1 -1
  67. package/transformers/index-signature.ts +1 -1
  68. package/transformers/interface-declaration.ts +1 -1
  69. package/transformers/literal-type.ts +3 -2
  70. package/transformers/property-declaration.ts +1 -1
  71. package/transformers/property-signature.ts +1 -1
  72. package/transformers/source-file-transformer.ts +1 -1
  73. package/transformers/type-alias.ts +1 -1
  74. package/transformers/utils/get-params.ts +5 -1
  75. package/transformers/utils/to-function-schema.ts +2 -2
  76. package/transformers/utils/type-node-to-schema.ts +16 -10
  77. package/transformers/variable-declaration.ts +3 -3
  78. package/transformers/variable-statement.ts +1 -2
  79. package/tsconfig.json +1 -1
  80. package/dist/transformers/export-declaration-type.d.ts +0 -0
  81. package/dist/transformers/export-declaration-type.js +0 -3
  82. package/dist/transformers/export-declaration-type.js.map +0 -1
  83. package/package-tar/teambit-typescript-0.0.735.tgz +0 -0
  84. package/transformers/export-declaration-type.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.extractor.ts"],"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","undefined","parseSourceFile","file","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","compilerOptions","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","APISchema","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","SchemaExtractorContext","getTsserverClient","initTsserverClient","transform","transformers","values","find","singleTransformer","predicate"],"mappings":"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","sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\n// @ts-ignore david what to do?\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string\n ) {}\n\n parseSourceFile(file: AbstractVinyl) {\n return ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true,\n this.tsconfig.compilerOptions\n );\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n\n // return APISchema.from({ });\n return new APISchema(apiScheme);\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context.component);\n if (!transformer || !transformer.getIdentifiers) throw new TransformerNotFound(node, context.component);\n return transformer.getIdentifiers(node, context);\n }\n\n private createContext(tsserver: TsserverClient, component: Component): SchemaExtractorContext {\n return new SchemaExtractorContext(tsserver, component, this);\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context.component);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, component: Component) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, component);\n\n return transformer;\n }\n}\n"]}
1
+ {"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","undefined","parseSourceFile","file","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","compilerOptions","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","SchemaExtractorContext","getTsserverClient","initTsserverClient","transform","transformers","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\n// @ts-ignore david what to do?\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string\n ) {}\n\n parseSourceFile(file: AbstractVinyl) {\n return ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true,\n this.tsconfig.compilerOptions\n );\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme);\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context.component);\n if (!transformer || !transformer.getIdentifiers) throw new TransformerNotFound(node, context.component);\n return transformer.getIdentifiers(node, context);\n }\n\n private createContext(tsserver: TsserverClient, component: Component): SchemaExtractorContext {\n return new SchemaExtractorContext(tsserver, component, this);\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context.component);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, component: Component) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, component);\n\n return transformer;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.main.runtime.ts"],"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","MethodDeclaration","PropertyDeclaration","VariableStatementTransformer","VariableDeclaration","Constructor","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","PropertySignature","LiteralTypeTransformer","IndexSignature","InterfaceDeclarationTransformer","MethodSignatureTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"mappings":"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","sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n MethodDeclaration,\n PropertyDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n Constructor,\n PropertySignature,\n LiteralTypeTransformer,\n IndexSignature,\n InterfaceDeclarationTransformer,\n MethodSignatureTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n public getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [SchemaAspect, LoggerAspect, AspectLoaderAspect, WorkspaceAspect, CLIAspect];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli]: [SchemaMain, LoggerMain, AspectLoaderMain, Workspace, CLIMain],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new MethodDeclaration(),\n new PropertyDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new Constructor(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new PropertySignature(),\n new LiteralTypeTransformer(),\n new IndexSignature(),\n new InterfaceDeclarationTransformer(),\n new MethodSignatureTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"]}
1
+ {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","pMapSeries","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","MethodDeclaration","PropertyDeclaration","VariableStatementTransformer","VariableDeclaration","Constructor","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","PropertySignature","LiteralTypeTransformer","IndexSignature","InterfaceDeclarationTransformer","MethodSignatureTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n MethodDeclaration,\n PropertyDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n Constructor,\n PropertySignature,\n LiteralTypeTransformer,\n IndexSignature,\n InterfaceDeclarationTransformer,\n MethodSignatureTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n public getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [SchemaAspect, LoggerAspect, AspectLoaderAspect, WorkspaceAspect, CLIAspect];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli]: [SchemaMain, LoggerMain, AspectLoaderMain, Workspace, CLIMain],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new MethodDeclaration(),\n new PropertyDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new Constructor(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new PropertySignature(),\n new LiteralTypeTransformer(),\n new IndexSignature(),\n new InterfaceDeclarationTransformer(),\n new MethodSignatureTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { Parser } from '@teambit/schema';
2
- import { Export, Module, StaticProperties } from '@teambit/semantics.entities.semantic-schema';
2
+ import { Export, StaticProperties } from '@teambit/semantics.entities.semantic-schema';
3
3
  import { Logger } from '@teambit/logger';
4
4
  import { SourceFile } from 'typescript';
5
5
  export declare class TypeScriptParser implements Parser {
6
6
  private logger?;
7
7
  extension: RegExp;
8
8
  getExports(sourceFile: SourceFile): Export[];
9
- parseModule(modulePath: string): Module;
9
+ parseModule(modulePath: string): Export[];
10
10
  parseStaticProperties(sourceFile: SourceFile): Map<string, StaticProperties>;
11
11
  constructor(logger?: Logger | undefined);
12
12
  }
@@ -67,19 +67,19 @@ class TypeScriptParser {
67
67
  if ((0, _typescript().isVariableStatement)(statement)) {
68
68
  const child = statement.declarationList.declarations[0];
69
69
  const name = child.name.text;
70
- return new (_semanticsEntities().Export)(name, undefined, staticProperties.get(name));
70
+ return new (_semanticsEntities().Export)(name, staticProperties.get(name));
71
71
  }
72
72
 
73
73
  if ((0, _typescript().isFunctionDeclaration)(statement)) {
74
74
  if (!statement.name) return undefined;
75
75
  const name = statement.name.text;
76
- return new (_semanticsEntities().Export)(name, undefined, staticProperties.get(name));
76
+ return new (_semanticsEntities().Export)(name, staticProperties.get(name));
77
77
  }
78
78
 
79
79
  if ((0, _typescript().isClassDeclaration)(statement)) {
80
80
  if (!statement.name) return undefined;
81
81
  const name = statement.name.text;
82
- return new (_semanticsEntities().Export)(name, undefined, staticProperties.get(name));
82
+ return new (_semanticsEntities().Export)(name, staticProperties.get(name));
83
83
  }
84
84
 
85
85
  return undefined;
@@ -93,7 +93,7 @@ class TypeScriptParser {
93
93
  const ast = _typescript().default.createSourceFile(modulePath, (0, _fsExtra().readFileSync)(modulePath, 'utf8'), _typescript().default.ScriptTarget.Latest);
94
94
 
95
95
  const moduleExports = this.getExports(ast);
96
- return new (_semanticsEntities().Module)(moduleExports);
96
+ return moduleExports;
97
97
  }
98
98
 
99
99
  parseStaticProperties(sourceFile) {
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.parser.ts"],"names":["TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exports","statements","filter","statement","modifiers","find","modifier","kind","ts","SyntaxKind","ExportKeyword","exportModels","map","child","declarationList","declarations","name","text","Export","undefined","get","withoutEmpty","exportModel","parseModule","modulePath","ast","createSourceFile","ScriptTarget","Latest","moduleExports","Module","exportStaticProperties","Map","forEach","isExpressionStatement","isBinaryExpression","expression","operatorToken","EqualsToken","isPropertyAccessExpression","left","isIdentifier","targetName","propertyName","has","set","existingProperties","isStringLiteral","right","isNumericLiteral","UndefinedKeyword","NullKeyword","TrueKeyword","FalseKeyword","err","logger","error","constructor"],"mappings":"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","sourcesContent":["import { Parser } from '@teambit/schema';\nimport { Export, Module, StaticProperties } from '@teambit/semantics.entities.semantic-schema';\nimport { Logger } from '@teambit/logger';\nimport { readFileSync } from 'fs-extra';\nimport ts, {\n isClassDeclaration,\n isFunctionDeclaration,\n isVariableStatement,\n SourceFile,\n VariableStatement,\n} from 'typescript';\n\nexport class TypeScriptParser implements Parser {\n public extension = /^.*\\.(js|jsx|ts|tsx)$/;\n\n getExports(sourceFile: SourceFile): Export[] {\n const staticProperties = this.parseStaticProperties(sourceFile);\n\n const exports = sourceFile.statements.filter((statement) => {\n if (!statement.modifiers) return false;\n return statement.modifiers.find((modifier) => {\n return modifier.kind === ts.SyntaxKind.ExportKeyword;\n });\n });\n\n const exportModels = exports.map((statement) => {\n // todo refactor to a registry of variable statements.\n if (isVariableStatement(statement)) {\n const child = (statement as VariableStatement).declarationList.declarations[0];\n const name = (child as any).name.text;\n return new Export(name, undefined, staticProperties.get(name));\n }\n\n if (isFunctionDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, undefined, staticProperties.get(name));\n }\n\n if (isClassDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, undefined, staticProperties.get(name));\n }\n\n return undefined;\n });\n const withoutEmpty = exportModels.filter((exportModel) => exportModel !== undefined);\n // @ts-ignore\n return withoutEmpty;\n }\n\n parseModule(modulePath: string) {\n const ast = ts.createSourceFile(modulePath, readFileSync(modulePath, 'utf8'), ts.ScriptTarget.Latest);\n\n const moduleExports = this.getExports(ast);\n\n return new Module(moduleExports);\n }\n\n parseStaticProperties(sourceFile: SourceFile) {\n // TODO - should we also parse staticProperties inside classes / objects?\n\n const exportStaticProperties = new Map<string, StaticProperties>();\n\n sourceFile.statements.forEach((statement) => {\n try {\n if (!ts.isExpressionStatement(statement)) return;\n if (!ts.isBinaryExpression(statement.expression)) return;\n if (statement.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return;\n if (!ts.isPropertyAccessExpression(statement.expression.left)) return;\n if (!ts.isIdentifier(statement.expression.left.expression)) return;\n\n const targetName = statement.expression.left.expression.text;\n const propertyName = statement.expression.left.name.text;\n\n if (!exportStaticProperties.has(targetName)) exportStaticProperties.set(targetName, new Map());\n\n const existingProperties = exportStaticProperties.get(targetName);\n\n if (ts.isStringLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, statement.expression.right.text);\n } else if (ts.isNumericLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, +statement.expression.right.text);\n } else if (statement.expression.right.kind === ts.SyntaxKind.UndefinedKeyword) {\n existingProperties?.set(propertyName, undefined);\n } else if (statement.expression.right.kind === ts.SyntaxKind.NullKeyword) {\n existingProperties?.set(propertyName, null);\n } else if (statement.expression.right.kind === ts.SyntaxKind.TrueKeyword) {\n existingProperties?.set(propertyName, true);\n } else if (statement.expression.right.kind === ts.SyntaxKind.FalseKeyword) {\n existingProperties?.set(propertyName, false);\n }\n } catch (err) {\n this.logger?.error('failed parsing static properties', err);\n }\n });\n\n return exportStaticProperties;\n }\n\n constructor(private logger?: Logger | undefined) {}\n}\n"]}
1
+ {"version":3,"names":["TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exports","statements","filter","statement","modifiers","find","modifier","kind","ts","SyntaxKind","ExportKeyword","exportModels","map","isVariableStatement","child","declarationList","declarations","name","text","Export","get","isFunctionDeclaration","undefined","isClassDeclaration","withoutEmpty","exportModel","parseModule","modulePath","ast","createSourceFile","readFileSync","ScriptTarget","Latest","moduleExports","exportStaticProperties","Map","forEach","isExpressionStatement","isBinaryExpression","expression","operatorToken","EqualsToken","isPropertyAccessExpression","left","isIdentifier","targetName","propertyName","has","set","existingProperties","isStringLiteral","right","isNumericLiteral","UndefinedKeyword","NullKeyword","TrueKeyword","FalseKeyword","err","logger","error","constructor"],"sources":["typescript.parser.ts"],"sourcesContent":["import { Parser } from '@teambit/schema';\nimport { Export, StaticProperties } from '@teambit/semantics.entities.semantic-schema';\nimport { Logger } from '@teambit/logger';\nimport { readFileSync } from 'fs-extra';\nimport ts, {\n isClassDeclaration,\n isFunctionDeclaration,\n isVariableStatement,\n SourceFile,\n VariableStatement,\n} from 'typescript';\n\nexport class TypeScriptParser implements Parser {\n public extension = /^.*\\.(js|jsx|ts|tsx)$/;\n\n getExports(sourceFile: SourceFile): Export[] {\n const staticProperties = this.parseStaticProperties(sourceFile);\n\n const exports = sourceFile.statements.filter((statement) => {\n if (!statement.modifiers) return false;\n return statement.modifiers.find((modifier) => {\n return modifier.kind === ts.SyntaxKind.ExportKeyword;\n });\n });\n\n const exportModels = exports.map((statement) => {\n // todo refactor to a registry of variable statements.\n if (isVariableStatement(statement)) {\n const child = (statement as VariableStatement).declarationList.declarations[0];\n const name = (child as any).name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n if (isFunctionDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n if (isClassDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n return undefined;\n });\n const withoutEmpty = exportModels.filter((exportModel) => exportModel !== undefined);\n // @ts-ignore\n return withoutEmpty;\n }\n\n parseModule(modulePath: string) {\n const ast = ts.createSourceFile(modulePath, readFileSync(modulePath, 'utf8'), ts.ScriptTarget.Latest);\n\n const moduleExports = this.getExports(ast);\n return moduleExports;\n }\n\n parseStaticProperties(sourceFile: SourceFile) {\n // TODO - should we also parse staticProperties inside classes / objects?\n\n const exportStaticProperties = new Map<string, StaticProperties>();\n\n sourceFile.statements.forEach((statement) => {\n try {\n if (!ts.isExpressionStatement(statement)) return;\n if (!ts.isBinaryExpression(statement.expression)) return;\n if (statement.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return;\n if (!ts.isPropertyAccessExpression(statement.expression.left)) return;\n if (!ts.isIdentifier(statement.expression.left.expression)) return;\n\n const targetName = statement.expression.left.expression.text;\n const propertyName = statement.expression.left.name.text;\n\n if (!exportStaticProperties.has(targetName)) exportStaticProperties.set(targetName, new Map());\n\n const existingProperties = exportStaticProperties.get(targetName);\n\n if (ts.isStringLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, statement.expression.right.text);\n } else if (ts.isNumericLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, +statement.expression.right.text);\n } else if (statement.expression.right.kind === ts.SyntaxKind.UndefinedKeyword) {\n existingProperties?.set(propertyName, undefined);\n } else if (statement.expression.right.kind === ts.SyntaxKind.NullKeyword) {\n existingProperties?.set(propertyName, null);\n } else if (statement.expression.right.kind === ts.SyntaxKind.TrueKeyword) {\n existingProperties?.set(propertyName, true);\n } else if (statement.expression.right.kind === ts.SyntaxKind.FalseKeyword) {\n existingProperties?.set(propertyName, false);\n }\n } catch (err) {\n this.logger?.error('failed parsing static properties', err);\n }\n });\n\n return exportStaticProperties;\n }\n\n constructor(private logger?: Logger | undefined) {}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.parser.spec.ts"],"names":["describe","exampleArrowFunction","exampleFunction","exampleClass","it","ast","ts","createSourceFile","ScriptTarget","Latest","exports","TypeScriptParser","getExports","exportArrow","find","x","identifier","to","exist","exportFunction","exportClass","staticProperties","get","equal","exampleFile","parseStaticProperties","exportHello","undefined","has","be","false"],"mappings":"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","sourcesContent":["import ts from 'typescript';\nimport { expect } from 'chai';\n\nimport { TypeScriptParser } from './typescript.parser';\n\ndescribe('TypescriptParser', () => {\n describe('getExports', () => {\n const exampleArrowFunction = `\n export const arrow = () => { return 3; }\n arrow.textProperty = \"propertyValue\";\n `;\n\n const exampleFunction = `\n export function func() { return 3; }\n func.textProperty = \"propertyValue\";\n `;\n\n const exampleClass = `\n export class classy{ render() { return 3; } }\n classy.textProperty = \"propertyValue\";\n `;\n\n it('should parse arrowFunctions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleArrowFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportArrow = exports.find((x) => x.identifier === 'arrow');\n\n expect(exportArrow).to.exist;\n });\n\n it('should parse function exports', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction = exports.find((x) => x.identifier === 'func');\n\n expect(exportFunction).to.exist;\n });\n\n it('should parse classes', () => {\n const ast = ts.createSourceFile('example.tsx', exampleClass, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'classy');\n\n expect(exportClass).to.exist;\n });\n\n describe('staticProperties', () => {\n it('should include staticProperties, when on arrowFunctions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleArrowFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportArrow = exports.find((x) => x.identifier === 'arrow');\n\n expect(exportArrow?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n\n it('should include staticProperties, when on regular functions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'func');\n\n expect(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n\n it('should include staticProperties, when on classes', () => {\n const ast = ts.createSourceFile('example.tsx', exampleClass, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'classy');\n\n expect(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n });\n });\n\n describe('collectStaticProperties', () => {\n const exampleFile = `\n export const hello = () => { return 3; }\n\n hello.text = \"is\";\n hello.count = 3;\n hello.nullish = null;\n hello.undef = undefined;\n hello.disable = false;\n hello.enable = true;\n hello.complextLiteral = \\`what \\${hello.text} it?\\`;\n hello.nonAssignedProperty += 'value';\n `;\n\n it('should parse all primitive values', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n\n expect(staticProperties).to.exist;\n\n const exportHello = staticProperties.get('hello');\n expect(exportHello).to.exist;\n\n expect(exportHello?.get('text')).to.equal('is');\n expect(exportHello?.get('count')).to.equal(3);\n expect(exportHello?.get('nullish')).to.equal(null);\n expect(exportHello?.get('undef')).to.equal(undefined);\n expect(exportHello?.get('disable')).to.equal(false);\n expect(exportHello?.get('enable')).to.equal(true);\n\n expect(exportHello?.has('complextLiteral')).to.be.false;\n });\n\n it('should skip non primitive values', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n const exportHello = staticProperties.get('hello');\n\n expect(exportHello?.has('complextLiteral')).to.be.false;\n });\n\n it('should skip non assignment statements', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n const exportHello = staticProperties.get('hello');\n\n expect(exportHello?.has('nonAssignedProperty')).to.be.false;\n });\n });\n});\n"]}
1
+ {"version":3,"names":["describe","exampleArrowFunction","exampleFunction","exampleClass","it","ast","ts","createSourceFile","ScriptTarget","Latest","exports","TypeScriptParser","getExports","exportArrow","find","x","identifier","expect","to","exist","exportFunction","exportClass","staticProperties","get","equal","exampleFile","parseStaticProperties","exportHello","undefined","has","be","false"],"sources":["typescript.parser.spec.ts"],"sourcesContent":["import ts from 'typescript';\nimport { expect } from 'chai';\n\nimport { TypeScriptParser } from './typescript.parser';\n\ndescribe('TypescriptParser', () => {\n describe('getExports', () => {\n const exampleArrowFunction = `\n export const arrow = () => { return 3; }\n arrow.textProperty = \"propertyValue\";\n `;\n\n const exampleFunction = `\n export function func() { return 3; }\n func.textProperty = \"propertyValue\";\n `;\n\n const exampleClass = `\n export class classy{ render() { return 3; } }\n classy.textProperty = \"propertyValue\";\n `;\n\n it('should parse arrowFunctions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleArrowFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportArrow = exports.find((x) => x.identifier === 'arrow');\n\n expect(exportArrow).to.exist;\n });\n\n it('should parse function exports', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction = exports.find((x) => x.identifier === 'func');\n\n expect(exportFunction).to.exist;\n });\n\n it('should parse classes', () => {\n const ast = ts.createSourceFile('example.tsx', exampleClass, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'classy');\n\n expect(exportClass).to.exist;\n });\n\n describe('staticProperties', () => {\n it('should include staticProperties, when on arrowFunctions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleArrowFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportArrow = exports.find((x) => x.identifier === 'arrow');\n\n expect(exportArrow?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n\n it('should include staticProperties, when on regular functions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'func');\n\n expect(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n\n it('should include staticProperties, when on classes', () => {\n const ast = ts.createSourceFile('example.tsx', exampleClass, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'classy');\n\n expect(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n });\n });\n\n describe('collectStaticProperties', () => {\n const exampleFile = `\n export const hello = () => { return 3; }\n\n hello.text = \"is\";\n hello.count = 3;\n hello.nullish = null;\n hello.undef = undefined;\n hello.disable = false;\n hello.enable = true;\n hello.complextLiteral = \\`what \\${hello.text} it?\\`;\n hello.nonAssignedProperty += 'value';\n `;\n\n it('should parse all primitive values', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n\n expect(staticProperties).to.exist;\n\n const exportHello = staticProperties.get('hello');\n expect(exportHello).to.exist;\n\n expect(exportHello?.get('text')).to.equal('is');\n expect(exportHello?.get('count')).to.equal(3);\n expect(exportHello?.get('nullish')).to.equal(null);\n expect(exportHello?.get('undef')).to.equal(undefined);\n expect(exportHello?.get('disable')).to.equal(false);\n expect(exportHello?.get('enable')).to.equal(true);\n\n expect(exportHello?.has('complextLiteral')).to.be.false;\n });\n\n it('should skip non primitive values', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n const exportHello = staticProperties.get('hello');\n\n expect(exportHello?.has('complextLiteral')).to.be.false;\n });\n\n it('should skip non assignment statements', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n const exportHello = staticProperties.get('hello');\n\n expect(exportHello?.has('nonAssignedProperty')).to.be.false;\n });\n });\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/typescript",
3
- "version": "0.0.735",
3
+ "version": "0.0.738",
4
4
  "homepage": "https://bit.dev/teambit/typescript/typescript",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.typescript",
8
8
  "name": "typescript",
9
- "version": "0.0.735"
9
+ "version": "0.0.738"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -18,20 +18,20 @@
18
18
  "@babel/runtime": "7.12.18",
19
19
  "core-js": "^3.0.0",
20
20
  "@teambit/harmony": "0.3.3",
21
- "@teambit/compiler": "0.0.735",
21
+ "@teambit/compiler": "0.0.738",
22
22
  "@teambit/typescript.modules.ts-config-mutator": "0.0.68",
23
- "@teambit/component": "0.0.735",
24
- "@teambit/semantics.entities.semantic-schema": "0.0.10",
23
+ "@teambit/component": "0.0.738",
24
+ "@teambit/semantics.entities.semantic-schema": "0.0.11",
25
25
  "@teambit/ts-server": "0.0.32",
26
- "@teambit/aspect-loader": "0.0.735",
26
+ "@teambit/aspect-loader": "0.0.738",
27
27
  "@teambit/bit-error": "0.0.394",
28
- "@teambit/builder": "0.0.735",
29
- "@teambit/isolator": "0.0.735",
28
+ "@teambit/builder": "0.0.738",
29
+ "@teambit/isolator": "0.0.738",
30
30
  "@teambit/logger": "0.0.583",
31
- "@teambit/schema": "0.0.735",
31
+ "@teambit/schema": "0.0.738",
32
32
  "@teambit/cli": "0.0.491",
33
- "@teambit/pkg": "0.0.735",
34
- "@teambit/workspace": "0.0.735"
33
+ "@teambit/pkg": "0.0.738",
34
+ "@teambit/workspace": "0.0.738"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/lodash": "4.14.165",
@@ -1,2 +1,2 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.735/dist/typescript.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.735/dist/typescript.docs.mdx')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.738/dist/typescript.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.738/dist/typescript.docs.mdx')]
@@ -36,13 +36,13 @@ export class ClassDecelerationTransformer implements SchemaTransformer {
36
36
  const displaySig = info?.body?.displayString || '';
37
37
  const typeStr = parseTypeFromQuickInfo(info);
38
38
  const type = await context.resolveType(getter, typeStr);
39
- return new GetAccessorSchema(getter.name.getText(), type, displaySig);
39
+ return new GetAccessorSchema(context.getLocation(getter), getter.name.getText(), type, displaySig);
40
40
  }
41
41
  case ts.SyntaxKind.SetAccessor: {
42
42
  const setter = member as ts.SetAccessorDeclaration;
43
43
  const params = await getParams(setter.parameters, context);
44
44
  const displaySig = await context.getQuickInfoDisplayString(setter.name);
45
- return new SetAccessorSchema(setter.name.getText(), params[0], displaySig);
45
+ return new SetAccessorSchema(context.getLocation(setter), setter.name.getText(), params[0], displaySig);
46
46
  }
47
47
  default:
48
48
  return context.computeSchema(member);
@@ -17,6 +17,6 @@ export class Constructor implements SchemaTransformer {
17
17
  async transform(constructorDec: ConstructorDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {
18
18
  const args = await getParams(constructorDec.parameters, context);
19
19
 
20
- return new ConstructorSchema(args);
20
+ return new ConstructorSchema(context.getLocation(constructorDec), args);
21
21
  }
22
22
  }
@@ -47,7 +47,7 @@ export class ExportDeclaration implements SchemaTransformer {
47
47
  })
48
48
  );
49
49
 
50
- return new Module(compact(schemas));
50
+ return new Module(context.getLocation(node), compact(schemas));
51
51
  }
52
52
  // e.g. `export * as Composition from './button';
53
53
  if (exportClause?.kind === SyntaxKind.NamespaceExport) {
@@ -17,6 +17,6 @@ export class IndexSignature implements SchemaTransformer {
17
17
  async transform(indexSig: IndexSignatureDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {
18
18
  const params = await getParams(indexSig.parameters, context);
19
19
  const type = await typeNodeToSchema(indexSig.type, context);
20
- return new IndexSignatureSchema(params, type);
20
+ return new IndexSignatureSchema(context.getLocation(indexSig), params, type);
21
21
  }
22
22
  }
@@ -19,6 +19,6 @@ export class InterfaceDeclarationTransformer implements SchemaTransformer {
19
19
  const typeSchema = await context.computeSchema(member);
20
20
  return typeSchema;
21
21
  });
22
- return new InterfaceSchema(interfaceDec.name.getText(), members);
22
+ return new InterfaceSchema(context.getLocation(interfaceDec), interfaceDec.name.getText(), members);
23
23
  }
24
24
  }
@@ -1,6 +1,7 @@
1
1
  import ts, { LiteralTypeNode, Node } from 'typescript';
2
2
  import { TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';
3
3
  import { SchemaTransformer } from '../schema-transformer';
4
+ import { SchemaExtractorContext } from '../schema-extractor-context';
4
5
 
5
6
  export class LiteralTypeTransformer implements SchemaTransformer {
6
7
  predicate(node: Node) {
@@ -11,8 +12,8 @@ export class LiteralTypeTransformer implements SchemaTransformer {
11
12
  return [];
12
13
  }
13
14
 
14
- async transform(literalType: LiteralTypeNode) {
15
+ async transform(literalType: LiteralTypeNode, context: SchemaExtractorContext) {
15
16
  const type = literalType.literal.getText();
16
- return new TypeRefSchema(type);
17
+ return new TypeRefSchema(context.getLocation(literalType), type);
17
18
  }
18
19
  }
@@ -25,6 +25,6 @@ export class PropertyDeclaration implements SchemaTransformer {
25
25
  const typeStr = parseTypeFromQuickInfo(info);
26
26
  const type = await context.resolveType(propertyDec, typeStr);
27
27
 
28
- return new VariableSchema(name || '', displaySig || '', type);
28
+ return new VariableSchema(context.getLocation(propertyDec), name, displaySig || '', type);
29
29
  }
30
30
  }
@@ -29,6 +29,6 @@ export class PropertySignature implements SchemaTransformer {
29
29
  }
30
30
  const typeStr = parseTypeFromQuickInfo(info);
31
31
  const type = await context.resolveType(prop, typeStr);
32
- return new VariableSchema(name, displaySig, type);
32
+ return new VariableSchema(context.getLocation(prop), name, displaySig, type);
33
33
  }
34
34
  }
@@ -35,7 +35,7 @@ export class SourceFileTransformer implements SchemaTransformer {
35
35
  return context.computeSchema(exportNode);
36
36
  });
37
37
 
38
- return new Module(schemas);
38
+ return new Module(context.getLocation(node), schemas);
39
39
  }
40
40
 
41
41
  /**
@@ -22,6 +22,6 @@ export class TypeAliasTransformer implements SchemaTransformer {
22
22
  const type = await typeNodeToSchema(typeAlias.type, context);
23
23
  const info = await context.getQuickInfo(typeAlias.name);
24
24
  const displaySig = info?.body?.displayString;
25
- return new TypeSchema(this.getName(typeAlias), type, displaySig as string);
25
+ return new TypeSchema(context.getLocation(typeAlias), this.getName(typeAlias), type, displaySig || '');
26
26
  }
27
27
  }
@@ -11,6 +11,7 @@ export async function getParams(
11
11
  ): Promise<ParameterSchema[]> {
12
12
  return pMapSeries(parameterNodes, async (param) => {
13
13
  return new ParameterSchema(
14
+ context.getLocation(param),
14
15
  param.name.getText(),
15
16
  await getParamType(param, context),
16
17
  param.initializer ? param.initializer.getText() : undefined
@@ -18,6 +19,9 @@ export async function getParams(
18
19
  });
19
20
  }
20
21
 
22
+ /**
23
+ * @todo: probably not needed. just call context.resolveType instead.
24
+ */
21
25
  async function getParamType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {
22
26
  if (param.type) {
23
27
  const type = param.type;
@@ -25,5 +29,5 @@ async function getParamType(param: ParameterDeclaration, context: SchemaExtracto
25
29
  }
26
30
  const info = await context.getQuickInfo(param.name);
27
31
  const parsed = parseTypeFromQuickInfo(info);
28
- return new TypeRefSchema(parsed || 'any');
32
+ return new TypeRefSchema(context.getLocation(param), parsed || 'any');
29
33
  }
@@ -9,11 +9,11 @@ export async function toFunctionLikeSchema(node: SignatureDeclaration, context:
9
9
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
10
10
  const info = await context.getQuickInfo(node.name!);
11
11
  const returnTypeStr = parseTypeFromQuickInfo(info);
12
- const displaySig = info?.body?.displayString;
12
+ const displaySig = info?.body?.displayString || '';
13
13
  const args = await getParams(node.parameters, context);
14
14
  const returnType = await context.resolveType(node, returnTypeStr);
15
15
  const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];
16
16
  const location = context.getLocation(node);
17
17
 
18
- return new FunctionLikeSchema(name, args, returnType, displaySig || '', location, modifiers as Modifier[]);
18
+ return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[]);
19
19
  }
@@ -31,8 +31,9 @@ import { getParams } from './get-params';
31
31
 
32
32
  // eslint-disable-next-line complexity
33
33
  export async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {
34
+ const location = context.getLocation(node);
34
35
  if (isKeywordType(node)) {
35
- return new KeywordTypeSchema(node.getText());
36
+ return new KeywordTypeSchema(location, node.getText());
36
37
  }
37
38
  switch (node.kind) {
38
39
  case SyntaxKind.IntersectionType:
@@ -44,7 +45,7 @@ export async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorC
44
45
  case SyntaxKind.TypeLiteral:
45
46
  return typeLiteral(node as TypeLiteralNode, context);
46
47
  case SyntaxKind.LiteralType: // e.g. string/boolean
47
- return new LiteralTypeSchema(node.getText());
48
+ return new LiteralTypeSchema(location, node.getText());
48
49
  case SyntaxKind.FunctionType:
49
50
  return functionType(node as FunctionTypeNode, context);
50
51
  case SyntaxKind.TypeQuery:
@@ -117,7 +118,8 @@ async function intersectionType(node: IntersectionTypeNode, context: SchemaExtra
117
118
  const typeSchema = await typeNodeToSchema(type, context);
118
119
  return typeSchema;
119
120
  });
120
- return new TypeIntersectionSchema(types);
121
+ const location = context.getLocation(node);
122
+ return new TypeIntersectionSchema(location, types);
121
123
  }
122
124
 
123
125
  async function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {
@@ -125,7 +127,8 @@ async function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {
125
127
  const typeSchema = await typeNodeToSchema(type, context);
126
128
  return typeSchema;
127
129
  });
128
- return new TypeUnionSchema(types);
130
+ const location = context.getLocation(node);
131
+ return new TypeUnionSchema(location, types);
129
132
  }
130
133
 
131
134
  /**
@@ -137,7 +140,8 @@ async function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContex
137
140
  const typeSchema = await context.computeSchema(member);
138
141
  return typeSchema;
139
142
  });
140
- return new TypeLiteralSchema(members);
143
+ const location = context.getLocation(node);
144
+ return new TypeLiteralSchema(location, members);
141
145
  }
142
146
 
143
147
  /**
@@ -158,7 +162,7 @@ async function functionType(node: FunctionTypeNode, context: SchemaExtractorCont
158
162
  const params = await getParams(node.parameters, context);
159
163
  const returnType = await typeNodeToSchema(node.type, context);
160
164
  const location = context.getLocation(node);
161
- return new FunctionLikeSchema(name, params, returnType, '', location);
165
+ return new FunctionLikeSchema(location, name, params, returnType, '');
162
166
  }
163
167
 
164
168
  /**
@@ -167,12 +171,14 @@ async function functionType(node: FunctionTypeNode, context: SchemaExtractorCont
167
171
  async function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {
168
172
  const displaySig = await context.getQuickInfoDisplayString(node.exprName);
169
173
  const type = await context.resolveType(node.exprName, node.exprName.getText(), false);
170
- return new TypeQuerySchema(type, displaySig);
174
+ const location = context.getLocation(node);
175
+ return new TypeQuerySchema(location, type, displaySig);
171
176
  }
172
177
 
173
178
  async function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {
174
179
  const type = await typeNodeToSchema(node.elementType, context);
175
- return new TypeArraySchema(type);
180
+ const location = context.getLocation(node);
181
+ return new TypeArraySchema(location, type);
176
182
  }
177
183
 
178
184
  /**
@@ -181,7 +187,7 @@ async function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {
181
187
  async function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {
182
188
  const operatorName = getOperatorName(node.operator);
183
189
  const type = await typeNodeToSchema(node.type, context);
184
- return new TypeOperatorSchema(operatorName, type);
190
+ return new TypeOperatorSchema(context.getLocation(node), operatorName, type);
185
191
  }
186
192
 
187
193
  function getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {
@@ -202,5 +208,5 @@ async function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {
202
208
  const typeSchema = await typeNodeToSchema(elem, context);
203
209
  return typeSchema;
204
210
  });
205
- return new TupleTypeSchema(elements);
211
+ return new TupleTypeSchema(context.getLocation(node), elements);
206
212
  }
@@ -23,15 +23,15 @@ export class VariableDeclaration implements SchemaTransformer {
23
23
  const name = this.getName(varDec);
24
24
  const info = await context.getQuickInfo(varDec.name);
25
25
  const displaySig = info?.body?.displayString || '';
26
+ const location = context.getLocation(varDec);
26
27
  if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {
27
28
  const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);
28
29
  const typeStr = parseReturnTypeFromQuickInfo(info);
29
30
  const returnType = await context.resolveType(varDec, typeStr);
30
- const location = context.getLocation(varDec);
31
- return new FunctionLikeSchema(name, args, returnType, displaySig, location);
31
+ return new FunctionLikeSchema(location, name, args, returnType, displaySig);
32
32
  }
33
33
  const typeStr = parseTypeFromQuickInfo(info);
34
34
  const type = await context.resolveType(varDec, typeStr);
35
- return new VariableSchema(name, displaySig, type);
35
+ return new VariableSchema(location, name, displaySig, type);
36
36
  }
37
37
  }
@@ -27,7 +27,6 @@ export class VariableStatementTransformer implements SchemaTransformer {
27
27
  const schema = await context.visitDefinition(dec.name);
28
28
  return schema;
29
29
  });
30
- // @todo: find a better way to return an array of SchemaNode. this is not really a module
31
- return new Module(compact(schemas));
30
+ return new Module(context.getLocation(node), compact(schemas));
32
31
  }
33
32
  }