@teambit/typescript 0.0.894 → 0.0.896

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.
Files changed (71) hide show
  1. package/dist/schema-extractor-context.d.ts +6 -3
  2. package/dist/schema-extractor-context.js +41 -10
  3. package/dist/schema-extractor-context.js.map +1 -1
  4. package/dist/transformers/binding-element.js +1 -8
  5. package/dist/transformers/binding-element.js.map +1 -1
  6. package/dist/transformers/{class-deceleration.d.ts → class-declaration.d.ts} +2 -1
  7. package/dist/transformers/class-declaration.js +130 -0
  8. package/dist/transformers/class-declaration.js.map +1 -0
  9. package/dist/transformers/enum-declaration.js +20 -2
  10. package/dist/transformers/enum-declaration.js.map +1 -1
  11. package/dist/transformers/export-declaration.js +2 -2
  12. package/dist/transformers/export-declaration.js.map +1 -1
  13. package/dist/transformers/index.d.ts +1 -1
  14. package/dist/transformers/index.js +5 -5
  15. package/dist/transformers/index.js.map +1 -1
  16. package/dist/transformers/interface-declaration.d.ts +1 -0
  17. package/dist/transformers/interface-declaration.js +47 -5
  18. package/dist/transformers/interface-declaration.js.map +1 -1
  19. package/dist/transformers/source-file-transformer.d.ts +2 -2
  20. package/dist/transformers/source-file-transformer.js +1 -1
  21. package/dist/transformers/source-file-transformer.js.map +1 -1
  22. package/dist/transformers/type-alias.js +1 -8
  23. package/dist/transformers/type-alias.js.map +1 -1
  24. package/dist/transformers/utils/class-element-to-schema.js +7 -11
  25. package/dist/transformers/utils/class-element-to-schema.js.map +1 -1
  26. package/dist/transformers/utils/get-params.js +9 -1
  27. package/dist/transformers/utils/get-params.js.map +1 -1
  28. package/dist/transformers/utils/jsdoc-to-doc-schema.d.ts +4 -3
  29. package/dist/transformers/utils/jsdoc-to-doc-schema.js +11 -33
  30. package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -1
  31. package/dist/transformers/utils/parse-type-from-quick-info.js +9 -0
  32. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
  33. package/dist/transformers/utils/to-function-like-schema.js +1 -8
  34. package/dist/transformers/utils/to-function-like-schema.js.map +1 -1
  35. package/dist/transformers/utils/type-element-to-schema.js +1 -8
  36. package/dist/transformers/utils/type-element-to-schema.js.map +1 -1
  37. package/dist/transformers/utils/type-node-to-schema.js +9 -9
  38. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  39. package/dist/transformers/variable-declaration.js +13 -11
  40. package/dist/transformers/variable-declaration.js.map +1 -1
  41. package/dist/transformers/variable-statement.js +1 -1
  42. package/dist/transformers/variable-statement.js.map +1 -1
  43. package/dist/typescript.extractor.d.ts +2 -1
  44. package/dist/typescript.extractor.js +4 -4
  45. package/dist/typescript.extractor.js.map +1 -1
  46. package/dist/typescript.main.runtime.js +4 -4
  47. package/dist/typescript.main.runtime.js.map +1 -1
  48. package/package-tar/teambit-typescript-0.0.896.tgz +0 -0
  49. package/package.json +15 -14
  50. package/{preview-1667878820252.js → preview-1668051814135.js} +2 -2
  51. package/transformers/binding-element.ts +1 -2
  52. package/transformers/class-declaration.ts +97 -0
  53. package/transformers/enum-declaration.ts +14 -3
  54. package/transformers/export-declaration.ts +3 -3
  55. package/transformers/index.ts +1 -1
  56. package/transformers/interface-declaration.ts +49 -5
  57. package/transformers/source-file-transformer.ts +2 -2
  58. package/transformers/type-alias.ts +1 -2
  59. package/transformers/utils/class-element-to-schema.ts +4 -3
  60. package/transformers/utils/get-params.ts +15 -1
  61. package/transformers/utils/jsdoc-to-doc-schema.ts +15 -22
  62. package/transformers/utils/parse-type-from-quick-info.ts +7 -0
  63. package/transformers/utils/to-function-like-schema.ts +2 -2
  64. package/transformers/utils/type-element-to-schema.ts +1 -2
  65. package/transformers/utils/type-node-to-schema.ts +12 -3
  66. package/transformers/variable-declaration.ts +21 -3
  67. package/transformers/variable-statement.ts +2 -2
  68. package/dist/transformers/class-deceleration.js +0 -87
  69. package/dist/transformers/class-deceleration.js.map +0 -1
  70. package/package-tar/teambit-typescript-0.0.894.tgz +0 -0
  71. package/transformers/class-deceleration.ts +0 -37
@@ -1 +1 @@
1
- {"version":3,"names":["toFunctionLikeSchema","node","context","funcName","name","getText","getQuickInfoFromDefaultModifier","defaultModifier","modifiers","find","modifier","kind","SyntaxKind","DefaultKeyword","getQuickInfo","ArrowFunction","equalsGreaterThanToken","info","returnTypeStr","parseTypeFromQuickInfo","displaySig","body","displayString","args","getParams","parameters","returnType","resolveType","Boolean","map","typeParameters","typeParam","location","getLocation","doc","jsDocToDocSchema","FunctionLikeSchema"],"sources":["to-function-like-schema.ts"],"sourcesContent":["import { SignatureDeclaration, SyntaxKind } from 'typescript';\nimport { FunctionLikeSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { jsDocToDocSchema } from './jsdoc-to-doc-schema';\n\nexport async function toFunctionLikeSchema(\n node: SignatureDeclaration,\n context: SchemaExtractorContext,\n funcName?: string\n) {\n const name = funcName || node.name?.getText() || '';\n const getQuickInfoFromDefaultModifier = async () => {\n const defaultModifier = node.modifiers?.find((modifier) => modifier.kind === SyntaxKind.DefaultKeyword);\n if (defaultModifier) return context.getQuickInfo(defaultModifier);\n if (node.kind === SyntaxKind.ArrowFunction) return context.getQuickInfo(node.equalsGreaterThanToken);\n return null;\n };\n const info = node.name ? await context.getQuickInfo(node.name) : await getQuickInfoFromDefaultModifier();\n const returnTypeStr = info ? parseTypeFromQuickInfo(info) : 'any';\n const displaySig = info?.body?.displayString || '';\n const args = await getParams(node.parameters, context);\n const returnType = await context.resolveType(node, returnTypeStr, Boolean(info));\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const typeParameters = node.typeParameters?.map((typeParam) => typeParam.name.getText());\n const location = context.getLocation(node);\n const doc = await jsDocToDocSchema(node, context);\n return new FunctionLikeSchema(\n location,\n name,\n args,\n returnType,\n displaySig,\n modifiers as Modifier[],\n doc,\n typeParameters\n );\n}\n"],"mappings":";;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,eAAeA,oBAAoB,CACxCC,IAA0B,EAC1BC,OAA+B,EAC/BC,QAAiB,EACjB;EAAA;EACA,MAAMC,IAAI,GAAGD,QAAQ,mBAAIF,IAAI,CAACG,IAAI,+CAAT,WAAWC,OAAO,EAAE,KAAI,EAAE;EACnD,MAAMC,+BAA+B,GAAG,YAAY;IAAA;IAClD,MAAMC,eAAe,sBAAGN,IAAI,CAACO,SAAS,oDAAd,gBAAgBC,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,IAAI,KAAKC,wBAAU,CAACC,cAAc,CAAC;IACvG,IAAIN,eAAe,EAAE,OAAOL,OAAO,CAACY,YAAY,CAACP,eAAe,CAAC;IACjE,IAAIN,IAAI,CAACU,IAAI,KAAKC,wBAAU,CAACG,aAAa,EAAE,OAAOb,OAAO,CAACY,YAAY,CAACb,IAAI,CAACe,sBAAsB,CAAC;IACpG,OAAO,IAAI;EACb,CAAC;EACD,MAAMC,IAAI,GAAGhB,IAAI,CAACG,IAAI,GAAG,MAAMF,OAAO,CAACY,YAAY,CAACb,IAAI,CAACG,IAAI,CAAC,GAAG,MAAME,+BAA+B,EAAE;EACxG,MAAMY,aAAa,GAAGD,IAAI,GAAG,IAAAE,gDAAsB,EAACF,IAAI,CAAC,GAAG,KAAK;EACjE,MAAMG,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,qCAAJA,IAAI,CAAEI,IAAI,+CAAV,WAAYC,aAAa,KAAI,EAAE;EAClD,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAS,EAACvB,IAAI,CAACwB,UAAU,EAAEvB,OAAO,CAAC;EACtD,MAAMwB,UAAU,GAAG,MAAMxB,OAAO,CAACyB,WAAW,CAAC1B,IAAI,EAAEiB,aAAa,EAAEU,OAAO,CAACX,IAAI,CAAC,CAAC;EAChF,MAAMT,SAAS,GAAG,qBAAAP,IAAI,CAACO,SAAS,qDAAd,iBAAgBqB,GAAG,CAAEnB,QAAQ,IAAKA,QAAQ,CAACL,OAAO,EAAE,CAAC,KAAI,EAAE;EAC7E,MAAMyB,cAAc,2BAAG7B,IAAI,CAAC6B,cAAc,yDAAnB,qBAAqBD,GAAG,CAAEE,SAAS,IAAKA,SAAS,CAAC3B,IAAI,CAACC,OAAO,EAAE,CAAC;EACxF,MAAM2B,QAAQ,GAAG9B,OAAO,CAAC+B,WAAW,CAAChC,IAAI,CAAC;EAC1C,MAAMiC,GAAG,GAAG,MAAM,IAAAC,oCAAgB,EAAClC,IAAI,EAAEC,OAAO,CAAC;EACjD,OAAO,KAAIkC,uCAAkB,EAC3BJ,QAAQ,EACR5B,IAAI,EACJmB,IAAI,EACJG,UAAU,EACVN,UAAU,EACVZ,SAAS,EACT0B,GAAG,EACHJ,cAAc,CACf;AACH"}
1
+ {"version":3,"names":["toFunctionLikeSchema","node","context","funcName","name","getText","getQuickInfoFromDefaultModifier","defaultModifier","modifiers","find","modifier","kind","SyntaxKind","DefaultKeyword","getQuickInfo","ArrowFunction","equalsGreaterThanToken","info","returnTypeStr","parseTypeFromQuickInfo","displaySig","body","displayString","args","getParams","parameters","returnType","resolveType","Boolean","map","typeParameters","typeParam","location","getLocation","doc","jsDocToDocSchema","FunctionLikeSchema"],"sources":["to-function-like-schema.ts"],"sourcesContent":["import { SignatureDeclaration, SyntaxKind } from 'typescript';\nimport { FunctionLikeSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\n\nexport async function toFunctionLikeSchema(\n node: SignatureDeclaration,\n context: SchemaExtractorContext,\n funcName?: string\n) {\n const name = funcName || node.name?.getText() || '';\n const getQuickInfoFromDefaultModifier = async () => {\n const defaultModifier = node.modifiers?.find((modifier) => modifier.kind === SyntaxKind.DefaultKeyword);\n if (defaultModifier) return context.getQuickInfo(defaultModifier);\n if (node.kind === SyntaxKind.ArrowFunction) return context.getQuickInfo(node.equalsGreaterThanToken);\n return null;\n };\n const info = node.name ? await context.getQuickInfo(node.name) : await getQuickInfoFromDefaultModifier();\n const returnTypeStr = info ? parseTypeFromQuickInfo(info) : 'any';\n const displaySig = info?.body?.displayString || '';\n const args = await getParams(node.parameters, context);\n\n const returnType = await context.resolveType(node, returnTypeStr, Boolean(info));\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const typeParameters = node.typeParameters?.map((typeParam) => typeParam.name.getText());\n const location = context.getLocation(node);\n const doc = await context.jsDocToDocSchema(node);\n return new FunctionLikeSchema(\n location,\n name,\n args,\n returnType,\n displaySig,\n modifiers as Modifier[],\n doc,\n typeParameters\n );\n}\n"],"mappings":";;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,eAAeA,oBAAoB,CACxCC,IAA0B,EAC1BC,OAA+B,EAC/BC,QAAiB,EACjB;EAAA;EACA,MAAMC,IAAI,GAAGD,QAAQ,mBAAIF,IAAI,CAACG,IAAI,+CAAT,WAAWC,OAAO,EAAE,KAAI,EAAE;EACnD,MAAMC,+BAA+B,GAAG,YAAY;IAAA;IAClD,MAAMC,eAAe,sBAAGN,IAAI,CAACO,SAAS,oDAAd,gBAAgBC,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,IAAI,KAAKC,wBAAU,CAACC,cAAc,CAAC;IACvG,IAAIN,eAAe,EAAE,OAAOL,OAAO,CAACY,YAAY,CAACP,eAAe,CAAC;IACjE,IAAIN,IAAI,CAACU,IAAI,KAAKC,wBAAU,CAACG,aAAa,EAAE,OAAOb,OAAO,CAACY,YAAY,CAACb,IAAI,CAACe,sBAAsB,CAAC;IACpG,OAAO,IAAI;EACb,CAAC;EACD,MAAMC,IAAI,GAAGhB,IAAI,CAACG,IAAI,GAAG,MAAMF,OAAO,CAACY,YAAY,CAACb,IAAI,CAACG,IAAI,CAAC,GAAG,MAAME,+BAA+B,EAAE;EACxG,MAAMY,aAAa,GAAGD,IAAI,GAAG,IAAAE,gDAAsB,EAACF,IAAI,CAAC,GAAG,KAAK;EACjE,MAAMG,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,qCAAJA,IAAI,CAAEI,IAAI,+CAAV,WAAYC,aAAa,KAAI,EAAE;EAClD,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAS,EAACvB,IAAI,CAACwB,UAAU,EAAEvB,OAAO,CAAC;EAEtD,MAAMwB,UAAU,GAAG,MAAMxB,OAAO,CAACyB,WAAW,CAAC1B,IAAI,EAAEiB,aAAa,EAAEU,OAAO,CAACX,IAAI,CAAC,CAAC;EAChF,MAAMT,SAAS,GAAG,qBAAAP,IAAI,CAACO,SAAS,qDAAd,iBAAgBqB,GAAG,CAAEnB,QAAQ,IAAKA,QAAQ,CAACL,OAAO,EAAE,CAAC,KAAI,EAAE;EAC7E,MAAMyB,cAAc,2BAAG7B,IAAI,CAAC6B,cAAc,yDAAnB,qBAAqBD,GAAG,CAAEE,SAAS,IAAKA,SAAS,CAAC3B,IAAI,CAACC,OAAO,EAAE,CAAC;EACxF,MAAM2B,QAAQ,GAAG9B,OAAO,CAAC+B,WAAW,CAAChC,IAAI,CAAC;EAC1C,MAAMiC,GAAG,GAAG,MAAMhC,OAAO,CAACiC,gBAAgB,CAAClC,IAAI,CAAC;EAChD,OAAO,KAAImC,uCAAkB,EAC3BJ,QAAQ,EACR5B,IAAI,EACJmB,IAAI,EACJG,UAAU,EACVN,UAAU,EACVZ,SAAS,EACT0B,GAAG,EACHJ,cAAc,CACf;AACH"}
@@ -50,13 +50,6 @@ function _getParams() {
50
50
  };
51
51
  return data;
52
52
  }
53
- function _jsdocToDocSchema() {
54
- const data = require("./jsdoc-to-doc-schema");
55
- _jsdocToDocSchema = function () {
56
- return data;
57
- };
58
- return data;
59
- }
60
53
  async function typeElementToSchema(node, context) {
61
54
  switch (node.kind) {
62
55
  case _typescript().SyntaxKind.MethodSignature:
@@ -85,7 +78,7 @@ async function propertySignature(node, context) {
85
78
  const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
86
79
  const type = await context.resolveType(node, typeStr);
87
80
  const isOptional = Boolean(node.questionToken);
88
- const doc = await (0, _jsdocToDocSchema().jsDocToDocSchema)(node, context);
81
+ const doc = await context.jsDocToDocSchema(node);
89
82
  return new (_semanticsEntities().VariableLikeSchema)(context.getLocation(node), name, displaySig, type, isOptional, doc);
90
83
  }
91
84
  async function indexSignature(node, context) {
@@ -1 +1 @@
1
- {"version":3,"names":["typeElementToSchema","node","context","kind","SyntaxKind","MethodSignature","toFunctionLikeSchema","ConstructSignature","CallSignature","callSignature","PropertySignature","propertySignature","IndexSignature","indexSignature","GetAccessor","getAccessor","SetAccessor","setAccessor","Error","name","getText","info","isComputedPropertyName","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","doc","jsDocToDocSchema","VariableLikeSchema","getLocation","params","getParams","parameters","typeNodeToSchema","IndexSignatureSchema","GetAccessorSchema","getQuickInfoDisplayString","SetAccessorSchema"],"sources":["type-element-to-schema.ts"],"sourcesContent":["import ts, {\n SyntaxKind,\n TypeElement,\n MethodSignature,\n isComputedPropertyName,\n IndexSignatureDeclaration,\n GetAccessorDeclaration,\n SetAccessorDeclaration,\n ConstructSignatureDeclaration,\n CallSignatureDeclaration,\n} from 'typescript';\nimport {\n GetAccessorSchema,\n IndexSignatureSchema,\n SchemaNode,\n SetAccessorSchema,\n VariableLikeSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { toFunctionLikeSchema } from './to-function-like-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { typeNodeToSchema } from './type-node-to-schema';\nimport { getParams } from './get-params';\nimport { jsDocToDocSchema } from './jsdoc-to-doc-schema';\n\nexport async function typeElementToSchema(node: TypeElement, context: SchemaExtractorContext): Promise<SchemaNode> {\n switch (node.kind) {\n case SyntaxKind.MethodSignature:\n return toFunctionLikeSchema(node as MethodSignature, context);\n case SyntaxKind.ConstructSignature:\n return toFunctionLikeSchema(node as ConstructSignatureDeclaration, context, 'new');\n case SyntaxKind.CallSignature:\n return callSignature(node as CallSignatureDeclaration, context);\n case SyntaxKind.PropertySignature:\n return propertySignature(node as ts.PropertySignature, context);\n case SyntaxKind.IndexSignature:\n return indexSignature(node as IndexSignatureDeclaration, context);\n case SyntaxKind.GetAccessor:\n return getAccessor(node as GetAccessorDeclaration, context);\n case SyntaxKind.SetAccessor:\n return setAccessor(node as SetAccessorDeclaration, context);\n default:\n throw new Error(`typeElementToSchema expect type-element node. got ${node.kind}`);\n }\n}\n\nasync function propertySignature(node: ts.PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = isComputedPropertyName(node.name) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n const isOptional = Boolean(node.questionToken);\n const doc = await jsDocToDocSchema(node, context);\n return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc);\n}\n\nexport async function indexSignature(node: IndexSignatureDeclaration, context: SchemaExtractorContext) {\n const params = await getParams(node.parameters, context);\n const type = await typeNodeToSchema(node.type, context);\n return new IndexSignatureSchema(context.getLocation(node), params, type);\n}\n\nexport async function getAccessor(node: GetAccessorDeclaration, context: SchemaExtractorContext) {\n const info = await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n return new GetAccessorSchema(context.getLocation(node), node.name.getText(), type, displaySig);\n}\n\nexport async function setAccessor(node: SetAccessorDeclaration, context: SchemaExtractorContext) {\n const params = await getParams(node.parameters, context);\n const displaySig = await context.getQuickInfoDisplayString(node.name);\n return new SetAccessorSchema(context.getLocation(node), node.name.getText(), params[0], displaySig);\n}\n\nasync function callSignature(node: CallSignatureDeclaration, context: SchemaExtractorContext) {\n return toFunctionLikeSchema(node, context);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["typeElementToSchema","node","context","kind","SyntaxKind","MethodSignature","toFunctionLikeSchema","ConstructSignature","CallSignature","callSignature","PropertySignature","propertySignature","IndexSignature","indexSignature","GetAccessor","getAccessor","SetAccessor","setAccessor","Error","name","getText","info","isComputedPropertyName","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","doc","jsDocToDocSchema","VariableLikeSchema","getLocation","params","getParams","parameters","typeNodeToSchema","IndexSignatureSchema","GetAccessorSchema","getQuickInfoDisplayString","SetAccessorSchema"],"sources":["type-element-to-schema.ts"],"sourcesContent":["import ts, {\n SyntaxKind,\n TypeElement,\n MethodSignature,\n isComputedPropertyName,\n IndexSignatureDeclaration,\n GetAccessorDeclaration,\n SetAccessorDeclaration,\n ConstructSignatureDeclaration,\n CallSignatureDeclaration,\n} from 'typescript';\nimport {\n GetAccessorSchema,\n IndexSignatureSchema,\n SchemaNode,\n SetAccessorSchema,\n VariableLikeSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { toFunctionLikeSchema } from './to-function-like-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { typeNodeToSchema } from './type-node-to-schema';\nimport { getParams } from './get-params';\n\nexport async function typeElementToSchema(node: TypeElement, context: SchemaExtractorContext): Promise<SchemaNode> {\n switch (node.kind) {\n case SyntaxKind.MethodSignature:\n return toFunctionLikeSchema(node as MethodSignature, context);\n case SyntaxKind.ConstructSignature:\n return toFunctionLikeSchema(node as ConstructSignatureDeclaration, context, 'new');\n case SyntaxKind.CallSignature:\n return callSignature(node as CallSignatureDeclaration, context);\n case SyntaxKind.PropertySignature:\n return propertySignature(node as ts.PropertySignature, context);\n case SyntaxKind.IndexSignature:\n return indexSignature(node as IndexSignatureDeclaration, context);\n case SyntaxKind.GetAccessor:\n return getAccessor(node as GetAccessorDeclaration, context);\n case SyntaxKind.SetAccessor:\n return setAccessor(node as SetAccessorDeclaration, context);\n default:\n throw new Error(`typeElementToSchema expect type-element node. got ${node.kind}`);\n }\n}\n\nasync function propertySignature(node: ts.PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = isComputedPropertyName(node.name) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n const isOptional = Boolean(node.questionToken);\n const doc = await context.jsDocToDocSchema(node);\n return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc);\n}\n\nexport async function indexSignature(node: IndexSignatureDeclaration, context: SchemaExtractorContext) {\n const params = await getParams(node.parameters, context);\n const type = await typeNodeToSchema(node.type, context);\n return new IndexSignatureSchema(context.getLocation(node), params, type);\n}\n\nexport async function getAccessor(node: GetAccessorDeclaration, context: SchemaExtractorContext) {\n const info = await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n return new GetAccessorSchema(context.getLocation(node), node.name.getText(), type, displaySig);\n}\n\nexport async function setAccessor(node: SetAccessorDeclaration, context: SchemaExtractorContext) {\n const params = await getParams(node.parameters, context);\n const displaySig = await context.getQuickInfoDisplayString(node.name);\n return new SetAccessorSchema(context.getLocation(node), node.name.getText(), params[0], displaySig);\n}\n\nasync function callSignature(node: CallSignatureDeclaration, context: SchemaExtractorContext) {\n return toFunctionLikeSchema(node, context);\n}\n"],"mappings":"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"}
@@ -41,13 +41,6 @@ function _typeElementToSchema() {
41
41
  };
42
42
  return data;
43
43
  }
44
- function _jsdocToDocSchema() {
45
- const data = require("./jsdoc-to-doc-schema");
46
- _jsdocToDocSchema = function () {
47
- return data;
48
- };
49
- return data;
50
- }
51
44
  // eslint-disable-next-line complexity
52
45
  async function typeNodeToSchema(node, context) {
53
46
  const location = context.getLocation(node);
@@ -90,8 +83,9 @@ async function typeNodeToSchema(node, context) {
90
83
  return thisType(node, context);
91
84
  case _typescript().SyntaxKind.ConditionalType:
92
85
  return conditionalType(node, context);
93
- case _typescript().SyntaxKind.ConstructorType:
94
86
  case _typescript().SyntaxKind.NamedTupleMember:
87
+ return namedTupleType(node, context);
88
+ case _typescript().SyntaxKind.ConstructorType:
95
89
  case _typescript().SyntaxKind.OptionalType:
96
90
  case _typescript().SyntaxKind.RestType:
97
91
  case _typescript().SyntaxKind.InferType:
@@ -189,7 +183,7 @@ async function functionType(node, context) {
189
183
  const returnType = await typeNodeToSchema(node.type, context);
190
184
  const location = context.getLocation(node);
191
185
  const modifiers = ((_node$modifiers = node.modifiers) === null || _node$modifiers === void 0 ? void 0 : _node$modifiers.map(modifier => modifier.getText())) || [];
192
- const doc = await (0, _jsdocToDocSchema().jsDocToDocSchema)(node, context);
186
+ const doc = await context.jsDocToDocSchema(node);
193
187
  return new (_semanticsEntities().FunctionLikeSchema)(location, name, params, returnType, '', modifiers, doc);
194
188
  }
195
189
 
@@ -270,5 +264,11 @@ async function conditionalType(node, context) {
270
264
  const falseType = await typeNodeToSchema(node.falseType, context);
271
265
  return new (_semanticsEntities().ConditionalTypeSchema)(context.getLocation(node), checkType, extendsType, trueType, falseType);
272
266
  }
267
+ async function namedTupleType(node, context) {
268
+ const name = node.name.getText();
269
+ const location = context.getLocation(node);
270
+ const type = await typeNodeToSchema(node.type, context);
271
+ return new (_semanticsEntities().NamedTupleSchema)(location, type, name);
272
+ }
273
273
 
274
274
  //# sourceMappingURL=type-node-to-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["typeNodeToSchema","node","context","location","getLocation","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","ParenthesizedType","parenthesizedType","TypePredicate","typePredicate","IndexedAccessType","indexedAccessType","TemplateLiteralTypeSpan","templateLiteralTypeSpan","TemplateLiteralType","templateLiteralType","ThisType","thisType","ConditionalType","conditionalType","ConstructorType","NamedTupleMember","OptionalType","RestType","InferType","MappedType","ImportType","ExpressionWithTypeArguments","JSDocTypeExpression","JSDocAllType","JSDocUnknownType","JSDocNonNullableType","JSDocNullableType","JSDocOptionalType","JSDocFunctionType","JSDocVariadicType","JSDocNamepathType","JSDocSignature","JSDocTypeLiteral","unimplementedSchema","UnImplementedSchema","AnyKeyword","BigIntKeyword","BooleanKeyword","IntrinsicKeyword","NeverKeyword","NumberKeyword","ObjectKeyword","StringKeyword","SymbolKeyword","UndefinedKeyword","UnknownKeyword","VoidKeyword","types","pMapSeries","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","typeElementToSchema","TypeLiteralSchema","name","typeName","resolveType","typeArguments","TypeRefSchema","args","arg","typeArgs","params","getParams","parameters","returnType","modifiers","map","modifier","doc","jsDocToDocSchema","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","Error","elements","elem","TupleTypeSchema","ParenthesizedTypeSchema","parameterName","isIdentifier","undefined","hasAssertsModifier","Boolean","assertsModifier","TypePredicateSchema","objectType","indexType","IndexedAccessSchema","templateSpans","span","head","text","TemplateLiteralTypeSchema","literal","TemplateLiteralTypeSpanSchema","ThisTypeSchema","checkType","extendsType","trueType","falseType","ConditionalTypeSchema"],"sources":["type-node-to-schema.ts"],"sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n ParenthesizedTypeNode,\n TypePredicateNode,\n isIdentifier,\n IndexedAccessTypeNode,\n TemplateLiteralTypeNode,\n TemplateLiteralTypeSpan,\n ThisTypeNode,\n ConditionalTypeNode,\n} from 'typescript';\nimport {\n SchemaNode,\n TypeRefSchema,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\n ParenthesizedTypeSchema,\n TypePredicateSchema,\n IndexedAccessSchema,\n TemplateLiteralTypeSpanSchema,\n TemplateLiteralTypeSchema,\n ThisTypeSchema,\n Modifier,\n ConditionalTypeSchema,\n UnImplementedSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { typeElementToSchema } from './type-element-to-schema';\nimport { jsDocToDocSchema } from './jsdoc-to-doc-schema';\n\n// eslint-disable-next-line complexity\nexport async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const location = context.getLocation(node);\n if (isKeywordType(node)) {\n return new KeywordTypeSchema(location, node.getText());\n }\n switch (node.kind) {\n case SyntaxKind.IntersectionType:\n return intersectionType(node as IntersectionTypeNode, context);\n case SyntaxKind.UnionType:\n return unionType(node as UnionTypeNode, context);\n case SyntaxKind.TypeReference:\n return typeReference(node as TypeReferenceNode, context);\n case SyntaxKind.TypeLiteral:\n return typeLiteral(node as TypeLiteralNode, context);\n case SyntaxKind.LiteralType: // e.g. string/boolean\n return new LiteralTypeSchema(location, node.getText());\n case SyntaxKind.FunctionType:\n return functionType(node as FunctionTypeNode, context);\n case SyntaxKind.TypeQuery:\n return typeQuery(node as TypeQueryNode, context);\n case SyntaxKind.ArrayType:\n return arrayType(node as ArrayTypeNode, context);\n case SyntaxKind.TypeOperator:\n return typeOperator(node as TypeOperatorNode, context);\n case SyntaxKind.TupleType:\n return tupleType(node as TupleTypeNode, context);\n case SyntaxKind.ParenthesizedType:\n return parenthesizedType(node as ParenthesizedTypeNode, context);\n case SyntaxKind.TypePredicate:\n return typePredicate(node as TypePredicateNode, context);\n case SyntaxKind.IndexedAccessType:\n return indexedAccessType(node as IndexedAccessTypeNode, context);\n case SyntaxKind.TemplateLiteralTypeSpan:\n return templateLiteralTypeSpan(node as TemplateLiteralTypeSpan, context);\n case SyntaxKind.TemplateLiteralType:\n return templateLiteralType(node as TemplateLiteralTypeNode, context);\n case SyntaxKind.ThisType:\n return thisType(node as ThisTypeNode, context);\n case SyntaxKind.ConditionalType:\n return conditionalType(node as ConditionalTypeNode, context);\n case SyntaxKind.ConstructorType:\n case SyntaxKind.NamedTupleMember:\n case SyntaxKind.OptionalType:\n case SyntaxKind.RestType:\n case SyntaxKind.InferType:\n case SyntaxKind.MappedType:\n case SyntaxKind.ImportType:\n case SyntaxKind.ExpressionWithTypeArguments:\n case SyntaxKind.JSDocTypeExpression:\n case SyntaxKind.JSDocAllType:\n case SyntaxKind.JSDocUnknownType:\n case SyntaxKind.JSDocNonNullableType:\n case SyntaxKind.JSDocNullableType:\n case SyntaxKind.JSDocOptionalType:\n case SyntaxKind.JSDocFunctionType:\n case SyntaxKind.JSDocVariadicType:\n case SyntaxKind.JSDocNamepathType:\n case SyntaxKind.JSDocSignature:\n case SyntaxKind.JSDocTypeLiteral:\n return unimplementedSchema(node, context);\n default:\n return unimplementedSchema(node, context);\n }\n}\n\nfunction unimplementedSchema(node: TypeNode, context: SchemaExtractorContext) {\n return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);\n}\n/**\n * whether it's kind of `ts.KeywordTypeSyntaxKind`\n */\nfunction isKeywordType(node: TypeNode): node is KeywordTypeNode {\n switch (node.kind) {\n case SyntaxKind.AnyKeyword:\n case SyntaxKind.BigIntKeyword:\n case SyntaxKind.BooleanKeyword:\n case SyntaxKind.IntrinsicKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.NumberKeyword:\n case SyntaxKind.ObjectKeyword:\n case SyntaxKind.StringKeyword:\n case SyntaxKind.SymbolKeyword:\n case SyntaxKind.UndefinedKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.VoidKeyword:\n return true;\n default:\n return false;\n }\n}\n\nasync function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeIntersectionSchema(location, types);\n}\n\nasync function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeUnionSchema(location, types);\n}\n\n/**\n * not to be confused with \"LiteralType\", which is string/boolean/null.\n * this \"TypeLiteral\" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.\n */\nasync function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {\n const members = await pMapSeries(node.members, (member) => typeElementToSchema(member, context));\n const location = context.getLocation(node);\n return new TypeLiteralSchema(location, members);\n}\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nasync function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n const type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => typeNodeToSchema(arg, context));\n type.typeArgs = args;\n }\n return type;\n}\n\nasync function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = node.name?.getText() || '';\n const params = await getParams(node.parameters, context);\n const returnType = await typeNodeToSchema(node.type, context);\n const location = context.getLocation(node);\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const doc = await jsDocToDocSchema(node, context);\n return new FunctionLikeSchema(location, name, params, returnType, '', modifiers as Modifier[], doc);\n}\n\n/**\n * e.g. `typeof Foo`\n */\nasync function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n const location = context.getLocation(node);\n return new TypeQuerySchema(location, type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n const location = context.getLocation(node);\n return new TypeArraySchema(location, type);\n}\n\n/**\n * e.g. keyof typeof Foo\n */\nasync function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {\n const operatorName = getOperatorName(node.operator);\n const type = await typeNodeToSchema(node.type, context);\n return new TypeOperatorSchema(context.getLocation(node), operatorName, type);\n}\n\nfunction getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {\n switch (operator) {\n case SyntaxKind.KeyOfKeyword:\n return 'keyof';\n case SyntaxKind.UniqueKeyword:\n return 'unique';\n case SyntaxKind.ReadonlyKeyword:\n return 'readonly';\n default:\n throw new Error(`getOperatorName: unable to find operator name for ${operator}`);\n }\n}\n\nasync function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {\n const elements = await pMapSeries(node.elements, async (elem) => {\n const typeSchema = await typeNodeToSchema(elem, context);\n return typeSchema;\n });\n return new TupleTypeSchema(context.getLocation(node), elements);\n}\n\nasync function parenthesizedType(node: ParenthesizedTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n return new ParenthesizedTypeSchema(context.getLocation(node), type);\n}\n\nasync function typePredicate(node: TypePredicateNode, context: SchemaExtractorContext) {\n const parameterName = isIdentifier(node.parameterName) ? node.parameterName.getText() : 'this';\n const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;\n const hasAssertsModifier = Boolean(node.assertsModifier);\n return new TypePredicateSchema(context.getLocation(node), parameterName, type, hasAssertsModifier);\n}\n\nasync function indexedAccessType(node: IndexedAccessTypeNode, context: SchemaExtractorContext) {\n const objectType = await typeNodeToSchema(node.objectType, context);\n const indexType = await typeNodeToSchema(node.indexType, context);\n return new IndexedAccessSchema(context.getLocation(node), objectType, indexType);\n}\n\nasync function templateLiteralType(node: TemplateLiteralTypeNode, context: SchemaExtractorContext) {\n const templateSpans = await pMapSeries(node.templateSpans, (span) => templateLiteralTypeSpan(span, context));\n const head = node.head.text;\n return new TemplateLiteralTypeSchema(context.getLocation(node), head, templateSpans);\n}\n\nasync function templateLiteralTypeSpan(node: TemplateLiteralTypeSpan, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n const literal = node.literal.text;\n return new TemplateLiteralTypeSpanSchema(context.getLocation(node), literal, type);\n}\n\nasync function thisType(node: ThisTypeNode, context: SchemaExtractorContext) {\n return new ThisTypeSchema(context.getLocation(node));\n}\n\nasync function conditionalType(node: ConditionalTypeNode, context: SchemaExtractorContext) {\n const checkType = await typeNodeToSchema(node.checkType, context);\n const extendsType = await typeNodeToSchema(node.extendsType, context);\n const trueType = await typeNodeToSchema(node.trueType, context);\n const falseType = await typeNodeToSchema(node.falseType, context);\n return new ConditionalTypeSchema(context.getLocation(node), checkType, extendsType, trueType, falseType);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["typeNodeToSchema","node","context","location","getLocation","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","ParenthesizedType","parenthesizedType","TypePredicate","typePredicate","IndexedAccessType","indexedAccessType","TemplateLiteralTypeSpan","templateLiteralTypeSpan","TemplateLiteralType","templateLiteralType","ThisType","thisType","ConditionalType","conditionalType","NamedTupleMember","namedTupleType","ConstructorType","OptionalType","RestType","InferType","MappedType","ImportType","ExpressionWithTypeArguments","JSDocTypeExpression","JSDocAllType","JSDocUnknownType","JSDocNonNullableType","JSDocNullableType","JSDocOptionalType","JSDocFunctionType","JSDocVariadicType","JSDocNamepathType","JSDocSignature","JSDocTypeLiteral","unimplementedSchema","UnImplementedSchema","AnyKeyword","BigIntKeyword","BooleanKeyword","IntrinsicKeyword","NeverKeyword","NumberKeyword","ObjectKeyword","StringKeyword","SymbolKeyword","UndefinedKeyword","UnknownKeyword","VoidKeyword","types","pMapSeries","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","typeElementToSchema","TypeLiteralSchema","name","typeName","resolveType","typeArguments","TypeRefSchema","args","arg","typeArgs","params","getParams","parameters","returnType","modifiers","map","modifier","doc","jsDocToDocSchema","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","Error","elements","elem","TupleTypeSchema","ParenthesizedTypeSchema","parameterName","isIdentifier","undefined","hasAssertsModifier","Boolean","assertsModifier","TypePredicateSchema","objectType","indexType","IndexedAccessSchema","templateSpans","span","head","text","TemplateLiteralTypeSchema","literal","TemplateLiteralTypeSpanSchema","ThisTypeSchema","checkType","extendsType","trueType","falseType","ConditionalTypeSchema","NamedTupleSchema"],"sources":["type-node-to-schema.ts"],"sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n ParenthesizedTypeNode,\n TypePredicateNode,\n isIdentifier,\n IndexedAccessTypeNode,\n TemplateLiteralTypeNode,\n TemplateLiteralTypeSpan,\n ThisTypeNode,\n ConditionalTypeNode,\n NamedTupleMember,\n} from 'typescript';\nimport {\n SchemaNode,\n TypeRefSchema,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\n ParenthesizedTypeSchema,\n TypePredicateSchema,\n IndexedAccessSchema,\n TemplateLiteralTypeSpanSchema,\n TemplateLiteralTypeSchema,\n ThisTypeSchema,\n Modifier,\n ConditionalTypeSchema,\n NamedTupleSchema,\n UnImplementedSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { typeElementToSchema } from './type-element-to-schema';\n\n// eslint-disable-next-line complexity\nexport async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const location = context.getLocation(node);\n if (isKeywordType(node)) {\n return new KeywordTypeSchema(location, node.getText());\n }\n switch (node.kind) {\n case SyntaxKind.IntersectionType:\n return intersectionType(node as IntersectionTypeNode, context);\n case SyntaxKind.UnionType:\n return unionType(node as UnionTypeNode, context);\n case SyntaxKind.TypeReference:\n return typeReference(node as TypeReferenceNode, context);\n case SyntaxKind.TypeLiteral:\n return typeLiteral(node as TypeLiteralNode, context);\n case SyntaxKind.LiteralType: // e.g. string/boolean\n return new LiteralTypeSchema(location, node.getText());\n case SyntaxKind.FunctionType:\n return functionType(node as FunctionTypeNode, context);\n case SyntaxKind.TypeQuery:\n return typeQuery(node as TypeQueryNode, context);\n case SyntaxKind.ArrayType:\n return arrayType(node as ArrayTypeNode, context);\n case SyntaxKind.TypeOperator:\n return typeOperator(node as TypeOperatorNode, context);\n case SyntaxKind.TupleType:\n return tupleType(node as TupleTypeNode, context);\n case SyntaxKind.ParenthesizedType:\n return parenthesizedType(node as ParenthesizedTypeNode, context);\n case SyntaxKind.TypePredicate:\n return typePredicate(node as TypePredicateNode, context);\n case SyntaxKind.IndexedAccessType:\n return indexedAccessType(node as IndexedAccessTypeNode, context);\n case SyntaxKind.TemplateLiteralTypeSpan:\n return templateLiteralTypeSpan(node as TemplateLiteralTypeSpan, context);\n case SyntaxKind.TemplateLiteralType:\n return templateLiteralType(node as TemplateLiteralTypeNode, context);\n case SyntaxKind.ThisType:\n return thisType(node as ThisTypeNode, context);\n case SyntaxKind.ConditionalType:\n return conditionalType(node as ConditionalTypeNode, context);\n case SyntaxKind.NamedTupleMember:\n return namedTupleType(node as NamedTupleMember, context);\n case SyntaxKind.ConstructorType:\n case SyntaxKind.OptionalType:\n case SyntaxKind.RestType:\n case SyntaxKind.InferType:\n case SyntaxKind.MappedType:\n case SyntaxKind.ImportType:\n case SyntaxKind.ExpressionWithTypeArguments:\n case SyntaxKind.JSDocTypeExpression:\n case SyntaxKind.JSDocAllType:\n case SyntaxKind.JSDocUnknownType:\n case SyntaxKind.JSDocNonNullableType:\n case SyntaxKind.JSDocNullableType:\n case SyntaxKind.JSDocOptionalType:\n case SyntaxKind.JSDocFunctionType:\n case SyntaxKind.JSDocVariadicType:\n case SyntaxKind.JSDocNamepathType:\n case SyntaxKind.JSDocSignature:\n case SyntaxKind.JSDocTypeLiteral:\n return unimplementedSchema(node, context);\n default:\n return unimplementedSchema(node, context);\n }\n}\n\nfunction unimplementedSchema(node: TypeNode, context: SchemaExtractorContext) {\n return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);\n}\n/**\n * whether it's kind of `ts.KeywordTypeSyntaxKind`\n */\nfunction isKeywordType(node: TypeNode): node is KeywordTypeNode {\n switch (node.kind) {\n case SyntaxKind.AnyKeyword:\n case SyntaxKind.BigIntKeyword:\n case SyntaxKind.BooleanKeyword:\n case SyntaxKind.IntrinsicKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.NumberKeyword:\n case SyntaxKind.ObjectKeyword:\n case SyntaxKind.StringKeyword:\n case SyntaxKind.SymbolKeyword:\n case SyntaxKind.UndefinedKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.VoidKeyword:\n return true;\n default:\n return false;\n }\n}\n\nasync function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeIntersectionSchema(location, types);\n}\n\nasync function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeUnionSchema(location, types);\n}\n\n/**\n * not to be confused with \"LiteralType\", which is string/boolean/null.\n * this \"TypeLiteral\" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.\n */\nasync function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {\n const members = await pMapSeries(node.members, (member) => typeElementToSchema(member, context));\n const location = context.getLocation(node);\n return new TypeLiteralSchema(location, members);\n}\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nasync function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n const type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => typeNodeToSchema(arg, context));\n type.typeArgs = args;\n }\n return type;\n}\n\nasync function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = node.name?.getText() || '';\n const params = await getParams(node.parameters, context);\n const returnType = await typeNodeToSchema(node.type, context);\n const location = context.getLocation(node);\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const doc = await context.jsDocToDocSchema(node);\n return new FunctionLikeSchema(location, name, params, returnType, '', modifiers as Modifier[], doc);\n}\n\n/**\n * e.g. `typeof Foo`\n */\nasync function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n const location = context.getLocation(node);\n return new TypeQuerySchema(location, type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n const location = context.getLocation(node);\n return new TypeArraySchema(location, type);\n}\n\n/**\n * e.g. keyof typeof Foo\n */\nasync function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {\n const operatorName = getOperatorName(node.operator);\n const type = await typeNodeToSchema(node.type, context);\n return new TypeOperatorSchema(context.getLocation(node), operatorName, type);\n}\n\nfunction getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {\n switch (operator) {\n case SyntaxKind.KeyOfKeyword:\n return 'keyof';\n case SyntaxKind.UniqueKeyword:\n return 'unique';\n case SyntaxKind.ReadonlyKeyword:\n return 'readonly';\n default:\n throw new Error(`getOperatorName: unable to find operator name for ${operator}`);\n }\n}\n\nasync function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {\n const elements = await pMapSeries(node.elements, async (elem) => {\n const typeSchema = await typeNodeToSchema(elem, context);\n return typeSchema;\n });\n return new TupleTypeSchema(context.getLocation(node), elements);\n}\n\nasync function parenthesizedType(node: ParenthesizedTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n return new ParenthesizedTypeSchema(context.getLocation(node), type);\n}\n\nasync function typePredicate(node: TypePredicateNode, context: SchemaExtractorContext) {\n const parameterName = isIdentifier(node.parameterName) ? node.parameterName.getText() : 'this';\n const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;\n const hasAssertsModifier = Boolean(node.assertsModifier);\n return new TypePredicateSchema(context.getLocation(node), parameterName, type, hasAssertsModifier);\n}\n\nasync function indexedAccessType(node: IndexedAccessTypeNode, context: SchemaExtractorContext) {\n const objectType = await typeNodeToSchema(node.objectType, context);\n const indexType = await typeNodeToSchema(node.indexType, context);\n return new IndexedAccessSchema(context.getLocation(node), objectType, indexType);\n}\n\nasync function templateLiteralType(node: TemplateLiteralTypeNode, context: SchemaExtractorContext) {\n const templateSpans = await pMapSeries(node.templateSpans, (span) => templateLiteralTypeSpan(span, context));\n const head = node.head.text;\n return new TemplateLiteralTypeSchema(context.getLocation(node), head, templateSpans);\n}\n\nasync function templateLiteralTypeSpan(node: TemplateLiteralTypeSpan, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n const literal = node.literal.text;\n return new TemplateLiteralTypeSpanSchema(context.getLocation(node), literal, type);\n}\n\nasync function thisType(node: ThisTypeNode, context: SchemaExtractorContext) {\n return new ThisTypeSchema(context.getLocation(node));\n}\n\nasync function conditionalType(node: ConditionalTypeNode, context: SchemaExtractorContext) {\n const checkType = await typeNodeToSchema(node.checkType, context);\n const extendsType = await typeNodeToSchema(node.extendsType, context);\n const trueType = await typeNodeToSchema(node.trueType, context);\n const falseType = await typeNodeToSchema(node.falseType, context);\n return new ConditionalTypeSchema(context.getLocation(node), checkType, extendsType, trueType, falseType);\n}\n\nasync function namedTupleType(node: NamedTupleMember, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const location = context.getLocation(node);\n const type = await typeNodeToSchema(node.type, context);\n return new NamedTupleSchema(location, type, name);\n}\n"],"mappings":"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"}
@@ -41,13 +41,6 @@ function _parseTypeFromQuickInfo() {
41
41
  };
42
42
  return data;
43
43
  }
44
- function _jsdocToDocSchema() {
45
- const data = require("./utils/jsdoc-to-doc-schema");
46
- _jsdocToDocSchema = function () {
47
- return data;
48
- };
49
- return data;
50
- }
51
44
  class VariableDeclaration {
52
45
  predicate(node) {
53
46
  return node.kind === _typescript().default.SyntaxKind.VariableDeclaration;
@@ -59,18 +52,24 @@ class VariableDeclaration {
59
52
  return [new (_exportIdentifier().ExportIdentifier)(node.name.getText(), node.getSourceFile().fileName)];
60
53
  }
61
54
  async transform(varDec, context) {
62
- var _info$body, _varDec$initializer;
55
+ var _info$body, _varDec$modifiers, _varDec$initializer;
63
56
  const name = this.getName(varDec);
64
57
  const info = await context.getQuickInfo(varDec.name);
65
58
  const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
66
59
  const location = context.getLocation(varDec);
67
- const doc = await (0, _jsdocToDocSchema().jsDocToDocSchema)(varDec, context);
60
+ const doc = await context.jsDocToDocSchema(varDec);
61
+ const modifiers = ((_varDec$modifiers = varDec.modifiers) === null || _varDec$modifiers === void 0 ? void 0 : _varDec$modifiers.map(modifier => modifier.getText())) || [];
68
62
  if (((_varDec$initializer = varDec.initializer) === null || _varDec$initializer === void 0 ? void 0 : _varDec$initializer.kind) === _typescript().default.SyntaxKind.ArrowFunction) {
69
- var _varDec$modifiers;
70
63
  const args = await (0, _getParams().getParams)(varDec.initializer.parameters, context);
64
+ // example => export const useLanesContext: () => LanesContextModel | undefined = () => {
65
+ if (varDec.type) {
66
+ const funcType = await context.resolveType(varDec, '');
67
+ if (isFunctionLike(funcType)) {
68
+ return new (_semanticsEntities().FunctionLikeSchema)(location, name, funcType.params, funcType.returnType, displaySig, modifiers, doc);
69
+ }
70
+ }
71
71
  const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(info);
72
72
  const returnType = await context.resolveType(varDec, typeStr);
73
- const modifiers = ((_varDec$modifiers = varDec.modifiers) === null || _varDec$modifiers === void 0 ? void 0 : _varDec$modifiers.map(modifier => modifier.getText())) || [];
74
73
  return new (_semanticsEntities().FunctionLikeSchema)(location, name, args, returnType, displaySig, modifiers, doc);
75
74
  }
76
75
  const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
@@ -79,5 +78,8 @@ class VariableDeclaration {
79
78
  }
80
79
  }
81
80
  exports.VariableDeclaration = VariableDeclaration;
81
+ function isFunctionLike(node) {
82
+ return node instanceof _semanticsEntities().FunctionLikeSchema;
83
+ }
82
84
 
83
85
  //# sourceMappingURL=variable-declaration.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","initializer","ArrowFunction","args","getParams","parameters","typeStr","parseReturnTypeFromQuickInfo","returnType","resolveType","modifiers","map","modifier","FunctionLikeSchema","parseTypeFromQuickInfo","type","VariableLikeSchema"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { jsDocToDocSchema } from './utils/jsdoc-to-doc-schema';\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 ExportIdentifier(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 jsDocToDocSchema(varDec, context);\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\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"],"mappings":";;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAMA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,mBAAmB,CAA8B;EAC5DC,SAAS,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACL,mBAAmB;EACxD;EAEAM,OAAO,CAACJ,IAA6B,EAAE;IACrC,OAAOA,IAAI,CAACK,IAAI,CAACC,OAAO,EAAE;EAC5B;EAEA,MAAMC,cAAc,CAACP,IAA6B,EAAE;IAClD,OAAO,CAAC,KAAIQ,oCAAgB,EAACR,IAAI,CAACK,IAAI,CAACC,OAAO,EAAE,EAAEN,IAAI,CAACS,aAAa,EAAE,CAACC,QAAQ,CAAC,CAAC;EACnF;EAEA,MAAMC,SAAS,CAACC,MAA+B,EAAEC,OAA+B,EAAuB;IAAA;IACrG,MAAMR,IAAI,GAAG,IAAI,CAACD,OAAO,CAACQ,MAAM,CAAC;IACjC,MAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAY,CAACH,MAAM,CAACP,IAAI,CAAC;IACpD,MAAMW,UAAU,GAAG,CAAAF,IAAI,aAAJA,IAAI,qCAAJA,IAAI,CAAEG,IAAI,+CAAV,WAAYC,aAAa,KAAI,EAAE;IAClD,MAAMC,QAAQ,GAAGN,OAAO,CAACO,WAAW,CAACR,MAAM,CAAC;IAC5C,MAAMS,GAAG,GAAG,MAAM,IAAAC,oCAAgB,EAACV,MAAM,EAAEC,OAAO,CAAC;IACnD,IAAI,wBAAAD,MAAM,CAACW,WAAW,wDAAlB,oBAAoBtB,IAAI,MAAKC,qBAAE,CAACC,UAAU,CAACqB,aAAa,EAAE;MAAA;MAC5D,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAS,EAAEd,MAAM,CAACW,WAAW,CAAmBI,UAAU,EAAEd,OAAO,CAAC;MACvF,MAAMe,OAAO,GAAG,IAAAC,sDAA4B,EAACf,IAAI,CAAC;MAClD,MAAMgB,UAAU,GAAG,MAAMjB,OAAO,CAACkB,WAAW,CAACnB,MAAM,EAAEgB,OAAO,CAAC;MAC7D,MAAMI,SAAS,GAAG,sBAAApB,MAAM,CAACoB,SAAS,sDAAhB,kBAAkBC,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAAC5B,OAAO,EAAE,CAAC,KAAI,EAAE;MAC/E,OAAO,KAAI6B,uCAAkB,EAAChB,QAAQ,EAAEd,IAAI,EAAEoB,IAAI,EAAEK,UAAU,EAAEd,UAAU,EAAEgB,SAAS,EAAgBX,GAAG,CAAC;IAC3G;IACA,MAAMO,OAAO,GAAG,IAAAQ,gDAAsB,EAACtB,IAAI,CAAC;IAC5C,MAAMuB,IAAI,GAAG,MAAMxB,OAAO,CAACkB,WAAW,CAACnB,MAAM,EAAEgB,OAAO,CAAC;IACvD,OAAO,KAAIU,uCAAkB,EAACnB,QAAQ,EAAEd,IAAI,EAAEW,UAAU,EAAEqB,IAAI,EAAE,KAAK,EAAEhB,GAAG,CAAC;EAC7E;AACF;AAAC"}
1
+ {"version":3,"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","modifiers","map","modifier","initializer","ArrowFunction","args","getParams","parameters","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","typeStr","parseReturnTypeFromQuickInfo","parseTypeFromQuickInfo","VariableLikeSchema"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\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 ExportIdentifier(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 getParams((varDec.initializer as ArrowFunction).parameters, context);\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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"}
@@ -60,7 +60,7 @@ class VariableStatementTransformer {
60
60
  const schema = await context.visitDefinition(dec.name);
61
61
  return schema;
62
62
  });
63
- return new (_semanticsEntities().Module)(context.getLocation(node), (0, _lodash().compact)(schemas));
63
+ return new (_semanticsEntities().ModuleSchema)(context.getLocation(node), (0, _lodash().compact)(schemas));
64
64
  }
65
65
  }
66
66
  exports.VariableStatementTransformer = VariableStatementTransformer;
@@ -1 +1 @@
1
- {"version":3,"names":["VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","ExportIdentifier","name","getText","getSourceFile","fileName","transform","context","schemas","pMapSeries","schema","visitDefinition","Module","getLocation","compact"],"sources":["variable-statement.ts"],"sourcesContent":["import { SchemaNode, Module } 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 { ExportIdentifier } from '../export-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 ExportIdentifier(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 Module(context.getLocation(node), compact(schemas));\n }\n}\n"],"mappings":";;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;AACA;AACA;AACA;AACO,MAAMA,4BAA4B,CAA8B;EACrEC,SAAS,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,iBAAiB;EACtD;EAEA,MAAMC,cAAc,CAACL,IAAuB,EAAE;IAC5C,OAAOA,IAAI,CAACM,eAAe,CAACC,YAAY,CAACC,GAAG,CAAEC,GAAG,IAAK;MACpD,OAAO,KAAIC,oCAAgB,EAACD,GAAG,CAACE,IAAI,CAACC,OAAO,EAAE,EAAEH,GAAG,CAACI,aAAa,EAAE,CAACC,QAAQ,CAAC;IAC/E,CAAC,CAAC;EACJ;EAEA,MAAMC,SAAS,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,2BAAM,EAACL,OAAO,CAACM,WAAW,CAACtB,IAAI,CAAC,EAAE,IAAAuB,iBAAO,EAACN,OAAO,CAAC,CAAC;EAChE;AACF;AAAC"}
1
+ {"version":3,"names":["VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","ExportIdentifier","name","getText","getSourceFile","fileName","transform","context","schemas","pMapSeries","schema","visitDefinition","ModuleSchema","getLocation","compact"],"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 { ExportIdentifier } from '../export-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 ExportIdentifier(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;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;AACA;AACA;AACA;AACO,MAAMA,4BAA4B,CAA8B;EACrEC,SAAS,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,iBAAiB;EACtD;EAEA,MAAMC,cAAc,CAACL,IAAuB,EAAE;IAC5C,OAAOA,IAAI,CAACM,eAAe,CAACC,YAAY,CAACC,GAAG,CAAEC,GAAG,IAAK;MACpD,OAAO,KAAIC,oCAAgB,EAACD,GAAG,CAACE,IAAI,CAACC,OAAO,EAAE,EAAEH,GAAG,CAACI,aAAa,EAAE,CAACC,QAAQ,CAAC;IAC/E,CAAC,CAAC;EACJ;EAEA,MAAMC,SAAS,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,CAAC;EACtE;AACF;AAAC"}
@@ -5,6 +5,7 @@ import { DependencyResolverMain } from '@teambit/dependency-resolver';
5
5
  import { SchemaNode, APISchema } from '@teambit/semantics.entities.semantic-schema';
6
6
  import { Component } from '@teambit/component';
7
7
  import { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';
8
+ import { Formatter } from '@teambit/formatter';
8
9
  import { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';
9
10
  import { SchemaExtractorContext } from './schema-extractor-context';
10
11
  export declare class TypeScriptExtractor implements SchemaExtractor {
@@ -19,7 +20,7 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
19
20
  /**
20
21
  * extract a component schema.
21
22
  */
22
- extract(component: Component): Promise<APISchema>;
23
+ extract(component: Component, formatter: Formatter): Promise<APISchema>;
23
24
  dispose(): void;
24
25
  computeExportedIdentifiers(node: Node, context: SchemaExtractorContext): Promise<import("./export-identifier").ExportIdentifier[]>;
25
26
  private createContext;
@@ -77,11 +77,11 @@ class TypeScriptExtractor {
77
77
  /**
78
78
  * extract a component schema.
79
79
  */
80
- async extract(component) {
80
+ async extract(component, formatter) {
81
81
  const tsserver = await this.getTsServer();
82
82
  const mainFile = component.mainFile;
83
83
  const mainAst = this.parseSourceFile(mainFile);
84
- const context = await this.createContext(tsserver, component);
84
+ const context = await this.createContext(tsserver, component, formatter);
85
85
  const exportNames = await this.computeExportedIdentifiers(mainAst, context);
86
86
  context.setExports(new (_exportList().ExportList)(exportNames));
87
87
  const moduleSchema = await this.computeSchema(mainAst, context);
@@ -101,9 +101,9 @@ class TypeScriptExtractor {
101
101
  }
102
102
  return transformer.getIdentifiers(node, context);
103
103
  }
104
- async createContext(tsserver, component) {
104
+ async createContext(tsserver, component, formatter) {
105
105
  const componentDeps = await this.getComponentDeps(component);
106
- return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this, componentDeps);
106
+ return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this, componentDeps, formatter);
107
107
  }
108
108
  async getComponentDeps(component) {
109
109
  const deps = await this.depResolver.getDependencies(component);
@@ -1 +1 @@
1
- {"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","undefined","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","id","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","transform","getComponentIDByPath","getComponentIdByPath","transformers","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = await this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, component.id);\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n if (!transformer || !transformer.getIdentifiers) {\n throw new TransformerNotFound(node, context.component, context.getLocation(node));\n }\n return transformer.getIdentifiers(node, context);\n }\n\n private async createContext(tsserver: TsserverClient, component: Component): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, context.component, context.getLocation(node));\n\n return transformer;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","undefined","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","formatter","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","id","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","transform","getComponentIDByPath","getComponentIdByPath","transformers","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, ModuleSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { Formatter } from '@teambit/formatter';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component, formatter: Formatter): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = await this.createContext(tsserver, component, formatter);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, component.id);\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n if (!transformer || !transformer.getIdentifiers) {\n throw new TransformerNotFound(node, context.component, context.getLocation(node));\n }\n return transformer.getIdentifiers(node, context);\n }\n\n private async createContext(\n tsserver: TsserverClient,\n component: Component,\n formatter: Formatter\n ): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps, formatter);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, context.component, context.getLocation(node));\n\n return transformer;\n }\n}\n"],"mappings":"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"}
@@ -359,11 +359,11 @@ class TypescriptMain {
359
359
  aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
360
360
  const tsconfigWriter = new (_tsconfigWriter().TsconfigWriter)(workspace, logger);
361
361
  const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);
362
- schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_exportAssignmentDeclaration().ExportAssignmentDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)(), new (_transformers().BindingElementTransformer)()]);
362
+ schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_exportAssignmentDeclaration().ExportAssignmentDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDeclarationTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)(), new (_transformers().BindingElementTransformer)()]);
363
363
  if (workspace) {
364
- workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));
365
- workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));
366
- workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));
364
+ workspace.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));
365
+ workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));
366
+ workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));
367
367
  }
368
368
  const checkTypesCmd = new (_checkTypes().CheckTypesCmd)(tsMain, workspace, logger);
369
369
  const writeTsconfigCmd = new (_writeTsconfig().default)(tsMain);
@@ -1 +1 @@
1
- {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","envs","tsConfigWriter","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","cleanTsconfigJson","list","runtime","createEnvironment","execContext","getEnvExecutionContext","results","TsconfigWriter","clean","writeTsconfigJson","cleanResults","writeResults","write","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclaration","ExportAssignmentDeclaration","FunctionDeclaration","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\nimport { ExportAssignmentDeclaration } from './transformers/export-assignment-declaration';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsconfigWriterOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n dryRunWithTsconfig?: boolean;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace,\n private depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace\n );\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n async cleanTsconfigJson(options: TsconfigWriterOptions = {}) {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n const results = await new TsconfigWriter(this.workspace, this.logger).clean(execContext, options);\n\n return results;\n }\n\n async writeTsconfigJson(options: TsconfigWriterOptions = {}): Promise<{\n cleanResults?: string[];\n writeResults: TsconfigPathsPerEnv[];\n }> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n let cleanResults: string[] | undefined;\n if (options.clean) {\n cleanResults = await this.tsConfigWriter.clean(execContext, options);\n }\n\n const writeResults = await this.tsConfigWriter.write(execContext, options);\n\n return { writeResults, cleanResults };\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n EnvsAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain\n ],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new ExportAssignmentDeclaration(),\n new FunctionDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n const writeTsconfigCmd = new WriteTsconfigCmd(tsMain);\n cli.register(checkTypesCmd, writeTsconfigCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n\nexport default TypescriptMain;\n"],"mappings":"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"}
1
+ {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","envs","tsConfigWriter","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","cleanTsconfigJson","list","runtime","createEnvironment","execContext","getEnvExecutionContext","results","TsconfigWriter","clean","writeTsconfigJson","cleanResults","writeResults","write","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","pMapSeries","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsconfigWriter","tsMain","register","ExportDeclaration","ExportAssignmentDeclaration","FunctionDeclaration","VariableStatementTransformer","VariableDeclaration","SourceFileTransformer","TypeAliasTransformer","ClassDeclarationTransformer","InterfaceDeclarationTransformer","EnumDeclarationTransformer","BindingElementTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","writeTsconfigCmd","WriteTsconfigCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","EnvsAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport EnvsAspect, { EnvsMain } from '@teambit/envs';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDeclarationTransformer,\n InterfaceDeclarationTransformer,\n EnumDeclarationTransformer,\n BindingElementTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\nimport { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';\nimport WriteTsconfigCmd from './cmds/write-tsconfig.cmd';\nimport { ExportAssignmentDeclaration } from './transformers/export-assignment-declaration';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsconfigWriterOptions = {\n clean?: boolean;\n silent?: boolean; // no prompt\n dedupe?: boolean;\n dryRun?: boolean;\n dryRunWithTsconfig?: boolean;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace,\n private depResolver: DependencyResolverMain,\n private envs: EnvsMain,\n private tsConfigWriter: TsconfigWriter\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace\n );\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n async cleanTsconfigJson(options: TsconfigWriterOptions = {}) {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n const results = await new TsconfigWriter(this.workspace, this.logger).clean(execContext, options);\n\n return results;\n }\n\n async writeTsconfigJson(options: TsconfigWriterOptions = {}): Promise<{\n cleanResults?: string[];\n writeResults: TsconfigPathsPerEnv[];\n }> {\n const components = await this.workspace.list();\n const runtime = await this.envs.createEnvironment(components);\n const execContext = runtime.getEnvExecutionContext();\n\n let cleanResults: string[] | undefined;\n if (options.clean) {\n cleanResults = await this.tsConfigWriter.clean(execContext, options);\n }\n\n const writeResults = await this.tsConfigWriter.write(execContext, options);\n\n return { writeResults, cleanResults };\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n EnvsAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain,\n EnvsMain\n ],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsconfigWriter = new TsconfigWriter(workspace, logger);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver, envs, tsconfigWriter);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new ExportAssignmentDeclaration(),\n new FunctionDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDeclarationTransformer(),\n new InterfaceDeclarationTransformer(),\n new EnumDeclarationTransformer(),\n new BindingElementTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(tsMain));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n const writeTsconfigCmd = new WriteTsconfigCmd(tsMain);\n cli.register(checkTypesCmd, writeTsconfigCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n\nexport default TypescriptMain;\n"],"mappings":"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"}