@teambit/typescript 1.0.107 → 1.0.109
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/artifacts/__bit_junit.xml +49 -0
- package/artifacts/preview/teambit_typescript_typescript-preview.js +1 -0
- package/dist/cmds/write-tsconfig.cmd.d.ts +2 -2
- package/dist/compiler-options.d.ts +2 -2
- package/dist/extractor-options.d.ts +1 -1
- package/dist/identifier-list.d.ts +1 -1
- package/dist/identifier.d.ts +3 -3
- package/dist/{preview-1703590665075.js → preview-1703698405864.js} +2 -2
- package/dist/schema-extractor-context.d.ts +11 -11
- package/dist/schema-extractor-context.js +13 -17
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/schema-transformer.d.ts +2 -2
- package/dist/sourceFileTransformers/export.js +1 -2
- package/dist/sourceFileTransformers/export.js.map +1 -1
- package/dist/sourceFileTransformers/function.js +2 -3
- package/dist/sourceFileTransformers/function.js.map +1 -1
- package/dist/sourceFileTransformers/import.js +1 -2
- package/dist/sourceFileTransformers/import.js.map +1 -1
- package/dist/sourceFileTransformers/index.d.ts +1 -1
- package/dist/sourceFileTransformers/transform.js +1 -1
- package/dist/sourceFileTransformers/transform.js.map +1 -1
- package/dist/transformers/binding-element.js +1 -2
- package/dist/transformers/binding-element.js.map +1 -1
- package/dist/transformers/class-declaration.js +3 -6
- package/dist/transformers/class-declaration.js.map +1 -1
- package/dist/transformers/constructor.js +3 -4
- package/dist/transformers/constructor.js.map +1 -1
- package/dist/transformers/enum-declaration.js +1 -2
- package/dist/transformers/enum-declaration.js.map +1 -1
- package/dist/transformers/export-declaration.js +5 -7
- package/dist/transformers/export-declaration.js.map +1 -1
- package/dist/transformers/function-like.js +5 -8
- package/dist/transformers/function-like.js.map +1 -1
- package/dist/transformers/get-accessor.js +1 -2
- package/dist/transformers/get-accessor.js.map +1 -1
- package/dist/transformers/import-declaration.js +2 -3
- package/dist/transformers/import-declaration.js.map +1 -1
- package/dist/transformers/interface-declaration.js +1 -2
- package/dist/transformers/interface-declaration.js.map +1 -1
- package/dist/transformers/parameter.js +1 -2
- package/dist/transformers/parameter.js.map +1 -1
- package/dist/transformers/property-declaration.js +1 -2
- package/dist/transformers/property-declaration.js.map +1 -1
- package/dist/transformers/source-file-transformer.js +3 -5
- package/dist/transformers/source-file-transformer.js.map +1 -1
- package/dist/transformers/utils/jsdoc-to-doc-schema.js +2 -4
- package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -1
- package/dist/transformers/utils/parse-type-from-quick-info.js +1 -2
- package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
- package/dist/transformers/variable-declaration.js +8 -12
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/tsconfig-writer.d.ts +2 -2
- package/dist/tsconfig-writer.js +1 -4
- package/dist/tsconfig-writer.js.map +1 -1
- package/dist/typescript.composition.d.ts +2 -2
- package/dist/typescript.extractor.d.ts +3 -3
- package/dist/typescript.extractor.js +5 -7
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.main.runtime.d.ts +7 -7
- package/dist/typescript.main.runtime.js +1 -2
- package/dist/typescript.main.runtime.js.map +1 -1
- package/dist/typescript.parser.js +7 -8
- package/dist/typescript.parser.js.map +1 -1
- package/dist/typescript.parser.spec.js +12 -15
- package/dist/typescript.parser.spec.js.map +1 -1
- package/package.json +27 -34
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","_parameter","obj","__esModule","default","VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","transform","varDec","context","_info$body","_varDec$modifiers","_varDec$initializer","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","modifiers","map","modifier","initializer","ArrowFunction","_functionLikeInfo$bod3","functionLikeInfo","equalsGreaterThanToken","returnTypeStr","parseTypeFromQuickInfo","type","funcType","resolveType","isFunctionLike","_functionLikeInfo$bod","FunctionLikeSchema","params","returnType","TypeRefSchema","_functionLikeInfo$bod2","paramTypes","typeArgs","parameters","paramsSchema","pMapSeries","param","index","objectBindingNodes","ParameterTransformer","getObjectBindingNodes","ParameterSchema","Boolean","questionToken","undefined","dotDotDotToken","args","computeSchema","typeStr","defaultValue","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\n TypeRefSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\nimport { ParameterTransformer } from './parameter';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n const location = context.getLocation(varDec);\n const doc = await context.jsDocToDocSchema(varDec);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const functionLikeInfo = await context.getQuickInfo((varDec.initializer as ArrowFunction).equalsGreaterThanToken);\n const returnTypeStr = functionLikeInfo ? parseTypeFromQuickInfo(functionLikeInfo) : 'any';\n // example => export const useLanesContext: () => LanesContextModel | undefined = () => {\n if (varDec.type) {\n const funcType = await context.resolveType(varDec, '');\n if (isFunctionLike(funcType)) {\n return new FunctionLikeSchema(\n location,\n name,\n funcType.params,\n funcType.returnType,\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n // e.g. export const MyComponent: React.FC<T> = ({}) => {}\n if (funcType instanceof TypeRefSchema) {\n const paramTypes = funcType.typeArgs;\n const params = (varDec.initializer as ArrowFunction).parameters;\n const paramsSchema = await pMapSeries(params, async (param, index) => {\n const objectBindingNodes = await ParameterTransformer.getObjectBindingNodes(\n param,\n paramTypes?.[index] ?? funcType,\n context\n );\n return new ParameterSchema(\n location,\n ParameterTransformer.getName(param),\n paramTypes?.[index] ?? funcType,\n Boolean(param.questionToken),\n param.initializer ? param.initializer.getText() : undefined,\n undefined,\n objectBindingNodes,\n Boolean(param.dotDotDotToken)\n );\n });\n\n return new FunctionLikeSchema(\n location,\n name,\n paramsSchema,\n await context.resolveType(varDec.initializer, returnTypeStr),\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n }\n const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n return new FunctionLikeSchema(\n location,\n name,\n args,\n await context.resolveType(varDec.initializer, returnTypeStr),\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n const defaultValue = varDec.initializer ? varDec.initializer.getText() : undefined;\n\n return new VariableLikeSchema(location, name, displaySig, type, false, doc, defaultValue);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","_parameter","obj","__esModule","default","VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","modifiers","map","modifier","initializer","ArrowFunction","functionLikeInfo","equalsGreaterThanToken","returnTypeStr","parseTypeFromQuickInfo","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","TypeRefSchema","paramTypes","typeArgs","parameters","paramsSchema","pMapSeries","param","index","objectBindingNodes","ParameterTransformer","getObjectBindingNodes","ParameterSchema","Boolean","questionToken","undefined","dotDotDotToken","args","computeSchema","typeStr","defaultValue","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\n TypeRefSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\nimport { ParameterTransformer } from './parameter';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n const location = context.getLocation(varDec);\n const doc = await context.jsDocToDocSchema(varDec);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const functionLikeInfo = await context.getQuickInfo((varDec.initializer as ArrowFunction).equalsGreaterThanToken);\n const returnTypeStr = functionLikeInfo ? parseTypeFromQuickInfo(functionLikeInfo) : 'any';\n // example => export const useLanesContext: () => LanesContextModel | undefined = () => {\n if (varDec.type) {\n const funcType = await context.resolveType(varDec, '');\n if (isFunctionLike(funcType)) {\n return new FunctionLikeSchema(\n location,\n name,\n funcType.params,\n funcType.returnType,\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n // e.g. export const MyComponent: React.FC<T> = ({}) => {}\n if (funcType instanceof TypeRefSchema) {\n const paramTypes = funcType.typeArgs;\n const params = (varDec.initializer as ArrowFunction).parameters;\n const paramsSchema = await pMapSeries(params, async (param, index) => {\n const objectBindingNodes = await ParameterTransformer.getObjectBindingNodes(\n param,\n paramTypes?.[index] ?? funcType,\n context\n );\n return new ParameterSchema(\n location,\n ParameterTransformer.getName(param),\n paramTypes?.[index] ?? funcType,\n Boolean(param.questionToken),\n param.initializer ? param.initializer.getText() : undefined,\n undefined,\n objectBindingNodes,\n Boolean(param.dotDotDotToken)\n );\n });\n\n return new FunctionLikeSchema(\n location,\n name,\n paramsSchema,\n await context.resolveType(varDec.initializer, returnTypeStr),\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n }\n const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n return new FunctionLikeSchema(\n location,\n name,\n args,\n await context.resolveType(varDec.initializer, returnTypeStr),\n functionLikeInfo?.body?.displayString || '',\n modifiers as Modifier[],\n doc\n );\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n const defaultValue = varDec.initializer ? varDec.initializer.getText() : undefined;\n\n return new VariableLikeSchema(location, name, displaySig, type, false, doc, defaultValue);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { ExecutionContext } from '@teambit/envs';
|
|
|
2
2
|
import { Workspace } from '@teambit/workspace';
|
|
3
3
|
import { Logger } from '@teambit/logger';
|
|
4
4
|
import { TsconfigWriterOptions } from './typescript.main.runtime';
|
|
5
|
-
export
|
|
5
|
+
export type TsconfigPathsPerEnv = {
|
|
6
6
|
envIds: string[];
|
|
7
7
|
tsconfig: string;
|
|
8
8
|
paths: string[];
|
|
@@ -20,7 +20,7 @@ export declare class TsconfigWriter {
|
|
|
20
20
|
private writeFiles;
|
|
21
21
|
private getPathsPerEnv;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
type PathsPerEnvIds = {
|
|
24
24
|
ids: string[];
|
|
25
25
|
paths: string[];
|
|
26
26
|
};
|
package/dist/tsconfig-writer.js
CHANGED
|
@@ -170,10 +170,7 @@ ${_chalk().default.bold('Do you want to continue? [yes(y)/no(n)]')}`
|
|
|
170
170
|
});
|
|
171
171
|
const pathsPerEnvIds = envsPerFile.map(e => ({
|
|
172
172
|
ids: e.envIds,
|
|
173
|
-
paths: (0, _lodash().compact)(e.envIds.map(envId =>
|
|
174
|
-
var _pathsPerEnvs$find;
|
|
175
|
-
return (_pathsPerEnvs$find = pathsPerEnvs.find(p => p.id === envId)) === null || _pathsPerEnvs$find === void 0 ? void 0 : _pathsPerEnvs$find.paths;
|
|
176
|
-
}).flat())
|
|
173
|
+
paths: (0, _lodash().compact)(e.envIds.map(envId => pathsPerEnvs.find(p => p.id === envId)?.paths).flat())
|
|
177
174
|
}));
|
|
178
175
|
// const pathsPerEnvIds = pathsPerEnvs.map((p) => ({ ids: p.ids, paths: p.paths }));
|
|
179
176
|
const envsPerDedupedPaths = dedupePaths(pathsPerEnvIds);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_yesno","_lodash","_exceptions","_chalk","_","obj","__esModule","default","TsconfigWriter","constructor","workspace","logger","write","envsExecutionContext","options","pathsPerEnvs","getPathsPerEnv","tsconfigPathsPerEnv","map","pathsPerEnv","envIds","ids","tsconfig","getTsconfigFromEnv","env","paths","dryRun","silent","promptForWriting","p","flat","writeFiles","compiler","getCompiler","id","TypescriptAspect","displayConfig","JSON","stringify","getTsConfig","undefined","clean","dedupe","componentPaths","allPossibleDirs","getAllPossibleDirsFromPaths","dirsWithTsconfig","filterDirsWithTsconfigFile","tsconfigFiles","dir","path","join","length","promptForCleaning","deleteFiles","dirs","clearStatusLine","ok","yesno","question","chalk","underline","bold","PromptCanceled","Promise","all","f","fs","remove","tsconfigPathsPerEnvs","writeFile","envExecution","components","c","componentDir","relative","envsWithFiles","e","file","envsPerFile","isEnvProcessed","envId","find","forEach","foundSameFile","filter","isEqual","push","fileContent","pathsPerEnvIds","compact","_pathsPerEnvs$find","envsPerDedupedPaths","dedupePaths","dedupedPathsPerEnvs","envWithDedupePaths","found","includes","Error","exports","hasTsconfig","pathExists","getAllParentsDirOfPath","uniq","current","dirname","pathsPerEnvId","rootDir","individualPathPerConcatenatedEnvIds","reduce","acc","allPaths","Object","keys","allPathsPerEnvId","calculateBestEnvForDir","allPathsShareSameDir","startsWith","countPerEnv","envIdStr","max","Math","values","envWithMax","dirPath","dedupedPathsPerEnvIds","envIdsPerDedupedPaths","invertBy","dedupedPaths","split"],"sources":["tsconfig-writer.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport yesno from 'yesno';\nimport { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';\nimport { compact, invertBy, isEqual, uniq } from 'lodash';\nimport { PromptCanceled } from '@teambit/legacy/dist/prompts/exceptions';\nimport { Environment, ExecutionContext } from '@teambit/envs';\nimport { Workspace } from '@teambit/workspace';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport { TsconfigWriterOptions } from './typescript.main.runtime';\nimport { TypescriptAspect } from '.';\n\nexport type TsconfigPathsPerEnv = { envIds: string[]; tsconfig: string; paths: string[] };\n\ntype PathsPerEnv = { env: Environment; ids: string[]; paths: string[] };\n\nexport class TsconfigWriter {\n constructor(private workspace: Workspace, private logger: Logger) {}\n\n async write(\n envsExecutionContext: ExecutionContext[],\n options: TsconfigWriterOptions\n ): Promise<TsconfigPathsPerEnv[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, options);\n const tsconfigPathsPerEnv = pathsPerEnvs.map((pathsPerEnv) => ({\n envIds: pathsPerEnv.ids,\n tsconfig: this.getTsconfigFromEnv(pathsPerEnv.env), // pathsPerEnv.env.getTsConfig(),\n paths: pathsPerEnv.paths,\n }));\n if (options.dryRun) return tsconfigPathsPerEnv;\n if (!options.silent) await this.promptForWriting(tsconfigPathsPerEnv.map((p) => p.paths).flat());\n await this.writeFiles(tsconfigPathsPerEnv);\n return tsconfigPathsPerEnv;\n }\n\n private getTsconfigFromEnv(env: Environment) {\n const compiler = env.getCompiler();\n if (compiler.id === TypescriptAspect.id) {\n return compiler.displayConfig() as string;\n }\n return JSON.stringify(env.getTsConfig(), undefined, 2);\n }\n\n async clean(envsExecutionContext: ExecutionContext[], { dryRun, silent }: TsconfigWriterOptions): Promise<string[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, { dedupe: false });\n const componentPaths = pathsPerEnvs.map((p) => p.paths).flat();\n const allPossibleDirs = getAllPossibleDirsFromPaths(componentPaths);\n const dirsWithTsconfig = await filterDirsWithTsconfigFile(allPossibleDirs);\n const tsconfigFiles = dirsWithTsconfig.map((dir) => path.join(dir, 'tsconfig.json'));\n if (dryRun) return tsconfigFiles;\n if (!dirsWithTsconfig.length) return [];\n if (!silent) await this.promptForCleaning(tsconfigFiles);\n await this.deleteFiles(tsconfigFiles);\n return tsconfigFiles;\n }\n\n private async promptForWriting(dirs: string[]) {\n this.logger.clearStatusLine();\n const tsconfigFiles = dirs.map((dir) => path.join(dir, 'tsconfig.json'));\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be written:')}\n${tsconfigFiles.join('\\n')}\n${chalk.bold('Do you want to continue? [yes(y)/no(n)]')}`,\n });\n if (!ok) {\n throw new PromptCanceled();\n }\n }\n\n private async promptForCleaning(tsconfigFiles: string[]) {\n this.logger.clearStatusLine();\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be deleted:')}\n${tsconfigFiles.join('\\n')}\n${chalk.bold('Do you want to continue? [yes(y)/no(n)]')}`,\n });\n if (!ok) {\n throw new PromptCanceled();\n }\n }\n\n private async deleteFiles(tsconfigFiles: string[]) {\n await Promise.all(tsconfigFiles.map((f) => fs.remove(f)));\n }\n\n private async writeFiles(tsconfigPathsPerEnvs: TsconfigPathsPerEnv[]) {\n await Promise.all(\n tsconfigPathsPerEnvs.map((pathsPerEnv) => {\n return Promise.all(\n pathsPerEnv.paths.map((p) => fs.writeFile(path.join(p, 'tsconfig.json'), pathsPerEnv.tsconfig))\n );\n })\n );\n }\n\n private getPathsPerEnv(envsExecutionContext: ExecutionContext[], { dedupe }: TsconfigWriterOptions): PathsPerEnv[] {\n const pathsPerEnvs = envsExecutionContext.map((envExecution) => {\n return {\n id: envExecution.id,\n env: envExecution.env,\n paths: envExecution.components.map((c) => this.workspace.componentDir(c.id, undefined, { relative: true })),\n };\n });\n if (!dedupe) {\n return pathsPerEnvs.map(({ id, env, paths }) => ({ ids: [id], env, paths }));\n }\n\n const envsWithFiles = envsExecutionContext.map((e) => ({\n id: e.id,\n file: e.env.getTsConfig(),\n }));\n const envsPerFile: { envIds: string[]; fileContent: Record<string, any> }[] = [];\n const isEnvProcessed = (envId: string) =>\n envsPerFile\n .map((e) => e.envIds)\n .flat()\n .find((e) => e === envId);\n envsWithFiles.forEach(({ id, file }) => {\n if (isEnvProcessed(id)) return;\n const foundSameFile = envsWithFiles.filter((e) => isEqual(file, e.file));\n envsPerFile.push({ envIds: foundSameFile.map((f) => f.id), fileContent: file });\n });\n const pathsPerEnvIds = envsPerFile.map((e) => ({\n ids: e.envIds,\n paths: compact(e.envIds.map((envId) => pathsPerEnvs.find((p) => p.id === envId)?.paths).flat()),\n }));\n // const pathsPerEnvIds = pathsPerEnvs.map((p) => ({ ids: p.ids, paths: p.paths }));\n const envsPerDedupedPaths = dedupePaths(pathsPerEnvIds);\n const dedupedPathsPerEnvs: PathsPerEnv[] = envsPerDedupedPaths.map((envWithDedupePaths) => {\n const found = pathsPerEnvs.find((p) => envWithDedupePaths.ids.includes(p.id));\n if (!found) throw new Error(`dedupedPathsPerEnvs, unable to find ${envWithDedupePaths.ids}`);\n return {\n env: found.env,\n ids: envWithDedupePaths.ids,\n paths: envWithDedupePaths.paths,\n };\n });\n\n return dedupedPathsPerEnvs;\n }\n}\n\ntype PathsPerEnvIds = { ids: string[]; paths: string[] };\n\nasync function filterDirsWithTsconfigFile(dirs: string[]): Promise<string[]> {\n const dirsWithTsconfig = await Promise.all(\n dirs.map(async (dir) => {\n const hasTsconfig = await fs.pathExists(path.join(dir, 'tsconfig.json'));\n return hasTsconfig ? dir : undefined;\n })\n );\n return compact(dirsWithTsconfig);\n}\n\nfunction getAllPossibleDirsFromPaths(paths: PathLinuxRelative[]): PathLinuxRelative[] {\n const dirs = paths.map((p) => getAllParentsDirOfPath(p)).flat();\n dirs.push('.'); // add the root dir\n return uniq(dirs);\n}\n\nfunction getAllParentsDirOfPath(p: PathLinuxRelative): PathLinuxRelative[] {\n const all: string[] = [];\n let current = p;\n while (current !== '.') {\n all.push(current);\n current = path.dirname(current);\n }\n return all;\n}\n\n/**\n * easier to understand by an example:\n * input:\n * [\n * { id: react, paths: [ui/button, ui/form] },\n * { id: aspect, paths: [p/a1, p/a2] },\n * { id: node, paths: [p/n1] },\n * ]\n *\n * output:\n * [\n * { id: react, paths: [ui] },\n * { id: aspect, paths: [p] },\n * { id: node, paths: [p/n1] },\n * ]\n *\n * the goal is to minimize the amount of files to write per env if possible.\n * when multiple components of the same env share a root-dir, then, it's enough to write a file in that shared dir.\n * if in a shared-dir, some components using env1 and some env2, it finds the env that has the max number of\n * components, this env will be optimized. other components, will have the files written inside their dirs.\n */\nexport function dedupePaths(pathsPerEnvId: PathsPerEnvIds[]): PathsPerEnvIds[] {\n const rootDir = '.';\n const individualPathPerConcatenatedEnvIds: { [path: string]: string } = pathsPerEnvId.reduce((acc, current) => {\n current.paths.forEach((p) => {\n acc[p] = current.ids.join(',');\n });\n return acc;\n }, {});\n const allPaths = Object.keys(individualPathPerConcatenatedEnvIds);\n const allPossibleDirs = getAllPossibleDirsFromPaths(allPaths);\n\n const allPathsPerEnvId: { [path: string]: string | null } = {}; // null when parent-dir has same amount of comps per env.\n\n const calculateBestEnvForDir = (dir: string) => {\n if (individualPathPerConcatenatedEnvIds[dir]) {\n // it's the component dir, so it's the best env\n allPathsPerEnvId[dir] = individualPathPerConcatenatedEnvIds[dir];\n return;\n }\n const allPathsShareSameDir = dir === rootDir ? allPaths : allPaths.filter((p) => p.startsWith(`${dir}/`));\n const countPerEnv: { [env: string]: number } = {};\n allPathsShareSameDir.forEach((p) => {\n const envIdStr = individualPathPerConcatenatedEnvIds[p];\n if (countPerEnv[envIdStr]) countPerEnv[envIdStr] += 1;\n else countPerEnv[envIdStr] = 1;\n });\n const max = Math.max(...Object.values(countPerEnv));\n const envWithMax = Object.keys(countPerEnv).filter((env) => countPerEnv[env] === max);\n if (!envWithMax.length) throw new Error(`must be at least one env related to path \"${dir}\"`);\n if (envWithMax.length > 1) allPathsPerEnvId[dir] = null;\n else allPathsPerEnvId[dir] = envWithMax[0];\n };\n\n allPossibleDirs.forEach((dirPath) => {\n calculateBestEnvForDir(dirPath);\n });\n\n // this is the actual deduping. if found a shorter path with the same env, then no need for this path.\n // in other words, return only the paths that their parent is null or has a different env.\n const dedupedPathsPerEnvIds = Object.keys(allPathsPerEnvId).reduce((acc, current) => {\n if (allPathsPerEnvId[current] && allPathsPerEnvId[path.dirname(current)] !== allPathsPerEnvId[current]) {\n acc[current] = allPathsPerEnvId[current];\n }\n\n return acc;\n }, {});\n // rootDir parent is always rootDir, so leave it as is.\n if (allPathsPerEnvId[rootDir]) dedupedPathsPerEnvIds[rootDir] = allPathsPerEnvId[rootDir];\n\n const envIdsPerDedupedPaths = invertBy(dedupedPathsPerEnvIds);\n\n const dedupedPaths = Object.keys(envIdsPerDedupedPaths).map((envIdStr) => ({\n ids: envIdStr.split(','),\n paths: envIdsPerDedupedPaths[envIdStr],\n }));\n return dedupedPaths;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_yesno","_lodash","_exceptions","_chalk","_","obj","__esModule","default","TsconfigWriter","constructor","workspace","logger","write","envsExecutionContext","options","pathsPerEnvs","getPathsPerEnv","tsconfigPathsPerEnv","map","pathsPerEnv","envIds","ids","tsconfig","getTsconfigFromEnv","env","paths","dryRun","silent","promptForWriting","p","flat","writeFiles","compiler","getCompiler","id","TypescriptAspect","displayConfig","JSON","stringify","getTsConfig","undefined","clean","dedupe","componentPaths","allPossibleDirs","getAllPossibleDirsFromPaths","dirsWithTsconfig","filterDirsWithTsconfigFile","tsconfigFiles","dir","path","join","length","promptForCleaning","deleteFiles","dirs","clearStatusLine","ok","yesno","question","chalk","underline","bold","PromptCanceled","Promise","all","f","fs","remove","tsconfigPathsPerEnvs","writeFile","envExecution","components","c","componentDir","relative","envsWithFiles","e","file","envsPerFile","isEnvProcessed","envId","find","forEach","foundSameFile","filter","isEqual","push","fileContent","pathsPerEnvIds","compact","envsPerDedupedPaths","dedupePaths","dedupedPathsPerEnvs","envWithDedupePaths","found","includes","Error","exports","hasTsconfig","pathExists","getAllParentsDirOfPath","uniq","current","dirname","pathsPerEnvId","rootDir","individualPathPerConcatenatedEnvIds","reduce","acc","allPaths","Object","keys","allPathsPerEnvId","calculateBestEnvForDir","allPathsShareSameDir","startsWith","countPerEnv","envIdStr","max","Math","values","envWithMax","dirPath","dedupedPathsPerEnvIds","envIdsPerDedupedPaths","invertBy","dedupedPaths","split"],"sources":["tsconfig-writer.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport yesno from 'yesno';\nimport { PathLinuxRelative } from '@teambit/legacy/dist/utils/path';\nimport { compact, invertBy, isEqual, uniq } from 'lodash';\nimport { PromptCanceled } from '@teambit/legacy/dist/prompts/exceptions';\nimport { Environment, ExecutionContext } from '@teambit/envs';\nimport { Workspace } from '@teambit/workspace';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport { TsconfigWriterOptions } from './typescript.main.runtime';\nimport { TypescriptAspect } from '.';\n\nexport type TsconfigPathsPerEnv = { envIds: string[]; tsconfig: string; paths: string[] };\n\ntype PathsPerEnv = { env: Environment; ids: string[]; paths: string[] };\n\nexport class TsconfigWriter {\n constructor(private workspace: Workspace, private logger: Logger) {}\n\n async write(\n envsExecutionContext: ExecutionContext[],\n options: TsconfigWriterOptions\n ): Promise<TsconfigPathsPerEnv[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, options);\n const tsconfigPathsPerEnv = pathsPerEnvs.map((pathsPerEnv) => ({\n envIds: pathsPerEnv.ids,\n tsconfig: this.getTsconfigFromEnv(pathsPerEnv.env), // pathsPerEnv.env.getTsConfig(),\n paths: pathsPerEnv.paths,\n }));\n if (options.dryRun) return tsconfigPathsPerEnv;\n if (!options.silent) await this.promptForWriting(tsconfigPathsPerEnv.map((p) => p.paths).flat());\n await this.writeFiles(tsconfigPathsPerEnv);\n return tsconfigPathsPerEnv;\n }\n\n private getTsconfigFromEnv(env: Environment) {\n const compiler = env.getCompiler();\n if (compiler.id === TypescriptAspect.id) {\n return compiler.displayConfig() as string;\n }\n return JSON.stringify(env.getTsConfig(), undefined, 2);\n }\n\n async clean(envsExecutionContext: ExecutionContext[], { dryRun, silent }: TsconfigWriterOptions): Promise<string[]> {\n const pathsPerEnvs = this.getPathsPerEnv(envsExecutionContext, { dedupe: false });\n const componentPaths = pathsPerEnvs.map((p) => p.paths).flat();\n const allPossibleDirs = getAllPossibleDirsFromPaths(componentPaths);\n const dirsWithTsconfig = await filterDirsWithTsconfigFile(allPossibleDirs);\n const tsconfigFiles = dirsWithTsconfig.map((dir) => path.join(dir, 'tsconfig.json'));\n if (dryRun) return tsconfigFiles;\n if (!dirsWithTsconfig.length) return [];\n if (!silent) await this.promptForCleaning(tsconfigFiles);\n await this.deleteFiles(tsconfigFiles);\n return tsconfigFiles;\n }\n\n private async promptForWriting(dirs: string[]) {\n this.logger.clearStatusLine();\n const tsconfigFiles = dirs.map((dir) => path.join(dir, 'tsconfig.json'));\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be written:')}\n${tsconfigFiles.join('\\n')}\n${chalk.bold('Do you want to continue? [yes(y)/no(n)]')}`,\n });\n if (!ok) {\n throw new PromptCanceled();\n }\n }\n\n private async promptForCleaning(tsconfigFiles: string[]) {\n this.logger.clearStatusLine();\n const ok = await yesno({\n question: `${chalk.underline('The following paths will be deleted:')}\n${tsconfigFiles.join('\\n')}\n${chalk.bold('Do you want to continue? [yes(y)/no(n)]')}`,\n });\n if (!ok) {\n throw new PromptCanceled();\n }\n }\n\n private async deleteFiles(tsconfigFiles: string[]) {\n await Promise.all(tsconfigFiles.map((f) => fs.remove(f)));\n }\n\n private async writeFiles(tsconfigPathsPerEnvs: TsconfigPathsPerEnv[]) {\n await Promise.all(\n tsconfigPathsPerEnvs.map((pathsPerEnv) => {\n return Promise.all(\n pathsPerEnv.paths.map((p) => fs.writeFile(path.join(p, 'tsconfig.json'), pathsPerEnv.tsconfig))\n );\n })\n );\n }\n\n private getPathsPerEnv(envsExecutionContext: ExecutionContext[], { dedupe }: TsconfigWriterOptions): PathsPerEnv[] {\n const pathsPerEnvs = envsExecutionContext.map((envExecution) => {\n return {\n id: envExecution.id,\n env: envExecution.env,\n paths: envExecution.components.map((c) => this.workspace.componentDir(c.id, undefined, { relative: true })),\n };\n });\n if (!dedupe) {\n return pathsPerEnvs.map(({ id, env, paths }) => ({ ids: [id], env, paths }));\n }\n\n const envsWithFiles = envsExecutionContext.map((e) => ({\n id: e.id,\n file: e.env.getTsConfig(),\n }));\n const envsPerFile: { envIds: string[]; fileContent: Record<string, any> }[] = [];\n const isEnvProcessed = (envId: string) =>\n envsPerFile\n .map((e) => e.envIds)\n .flat()\n .find((e) => e === envId);\n envsWithFiles.forEach(({ id, file }) => {\n if (isEnvProcessed(id)) return;\n const foundSameFile = envsWithFiles.filter((e) => isEqual(file, e.file));\n envsPerFile.push({ envIds: foundSameFile.map((f) => f.id), fileContent: file });\n });\n const pathsPerEnvIds = envsPerFile.map((e) => ({\n ids: e.envIds,\n paths: compact(e.envIds.map((envId) => pathsPerEnvs.find((p) => p.id === envId)?.paths).flat()),\n }));\n // const pathsPerEnvIds = pathsPerEnvs.map((p) => ({ ids: p.ids, paths: p.paths }));\n const envsPerDedupedPaths = dedupePaths(pathsPerEnvIds);\n const dedupedPathsPerEnvs: PathsPerEnv[] = envsPerDedupedPaths.map((envWithDedupePaths) => {\n const found = pathsPerEnvs.find((p) => envWithDedupePaths.ids.includes(p.id));\n if (!found) throw new Error(`dedupedPathsPerEnvs, unable to find ${envWithDedupePaths.ids}`);\n return {\n env: found.env,\n ids: envWithDedupePaths.ids,\n paths: envWithDedupePaths.paths,\n };\n });\n\n return dedupedPathsPerEnvs;\n }\n}\n\ntype PathsPerEnvIds = { ids: string[]; paths: string[] };\n\nasync function filterDirsWithTsconfigFile(dirs: string[]): Promise<string[]> {\n const dirsWithTsconfig = await Promise.all(\n dirs.map(async (dir) => {\n const hasTsconfig = await fs.pathExists(path.join(dir, 'tsconfig.json'));\n return hasTsconfig ? dir : undefined;\n })\n );\n return compact(dirsWithTsconfig);\n}\n\nfunction getAllPossibleDirsFromPaths(paths: PathLinuxRelative[]): PathLinuxRelative[] {\n const dirs = paths.map((p) => getAllParentsDirOfPath(p)).flat();\n dirs.push('.'); // add the root dir\n return uniq(dirs);\n}\n\nfunction getAllParentsDirOfPath(p: PathLinuxRelative): PathLinuxRelative[] {\n const all: string[] = [];\n let current = p;\n while (current !== '.') {\n all.push(current);\n current = path.dirname(current);\n }\n return all;\n}\n\n/**\n * easier to understand by an example:\n * input:\n * [\n * { id: react, paths: [ui/button, ui/form] },\n * { id: aspect, paths: [p/a1, p/a2] },\n * { id: node, paths: [p/n1] },\n * ]\n *\n * output:\n * [\n * { id: react, paths: [ui] },\n * { id: aspect, paths: [p] },\n * { id: node, paths: [p/n1] },\n * ]\n *\n * the goal is to minimize the amount of files to write per env if possible.\n * when multiple components of the same env share a root-dir, then, it's enough to write a file in that shared dir.\n * if in a shared-dir, some components using env1 and some env2, it finds the env that has the max number of\n * components, this env will be optimized. other components, will have the files written inside their dirs.\n */\nexport function dedupePaths(pathsPerEnvId: PathsPerEnvIds[]): PathsPerEnvIds[] {\n const rootDir = '.';\n const individualPathPerConcatenatedEnvIds: { [path: string]: string } = pathsPerEnvId.reduce((acc, current) => {\n current.paths.forEach((p) => {\n acc[p] = current.ids.join(',');\n });\n return acc;\n }, {});\n const allPaths = Object.keys(individualPathPerConcatenatedEnvIds);\n const allPossibleDirs = getAllPossibleDirsFromPaths(allPaths);\n\n const allPathsPerEnvId: { [path: string]: string | null } = {}; // null when parent-dir has same amount of comps per env.\n\n const calculateBestEnvForDir = (dir: string) => {\n if (individualPathPerConcatenatedEnvIds[dir]) {\n // it's the component dir, so it's the best env\n allPathsPerEnvId[dir] = individualPathPerConcatenatedEnvIds[dir];\n return;\n }\n const allPathsShareSameDir = dir === rootDir ? allPaths : allPaths.filter((p) => p.startsWith(`${dir}/`));\n const countPerEnv: { [env: string]: number } = {};\n allPathsShareSameDir.forEach((p) => {\n const envIdStr = individualPathPerConcatenatedEnvIds[p];\n if (countPerEnv[envIdStr]) countPerEnv[envIdStr] += 1;\n else countPerEnv[envIdStr] = 1;\n });\n const max = Math.max(...Object.values(countPerEnv));\n const envWithMax = Object.keys(countPerEnv).filter((env) => countPerEnv[env] === max);\n if (!envWithMax.length) throw new Error(`must be at least one env related to path \"${dir}\"`);\n if (envWithMax.length > 1) allPathsPerEnvId[dir] = null;\n else allPathsPerEnvId[dir] = envWithMax[0];\n };\n\n allPossibleDirs.forEach((dirPath) => {\n calculateBestEnvForDir(dirPath);\n });\n\n // this is the actual deduping. if found a shorter path with the same env, then no need for this path.\n // in other words, return only the paths that their parent is null or has a different env.\n const dedupedPathsPerEnvIds = Object.keys(allPathsPerEnvId).reduce((acc, current) => {\n if (allPathsPerEnvId[current] && allPathsPerEnvId[path.dirname(current)] !== allPathsPerEnvId[current]) {\n acc[current] = allPathsPerEnvId[current];\n }\n\n return acc;\n }, {});\n // rootDir parent is always rootDir, so leave it as is.\n if (allPathsPerEnvId[rootDir]) dedupedPathsPerEnvIds[rootDir] = allPathsPerEnvId[rootDir];\n\n const envIdsPerDedupedPaths = invertBy(dedupedPathsPerEnvIds);\n\n const dedupedPaths = Object.keys(envIdsPerDedupedPaths).map((envIdStr) => ({\n ids: envIdStr.split(','),\n paths: envIdsPerDedupedPaths[envIdStr],\n }));\n return dedupedPaths;\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const Logo: () =>
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const Logo: () => JSX.Element;
|
|
@@ -40,11 +40,11 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
|
|
|
40
40
|
private getTsServer;
|
|
41
41
|
computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
42
42
|
transformAPI(schema: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
43
|
-
getComponentIDByPath(file: string): Promise<import("@teambit/component").ComponentID
|
|
43
|
+
getComponentIDByPath(file: string): Promise<import("@teambit/component").ComponentID>;
|
|
44
44
|
/**
|
|
45
45
|
* select the correct transformer for a node.
|
|
46
46
|
*/
|
|
47
|
-
getTransformer(node: Node, context: SchemaExtractorContext): import("./schema-transformer").SchemaTransformer
|
|
48
|
-
getAPITransformer(node: SchemaNode): import("./schema-transformer").SchemaNodeTransformer
|
|
47
|
+
getTransformer(node: Node, context: SchemaExtractorContext): import("./schema-transformer").SchemaTransformer;
|
|
48
|
+
getAPITransformer(node: SchemaNode): import("./schema-transformer").SchemaNodeTransformer;
|
|
49
49
|
static from(options: ExtractorOptions): (context: EnvContext) => TypeScriptExtractor;
|
|
50
50
|
}
|
|
@@ -11,9 +11,9 @@ function _typescript() {
|
|
|
11
11
|
};
|
|
12
12
|
return data;
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function _getTsconfig() {
|
|
15
15
|
const data = require("get-tsconfig");
|
|
16
|
-
|
|
16
|
+
_getTsconfig = function () {
|
|
17
17
|
return data;
|
|
18
18
|
};
|
|
19
19
|
return data;
|
|
@@ -160,9 +160,8 @@ class TypeScriptExtractor {
|
|
|
160
160
|
return identifiers;
|
|
161
161
|
}
|
|
162
162
|
async createContext(tsserver, component, formatter) {
|
|
163
|
-
var _this$workspace;
|
|
164
163
|
const componentDeps = await this.getComponentDeps(component);
|
|
165
|
-
return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this, componentDeps, this.rootContextPath,
|
|
164
|
+
return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this, componentDeps, this.rootContextPath, this.workspace?.path || this.scope.path, formatter);
|
|
166
165
|
}
|
|
167
166
|
async getComponentDeps(component) {
|
|
168
167
|
const deps = await this.depResolver.getDependencies(component);
|
|
@@ -231,15 +230,14 @@ class TypeScriptExtractor {
|
|
|
231
230
|
}
|
|
232
231
|
static from(options) {
|
|
233
232
|
return context => {
|
|
234
|
-
|
|
235
|
-
const tsconfig = ((_getTsconfig = (0, _getTsconfig2().getTsconfig)(options.tsconfig)) === null || _getTsconfig === void 0 ? void 0 : _getTsconfig.config) || {
|
|
233
|
+
const tsconfig = (0, _getTsconfig().getTsconfig)(options.tsconfig)?.config || {
|
|
236
234
|
compilerOptions: options.compilerOptions
|
|
237
235
|
};
|
|
238
236
|
const tsMain = context.getAspect(_typescript2().TypescriptAspect.id);
|
|
239
237
|
const aspectLoaderMain = context.getAspect(_aspectLoader().default.id);
|
|
240
238
|
|
|
241
239
|
// When loading the env from a scope you don't have a workspace
|
|
242
|
-
const rootPath =
|
|
240
|
+
const rootPath = tsMain.workspace?.path || tsMain.scope.path || '';
|
|
243
241
|
return new TypeScriptExtractor(tsconfig, tsMain.schemaTransformerSlot, tsMain.apiTransformerSlot, tsMain, rootPath, rootPath, tsMain.depResolver, tsMain.workspace, tsMain.scope, aspectLoaderMain, context.createLogger(options.name));
|
|
244
242
|
};
|
|
245
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig2","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_defineProperty","key","value","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","apiTransformerSlot","tsMain","rootTsserverPath","rootContextPath","depResolver","workspace","scope","aspectLoader","logger","undefined","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","options","tsserverPath","contextPath","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","filesystem","files","filter","includes","extname","allFiles","context","createContext","formatter","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","debug","TransformerNotFound","_this$workspace","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","schemaNode","transform","transformAPI","schema","apiTransformer","getAPITransformer","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","transformers","flatten","values","singleTransformer","predicate","from","_getTsconfig","_tsMain$workspace","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","createLogger","name","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile, SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor, SchemaExtractorOptions } 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 { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot, APITransformerSlot } 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 apiTransformerSlot: APITransformerSlot,\n private tsMain: TypescriptMain,\n private rootTsserverPath: string,\n private rootContextPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined,\n private scope: ScopeMain,\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, options: SchemaExtractorOptions = {}): Promise<APISchema> {\n // override the rootTsserverPath and rootContextPath if passed via options\n if (options.tsserverPath) {\n this.rootTsserverPath = options.tsserverPath;\n }\n if (options.contextPath) {\n this.rootContextPath = options.contextPath;\n }\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.ts'];\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, options.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 as any);\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.debug(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(\n tsserver,\n component,\n this,\n componentDeps,\n this.rootContextPath,\n this.workspace?.path || this.scope.path,\n formatter\n );\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.rootTsserverPath);\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\n const schemaNode = await transformer.transform(node, context);\n\n return this.transformAPI(schemaNode, context);\n }\n\n async transformAPI(schema: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const apiTransformer = this.getAPITransformer(schema);\n return apiTransformer ? apiTransformer.transform(schema, context) : schema;\n }\n\n async getComponentIDByPath(file: string) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const matchingCoreAspect = coreAspectIds.find((c) => file === getCoreAspectPackageName(c));\n\n if (matchingCoreAspect) {\n return (this.workspace || this.scope).resolveComponentId(matchingCoreAspect);\n }\n\n if (this.workspace) {\n return this.workspace.getComponentIdByPath(file);\n }\n return null;\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.debug(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n return undefined;\n }\n\n return transformer;\n }\n\n getAPITransformer(node: SchemaNode) {\n const transformers = flatten(this.apiTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\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 rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain.apiTransformerSlot,\n tsMain,\n rootPath,\n rootPath,\n tsMain.depResolver,\n tsMain.workspace,\n tsMain.scope,\n aspectLoaderMain,\n context.createLogger(options.name)\n );\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_defineProperty","key","value","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","apiTransformerSlot","tsMain","rootTsserverPath","rootContextPath","depResolver","workspace","scope","aspectLoader","logger","undefined","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","options","tsserverPath","contextPath","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","filesystem","files","filter","includes","extname","allFiles","context","createContext","formatter","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","debug","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","schemaNode","transform","transformAPI","schema","apiTransformer","getAPITransformer","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","transformers","flatten","values","singleTransformer","predicate","from","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","createLogger","name","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile, SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor, SchemaExtractorOptions } 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 { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot, APITransformerSlot } 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 apiTransformerSlot: APITransformerSlot,\n private tsMain: TypescriptMain,\n private rootTsserverPath: string,\n private rootContextPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined,\n private scope: ScopeMain,\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, options: SchemaExtractorOptions = {}): Promise<APISchema> {\n // override the rootTsserverPath and rootContextPath if passed via options\n if (options.tsserverPath) {\n this.rootTsserverPath = options.tsserverPath;\n }\n if (options.contextPath) {\n this.rootContextPath = options.contextPath;\n }\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.ts'];\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, options.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 as any);\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.debug(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(\n tsserver,\n component,\n this,\n componentDeps,\n this.rootContextPath,\n this.workspace?.path || this.scope.path,\n formatter\n );\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.rootTsserverPath);\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\n const schemaNode = await transformer.transform(node, context);\n\n return this.transformAPI(schemaNode, context);\n }\n\n async transformAPI(schema: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const apiTransformer = this.getAPITransformer(schema);\n return apiTransformer ? apiTransformer.transform(schema, context) : schema;\n }\n\n async getComponentIDByPath(file: string) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const matchingCoreAspect = coreAspectIds.find((c) => file === getCoreAspectPackageName(c));\n\n if (matchingCoreAspect) {\n return (this.workspace || this.scope).resolveComponentId(matchingCoreAspect);\n }\n\n if (this.workspace) {\n return this.workspace.getComponentIdByPath(file);\n }\n return null;\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.debug(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n return undefined;\n }\n\n return transformer;\n }\n\n getAPITransformer(node: SchemaNode) {\n const transformers = flatten(this.apiTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\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 rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain.apiTransformerSlot,\n tsMain,\n rootPath,\n rootPath,\n tsMain.depResolver,\n tsMain.workspace,\n tsMain.scope,\n aspectLoaderMain,\n context.createLogger(options.name)\n );\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -18,18 +18,18 @@ import { ScopeMain } from '@teambit/scope';
|
|
|
18
18
|
import { TypeScriptCompilerOptions } from './compiler-options';
|
|
19
19
|
import { SchemaNodeTransformer, SchemaTransformer } from './schema-transformer';
|
|
20
20
|
import { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';
|
|
21
|
-
export
|
|
22
|
-
export
|
|
23
|
-
export
|
|
24
|
-
export
|
|
25
|
-
export
|
|
21
|
+
export type TsMode = 'build' | 'dev';
|
|
22
|
+
export type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;
|
|
23
|
+
export type APITransformerSlot = SlotRegistry<SchemaNodeTransformer[]>;
|
|
24
|
+
export type TsConfigTransformContext = {};
|
|
25
|
+
export type TsconfigWriterOptions = {
|
|
26
26
|
clean?: boolean;
|
|
27
27
|
silent?: boolean;
|
|
28
28
|
dedupe?: boolean;
|
|
29
29
|
dryRun?: boolean;
|
|
30
30
|
dryRunWithTsconfig?: boolean;
|
|
31
31
|
};
|
|
32
|
-
export
|
|
32
|
+
export type TsConfigTransformer = (config: TypescriptConfigMutator, context: TsConfigTransformContext) => TypescriptConfigMutator;
|
|
33
33
|
export declare class TypescriptMain {
|
|
34
34
|
private logger;
|
|
35
35
|
readonly schemaTransformerSlot: SchemaTransformerSlot;
|
|
@@ -131,5 +131,5 @@ export declare class TypescriptMain {
|
|
|
131
131
|
BuilderMain
|
|
132
132
|
], config: any, [schemaTransformerSlot, apiTransformerSlot]: [SchemaTransformerSlot, APITransformerSlot]): Promise<TypescriptMain>;
|
|
133
133
|
}
|
|
134
|
-
export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[]
|
|
134
|
+
export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[], context: TsConfigTransformContext): TypescriptConfigMutator;
|
|
135
135
|
export default TypescriptMain;
|
|
@@ -300,8 +300,7 @@ class TypescriptMain {
|
|
|
300
300
|
* create an instance of a typescript semantic schema extractor.
|
|
301
301
|
*/
|
|
302
302
|
createSchemaExtractor(tsconfig, tsserverPath, contextPath) {
|
|
303
|
-
|
|
304
|
-
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this.apiTransformerSlot, this, tsserverPath || ((_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.path) || '', contextPath || ((_this$workspace2 = this.workspace) === null || _this$workspace2 === void 0 ? void 0 : _this$workspace2.path) || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger);
|
|
303
|
+
return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this.apiTransformerSlot, this, tsserverPath || this.workspace?.path || '', contextPath || this.workspace?.path || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger);
|
|
305
304
|
}
|
|
306
305
|
|
|
307
306
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_typescript","data","_interopRequireDefault","require","_harmony","_cli","_logger","_schema","_typescriptModules","_workspace","_dependencyResolver","_pMapSeries","_tsServer","_aspectLoader","_watcher","_builder","_envs","_scope","_typescript2","_typescript3","_typescript4","_typescript5","_schemaTransformer","_transformers","_checkTypes","_tsconfigWriter","_writeTsconfig","_removeTypesTask","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","TypescriptMain","constructor","logger","schemaTransformerSlot","apiTransformerSlot","workspace","scope","depResolver","envs","tsConfigWriter","aspectLoader","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","registerSchemaTransformer","register","registerApiTransformer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","setTarget","tsconfig","compilerOptions","module","lib","createSchemaExtractor","tsserverPath","contextPath","_this$workspace","_this$workspace2","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","componentIds","watchOpts","spawnTSServer","verbose","checkTypes","getMany","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","cli","watcher","builder","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","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","ExpressionStatementTransformer","ModuleDeclarationTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","removeTypesTask","RemoveTypesTask","registerSnapTasks","registerTagTasks","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","exports","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","WatcherAspect","ScopeAspect","BuilderAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer","_default"],"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 { 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 WatcherAspect, { WatcherMain, WatchOptions } from '@teambit/watcher';\nimport type { Component, ComponentID } from '@teambit/component';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { ScopeMain, ScopeAspect } from '@teambit/scope';\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 { SchemaNodeTransformer, 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 ExpressionStatementTransformer,\n ModuleDeclarationTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\nimport { RemoveTypesTask } from './remove-types-task';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\nexport type APITransformerSlot = SlotRegistry<SchemaNodeTransformer[]>;\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 apiTransformerSlot: APITransformerSlot,\n readonly workspace: Workspace,\n readonly scope: ScopeMain,\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 registerSchemaTransformer(transformers: SchemaTransformer[]) {\n this.schemaTransformerSlot.register(transformers);\n return this;\n }\n\n registerApiTransformer(transformers: SchemaNodeTransformer[]) {\n this.apiTransformerSlot.register(transformers);\n return this;\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 await 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, tsserverPath?: string, contextPath?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this.apiTransformerSlot,\n this,\n tsserverPath || this.workspace?.path || '',\n contextPath || this.workspace?.path || '',\n this.depResolver,\n this.workspace,\n this.scope,\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(componentIds: ComponentID[], 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(await workspace.getMany(componentIds)) : [];\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 WatcherAspect,\n ScopeAspect,\n BuilderAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>(), Slot.withType<SchemaNodeTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain,\n WatcherMain,\n ScopeMain,\n BuilderMain\n ],\n config,\n [schemaTransformerSlot, apiTransformerSlot]: [SchemaTransformerSlot, APITransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(\n logger,\n schemaTransformerSlot,\n apiTransformerSlot,\n workspace,\n scope,\n depResolver,\n envs,\n tsconfigWriter,\n aspectLoader\n );\n tsMain.registerSchemaTransformer([\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 new ExpressionStatementTransformer(),\n new ModuleDeclarationTransformer(),\n ]);\n\n if (workspace) {\n watcher.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));\n }\n\n const removeTypesTask = new RemoveTypesTask();\n builder.registerSnapTasks([removeTypesTask]);\n builder.registerTagTasks([removeTypesTask]);\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":["_typescript","data","_interopRequireDefault","require","_harmony","_cli","_logger","_schema","_typescriptModules","_workspace","_dependencyResolver","_pMapSeries","_tsServer","_aspectLoader","_watcher","_builder","_envs","_scope","_typescript2","_typescript3","_typescript4","_typescript5","_schemaTransformer","_transformers","_checkTypes","_tsconfigWriter","_writeTsconfig","_removeTypesTask","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","TypescriptMain","constructor","logger","schemaTransformerSlot","apiTransformerSlot","workspace","scope","depResolver","envs","tsConfigWriter","aspectLoader","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","registerSchemaTransformer","register","registerApiTransformer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","setTarget","tsconfig","compilerOptions","module","lib","createSchemaExtractor","tsserverPath","contextPath","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","componentIds","watchOpts","spawnTSServer","verbose","checkTypes","getMany","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","cli","watcher","builder","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","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","ExpressionStatementTransformer","ModuleDeclarationTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","removeTypesTask","RemoveTypesTask","registerSnapTasks","registerTagTasks","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","exports","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","WatcherAspect","ScopeAspect","BuilderAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer","_default"],"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 { 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 WatcherAspect, { WatcherMain, WatchOptions } from '@teambit/watcher';\nimport type { Component, ComponentID } from '@teambit/component';\nimport { BuilderAspect, BuilderMain } from '@teambit/builder';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { ScopeMain, ScopeAspect } from '@teambit/scope';\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 { SchemaNodeTransformer, 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 ExpressionStatementTransformer,\n ModuleDeclarationTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\nimport { RemoveTypesTask } from './remove-types-task';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\nexport type APITransformerSlot = SlotRegistry<SchemaNodeTransformer[]>;\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 apiTransformerSlot: APITransformerSlot,\n readonly workspace: Workspace,\n readonly scope: ScopeMain,\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 registerSchemaTransformer(transformers: SchemaTransformer[]) {\n this.schemaTransformerSlot.register(transformers);\n return this;\n }\n\n registerApiTransformer(transformers: SchemaNodeTransformer[]) {\n this.apiTransformerSlot.register(transformers);\n return this;\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 await 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, tsserverPath?: string, contextPath?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this.apiTransformerSlot,\n this,\n tsserverPath || this.workspace?.path || '',\n contextPath || this.workspace?.path || '',\n this.depResolver,\n this.workspace,\n this.scope,\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(componentIds: ComponentID[], 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(await workspace.getMany(componentIds)) : [];\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 WatcherAspect,\n ScopeAspect,\n BuilderAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>(), Slot.withType<SchemaNodeTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain,\n WatcherMain,\n ScopeMain,\n BuilderMain\n ],\n config,\n [schemaTransformerSlot, apiTransformerSlot]: [SchemaTransformerSlot, APITransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(\n logger,\n schemaTransformerSlot,\n apiTransformerSlot,\n workspace,\n scope,\n depResolver,\n envs,\n tsconfigWriter,\n aspectLoader\n );\n tsMain.registerSchemaTransformer([\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 new ExpressionStatementTransformer(),\n new ModuleDeclarationTransformer(),\n ]);\n\n if (workspace) {\n watcher.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));\n }\n\n const removeTypesTask = new RemoveTypesTask();\n builder.registerSnapTasks([removeTypesTask]);\n builder.registerTagTasks([removeTypesTask]);\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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"}
|