@teambit/typescript 1.0.806 → 1.0.807

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.
@@ -65,6 +65,11 @@ class VariableDeclaration {
65
65
  const doc = await context.jsDocToDocSchema(varDec);
66
66
  const nodeModifiers = _typescript().default.canHaveModifiers(varDec) ? _typescript().default.getModifiers(varDec) : undefined;
67
67
  const modifiers = nodeModifiers?.map(modifier => modifier.getText()) || [];
68
+ if (varDec.initializer && _typescript().default.isObjectLiteralExpression(varDec.initializer)) {
69
+ const typeFromInit = await context.computeSchema(varDec.initializer);
70
+ const defaultValue = varDec.initializer.getText();
71
+ return new (_semanticsEntities().VariableLikeSchema)(location, name, displaySig, typeFromInit, false, doc, defaultValue);
72
+ }
68
73
  if (varDec.initializer?.kind === _typescript().default.SyntaxKind.ArrowFunction) {
69
74
  const functionLikeInfo = await context.getQuickInfo(varDec.initializer.equalsGreaterThanToken);
70
75
  const returnTypeStr = functionLikeInfo ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(functionLikeInfo) : 'any';
@@ -1 +1 @@
1
- {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","_parameter","e","__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","nodeModifiers","canHaveModifiers","getModifiers","undefined","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","dotDotDotToken","args","computeSchema","typeStr","defaultValue","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import type { SchemaNode, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport {\n VariableLikeSchema,\n FunctionLikeSchema,\n ParameterSchema,\n TypeRefSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport type { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport ts from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport type { SchemaTransformer } from '../schema-transformer';\nimport type { 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 nodeModifiers = ts.canHaveModifiers(varDec) ? ts.getModifiers(varDec) : undefined;\n const modifiers = nodeModifiers?.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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","ignoreList":[]}
1
+ {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","_parameter","e","__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","nodeModifiers","canHaveModifiers","getModifiers","undefined","modifiers","map","modifier","initializer","isObjectLiteralExpression","typeFromInit","computeSchema","defaultValue","VariableLikeSchema","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","dotDotDotToken","args","typeStr","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import type { SchemaNode, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport {\n VariableLikeSchema,\n FunctionLikeSchema,\n ParameterSchema,\n TypeRefSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport type { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport ts from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport type { SchemaTransformer } from '../schema-transformer';\nimport type { 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 nodeModifiers = ts.canHaveModifiers(varDec) ? ts.getModifiers(varDec) : undefined;\n const modifiers = nodeModifiers?.map((modifier) => modifier.getText()) || [];\n if (varDec.initializer && ts.isObjectLiteralExpression(varDec.initializer)) {\n const typeFromInit = await context.computeSchema(varDec.initializer);\n const defaultValue = varDec.initializer.getText();\n return new VariableLikeSchema(location, name, displaySig, typeFromInit, false, doc, defaultValue);\n }\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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","ignoreList":[]}
@@ -2,8 +2,8 @@ import type { Node, SourceFile } from 'typescript';
2
2
  import type { SchemaExtractor, SchemaExtractorOptions } from '@teambit/schema';
3
3
  import type { Workspace } from '@teambit/workspace';
4
4
  import type { DependencyResolverMain } from '@teambit/dependency-resolver';
5
- import type { SchemaNode, ModuleSchema } from '@teambit/semantics.entities.semantic-schema';
6
- import { APISchema } from '@teambit/semantics.entities.semantic-schema';
5
+ import type { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
6
+ import { APISchema, ModuleSchema } from '@teambit/semantics.entities.semantic-schema';
7
7
  import type { Component } from '@teambit/component';
8
8
  import type { AbstractVinyl } from '@teambit/component.sources';
9
9
  import type { EnvContext } from '@teambit/envs';
@@ -27,13 +27,18 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
27
27
  private scope;
28
28
  private aspectLoader;
29
29
  private logger;
30
- constructor(tsconfig: any, schemaTransformers: SchemaTransformer[], apiTransformers: SchemaNodeTransformer[], tsMain: TypescriptMain, rootTsserverPath: string, rootContextPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined, scope: ScopeMain, aspectLoader: AspectLoaderMain, logger: Logger);
30
+ private includeFiles;
31
+ constructor(tsconfig: any, schemaTransformers: SchemaTransformer[], apiTransformers: SchemaNodeTransformer[], tsMain: TypescriptMain, rootTsserverPath: string, rootContextPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined, scope: ScopeMain, aspectLoader: AspectLoaderMain, logger: Logger, includeFiles?: string[]);
31
32
  parseSourceFile(file: AbstractVinyl): SourceFile;
32
33
  /**
33
34
  * extract a component schema.
34
35
  */
35
36
  extract(component: Component, options?: SchemaExtractorOptions): Promise<APISchema>;
36
- computeInternalModules(context: SchemaExtractorContext, internalFiles: AbstractVinyl[]): Promise<ModuleSchema[]>;
37
+ computeInternalModules(context: SchemaExtractorContext): Promise<ModuleSchema[]>;
38
+ private normalizePath;
39
+ private fileRelativePath;
40
+ private matchGlob;
41
+ private resolveIncludedFiles;
37
42
  dispose(): void;
38
43
  computeIdentifiers(node: Node, context: SchemaExtractorContext): Promise<Identifier[]>;
39
44
  private createContext;
@@ -46,6 +46,13 @@ function _lodash() {
46
46
  };
47
47
  return data;
48
48
  }
49
+ function _minimatch() {
50
+ const data = _interopRequireDefault(require("minimatch"));
51
+ _minimatch = function () {
52
+ return data;
53
+ };
54
+ return data;
55
+ }
49
56
  function _exceptions() {
50
57
  const data = require("./exceptions");
51
58
  _exceptions = function () {
@@ -80,7 +87,7 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
80
87
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
81
88
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
82
89
  class TypeScriptExtractor {
83
- constructor(tsconfig, schemaTransformers, apiTransformers, tsMain, rootTsserverPath, rootContextPath, depResolver, workspace, scope, aspectLoader, logger) {
90
+ constructor(tsconfig, schemaTransformers, apiTransformers, tsMain, rootTsserverPath, rootContextPath, depResolver, workspace, scope, aspectLoader, logger, includeFiles = []) {
84
91
  this.tsconfig = tsconfig;
85
92
  this.schemaTransformers = schemaTransformers;
86
93
  this.apiTransformers = apiTransformers;
@@ -92,6 +99,7 @@ class TypeScriptExtractor {
92
99
  this.scope = scope;
93
100
  this.aspectLoader = aspectLoader;
94
101
  this.logger = logger;
102
+ this.includeFiles = includeFiles;
95
103
  _defineProperty(this, "tsserver", undefined);
96
104
  }
97
105
  parseSourceFile(file) {
@@ -113,6 +121,9 @@ class TypeScriptExtractor {
113
121
  if (options.contextPath) {
114
122
  this.rootContextPath = options.contextPath;
115
123
  }
124
+ if (options.includeFiles) {
125
+ this.includeFiles = options.includeFiles;
126
+ }
116
127
  const tsserver = await this.getTsServer();
117
128
  const mainFile = component.mainFile;
118
129
  const compatibleExts = ['.tsx', '.ts'];
@@ -129,21 +140,73 @@ class TypeScriptExtractor {
129
140
  const moduleSchema = await this.computeSchema(mainAst, context);
130
141
  moduleSchema.flatExportsRecursively();
131
142
  const apiScheme = moduleSchema;
132
- const internals = await this.computeInternalModules(context, internalFiles);
143
+ const internalModules = await this.computeInternalModules(context);
144
+ const includedFiles = this.resolveIncludedFiles(component, this.includeFiles ?? []);
145
+ const includedModules = (0, _lodash().compact)(await Promise.all(includedFiles.map(async file => {
146
+ const ast = this.parseSourceFile(file);
147
+ const schema = await this.computeSchema(ast, context);
148
+ schema.flatExportsRecursively();
149
+ return schema;
150
+ })));
151
+ const interalAndIncludedModules = includedModules.concat(internalModules);
133
152
  const location = context.getLocation(mainAst);
134
- return new (_semanticsEntities().APISchema)(location, apiScheme, internals, component.id);
153
+ return new (_semanticsEntities().APISchema)(location, apiScheme, interalAndIncludedModules, component.id);
135
154
  }
136
- async computeInternalModules(context, internalFiles) {
137
- if (internalFiles.length === 0) return [];
138
- const internals = (0, _lodash().compact)(await Promise.all([...context.internalIdentifiers.entries()].map(async ([filePath]) => {
139
- const file = context.findFileInComponent(filePath);
155
+ async computeInternalModules(context) {
156
+ if (context.internalIdentifiers.size === 0) return [];
157
+ const modules = await Promise.all([...context.internalIdentifiers.entries()].map(async ([fileKey, idList]) => {
158
+ const file = context.findFileInComponent(fileKey);
140
159
  if (!file) return undefined;
141
- const fileAst = this.parseSourceFile(file);
142
- const moduleSchema = await this.computeSchema(fileAst, context);
143
- moduleSchema.flatExportsRecursively();
144
- return moduleSchema;
145
- })));
146
- return internals;
160
+ const parsedSourceFile = this.parseSourceFile(file);
161
+ const nameIndex = context.buildTopLevelNameIndex(parsedSourceFile);
162
+ const toVisit = new Set(idList.identifiers.map(i => i.id));
163
+ const visited = new Set();
164
+ const internalSchemas = [];
165
+ const enqueue = name => {
166
+ if (!visited.has(name) && !toVisit.has(name) && nameIndex.has(name)) {
167
+ toVisit.add(name);
168
+ }
169
+ };
170
+ while (toVisit.size) {
171
+ const name = toVisit.values().next().value;
172
+ toVisit.delete(name);
173
+ if (visited.has(name)) continue;
174
+ visited.add(name);
175
+ const decl = nameIndex.get(name);
176
+ if (!decl) continue;
177
+ const schema = await context.computeSchema(decl);
178
+ internalSchemas.push(schema);
179
+ const sameFileRefs = context.collectSameFileInternalTypeRefs(schema);
180
+ sameFileRefs.forEach(enqueue);
181
+ }
182
+ const filtered = (0, _lodash().compact)(internalSchemas);
183
+ if (!filtered.length) return undefined;
184
+ return new (_semanticsEntities().ModuleSchema)(context.getLocation(parsedSourceFile), [], filtered);
185
+ }));
186
+ return (0, _lodash().compact)(modules);
187
+ }
188
+ normalizePath(p) {
189
+ return p.replace(/\\/g, '/').replace(/^\.?\//, '');
190
+ }
191
+ fileRelativePath(file, component) {
192
+ const base = component.filesystem.files[0].base;
193
+ return this.normalizePath(file.path.slice(base.length).replace(/^\/+/, ''));
194
+ }
195
+ matchGlob(input, pattern) {
196
+ const hasGlobMeta = /[*?[\]{},]/.test(pattern);
197
+ if (!hasGlobMeta) return input === pattern;
198
+ return (0, _minimatch().default)(input, pattern, {
199
+ dot: true
200
+ });
201
+ }
202
+ resolveIncludedFiles(component, includes = []) {
203
+ if (!includes.length) return [];
204
+ const normalizedIncludedPaths = includes.map(this.normalizePath);
205
+ return component.filesystem.files.filter(file => {
206
+ const rel = this.fileRelativePath(file, component);
207
+ if (!(rel.endsWith('.ts') || rel.endsWith('.tsx'))) return false;
208
+ return normalizedIncludedPaths.some(pattern => this.matchGlob(rel, pattern));
209
+ });
147
210
  }
148
211
  dispose() {
149
212
  if (!this.tsserver) return;
@@ -245,7 +308,7 @@ class TypeScriptExtractor {
245
308
  const apiTransformersFromAspect = (0, _lodash().flatten)(Array.from(tsMain.apiTransformerSlot.values()));
246
309
  const schemaTransformers = [...schemaTransformersFromOptions, ...schemaTransformersFromAspect];
247
310
  const apiTransformers = [...apiTransformersFromOptions, ...apiTransformersFromAspect];
248
- return new TypeScriptExtractor(tsconfig, schemaTransformers, apiTransformers, tsMain, rootPath, rootPath, tsMain.depResolver, tsMain.workspace, tsMain.scope, aspectLoaderMain, context.createLogger(options.name));
311
+ return new TypeScriptExtractor(tsconfig, schemaTransformers, apiTransformers, tsMain, rootPath, rootPath, tsMain.depResolver, tsMain.workspace, tsMain.scope, aspectLoaderMain, context.createLogger(options.name), options.includeFiles);
249
312
  };
250
313
  }
251
314
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformers","apiTransformers","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","skipInternals","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","length","compact","Promise","all","internalIdentifiers","entries","map","filePath","findFileInComponent","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","transformedApi","IgnoredSchema","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","find","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","singleTransformer","predicate","from","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","schemaTransformersFromOptions","schemaTransformersFromAspect","getAllTransformers","apiTransformersFromOptions","apiTransformersFromAspect","flatten","Array","apiTransformerSlot","values","createLogger","name","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import type { Node, SourceFile } from 'typescript';\nimport ts, { SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport type { SchemaExtractor, SchemaExtractorOptions } from '@teambit/schema';\nimport type { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport type { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport type { SchemaNode, ModuleSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { APISchema, UnImplementedSchema, IgnoredSchema } from '@teambit/semantics.entities.semantic-schema';\nimport type { Component } from '@teambit/component';\nimport type { AbstractVinyl } from '@teambit/component.sources';\nimport type { EnvContext } from '@teambit/envs';\nimport type { Formatter } from '@teambit/formatter';\nimport type { Logger } from '@teambit/logger';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect, getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport type { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport type { TypescriptMain } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport type { Identifier } from './identifier';\nimport { IdentifierList } from './identifier-list';\nimport type { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport type { SchemaNodeTransformer, SchemaTransformer } from './schema-transformer';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformers: SchemaTransformer[],\n private apiTransformers: SchemaNodeTransformer[],\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 = options.skipInternals\n ? []\n : 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);\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 if (internalFiles.length === 0) return [];\n const internals = compact(\n await Promise.all(\n [...context.internalIdentifiers.entries()].map(async ([filePath]) => {\n const file = context.findFileInComponent(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 = 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 const transformedApi = apiTransformer ? await apiTransformer.transform(schema, context) : schema;\n if (!transformedApi) {\n return new IgnoredSchema(schema);\n }\n return transformedApi;\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 transformer = this.schemaTransformers.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 transformer = this.apiTransformers.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 // When loading the env from a scope you don't have a workspace\n const rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n const schemaTransformersFromOptions = options.schemaTransformers || [];\n const schemaTransformersFromAspect = tsMain.getAllTransformers();\n\n const apiTransformersFromOptions = options.apiTransformers || [];\n const apiTransformersFromAspect = flatten(Array.from(tsMain.apiTransformerSlot.values()));\n\n const schemaTransformers = [...schemaTransformersFromOptions, ...schemaTransformersFromAspect];\n const apiTransformers = [...apiTransformersFromOptions, ...apiTransformersFromAspect];\n\n return new TypeScriptExtractor(\n tsconfig,\n schemaTransformers,\n apiTransformers,\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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","ignoreList":[]}
1
+ {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_minimatch","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformers","apiTransformers","tsMain","rootTsserverPath","rootContextPath","depResolver","workspace","scope","aspectLoader","logger","includeFiles","undefined","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","options","tsserverPath","contextPath","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","skipInternals","filesystem","files","filter","includes","extname","allFiles","context","createContext","formatter","pMapSeries","ast","identifiers","computeIdentifiers","cacheKey","getIdentifierKeyForNode","setIdentifiers","IdentifierList","mainAst","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","internalModules","computeInternalModules","includedFiles","resolveIncludedFiles","includedModules","compact","Promise","all","map","schema","interalAndIncludedModules","concat","location","getLocation","APISchema","id","internalIdentifiers","size","modules","entries","fileKey","idList","findFileInComponent","parsedSourceFile","nameIndex","buildTopLevelNameIndex","toVisit","Set","visited","internalSchemas","enqueue","name","add","values","next","delete","decl","push","sameFileRefs","collectSameFileInternalTypeRefs","forEach","filtered","length","ModuleSchema","normalizePath","p","replace","fileRelativePath","base","slice","matchGlob","input","pattern","hasGlobMeta","test","minimatch","dot","normalizedIncludedPaths","rel","endsWith","some","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","debug","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","schemaNode","transform","transformAPI","apiTransformer","getAPITransformer","transformedApi","IgnoredSchema","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","find","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","singleTransformer","predicate","from","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","schemaTransformersFromOptions","schemaTransformersFromAspect","getAllTransformers","apiTransformersFromOptions","apiTransformersFromAspect","flatten","Array","apiTransformerSlot","createLogger","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import type { Node, SourceFile } from 'typescript';\nimport ts, { SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport type { SchemaExtractor, SchemaExtractorOptions } from '@teambit/schema';\nimport type { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport type { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport type { SchemaNode } from '@teambit/semantics.entities.semantic-schema';\nimport {\n APISchema,\n UnImplementedSchema,\n IgnoredSchema,\n ModuleSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport type { Component } from '@teambit/component';\nimport type { AbstractVinyl } from '@teambit/component.sources';\nimport type { EnvContext } from '@teambit/envs';\nimport type { Formatter } from '@teambit/formatter';\nimport type { Logger } from '@teambit/logger';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect, getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport type { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport minimatch from 'minimatch';\nimport type { TypescriptMain } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport type { Identifier } from './identifier';\nimport { IdentifierList } from './identifier-list';\nimport type { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport type { SchemaNodeTransformer, SchemaTransformer } from './schema-transformer';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformers: SchemaTransformer[],\n private apiTransformers: SchemaNodeTransformer[],\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 private includeFiles: string[] = []\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 if (options.includeFiles) {\n this.includeFiles = options.includeFiles;\n }\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.ts'];\n const internalFiles = options.skipInternals\n ? []\n : 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);\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 internalModules = await this.computeInternalModules(context);\n const includedFiles = this.resolveIncludedFiles(component, this.includeFiles ?? []);\n\n const includedModules = compact(\n await Promise.all(\n includedFiles.map(async (file) => {\n const ast = this.parseSourceFile(file);\n const schema = (await this.computeSchema(ast, context)) as ModuleSchema;\n schema.flatExportsRecursively();\n return schema;\n })\n )\n );\n\n const interalAndIncludedModules = includedModules.concat(internalModules);\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, interalAndIncludedModules, component.id as any);\n }\n\n async computeInternalModules(context: SchemaExtractorContext) {\n if (context.internalIdentifiers.size === 0) return [];\n\n const modules = await Promise.all(\n [...context.internalIdentifiers.entries()].map(async ([fileKey, idList]) => {\n const file = context.findFileInComponent(fileKey);\n if (!file) return undefined;\n\n const parsedSourceFile = this.parseSourceFile(file);\n const nameIndex = context.buildTopLevelNameIndex(parsedSourceFile);\n\n const toVisit = new Set<string>(idList.identifiers.map((i) => i.id));\n const visited = new Set<string>();\n const internalSchemas: SchemaNode[] = [];\n\n const enqueue = (name: string) => {\n if (!visited.has(name) && !toVisit.has(name) && nameIndex.has(name)) {\n toVisit.add(name);\n }\n };\n\n while (toVisit.size) {\n const name = toVisit.values().next().value as string;\n toVisit.delete(name);\n\n if (visited.has(name)) continue;\n visited.add(name);\n\n const decl = nameIndex.get(name);\n if (!decl) continue;\n\n const schema = await context.computeSchema(decl);\n internalSchemas.push(schema);\n\n const sameFileRefs = context.collectSameFileInternalTypeRefs(schema);\n sameFileRefs.forEach(enqueue);\n }\n\n const filtered = compact(internalSchemas);\n if (!filtered.length) return undefined;\n\n return new ModuleSchema(context.getLocation(parsedSourceFile), [], filtered);\n })\n );\n\n return compact(modules);\n }\n\n private normalizePath(p: string): string {\n return p.replace(/\\\\/g, '/').replace(/^\\.?\\//, '');\n }\n\n private fileRelativePath(file: AbstractVinyl, component: Component): string {\n const base = component.filesystem.files[0].base;\n return this.normalizePath(file.path.slice(base.length).replace(/^\\/+/, ''));\n }\n\n private matchGlob(input: string, pattern: string): boolean {\n const hasGlobMeta = /[*?[\\]{},]/.test(pattern);\n if (!hasGlobMeta) return input === pattern;\n return minimatch(input, pattern, { dot: true });\n }\n\n private resolveIncludedFiles(component: Component, includes: string[] = []): AbstractVinyl[] {\n if (!includes.length) return [];\n\n const normalizedIncludedPaths = includes.map(this.normalizePath);\n\n return component.filesystem.files.filter((file) => {\n const rel = this.fileRelativePath(file, component);\n if (!(rel.endsWith('.ts') || rel.endsWith('.tsx'))) return false;\n\n return normalizedIncludedPaths.some((pattern) => this.matchGlob(rel, pattern));\n });\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 = 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 const transformedApi = apiTransformer ? await apiTransformer.transform(schema, context) : schema;\n if (!transformedApi) {\n return new IgnoredSchema(schema);\n }\n return transformedApi;\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 transformer = this.schemaTransformers.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 transformer = this.apiTransformers.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 // When loading the env from a scope you don't have a workspace\n const rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n const schemaTransformersFromOptions = options.schemaTransformers || [];\n const schemaTransformersFromAspect = tsMain.getAllTransformers();\n\n const apiTransformersFromOptions = options.apiTransformers || [];\n const apiTransformersFromAspect = flatten(Array.from(tsMain.apiTransformerSlot.values()));\n\n const schemaTransformers = [...schemaTransformersFromOptions, ...schemaTransformersFromAspect];\n const apiTransformers = [...apiTransformersFromOptions, ...apiTransformersFromAspect];\n\n return new TypeScriptExtractor(\n tsconfig,\n schemaTransformers,\n apiTransformers,\n tsMain,\n rootPath,\n rootPath,\n tsMain.depResolver,\n tsMain.workspace,\n tsMain.scope,\n aspectLoaderMain,\n context.createLogger(options.name),\n options.includeFiles\n );\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -96,7 +96,7 @@ export declare class TypescriptMain {
96
96
  /**
97
97
  * create an instance of a typescript semantic schema extractor.
98
98
  */
99
- createSchemaExtractor(tsconfig: any, tsserverPath?: string, contextPath?: string, schemaTransformers?: SchemaTransformer[], apiTransformers?: SchemaNodeTransformer[]): SchemaExtractor;
99
+ createSchemaExtractor(tsconfig: any, tsserverPath?: string, contextPath?: string, schemaTransformers?: SchemaTransformer[], apiTransformers?: SchemaNodeTransformer[], includeFiles?: string[]): SchemaExtractor;
100
100
  /**
101
101
  * add the default package json properties to the component
102
102
  * :TODO @gilad why do we need this DSL? can't I just get the args here.
@@ -301,12 +301,12 @@ class TypescriptMain {
301
301
  /**
302
302
  * create an instance of a typescript semantic schema extractor.
303
303
  */
304
- createSchemaExtractor(tsconfig, tsserverPath, contextPath, schemaTransformers = [], apiTransformers = []) {
304
+ createSchemaExtractor(tsconfig, tsserverPath, contextPath, schemaTransformers = [], apiTransformers = [], includeFiles = []) {
305
305
  const schemaTransformersFromSlot = this.getAllTransformers();
306
306
  const apiTransformersFromSlot = (0, _lodash().flatten)(Array.from(this.apiTransformerSlot.values()));
307
307
  const allSchemaTransformers = schemaTransformers.concat(schemaTransformersFromSlot);
308
308
  const allApiTransformers = apiTransformers.concat(apiTransformersFromSlot);
309
- return new (_typescript3().TypeScriptExtractor)(tsconfig, allSchemaTransformers, allApiTransformers, this, tsserverPath || this.workspace?.path || '', contextPath || this.workspace?.path || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger);
309
+ return new (_typescript3().TypeScriptExtractor)(tsconfig, allSchemaTransformers, allApiTransformers, this, tsserverPath || this.workspace?.path || '', contextPath || this.workspace?.path || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger, includeFiles);
310
310
  }
311
311
 
312
312
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_harmony","_cli","_logger","_schema","_typescriptModules","_workspace","_dependencyResolver","_pMapSeries","_tsServer","_typescript2","_aspectLoader","_watcher","_builder","_envs","_scope","_lodash","_typescript3","_typescript4","_typescript5","_schemaTransformer","_transformers","_checkTypes","_removeTypesTask","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TypescriptMain","constructor","logger","schemaTransformerSlot","apiTransformerSlot","workspace","scope","depResolver","envs","aspectLoader","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","afterMutationWithoutTsconfig","raw","tsconfig","TypescriptCompiler","TypescriptAspect","id","getTsserverClient","tsServer","registerSchemaTransformer","register","registerApiTransformer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","setTarget","compilerOptions","module","lib","getAllTransformers","transformersFunc","Array","from","values","map","transformer","isArray","flat","createSchemaExtractor","tsserverPath","contextPath","schemaTransformers","apiTransformers","schemaTransformersFromSlot","apiTransformersFromSlot","flatten","allSchemaTransformers","concat","allApiTransformers","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","c","filesystem","f","endsWith","onPreWatch","componentIds","watchOpts","spawnTSServer","verbose","checkTypes","getMany","printTypeErrors","Boolean","onComponentChange","component","results","pMapSeries","file","onFileChange","provider","schema","loggerExt","cli","watcher","builder","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","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","DecoratorTransformer","ObjectLiteralExpressionTransformer","ArrayLiteralExpressionTransformer","PropertyAssignmentTransformer","LiteralValueTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","removeTypesTask","RemoveTypesTask","registerSnapTasks","registerTagTasks","checkTypesCmd","CheckTypesCmd","exports","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","WatcherAspect","ScopeAspect","BuilderAspect","Slot","withType","addRuntime","context","newConfig","reduce","acc","_default"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { Compiler } from '@teambit/compiler';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { SchemaAspect } from '@teambit/schema';\nimport type { 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 type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport type { TsserverClientOpts } from '@teambit/ts-server';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { TypescriptCompiler } from '@teambit/typescript.typescript-compiler';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport type { WatcherMain, WatchOptions } from '@teambit/watcher';\nimport { WatcherAspect } from '@teambit/watcher';\nimport type { Component, ComponentID } from '@teambit/component';\nimport type { BuilderMain } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport { flatten } from 'lodash';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport type { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypeScriptParser } from './typescript.parser';\nimport type { 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 ObjectLiteralExpressionTransformer,\n ArrayLiteralExpressionTransformer,\n PropertyAssignmentTransformer,\n DecoratorTransformer,\n LiteralValueTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.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 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 const afterMutationWithoutTsconfig = { ...afterMutation.raw, tsconfig: '' };\n\n return new TypescriptCompiler(\n TypescriptAspect.id,\n this.logger,\n afterMutationWithoutTsconfig,\n afterMutation.raw.tsconfig,\n tsModule as any\n );\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 getAllTransformers(): SchemaTransformer[] {\n const transformersFunc = Array.from(this.schemaTransformerSlot.values());\n // backward compatibility for transformers that are not wrapped with a function (bit < 1.9.80)\n return transformersFunc.map((transformer) => (Array.isArray(transformer) ? transformer : transformer())).flat();\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(\n tsconfig: any,\n tsserverPath?: string,\n contextPath?: string,\n schemaTransformers: SchemaTransformer[] = [],\n apiTransformers: SchemaNodeTransformer[] = []\n ): SchemaExtractor {\n const schemaTransformersFromSlot = this.getAllTransformers();\n const apiTransformersFromSlot = flatten(Array.from(this.apiTransformerSlot.values()));\n\n const allSchemaTransformers = schemaTransformers.concat(schemaTransformersFromSlot);\n const allApiTransformers = apiTransformers.concat(apiTransformersFromSlot);\n\n return new TypeScriptExtractor(\n tsconfig,\n allSchemaTransformers,\n allApiTransformers,\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 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 tsMain = new TypescriptMain(\n logger,\n schemaTransformerSlot,\n apiTransformerSlot,\n workspace,\n scope,\n depResolver,\n envs,\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 new DecoratorTransformer(),\n new ObjectLiteralExpressionTransformer(),\n new ArrayLiteralExpressionTransformer(),\n new PropertyAssignmentTransformer(),\n new LiteralValueTransformer(),\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 cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n\nexport default TypescriptMain;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_harmony","_cli","_logger","_schema","_typescriptModules","_workspace","_dependencyResolver","_pMapSeries","_tsServer","_typescript2","_aspectLoader","_watcher","_builder","_envs","_scope","_lodash","_typescript3","_typescript4","_typescript5","_schemaTransformer","_transformers","_checkTypes","_removeTypesTask","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TypescriptMain","constructor","logger","schemaTransformerSlot","apiTransformerSlot","workspace","scope","depResolver","envs","aspectLoader","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","afterMutationWithoutTsconfig","raw","tsconfig","TypescriptCompiler","TypescriptAspect","id","getTsserverClient","tsServer","registerSchemaTransformer","register","registerApiTransformer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","setTarget","compilerOptions","module","lib","getAllTransformers","transformersFunc","Array","from","values","map","transformer","isArray","flat","createSchemaExtractor","tsserverPath","contextPath","schemaTransformers","apiTransformers","includeFiles","schemaTransformersFromSlot","apiTransformersFromSlot","flatten","allSchemaTransformers","concat","allApiTransformers","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","c","filesystem","f","endsWith","onPreWatch","componentIds","watchOpts","spawnTSServer","verbose","checkTypes","getMany","printTypeErrors","Boolean","onComponentChange","component","results","pMapSeries","file","onFileChange","provider","schema","loggerExt","cli","watcher","builder","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","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","DecoratorTransformer","ObjectLiteralExpressionTransformer","ArrayLiteralExpressionTransformer","PropertyAssignmentTransformer","LiteralValueTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","removeTypesTask","RemoveTypesTask","registerSnapTasks","registerTagTasks","checkTypesCmd","CheckTypesCmd","exports","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","WatcherAspect","ScopeAspect","BuilderAspect","Slot","withType","addRuntime","context","newConfig","reduce","acc","_default"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { Compiler } from '@teambit/compiler';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { SchemaAspect } from '@teambit/schema';\nimport type { 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 type { DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport type { TsserverClientOpts } from '@teambit/ts-server';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { TypescriptCompiler } from '@teambit/typescript.typescript-compiler';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport type { WatcherMain, WatchOptions } from '@teambit/watcher';\nimport { WatcherAspect } from '@teambit/watcher';\nimport type { Component, ComponentID } from '@teambit/component';\nimport type { BuilderMain } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport { flatten } from 'lodash';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport type { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypeScriptParser } from './typescript.parser';\nimport type { 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 ObjectLiteralExpressionTransformer,\n ArrayLiteralExpressionTransformer,\n PropertyAssignmentTransformer,\n DecoratorTransformer,\n LiteralValueTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.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 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 const afterMutationWithoutTsconfig = { ...afterMutation.raw, tsconfig: '' };\n\n return new TypescriptCompiler(\n TypescriptAspect.id,\n this.logger,\n afterMutationWithoutTsconfig,\n afterMutation.raw.tsconfig,\n tsModule as any\n );\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 getAllTransformers(): SchemaTransformer[] {\n const transformersFunc = Array.from(this.schemaTransformerSlot.values());\n // backward compatibility for transformers that are not wrapped with a function (bit < 1.9.80)\n return transformersFunc.map((transformer) => (Array.isArray(transformer) ? transformer : transformer())).flat();\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(\n tsconfig: any,\n tsserverPath?: string,\n contextPath?: string,\n schemaTransformers: SchemaTransformer[] = [],\n apiTransformers: SchemaNodeTransformer[] = [],\n includeFiles: string[] = []\n ): SchemaExtractor {\n const schemaTransformersFromSlot = this.getAllTransformers();\n const apiTransformersFromSlot = flatten(Array.from(this.apiTransformerSlot.values()));\n\n const allSchemaTransformers = schemaTransformers.concat(schemaTransformersFromSlot);\n const allApiTransformers = apiTransformers.concat(apiTransformersFromSlot);\n\n return new TypeScriptExtractor(\n tsconfig,\n allSchemaTransformers,\n allApiTransformers,\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 includeFiles\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 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 tsMain = new TypescriptMain(\n logger,\n schemaTransformerSlot,\n apiTransformerSlot,\n workspace,\n scope,\n depResolver,\n envs,\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 new DecoratorTransformer(),\n new ObjectLiteralExpressionTransformer(),\n new ArrayLiteralExpressionTransformer(),\n new PropertyAssignmentTransformer(),\n new LiteralValueTransformer(),\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 cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n\nexport default TypescriptMain;\n"],"mappings":"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","ignoreList":[]}