@teambit/typescript 0.0.0-004aea01bc027e428dfd0f6583f49a1b8286bdd0
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/cmds/check-types.cmd.ts +81 -0
- package/dist/cmds/check-types.cmd.d.ts +35 -0
- package/dist/cmds/check-types.cmd.js +105 -0
- package/dist/cmds/check-types.cmd.js.map +1 -0
- package/dist/compiler-options.d.ts +22 -0
- package/dist/compiler-options.js +3 -0
- package/dist/compiler-options.js.map +1 -0
- package/dist/esm.mjs +21 -0
- package/dist/exceptions/index.d.ts +1 -0
- package/dist/exceptions/index.js +20 -0
- package/dist/exceptions/index.js.map +1 -0
- package/dist/exceptions/transformer-not-found.d.ts +8 -0
- package/dist/exceptions/transformer-not-found.js +26 -0
- package/dist/exceptions/transformer-not-found.js.map +1 -0
- package/dist/export-identifier.d.ts +6 -0
- package/dist/export-identifier.js +29 -0
- package/dist/export-identifier.js.map +1 -0
- package/dist/extractor-options.d.ts +26 -0
- package/dist/extractor-options.js +3 -0
- package/dist/extractor-options.js.map +1 -0
- package/dist/identifier-list.d.ts +7 -0
- package/dist/identifier-list.js +21 -0
- package/dist/identifier-list.js.map +1 -0
- package/dist/identifier.d.ts +11 -0
- package/dist/identifier.js +45 -0
- package/dist/identifier.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/preview-1760469561956.js +7 -0
- package/dist/remove-types-task.d.ts +12 -0
- package/dist/remove-types-task.js +64 -0
- package/dist/remove-types-task.js.map +1 -0
- package/dist/schema-extractor-context.d.ts +164 -0
- package/dist/schema-extractor-context.js +745 -0
- package/dist/schema-extractor-context.js.map +1 -0
- package/dist/schema-transformer.d.ts +19 -0
- package/dist/schema-transformer.js +3 -0
- package/dist/schema-transformer.js.map +1 -0
- package/dist/schema-transformer.plugin.d.ts +9 -0
- package/dist/schema-transformer.plugin.js +22 -0
- package/dist/schema-transformer.plugin.js.map +1 -0
- package/dist/sourceFileTransformers/class.d.ts +2 -0
- package/dist/sourceFileTransformers/class.js +57 -0
- package/dist/sourceFileTransformers/class.js.map +1 -0
- package/dist/sourceFileTransformers/empty-line-encoder.d.ts +14 -0
- package/dist/sourceFileTransformers/empty-line-encoder.js +62 -0
- package/dist/sourceFileTransformers/empty-line-encoder.js.map +1 -0
- package/dist/sourceFileTransformers/export.d.ts +2 -0
- package/dist/sourceFileTransformers/export.js +58 -0
- package/dist/sourceFileTransformers/export.js.map +1 -0
- package/dist/sourceFileTransformers/expression-statement.d.ts +2 -0
- package/dist/sourceFileTransformers/expression-statement.js +58 -0
- package/dist/sourceFileTransformers/expression-statement.js.map +1 -0
- package/dist/sourceFileTransformers/function.d.ts +2 -0
- package/dist/sourceFileTransformers/function.js +119 -0
- package/dist/sourceFileTransformers/function.js.map +1 -0
- package/dist/sourceFileTransformers/import.d.ts +2 -0
- package/dist/sourceFileTransformers/import.js +71 -0
- package/dist/sourceFileTransformers/import.js.map +1 -0
- package/dist/sourceFileTransformers/index.d.ts +12 -0
- package/dist/sourceFileTransformers/index.js +137 -0
- package/dist/sourceFileTransformers/index.js.map +1 -0
- package/dist/sourceFileTransformers/interface.d.ts +2 -0
- package/dist/sourceFileTransformers/interface.js +50 -0
- package/dist/sourceFileTransformers/interface.js.map +1 -0
- package/dist/sourceFileTransformers/replaceName.d.ts +1 -0
- package/dist/sourceFileTransformers/replaceName.js +19 -0
- package/dist/sourceFileTransformers/replaceName.js.map +1 -0
- package/dist/sourceFileTransformers/transform.d.ts +12 -0
- package/dist/sourceFileTransformers/transform.js +76 -0
- package/dist/sourceFileTransformers/transform.js.map +1 -0
- package/dist/sourceFileTransformers/type-reference.d.ts +2 -0
- package/dist/sourceFileTransformers/type-reference.js +38 -0
- package/dist/sourceFileTransformers/type-reference.js.map +1 -0
- package/dist/sourceFileTransformers/typeAlias.d.ts +2 -0
- package/dist/sourceFileTransformers/typeAlias.js +41 -0
- package/dist/sourceFileTransformers/typeAlias.js.map +1 -0
- package/dist/sourceFileTransformers/variable.d.ts +2 -0
- package/dist/sourceFileTransformers/variable.js +41 -0
- package/dist/sourceFileTransformers/variable.js.map +1 -0
- package/dist/transform-source-file.spec.d.ts +1 -0
- package/dist/transform-source-file.spec.js +182 -0
- package/dist/transform-source-file.spec.js.map +1 -0
- package/dist/transformers/array-literal-expression.d.ts +10 -0
- package/dist/transformers/array-literal-expression.js +51 -0
- package/dist/transformers/array-literal-expression.js.map +1 -0
- package/dist/transformers/array-type.d.ts +10 -0
- package/dist/transformers/array-type.js +37 -0
- package/dist/transformers/array-type.js.map +1 -0
- package/dist/transformers/binding-element.d.ts +17 -0
- package/dist/transformers/binding-element.js +63 -0
- package/dist/transformers/binding-element.js.map +1 -0
- package/dist/transformers/class-declaration.d.ts +12 -0
- package/dist/transformers/class-declaration.js +116 -0
- package/dist/transformers/class-declaration.js.map +1 -0
- package/dist/transformers/conditional-type.d.ts +10 -0
- package/dist/transformers/conditional-type.js +38 -0
- package/dist/transformers/conditional-type.js.map +1 -0
- package/dist/transformers/constructor.d.ts +10 -0
- package/dist/transformers/constructor.js +49 -0
- package/dist/transformers/constructor.js.map +1 -0
- package/dist/transformers/decorator.d.ts +10 -0
- package/dist/transformers/decorator.js +54 -0
- package/dist/transformers/decorator.js.map +1 -0
- package/dist/transformers/enum-declaration.d.ts +10 -0
- package/dist/transformers/enum-declaration.js +60 -0
- package/dist/transformers/enum-declaration.js.map +1 -0
- package/dist/transformers/export-assignment.d.ts +14 -0
- package/dist/transformers/export-assignment.js +54 -0
- package/dist/transformers/export-assignment.js.map +1 -0
- package/dist/transformers/export-declaration.d.ts +10 -0
- package/dist/transformers/export-declaration.js +154 -0
- package/dist/transformers/export-declaration.js.map +1 -0
- package/dist/transformers/expression-statement.d.ts +10 -0
- package/dist/transformers/expression-statement.js +36 -0
- package/dist/transformers/expression-statement.js.map +1 -0
- package/dist/transformers/function-like.d.ts +11 -0
- package/dist/transformers/function-like.js +81 -0
- package/dist/transformers/function-like.js.map +1 -0
- package/dist/transformers/get-accessor.d.ts +10 -0
- package/dist/transformers/get-accessor.js +46 -0
- package/dist/transformers/get-accessor.js.map +1 -0
- package/dist/transformers/import-declaration.d.ts +10 -0
- package/dist/transformers/import-declaration.js +72 -0
- package/dist/transformers/import-declaration.js.map +1 -0
- package/dist/transformers/index-signature.d.ts +10 -0
- package/dist/transformers/index-signature.js +41 -0
- package/dist/transformers/index-signature.js.map +1 -0
- package/dist/transformers/index.d.ts +43 -0
- package/dist/transformers/index.js +566 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/indexed-access-type.d.ts +10 -0
- package/dist/transformers/indexed-access-type.js +36 -0
- package/dist/transformers/indexed-access-type.js.map +1 -0
- package/dist/transformers/interface-declaration.d.ts +11 -0
- package/dist/transformers/interface-declaration.js +86 -0
- package/dist/transformers/interface-declaration.js.map +1 -0
- package/dist/transformers/intersection-type.d.ts +10 -0
- package/dist/transformers/intersection-type.js +47 -0
- package/dist/transformers/intersection-type.js.map +1 -0
- package/dist/transformers/keyword-type.d.ts +13 -0
- package/dist/transformers/keyword-type.js +54 -0
- package/dist/transformers/keyword-type.js.map +1 -0
- package/dist/transformers/literal-type.d.ts +13 -0
- package/dist/transformers/literal-type.js +39 -0
- package/dist/transformers/literal-type.js.map +1 -0
- package/dist/transformers/literal-value.d.ts +12 -0
- package/dist/transformers/literal-value.js +35 -0
- package/dist/transformers/literal-value.js.map +1 -0
- package/dist/transformers/module-declaration.d.ts +10 -0
- package/dist/transformers/module-declaration.js +36 -0
- package/dist/transformers/module-declaration.js.map +1 -0
- package/dist/transformers/named-tuple.d.ts +10 -0
- package/dist/transformers/named-tuple.js +37 -0
- package/dist/transformers/named-tuple.js.map +1 -0
- package/dist/transformers/object-literal-expression.d.ts +9 -0
- package/dist/transformers/object-literal-expression.js +51 -0
- package/dist/transformers/object-literal-expression.js.map +1 -0
- package/dist/transformers/parameter.d.ts +14 -0
- package/dist/transformers/parameter.js +109 -0
- package/dist/transformers/parameter.js.map +1 -0
- package/dist/transformers/parenthesized-type.d.ts +10 -0
- package/dist/transformers/parenthesized-type.js +35 -0
- package/dist/transformers/parenthesized-type.js.map +1 -0
- package/dist/transformers/property-assignment.d.ts +9 -0
- package/dist/transformers/property-assignment.js +39 -0
- package/dist/transformers/property-assignment.js.map +1 -0
- package/dist/transformers/property-declaration.d.ts +11 -0
- package/dist/transformers/property-declaration.js +56 -0
- package/dist/transformers/property-declaration.js.map +1 -0
- package/dist/transformers/set-accessor.d.ts +10 -0
- package/dist/transformers/set-accessor.js +44 -0
- package/dist/transformers/set-accessor.js.map +1 -0
- package/dist/transformers/source-file-transformer.d.ts +15 -0
- package/dist/transformers/source-file-transformer.js +108 -0
- package/dist/transformers/source-file-transformer.js.map +1 -0
- package/dist/transformers/template-literal-type-span.d.ts +10 -0
- package/dist/transformers/template-literal-type-span.js +36 -0
- package/dist/transformers/template-literal-type-span.js.map +1 -0
- package/dist/transformers/template-literal-type.d.ts +10 -0
- package/dist/transformers/template-literal-type.js +44 -0
- package/dist/transformers/template-literal-type.js.map +1 -0
- package/dist/transformers/this-type.d.ts +10 -0
- package/dist/transformers/this-type.js +34 -0
- package/dist/transformers/this-type.js.map +1 -0
- package/dist/transformers/tuple-type.d.ts +10 -0
- package/dist/transformers/tuple-type.js +46 -0
- package/dist/transformers/tuple-type.js.map +1 -0
- package/dist/transformers/type-alias.d.ts +11 -0
- package/dist/transformers/type-alias.js +48 -0
- package/dist/transformers/type-alias.js.map +1 -0
- package/dist/transformers/type-literal.d.ts +14 -0
- package/dist/transformers/type-literal.js +48 -0
- package/dist/transformers/type-literal.js.map +1 -0
- package/dist/transformers/type-operator.d.ts +15 -0
- package/dist/transformers/type-operator.js +51 -0
- package/dist/transformers/type-operator.js.map +1 -0
- package/dist/transformers/type-predicate.d.ts +10 -0
- package/dist/transformers/type-predicate.js +37 -0
- package/dist/transformers/type-predicate.js.map +1 -0
- package/dist/transformers/type-query.d.ts +13 -0
- package/dist/transformers/type-query.js +41 -0
- package/dist/transformers/type-query.js.map +1 -0
- package/dist/transformers/type-reference.d.ts +17 -0
- package/dist/transformers/type-reference.js +58 -0
- package/dist/transformers/type-reference.js.map +1 -0
- package/dist/transformers/union-type.d.ts +10 -0
- package/dist/transformers/union-type.js +47 -0
- package/dist/transformers/union-type.js.map +1 -0
- package/dist/transformers/utils/jsdoc-to-doc-schema.d.ts +5 -0
- package/dist/transformers/utils/jsdoc-to-doc-schema.js +114 -0
- package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -0
- package/dist/transformers/utils/parse-type-from-quick-info.d.ts +36 -0
- package/dist/transformers/utils/parse-type-from-quick-info.js +111 -0
- package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -0
- package/dist/transformers/variable-declaration.d.ts +11 -0
- package/dist/transformers/variable-declaration.js +102 -0
- package/dist/transformers/variable-declaration.js.map +1 -0
- package/dist/transformers/variable-statement.d.ts +14 -0
- package/dist/transformers/variable-statement.js +67 -0
- package/dist/transformers/variable-statement.js.map +1 -0
- package/dist/tsconfig.default.json +25 -0
- package/dist/typescript.aspect.d.ts +2 -0
- package/dist/typescript.aspect.js +18 -0
- package/dist/typescript.aspect.js.map +1 -0
- package/dist/typescript.composition.d.ts +1 -0
- package/dist/typescript.composition.js +29 -0
- package/dist/typescript.composition.js.map +1 -0
- package/dist/typescript.docs.mdx +8 -0
- package/dist/typescript.extractor.d.ts +52 -0
- package/dist/typescript.extractor.js +254 -0
- package/dist/typescript.extractor.js.map +1 -0
- package/dist/typescript.main.runtime.d.ts +130 -0
- package/dist/typescript.main.runtime.js +400 -0
- package/dist/typescript.main.runtime.js.map +1 -0
- package/dist/typescript.parser.d.ts +13 -0
- package/dist/typescript.parser.js +142 -0
- package/dist/typescript.parser.js.map +1 -0
- package/dist/typescript.parser.spec.d.ts +1 -0
- package/dist/typescript.parser.spec.js +189 -0
- package/dist/typescript.parser.spec.js.map +1 -0
- package/esm.mjs +21 -0
- package/exceptions/index.ts +1 -0
- package/exceptions/transformer-not-found.ts +20 -0
- package/package.json +86 -0
- package/sourceFileTransformers/class.ts +73 -0
- package/sourceFileTransformers/empty-line-encoder.ts +56 -0
- package/sourceFileTransformers/export.ts +65 -0
- package/sourceFileTransformers/expression-statement.ts +48 -0
- package/sourceFileTransformers/function.ts +170 -0
- package/sourceFileTransformers/import.ts +101 -0
- package/sourceFileTransformers/index.ts +14 -0
- package/sourceFileTransformers/interface.ts +41 -0
- package/sourceFileTransformers/replaceName.ts +11 -0
- package/sourceFileTransformers/transform.ts +70 -0
- package/sourceFileTransformers/type-reference.ts +19 -0
- package/sourceFileTransformers/typeAlias.ts +25 -0
- package/sourceFileTransformers/variable.ts +25 -0
- package/transformers/array-literal-expression.ts +31 -0
- package/transformers/array-type.ts +22 -0
- package/transformers/binding-element.ts +35 -0
- package/transformers/class-declaration.ts +109 -0
- package/transformers/conditional-type.ts +24 -0
- package/transformers/constructor.ts +37 -0
- package/transformers/decorator.ts +30 -0
- package/transformers/enum-declaration.ts +32 -0
- package/transformers/export-assignment.ts +48 -0
- package/transformers/export-declaration.ts +182 -0
- package/transformers/expression-statement.ts +21 -0
- package/transformers/function-like.ts +72 -0
- package/transformers/get-accessor.ts +25 -0
- package/transformers/import-declaration.ts +57 -0
- package/transformers/index-signature.ts +27 -0
- package/transformers/index.ts +43 -0
- package/transformers/indexed-access-type.ts +22 -0
- package/transformers/interface-declaration.ts +68 -0
- package/transformers/intersection-type.ts +26 -0
- package/transformers/keyword-type.ts +40 -0
- package/transformers/literal-type.ts +24 -0
- package/transformers/literal-value.ts +40 -0
- package/transformers/module-declaration.ts +21 -0
- package/transformers/named-tuple.ts +23 -0
- package/transformers/object-literal-expression.ts +29 -0
- package/transformers/parameter.ts +115 -0
- package/transformers/parenthesized-type.ts +21 -0
- package/transformers/property-assignment.ts +24 -0
- package/transformers/property-declaration.ts +35 -0
- package/transformers/set-accessor.ts +27 -0
- package/transformers/source-file-transformer.ts +95 -0
- package/transformers/template-literal-type-span.ts +22 -0
- package/transformers/template-literal-type.ts +26 -0
- package/transformers/this-type.ts +20 -0
- package/transformers/tuple-type.ts +25 -0
- package/transformers/type-alias.ts +27 -0
- package/transformers/type-literal.ts +27 -0
- package/transformers/type-operator.ts +38 -0
- package/transformers/type-predicate.ts +23 -0
- package/transformers/type-query.ts +26 -0
- package/transformers/type-reference.ts +37 -0
- package/transformers/union-type.ts +26 -0
- package/transformers/utils/jsdoc-to-doc-schema.ts +114 -0
- package/transformers/utils/parse-type-from-quick-info.ts +99 -0
- package/transformers/variable-declaration.ts +111 -0
- package/transformers/variable-statement.ts +34 -0
- package/types/asset.d.ts +41 -0
- package/types/style.d.ts +42 -0
- package/typescript.composition.tsx +7 -0
- package/typescript.docs.mdx +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_semanticsEntities","data","require","_fsExtra","_typescript","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exportModels","statements","forEach","statement","ts","isExportAssignment","isExportDeclaration","exportClause","isNamedExports","elements","element","name","isIdentifier","escapedText","toString","text","push","Export","get","isNamespaceExport","statementModifiers","canHaveModifiers","getModifiers","undefined","some","modifier","kind","SyntaxKind","ExportKeyword","isVariableStatement","child","declarationList","declarations","isFunctionDeclaration","isClassDeclaration","withoutEmpty","filter","exportModel","parseModule","modulePath","content","ast","createSourceFile","readFileSync","ScriptTarget","Latest","moduleExports","exportStaticProperties","Map","isExpressionStatement","isBinaryExpression","expression","operatorToken","EqualsToken","isPropertyAccessExpression","left","targetName","propertyName","has","set","existingProperties","isStringLiteral","right","isNumericLiteral","UndefinedKeyword","NullKeyword","TrueKeyword","FalseKeyword","err","logger","error","constructor","exports"],"sources":["typescript.parser.ts"],"sourcesContent":["import type { Parser } from '@teambit/schema';\nimport type { StaticProperties } from '@teambit/semantics.entities.semantic-schema';\nimport { Export } from '@teambit/semantics.entities.semantic-schema';\nimport type { Logger } from '@teambit/logger';\nimport { readFileSync } from 'fs-extra';\nimport ts from 'typescript';\n\nexport class TypeScriptParser implements Parser {\n public extension = /^.*\\.(js|jsx|ts|tsx)$/;\n\n getExports(sourceFile: ts.SourceFile): Export[] {\n const staticProperties = this.parseStaticProperties(sourceFile);\n const exportModels: Export[] = [];\n\n sourceFile.statements.forEach((statement) => {\n // export default\n if (ts.isExportAssignment(statement)) {\n // export default\n }\n\n // export declarations or re-exports\n if (ts.isExportDeclaration(statement)) {\n if (statement.exportClause) {\n if (ts.isNamedExports(statement.exportClause)) {\n statement.exportClause.elements.forEach((element) => {\n // Handle both Identifier and StringLiteral export names (TypeScript 5.6+ arbitrary module namespace identifiers)\n const name = ts.isIdentifier(element.name)\n ? element.name.escapedText.toString()\n : (element.name as ts.StringLiteral).text;\n if (name !== 'default') {\n exportModels.push(new Export(name, staticProperties.get(name)));\n }\n });\n }\n if (ts.isNamespaceExport(statement.exportClause)) {\n // Handle both Identifier and StringLiteral export names (TypeScript 5.6+ arbitrary module namespace identifiers)\n const name = ts.isIdentifier(statement.exportClause.name)\n ? statement.exportClause.name.escapedText.toString()\n : (statement.exportClause.name as ts.StringLiteral).text;\n exportModels.push(new Export(name, staticProperties.get(name)));\n }\n }\n }\n\n // export modifiers\n // - variable statement\n // - function statement\n // - class statement\n const statementModifiers = ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined;\n if (statementModifiers) {\n statementModifiers.some((modifier) => {\n if (modifier.kind === ts.SyntaxKind.ExportKeyword) {\n if (ts.isVariableStatement(statement)) {\n const child = statement.declarationList.declarations[0];\n if (ts.isIdentifier(child.name)) {\n const name = child.name.escapedText.toString();\n exportModels.push(new Export(name, staticProperties.get(name)));\n }\n } else if (ts.isFunctionDeclaration(statement)) {\n if (statement.name) {\n const name = statement.name.escapedText.toString();\n exportModels.push(new Export(name, staticProperties.get(name)));\n }\n } else if (ts.isClassDeclaration(statement)) {\n if (statement.name) {\n const name = statement.name.escapedText.toString();\n exportModels.push(new Export(name, staticProperties.get(name)));\n }\n }\n return true;\n }\n return false;\n });\n }\n });\n\n const withoutEmpty = exportModels.filter((exportModel) => exportModel !== undefined);\n return withoutEmpty;\n }\n\n parseModule(modulePath: string, content?: string) {\n const ast = ts.createSourceFile(modulePath, content ?? readFileSync(modulePath, 'utf8'), ts.ScriptTarget.Latest);\n\n const moduleExports = this.getExports(ast);\n return moduleExports;\n }\n\n parseStaticProperties(sourceFile: ts.SourceFile) {\n // TODO - should we also parse staticProperties inside classes / objects?\n\n const exportStaticProperties = new Map<string, StaticProperties>();\n\n sourceFile.statements.forEach((statement) => {\n try {\n if (!ts.isExpressionStatement(statement)) return;\n if (!ts.isBinaryExpression(statement.expression)) return;\n if (statement.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return;\n if (!ts.isPropertyAccessExpression(statement.expression.left)) return;\n if (!ts.isIdentifier(statement.expression.left.expression)) return;\n\n const targetName = statement.expression.left.expression.text;\n const propertyName = statement.expression.left.name.text;\n\n if (!exportStaticProperties.has(targetName)) exportStaticProperties.set(targetName, new Map());\n\n const existingProperties = exportStaticProperties.get(targetName);\n\n if (ts.isStringLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, statement.expression.right.text);\n } else if (ts.isNumericLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, +statement.expression.right.text);\n } else if (statement.expression.right.kind === ts.SyntaxKind.UndefinedKeyword) {\n existingProperties?.set(propertyName, undefined);\n } else if (statement.expression.right.kind === ts.SyntaxKind.NullKeyword) {\n existingProperties?.set(propertyName, null);\n } else if (statement.expression.right.kind === ts.SyntaxKind.TrueKeyword) {\n existingProperties?.set(propertyName, true);\n } else if (statement.expression.right.kind === ts.SyntaxKind.FalseKeyword) {\n existingProperties?.set(propertyName, false);\n }\n } catch (err) {\n this.logger?.error('failed parsing static properties', err);\n }\n });\n\n return exportStaticProperties;\n }\n\n constructor(private logger?: Logger | undefined) {}\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typescript() {
|
|
4
|
+
const data = _interopRequireDefault(require("typescript"));
|
|
5
|
+
_typescript = function () {
|
|
6
|
+
return data;
|
|
7
|
+
};
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
function _chai() {
|
|
11
|
+
const data = require("chai");
|
|
12
|
+
_chai = function () {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
function _typescript2() {
|
|
18
|
+
const data = require("./typescript.parser");
|
|
19
|
+
_typescript2 = function () {
|
|
20
|
+
return data;
|
|
21
|
+
};
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
25
|
+
describe('TypescriptParser', () => {
|
|
26
|
+
describe('getExports', () => {
|
|
27
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export
|
|
28
|
+
// https://www.typescriptlang.org/docs/handbook/modules.html#export
|
|
29
|
+
|
|
30
|
+
const exampleArrowFunction = `
|
|
31
|
+
export const arrow = () => { return 3; }
|
|
32
|
+
arrow.textProperty = "propertyValue";
|
|
33
|
+
`;
|
|
34
|
+
const exampleFunction = `
|
|
35
|
+
export function func() { return 3; }
|
|
36
|
+
func.textProperty = "propertyValue";
|
|
37
|
+
`;
|
|
38
|
+
const exampleClass = `
|
|
39
|
+
export class classy{ render() { return 3; } }
|
|
40
|
+
classy.textProperty = "propertyValue";
|
|
41
|
+
`;
|
|
42
|
+
const exampleStatement = `
|
|
43
|
+
function myFunction2 () { return 3; }
|
|
44
|
+
const myVariable2 = 3;
|
|
45
|
+
export { myFunction2, myVariable2 };
|
|
46
|
+
`;
|
|
47
|
+
const exampleRenamedStatement = `
|
|
48
|
+
function myFunction2 () { return 3; }
|
|
49
|
+
const myVariable2 = 3;
|
|
50
|
+
export { myFunction2, myVariable2 as myVariable2Alias };
|
|
51
|
+
`;
|
|
52
|
+
const exampleReExport = `
|
|
53
|
+
export { default as function1, function2 } from "bar.js";
|
|
54
|
+
`;
|
|
55
|
+
const exampleReExportDefault = `
|
|
56
|
+
export { default, function2 } from "bar.js";
|
|
57
|
+
`;
|
|
58
|
+
const exampleRenamedReExportAll = `
|
|
59
|
+
export * as ns from "mod";
|
|
60
|
+
`;
|
|
61
|
+
const exampleExportDefault = `
|
|
62
|
+
const a: number = 1
|
|
63
|
+
export default { a };
|
|
64
|
+
`;
|
|
65
|
+
it('should parse arrowFunctions', () => {
|
|
66
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleArrowFunction, _typescript().default.ScriptTarget.Latest);
|
|
67
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
68
|
+
const exportArrow = exports.find(x => x.identifier === 'arrow');
|
|
69
|
+
(0, _chai().expect)(exportArrow).to.exist;
|
|
70
|
+
});
|
|
71
|
+
it('should parse function exports', () => {
|
|
72
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleFunction, _typescript().default.ScriptTarget.Latest);
|
|
73
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
74
|
+
const exportFunction = exports.find(x => x.identifier === 'func');
|
|
75
|
+
(0, _chai().expect)(exportFunction).to.exist;
|
|
76
|
+
});
|
|
77
|
+
it('should parse classes', () => {
|
|
78
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleClass, _typescript().default.ScriptTarget.Latest);
|
|
79
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
80
|
+
const exportClass = exports.find(x => x.identifier === 'classy');
|
|
81
|
+
(0, _chai().expect)(exportClass).to.exist;
|
|
82
|
+
});
|
|
83
|
+
it('should parse declarations', () => {
|
|
84
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleStatement, _typescript().default.ScriptTarget.Latest);
|
|
85
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
86
|
+
const exportFunction = exports.find(x => x.identifier === 'myFunction2');
|
|
87
|
+
const exportVariable = exports.find(x => x.identifier === 'myVariable2');
|
|
88
|
+
(0, _chai().expect)(exportFunction).to.exist;
|
|
89
|
+
(0, _chai().expect)(exportVariable).to.exist;
|
|
90
|
+
});
|
|
91
|
+
it('should parse renamed declarations', () => {
|
|
92
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleRenamedStatement, _typescript().default.ScriptTarget.Latest);
|
|
93
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
94
|
+
const exportFunction = exports.find(x => x.identifier === 'myFunction2');
|
|
95
|
+
const exportVariable = exports.find(x => x.identifier === 'myVariable2Alias');
|
|
96
|
+
(0, _chai().expect)(exportFunction).to.exist;
|
|
97
|
+
(0, _chai().expect)(exportVariable).to.exist;
|
|
98
|
+
});
|
|
99
|
+
it('should parse re-exports', () => {
|
|
100
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleReExport, _typescript().default.ScriptTarget.Latest);
|
|
101
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
102
|
+
const exportFunction1 = exports.find(x => x.identifier === 'function1');
|
|
103
|
+
const exportFunction2 = exports.find(x => x.identifier === 'function2');
|
|
104
|
+
(0, _chai().expect)(exportFunction1).to.exist;
|
|
105
|
+
(0, _chai().expect)(exportFunction2).to.exist;
|
|
106
|
+
});
|
|
107
|
+
it('should parse re-exports with default', () => {
|
|
108
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleReExportDefault, _typescript().default.ScriptTarget.Latest);
|
|
109
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
110
|
+
const exportFunction1 = exports.find(x => x.identifier === 'default');
|
|
111
|
+
const exportFunction2 = exports.find(x => x.identifier === 'function2');
|
|
112
|
+
(0, _chai().expect)(exportFunction1).not.to.exist;
|
|
113
|
+
(0, _chai().expect)(exportFunction2).to.exist;
|
|
114
|
+
});
|
|
115
|
+
it('should parse renamed re-exports all', () => {
|
|
116
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleRenamedReExportAll, _typescript().default.ScriptTarget.Latest);
|
|
117
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
118
|
+
const exportFunction1 = exports.find(x => x.identifier === 'ns');
|
|
119
|
+
(0, _chai().expect)(exportFunction1).to.exist;
|
|
120
|
+
});
|
|
121
|
+
it('should parse default exports', () => {
|
|
122
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleExportDefault, _typescript().default.ScriptTarget.Latest);
|
|
123
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
124
|
+
(0, _chai().expect)(exports.length).to.equal(0);
|
|
125
|
+
});
|
|
126
|
+
describe('staticProperties', () => {
|
|
127
|
+
it('should include staticProperties, when on arrowFunctions', () => {
|
|
128
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleArrowFunction, _typescript().default.ScriptTarget.Latest);
|
|
129
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
130
|
+
const exportArrow = exports.find(x => x.identifier === 'arrow');
|
|
131
|
+
(0, _chai().expect)(exportArrow?.staticProperties?.get('textProperty')).to.equal('propertyValue');
|
|
132
|
+
});
|
|
133
|
+
it('should include staticProperties, when on regular functions', () => {
|
|
134
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleFunction, _typescript().default.ScriptTarget.Latest);
|
|
135
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
136
|
+
const exportClass = exports.find(x => x.identifier === 'func');
|
|
137
|
+
(0, _chai().expect)(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');
|
|
138
|
+
});
|
|
139
|
+
it('should include staticProperties, when on classes', () => {
|
|
140
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleClass, _typescript().default.ScriptTarget.Latest);
|
|
141
|
+
const exports = new (_typescript2().TypeScriptParser)().getExports(ast);
|
|
142
|
+
const exportClass = exports.find(x => x.identifier === 'classy');
|
|
143
|
+
(0, _chai().expect)(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('collectStaticProperties', () => {
|
|
148
|
+
const exampleFile = `
|
|
149
|
+
export const hello = () => { return 3; }
|
|
150
|
+
|
|
151
|
+
hello.text = "is";
|
|
152
|
+
hello.count = 3;
|
|
153
|
+
hello.nullish = null;
|
|
154
|
+
hello.undef = undefined;
|
|
155
|
+
hello.disable = false;
|
|
156
|
+
hello.enable = true;
|
|
157
|
+
hello.complextLiteral = \`what \${hello.text} it?\`;
|
|
158
|
+
hello.nonAssignedProperty += 'value';
|
|
159
|
+
`;
|
|
160
|
+
it('should parse all primitive values', () => {
|
|
161
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleFile, _typescript().default.ScriptTarget.Latest);
|
|
162
|
+
const staticProperties = new (_typescript2().TypeScriptParser)().parseStaticProperties(ast);
|
|
163
|
+
(0, _chai().expect)(staticProperties).to.exist;
|
|
164
|
+
const exportHello = staticProperties.get('hello');
|
|
165
|
+
(0, _chai().expect)(exportHello).to.exist;
|
|
166
|
+
(0, _chai().expect)(exportHello?.get('text')).to.equal('is');
|
|
167
|
+
(0, _chai().expect)(exportHello?.get('count')).to.equal(3);
|
|
168
|
+
(0, _chai().expect)(exportHello?.get('nullish')).to.equal(null);
|
|
169
|
+
(0, _chai().expect)(exportHello?.get('undef')).to.equal(undefined);
|
|
170
|
+
(0, _chai().expect)(exportHello?.get('disable')).to.equal(false);
|
|
171
|
+
(0, _chai().expect)(exportHello?.get('enable')).to.equal(true);
|
|
172
|
+
(0, _chai().expect)(exportHello?.has('complextLiteral')).to.be.false;
|
|
173
|
+
});
|
|
174
|
+
it('should skip non primitive values', () => {
|
|
175
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleFile, _typescript().default.ScriptTarget.Latest);
|
|
176
|
+
const staticProperties = new (_typescript2().TypeScriptParser)().parseStaticProperties(ast);
|
|
177
|
+
const exportHello = staticProperties.get('hello');
|
|
178
|
+
(0, _chai().expect)(exportHello?.has('complextLiteral')).to.be.false;
|
|
179
|
+
});
|
|
180
|
+
it('should skip non assignment statements', () => {
|
|
181
|
+
const ast = _typescript().default.createSourceFile('example.tsx', exampleFile, _typescript().default.ScriptTarget.Latest);
|
|
182
|
+
const staticProperties = new (_typescript2().TypeScriptParser)().parseStaticProperties(ast);
|
|
183
|
+
const exportHello = staticProperties.get('hello');
|
|
184
|
+
(0, _chai().expect)(exportHello?.has('nonAssignedProperty')).to.be.false;
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
//# sourceMappingURL=typescript.parser.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_typescript","data","_interopRequireDefault","require","_chai","_typescript2","e","__esModule","default","describe","exampleArrowFunction","exampleFunction","exampleClass","exampleStatement","exampleRenamedStatement","exampleReExport","exampleReExportDefault","exampleRenamedReExportAll","exampleExportDefault","it","ast","ts","createSourceFile","ScriptTarget","Latest","exports","TypeScriptParser","getExports","exportArrow","find","x","identifier","expect","to","exist","exportFunction","exportClass","exportVariable","exportFunction1","exportFunction2","not","length","equal","staticProperties","get","exampleFile","parseStaticProperties","exportHello","undefined","has","be","false"],"sources":["typescript.parser.spec.ts"],"sourcesContent":["import ts from 'typescript';\nimport { expect } from 'chai';\n\nimport { TypeScriptParser } from './typescript.parser';\n\ndescribe('TypescriptParser', () => {\n describe('getExports', () => {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export\n // https://www.typescriptlang.org/docs/handbook/modules.html#export\n\n const exampleArrowFunction = `\n export const arrow = () => { return 3; }\n arrow.textProperty = \"propertyValue\";\n `;\n\n const exampleFunction = `\n export function func() { return 3; }\n func.textProperty = \"propertyValue\";\n `;\n\n const exampleClass = `\n export class classy{ render() { return 3; } }\n classy.textProperty = \"propertyValue\";\n `;\n\n const exampleStatement = `\n function myFunction2 () { return 3; }\n const myVariable2 = 3;\n export { myFunction2, myVariable2 };\n `;\n\n const exampleRenamedStatement = `\n function myFunction2 () { return 3; }\n const myVariable2 = 3;\n export { myFunction2, myVariable2 as myVariable2Alias };\n `;\n\n const exampleReExport = `\n export { default as function1, function2 } from \"bar.js\";\n `;\n\n const exampleReExportDefault = `\n export { default, function2 } from \"bar.js\";\n `;\n\n const exampleRenamedReExportAll = `\n export * as ns from \"mod\";\n `;\n\n const exampleExportDefault = `\n const a: number = 1\n export default { a };\n `;\n\n it('should parse arrowFunctions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleArrowFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportArrow = exports.find((x) => x.identifier === 'arrow');\n\n expect(exportArrow).to.exist;\n });\n\n it('should parse function exports', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction = exports.find((x) => x.identifier === 'func');\n\n expect(exportFunction).to.exist;\n });\n\n it('should parse classes', () => {\n const ast = ts.createSourceFile('example.tsx', exampleClass, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'classy');\n\n expect(exportClass).to.exist;\n });\n\n it('should parse declarations', () => {\n const ast = ts.createSourceFile('example.tsx', exampleStatement, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction = exports.find((x) => x.identifier === 'myFunction2');\n const exportVariable = exports.find((x) => x.identifier === 'myVariable2');\n\n expect(exportFunction).to.exist;\n expect(exportVariable).to.exist;\n });\n\n it('should parse renamed declarations', () => {\n const ast = ts.createSourceFile('example.tsx', exampleRenamedStatement, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction = exports.find((x) => x.identifier === 'myFunction2');\n const exportVariable = exports.find((x) => x.identifier === 'myVariable2Alias');\n\n expect(exportFunction).to.exist;\n expect(exportVariable).to.exist;\n });\n\n it('should parse re-exports', () => {\n const ast = ts.createSourceFile('example.tsx', exampleReExport, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction1 = exports.find((x) => x.identifier === 'function1');\n const exportFunction2 = exports.find((x) => x.identifier === 'function2');\n\n expect(exportFunction1).to.exist;\n expect(exportFunction2).to.exist;\n });\n\n it('should parse re-exports with default', () => {\n const ast = ts.createSourceFile('example.tsx', exampleReExportDefault, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction1 = exports.find((x) => x.identifier === 'default');\n const exportFunction2 = exports.find((x) => x.identifier === 'function2');\n\n expect(exportFunction1).not.to.exist;\n expect(exportFunction2).to.exist;\n });\n\n it('should parse renamed re-exports all', () => {\n const ast = ts.createSourceFile('example.tsx', exampleRenamedReExportAll, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportFunction1 = exports.find((x) => x.identifier === 'ns');\n\n expect(exportFunction1).to.exist;\n });\n\n it('should parse default exports', () => {\n const ast = ts.createSourceFile('example.tsx', exampleExportDefault, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n expect(exports.length).to.equal(0);\n });\n\n describe('staticProperties', () => {\n it('should include staticProperties, when on arrowFunctions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleArrowFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportArrow = exports.find((x) => x.identifier === 'arrow');\n\n expect(exportArrow?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n\n it('should include staticProperties, when on regular functions', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFunction, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'func');\n\n expect(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n\n it('should include staticProperties, when on classes', () => {\n const ast = ts.createSourceFile('example.tsx', exampleClass, ts.ScriptTarget.Latest);\n const exports = new TypeScriptParser().getExports(ast);\n\n const exportClass = exports.find((x) => x.identifier === 'classy');\n\n expect(exportClass?.staticProperties?.get('textProperty')).to.equal('propertyValue');\n });\n });\n });\n\n describe('collectStaticProperties', () => {\n const exampleFile = `\n export const hello = () => { return 3; }\n\n hello.text = \"is\";\n hello.count = 3;\n hello.nullish = null;\n hello.undef = undefined;\n hello.disable = false;\n hello.enable = true;\n hello.complextLiteral = \\`what \\${hello.text} it?\\`;\n hello.nonAssignedProperty += 'value';\n `;\n\n it('should parse all primitive values', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n\n expect(staticProperties).to.exist;\n\n const exportHello = staticProperties.get('hello');\n expect(exportHello).to.exist;\n\n expect(exportHello?.get('text')).to.equal('is');\n expect(exportHello?.get('count')).to.equal(3);\n expect(exportHello?.get('nullish')).to.equal(null);\n expect(exportHello?.get('undef')).to.equal(undefined);\n expect(exportHello?.get('disable')).to.equal(false);\n expect(exportHello?.get('enable')).to.equal(true);\n\n expect(exportHello?.has('complextLiteral')).to.be.false;\n });\n\n it('should skip non primitive values', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n const exportHello = staticProperties.get('hello');\n\n expect(exportHello?.has('complextLiteral')).to.be.false;\n });\n\n it('should skip non assignment statements', () => {\n const ast = ts.createSourceFile('example.tsx', exampleFile, ts.ScriptTarget.Latest);\n const staticProperties = new TypeScriptParser().parseStaticProperties(ast);\n const exportHello = staticProperties.get('hello');\n\n expect(exportHello?.has('nonAssignedProperty')).to.be.false;\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
package/esm.mjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// eslint-disable-next-line import/no-unresolved
|
|
2
|
+
import cjsModule from './index.js';
|
|
3
|
+
|
|
4
|
+
export const TypescriptConfigMutator = cjsModule.TypescriptConfigMutator;
|
|
5
|
+
export const TypeScriptExtractor = cjsModule.TypeScriptExtractor;
|
|
6
|
+
export const TypescriptCompiler = cjsModule.TypescriptCompiler;
|
|
7
|
+
export const TypescriptAspect = cjsModule.TypescriptAspect;
|
|
8
|
+
export const SchemaExtractorContext = cjsModule.SchemaExtractorContext;
|
|
9
|
+
export const importTransformer = cjsModule.importTransformer;
|
|
10
|
+
export const exportTransformer = cjsModule.exportTransformer;
|
|
11
|
+
export const classNamesTransformer = cjsModule.classNamesTransformer;
|
|
12
|
+
export const functionNamesTransformer = cjsModule.functionNamesTransformer;
|
|
13
|
+
export const interfaceNamesTransformer = cjsModule.interfaceNamesTransformer;
|
|
14
|
+
export const typeAliasNamesTransformer = cjsModule.typeAliasNamesTransformer;
|
|
15
|
+
export const variableNamesTransformer = cjsModule.variableNamesTransformer;
|
|
16
|
+
export const transformSourceFile = cjsModule.transformSourceFile;
|
|
17
|
+
export const expressionStatementTransformer = cjsModule.expressionStatementTransformer;
|
|
18
|
+
export const typeReferenceTransformer = cjsModule.typeReferenceTransformer;
|
|
19
|
+
|
|
20
|
+
export default cjsModule;
|
|
21
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TransformerNotFound } from './transformer-not-found';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Node } from 'typescript';
|
|
2
|
+
import ts from 'typescript';
|
|
3
|
+
import type { Component } from '@teambit/component';
|
|
4
|
+
import type { Location } from '@teambit/semantics.entities.semantic-schema';
|
|
5
|
+
|
|
6
|
+
export class TransformerNotFound extends Error {
|
|
7
|
+
constructor(
|
|
8
|
+
readonly node: Node,
|
|
9
|
+
readonly component: Component,
|
|
10
|
+
location: Location
|
|
11
|
+
) {
|
|
12
|
+
super(
|
|
13
|
+
`typescript: could not find schema transformer for node of kind ${node.kind} (${
|
|
14
|
+
ts.SyntaxKind[node.kind]
|
|
15
|
+
}) in component ${component.id.toString()}.
|
|
16
|
+
location: ${node.getSourceFile().fileName}, line: ${location.line}, character: ${location.character}.
|
|
17
|
+
node-text: ${node.getFullText()}`
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@teambit/typescript",
|
|
3
|
+
"version": "0.0.0-004aea01bc027e428dfd0f6583f49a1b8286bdd0",
|
|
4
|
+
"homepage": "https://bit.cloud/teambit/typescript/typescript",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"componentId": {
|
|
7
|
+
"scope": "teambit.typescript",
|
|
8
|
+
"name": "typescript",
|
|
9
|
+
"version": "004aea01bc027e428dfd0f6583f49a1b8286bdd0"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"lodash": "4.17.21",
|
|
13
|
+
"p-map-series": "2.1.0",
|
|
14
|
+
"tsutils": "3.21.0",
|
|
15
|
+
"typescript": "5.9.2",
|
|
16
|
+
"get-tsconfig": "4.2.0",
|
|
17
|
+
"fs-extra": "10.0.0",
|
|
18
|
+
"chalk": "4.1.2",
|
|
19
|
+
"@teambit/typescript.modules.ts-config-mutator": "0.0.87",
|
|
20
|
+
"@teambit/typescript.typescript-compiler": "2.0.63",
|
|
21
|
+
"@teambit/component.sources": "0.0.135",
|
|
22
|
+
"@teambit/legacy.utils": "0.0.28",
|
|
23
|
+
"@teambit/semantics.entities.semantic-schema": "0.0.94",
|
|
24
|
+
"@teambit/ts-server": "0.0.71",
|
|
25
|
+
"@teambit/harmony": "0.4.7",
|
|
26
|
+
"@teambit/logger": "0.0.1375",
|
|
27
|
+
"@teambit/cli": "0.0.1282",
|
|
28
|
+
"@teambit/legacy.constants": "0.0.19",
|
|
29
|
+
"@teambit/compiler": "0.0.0-161c3b865db7620a8a4266ab0fb3c8608ab0fc84",
|
|
30
|
+
"@teambit/builder": "0.0.0-17b164f84575130096db0ea4be3b535c5d2acb77",
|
|
31
|
+
"@teambit/component": "0.0.0-3ca4c9df6f9951da73a6a59fd0434b0d114ff512",
|
|
32
|
+
"@teambit/dependency-resolver": "0.0.0-d64c152f4c3cae4f6bdd918fcc0d4d755c4c24c9",
|
|
33
|
+
"@teambit/formatter": "0.0.0-84037e2ab6f4288d8c7cb0d3aace4c6680bffbf8",
|
|
34
|
+
"@teambit/aspect-loader": "0.0.0-68180875cf3f79e5252baa0b23411ffd755f0af4",
|
|
35
|
+
"@teambit/envs": "0.0.0-58dccd4443515f18057062e7933949fd69af3d57",
|
|
36
|
+
"@teambit/schema": "0.0.0-2ef2b81385b713d18e7e1474f010b0c448fc6ac5",
|
|
37
|
+
"@teambit/scope": "0.0.0-86debe8e5605f5de8a93c396f1dc415b5e0687d5",
|
|
38
|
+
"@teambit/workspace": "0.0.0-79f8bcc433f826fd74d9bb3214ade99a42e482ee",
|
|
39
|
+
"@teambit/pkg": "0.0.0-d64bea89f27692e3979aad5ed35f14c1140e3818",
|
|
40
|
+
"@teambit/watcher": "0.0.0-75662b0ae212ead15827d7fcc55241ebefddd9a2"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/lodash": "4.14.165",
|
|
44
|
+
"@types/fs-extra": "9.0.7",
|
|
45
|
+
"@types/mocha": "9.1.0",
|
|
46
|
+
"@teambit/typescript.aspect-docs.typescript": "0.0.172",
|
|
47
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.79"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"react": "^17.0.0 || ^18.0.0",
|
|
51
|
+
"chai": "5.2.1",
|
|
52
|
+
"@types/react": "^17.0.73",
|
|
53
|
+
"@types/chai": "5.2.2"
|
|
54
|
+
},
|
|
55
|
+
"license": "Apache-2.0",
|
|
56
|
+
"optionalDependencies": {},
|
|
57
|
+
"peerDependenciesMeta": {},
|
|
58
|
+
"exports": {
|
|
59
|
+
".": {
|
|
60
|
+
"node": {
|
|
61
|
+
"require": "./dist/index.js",
|
|
62
|
+
"import": "./dist/esm.mjs"
|
|
63
|
+
},
|
|
64
|
+
"default": "./dist/index.js"
|
|
65
|
+
},
|
|
66
|
+
"./dist/*": "./dist/*",
|
|
67
|
+
"./artifacts/*": "./artifacts/*",
|
|
68
|
+
"./*": "./*.ts"
|
|
69
|
+
},
|
|
70
|
+
"private": false,
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=16.0.0"
|
|
73
|
+
},
|
|
74
|
+
"repository": {
|
|
75
|
+
"type": "git",
|
|
76
|
+
"url": "https://github.com/teambit/bit"
|
|
77
|
+
},
|
|
78
|
+
"keywords": [
|
|
79
|
+
"bit",
|
|
80
|
+
"bit-aspect",
|
|
81
|
+
"bit-core-aspect",
|
|
82
|
+
"components",
|
|
83
|
+
"collaboration",
|
|
84
|
+
"web"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { replaceName } from './replaceName';
|
|
3
|
+
|
|
4
|
+
export function classNamesTransformer(nameMapping: Record<string, string>): ts.TransformerFactory<ts.SourceFile> {
|
|
5
|
+
return (context: ts.TransformationContext) => {
|
|
6
|
+
const { factory } = context;
|
|
7
|
+
|
|
8
|
+
const visit: ts.Visitor = (node) => {
|
|
9
|
+
if (ts.isClassDeclaration(node) && node.name) {
|
|
10
|
+
const oldName = node.name.text;
|
|
11
|
+
const newName = replaceName(oldName, nameMapping);
|
|
12
|
+
|
|
13
|
+
if (newName) {
|
|
14
|
+
const updatedMembers = node.members.map((member) => {
|
|
15
|
+
if (ts.isPropertyDeclaration(member)) {
|
|
16
|
+
const oldMemberName = member.name.getText();
|
|
17
|
+
const newMemberName = replaceName(oldMemberName, nameMapping);
|
|
18
|
+
return factory.updatePropertyDeclaration(
|
|
19
|
+
member,
|
|
20
|
+
member.modifiers,
|
|
21
|
+
newMemberName ? ts.factory.createIdentifier(newMemberName) : member.name,
|
|
22
|
+
member.questionToken,
|
|
23
|
+
member.type,
|
|
24
|
+
member.initializer
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (ts.isMethodDeclaration(member)) {
|
|
29
|
+
const oldMemberName = member.name.getText();
|
|
30
|
+
const newMemberName = replaceName(oldMemberName, nameMapping);
|
|
31
|
+
|
|
32
|
+
const updatedParameters = member.parameters.map((param) => {
|
|
33
|
+
return ts.factory.updateParameterDeclaration(
|
|
34
|
+
param,
|
|
35
|
+
param.modifiers,
|
|
36
|
+
param.dotDotDotToken,
|
|
37
|
+
param.name,
|
|
38
|
+
param.questionToken,
|
|
39
|
+
param.type,
|
|
40
|
+
param.initializer
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return factory.updateMethodDeclaration(
|
|
45
|
+
member,
|
|
46
|
+
member.modifiers,
|
|
47
|
+
member.asteriskToken,
|
|
48
|
+
newMemberName ? ts.factory.createIdentifier(newMemberName) : member.name,
|
|
49
|
+
member.questionToken,
|
|
50
|
+
member.typeParameters,
|
|
51
|
+
updatedParameters,
|
|
52
|
+
member.type,
|
|
53
|
+
member.body
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
return member;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return factory.updateClassDeclaration(
|
|
60
|
+
node,
|
|
61
|
+
node.modifiers,
|
|
62
|
+
factory.createIdentifier(newName),
|
|
63
|
+
node.typeParameters,
|
|
64
|
+
node.heritageClauses,
|
|
65
|
+
updatedMembers
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return ts.visitEachChild(node, visit, context);
|
|
70
|
+
};
|
|
71
|
+
return (node) => ts.visitNode(node, visit) as ts.SourceFile;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
|
|
3
|
+
export class EmptyLineEncoder {
|
|
4
|
+
static readonly defaultEmptyLineMarker: string = '!--empty-line--!';
|
|
5
|
+
static readonly defaultNewLine: string = '\r\n';
|
|
6
|
+
constructor(emptyLineMarker?: string, newLine?: string) {
|
|
7
|
+
this.emptyLineMarker = emptyLineMarker || EmptyLineEncoder.defaultEmptyLineMarker;
|
|
8
|
+
this.newLine = newLine || EmptyLineEncoder.defaultNewLine;
|
|
9
|
+
}
|
|
10
|
+
emptyLineMarker: string;
|
|
11
|
+
newLine: string;
|
|
12
|
+
|
|
13
|
+
encode(text: string) {
|
|
14
|
+
return encodeEmptyLines(text, this.emptyLineMarker, this.newLine);
|
|
15
|
+
}
|
|
16
|
+
decode(text: string) {
|
|
17
|
+
return decodeEmptyLines(text, this.emptyLineMarker, this.newLine);
|
|
18
|
+
}
|
|
19
|
+
addLeadingEmptyLineMarker<T extends ts.Node>(node: T) {
|
|
20
|
+
return addLeadingEmptyLineMarker(node, this.emptyLineMarker);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function encodeEmptyLines(text: string, emptyLineMarker?: string, newLine?: string) {
|
|
25
|
+
const marker = toComment(emptyLineMarker || EmptyLineEncoder.defaultEmptyLineMarker);
|
|
26
|
+
|
|
27
|
+
const lines = text.split(/\r?\n/);
|
|
28
|
+
|
|
29
|
+
const commentedLines = lines.map((line) => (line.trim() === '' ? marker : line));
|
|
30
|
+
|
|
31
|
+
return commentedLines.join(newLine || EmptyLineEncoder.defaultNewLine);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function decodeEmptyLines(text: string, emptyLineMarker?: string, newLine?: string) {
|
|
35
|
+
const marker = toComment(emptyLineMarker || EmptyLineEncoder.defaultEmptyLineMarker);
|
|
36
|
+
|
|
37
|
+
const lines = text.split(/\r?\n/);
|
|
38
|
+
|
|
39
|
+
const uncommentedLines = lines.map((line) => (line.trim() === marker ? '' : line));
|
|
40
|
+
|
|
41
|
+
return uncommentedLines.join(newLine || EmptyLineEncoder.defaultNewLine);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function addLeadingEmptyLineMarker<T extends ts.Node>(node: T, emptyLineMarker?: string) {
|
|
45
|
+
return ts.addSyntheticLeadingComment(
|
|
46
|
+
node,
|
|
47
|
+
ts.SyntaxKind.MultiLineCommentTrivia,
|
|
48
|
+
emptyLineMarker || EmptyLineEncoder.defaultEmptyLineMarker,
|
|
49
|
+
// hasTrailingNewLine
|
|
50
|
+
true
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function toComment(marker: string) {
|
|
55
|
+
return `/*${marker}*/`;
|
|
56
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { SourceFileTransformer } from './index';
|
|
3
|
+
|
|
4
|
+
export const exportTransformer: SourceFileTransformer = (mapping: Record<string, string>) => {
|
|
5
|
+
return (context) => {
|
|
6
|
+
const visit: ts.Visitor = (node) => {
|
|
7
|
+
if (ts.isExportDeclaration(node)) {
|
|
8
|
+
let moduleSpecifier = node.moduleSpecifier?.getText().slice(1, -1);
|
|
9
|
+
for (const [oldName, newName] of Object.entries(mapping)) {
|
|
10
|
+
if (moduleSpecifier && moduleSpecifier.includes(oldName)) {
|
|
11
|
+
moduleSpecifier = moduleSpecifier.replace(oldName, newName);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
let updatedExportClause;
|
|
15
|
+
|
|
16
|
+
if (node.exportClause && ts.isNamedExports(node.exportClause)) {
|
|
17
|
+
const transformedElements = node.exportClause.elements.map((element) => {
|
|
18
|
+
let newElementName = element.name.text;
|
|
19
|
+
|
|
20
|
+
for (const [oldName, newName] of Object.entries(mapping)) {
|
|
21
|
+
if (newElementName.startsWith(oldName) || newElementName.endsWith(oldName)) {
|
|
22
|
+
newElementName = newElementName.replace(oldName, newName);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return ts.factory.updateExportSpecifier(
|
|
27
|
+
element,
|
|
28
|
+
false,
|
|
29
|
+
element.propertyName,
|
|
30
|
+
ts.factory.createIdentifier(newElementName)
|
|
31
|
+
);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
updatedExportClause = ts.factory.updateNamedExports(node.exportClause, transformedElements);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return ts.factory.updateExportDeclaration(
|
|
38
|
+
node,
|
|
39
|
+
node.modifiers,
|
|
40
|
+
node.isTypeOnly,
|
|
41
|
+
updatedExportClause,
|
|
42
|
+
node.moduleSpecifier ? ts.factory.createStringLiteral(moduleSpecifier || '') : undefined,
|
|
43
|
+
undefined
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (ts.isExportAssignment(node)) {
|
|
48
|
+
let expression = node.expression;
|
|
49
|
+
|
|
50
|
+
if (ts.isIdentifier(expression)) {
|
|
51
|
+
for (const [oldName, newName] of Object.entries(mapping)) {
|
|
52
|
+
if (expression.getText().startsWith(oldName) || expression.getText().endsWith(oldName)) {
|
|
53
|
+
expression = ts.factory.createIdentifier(expression.getText().replace(oldName, newName));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return ts.factory.updateExportAssignment(node, node.modifiers, expression);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return ts.visitEachChild(node, visit, context);
|
|
62
|
+
};
|
|
63
|
+
return (node) => ts.visitNode(node, visit) as ts.SourceFile;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { SourceFileTransformer } from './index';
|
|
3
|
+
import { replaceName } from './replaceName';
|
|
4
|
+
|
|
5
|
+
export const expressionStatementTransformer: SourceFileTransformer = (mapping: Record<string, string>) => {
|
|
6
|
+
return (context) => {
|
|
7
|
+
const replaceIdentifierText = (identifier: ts.Identifier) => {
|
|
8
|
+
try {
|
|
9
|
+
if (!identifier || !ts.isIdentifier(identifier)) return identifier;
|
|
10
|
+
const oldName = identifier.getText();
|
|
11
|
+
const newName = replaceName(oldName, mapping);
|
|
12
|
+
|
|
13
|
+
if (newName) {
|
|
14
|
+
return ts.factory.createIdentifier(newName);
|
|
15
|
+
}
|
|
16
|
+
return identifier;
|
|
17
|
+
} catch {
|
|
18
|
+
return identifier;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const visit: ts.Visitor = (node) => {
|
|
23
|
+
if (ts.isExpressionStatement(node)) {
|
|
24
|
+
return ts.factory.updateExpressionStatement(node, ts.visitNode(node.expression, visit) as ts.Expression);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
28
|
+
let newName = node.name;
|
|
29
|
+
if (ts.isIdentifier(node.name)) {
|
|
30
|
+
newName = replaceIdentifierText(node.name);
|
|
31
|
+
}
|
|
32
|
+
return ts.factory.updatePropertyAccessExpression(
|
|
33
|
+
node,
|
|
34
|
+
ts.visitNode(node.expression, visit) as ts.Expression,
|
|
35
|
+
newName
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (ts.isIdentifier(node)) {
|
|
40
|
+
return replaceIdentifierText(node);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return ts.visitEachChild(node, visit, context);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return (node) => ts.visitNode(node, visit) as ts.SourceFile;
|
|
47
|
+
};
|
|
48
|
+
};
|