@teambit/typescript 0.0.965 → 0.0.967
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/export-identifier.d.ts +5 -4
- package/dist/export-identifier.js +23 -4
- package/dist/export-identifier.js.map +1 -1
- package/dist/identifier-list.d.ts +7 -0
- package/dist/identifier-list.js +21 -0
- package/dist/identifier-list.js.map +1 -0
- package/dist/identifier.d.ts +9 -0
- package/dist/identifier.js +30 -0
- package/dist/identifier.js.map +1 -0
- package/dist/{preview-1674271762484.js → preview-1674617375675.js} +2 -2
- package/dist/schema-extractor-context.d.ts +40 -8
- package/dist/schema-extractor-context.js +243 -101
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/schema-transformer.d.ts +2 -2
- package/dist/schema-transformer.js.map +1 -1
- package/dist/transformers/array-type.d.ts +10 -0
- package/dist/transformers/array-type.js +38 -0
- package/dist/transformers/array-type.js.map +1 -0
- package/dist/transformers/binding-element.d.ts +2 -2
- package/dist/transformers/binding-element.js +7 -7
- package/dist/transformers/binding-element.js.map +1 -1
- package/dist/transformers/class-declaration.d.ts +2 -2
- package/dist/transformers/class-declaration.js +6 -20
- package/dist/transformers/class-declaration.js.map +1 -1
- package/dist/transformers/conditional-type.d.ts +10 -0
- package/dist/transformers/conditional-type.js +39 -0
- package/dist/transformers/conditional-type.js.map +1 -0
- package/dist/transformers/constructor.d.ts +10 -0
- package/dist/transformers/constructor.js +50 -0
- package/dist/transformers/constructor.js.map +1 -0
- package/dist/transformers/enum-declaration.d.ts +2 -2
- package/dist/transformers/enum-declaration.js +4 -4
- package/dist/transformers/enum-declaration.js.map +1 -1
- package/dist/transformers/{export-assignment-declaration.d.ts → export-assignment.d.ts} +7 -2
- package/dist/transformers/export-assignment.js +41 -0
- package/dist/transformers/export-assignment.js.map +1 -0
- package/dist/transformers/export-declaration.d.ts +2 -3
- package/dist/transformers/export-declaration.js +21 -10
- package/dist/transformers/export-declaration.js.map +1 -1
- package/dist/transformers/function-like.d.ts +11 -0
- package/dist/transformers/function-like.js +82 -0
- package/dist/transformers/function-like.js.map +1 -0
- package/dist/transformers/get-accessor.d.ts +10 -0
- package/dist/transformers/get-accessor.js +48 -0
- package/dist/transformers/get-accessor.js.map +1 -0
- package/dist/transformers/import-declaration.d.ts +10 -0
- package/dist/transformers/import-declaration.js +74 -0
- package/dist/transformers/import-declaration.js.map +1 -0
- package/dist/transformers/index-signature.d.ts +10 -0
- package/dist/transformers/index-signature.js +45 -0
- package/dist/transformers/index-signature.js.map +1 -0
- package/dist/transformers/index.d.ts +28 -3
- package/dist/transformers/index.js +337 -12
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/indexed-access-type.d.ts +10 -0
- package/dist/transformers/indexed-access-type.js +37 -0
- package/dist/transformers/indexed-access-type.js.map +1 -0
- package/dist/transformers/interface-declaration.d.ts +2 -2
- package/dist/transformers/interface-declaration.js +6 -20
- package/dist/transformers/interface-declaration.js.map +1 -1
- package/dist/transformers/intersection-type.d.ts +10 -0
- package/dist/transformers/intersection-type.js +48 -0
- package/dist/transformers/intersection-type.js.map +1 -0
- package/dist/transformers/keyword-type.d.ts +13 -0
- package/dist/transformers/keyword-type.js +55 -0
- package/dist/transformers/keyword-type.js.map +1 -0
- package/dist/transformers/literal-type.d.ts +13 -0
- package/dist/transformers/literal-type.js +40 -0
- package/dist/transformers/literal-type.js.map +1 -0
- package/dist/transformers/named-tuple.d.ts +10 -0
- package/dist/transformers/named-tuple.js +38 -0
- package/dist/transformers/named-tuple.js.map +1 -0
- package/dist/transformers/parameter.d.ts +13 -0
- package/dist/transformers/parameter.js +112 -0
- package/dist/transformers/parameter.js.map +1 -0
- package/dist/transformers/parenthesized-type.d.ts +10 -0
- package/dist/transformers/parenthesized-type.js +36 -0
- package/dist/transformers/parenthesized-type.js.map +1 -0
- package/dist/transformers/property-declaration.d.ts +11 -0
- package/dist/transformers/property-declaration.js +57 -0
- package/dist/transformers/property-declaration.js.map +1 -0
- package/dist/transformers/set-accessor.d.ts +10 -0
- package/dist/transformers/set-accessor.js +45 -0
- package/dist/transformers/set-accessor.js.map +1 -0
- package/dist/transformers/source-file-transformer.d.ts +3 -2
- package/dist/transformers/source-file-transformer.js +44 -15
- package/dist/transformers/source-file-transformer.js.map +1 -1
- package/dist/transformers/template-literal-type-span.d.ts +10 -0
- package/dist/transformers/template-literal-type-span.js +37 -0
- package/dist/transformers/template-literal-type-span.js.map +1 -0
- package/dist/transformers/template-literal-type.d.ts +10 -0
- package/dist/transformers/template-literal-type.js +45 -0
- package/dist/transformers/template-literal-type.js.map +1 -0
- package/dist/transformers/this-type.d.ts +10 -0
- package/dist/transformers/this-type.js +35 -0
- package/dist/transformers/this-type.js.map +1 -0
- package/dist/transformers/tuple-type.d.ts +10 -0
- package/dist/transformers/tuple-type.js +47 -0
- package/dist/transformers/tuple-type.js.map +1 -0
- package/dist/transformers/type-alias.d.ts +2 -2
- package/dist/transformers/type-alias.js +5 -12
- package/dist/transformers/type-alias.js.map +1 -1
- package/dist/transformers/type-literal.d.ts +14 -0
- package/dist/transformers/type-literal.js +49 -0
- package/dist/transformers/type-literal.js.map +1 -0
- package/dist/transformers/type-operator.d.ts +14 -0
- package/dist/transformers/type-operator.js +52 -0
- package/dist/transformers/type-operator.js.map +1 -0
- package/dist/transformers/type-predicate.d.ts +10 -0
- package/dist/transformers/type-predicate.js +38 -0
- package/dist/transformers/type-predicate.js.map +1 -0
- package/dist/transformers/type-query.d.ts +13 -0
- package/dist/transformers/type-query.js +42 -0
- package/dist/transformers/type-query.js.map +1 -0
- package/dist/transformers/type-reference.d.ts +16 -0
- package/dist/transformers/type-reference.js +56 -0
- package/dist/transformers/type-reference.js.map +1 -0
- package/dist/transformers/union-type.d.ts +10 -0
- package/dist/transformers/union-type.js +48 -0
- package/dist/transformers/union-type.js.map +1 -0
- package/dist/transformers/utils/jsdoc-to-doc-schema.js +2 -10
- package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -1
- package/dist/transformers/variable-declaration.d.ts +2 -2
- package/dist/transformers/variable-declaration.js +11 -11
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/transformers/variable-statement.d.ts +2 -2
- package/dist/transformers/variable-statement.js +5 -5
- package/dist/transformers/variable-statement.js.map +1 -1
- package/dist/typescript.extractor.d.ts +10 -4
- package/dist/typescript.extractor.js +70 -17
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.main.runtime.d.ts +4 -2
- package/dist/typescript.main.runtime.js +5 -11
- package/dist/typescript.main.runtime.js.map +1 -1
- package/package-tar/teambit-typescript-0.0.967.tgz +0 -0
- package/package.json +17 -17
- package/transformers/array-type.ts +21 -0
- package/transformers/binding-element.ts +2 -2
- package/transformers/class-declaration.ts +4 -6
- package/transformers/conditional-type.ts +23 -0
- package/transformers/constructor.ts +40 -0
- package/transformers/enum-declaration.ts +3 -3
- package/transformers/{export-assignment-declaration.ts → export-assignment.ts} +9 -3
- package/transformers/export-declaration.ts +35 -8
- package/transformers/function-like.ts +65 -0
- package/transformers/get-accessor.ts +24 -0
- package/transformers/import-declaration.ts +56 -0
- package/transformers/index-signature.ts +24 -0
- package/transformers/index.ts +28 -3
- package/transformers/indexed-access-type.ts +21 -0
- package/transformers/interface-declaration.ts +5 -7
- package/transformers/intersection-type.ts +25 -0
- package/transformers/keyword-type.ts +39 -0
- package/transformers/literal-type.ts +23 -0
- package/transformers/named-tuple.ts +22 -0
- package/transformers/parameter.ts +110 -0
- package/transformers/parenthesized-type.ts +20 -0
- package/transformers/property-declaration.ts +33 -0
- package/transformers/set-accessor.ts +25 -0
- package/transformers/source-file-transformer.ts +56 -24
- package/transformers/template-literal-type-span.ts +21 -0
- package/transformers/template-literal-type.ts +24 -0
- package/transformers/this-type.ts +19 -0
- package/transformers/tuple-type.ts +24 -0
- package/transformers/type-alias.ts +3 -4
- package/transformers/type-literal.ts +26 -0
- package/transformers/type-operator.ts +37 -0
- package/transformers/type-predicate.ts +22 -0
- package/transformers/type-query.ts +25 -0
- package/transformers/type-reference.ts +33 -0
- package/transformers/union-type.ts +25 -0
- package/transformers/utils/jsdoc-to-doc-schema.ts +2 -4
- package/transformers/variable-declaration.ts +7 -4
- package/transformers/variable-statement.ts +3 -3
- package/dist/export-list.d.ts +0 -6
- package/dist/export-list.js +0 -17
- package/dist/export-list.js.map +0 -1
- package/dist/transformers/export-assignment-declaration.js +0 -29
- package/dist/transformers/export-assignment-declaration.js.map +0 -1
- package/dist/transformers/function-declaration.d.ts +0 -11
- package/dist/transformers/function-declaration.js +0 -49
- package/dist/transformers/function-declaration.js.map +0 -1
- package/dist/transformers/utils/class-element-to-schema.d.ts +0 -4
- package/dist/transformers/utils/class-element-to-schema.js +0 -95
- package/dist/transformers/utils/class-element-to-schema.js.map +0 -1
- package/dist/transformers/utils/get-params.d.ts +0 -4
- package/dist/transformers/utils/get-params.js +0 -100
- package/dist/transformers/utils/get-params.js.map +0 -1
- package/dist/transformers/utils/to-function-like-schema.d.ts +0 -4
- package/dist/transformers/utils/to-function-like-schema.js +0 -58
- package/dist/transformers/utils/to-function-like-schema.js.map +0 -1
- package/dist/transformers/utils/type-element-to-schema.d.ts +0 -7
- package/dist/transformers/utils/type-element-to-schema.js +0 -106
- package/dist/transformers/utils/type-element-to-schema.js.map +0 -1
- package/dist/transformers/utils/type-node-to-schema.d.ts +0 -4
- package/dist/transformers/utils/type-node-to-schema.js +0 -274
- package/dist/transformers/utils/type-node-to-schema.js.map +0 -1
- package/package-tar/teambit-typescript-0.0.965.tgz +0 -0
- package/transformers/function-declaration.ts +0 -25
- package/transformers/utils/class-element-to-schema.ts +0 -64
- package/transformers/utils/get-params.ts +0 -92
- package/transformers/utils/to-function-like-schema.ts +0 -39
- package/transformers/utils/type-element-to-schema.ts +0 -79
- package/transformers/utils/type-node-to-schema.ts +0 -294
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","undefined","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","formatter","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","id","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","transform","getComponentIDByPath","getComponentIdByPath","transformers","flatten","values","find","singleTransformer","predicate","from","options","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","wsPath"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, ModuleSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { EnvContext } from '@teambit/envs';\nimport { Formatter } from '@teambit/formatter';\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';\nimport { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\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 private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component, formatter?: Formatter): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = await this.createContext(tsserver, component, formatter);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, component.id);\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n if (!transformer || !transformer.getIdentifiers) {\n throw new TransformerNotFound(node, context.component, context.getLocation(node));\n }\n return transformer.getIdentifiers(node, context);\n }\n\n private async createContext(\n tsserver: TsserverClient,\n component: Component,\n formatter?: Formatter\n ): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps, formatter);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\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);\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 async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, context.component, context.getLocation(node));\n\n return transformer;\n }\n\n static from(options: ExtractorOptions) {\n return (context: EnvContext) => {\n const tsconfig = getTsconfig(options.tsconfig)?.config || { compilerOptions: options.compilerOptions };\n const tsMain = context.getAspect<TypescriptMain>(TypescriptAspect.id);\n // When loading the env from a scope you don't have a workspace\n const wsPath = tsMain.workspace?.path || '';\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain,\n wsPath,\n tsMain.depResolver,\n tsMain.workspace\n );\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,mBAAmB,CAA4B;EAC1DC,WAAW,CACDC,QAAa,EACbC,qBAA4C,EAC5CC,MAAsB,EACtBC,QAAgB,EAChBC,WAAmC,EACnCC,SAAgC,EACxC;IAAA,KANQL,QAAa,GAAbA,QAAa;IAAA,KACbC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,MAAsB,GAAtBA,MAAsB;IAAA,KACtBC,QAAgB,GAAhBA,QAAgB;IAAA,KAChBC,WAAmC,GAAnCA,WAAmC;IAAA,KACnCC,SAAgC,GAAhCA,SAAgC;IAAA,kDA8DKC,SAAS;EA7DrD;EAEHC,eAAe,CAACC,IAAmB,EAAc;IAC/C,MAAMC,UAAU,GAAGC,qBAAE,CAACC,gBAAgB,CACpCH,IAAI,CAACI,IAAI,EACTJ,IAAI,CAACK,QAAQ,CAACC,QAAQ,CAAC,MAAM,CAAC,EAC9BJ,qBAAE,CAACK,YAAY,CAACC,MAAM,EACtB;IACA,kGACD;IACD;IACA;IACA,OAAOP,UAAU;EACnB;;EAEA;AACF;AACA;EACE,MAAMQ,OAAO,CAACC,SAAoB,EAAEC,SAAqB,EAAsB;IAC7E,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,WAAW,EAAE;IACzC,MAAMC,QAAQ,GAAGJ,SAAS,CAACI,QAAQ;IACnC,MAAMC,OAAO,GAAG,IAAI,CAAChB,eAAe,CAACe,QAAQ,CAAC;IAC9C,MAAME,OAAO,GAAG,MAAM,IAAI,CAACC,aAAa,CAACL,QAAQ,EAAEF,SAAS,EAAEC,SAAS,CAAC;IACxE,MAAMO,WAAW,GAAG,MAAM,IAAI,CAACC,0BAA0B,CAACJ,OAAO,EAAEC,OAAO,CAAC;IAC3EA,OAAO,CAACI,UAAU,CAAC,KAAIC,wBAAU,EAACH,WAAW,CAAC,CAAC;IAC/C,MAAMI,YAAY,GAAI,MAAM,IAAI,CAACC,aAAa,CAACR,OAAO,EAAEC,OAAO,CAAkB;IACjFM,YAAY,CAACE,sBAAsB,EAAE;IACrC,MAAMC,SAAS,GAAGH,YAAY;IAC9B,MAAMI,QAAQ,GAAGV,OAAO,CAACW,WAAW,CAACZ,OAAO,CAAC;IAE7C,OAAO,KAAIa,8BAAS,EAACF,QAAQ,EAAED,SAAS,EAAEf,SAAS,CAACmB,EAAE,CAAC;EACzD;EAEAC,OAAO,GAAG;IACR,IAAI,CAAC,IAAI,CAAClB,QAAQ,EAAE;IACpB,IAAI,CAACA,QAAQ,CAACmB,YAAY,EAAE;EAC9B;EAEA,MAAMZ,0BAA0B,CAACa,IAAU,EAAEhB,OAA+B,EAAE;IAC5E,MAAMiB,WAAW,GAAG,IAAI,CAACC,cAAc,CAACF,IAAI,EAAEhB,OAAO,CAAC;IACtD,IAAI,CAACiB,WAAW,IAAI,CAACA,WAAW,CAACE,cAAc,EAAE;MAC/C,MAAM,KAAIC,iCAAmB,EAACJ,IAAI,EAAEhB,OAAO,CAACN,SAAS,EAAEM,OAAO,CAACW,WAAW,CAACK,IAAI,CAAC,CAAC;IACnF;IACA,OAAOC,WAAW,CAACE,cAAc,CAACH,IAAI,EAAEhB,OAAO,CAAC;EAClD;EAEA,MAAcC,aAAa,CACzBL,QAAwB,EACxBF,SAAoB,EACpBC,SAAqB,EACY;IACjC,MAAM0B,aAAa,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAAC5B,SAAS,CAAC;IAC5D,OAAO,KAAI6B,gDAAsB,EAAC3B,QAAQ,EAAEF,SAAS,EAAE,IAAI,EAAE2B,aAAa,EAAE1B,SAAS,CAAC;EACxF;EAEA,MAAc2B,gBAAgB,CAAC5B,SAAoB,EAAkC;IACnF,MAAM8B,IAAI,GAAG,MAAM,IAAI,CAAC5C,WAAW,CAAC6C,eAAe,CAAC/B,SAAS,CAAC;IAC9D,MAAM2B,aAAa,GAAGG,IAAI,CAACE,wBAAwB,EAAE;IACrD,OAAOL,aAAa;EACtB;EAIA,MAAcxB,WAAW,GAAG;IAC1B,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE;MAClB,MAAMA,QAAQ,GAAG,IAAI,CAAClB,MAAM,CAACiD,iBAAiB,EAAE;MAChD,IAAI/B,QAAQ,EAAE;QACZ,IAAI,CAACA,QAAQ,GAAGA,QAAQ;QACxB,OAAOA,QAAQ;MACjB;MAEA,IAAI,CAACA,QAAQ,GAAG,MAAM,IAAI,CAAClB,MAAM,CAACkD,kBAAkB,CAAC,IAAI,CAACjD,QAAQ,CAAC;MACnE,OAAO,IAAI,CAACiB,QAAQ;IACtB;IAEA,OAAO,IAAI,CAACA,QAAQ;EACtB;EAEA,MAAMW,aAAa,CAACS,IAAU,EAAEhB,OAA+B,EAAuB;IACpF,MAAMiB,WAAW,GAAG,IAAI,CAACC,cAAc,CAACF,IAAI,EAAEhB,OAAO,CAAC;IACtD;IACA;IACA,OAAOiB,WAAW,CAACY,SAAS,CAACb,IAAI,EAAEhB,OAAO,CAAC;EAC7C;EAEA,MAAM8B,oBAAoB,CAAC9C,IAAY,EAAE;IACvC,IAAI,CAAC,IAAI,CAACH,SAAS,EAAE;MACnB,OAAO,IAAI;IACb;IACA,OAAO,IAAI,CAACA,SAAS,CAACkD,oBAAoB,CAAC/C,IAAI,CAAC;EAClD;;EAEA;AACF;AACA;EACUkC,cAAc,CAACF,IAAU,EAAEhB,OAA+B,EAAE;IAClE,MAAMgC,YAAY,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACxD,qBAAqB,CAACyD,MAAM,EAAE,CAAC;IACjE,MAAMjB,WAAW,GAAGe,YAAY,CAACG,IAAI,CAAEC,iBAAiB,IAAKA,iBAAiB,CAACC,SAAS,CAACrB,IAAI,CAAC,CAAC;IAE/F,IAAI,CAACC,WAAW,EAAE,MAAM,KAAIG,iCAAmB,EAACJ,IAAI,EAAEhB,OAAO,CAACN,SAAS,EAAEM,OAAO,CAACW,WAAW,CAACK,IAAI,CAAC,CAAC;IAEnG,OAAOC,WAAW;EACpB;EAEA,OAAOqB,IAAI,CAACC,OAAyB,EAAE;IACrC,OAAQvC,OAAmB,IAAK;MAAA;MAC9B,MAAMxB,QAAQ,GAAG,qBAAAgE,2BAAW,EAACD,OAAO,CAAC/D,QAAQ,CAAC,iDAA7B,aAA+BiE,MAAM,KAAI;QAAEC,eAAe,EAAEH,OAAO,CAACG;MAAgB,CAAC;MACtG,MAAMhE,MAAM,GAAGsB,OAAO,CAAC2C,SAAS,CAAiBC,+BAAgB,CAAC/B,EAAE,CAAC;MACrE;MACA,MAAMgC,MAAM,GAAG,sBAAAnE,MAAM,CAACG,SAAS,sDAAhB,kBAAkBO,IAAI,KAAI,EAAE;MAC3C,OAAO,IAAId,mBAAmB,CAC5BE,QAAQ,EACRE,MAAM,CAACD,qBAAqB,EAC5BC,MAAM,EACNmE,MAAM,EACNnE,MAAM,CAACE,WAAW,EAClBF,MAAM,CAACG,SAAS,CACjB;IACH,CAAC;EACH;AACF;AAAC"}
|
|
1
|
+
{"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","aspectLoader","logger","undefined","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","formatter","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","filesystem","files","filter","includes","extname","allFiles","context","createContext","pMapSeries","ast","identifiers","computeIdentifiers","cacheKey","getIdentifierKeyForNode","setIdentifiers","IdentifierList","mainAst","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","internals","computeInternalModules","location","getLocation","APISchema","id","compact","Promise","all","internalIdentifiers","entries","map","filePath","find","internalFile","fileAst","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","warn","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","transform","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","transformers","flatten","values","singleTransformer","predicate","from","options","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","wsPath","createLogger","name"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile, SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, ModuleSchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { EnvContext } from '@teambit/envs';\nimport { Formatter } from '@teambit/formatter';\nimport { Logger } from '@teambit/logger';\nimport AspectLoaderAspect, { AspectLoaderMain, getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { Identifier } from './identifier';\nimport { IdentifierList } from './identifier-list';\nimport { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\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 private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined,\n private aspectLoader: AspectLoaderMain,\n private logger: Logger\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component, formatter?: Formatter): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.jsx', '.ts', '.js'];\n const internalFiles = component.filesystem.files.filter(\n (file) => compatibleExts.includes(file.extname) && file.path !== mainFile.path\n );\n const allFiles = [mainFile, ...internalFiles];\n\n const context = await this.createContext(tsserver, component, formatter);\n\n await pMapSeries(allFiles, async (file) => {\n const ast = this.parseSourceFile(file);\n const identifiers = await this.computeIdentifiers(ast, context); // compute for every file\n const cacheKey = context.getIdentifierKeyForNode(ast);\n context.setIdentifiers(cacheKey, new IdentifierList(identifiers));\n });\n\n const mainAst = this.parseSourceFile(mainFile);\n const moduleSchema = (await this.computeSchema(mainAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const internals = await this.computeInternalModules(context, internalFiles);\n\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, internals, component.id);\n }\n\n async computeInternalModules(context: SchemaExtractorContext, internalFiles: AbstractVinyl[]) {\n const internals = compact(\n await Promise.all(\n [...context.internalIdentifiers.entries()].map(async ([filePath]) => {\n const file = internalFiles.find((internalFile) => internalFile.path === filePath);\n if (!file) return undefined;\n const fileAst = this.parseSourceFile(file);\n const moduleSchema = (await this.computeSchema(fileAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n return moduleSchema;\n })\n )\n );\n return internals;\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n let identifiers: Identifier[] = [];\n if (!transformer || !transformer.getIdentifiers) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n } else {\n identifiers = await transformer.getIdentifiers(node, context);\n }\n return identifiers;\n }\n\n private async createContext(\n tsserver: TsserverClient,\n component: Component,\n formatter?: Formatter\n ): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps, formatter);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\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);\n\n if (!transformer) {\n return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);\n }\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const matchingCoreAspect = coreAspectIds.find((c) => file === getCoreAspectPackageName(c));\n\n if (matchingCoreAspect) {\n return this.workspace.resolveComponentId(matchingCoreAspect);\n }\n\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n return undefined;\n }\n\n return transformer;\n }\n\n static from(options: ExtractorOptions) {\n return (context: EnvContext) => {\n const tsconfig = getTsconfig(options.tsconfig)?.config || { compilerOptions: options.compilerOptions };\n const tsMain = context.getAspect<TypescriptMain>(TypescriptAspect.id);\n const aspectLoaderMain = context.getAspect<AspectLoaderMain>(AspectLoaderAspect.id);\n\n // When loading the env from a scope you don't have a workspace\n const wsPath = tsMain.workspace?.path || '';\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain,\n wsPath,\n tsMain.depResolver,\n tsMain.workspace,\n aspectLoaderMain,\n context.createLogger(options.name)\n );\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAMA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAuD;AAAA;AAEhD,MAAMA,mBAAmB,CAA4B;EAC1DC,WAAW,CACDC,QAAa,EACbC,qBAA4C,EAC5CC,MAAsB,EACtBC,QAAgB,EAChBC,WAAmC,EACnCC,SAAgC,EAChCC,YAA8B,EAC9BC,MAAc,EACtB;IAAA,KARQP,QAAa,GAAbA,QAAa;IAAA,KACbC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,MAAsB,GAAtBA,MAAsB;IAAA,KACtBC,QAAgB,GAAhBA,QAAgB;IAAA,KAChBC,WAAmC,GAAnCA,WAAmC;IAAA,KACnCC,SAAgC,GAAhCA,SAAgC;IAAA,KAChCC,YAA8B,GAA9BA,YAA8B;IAAA,KAC9BC,MAAc,GAAdA,MAAc;IAAA,kDA+FuBC,SAAS;EA9FrD;EAEHC,eAAe,CAACC,IAAmB,EAAc;IAC/C,MAAMC,UAAU,GAAGC,qBAAE,CAACC,gBAAgB,CACpCH,IAAI,CAACI,IAAI,EACTJ,IAAI,CAACK,QAAQ,CAACC,QAAQ,CAAC,MAAM,CAAC,EAC9BJ,qBAAE,CAACK,YAAY,CAACC,MAAM,EACtB;IACA,kGACD;IACD;IACA;IACA,OAAOP,UAAU;EACnB;;EAEA;AACF;AACA;EACE,MAAMQ,OAAO,CAACC,SAAoB,EAAEC,SAAqB,EAAsB;IAC7E,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,WAAW,EAAE;IACzC,MAAMC,QAAQ,GAAGJ,SAAS,CAACI,QAAQ;IACnC,MAAMC,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;IACrD,MAAMC,aAAa,GAAGN,SAAS,CAACO,UAAU,CAACC,KAAK,CAACC,MAAM,CACpDnB,IAAI,IAAKe,cAAc,CAACK,QAAQ,CAACpB,IAAI,CAACqB,OAAO,CAAC,IAAIrB,IAAI,CAACI,IAAI,KAAKU,QAAQ,CAACV,IAAI,CAC/E;IACD,MAAMkB,QAAQ,GAAG,CAACR,QAAQ,EAAE,GAAGE,aAAa,CAAC;IAE7C,MAAMO,OAAO,GAAG,MAAM,IAAI,CAACC,aAAa,CAACZ,QAAQ,EAAEF,SAAS,EAAEC,SAAS,CAAC;IAExE,MAAM,IAAAc,qBAAU,EAACH,QAAQ,EAAE,MAAOtB,IAAI,IAAK;MACzC,MAAM0B,GAAG,GAAG,IAAI,CAAC3B,eAAe,CAACC,IAAI,CAAC;MACtC,MAAM2B,WAAW,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAACF,GAAG,EAAEH,OAAO,CAAC,CAAC,CAAC;MACjE,MAAMM,QAAQ,GAAGN,OAAO,CAACO,uBAAuB,CAACJ,GAAG,CAAC;MACrDH,OAAO,CAACQ,cAAc,CAACF,QAAQ,EAAE,KAAIG,gCAAc,EAACL,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAMM,OAAO,GAAG,IAAI,CAAClC,eAAe,CAACe,QAAQ,CAAC;IAC9C,MAAMoB,YAAY,GAAI,MAAM,IAAI,CAACC,aAAa,CAACF,OAAO,EAAEV,OAAO,CAAkB;IACjFW,YAAY,CAACE,sBAAsB,EAAE;IACrC,MAAMC,SAAS,GAAGH,YAAY;IAC9B,MAAMI,SAAS,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAAChB,OAAO,EAAEP,aAAa,CAAC;IAE3E,MAAMwB,QAAQ,GAAGjB,OAAO,CAACkB,WAAW,CAACR,OAAO,CAAC;IAE7C,OAAO,KAAIS,8BAAS,EAACF,QAAQ,EAAEH,SAAS,EAAEC,SAAS,EAAE5B,SAAS,CAACiC,EAAE,CAAC;EACpE;EAEA,MAAMJ,sBAAsB,CAAChB,OAA+B,EAAEP,aAA8B,EAAE;IAC5F,MAAMsB,SAAS,GAAG,IAAAM,iBAAO,EACvB,MAAMC,OAAO,CAACC,GAAG,CACf,CAAC,GAAGvB,OAAO,CAACwB,mBAAmB,CAACC,OAAO,EAAE,CAAC,CAACC,GAAG,CAAC,OAAO,CAACC,QAAQ,CAAC,KAAK;MACnE,MAAMlD,IAAI,GAAGgB,aAAa,CAACmC,IAAI,CAAEC,YAAY,IAAKA,YAAY,CAAChD,IAAI,KAAK8C,QAAQ,CAAC;MACjF,IAAI,CAAClD,IAAI,EAAE,OAAOF,SAAS;MAC3B,MAAMuD,OAAO,GAAG,IAAI,CAACtD,eAAe,CAACC,IAAI,CAAC;MAC1C,MAAMkC,YAAY,GAAI,MAAM,IAAI,CAACC,aAAa,CAACkB,OAAO,EAAE9B,OAAO,CAAkB;MACjFW,YAAY,CAACE,sBAAsB,EAAE;MACrC,OAAOF,YAAY;IACrB,CAAC,CAAC,CACH,CACF;IACD,OAAOI,SAAS;EAClB;EAEAgB,OAAO,GAAG;IACR,IAAI,CAAC,IAAI,CAAC1C,QAAQ,EAAE;IACpB,IAAI,CAACA,QAAQ,CAAC2C,YAAY,EAAE;EAC9B;EAEA,MAAM3B,kBAAkB,CAAC4B,IAAU,EAAEjC,OAA+B,EAAE;IACpE,MAAMkC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACF,IAAI,EAAEjC,OAAO,CAAC;IACtD,IAAII,WAAyB,GAAG,EAAE;IAClC,IAAI,CAAC8B,WAAW,IAAI,CAACA,WAAW,CAACE,cAAc,EAAE;MAC/C,IAAI,CAAC9D,MAAM,CAAC+D,IAAI,CAAC,KAAIC,iCAAmB,EAACL,IAAI,EAAEjC,OAAO,CAACb,SAAS,EAAEa,OAAO,CAACkB,WAAW,CAACe,IAAI,CAAC,CAAC,CAAClD,QAAQ,EAAE,CAAC;IAC1G,CAAC,MAAM;MACLqB,WAAW,GAAG,MAAM8B,WAAW,CAACE,cAAc,CAACH,IAAI,EAAEjC,OAAO,CAAC;IAC/D;IACA,OAAOI,WAAW;EACpB;EAEA,MAAcH,aAAa,CACzBZ,QAAwB,EACxBF,SAAoB,EACpBC,SAAqB,EACY;IACjC,MAAMmD,aAAa,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACrD,SAAS,CAAC;IAC5D,OAAO,KAAIsD,gDAAsB,EAACpD,QAAQ,EAAEF,SAAS,EAAE,IAAI,EAAEoD,aAAa,EAAEnD,SAAS,CAAC;EACxF;EAEA,MAAcoD,gBAAgB,CAACrD,SAAoB,EAAkC;IACnF,MAAMuD,IAAI,GAAG,MAAM,IAAI,CAACvE,WAAW,CAACwE,eAAe,CAACxD,SAAS,CAAC;IAC9D,MAAMoD,aAAa,GAAGG,IAAI,CAACE,wBAAwB,EAAE;IACrD,OAAOL,aAAa;EACtB;EAIA,MAAcjD,WAAW,GAAG;IAC1B,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE;MAClB,MAAMA,QAAQ,GAAG,IAAI,CAACpB,MAAM,CAAC4E,iBAAiB,EAAE;MAChD,IAAIxD,QAAQ,EAAE;QACZ,IAAI,CAACA,QAAQ,GAAGA,QAAQ;QACxB,OAAOA,QAAQ;MACjB;MAEA,IAAI,CAACA,QAAQ,GAAG,MAAM,IAAI,CAACpB,MAAM,CAAC6E,kBAAkB,CAAC,IAAI,CAAC5E,QAAQ,CAAC;MACnE,OAAO,IAAI,CAACmB,QAAQ;IACtB;IAEA,OAAO,IAAI,CAACA,QAAQ;EACtB;EAEA,MAAMuB,aAAa,CAACqB,IAAU,EAAEjC,OAA+B,EAAuB;IACpF,MAAMkC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACF,IAAI,EAAEjC,OAAO,CAAC;IAEtD,IAAI,CAACkC,WAAW,EAAE;MAChB,OAAO,KAAIa,wCAAmB,EAAC/C,OAAO,CAACkB,WAAW,CAACe,IAAI,CAAC,EAAEA,IAAI,CAACe,OAAO,EAAE,EAAEC,wBAAU,CAAChB,IAAI,CAACiB,IAAI,CAAC,CAAC;IAClG;IACA,OAAOhB,WAAW,CAACiB,SAAS,CAAClB,IAAI,EAAEjC,OAAO,CAAC;EAC7C;EAEA,MAAMoD,oBAAoB,CAAC3E,IAAY,EAAE;IACvC,IAAI,CAAC,IAAI,CAACL,SAAS,EAAE;MACnB,OAAO,IAAI;IACb;IACA,MAAMiF,aAAa,GAAG,IAAI,CAAChF,YAAY,CAACiF,gBAAgB,EAAE;IAC1D,MAAMC,kBAAkB,GAAGF,aAAa,CAACzB,IAAI,CAAE4B,CAAC,IAAK/E,IAAI,KAAK,IAAAgF,wCAAwB,EAACD,CAAC,CAAC,CAAC;IAE1F,IAAID,kBAAkB,EAAE;MACtB,OAAO,IAAI,CAACnF,SAAS,CAACsF,kBAAkB,CAACH,kBAAkB,CAAC;IAC9D;IAEA,OAAO,IAAI,CAACnF,SAAS,CAACuF,oBAAoB,CAAClF,IAAI,CAAC;EAClD;;EAEA;AACF;AACA;EACE0D,cAAc,CAACF,IAAU,EAAEjC,OAA+B,EAAE;IAC1D,MAAM4D,YAAY,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAAC7F,qBAAqB,CAAC8F,MAAM,EAAE,CAAC;IACjE,MAAM5B,WAAW,GAAG0B,YAAY,CAAChC,IAAI,CAAEmC,iBAAiB,IAAK;MAC3D,OAAOA,iBAAiB,CAACC,SAAS,CAAC/B,IAAI,CAAC;IAC1C,CAAC,CAAC;IACF,IAAI,CAACC,WAAW,EAAE;MAChB,IAAI,CAAC5D,MAAM,CAAC+D,IAAI,CAAC,KAAIC,iCAAmB,EAACL,IAAI,EAAEjC,OAAO,CAACb,SAAS,EAAEa,OAAO,CAACkB,WAAW,CAACe,IAAI,CAAC,CAAC,CAAClD,QAAQ,EAAE,CAAC;MACxG,OAAOR,SAAS;IAClB;IAEA,OAAO2D,WAAW;EACpB;EAEA,OAAO+B,IAAI,CAACC,OAAyB,EAAE;IACrC,OAAQlE,OAAmB,IAAK;MAAA;MAC9B,MAAMjC,QAAQ,GAAG,qBAAAoG,2BAAW,EAACD,OAAO,CAACnG,QAAQ,CAAC,iDAA7B,aAA+BqG,MAAM,KAAI;QAAEC,eAAe,EAAEH,OAAO,CAACG;MAAgB,CAAC;MACtG,MAAMpG,MAAM,GAAG+B,OAAO,CAACsE,SAAS,CAAiBC,+BAAgB,CAACnD,EAAE,CAAC;MACrE,MAAMoD,gBAAgB,GAAGxE,OAAO,CAACsE,SAAS,CAAmBG,uBAAkB,CAACrD,EAAE,CAAC;;MAEnF;MACA,MAAMsD,MAAM,GAAG,sBAAAzG,MAAM,CAACG,SAAS,sDAAhB,kBAAkBS,IAAI,KAAI,EAAE;MAC3C,OAAO,IAAIhB,mBAAmB,CAC5BE,QAAQ,EACRE,MAAM,CAACD,qBAAqB,EAC5BC,MAAM,EACNyG,MAAM,EACNzG,MAAM,CAACE,WAAW,EAClBF,MAAM,CAACG,SAAS,EAChBoG,gBAAgB,EAChBxE,OAAO,CAAC2E,YAAY,CAACT,OAAO,CAACU,IAAI,CAAC,CACnC;IACH,CAAC;EACH;AACF;AAAC"}
|
|
@@ -33,7 +33,8 @@ export declare class TypescriptMain {
|
|
|
33
33
|
readonly depResolver: DependencyResolverMain;
|
|
34
34
|
private envs;
|
|
35
35
|
private tsConfigWriter;
|
|
36
|
-
|
|
36
|
+
private aspectLoader;
|
|
37
|
+
constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, workspace: Workspace, depResolver: DependencyResolverMain, envs: EnvsMain, tsConfigWriter: TsconfigWriter, aspectLoader: AspectLoaderMain);
|
|
37
38
|
private tsServer;
|
|
38
39
|
/**
|
|
39
40
|
* create a new compiler.
|
|
@@ -116,7 +117,8 @@ export declare class TypescriptMain {
|
|
|
116
117
|
Workspace,
|
|
117
118
|
CLIMain,
|
|
118
119
|
DependencyResolverMain,
|
|
119
|
-
EnvsMain
|
|
120
|
+
EnvsMain,
|
|
121
|
+
AspectLoaderMain
|
|
120
122
|
], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
|
|
121
123
|
}
|
|
122
124
|
export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[] | undefined, context: TsConfigTransformContext): TypescriptConfigMutator;
|
|
@@ -164,21 +164,15 @@ function _writeTsconfig() {
|
|
|
164
164
|
};
|
|
165
165
|
return data;
|
|
166
166
|
}
|
|
167
|
-
function _exportAssignmentDeclaration() {
|
|
168
|
-
const data = require("./transformers/export-assignment-declaration");
|
|
169
|
-
_exportAssignmentDeclaration = function () {
|
|
170
|
-
return data;
|
|
171
|
-
};
|
|
172
|
-
return data;
|
|
173
|
-
}
|
|
174
167
|
class TypescriptMain {
|
|
175
|
-
constructor(logger, schemaTransformerSlot, workspace, depResolver, envs, tsConfigWriter) {
|
|
168
|
+
constructor(logger, schemaTransformerSlot, workspace, depResolver, envs, tsConfigWriter, aspectLoader) {
|
|
176
169
|
this.logger = logger;
|
|
177
170
|
this.schemaTransformerSlot = schemaTransformerSlot;
|
|
178
171
|
this.workspace = workspace;
|
|
179
172
|
this.depResolver = depResolver;
|
|
180
173
|
this.envs = envs;
|
|
181
174
|
this.tsConfigWriter = tsConfigWriter;
|
|
175
|
+
this.aspectLoader = aspectLoader;
|
|
182
176
|
(0, _defineProperty2().default)(this, "tsServer", void 0);
|
|
183
177
|
}
|
|
184
178
|
/**
|
|
@@ -276,7 +270,7 @@ class TypescriptMain {
|
|
|
276
270
|
* create an instance of a typescript semantic schema extractor.
|
|
277
271
|
*/
|
|
278
272
|
createSchemaExtractor(tsconfig, path) {
|
|
279
|
-
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path, this.depResolver, this.workspace);
|
|
273
|
+
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path, this.depResolver, this.workspace, this.aspectLoader, this.logger);
|
|
280
274
|
}
|
|
281
275
|
|
|
282
276
|
/**
|
|
@@ -360,8 +354,8 @@ class TypescriptMain {
|
|
|
360
354
|
const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
|
|
361
355
|
aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
|
|
362
356
|
const tsconfigWriter = new (_tsconfigWriter().TsconfigWriter)(workspace, logger);
|
|
363
|
-
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);
|
|
364
|
-
schemaTransformerSlot.register([new (_transformers().
|
|
357
|
+
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter, aspectLoader);
|
|
358
|
+
schemaTransformerSlot.register([new (_transformers().ExportDeclarationTransformer)(), new (_transformers().ExportAssignmentTransformer)(), new (_transformers().FunctionLikeTransformer)(), new (_transformers().ParameterTransformer)(), new (_transformers().SetAccessorTransformer)(), new (_transformers().GetAccessorTransformer)(), new (_transformers().IndexSignatureTransformer)(), new (_transformers().PropertyDeclarationTransformer)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDeclarationTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)(), new (_transformers().BindingElementTransformer)(), new (_transformers().IntersectionTypeTransformer)(), new (_transformers().UnionTypeTransformer)(), new (_transformers().TypeReferenceTransformer)(), new (_transformers().TypeLiteralTransformer)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().TypeQueryTransformer)(), new (_transformers().ArrayTypeTransformer)(), new (_transformers().TypeOperatorTransformer)(), new (_transformers().KeywordTypeTransformer)(), new (_transformers().TupleTypeTransformer)(), new (_transformers().ParenthesizedTypeTransformer)(), new (_transformers().TypePredicateTransformer)(), new (_transformers().IndexedAccessTypeTransformer)(), new (_transformers().TemplateLiteralTypeSpanTransformer)(), new (_transformers().TemplateLiteralTypeTransformer)(), new (_transformers().ThisTypeTransformer)(), new (_transformers().ConditionalTypeTransformer)(), new (_transformers().NamedTupleTransformer)(), new (_transformers().ConstructorTransformer)(), new (_transformers().ImportDeclarationTransformer)()]);
|
|
365
359
|
if (workspace) {
|
|
366
360
|
workspace.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));
|
|
367
361
|
workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","envs","tsConfigWriter","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","setTarget","tsconfig","compilerOptions","module","lib","createSchemaExtractor","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","cleanTsconfigJson","list","runtime","createEnvironment","execContext","getEnvExecutionContext","results","TsconfigWriter","clean","writeTsconfigJson","cleanResults","writeResults","write","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclaration","ExportAssignmentDeclaration","FunctionDeclaration","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDeclarationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","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 { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\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 EnvsAspect, { EnvsMain } from '@teambit/envs';\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 VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDeclarationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\nimport { ExportAssignmentDeclaration } from './transformers/export-assignment-declaration';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsconfigWriterOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n dryRunWithTsconfig?: boolean;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n readonly schemaTransformerSlot: SchemaTransformerSlot,\n readonly workspace: Workspace,\n readonly depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter\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.setTarget('ES2017');\n config.raw.tsconfig.compilerOptions.module = 'es2020';\n config.raw.tsconfig.compilerOptions.lib = ['es2021', 'dom', 'ESNext.String', 'dom.Iterable'];\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(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace\n );\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 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 async cleanTsconfigJson(options: TsconfigWriterOptions = {}) {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n const results = await new TsconfigWriter(this.workspace, this.logger).clean(execContext, options);\n\n return results;\n }\n\n async writeTsconfigJson(options: TsconfigWriterOptions = {}): Promise<{\n cleanResults?: string[];\n writeResults: TsconfigPathsPerEnv[];\n }> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n let cleanResults: string[] | undefined;\n if (options.clean) {\n cleanResults = await this.tsConfigWriter.clean(execContext, options);\n }\n\n const writeResults = await this.tsConfigWriter.write(execContext, options);\n\n return { writeResults, cleanResults };\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 = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n EnvsAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain\n ],\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 tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new ExportAssignmentDeclaration(),\n new FunctionDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDeclarationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n const writeTsconfigCmd = new WriteTsconfigCmd(tsMain);\n cli.register(checkTypesCmd, writeTsconfigCmd);\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\nexport default TypescriptMain;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","envs","tsConfigWriter","aspectLoader","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","setTarget","tsconfig","compilerOptions","module","lib","createSchemaExtractor","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","cleanTsconfigJson","list","runtime","createEnvironment","execContext","getEnvExecutionContext","results","TsconfigWriter","clean","writeTsconfigJson","cleanResults","writeResults","write","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclarationTransformer","ExportAssignmentTransformer","FunctionLikeTransformer","ParameterTransformer","SetAccessorTransformer","GetAccessorTransformer","IndexSignatureTransformer","PropertyDeclarationTransformer","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDeclarationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","IntersectionTypeTransformer","UnionTypeTransformer","TypeReferenceTransformer","TypeLiteralTransformer","LiteralTypeTransformer","TypeQueryTransformer","ArrayTypeTransformer","TypeOperatorTransformer","KeywordTypeTransformer","TupleTypeTransformer","ParenthesizedTypeTransformer","TypePredicateTransformer","IndexedAccessTypeTransformer","TemplateLiteralTypeSpanTransformer","TemplateLiteralTypeTransformer","ThisTypeTransformer","ConditionalTypeTransformer","NamedTupleTransformer","ConstructorTransformer","ImportDeclarationTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","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 { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\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 EnvsAspect, { EnvsMain } from '@teambit/envs';\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 ExportDeclarationTransformer,\n TypeAliasTransformer,\n FunctionLikeTransformer,\n SetAccessorTransformer,\n GetAccessorTransformer,\n IndexSignatureTransformer,\n PropertyDeclarationTransformer,\n ParameterTransformer,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDeclarationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\n ExportAssignmentTransformer,\n ImportDeclarationTransformer,\n IntersectionTypeTransformer,\n UnionTypeTransformer,\n TypeReferenceTransformer,\n TypeLiteralTransformer,\n LiteralTypeTransformer,\n TypeQueryTransformer,\n ArrayTypeTransformer,\n TypeOperatorTransformer,\n KeywordTypeTransformer,\n TupleTypeTransformer,\n ParenthesizedTypeTransformer,\n TypePredicateTransformer,\n IndexedAccessTypeTransformer,\n TemplateLiteralTypeSpanTransformer,\n TemplateLiteralTypeTransformer,\n ThisTypeTransformer,\n ConditionalTypeTransformer,\n NamedTupleTransformer,\n ConstructorTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsconfigWriterOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n dryRunWithTsconfig?: boolean;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n readonly schemaTransformerSlot: SchemaTransformerSlot,\n readonly workspace: Workspace,\n readonly depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter,\n private aspectLoader: AspectLoaderMain\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.setTarget('ES2017');\n config.raw.tsconfig.compilerOptions.module = 'es2020';\n config.raw.tsconfig.compilerOptions.lib = ['es2021', 'dom', 'ESNext.String', 'dom.Iterable'];\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(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace,\n this.aspectLoader,\n this.logger\n );\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 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 async cleanTsconfigJson(options: TsconfigWriterOptions = {}) {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n const results = await new TsconfigWriter(this.workspace, this.logger).clean(execContext, options);\n\n return results;\n }\n\n async writeTsconfigJson(options: TsconfigWriterOptions = {}): Promise<{\n cleanResults?: string[];\n writeResults: TsconfigPathsPerEnv[];\n }> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n let cleanResults: string[] | undefined;\n if (options.clean) {\n cleanResults = await this.tsConfigWriter.clean(execContext, options);\n }\n\n const writeResults = await this.tsConfigWriter.write(execContext, options);\n\n return { writeResults, cleanResults };\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 = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n EnvsAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain,\n AspectLoaderMain\n ],\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 tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(\n logger,\n schemaTransformerSlot,\n workspace,\n depResolver,\n envs,\n tsconfigWriter,\n aspectLoader\n );\n schemaTransformerSlot.register([\n new ExportDeclarationTransformer(),\n new ExportAssignmentTransformer(),\n new FunctionLikeTransformer(),\n new ParameterTransformer(),\n new SetAccessorTransformer(),\n new GetAccessorTransformer(),\n new IndexSignatureTransformer(),\n new PropertyDeclarationTransformer(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDeclarationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n new IntersectionTypeTransformer(),\n new UnionTypeTransformer(),\n new TypeReferenceTransformer(),\n new TypeLiteralTransformer(),\n new LiteralTypeTransformer(),\n new TypeQueryTransformer(),\n new ArrayTypeTransformer(),\n new TypeOperatorTransformer(),\n new KeywordTypeTransformer(),\n new TupleTypeTransformer(),\n new ParenthesizedTypeTransformer(),\n new TypePredicateTransformer(),\n new IndexedAccessTypeTransformer(),\n new TemplateLiteralTypeSpanTransformer(),\n new TemplateLiteralTypeTransformer(),\n new ThisTypeTransformer(),\n new ConditionalTypeTransformer(),\n new NamedTupleTransformer(),\n new ConstructorTransformer(),\n new ImportDeclarationTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n const writeTsconfigCmd = new WriteTsconfigCmd(tsMain);\n cli.register(checkTypesCmd, writeTsconfigCmd);\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\nexport default TypescriptMain;\n"],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/typescript",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.967",
|
|
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.
|
|
9
|
+
"version": "0.0.967"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -20,23 +20,23 @@
|
|
|
20
20
|
"core-js": "^3.0.0",
|
|
21
21
|
"@babel/runtime": "7.20.0",
|
|
22
22
|
"@teambit/harmony": "0.4.6",
|
|
23
|
-
"@teambit/compiler": "0.0.
|
|
23
|
+
"@teambit/compiler": "0.0.967",
|
|
24
24
|
"@teambit/typescript.modules.ts-config-mutator": "0.0.76",
|
|
25
|
-
"@teambit/component": "0.0.
|
|
26
|
-
"@teambit/dependency-resolver": "0.0.
|
|
27
|
-
"@teambit/formatter": "0.0.
|
|
28
|
-
"@teambit/semantics.entities.semantic-schema": "0.0.
|
|
25
|
+
"@teambit/component": "0.0.967",
|
|
26
|
+
"@teambit/dependency-resolver": "0.0.967",
|
|
27
|
+
"@teambit/formatter": "0.0.518",
|
|
28
|
+
"@teambit/semantics.entities.semantic-schema": "0.0.49",
|
|
29
29
|
"@teambit/ts-server": "0.0.39",
|
|
30
|
-
"@teambit/aspect-loader": "0.0.
|
|
31
|
-
"@teambit/envs": "0.0.
|
|
32
|
-
"@teambit/logger": "0.0.
|
|
33
|
-
"@teambit/workspace": "0.0.
|
|
30
|
+
"@teambit/aspect-loader": "0.0.967",
|
|
31
|
+
"@teambit/envs": "0.0.967",
|
|
32
|
+
"@teambit/logger": "0.0.742",
|
|
33
|
+
"@teambit/workspace": "0.0.967",
|
|
34
34
|
"@teambit/bit-error": "0.0.402",
|
|
35
|
-
"@teambit/builder": "0.0.
|
|
36
|
-
"@teambit/isolator": "0.0.
|
|
37
|
-
"@teambit/schema": "0.0.
|
|
38
|
-
"@teambit/cli": "0.0.
|
|
39
|
-
"@teambit/pkg": "0.0.
|
|
35
|
+
"@teambit/builder": "0.0.967",
|
|
36
|
+
"@teambit/isolator": "0.0.967",
|
|
37
|
+
"@teambit/schema": "0.0.967",
|
|
38
|
+
"@teambit/cli": "0.0.649",
|
|
39
|
+
"@teambit/pkg": "0.0.967"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/lodash": "4.14.165",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@teambit/typescript.aspect-docs.typescript": "0.0.151"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@teambit/legacy": "1.0.
|
|
55
|
+
"@teambit/legacy": "1.0.430",
|
|
56
56
|
"react": "^16.8.0 || ^17.0.0",
|
|
57
57
|
"react-dom": "^16.8.0 || ^17.0.0"
|
|
58
58
|
},
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import ts, { ArrayTypeNode, Node } from 'typescript';
|
|
2
|
+
import { TypeArraySchema } from '@teambit/semantics.entities.semantic-schema';
|
|
3
|
+
import { SchemaTransformer } from '../schema-transformer';
|
|
4
|
+
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
5
|
+
import { Identifier } from '../identifier';
|
|
6
|
+
|
|
7
|
+
export class ArrayTypeTransformer implements SchemaTransformer {
|
|
8
|
+
predicate(node: Node) {
|
|
9
|
+
return node.kind === ts.SyntaxKind.ArrayType;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
async getIdentifiers(): Promise<Identifier[]> {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async transform(node: ArrayTypeNode, context: SchemaExtractorContext) {
|
|
17
|
+
const type = await context.computeSchema(node.elementType);
|
|
18
|
+
const location = context.getLocation(node);
|
|
19
|
+
return new TypeArraySchema(location, type);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -2,8 +2,8 @@ import ts, { BindingElement, Node } from 'typescript';
|
|
|
2
2
|
import { VariableLikeSchema } from '@teambit/semantics.entities.semantic-schema';
|
|
3
3
|
import { SchemaTransformer } from '../schema-transformer';
|
|
4
4
|
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
5
|
-
import { ExportIdentifier } from '../export-identifier';
|
|
6
5
|
import { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';
|
|
6
|
+
import { Identifier } from '../identifier';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* for example:
|
|
@@ -18,7 +18,7 @@ export class BindingElementTransformer implements SchemaTransformer {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
async getIdentifiers(node: BindingElement) {
|
|
21
|
-
return [new
|
|
21
|
+
return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
async transform(node: BindingElement, context: SchemaExtractorContext) {
|
|
@@ -8,9 +8,7 @@ import {
|
|
|
8
8
|
import ts, { Node, ClassDeclaration } from 'typescript';
|
|
9
9
|
import { SchemaTransformer } from '../schema-transformer';
|
|
10
10
|
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
11
|
-
import {
|
|
12
|
-
import { classElementToSchema } from './utils/class-element-to-schema';
|
|
13
|
-
import { typeNodeToSchema } from './utils/type-node-to-schema';
|
|
11
|
+
import { Identifier } from '../identifier';
|
|
14
12
|
|
|
15
13
|
export class ClassDeclarationTransformer implements SchemaTransformer {
|
|
16
14
|
predicate(node: Node) {
|
|
@@ -23,7 +21,7 @@ export class ClassDeclarationTransformer implements SchemaTransformer {
|
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
async getIdentifiers(node: ClassDeclaration) {
|
|
26
|
-
return [new
|
|
24
|
+
return [new Identifier(this.getName(node), node.getSourceFile().fileName)];
|
|
27
25
|
}
|
|
28
26
|
|
|
29
27
|
private async getExpressionWithTypeArgs(
|
|
@@ -43,7 +41,7 @@ export class ClassDeclarationTransformer implements SchemaTransformer {
|
|
|
43
41
|
}),
|
|
44
42
|
async (expressionWithTypeArgs: ts.ExpressionWithTypeArguments & { name: string }) => {
|
|
45
43
|
const { typeArguments, expression, name } = expressionWithTypeArgs;
|
|
46
|
-
const typeArgsNodes = typeArguments ? await pMapSeries(typeArguments, (t) =>
|
|
44
|
+
const typeArgsNodes = typeArguments ? await pMapSeries(typeArguments, (t) => context.computeSchema(t)) : [];
|
|
47
45
|
const location = context.getLocation(expression);
|
|
48
46
|
const expressionNode =
|
|
49
47
|
(await context.visitDefinition(expression)) || new UnresolvedSchema(location, expression.getText());
|
|
@@ -75,7 +73,7 @@ export class ClassDeclarationTransformer implements SchemaTransformer {
|
|
|
75
73
|
if (isPrivate) {
|
|
76
74
|
return null;
|
|
77
75
|
}
|
|
78
|
-
return
|
|
76
|
+
return context.computeSchema(member);
|
|
79
77
|
});
|
|
80
78
|
const doc = await context.jsDocToDocSchema(node);
|
|
81
79
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Node, SyntaxKind, ConditionalTypeNode } from 'typescript';
|
|
2
|
+
import { ConditionalTypeSchema } from '@teambit/semantics.entities.semantic-schema';
|
|
3
|
+
import { SchemaTransformer } from '../schema-transformer';
|
|
4
|
+
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
5
|
+
import { Identifier } from '../identifier';
|
|
6
|
+
|
|
7
|
+
export class ConditionalTypeTransformer implements SchemaTransformer {
|
|
8
|
+
predicate(node: Node) {
|
|
9
|
+
return node.kind === SyntaxKind.ConditionalType;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
async getIdentifiers(): Promise<Identifier[]> {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async transform(node: ConditionalTypeNode, context: SchemaExtractorContext) {
|
|
17
|
+
const checkType = await context.computeSchema(node.checkType);
|
|
18
|
+
const extendsType = await context.computeSchema(node.extendsType);
|
|
19
|
+
const trueType = await context.computeSchema(node.trueType);
|
|
20
|
+
const falseType = await context.computeSchema(node.falseType);
|
|
21
|
+
return new ConditionalTypeSchema(context.getLocation(node), checkType, extendsType, trueType, falseType);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import ts, { Node, ConstructorDeclaration } from 'typescript';
|
|
2
|
+
import {
|
|
3
|
+
ConstructorSchema,
|
|
4
|
+
ParameterSchema,
|
|
5
|
+
ThisTypeSchema,
|
|
6
|
+
Modifier,
|
|
7
|
+
} from '@teambit/semantics.entities.semantic-schema';
|
|
8
|
+
import pMapSeries from 'p-map-series';
|
|
9
|
+
import { SchemaTransformer } from '../schema-transformer';
|
|
10
|
+
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
11
|
+
import { Identifier } from '../identifier';
|
|
12
|
+
|
|
13
|
+
export class ConstructorTransformer implements SchemaTransformer {
|
|
14
|
+
predicate(node: Node) {
|
|
15
|
+
return node.kind === ts.SyntaxKind.Constructor;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async getIdentifiers(): Promise<Identifier[]> {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async transform(node: ConstructorDeclaration, context: SchemaExtractorContext) {
|
|
23
|
+
const args = await pMapSeries(node.parameters, async (param) => context.computeSchema(param));
|
|
24
|
+
const info = await context.getQuickInfo(node);
|
|
25
|
+
const displaySig = info?.body?.displayString || '';
|
|
26
|
+
|
|
27
|
+
const returns = new ThisTypeSchema(context.getLocation(node.parent));
|
|
28
|
+
const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];
|
|
29
|
+
const doc = await context.jsDocToDocSchema(node);
|
|
30
|
+
|
|
31
|
+
return new ConstructorSchema(
|
|
32
|
+
context.getLocation(node),
|
|
33
|
+
args as ParameterSchema[],
|
|
34
|
+
returns,
|
|
35
|
+
displaySig,
|
|
36
|
+
modifiers as Modifier[],
|
|
37
|
+
doc
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -3,15 +3,15 @@ import { EnumMemberSchema, EnumSchema } from '@teambit/semantics.entities.semant
|
|
|
3
3
|
import pMapSeries from 'p-map-series';
|
|
4
4
|
import { SchemaTransformer } from '../schema-transformer';
|
|
5
5
|
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
6
|
-
import {
|
|
6
|
+
import { Identifier } from '../identifier';
|
|
7
7
|
|
|
8
8
|
export class EnumDeclarationTransformer implements SchemaTransformer {
|
|
9
9
|
predicate(node: Node) {
|
|
10
10
|
return node.kind === ts.SyntaxKind.EnumDeclaration;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
async getIdentifiers(node: EnumDeclaration): Promise<
|
|
14
|
-
return [new
|
|
13
|
+
async getIdentifiers(node: EnumDeclaration): Promise<Identifier[]> {
|
|
14
|
+
return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
async transform(enumDec: EnumDeclaration, context: SchemaExtractorContext) {
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
|
|
2
2
|
import { Node, SyntaxKind, ExportAssignment as ExportAssignmentNode } from 'typescript';
|
|
3
|
+
import { ExportIdentifier } from '../export-identifier';
|
|
3
4
|
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
4
5
|
import { SchemaTransformer } from '../schema-transformer';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* This is either an export = or an export default declaration.
|
|
9
|
+
* Unless isExportEquals is set, this node was parsed as an export default
|
|
10
|
+
*/
|
|
11
|
+
export class ExportAssignmentTransformer implements SchemaTransformer {
|
|
7
12
|
predicate(node: Node) {
|
|
8
13
|
return node.kind === SyntaxKind.ExportAssignment;
|
|
9
14
|
}
|
|
10
15
|
|
|
11
|
-
async getIdentifiers(exportDec: ExportAssignmentNode
|
|
12
|
-
|
|
16
|
+
async getIdentifiers(exportDec: ExportAssignmentNode) {
|
|
17
|
+
const specifier = exportDec.expression;
|
|
18
|
+
return [new ExportIdentifier(specifier.getText(), exportDec.getSourceFile().fileName)];
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
async transform(exportDec: ExportAssignmentNode, context: SchemaExtractorContext): Promise<SchemaNode> {
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
SchemaNode,
|
|
3
|
+
ModuleSchema,
|
|
4
|
+
UnresolvedSchema,
|
|
5
|
+
UnImplementedSchema,
|
|
6
|
+
} from '@teambit/semantics.entities.semantic-schema';
|
|
2
7
|
import ts, {
|
|
3
8
|
Node,
|
|
4
9
|
SyntaxKind,
|
|
@@ -11,21 +16,38 @@ import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
|
11
16
|
import { SchemaTransformer } from '../schema-transformer';
|
|
12
17
|
import { ExportIdentifier } from '../export-identifier';
|
|
13
18
|
|
|
14
|
-
export class
|
|
19
|
+
export class ExportDeclarationTransformer implements SchemaTransformer {
|
|
15
20
|
predicate(node: Node) {
|
|
16
21
|
return node.kind === SyntaxKind.ExportDeclaration;
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
async getIdentifiers(exportDec: ExportDeclarationNode, context: SchemaExtractorContext) {
|
|
25
|
+
// e.g. `export { button1, button2 } as Composition from './button';
|
|
26
|
+
const rawSourceFilePath = exportDec.moduleSpecifier?.getText();
|
|
27
|
+
|
|
28
|
+
// strip off quotes ''
|
|
29
|
+
const sourceFilePath = rawSourceFilePath && rawSourceFilePath.substring(1, rawSourceFilePath?.length - 1);
|
|
30
|
+
|
|
20
31
|
if (exportDec.exportClause?.kind === ts.SyntaxKind.NamedExports) {
|
|
21
|
-
exportDec.exportClause as NamedExports;
|
|
22
32
|
return exportDec.exportClause.elements.map((elm) => {
|
|
23
|
-
|
|
33
|
+
const alias = (elm.propertyName && elm.name.getText()) || undefined;
|
|
34
|
+
const id = elm.propertyName?.getText() || elm.name.getText();
|
|
35
|
+
const fileName = elm.getSourceFile().fileName;
|
|
36
|
+
|
|
37
|
+
return new ExportIdentifier(id, fileName, alias, sourceFilePath);
|
|
24
38
|
});
|
|
25
39
|
}
|
|
26
40
|
|
|
41
|
+
// e.g. `export * as Composition from './button';
|
|
27
42
|
if (exportDec.exportClause?.kind === ts.SyntaxKind.NamespaceExport) {
|
|
28
|
-
return [
|
|
43
|
+
return [
|
|
44
|
+
new ExportIdentifier(
|
|
45
|
+
exportDec.exportClause.name.getText(),
|
|
46
|
+
exportDec.getSourceFile().fileName,
|
|
47
|
+
undefined,
|
|
48
|
+
sourceFilePath
|
|
49
|
+
),
|
|
50
|
+
];
|
|
29
51
|
}
|
|
30
52
|
|
|
31
53
|
if (exportDec.moduleSpecifier) {
|
|
@@ -45,8 +67,13 @@ export class ExportDeclaration implements SchemaTransformer {
|
|
|
45
67
|
throw new Error(`fatal: no specifier`);
|
|
46
68
|
}
|
|
47
69
|
const sourceFile = await context.getSourceFileFromNode(specifier);
|
|
70
|
+
// export * from 'webpack', export-all from a package
|
|
48
71
|
if (!sourceFile) {
|
|
49
|
-
|
|
72
|
+
return new UnImplementedSchema(
|
|
73
|
+
context.getLocation(exportDec),
|
|
74
|
+
exportDec.getText(),
|
|
75
|
+
SyntaxKind[SyntaxKind.ExportDeclaration]
|
|
76
|
+
);
|
|
50
77
|
}
|
|
51
78
|
return context.computeSchema(sourceFile);
|
|
52
79
|
}
|
|
@@ -54,7 +81,7 @@ export class ExportDeclaration implements SchemaTransformer {
|
|
|
54
81
|
// e.g. `export { button1, button2 } as Composition from './button';
|
|
55
82
|
if (exportClause.kind === SyntaxKind.NamedExports) {
|
|
56
83
|
const schemas = await namedExport(exportClause, context);
|
|
57
|
-
return new ModuleSchema(context.getLocation(exportDec), schemas);
|
|
84
|
+
return new ModuleSchema(context.getLocation(exportDec), schemas, []);
|
|
58
85
|
}
|
|
59
86
|
// e.g. `export * as Composition from './button';
|
|
60
87
|
if (exportClause.kind === SyntaxKind.NamespaceExport) {
|
|
@@ -92,7 +119,7 @@ async function exportSpecifierToSchemaNode(element: ExportSpecifier, context: Sc
|
|
|
92
119
|
const definitionNode = await context.definition(definitionInfo);
|
|
93
120
|
|
|
94
121
|
if (!definitionNode) {
|
|
95
|
-
return context.
|
|
122
|
+
return context.resolveType(element, element.name.getText(), false);
|
|
96
123
|
}
|
|
97
124
|
|
|
98
125
|
// if it is reexported from another export
|