@teambit/typescript 0.0.1158 → 0.0.1159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cmds/check-types.cmd.js +10 -16
- package/dist/cmds/check-types.cmd.js.map +1 -1
- package/dist/cmds/write-tsconfig.cmd.js +10 -15
- package/dist/cmds/write-tsconfig.cmd.js.map +1 -1
- package/dist/exceptions/transformer-not-found.js +1 -1
- package/dist/exceptions/transformer-not-found.js.map +1 -1
- package/dist/export-identifier.js +4 -9
- package/dist/export-identifier.js.map +1 -1
- package/dist/{preview-1694575035715.js → preview-1694624356552.js} +2 -2
- package/dist/remove-types-task.js +7 -13
- package/dist/remove-types-task.js.map +1 -1
- package/dist/schema-extractor-context.js +7 -18
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/schema-transformer.plugin.js +5 -10
- package/dist/schema-transformer.plugin.js.map +1 -1
- package/dist/sourceFileTransformers/class.js +1 -1
- package/dist/sourceFileTransformers/class.js.map +1 -1
- package/dist/sourceFileTransformers/empty-line-encoder.js +8 -14
- package/dist/sourceFileTransformers/empty-line-encoder.js.map +1 -1
- package/dist/sourceFileTransformers/export.js +1 -4
- package/dist/sourceFileTransformers/export.js.map +1 -1
- package/dist/sourceFileTransformers/expression-statement.js +1 -1
- package/dist/sourceFileTransformers/expression-statement.js.map +1 -1
- package/dist/sourceFileTransformers/function.js +4 -5
- package/dist/sourceFileTransformers/function.js.map +1 -1
- package/dist/sourceFileTransformers/import.js +1 -4
- package/dist/sourceFileTransformers/import.js.map +1 -1
- package/dist/sourceFileTransformers/interface.js +1 -1
- package/dist/sourceFileTransformers/interface.js.map +1 -1
- package/dist/sourceFileTransformers/replaceName.js +0 -4
- package/dist/sourceFileTransformers/replaceName.js.map +1 -1
- package/dist/sourceFileTransformers/transform.js +2 -7
- package/dist/sourceFileTransformers/transform.js.map +1 -1
- package/dist/sourceFileTransformers/type-reference.js +1 -1
- package/dist/sourceFileTransformers/type-reference.js.map +1 -1
- package/dist/sourceFileTransformers/typeAlias.js +1 -1
- package/dist/sourceFileTransformers/typeAlias.js.map +1 -1
- package/dist/sourceFileTransformers/variable.js +1 -1
- package/dist/sourceFileTransformers/variable.js.map +1 -1
- package/dist/transform-source-file.spec.js +1 -3
- package/dist/transform-source-file.spec.js.map +1 -1
- package/dist/transformers/array-type.js +1 -2
- package/dist/transformers/array-type.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 +5 -12
- package/dist/transformers/class-declaration.js.map +1 -1
- package/dist/transformers/conditional-type.js +0 -1
- package/dist/transformers/conditional-type.js.map +1 -1
- package/dist/transformers/constructor.js +1 -2
- 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-assignment.js +0 -1
- package/dist/transformers/export-assignment.js.map +1 -1
- package/dist/transformers/export-declaration.js +0 -2
- package/dist/transformers/export-declaration.js.map +1 -1
- package/dist/transformers/expression-statement.js +1 -2
- package/dist/transformers/expression-statement.js.map +1 -1
- package/dist/transformers/function-like.js +1 -2
- 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 +0 -1
- package/dist/transformers/import-declaration.js.map +1 -1
- package/dist/transformers/index-signature.js +1 -2
- package/dist/transformers/index-signature.js.map +1 -1
- package/dist/transformers/indexed-access-type.js +0 -1
- package/dist/transformers/indexed-access-type.js.map +1 -1
- package/dist/transformers/interface-declaration.js +5 -12
- package/dist/transformers/interface-declaration.js.map +1 -1
- package/dist/transformers/intersection-type.js +1 -2
- package/dist/transformers/intersection-type.js.map +1 -1
- package/dist/transformers/keyword-type.js +0 -1
- package/dist/transformers/keyword-type.js.map +1 -1
- package/dist/transformers/literal-type.js +1 -2
- package/dist/transformers/literal-type.js.map +1 -1
- package/dist/transformers/module-declaration.js +1 -2
- package/dist/transformers/module-declaration.js.map +1 -1
- package/dist/transformers/named-tuple.js +0 -1
- package/dist/transformers/named-tuple.js.map +1 -1
- package/dist/transformers/parameter.js +1 -2
- package/dist/transformers/parameter.js.map +1 -1
- package/dist/transformers/parenthesized-type.js +0 -1
- package/dist/transformers/parenthesized-type.js.map +1 -1
- package/dist/transformers/property-declaration.js +0 -1
- package/dist/transformers/property-declaration.js.map +1 -1
- package/dist/transformers/set-accessor.js +1 -2
- package/dist/transformers/set-accessor.js.map +1 -1
- package/dist/transformers/source-file-transformer.js +1 -3
- package/dist/transformers/source-file-transformer.js.map +1 -1
- package/dist/transformers/template-literal-type-span.js +0 -1
- package/dist/transformers/template-literal-type-span.js.map +1 -1
- package/dist/transformers/template-literal-type.js +1 -2
- package/dist/transformers/template-literal-type.js.map +1 -1
- package/dist/transformers/this-type.js +0 -1
- package/dist/transformers/this-type.js.map +1 -1
- package/dist/transformers/tuple-type.js +1 -2
- package/dist/transformers/tuple-type.js.map +1 -1
- package/dist/transformers/type-alias.js +1 -2
- package/dist/transformers/type-alias.js.map +1 -1
- package/dist/transformers/type-literal.js +1 -2
- package/dist/transformers/type-literal.js.map +1 -1
- package/dist/transformers/type-operator.js +0 -1
- package/dist/transformers/type-operator.js.map +1 -1
- package/dist/transformers/type-predicate.js +0 -1
- package/dist/transformers/type-predicate.js.map +1 -1
- package/dist/transformers/type-query.js +1 -2
- package/dist/transformers/type-query.js.map +1 -1
- package/dist/transformers/type-reference.js +1 -2
- package/dist/transformers/type-reference.js.map +1 -1
- package/dist/transformers/union-type.js +1 -2
- package/dist/transformers/union-type.js.map +1 -1
- package/dist/transformers/utils/jsdoc-to-doc-schema.js +0 -1
- package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -1
- package/dist/transformers/utils/parse-type-from-quick-info.js +0 -4
- package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
- package/dist/transformers/variable-declaration.js +1 -2
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/transformers/variable-statement.js +1 -2
- package/dist/transformers/variable-statement.js.map +1 -1
- package/dist/tsconfig-writer.js +1 -6
- package/dist/tsconfig-writer.js.map +1 -1
- package/dist/typescript.compiler.js +13 -23
- package/dist/typescript.compiler.js.map +1 -1
- package/dist/typescript.compiler.spec.js +5 -9
- package/dist/typescript.compiler.spec.js.map +1 -1
- package/dist/typescript.composition.js +1 -1
- package/dist/typescript.composition.js.map +1 -1
- package/dist/typescript.extractor.js +5 -11
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.main.runtime.js +8 -16
- package/dist/typescript.main.runtime.js.map +1 -1
- package/dist/typescript.parser.js +5 -10
- package/dist/typescript.parser.js.map +1 -1
- package/dist/typescript.parser.spec.js +1 -1
- package/dist/typescript.parser.spec.js.map +1 -1
- package/package.json +19 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["UNRESOLVED","exports","parseTypeFromQuickInfo","quickInfo","_quickInfo$body","body","displayString","splitByColon","split","kind","replace","tail","join","trim","length","firstLine","splitBySpace","typeName","splitByEqual","typeColonIndex","indexOf","slice","parseReturnTypeFromQuickInfo","typeStr","array"],"sources":["parse-type-from-quick-info.ts"],"sourcesContent":["// eslint-disable-next-line import/no-unresolved\nimport protocol from 'typescript/lib/protocol';\n\nexport const UNRESOLVED = '<<unresolved>>';\n\n/**\n * try to parse the type from the quickinfo.\n * this is an error-prone process, we do our best here.\n *\n * an example of a function with many \":\"\n * `export function getObj(a: string, func: (b: number) => {}) { return { a: 1, b: 2 } };`\n * which produce the following quickinfo:\n * ```ts\n * function getObj(a: string, func: (b: number) => {}): {\n * a: number;\n * b: number;\n * }\n * ```\n *\n * some examples of quickinfo:\n *\n * function ts.signatureToDisplayParts(typechecker: TypeChecker, signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags): SymbolDisplayPart[]\n *\n * const enum ts.TypeFormatFlags\n *\n * (method) ts.TypeChecker.writeSignature(signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags | undefined, kind?: SignatureKind | undefined, writer?: EmitTextWriter | undefined): string\n *\n * const obj: {\n * a: number;\n * b: number;\n * }\n *\n * function getObj(a: string): {\n * a: number;\n * b: number;\n * }\n */\nexport function parseTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo?.body?.displayString) return '';\n const displayString = quickInfo.body.displayString;\n const splitByColon = displayString.split(':');\n switch (quickInfo.body.kind) {\n case 'type parameter':\n // (type parameter) T in concat<T, K, V>(array1: T[], array2: T[]): T[]\n return displayString.replace(`(${quickInfo.body.kind}) `, '').split(' ')[0];\n case 'const':\n case 'property':\n case 'let':\n case 'getter':\n case 'var': {\n const [, ...tail] = splitByColon;\n return tail.join(':').trim();\n }\n case 'method':\n case 'function': {\n const split = displayString.split('): ');\n if (split.length !== 2) {\n // it's hard to determine where the return-type is. so it's better to show unresolved.\n // maybe, in the UI, in this case, it's best to show the signature.\n // e.g.\n // (method) IssuesList.getIssue<T extends ComponentIssue>(IssueClass: {\n // new (): T;\n // }): T | undefined\n return UNRESOLVED;\n }\n return split[1].trim();\n }\n case 'alias': {\n // e.g. (alias) class BuilderService\\nimport BuilderService\n // e.g. '(alias) type Serializable = {\\n' +\n // ' toString(): string;\\n' +\n // '}\\n' +\n // 'import Serializable'\n const firstLine = displayString.split('\\n')[0];\n const splitBySpace = firstLine.trim().split(' ');\n // first two are alias keyword and alias type\n const [, , typeName] = splitBySpace;\n return typeName;\n }\n case 'type': {\n // e.g. `type TaskSlot = SlotRegistry<BuildTask[]>`\n const splitByEqual = displayString.split('=');\n const [, ...tail] = splitByEqual;\n return tail.join('=').trim();\n }\n case 'parameter': {\n const typeColonIndex = displayString.indexOf(':');\n return displayString.slice(typeColonIndex + 1).trim();\n }\n default:\n return splitByColon[splitByColon.length - 1].trim();\n }\n}\n\nexport function parseReturnTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo) return '';\n const typeStr = parseTypeFromQuickInfo(quickInfo);\n const array = typeStr.split('=>');\n return array[array.length - 1].trim();\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["UNRESOLVED","exports","parseTypeFromQuickInfo","quickInfo","_quickInfo$body","body","displayString","splitByColon","split","kind","replace","tail","join","trim","length","firstLine","splitBySpace","typeName","splitByEqual","typeColonIndex","indexOf","slice","parseReturnTypeFromQuickInfo","typeStr","array"],"sources":["parse-type-from-quick-info.ts"],"sourcesContent":["// eslint-disable-next-line import/no-unresolved\nimport protocol from 'typescript/lib/protocol';\n\nexport const UNRESOLVED = '<<unresolved>>';\n\n/**\n * try to parse the type from the quickinfo.\n * this is an error-prone process, we do our best here.\n *\n * an example of a function with many \":\"\n * `export function getObj(a: string, func: (b: number) => {}) { return { a: 1, b: 2 } };`\n * which produce the following quickinfo:\n * ```ts\n * function getObj(a: string, func: (b: number) => {}): {\n * a: number;\n * b: number;\n * }\n * ```\n *\n * some examples of quickinfo:\n *\n * function ts.signatureToDisplayParts(typechecker: TypeChecker, signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags): SymbolDisplayPart[]\n *\n * const enum ts.TypeFormatFlags\n *\n * (method) ts.TypeChecker.writeSignature(signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags | undefined, kind?: SignatureKind | undefined, writer?: EmitTextWriter | undefined): string\n *\n * const obj: {\n * a: number;\n * b: number;\n * }\n *\n * function getObj(a: string): {\n * a: number;\n * b: number;\n * }\n */\nexport function parseTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo?.body?.displayString) return '';\n const displayString = quickInfo.body.displayString;\n const splitByColon = displayString.split(':');\n switch (quickInfo.body.kind) {\n case 'type parameter':\n // (type parameter) T in concat<T, K, V>(array1: T[], array2: T[]): T[]\n return displayString.replace(`(${quickInfo.body.kind}) `, '').split(' ')[0];\n case 'const':\n case 'property':\n case 'let':\n case 'getter':\n case 'var': {\n const [, ...tail] = splitByColon;\n return tail.join(':').trim();\n }\n case 'method':\n case 'function': {\n const split = displayString.split('): ');\n if (split.length !== 2) {\n // it's hard to determine where the return-type is. so it's better to show unresolved.\n // maybe, in the UI, in this case, it's best to show the signature.\n // e.g.\n // (method) IssuesList.getIssue<T extends ComponentIssue>(IssueClass: {\n // new (): T;\n // }): T | undefined\n return UNRESOLVED;\n }\n return split[1].trim();\n }\n case 'alias': {\n // e.g. (alias) class BuilderService\\nimport BuilderService\n // e.g. '(alias) type Serializable = {\\n' +\n // ' toString(): string;\\n' +\n // '}\\n' +\n // 'import Serializable'\n const firstLine = displayString.split('\\n')[0];\n const splitBySpace = firstLine.trim().split(' ');\n // first two are alias keyword and alias type\n const [, , typeName] = splitBySpace;\n return typeName;\n }\n case 'type': {\n // e.g. `type TaskSlot = SlotRegistry<BuildTask[]>`\n const splitByEqual = displayString.split('=');\n const [, ...tail] = splitByEqual;\n return tail.join('=').trim();\n }\n case 'parameter': {\n const typeColonIndex = displayString.indexOf(':');\n return displayString.slice(typeColonIndex + 1).trim();\n }\n default:\n return splitByColon[splitByColon.length - 1].trim();\n }\n}\n\nexport function parseReturnTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo) return '';\n const typeStr = parseTypeFromQuickInfo(quickInfo);\n const array = typeStr.split('=>');\n return array[array.length - 1].trim();\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
require("core-js/modules/es.promise.js");
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -41,6 +39,7 @@ function _identifier() {
|
|
|
41
39
|
};
|
|
42
40
|
return data;
|
|
43
41
|
}
|
|
42
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
44
43
|
class VariableDeclaration {
|
|
45
44
|
predicate(node) {
|
|
46
45
|
return node.kind === _typescript().default.SyntaxKind.VariableDeclaration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","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","args","pMapSeries","parameters","param","computeSchema","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","typeStr","parseReturnTypeFromQuickInfo","parseTypeFromQuickInfo","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\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 { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\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 args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\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 displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n }\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableLikeSchema(location, name, displaySig, type, false, doc);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","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","args","pMapSeries","parameters","param","computeSchema","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","typeStr","parseReturnTypeFromQuickInfo","parseTypeFromQuickInfo","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\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 { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\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 args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\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 displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n }\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableLikeSchema(location, name, displaySig, type, false, doc);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
require("core-js/modules/es.promise.js");
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -41,6 +39,7 @@ function _identifier() {
|
|
|
41
39
|
};
|
|
42
40
|
return data;
|
|
43
41
|
}
|
|
42
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
44
43
|
/**
|
|
45
44
|
* variable statement is a collection of variable declarations.
|
|
46
45
|
* e.g. `export const a = 1, b = () => {}, c = {};`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semanticsEntities","data","require","_lodash","_pMapSeries","_interopRequireDefault","_typescript","_identifier","VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","Identifier","name","getText","getSourceFile","fileName","transform","context","schemas","pMapSeries","schema","visitDefinition","ModuleSchema","getLocation","compact","exports"],"sources":["variable-statement.ts"],"sourcesContent":["import { SchemaNode, ModuleSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { compact } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport ts, { Node, VariableStatement } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\n/**\n * variable statement is a collection of variable declarations.\n * e.g. `export const a = 1, b = () => {}, c = {};`\n */\nexport class VariableStatementTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableStatement;\n }\n\n async getIdentifiers(node: VariableStatement) {\n return node.declarationList.declarations.map((dec) => {\n return new Identifier(dec.name.getText(), dec.getSourceFile().fileName);\n });\n }\n\n async transform(node: VariableStatement, context: SchemaExtractorContext): Promise<SchemaNode> {\n const schemas = await pMapSeries(node.declarationList.declarations, async (dec) => {\n // this will get the schema from variable-declaration\n const schema = await context.visitDefinition(dec.name);\n return schema;\n });\n return new ModuleSchema(context.getLocation(node), compact(schemas), []);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_semanticsEntities","data","require","_lodash","_pMapSeries","_interopRequireDefault","_typescript","_identifier","obj","__esModule","default","VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","Identifier","name","getText","getSourceFile","fileName","transform","context","schemas","pMapSeries","schema","visitDefinition","ModuleSchema","getLocation","compact","exports"],"sources":["variable-statement.ts"],"sourcesContent":["import { SchemaNode, ModuleSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { compact } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport ts, { Node, VariableStatement } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\n\n/**\n * variable statement is a collection of variable declarations.\n * e.g. `export const a = 1, b = () => {}, c = {};`\n */\nexport class VariableStatementTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableStatement;\n }\n\n async getIdentifiers(node: VariableStatement) {\n return node.declarationList.declarations.map((dec) => {\n return new Identifier(dec.name.getText(), dec.getSourceFile().fileName);\n });\n }\n\n async transform(node: VariableStatement, context: SchemaExtractorContext): Promise<SchemaNode> {\n const schemas = await pMapSeries(node.declarationList.declarations, async (dec) => {\n // this will get the schema from variable-declaration\n const schema = await context.visitDefinition(dec.name);\n return schema;\n });\n return new ModuleSchema(context.getLocation(node), compact(schemas), []);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,mBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,kBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,QAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAI,sBAAA,CAAAH,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,YAAA;EAAA,MAAAL,IAAA,GAAAI,sBAAA,CAAAH,OAAA;EAAAI,WAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2C,SAAAI,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C;AACA;AACA;AACA;AACO,MAAMG,4BAA4B,CAA8B;EACrEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,iBAAiB;EACtD;EAEA,MAAMC,cAAcA,CAACL,IAAuB,EAAE;IAC5C,OAAOA,IAAI,CAACM,eAAe,CAACC,YAAY,CAACC,GAAG,CAAEC,GAAG,IAAK;MACpD,OAAO,KAAIC,wBAAU,EAACD,GAAG,CAACE,IAAI,CAACC,OAAO,CAAC,CAAC,EAAEH,GAAG,CAACI,aAAa,CAAC,CAAC,CAACC,QAAQ,CAAC;IACzE,CAAC,CAAC;EACJ;EAEA,MAAMC,SAASA,CAACf,IAAuB,EAAEgB,OAA+B,EAAuB;IAC7F,MAAMC,OAAO,GAAG,MAAM,IAAAC,qBAAU,EAAClB,IAAI,CAACM,eAAe,CAACC,YAAY,EAAE,MAAOE,GAAG,IAAK;MACjF;MACA,MAAMU,MAAM,GAAG,MAAMH,OAAO,CAACI,eAAe,CAACX,GAAG,CAACE,IAAI,CAAC;MACtD,OAAOQ,MAAM;IACf,CAAC,CAAC;IACF,OAAO,KAAIE,iCAAY,EAACL,OAAO,CAACM,WAAW,CAACtB,IAAI,CAAC,EAAE,IAAAuB,iBAAO,EAACN,OAAO,CAAC,EAAE,EAAE,CAAC;EAC1E;AACF;AAACO,OAAA,CAAA1B,4BAAA,GAAAA,4BAAA"}
|
package/dist/tsconfig-writer.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
require("core-js/modules/es.array.flat.js");
|
|
5
|
-
require("core-js/modules/es.array.iterator.js");
|
|
6
|
-
require("core-js/modules/es.array.unscopables.flat.js");
|
|
7
|
-
require("core-js/modules/es.promise.js");
|
|
8
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
9
3
|
Object.defineProperty(exports, "__esModule", {
|
|
10
4
|
value: true
|
|
11
5
|
});
|
|
@@ -60,6 +54,7 @@ function _() {
|
|
|
60
54
|
};
|
|
61
55
|
return data;
|
|
62
56
|
}
|
|
57
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
63
58
|
class TsconfigWriter {
|
|
64
59
|
constructor(workspace, logger) {
|
|
65
60
|
this.workspace = workspace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_yesno","_lodash","_exceptions","_chalk","_","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","_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,22 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
require("core-js/modules/es.array.iterator.js");
|
|
5
|
-
require("core-js/modules/es.promise.js");
|
|
6
|
-
require("core-js/modules/es.regexp.constructor.js");
|
|
7
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
8
|
-
require("core-js/modules/es.string.replace.js");
|
|
9
3
|
Object.defineProperty(exports, "__esModule", {
|
|
10
4
|
value: true
|
|
11
5
|
});
|
|
12
6
|
exports.TypescriptCompiler = void 0;
|
|
13
|
-
function _defineProperty2() {
|
|
14
|
-
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
_defineProperty2 = function () {
|
|
16
|
-
return data;
|
|
17
|
-
};
|
|
18
|
-
return data;
|
|
19
|
-
}
|
|
20
7
|
function _fsExtra() {
|
|
21
8
|
const data = _interopRequireDefault(require("fs-extra"));
|
|
22
9
|
_fsExtra = function () {
|
|
@@ -38,27 +25,30 @@ function _bitError() {
|
|
|
38
25
|
};
|
|
39
26
|
return data;
|
|
40
27
|
}
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
41
29
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
42
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (
|
|
30
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
31
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
32
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
33
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
43
34
|
class TypescriptCompiler {
|
|
44
35
|
constructor(id, logger, options, tsModule) {
|
|
45
|
-
var _this$options, _this$options$tsconfi;
|
|
46
36
|
this.id = id;
|
|
47
37
|
this.logger = logger;
|
|
48
38
|
this.options = options;
|
|
49
39
|
this.tsModule = tsModule;
|
|
50
|
-
(
|
|
51
|
-
(
|
|
52
|
-
(
|
|
53
|
-
(
|
|
54
|
-
(
|
|
55
|
-
(
|
|
40
|
+
_defineProperty(this, "distDir", void 0);
|
|
41
|
+
_defineProperty(this, "distGlobPatterns", void 0);
|
|
42
|
+
_defineProperty(this, "shouldCopyNonSupportedFiles", void 0);
|
|
43
|
+
_defineProperty(this, "artifactName", void 0);
|
|
44
|
+
_defineProperty(this, "displayName", 'TypeScript');
|
|
45
|
+
_defineProperty(this, "deleteDistDir", false);
|
|
56
46
|
this.distDir = options.distDir || 'dist';
|
|
57
47
|
this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];
|
|
58
48
|
this.shouldCopyNonSupportedFiles = typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;
|
|
59
49
|
this.artifactName = options.artifactName || 'dist';
|
|
60
|
-
|
|
61
|
-
|
|
50
|
+
this.options.tsconfig ||= {};
|
|
51
|
+
this.options.tsconfig.compilerOptions ||= {};
|
|
62
52
|
// mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion
|
|
63
53
|
this.options.tsconfig.compilerOptions.outDir = this.distDir;
|
|
64
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_bitError","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","TypescriptCompiler","constructor","id","logger","options","tsModule","_this$options","_this$options$tsconfi","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","undefined","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","Promise","all","types","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version","exports"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_path","_bitError","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","Promise","all","types","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version","exports"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
function _defineProperty2() {
|
|
5
|
-
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
-
_defineProperty2 = function () {
|
|
7
|
-
return data;
|
|
8
|
-
};
|
|
9
|
-
return data;
|
|
10
|
-
}
|
|
11
3
|
function _logger() {
|
|
12
4
|
const data = require("@teambit/logger");
|
|
13
5
|
_logger = function () {
|
|
@@ -50,8 +42,12 @@ function _typescript3() {
|
|
|
50
42
|
};
|
|
51
43
|
return data;
|
|
52
44
|
}
|
|
45
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
53
46
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
54
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (
|
|
47
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
48
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
49
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
50
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
55
51
|
const defaultOpts = {
|
|
56
52
|
tsconfig: {},
|
|
57
53
|
types: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_logger","data","require","_typescript","_interopRequireDefault","_chai","_path","_typescript2","_typescript3","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","
|
|
1
|
+
{"version":3,"names":["_logger","data","require","_typescript","_interopRequireDefault","_chai","_path","_typescript2","_typescript3","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","defaultOpts","tsconfig","types","describe","it","tsCompiler","getTsCompiler","expect","getDistPathBySrcPath","to","equal","path","join","isFileSupported","be","true","false","compileJsx","compileJs","opts","finalOpts","assign","TypescriptCompiler","TypescriptAspect","id","Logger","ts"],"sources":["typescript.compiler.spec.ts"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport ts from 'typescript';\nimport { expect } from 'chai';\nimport path from 'path';\nimport { TypescriptAspect } from './typescript.aspect';\n\nimport { TypescriptCompiler } from './typescript.compiler';\nimport type { TsCompilerOptionsWithoutTsConfig } from './compiler-options';\n\nconst defaultOpts = {\n tsconfig: {},\n types: [],\n};\n\ndescribe('TypescriptCompiler', () => {\n describe('getDistPathBySrcPath', () => {\n it('should replace the extension with .js and prepend the dist dir', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('index.ts')).to.equal(path.join('dist', 'index.js'));\n expect(tsCompiler.getDistPathBySrcPath('index.tsx')).to.equal(path.join('dist', 'index.js'));\n });\n it('should not replace the extension if the file is not supported', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('style.css')).to.equal(path.join('dist', 'style.css'));\n expect(tsCompiler.getDistPathBySrcPath('index.d.ts')).to.equal(path.join('dist', 'index.d.ts'));\n });\n });\n describe('isFileSupported', () => {\n it('should support .ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.ts')).to.be.true;\n });\n it('should support .tsx files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.tsx')).to.be.true;\n });\n it('should not support .jsx files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.false;\n });\n it('should not support .js files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.js')).to.be.false;\n });\n it('should support .jsx files when passing compileJsx', () => {\n const tsCompiler = getTsCompiler({ compileJsx: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.true;\n });\n it('should support .js files when passing compileJs', () => {\n const tsCompiler = getTsCompiler({ compileJs: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.js')).to.be.true;\n });\n it('should not support .d.ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.d.ts')).to.be.false;\n });\n });\n});\n\nfunction getTsCompiler(opts: TsCompilerOptionsWithoutTsConfig = defaultOpts) {\n const finalOpts = Object.assign({}, defaultOpts, opts);\n return new TypescriptCompiler(TypescriptAspect.id, new Logger('test'), finalOpts, ts);\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
@@ -12,6 +11,7 @@ function _react() {
|
|
|
12
11
|
};
|
|
13
12
|
return data;
|
|
14
13
|
}
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
const Logo = () => /*#__PURE__*/_react().default.createElement("div", {
|
|
16
16
|
style: {
|
|
17
17
|
height: '100%',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","data","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"names":["_react","data","_interopRequireDefault","require","obj","__esModule","default","Logo","createElement","style","height","display","justifyContent","width","src","exports"],"sources":["typescript.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/brands/logo-typescript.svg\" />\n </div>\n);\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0B,SAAAC,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEnB,MAAMG,IAAI,GAAGA,CAAA,kBAClBP,MAAA,GAAAM,OAAA,CAAAE,aAAA;EAAKC,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAM;IAAEC,OAAO,EAAE,MAAM;IAAEC,cAAc,EAAE;EAAS;AAAE,gBACxEZ,MAAA,GAAAM,OAAA,CAAAE,aAAA;EAAKC,KAAK,EAAE;IAAEI,KAAK,EAAE;EAAG,CAAE;EAACC,GAAG,EAAC;AAAmD,CAAE,CACjF,CACN;AAACC,OAAA,CAAAR,IAAA,GAAAA,IAAA"}
|
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
require("core-js/modules/es.array.iterator.js");
|
|
5
|
-
require("core-js/modules/es.promise.js");
|
|
6
3
|
Object.defineProperty(exports, "__esModule", {
|
|
7
4
|
value: true
|
|
8
5
|
});
|
|
9
6
|
exports.TypeScriptExtractor = void 0;
|
|
10
|
-
function _defineProperty2() {
|
|
11
|
-
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
-
_defineProperty2 = function () {
|
|
13
|
-
return data;
|
|
14
|
-
};
|
|
15
|
-
return data;
|
|
16
|
-
}
|
|
17
7
|
function _typescript() {
|
|
18
8
|
const data = _interopRequireWildcard(require("typescript"));
|
|
19
9
|
_typescript = function () {
|
|
@@ -84,8 +74,12 @@ function _typescript2() {
|
|
|
84
74
|
};
|
|
85
75
|
return data;
|
|
86
76
|
}
|
|
77
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
87
78
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
88
79
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
80
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
81
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
82
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
89
83
|
class TypeScriptExtractor {
|
|
90
84
|
constructor(tsconfig, schemaTransformerSlot, tsMain, rootTsserverPath, rootContextPath, depResolver, workspace, scope, aspectLoader, logger) {
|
|
91
85
|
this.tsconfig = tsconfig;
|
|
@@ -98,7 +92,7 @@ class TypeScriptExtractor {
|
|
|
98
92
|
this.scope = scope;
|
|
99
93
|
this.aspectLoader = aspectLoader;
|
|
100
94
|
this.logger = logger;
|
|
101
|
-
(
|
|
95
|
+
_defineProperty(this, "tsserver", undefined);
|
|
102
96
|
}
|
|
103
97
|
parseSourceFile(file) {
|
|
104
98
|
const sourceFile = _typescript().default.createSourceFile(file.path, file.contents.toString('utf8'), _typescript().default.ScriptTarget.Latest, true
|