@teambit/typescript 0.0.1160 → 0.0.1162

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 (42) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.js +15 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/{preview-1694661423555.js → preview-1694747817610.js} +2 -2
  5. package/dist/schema-extractor-context.d.ts +2 -0
  6. package/dist/schema-extractor-context.js +17 -5
  7. package/dist/schema-extractor-context.js.map +1 -1
  8. package/dist/schema-transformer.d.ts +4 -0
  9. package/dist/schema-transformer.js.map +1 -1
  10. package/dist/transformers/binding-element.js +3 -2
  11. package/dist/transformers/binding-element.js.map +1 -1
  12. package/dist/transformers/constructor.js +1 -1
  13. package/dist/transformers/constructor.js.map +1 -1
  14. package/dist/transformers/function-like.js +1 -1
  15. package/dist/transformers/function-like.js.map +1 -1
  16. package/dist/transformers/get-accessor.js +1 -1
  17. package/dist/transformers/get-accessor.js.map +1 -1
  18. package/dist/transformers/parameter.d.ts +2 -2
  19. package/dist/transformers/parameter.js +11 -15
  20. package/dist/transformers/parameter.js.map +1 -1
  21. package/dist/transformers/property-declaration.js +3 -2
  22. package/dist/transformers/property-declaration.js.map +1 -1
  23. package/dist/transformers/type-reference.js +2 -2
  24. package/dist/transformers/type-reference.js.map +1 -1
  25. package/dist/transformers/variable-declaration.js +3 -2
  26. package/dist/transformers/variable-declaration.js.map +1 -1
  27. package/dist/typescript.extractor.d.ts +5 -2
  28. package/dist/typescript.extractor.js +19 -3
  29. package/dist/typescript.extractor.js.map +1 -1
  30. package/dist/typescript.main.runtime.d.ts +8 -4
  31. package/dist/typescript.main.runtime.js +15 -6
  32. package/dist/typescript.main.runtime.js.map +1 -1
  33. package/dist/typescript.parser.js +7 -7
  34. package/dist/typescript.parser.js.map +1 -1
  35. package/dist/typescript.parser.spec.js +3 -3
  36. package/dist/typescript.parser.spec.js.map +1 -1
  37. package/package.json +19 -19
  38. package/transformers/binding-element.ts +2 -1
  39. package/transformers/parameter.ts +12 -16
  40. package/transformers/property-declaration.ts +2 -1
  41. package/transformers/type-reference.ts +2 -2
  42. package/transformers/variable-declaration.ts +3 -1
@@ -43,7 +43,8 @@ class ParameterTransformer {
43
43
  return [];
44
44
  }
45
45
  async transform(node, context) {
46
- return new (_semanticsEntities().ParameterSchema)(context.getLocation(node), this.getName(node), await this.getType(node, context), Boolean(node.questionToken), node.initializer ? node.initializer.getText() : undefined, undefined, await this.getObjectBindingNodes(node, context));
46
+ const type = await this.getType(node, context);
47
+ return new (_semanticsEntities().ParameterSchema)(context.getLocation(node), this.getName(node), type, Boolean(node.questionToken), node.initializer ? node.initializer.getText() : undefined, undefined, await this.getObjectBindingNodes(node, type, context), Boolean(node.dotDotDotToken));
47
48
  }
48
49
  getName(param) {
49
50
  if ((0, _typescript().isIdentifier)(param.name)) {
@@ -86,23 +87,18 @@ class ParameterTransformer {
86
87
  }
87
88
  throw new Error(`unknown param type`);
88
89
  }
89
- async getObjectBindingNodes(param, context) {
90
+ async getObjectBindingNodes(param, paramType, context) {
90
91
  if (param.name.kind !== _typescript().SyntaxKind.ObjectBindingPattern) return undefined;
91
92
  return (0, _pMapSeries().default)(param.name.elements, async elem => {
92
- const info = elem.name.kind === _typescript().SyntaxKind.ObjectBindingPattern ? undefined : await context.getQuickInfo(elem.name);
93
- // @todo look into extracting nested objected binding patters
94
- /**
95
- * apiNode: {
96
- api: {
97
- name,
98
- signature: defaultSignature,
99
- doc,
100
- location: { filePath },
101
- },
102
- },
103
- */
93
+ var _paramType$findNode;
94
+ const existing = (_paramType$findNode = paramType.findNode) === null || _paramType$findNode === void 0 ? void 0 : _paramType$findNode.call(paramType, node => {
95
+ return node.name === elem.name.getText().trim();
96
+ });
97
+ if (existing) return existing;
98
+ const info = await context.getQuickInfo(elem.name);
104
99
  const parsed = info ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info) : elem.getText();
105
- return new (_semanticsEntities().InferenceTypeSchema)(context.getLocation(param), parsed, elem.name.getText());
100
+ const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;
101
+ return new (_semanticsEntities().InferenceTypeSchema)(context.getLocation(elem.name), parsed, elem.name.getText(), defaultValue);
106
102
  });
107
103
  }
108
104
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_semanticsEntities","_pMapSeries","_interopRequireDefault","_parseTypeFromQuickInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ParameterTransformer","predicate","node","kind","ts","SyntaxKind","Parameter","getIdentifiers","transform","context","ParameterSchema","getLocation","getName","getType","Boolean","questionToken","initializer","getText","undefined","getObjectBindingNodes","param","isIdentifier","name","elements","map","elem","elementsStr","join","ArrayBindingPattern","type","computeSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","pMapSeries","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error","exports"],"sources":["parameter.ts"],"sourcesContent":["import ts, {\n BindingElement,\n isIdentifier,\n Node,\n ParameterDeclaration,\n SyntaxKind,\n ArrayBindingElement,\n} from 'typescript';\nimport {\n InferenceTypeSchema,\n ParameterSchema,\n SchemaNode,\n TupleTypeSchema,\n TypeLiteralSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class ParameterTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Parameter;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ParameterDeclaration, context: SchemaExtractorContext) {\n return new ParameterSchema(\n context.getLocation(node),\n this.getName(node),\n await this.getType(node, context),\n Boolean(node.questionToken),\n node.initializer ? node.initializer.getText() : undefined,\n undefined,\n await this.getObjectBindingNodes(node, context)\n );\n }\n\n getName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n }\n\n async getType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n return context.computeSchema(param.type);\n }\n\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n }\n\n async getObjectBindingNodes(\n param: ParameterDeclaration,\n context: SchemaExtractorContext\n ): Promise<SchemaNode[] | undefined> {\n if (param.name.kind !== SyntaxKind.ObjectBindingPattern) return undefined;\n return pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info =\n elem.name.kind === SyntaxKind.ObjectBindingPattern ? undefined : await context.getQuickInfo(elem.name);\n // @todo look into extracting nested objected binding patters\n /**\n * apiNode: {\n api: {\n name,\n signature: defaultSignature,\n doc, \n location: { filePath },\n },\n },\n */\n const parsed = info ? parseTypeFromQuickInfo(info) : elem.getText();\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_semanticsEntities","_pMapSeries","_interopRequireDefault","_parseTypeFromQuickInfo","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ParameterTransformer","predicate","node","kind","ts","SyntaxKind","Parameter","getIdentifiers","transform","context","type","getType","ParameterSchema","getLocation","getName","Boolean","questionToken","initializer","getText","undefined","getObjectBindingNodes","dotDotDotToken","param","isIdentifier","name","elements","map","elem","elementsStr","join","ArrayBindingPattern","computeSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","pMapSeries","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error","paramType","_paramType$findNode","existing","findNode","trim","defaultValue","exports"],"sources":["parameter.ts"],"sourcesContent":["import ts, {\n BindingElement,\n isIdentifier,\n Node,\n ParameterDeclaration,\n SyntaxKind,\n ArrayBindingElement,\n} from 'typescript';\nimport {\n InferenceTypeSchema,\n ParameterSchema,\n SchemaNode,\n TupleTypeSchema,\n TypeLiteralSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class ParameterTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.Parameter;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: ParameterDeclaration, context: SchemaExtractorContext) {\n const type = await this.getType(node, context);\n return new ParameterSchema(\n context.getLocation(node),\n this.getName(node),\n type,\n Boolean(node.questionToken),\n node.initializer ? node.initializer.getText() : undefined,\n undefined,\n await this.getObjectBindingNodes(node, type, context),\n Boolean(node.dotDotDotToken)\n );\n }\n\n getName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n }\n\n async getType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n return context.computeSchema(param.type);\n }\n\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n }\n\n async getObjectBindingNodes(\n param: ParameterDeclaration,\n paramType: SchemaNode,\n context: SchemaExtractorContext\n ): Promise<SchemaNode[] | undefined> {\n if (param.name.kind !== SyntaxKind.ObjectBindingPattern) return undefined;\n return pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const existing = paramType.findNode?.((node) => {\n return node.name === elem.name.getText().trim();\n });\n if (existing) return existing;\n const info = await context.getQuickInfo(elem.name);\n const parsed = info ? parseTypeFromQuickInfo(info) : elem.getText();\n const defaultValue = elem.initializer ? elem.initializer.getText() : undefined;\n return new InferenceTypeSchema(context.getLocation(elem.name), parsed, elem.name.getText(), defaultValue);\n });\n }\n}\n"],"mappings":"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"}
@@ -43,12 +43,13 @@ class PropertyDeclarationTransformer {
43
43
  var _info$body;
44
44
  const name = node.name.getText();
45
45
  const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);
46
- const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || node.getText();
46
+ const displaySig = (info === null || info === void 0 || (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || node.getText();
47
47
  const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
48
48
  const type = await context.resolveType(node, typeStr);
49
49
  const isOptional = Boolean(node.questionToken);
50
50
  const doc = await context.jsDocToDocSchema(node);
51
- return new (_semanticsEntities().VariableLikeSchema)(context.getLocation(node), name, displaySig, type, isOptional, doc);
51
+ const defaultValue = node.initializer ? node.initializer.getText() : undefined;
52
+ return new (_semanticsEntities().VariableLikeSchema)(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);
52
53
  }
53
54
  }
54
55
  exports.PropertyDeclarationTransformer = PropertyDeclarationTransformer;
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","require","_semanticsEntities","_parseTypeFromQuickInfo","PropertyDeclarationTransformer","predicate","node","kind","SyntaxKind","PropertyDeclaration","PropertySignature","getIdentifiers","isComputedProperty","name","ComputedPropertyName","transform","context","_info$body","getText","info","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","doc","jsDocToDocSchema","VariableLikeSchema","getLocation","exports"],"sources":["property-declaration.ts"],"sourcesContent":["import { Node, PropertyDeclaration, PropertySignature, SyntaxKind } from 'typescript';\nimport { VariableLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class PropertyDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n // [computedName]: string\n private isComputedProperty(node: PropertyDeclaration | PropertySignature) {\n return node.name.kind === SyntaxKind.ComputedPropertyName;\n }\n\n // @todo - handle arrow function objects\n async transform(node: PropertyDeclaration | PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || node.getText();\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}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAMI,8BAA8B,CAA8B;EACvEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,mBAAmB,IAAIH,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACE,iBAAiB;EACnG;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;;EAEA;EACQC,kBAAkBA,CAACN,IAA6C,EAAE;IACxE,OAAOA,IAAI,CAACO,IAAI,CAACN,IAAI,KAAKC,wBAAU,CAACM,oBAAoB;EAC3D;;EAEA;EACA,MAAMC,SAASA,CAACT,IAA6C,EAAEU,OAA+B,EAAE;IAAA,IAAAC,UAAA;IAC9F,MAAMJ,IAAI,GAAGP,IAAI,CAACO,IAAI,CAACK,OAAO,CAAC,CAAC;IAChC,MAAMC,IAAI,GAAG,IAAI,CAACP,kBAAkB,CAACN,IAAI,CAAC,GAAGc,SAAS,GAAG,MAAMJ,OAAO,CAACK,YAAY,CAACf,IAAI,CAACO,IAAI,CAAC;IAC9F,MAAMS,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,wBAAAF,UAAA,GAAJE,IAAI,CAAEI,IAAI,cAAAN,UAAA,uBAAVA,UAAA,CAAYO,aAAa,KAAIlB,IAAI,CAACY,OAAO,CAAC,CAAC;IAC9D,MAAMO,OAAO,GAAG,IAAAC,gDAAsB,EAACP,IAAI,CAAC;IAC5C,MAAMQ,IAAI,GAAG,MAAMX,OAAO,CAACY,WAAW,CAACtB,IAAI,EAAEmB,OAAO,CAAC;IACrD,MAAMI,UAAU,GAAGC,OAAO,CAACxB,IAAI,CAACyB,aAAa,CAAC;IAC9C,MAAMC,GAAG,GAAG,MAAMhB,OAAO,CAACiB,gBAAgB,CAAC3B,IAAI,CAAC;IAChD,OAAO,KAAI4B,uCAAkB,EAAClB,OAAO,CAACmB,WAAW,CAAC7B,IAAI,CAAC,EAAEO,IAAI,EAAES,UAAU,EAAEK,IAAI,EAAEE,UAAU,EAAEG,GAAG,CAAC;EACnG;AACF;AAACI,OAAA,CAAAhC,8BAAA,GAAAA,8BAAA"}
1
+ {"version":3,"names":["_typescript","data","require","_semanticsEntities","_parseTypeFromQuickInfo","PropertyDeclarationTransformer","predicate","node","kind","SyntaxKind","PropertyDeclaration","PropertySignature","getIdentifiers","isComputedProperty","name","ComputedPropertyName","transform","context","_info$body","getText","info","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","isOptional","Boolean","questionToken","doc","jsDocToDocSchema","defaultValue","initializer","VariableLikeSchema","getLocation","exports"],"sources":["property-declaration.ts"],"sourcesContent":["import { Node, PropertyDeclaration, PropertySignature, SyntaxKind } from 'typescript';\nimport { VariableLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class PropertyDeclarationTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === SyntaxKind.PropertyDeclaration || node.kind === SyntaxKind.PropertySignature;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n // [computedName]: string\n private isComputedProperty(node: PropertyDeclaration | PropertySignature) {\n return node.name.kind === SyntaxKind.ComputedPropertyName;\n }\n\n // @todo - handle arrow function objects\n async transform(node: PropertyDeclaration | PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = this.isComputedProperty(node) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || node.getText();\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 const defaultValue = node.initializer ? node.initializer.getText() : undefined;\n return new VariableLikeSchema(context.getLocation(node), name, displaySig, type, isOptional, doc, defaultValue);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGO,MAAMI,8BAA8B,CAA8B;EACvEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACC,mBAAmB,IAAIH,IAAI,CAACC,IAAI,KAAKC,wBAAU,CAACE,iBAAiB;EACnG;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;;EAEA;EACQC,kBAAkBA,CAACN,IAA6C,EAAE;IACxE,OAAOA,IAAI,CAACO,IAAI,CAACN,IAAI,KAAKC,wBAAU,CAACM,oBAAoB;EAC3D;;EAEA;EACA,MAAMC,SAASA,CAACT,IAA6C,EAAEU,OAA+B,EAAE;IAAA,IAAAC,UAAA;IAC9F,MAAMJ,IAAI,GAAGP,IAAI,CAACO,IAAI,CAACK,OAAO,CAAC,CAAC;IAChC,MAAMC,IAAI,GAAG,IAAI,CAACP,kBAAkB,CAACN,IAAI,CAAC,GAAGc,SAAS,GAAG,MAAMJ,OAAO,CAACK,YAAY,CAACf,IAAI,CAACO,IAAI,CAAC;IAC9F,MAAMS,UAAU,GAAG,CAAAH,IAAI,aAAJA,IAAI,gBAAAF,UAAA,GAAJE,IAAI,CAAEI,IAAI,cAAAN,UAAA,uBAAVA,UAAA,CAAYO,aAAa,KAAIlB,IAAI,CAACY,OAAO,CAAC,CAAC;IAC9D,MAAMO,OAAO,GAAG,IAAAC,gDAAsB,EAACP,IAAI,CAAC;IAC5C,MAAMQ,IAAI,GAAG,MAAMX,OAAO,CAACY,WAAW,CAACtB,IAAI,EAAEmB,OAAO,CAAC;IACrD,MAAMI,UAAU,GAAGC,OAAO,CAACxB,IAAI,CAACyB,aAAa,CAAC;IAC9C,MAAMC,GAAG,GAAG,MAAMhB,OAAO,CAACiB,gBAAgB,CAAC3B,IAAI,CAAC;IAChD,MAAM4B,YAAY,GAAG5B,IAAI,CAAC6B,WAAW,GAAG7B,IAAI,CAAC6B,WAAW,CAACjB,OAAO,CAAC,CAAC,GAAGE,SAAS;IAC9E,OAAO,KAAIgB,uCAAkB,EAACpB,OAAO,CAACqB,WAAW,CAAC/B,IAAI,CAAC,EAAEO,IAAI,EAAES,UAAU,EAAEK,IAAI,EAAEE,UAAU,EAAEG,GAAG,EAAEE,YAAY,CAAC;EACjH;AACF;AAACI,OAAA,CAAAlC,8BAAA,GAAAA,8BAAA"}
@@ -42,10 +42,10 @@ class TypeReferenceTransformer {
42
42
  }
43
43
  async transform(node, context) {
44
44
  const name = node.typeName.getText();
45
- const type = await context.resolveType(node, name, false);
45
+ let type = await context.resolveType(node, name, false);
46
46
  if (node.typeArguments && type instanceof _semanticsEntities().TypeRefSchema) {
47
47
  const args = await (0, _pMapSeries().default)(node.typeArguments, arg => context.computeSchema(arg));
48
- type.typeArgs = args;
48
+ type = type.withTypeArgs(args);
49
49
  }
50
50
  return type;
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","TypeReferenceTransformer","predicate","node","kind","ts","SyntaxKind","TypeReference","getIdentifiers","transform","context","name","typeName","getText","type","resolveType","typeArguments","TypeRefSchema","args","pMapSeries","arg","computeSchema","typeArgs","exports"],"sources":["type-reference.ts"],"sourcesContent":["import ts, { Node, TypeReferenceNode } from 'typescript';\nimport { TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\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 */\nexport class TypeReferenceTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeReference;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(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) => context.computeSchema(arg));\n type.typeArgs = args;\n }\n return type;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKtC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,wBAAwB,CAA8B;EACjEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,aAAa;EAClD;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAAuB,EAAEO,OAA+B,EAAE;IACxE,MAAMC,IAAI,GAAGR,IAAI,CAACS,QAAQ,CAACC,OAAO,CAAC,CAAC;IACpC,MAAMC,IAAI,GAAG,MAAMJ,OAAO,CAACK,WAAW,CAACZ,IAAI,EAAEQ,IAAI,EAAE,KAAK,CAAC;IACzD,IAAIR,IAAI,CAACa,aAAa,IAAIF,IAAI,YAAYG,kCAAa,EAAE;MACvD,MAAMC,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAAChB,IAAI,CAACa,aAAa,EAAGI,GAAG,IAAKV,OAAO,CAACW,aAAa,CAACD,GAAG,CAAC,CAAC;MACtFN,IAAI,CAACQ,QAAQ,GAAGJ,IAAI;IACtB;IACA,OAAOJ,IAAI;EACb;AACF;AAACS,OAAA,CAAAtB,wBAAA,GAAAA,wBAAA"}
1
+ {"version":3,"names":["_typescript","data","_interopRequireDefault","require","_semanticsEntities","_pMapSeries","obj","__esModule","default","TypeReferenceTransformer","predicate","node","kind","ts","SyntaxKind","TypeReference","getIdentifiers","transform","context","name","typeName","getText","type","resolveType","typeArguments","TypeRefSchema","args","pMapSeries","arg","computeSchema","withTypeArgs","exports"],"sources":["type-reference.ts"],"sourcesContent":["import ts, { Node, TypeReferenceNode } from 'typescript';\nimport { TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { Identifier } from '../identifier';\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 */\nexport class TypeReferenceTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeReference;\n }\n\n async getIdentifiers(): Promise<Identifier[]> {\n return [];\n }\n\n async transform(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n let type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => context.computeSchema(arg));\n type = type.withTypeArgs(args);\n }\n return type;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAC,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAKtC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,wBAAwB,CAA8B;EACjEC,SAASA,CAACC,IAAU,EAAE;IACpB,OAAOA,IAAI,CAACC,IAAI,KAAKC,qBAAE,CAACC,UAAU,CAACC,aAAa;EAClD;EAEA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,OAAO,EAAE;EACX;EAEA,MAAMC,SAASA,CAACN,IAAuB,EAAEO,OAA+B,EAAE;IACxE,MAAMC,IAAI,GAAGR,IAAI,CAACS,QAAQ,CAACC,OAAO,CAAC,CAAC;IACpC,IAAIC,IAAI,GAAG,MAAMJ,OAAO,CAACK,WAAW,CAACZ,IAAI,EAAEQ,IAAI,EAAE,KAAK,CAAC;IACvD,IAAIR,IAAI,CAACa,aAAa,IAAIF,IAAI,YAAYG,kCAAa,EAAE;MACvD,MAAMC,IAAI,GAAG,MAAM,IAAAC,qBAAU,EAAChB,IAAI,CAACa,aAAa,EAAGI,GAAG,IAAKV,OAAO,CAACW,aAAa,CAACD,GAAG,CAAC,CAAC;MACtFN,IAAI,GAAGA,IAAI,CAACQ,YAAY,CAACJ,IAAI,CAAC;IAChC;IACA,OAAOJ,IAAI;EACb;AACF;AAACS,OAAA,CAAAtB,wBAAA,GAAAA,wBAAA"}
@@ -54,7 +54,7 @@ class VariableDeclaration {
54
54
  var _info$body, _varDec$modifiers, _varDec$initializer;
55
55
  const name = this.getName(varDec);
56
56
  const info = await context.getQuickInfo(varDec.name);
57
- const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
57
+ const displaySig = (info === null || info === void 0 || (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
58
58
  const location = context.getLocation(varDec);
59
59
  const doc = await context.jsDocToDocSchema(varDec);
60
60
  const modifiers = ((_varDec$modifiers = varDec.modifiers) === null || _varDec$modifiers === void 0 ? void 0 : _varDec$modifiers.map(modifier => modifier.getText())) || [];
@@ -73,7 +73,8 @@ class VariableDeclaration {
73
73
  }
74
74
  const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
75
75
  const type = await context.resolveType(varDec, typeStr);
76
- return new (_semanticsEntities().VariableLikeSchema)(location, name, displaySig, type, false, doc);
76
+ const defaultValue = varDec.initializer ? varDec.initializer.getText() : undefined;
77
+ return new (_semanticsEntities().VariableLikeSchema)(location, name, displaySig, type, false, doc, defaultValue);
77
78
  }
78
79
  }
79
80
  exports.VariableDeclaration = VariableDeclaration;
@@ -1 +1 @@
1
- {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","obj","__esModule","default","VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","transform","varDec","context","_info$body","_varDec$modifiers","_varDec$initializer","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","modifiers","map","modifier","initializer","ArrowFunction","args","pMapSeries","parameters","param","computeSchema","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","typeStr","parseReturnTypeFromQuickInfo","parseTypeFromQuickInfo","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n const location = context.getLocation(varDec);\n const doc = await context.jsDocToDocSchema(varDec);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n // example => export const useLanesContext: () => LanesContextModel | undefined = () => {\n if (varDec.type) {\n const funcType = await context.resolveType(varDec, '');\n if (isFunctionLike(funcType)) {\n return new FunctionLikeSchema(\n location,\n name,\n funcType.params,\n funcType.returnType,\n displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n }\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableLikeSchema(location, name, displaySig, type, false, doc);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_semanticsEntities","data","require","_typescript","_interopRequireDefault","_pMapSeries","_parseTypeFromQuickInfo","_identifier","obj","__esModule","default","VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","Identifier","getSourceFile","fileName","transform","varDec","context","_info$body","_varDec$modifiers","_varDec$initializer","info","getQuickInfo","displaySig","body","displayString","location","getLocation","doc","jsDocToDocSchema","modifiers","map","modifier","initializer","ArrowFunction","args","pMapSeries","parameters","param","computeSchema","type","funcType","resolveType","isFunctionLike","FunctionLikeSchema","params","returnType","typeStr","parseReturnTypeFromQuickInfo","parseTypeFromQuickInfo","defaultValue","undefined","VariableLikeSchema","exports"],"sources":["variable-declaration.ts"],"sourcesContent":["import {\n SchemaNode,\n VariableLikeSchema,\n FunctionLikeSchema,\n Modifier,\n ParameterSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport pMapSeries from 'p-map-series';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { Identifier } from '../identifier';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new Identifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n const location = context.getLocation(varDec);\n const doc = await context.jsDocToDocSchema(varDec);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = (await pMapSeries((varDec.initializer as ArrowFunction).parameters, async (param) =>\n context.computeSchema(param)\n )) as ParameterSchema[];\n // example => export const useLanesContext: () => LanesContextModel | undefined = () => {\n if (varDec.type) {\n const funcType = await context.resolveType(varDec, '');\n if (isFunctionLike(funcType)) {\n return new FunctionLikeSchema(\n location,\n name,\n funcType.params,\n funcType.returnType,\n displaySig,\n modifiers as Modifier[],\n doc\n );\n }\n }\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n const defaultValue = varDec.initializer ? varDec.initializer.getText() : undefined;\n\n return new VariableLikeSchema(location, name, displaySig, type, false, doc, defaultValue);\n }\n}\n\nfunction isFunctionLike(node: SchemaNode): node is FunctionLikeSchema {\n return node instanceof FunctionLikeSchema;\n}\n"],"mappings":"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"}
@@ -9,13 +9,14 @@ import { EnvContext } from '@teambit/envs';
9
9
  import { Logger } from '@teambit/logger';
10
10
  import { AspectLoaderMain } from '@teambit/aspect-loader';
11
11
  import { ScopeMain } from '@teambit/scope';
12
- import { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';
12
+ import { TypescriptMain, SchemaTransformerSlot, APITransformerSlot } from './typescript.main.runtime';
13
13
  import { SchemaExtractorContext } from './schema-extractor-context';
14
14
  import { Identifier } from './identifier';
15
15
  import { ExtractorOptions } from './extractor-options';
16
16
  export declare class TypeScriptExtractor implements SchemaExtractor {
17
17
  private tsconfig;
18
18
  private schemaTransformerSlot;
19
+ private apiTransformerSlot;
19
20
  private tsMain;
20
21
  private rootTsserverPath;
21
22
  private rootContextPath;
@@ -24,7 +25,7 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
24
25
  private scope;
25
26
  private aspectLoader;
26
27
  private logger;
27
- constructor(tsconfig: any, schemaTransformerSlot: SchemaTransformerSlot, tsMain: TypescriptMain, rootTsserverPath: string, rootContextPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined, scope: ScopeMain, aspectLoader: AspectLoaderMain, logger: Logger);
28
+ constructor(tsconfig: any, schemaTransformerSlot: SchemaTransformerSlot, apiTransformerSlot: APITransformerSlot, tsMain: TypescriptMain, rootTsserverPath: string, rootContextPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined, scope: ScopeMain, aspectLoader: AspectLoaderMain, logger: Logger);
28
29
  parseSourceFile(file: AbstractVinyl): SourceFile;
29
30
  /**
30
31
  * extract a component schema.
@@ -38,10 +39,12 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
38
39
  private tsserver;
39
40
  private getTsServer;
40
41
  computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode>;
42
+ transformAPI(schema: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode>;
41
43
  getComponentIDByPath(file: string): Promise<import("@teambit/component").ComponentID | null | undefined>;
42
44
  /**
43
45
  * select the correct transformer for a node.
44
46
  */
45
47
  getTransformer(node: Node, context: SchemaExtractorContext): import("./schema-transformer").SchemaTransformer | undefined;
48
+ getAPITransformer(node: SchemaNode): import("./schema-transformer").SchemaNodeTransformer | undefined;
46
49
  static from(options: ExtractorOptions): (context: EnvContext) => TypeScriptExtractor;
47
50
  }
@@ -81,9 +81,10 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
81
81
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
82
82
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
83
83
  class TypeScriptExtractor {
84
- constructor(tsconfig, schemaTransformerSlot, tsMain, rootTsserverPath, rootContextPath, depResolver, workspace, scope, aspectLoader, logger) {
84
+ constructor(tsconfig, schemaTransformerSlot, apiTransformerSlot, tsMain, rootTsserverPath, rootContextPath, depResolver, workspace, scope, aspectLoader, logger) {
85
85
  this.tsconfig = tsconfig;
86
86
  this.schemaTransformerSlot = schemaTransformerSlot;
87
+ this.apiTransformerSlot = apiTransformerSlot;
87
88
  this.tsMain = tsMain;
88
89
  this.rootTsserverPath = rootTsserverPath;
89
90
  this.rootContextPath = rootContextPath;
@@ -185,7 +186,12 @@ class TypeScriptExtractor {
185
186
  if (!transformer) {
186
187
  return new (_semanticsEntities().UnImplementedSchema)(context.getLocation(node), node.getText(), _typescript().SyntaxKind[node.kind]);
187
188
  }
188
- return transformer.transform(node, context);
189
+ const schemaNode = await transformer.transform(node, context);
190
+ return this.transformAPI(schemaNode, context);
191
+ }
192
+ async transformAPI(schema, context) {
193
+ const apiTransformer = this.getAPITransformer(schema);
194
+ return apiTransformer ? apiTransformer.transform(schema, context) : schema;
189
195
  }
190
196
  async getComponentIDByPath(file) {
191
197
  const coreAspectIds = this.aspectLoader.getCoreAspectIds();
@@ -213,6 +219,16 @@ class TypeScriptExtractor {
213
219
  }
214
220
  return transformer;
215
221
  }
222
+ getAPITransformer(node) {
223
+ const transformers = (0, _lodash().flatten)(this.apiTransformerSlot.values());
224
+ const transformer = transformers.find(singleTransformer => {
225
+ return singleTransformer.predicate(node);
226
+ });
227
+ if (!transformer) {
228
+ return undefined;
229
+ }
230
+ return transformer;
231
+ }
216
232
  static from(options) {
217
233
  return context => {
218
234
  var _getTsconfig, _tsMain$workspace;
@@ -224,7 +240,7 @@ class TypeScriptExtractor {
224
240
 
225
241
  // When loading the env from a scope you don't have a workspace
226
242
  const rootPath = ((_tsMain$workspace = tsMain.workspace) === null || _tsMain$workspace === void 0 ? void 0 : _tsMain$workspace.path) || tsMain.scope.path || '';
227
- return new TypeScriptExtractor(tsconfig, tsMain.schemaTransformerSlot, tsMain, rootPath, rootPath, tsMain.depResolver, tsMain.workspace, tsMain.scope, aspectLoaderMain, context.createLogger(options.name));
243
+ return new TypeScriptExtractor(tsconfig, tsMain.schemaTransformerSlot, tsMain.apiTransformerSlot, tsMain, rootPath, rootPath, tsMain.depResolver, tsMain.workspace, tsMain.scope, aspectLoaderMain, context.createLogger(options.name));
228
244
  };
229
245
  }
230
246
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig2","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootTsserverPath","rootContextPath","depResolver","workspace","scope","aspectLoader","logger","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","options","tsserverPath","contextPath","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","filesystem","files","filter","includes","extname","allFiles","context","createContext","formatter","pMapSeries","ast","identifiers","computeIdentifiers","cacheKey","getIdentifierKeyForNode","setIdentifiers","IdentifierList","mainAst","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","internals","computeInternalModules","location","getLocation","APISchema","id","compact","Promise","all","internalIdentifiers","entries","map","filePath","find","internalFile","fileAst","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","warn","TransformerNotFound","_this$workspace","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","transform","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","transformers","flatten","values","singleTransformer","predicate","from","_getTsconfig","_tsMain$workspace","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","createLogger","name","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile, SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor, SchemaExtractorOptions } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, ModuleSchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { EnvContext } from '@teambit/envs';\nimport { Formatter } from '@teambit/formatter';\nimport { Logger } from '@teambit/logger';\nimport AspectLoaderAspect, { AspectLoaderMain, getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { Identifier } from './identifier';\nimport { IdentifierList } from './identifier-list';\nimport { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootTsserverPath: string,\n private rootContextPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined,\n private scope: ScopeMain,\n private aspectLoader: AspectLoaderMain,\n private logger: Logger\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component, options: SchemaExtractorOptions = {}): Promise<APISchema> {\n // override the rootTsserverPath and rootContextPath if passed via options\n if (options.tsserverPath) {\n this.rootTsserverPath = options.tsserverPath;\n }\n if (options.contextPath) {\n this.rootContextPath = options.contextPath;\n }\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.ts'];\n const internalFiles = component.filesystem.files.filter(\n (file) => compatibleExts.includes(file.extname) && file.path !== mainFile.path\n );\n const allFiles = [mainFile, ...internalFiles];\n\n const context = await this.createContext(tsserver, component, options.formatter);\n\n await pMapSeries(allFiles, async (file) => {\n const ast = this.parseSourceFile(file);\n const identifiers = await this.computeIdentifiers(ast, context); // compute for every file\n const cacheKey = context.getIdentifierKeyForNode(ast);\n context.setIdentifiers(cacheKey, new IdentifierList(identifiers));\n });\n\n const mainAst = this.parseSourceFile(mainFile);\n const moduleSchema = (await this.computeSchema(mainAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const internals = await this.computeInternalModules(context, internalFiles);\n\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, internals, component.id);\n }\n\n async computeInternalModules(context: SchemaExtractorContext, internalFiles: AbstractVinyl[]) {\n const internals = compact(\n await Promise.all(\n [...context.internalIdentifiers.entries()].map(async ([filePath]) => {\n const file = internalFiles.find((internalFile) => internalFile.path === filePath);\n if (!file) return undefined;\n const fileAst = this.parseSourceFile(file);\n const moduleSchema = (await this.computeSchema(fileAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n return moduleSchema;\n })\n )\n );\n return internals;\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n let identifiers: Identifier[] = [];\n if (!transformer || !transformer.getIdentifiers) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n } else {\n identifiers = await transformer.getIdentifiers(node, context);\n }\n return identifiers;\n }\n\n private async createContext(\n tsserver: TsserverClient,\n component: Component,\n formatter?: Formatter\n ): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(\n tsserver,\n component,\n this,\n componentDeps,\n this.rootContextPath,\n this.workspace?.path || this.scope.path,\n formatter\n );\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootTsserverPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n\n if (!transformer) {\n return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);\n }\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const matchingCoreAspect = coreAspectIds.find((c) => file === getCoreAspectPackageName(c));\n\n if (matchingCoreAspect) {\n return (this.workspace || this.scope).resolveComponentId(matchingCoreAspect);\n }\n\n if (this.workspace) {\n return this.workspace.getComponentIdByPath(file);\n }\n return null;\n }\n\n /**\n * select the correct transformer for a node.\n */\n getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n return undefined;\n }\n\n return transformer;\n }\n\n static from(options: ExtractorOptions) {\n return (context: EnvContext) => {\n const tsconfig = getTsconfig(options.tsconfig)?.config || { compilerOptions: options.compilerOptions };\n const tsMain = context.getAspect<TypescriptMain>(TypescriptAspect.id);\n const aspectLoaderMain = context.getAspect<AspectLoaderMain>(AspectLoaderAspect.id);\n\n // When loading the env from a scope you don't have a workspace\n const rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain,\n rootPath,\n rootPath,\n tsMain.depResolver,\n tsMain.workspace,\n tsMain.scope,\n aspectLoaderMain,\n context.createLogger(options.name)\n );\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_typescript","data","_interopRequireWildcard","require","_getTsconfig2","_semanticsEntities","_aspectLoader","_pMapSeries","_interopRequireDefault","_lodash","_exceptions","_schemaExtractorContext","_identifierList","_typescript2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","apiTransformerSlot","tsMain","rootTsserverPath","rootContextPath","depResolver","workspace","scope","aspectLoader","logger","parseSourceFile","file","sourceFile","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","extract","component","options","tsserverPath","contextPath","tsserver","getTsServer","mainFile","compatibleExts","internalFiles","filesystem","files","filter","includes","extname","allFiles","context","createContext","formatter","pMapSeries","ast","identifiers","computeIdentifiers","cacheKey","getIdentifierKeyForNode","setIdentifiers","IdentifierList","mainAst","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","internals","computeInternalModules","location","getLocation","APISchema","id","compact","Promise","all","internalIdentifiers","entries","map","filePath","find","internalFile","fileAst","dispose","killTsServer","node","transformer","getTransformer","getIdentifiers","warn","TransformerNotFound","_this$workspace","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","UnImplementedSchema","getText","SyntaxKind","kind","schemaNode","transform","transformAPI","schema","apiTransformer","getAPITransformer","getComponentIDByPath","coreAspectIds","getCoreAspectIds","matchingCoreAspect","c","getCoreAspectPackageName","resolveComponentId","getComponentIdByPath","transformers","flatten","values","singleTransformer","predicate","from","_getTsconfig","_tsMain$workspace","getTsconfig","config","compilerOptions","getAspect","TypescriptAspect","aspectLoaderMain","AspectLoaderAspect","rootPath","createLogger","name","exports"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node, SourceFile, SyntaxKind } from 'typescript';\nimport { getTsconfig } from 'get-tsconfig';\nimport { SchemaExtractor, SchemaExtractorOptions } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, ModuleSchema, UnImplementedSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { EnvContext } from '@teambit/envs';\nimport { Formatter } from '@teambit/formatter';\nimport { Logger } from '@teambit/logger';\nimport AspectLoaderAspect, { AspectLoaderMain, getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport { ScopeMain } from '@teambit/scope';\nimport pMapSeries from 'p-map-series';\nimport { compact, flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot, APITransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { Identifier } from './identifier';\nimport { IdentifierList } from './identifier-list';\nimport { ExtractorOptions } from './extractor-options';\nimport { TypescriptAspect } from './typescript.aspect';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private apiTransformerSlot: APITransformerSlot,\n private tsMain: TypescriptMain,\n private rootTsserverPath: string,\n private rootContextPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined,\n private scope: ScopeMain,\n private aspectLoader: AspectLoaderMain,\n private logger: Logger\n ) {}\n\n parseSourceFile(file: AbstractVinyl): SourceFile {\n const sourceFile = ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true\n /** don't pass the scriptKind, it'll be determined automatically by typescript by the filepath */\n );\n // leave this commented out, it's helpful when there are issues with ASTs. consider throwing in this case.\n // console.log(\"sourceFile Errors\", file.path, sourceFile.parseDiagnostics);\n return sourceFile;\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component, options: SchemaExtractorOptions = {}): Promise<APISchema> {\n // override the rootTsserverPath and rootContextPath if passed via options\n if (options.tsserverPath) {\n this.rootTsserverPath = options.tsserverPath;\n }\n if (options.contextPath) {\n this.rootContextPath = options.contextPath;\n }\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const compatibleExts = ['.tsx', '.ts'];\n const internalFiles = component.filesystem.files.filter(\n (file) => compatibleExts.includes(file.extname) && file.path !== mainFile.path\n );\n const allFiles = [mainFile, ...internalFiles];\n\n const context = await this.createContext(tsserver, component, options.formatter);\n\n await pMapSeries(allFiles, async (file) => {\n const ast = this.parseSourceFile(file);\n const identifiers = await this.computeIdentifiers(ast, context); // compute for every file\n const cacheKey = context.getIdentifierKeyForNode(ast);\n context.setIdentifiers(cacheKey, new IdentifierList(identifiers));\n });\n\n const mainAst = this.parseSourceFile(mainFile);\n const moduleSchema = (await this.computeSchema(mainAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const internals = await this.computeInternalModules(context, internalFiles);\n\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, internals, component.id);\n }\n\n async computeInternalModules(context: SchemaExtractorContext, internalFiles: AbstractVinyl[]) {\n const internals = compact(\n await Promise.all(\n [...context.internalIdentifiers.entries()].map(async ([filePath]) => {\n const file = internalFiles.find((internalFile) => internalFile.path === filePath);\n if (!file) return undefined;\n const fileAst = this.parseSourceFile(file);\n const moduleSchema = (await this.computeSchema(fileAst, context)) as ModuleSchema;\n moduleSchema.flatExportsRecursively();\n return moduleSchema;\n })\n )\n );\n return internals;\n }\n\n dispose() {\n if (!this.tsserver) return;\n this.tsserver.killTsServer();\n }\n\n async computeIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n let identifiers: Identifier[] = [];\n if (!transformer || !transformer.getIdentifiers) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n } else {\n identifiers = await transformer.getIdentifiers(node, context);\n }\n return identifiers;\n }\n\n private async createContext(\n tsserver: TsserverClient,\n component: Component,\n formatter?: Formatter\n ): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(\n tsserver,\n component,\n this,\n componentDeps,\n this.rootContextPath,\n this.workspace?.path || this.scope.path,\n formatter\n );\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootTsserverPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n\n if (!transformer) {\n return new UnImplementedSchema(context.getLocation(node), node.getText(), SyntaxKind[node.kind]);\n }\n\n const schemaNode = await transformer.transform(node, context);\n\n return this.transformAPI(schemaNode, context);\n }\n\n async transformAPI(schema: SchemaNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const apiTransformer = this.getAPITransformer(schema);\n return apiTransformer ? apiTransformer.transform(schema, context) : schema;\n }\n\n async getComponentIDByPath(file: string) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const matchingCoreAspect = coreAspectIds.find((c) => file === getCoreAspectPackageName(c));\n\n if (matchingCoreAspect) {\n return (this.workspace || this.scope).resolveComponentId(matchingCoreAspect);\n }\n\n if (this.workspace) {\n return this.workspace.getComponentIdByPath(file);\n }\n return null;\n }\n\n /**\n * select the correct transformer for a node.\n */\n getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\n this.logger.warn(new TransformerNotFound(node, context.component, context.getLocation(node)).toString());\n return undefined;\n }\n\n return transformer;\n }\n\n getAPITransformer(node: SchemaNode) {\n const transformers = flatten(this.apiTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => {\n return singleTransformer.predicate(node);\n });\n if (!transformer) {\n return undefined;\n }\n\n return transformer;\n }\n\n static from(options: ExtractorOptions) {\n return (context: EnvContext) => {\n const tsconfig = getTsconfig(options.tsconfig)?.config || { compilerOptions: options.compilerOptions };\n const tsMain = context.getAspect<TypescriptMain>(TypescriptAspect.id);\n const aspectLoaderMain = context.getAspect<AspectLoaderMain>(AspectLoaderAspect.id);\n\n // When loading the env from a scope you don't have a workspace\n const rootPath = tsMain.workspace?.path || tsMain.scope.path || '';\n\n return new TypeScriptExtractor(\n tsconfig,\n tsMain.schemaTransformerSlot,\n tsMain.apiTransformerSlot,\n tsMain,\n rootPath,\n rootPath,\n tsMain.depResolver,\n tsMain.workspace,\n tsMain.scope,\n aspectLoaderMain,\n context.createLogger(options.name)\n );\n };\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,cAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,aAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAI,mBAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,kBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAAK,cAAA;EAAA,MAAAL,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAG,aAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAO,sBAAA,CAAAL,OAAA;EAAAI,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,QAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,OAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAS,YAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,WAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,wBAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,uBAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAW,gBAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,eAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAY,aAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,YAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAuD,SAAAO,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAhB,wBAAAY,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,gBAAAtB,GAAA,EAAAgB,GAAA,EAAAO,KAAA,IAAAP,GAAA,GAAAQ,cAAA,CAAAR,GAAA,OAAAA,GAAA,IAAAhB,GAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAd,GAAA,EAAAgB,GAAA,IAAAO,KAAA,EAAAA,KAAA,EAAAE,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAA3B,GAAA,CAAAgB,GAAA,IAAAO,KAAA,WAAAvB,GAAA;AAAA,SAAAwB,eAAAI,GAAA,QAAAZ,GAAA,GAAAa,YAAA,CAAAD,GAAA,2BAAAZ,GAAA,gBAAAA,GAAA,GAAAc,MAAA,CAAAd,GAAA;AAAA,SAAAa,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAd,IAAA,CAAAY,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAC,SAAA,4DAAAN,IAAA,gBAAAF,MAAA,GAAAS,MAAA,EAAAR,KAAA;AAEhD,MAAMS,mBAAmB,CAA4B;EAC1DC,WAAWA,CACDC,QAAa,EACbC,qBAA4C,EAC5CC,kBAAsC,EACtCC,MAAsB,EACtBC,gBAAwB,EACxBC,eAAuB,EACvBC,WAAmC,EACnCC,SAAgC,EAChCC,KAAgB,EAChBC,YAA8B,EAC9BC,MAAc,EACtB;IAAA,KAXQV,QAAa,GAAbA,QAAa;IAAA,KACbC,qBAA4C,GAA5CA,qBAA4C;IAAA,KAC5CC,kBAAsC,GAAtCA,kBAAsC;IAAA,KACtCC,MAAsB,GAAtBA,MAAsB;IAAA,KACtBC,gBAAwB,GAAxBA,gBAAwB;IAAA,KACxBC,eAAuB,GAAvBA,eAAuB;IAAA,KACvBC,WAAmC,GAAnCA,WAAmC;IAAA,KACnCC,SAAgC,GAAhCA,SAAgC;IAAA,KAChCC,KAAgB,GAAhBA,KAAgB;IAAA,KAChBC,YAA8B,GAA9BA,YAA8B;IAAA,KAC9BC,MAAc,GAAdA,MAAc;IAAA9B,eAAA,mBA8GuBc,SAAS;EA7GrD;EAEHiB,eAAeA,CAACC,IAAmB,EAAc;IAC/C,MAAMC,UAAU,GAAGC,qBAAE,CAACC,gBAAgB,CACpCH,IAAI,CAACI,IAAI,EACTJ,IAAI,CAACK,QAAQ,CAACC,QAAQ,CAAC,MAAM,CAAC,EAC9BJ,qBAAE,CAACK,YAAY,CAACC,MAAM,EACtB;IACA,iGACF,CAAC;IACD;IACA;IACA,OAAOP,UAAU;EACnB;;EAEA;AACF;AACA;EACE,MAAMQ,OAAOA,CAACC,SAAoB,EAAEC,OAA+B,GAAG,CAAC,CAAC,EAAsB;IAC5F;IACA,IAAIA,OAAO,CAACC,YAAY,EAAE;MACxB,IAAI,CAACpB,gBAAgB,GAAGmB,OAAO,CAACC,YAAY;IAC9C;IACA,IAAID,OAAO,CAACE,WAAW,EAAE;MACvB,IAAI,CAACpB,eAAe,GAAGkB,OAAO,CAACE,WAAW;IAC5C;IACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,WAAW,CAAC,CAAC;IACzC,MAAMC,QAAQ,GAAGN,SAAS,CAACM,QAAQ;IACnC,MAAMC,cAAc,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IACtC,MAAMC,aAAa,GAAGR,SAAS,CAACS,UAAU,CAACC,KAAK,CAACC,MAAM,CACpDrB,IAAI,IAAKiB,cAAc,CAACK,QAAQ,CAACtB,IAAI,CAACuB,OAAO,CAAC,IAAIvB,IAAI,CAACI,IAAI,KAAKY,QAAQ,CAACZ,IAC5E,CAAC;IACD,MAAMoB,QAAQ,GAAG,CAACR,QAAQ,EAAE,GAAGE,aAAa,CAAC;IAE7C,MAAMO,OAAO,GAAG,MAAM,IAAI,CAACC,aAAa,CAACZ,QAAQ,EAAEJ,SAAS,EAAEC,OAAO,CAACgB,SAAS,CAAC;IAEhF,MAAM,IAAAC,qBAAU,EAACJ,QAAQ,EAAE,MAAOxB,IAAI,IAAK;MACzC,MAAM6B,GAAG,GAAG,IAAI,CAAC9B,eAAe,CAACC,IAAI,CAAC;MACtC,MAAM8B,WAAW,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAACF,GAAG,EAAEJ,OAAO,CAAC,CAAC,CAAC;MACjE,MAAMO,QAAQ,GAAGP,OAAO,CAACQ,uBAAuB,CAACJ,GAAG,CAAC;MACrDJ,OAAO,CAACS,cAAc,CAACF,QAAQ,EAAE,KAAIG,gCAAc,EAACL,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAMM,OAAO,GAAG,IAAI,CAACrC,eAAe,CAACiB,QAAQ,CAAC;IAC9C,MAAMqB,YAAY,GAAI,MAAM,IAAI,CAACC,aAAa,CAACF,OAAO,EAAEX,OAAO,CAAkB;IACjFY,YAAY,CAACE,sBAAsB,CAAC,CAAC;IACrC,MAAMC,SAAS,GAAGH,YAAY;IAC9B,MAAMI,SAAS,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAACjB,OAAO,EAAEP,aAAa,CAAC;IAE3E,MAAMyB,QAAQ,GAAGlB,OAAO,CAACmB,WAAW,CAACR,OAAO,CAAC;IAE7C,OAAO,KAAIS,8BAAS,EAACF,QAAQ,EAAEH,SAAS,EAAEC,SAAS,EAAE/B,SAAS,CAACoC,EAAE,CAAC;EACpE;EAEA,MAAMJ,sBAAsBA,CAACjB,OAA+B,EAAEP,aAA8B,EAAE;IAC5F,MAAMuB,SAAS,GAAG,IAAAM,iBAAO,EACvB,MAAMC,OAAO,CAACC,GAAG,CACf,CAAC,GAAGxB,OAAO,CAACyB,mBAAmB,CAACC,OAAO,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC,OAAO,CAACC,QAAQ,CAAC,KAAK;MACnE,MAAMrD,IAAI,GAAGkB,aAAa,CAACoC,IAAI,CAAEC,YAAY,IAAKA,YAAY,CAACnD,IAAI,KAAKiD,QAAQ,CAAC;MACjF,IAAI,CAACrD,IAAI,EAAE,OAAOlB,SAAS;MAC3B,MAAM0E,OAAO,GAAG,IAAI,CAACzD,eAAe,CAACC,IAAI,CAAC;MAC1C,MAAMqC,YAAY,GAAI,MAAM,IAAI,CAACC,aAAa,CAACkB,OAAO,EAAE/B,OAAO,CAAkB;MACjFY,YAAY,CAACE,sBAAsB,CAAC,CAAC;MACrC,OAAOF,YAAY;IACrB,CAAC,CACH,CACF,CAAC;IACD,OAAOI,SAAS;EAClB;EAEAgB,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,IAAI,CAAC3C,QAAQ,EAAE;IACpB,IAAI,CAACA,QAAQ,CAAC4C,YAAY,CAAC,CAAC;EAC9B;EAEA,MAAM3B,kBAAkBA,CAAC4B,IAAU,EAAElC,OAA+B,EAAE;IACpE,MAAMmC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACF,IAAI,EAAElC,OAAO,CAAC;IACtD,IAAIK,WAAyB,GAAG,EAAE;IAClC,IAAI,CAAC8B,WAAW,IAAI,CAACA,WAAW,CAACE,cAAc,EAAE;MAC/C,IAAI,CAAChE,MAAM,CAACiE,IAAI,CAAC,KAAIC,iCAAmB,EAACL,IAAI,EAAElC,OAAO,CAACf,SAAS,EAAEe,OAAO,CAACmB,WAAW,CAACe,IAAI,CAAC,CAAC,CAACrD,QAAQ,CAAC,CAAC,CAAC;IAC1G,CAAC,MAAM;MACLwB,WAAW,GAAG,MAAM8B,WAAW,CAACE,cAAc,CAACH,IAAI,EAAElC,OAAO,CAAC;IAC/D;IACA,OAAOK,WAAW;EACpB;EAEA,MAAcJ,aAAaA,CACzBZ,QAAwB,EACxBJ,SAAoB,EACpBiB,SAAqB,EACY;IAAA,IAAAsC,eAAA;IACjC,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACzD,SAAS,CAAC;IAC5D,OAAO,KAAI0D,gDAAsB,EAC/BtD,QAAQ,EACRJ,SAAS,EACT,IAAI,EACJwD,aAAa,EACb,IAAI,CAACzE,eAAe,EACpB,EAAAwE,eAAA,OAAI,CAACtE,SAAS,cAAAsE,eAAA,uBAAdA,eAAA,CAAgB7D,IAAI,KAAI,IAAI,CAACR,KAAK,CAACQ,IAAI,EACvCuB,SACF,CAAC;EACH;EAEA,MAAcwC,gBAAgBA,CAACzD,SAAoB,EAAkC;IACnF,MAAM2D,IAAI,GAAG,MAAM,IAAI,CAAC3E,WAAW,CAAC4E,eAAe,CAAC5D,SAAS,CAAC;IAC9D,MAAMwD,aAAa,GAAGG,IAAI,CAACE,wBAAwB,CAAC,CAAC;IACrD,OAAOL,aAAa;EACtB;EAIA,MAAcnD,WAAWA,CAAA,EAAG;IAC1B,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE;MAClB,MAAMA,QAAQ,GAAG,IAAI,CAACvB,MAAM,CAACiF,iBAAiB,CAAC,CAAC;MAChD,IAAI1D,QAAQ,EAAE;QACZ,IAAI,CAACA,QAAQ,GAAGA,QAAQ;QACxB,OAAOA,QAAQ;MACjB;MAEA,IAAI,CAACA,QAAQ,GAAG,MAAM,IAAI,CAACvB,MAAM,CAACkF,kBAAkB,CAAC,IAAI,CAACjF,gBAAgB,CAAC;MAC3E,OAAO,IAAI,CAACsB,QAAQ;IACtB;IAEA,OAAO,IAAI,CAACA,QAAQ;EACtB;EAEA,MAAMwB,aAAaA,CAACqB,IAAU,EAAElC,OAA+B,EAAuB;IACpF,MAAMmC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACF,IAAI,EAAElC,OAAO,CAAC;IAEtD,IAAI,CAACmC,WAAW,EAAE;MAChB,OAAO,KAAIc,wCAAmB,EAACjD,OAAO,CAACmB,WAAW,CAACe,IAAI,CAAC,EAAEA,IAAI,CAACgB,OAAO,CAAC,CAAC,EAAEC,wBAAU,CAACjB,IAAI,CAACkB,IAAI,CAAC,CAAC;IAClG;IAEA,MAAMC,UAAU,GAAG,MAAMlB,WAAW,CAACmB,SAAS,CAACpB,IAAI,EAAElC,OAAO,CAAC;IAE7D,OAAO,IAAI,CAACuD,YAAY,CAACF,UAAU,EAAErD,OAAO,CAAC;EAC/C;EAEA,MAAMuD,YAAYA,CAACC,MAAkB,EAAExD,OAA+B,EAAuB;IAC3F,MAAMyD,cAAc,GAAG,IAAI,CAACC,iBAAiB,CAACF,MAAM,CAAC;IACrD,OAAOC,cAAc,GAAGA,cAAc,CAACH,SAAS,CAACE,MAAM,EAAExD,OAAO,CAAC,GAAGwD,MAAM;EAC5E;EAEA,MAAMG,oBAAoBA,CAACpF,IAAY,EAAE;IACvC,MAAMqF,aAAa,GAAG,IAAI,CAACxF,YAAY,CAACyF,gBAAgB,CAAC,CAAC;IAC1D,MAAMC,kBAAkB,GAAGF,aAAa,CAAC/B,IAAI,CAAEkC,CAAC,IAAKxF,IAAI,KAAK,IAAAyF,wCAAwB,EAACD,CAAC,CAAC,CAAC;IAE1F,IAAID,kBAAkB,EAAE;MACtB,OAAO,CAAC,IAAI,CAAC5F,SAAS,IAAI,IAAI,CAACC,KAAK,EAAE8F,kBAAkB,CAACH,kBAAkB,CAAC;IAC9E;IAEA,IAAI,IAAI,CAAC5F,SAAS,EAAE;MAClB,OAAO,IAAI,CAACA,SAAS,CAACgG,oBAAoB,CAAC3F,IAAI,CAAC;IAClD;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACE6D,cAAcA,CAACF,IAAU,EAAElC,OAA+B,EAAE;IAC1D,MAAMmE,YAAY,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACxG,qBAAqB,CAACyG,MAAM,CAAC,CAAC,CAAC;IACjE,MAAMlC,WAAW,GAAGgC,YAAY,CAACtC,IAAI,CAAEyC,iBAAiB,IAAK;MAC3D,OAAOA,iBAAiB,CAACC,SAAS,CAACrC,IAAI,CAAC;IAC1C,CAAC,CAAC;IACF,IAAI,CAACC,WAAW,EAAE;MAChB,IAAI,CAAC9D,MAAM,CAACiE,IAAI,CAAC,KAAIC,iCAAmB,EAACL,IAAI,EAAElC,OAAO,CAACf,SAAS,EAAEe,OAAO,CAACmB,WAAW,CAACe,IAAI,CAAC,CAAC,CAACrD,QAAQ,CAAC,CAAC,CAAC;MACxG,OAAOxB,SAAS;IAClB;IAEA,OAAO8E,WAAW;EACpB;EAEAuB,iBAAiBA,CAACxB,IAAgB,EAAE;IAClC,MAAMiC,YAAY,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACvG,kBAAkB,CAACwG,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAMlC,WAAW,GAAGgC,YAAY,CAACtC,IAAI,CAAEyC,iBAAiB,IAAK;MAC3D,OAAOA,iBAAiB,CAACC,SAAS,CAACrC,IAAI,CAAC;IAC1C,CAAC,CAAC;IACF,IAAI,CAACC,WAAW,EAAE;MAChB,OAAO9E,SAAS;IAClB;IAEA,OAAO8E,WAAW;EACpB;EAEA,OAAOqC,IAAIA,CAACtF,OAAyB,EAAE;IACrC,OAAQc,OAAmB,IAAK;MAAA,IAAAyE,YAAA,EAAAC,iBAAA;MAC9B,MAAM/G,QAAQ,GAAG,EAAA8G,YAAA,OAAAE,2BAAW,EAACzF,OAAO,CAACvB,QAAQ,CAAC,cAAA8G,YAAA,uBAA7BA,YAAA,CAA+BG,MAAM,KAAI;QAAEC,eAAe,EAAE3F,OAAO,CAAC2F;MAAgB,CAAC;MACtG,MAAM/G,MAAM,GAAGkC,OAAO,CAAC8E,SAAS,CAAiBC,+BAAgB,CAAC1D,EAAE,CAAC;MACrE,MAAM2D,gBAAgB,GAAGhF,OAAO,CAAC8E,SAAS,CAAmBG,uBAAkB,CAAC5D,EAAE,CAAC;;MAEnF;MACA,MAAM6D,QAAQ,GAAG,EAAAR,iBAAA,GAAA5G,MAAM,CAACI,SAAS,cAAAwG,iBAAA,uBAAhBA,iBAAA,CAAkB/F,IAAI,KAAIb,MAAM,CAACK,KAAK,CAACQ,IAAI,IAAI,EAAE;MAElE,OAAO,IAAIlB,mBAAmB,CAC5BE,QAAQ,EACRG,MAAM,CAACF,qBAAqB,EAC5BE,MAAM,CAACD,kBAAkB,EACzBC,MAAM,EACNoH,QAAQ,EACRA,QAAQ,EACRpH,MAAM,CAACG,WAAW,EAClBH,MAAM,CAACI,SAAS,EAChBJ,MAAM,CAACK,KAAK,EACZ6G,gBAAgB,EAChBhF,OAAO,CAACmF,YAAY,CAACjG,OAAO,CAACkG,IAAI,CACnC,CAAC;IACH,CAAC;EACH;AACF;AAACC,OAAA,CAAA5H,mBAAA,GAAAA,mBAAA"}
@@ -16,10 +16,11 @@ import { BuilderMain } from '@teambit/builder';
16
16
  import { EnvsMain } from '@teambit/envs';
17
17
  import { ScopeMain } from '@teambit/scope';
18
18
  import { TypeScriptCompilerOptions } from './compiler-options';
19
- import { SchemaTransformer } from './schema-transformer';
19
+ import { SchemaNodeTransformer, SchemaTransformer } from './schema-transformer';
20
20
  import { TsconfigPathsPerEnv, TsconfigWriter } from './tsconfig-writer';
21
21
  export declare type TsMode = 'build' | 'dev';
22
22
  export declare type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;
23
+ export declare type APITransformerSlot = SlotRegistry<SchemaNodeTransformer[]>;
23
24
  export declare type TsConfigTransformContext = {};
24
25
  export declare type TsconfigWriterOptions = {
25
26
  clean?: boolean;
@@ -32,13 +33,14 @@ export declare type TsConfigTransformer = (config: TypescriptConfigMutator, cont
32
33
  export declare class TypescriptMain {
33
34
  private logger;
34
35
  readonly schemaTransformerSlot: SchemaTransformerSlot;
36
+ readonly apiTransformerSlot: APITransformerSlot;
35
37
  readonly workspace: Workspace;
36
38
  readonly scope: ScopeMain;
37
39
  readonly depResolver: DependencyResolverMain;
38
40
  private envs;
39
41
  private tsConfigWriter;
40
42
  private aspectLoader;
41
- constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, workspace: Workspace, scope: ScopeMain, depResolver: DependencyResolverMain, envs: EnvsMain, tsConfigWriter: TsconfigWriter, aspectLoader: AspectLoaderMain);
43
+ constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, apiTransformerSlot: APITransformerSlot, workspace: Workspace, scope: ScopeMain, depResolver: DependencyResolverMain, envs: EnvsMain, tsConfigWriter: TsconfigWriter, aspectLoader: AspectLoaderMain);
42
44
  private tsServer;
43
45
  /**
44
46
  * create a new compiler.
@@ -48,6 +50,8 @@ export declare class TypescriptMain {
48
50
  * get TsserverClient instance if initiated already, otherwise, return undefined.
49
51
  */
50
52
  getTsserverClient(): TsserverClient | undefined;
53
+ registerSchemaTransformer(transformers: SchemaTransformer[]): this;
54
+ registerApiTransformer(transformers: SchemaNodeTransformer[]): this;
51
55
  /**
52
56
  * starts a tsserver process to communicate with its API.
53
57
  * @param projectPath absolute path of the project root directory
@@ -113,7 +117,7 @@ export declare class TypescriptMain {
113
117
  private onComponentChange;
114
118
  static runtime: import("@teambit/harmony").RuntimeDefinition;
115
119
  static dependencies: import("@teambit/harmony").Aspect[];
116
- static slots: ((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>)[];
120
+ static slots: (((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>) | ((registerFn: () => string) => SlotRegistry<SchemaNodeTransformer[]>))[];
117
121
  static provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder]: [
118
122
  SchemaMain,
119
123
  LoggerMain,
@@ -125,7 +129,7 @@ export declare class TypescriptMain {
125
129
  WatcherMain,
126
130
  ScopeMain,
127
131
  BuilderMain
128
- ], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
132
+ ], config: any, [schemaTransformerSlot, apiTransformerSlot]: [SchemaTransformerSlot, APITransformerSlot]): Promise<TypescriptMain>;
129
133
  }
130
134
  export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[] | undefined, context: TsConfigTransformContext): TypescriptConfigMutator;
131
135
  export default TypescriptMain;
@@ -185,9 +185,10 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
185
185
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
186
186
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
187
187
  class TypescriptMain {
188
- constructor(logger, schemaTransformerSlot, workspace, scope, depResolver, envs, tsConfigWriter, aspectLoader) {
188
+ constructor(logger, schemaTransformerSlot, apiTransformerSlot, workspace, scope, depResolver, envs, tsConfigWriter, aspectLoader) {
189
189
  this.logger = logger;
190
190
  this.schemaTransformerSlot = schemaTransformerSlot;
191
+ this.apiTransformerSlot = apiTransformerSlot;
191
192
  this.workspace = workspace;
192
193
  this.scope = scope;
193
194
  this.depResolver = depResolver;
@@ -212,6 +213,14 @@ class TypescriptMain {
212
213
  getTsserverClient() {
213
214
  return this.tsServer;
214
215
  }
216
+ registerSchemaTransformer(transformers) {
217
+ this.schemaTransformerSlot.register(transformers);
218
+ return this;
219
+ }
220
+ registerApiTransformer(transformers) {
221
+ this.apiTransformerSlot.register(transformers);
222
+ return this;
223
+ }
215
224
 
216
225
  /**
217
226
  * starts a tsserver process to communicate with its API.
@@ -292,7 +301,7 @@ class TypescriptMain {
292
301
  */
293
302
  createSchemaExtractor(tsconfig, tsserverPath, contextPath) {
294
303
  var _this$workspace, _this$workspace2;
295
- return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, tsserverPath || ((_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.path) || '', contextPath || ((_this$workspace2 = this.workspace) === null || _this$workspace2 === void 0 ? void 0 : _this$workspace2.path) || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger);
304
+ return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this.apiTransformerSlot, this, tsserverPath || ((_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.path) || '', contextPath || ((_this$workspace2 = this.workspace) === null || _this$workspace2 === void 0 ? void 0 : _this$workspace2.path) || '', this.depResolver, this.workspace, this.scope, this.aspectLoader, this.logger);
296
305
  }
297
306
 
298
307
  /**
@@ -371,13 +380,13 @@ class TypescriptMain {
371
380
  results: 'succeed'
372
381
  };
373
382
  }
374
- static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder], config, [schemaTransformerSlot]) {
383
+ static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver, envs, watcher, scope, builder], config, [schemaTransformerSlot, apiTransformerSlot]) {
375
384
  schema.registerParser(new (_typescript5().TypeScriptParser)());
376
385
  const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
377
386
  aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
378
387
  const tsconfigWriter = new (_tsconfigWriter().TsconfigWriter)(workspace, logger);
379
- const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, scope, depResolver, envs, tsconfigWriter, aspectLoader);
380
- schemaTransformerSlot.register([new (_transformers().ExportDeclarationTransformer)(), new (_transformers().ExportAssignmentTransformer)(), new (_transformers().FunctionLikeTransformer)(), new (_transformers().ParameterTransformer)(), new (_transformers().SetAccessorTransformer)(), new (_transformers().GetAccessorTransformer)(), new (_transformers().IndexSignatureTransformer)(), new (_transformers().PropertyDeclarationTransformer)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDeclarationTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)(), new (_transformers().BindingElementTransformer)(), new (_transformers().IntersectionTypeTransformer)(), new (_transformers().UnionTypeTransformer)(), new (_transformers().TypeReferenceTransformer)(), new (_transformers().TypeLiteralTransformer)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().TypeQueryTransformer)(), new (_transformers().ArrayTypeTransformer)(), new (_transformers().TypeOperatorTransformer)(), new (_transformers().KeywordTypeTransformer)(), new (_transformers().TupleTypeTransformer)(), new (_transformers().ParenthesizedTypeTransformer)(), new (_transformers().TypePredicateTransformer)(), new (_transformers().IndexedAccessTypeTransformer)(), new (_transformers().TemplateLiteralTypeSpanTransformer)(), new (_transformers().TemplateLiteralTypeTransformer)(), new (_transformers().ThisTypeTransformer)(), new (_transformers().ConditionalTypeTransformer)(), new (_transformers().NamedTupleTransformer)(), new (_transformers().ConstructorTransformer)(), new (_transformers().ImportDeclarationTransformer)(), new (_transformers().ExpressionStatementTransformer)(), new (_transformers().ModuleDeclarationTransformer)()]);
388
+ const tsMain = new TypescriptMain(logger, schemaTransformerSlot, apiTransformerSlot, workspace, scope, depResolver, envs, tsconfigWriter, aspectLoader);
389
+ tsMain.registerSchemaTransformer([new (_transformers().ExportDeclarationTransformer)(), new (_transformers().ExportAssignmentTransformer)(), new (_transformers().FunctionLikeTransformer)(), new (_transformers().ParameterTransformer)(), new (_transformers().SetAccessorTransformer)(), new (_transformers().GetAccessorTransformer)(), new (_transformers().IndexSignatureTransformer)(), new (_transformers().PropertyDeclarationTransformer)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDeclarationTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)(), new (_transformers().BindingElementTransformer)(), new (_transformers().IntersectionTypeTransformer)(), new (_transformers().UnionTypeTransformer)(), new (_transformers().TypeReferenceTransformer)(), new (_transformers().TypeLiteralTransformer)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().TypeQueryTransformer)(), new (_transformers().ArrayTypeTransformer)(), new (_transformers().TypeOperatorTransformer)(), new (_transformers().KeywordTypeTransformer)(), new (_transformers().TupleTypeTransformer)(), new (_transformers().ParenthesizedTypeTransformer)(), new (_transformers().TypePredicateTransformer)(), new (_transformers().IndexedAccessTypeTransformer)(), new (_transformers().TemplateLiteralTypeSpanTransformer)(), new (_transformers().TemplateLiteralTypeTransformer)(), new (_transformers().ThisTypeTransformer)(), new (_transformers().ConditionalTypeTransformer)(), new (_transformers().NamedTupleTransformer)(), new (_transformers().ConstructorTransformer)(), new (_transformers().ImportDeclarationTransformer)(), new (_transformers().ExpressionStatementTransformer)(), new (_transformers().ModuleDeclarationTransformer)()]);
381
390
  if (workspace) {
382
391
  watcher.registerOnPreWatch(tsMain.onPreWatch.bind(tsMain));
383
392
  workspace.registerOnComponentChange(tsMain.onComponentChange.bind(tsMain));
@@ -395,7 +404,7 @@ class TypescriptMain {
395
404
  exports.TypescriptMain = TypescriptMain;
396
405
  _defineProperty(TypescriptMain, "runtime", _cli().MainRuntime);
397
406
  _defineProperty(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect, _dependencyResolver().DependencyResolverAspect, _envs().default, _watcher().default, _scope().ScopeAspect, _builder().BuilderAspect]);
398
- _defineProperty(TypescriptMain, "slots", [_harmony().Slot.withType()]);
407
+ _defineProperty(TypescriptMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType()]);
399
408
  _typescript3().TypescriptAspect.addRuntime(TypescriptMain);
400
409
  function runTransformersWithContext(config, transformers = [], context) {
401
410
  if (!Array.isArray(transformers)) return config;