From 908af14103983eb7dfd64dc82d2198d559175de4 Mon Sep 17 00:00:00 2001 From: Frank Weigel Date: Mon, 23 Sep 2024 18:38:03 +0200 Subject: [PATCH 1/3] feat(dts-generator): add support for signature variants --- packages/dts-generator/src/phases/dts-code-gen.ts | 7 +++++++ packages/dts-generator/src/phases/json-fixer.ts | 3 +++ packages/dts-generator/src/phases/json-to-ast.ts | 7 +++++++ packages/dts-generator/src/types/ast.d.ts | 1 + 4 files changed, 18 insertions(+) diff --git a/packages/dts-generator/src/phases/dts-code-gen.ts b/packages/dts-generator/src/phases/dts-code-gen.ts index 9108a90..30820b2 100644 --- a/packages/dts-generator/src/phases/dts-code-gen.ts +++ b/packages/dts-generator/src/phases/dts-code-gen.ts @@ -545,6 +545,13 @@ function genMethodOrFunction( ? "" : `<${_.map(ast.typeParameters, genTypeParameter).join(",")}>`; let text = ""; + if (ast.variations) { + text += _.map( + ast.variations, + (variation) => + genMethodOrFunction(variation, staticPossible, isFunc, options) + NL, + ).join(""); + } text += JSDOC(ast) + NL; text += applyTsIgnore(ast); text += ast.overwrite ? "// @ts-ignore" + NL : ""; diff --git a/packages/dts-generator/src/phases/json-fixer.ts b/packages/dts-generator/src/phases/json-fixer.ts index fdfa9a1..48d3353 100644 --- a/packages/dts-generator/src/phases/json-fixer.ts +++ b/packages/dts-generator/src/phases/json-fixer.ts @@ -525,6 +525,9 @@ function parseTypeExpressions(symbols: ConcreteSymbol[]) { if (Array.isArray(method.throws)) { method.throws.forEach(visitAnythingWithAType); } + if (Array.isArray(method.variations)) { + method.variations.forEach(visitMethod); + } } function visitEvent(event: Ui5Event) { diff --git a/packages/dts-generator/src/phases/json-to-ast.ts b/packages/dts-generator/src/phases/json-to-ast.ts index d666f76..37a7bc6 100644 --- a/packages/dts-generator/src/phases/json-to-ast.ts +++ b/packages/dts-generator/src/phases/json-to-ast.ts @@ -254,6 +254,9 @@ class ASTVisitor { * @param fct */ _visitFunction(fct: FunctionDesc) { + if (fct.variations) { + _.forEach(fct.variations, (variation) => this._visitFunction(variation)); + } _.forEach(fct.typeParameters, (typeParam) => this._visitTypeParam(typeParam), ); @@ -1265,6 +1268,7 @@ function buildFunction(ui5Method: ObjMethod): FunctionDesc { assertKnownProps( [ "name", + "variations", "typeParameters", "parameters", "returnValue", @@ -1277,6 +1281,9 @@ function buildFunction(ui5Method: ObjMethod): FunctionDesc { const astNode: FunctionDesc = { kind: "FunctionDesc", name: ui5Method.name, + variations: ui5Method.variations + ? _.map(ui5Method.variations, buildFunction) + : undefined, static: ui5Method.static === true, typeParameters: _.map(ui5Method.typeParameters, buildTypeParameter), parameters: _.map(ui5Method.parameters, buildParameter), diff --git a/packages/dts-generator/src/types/ast.d.ts b/packages/dts-generator/src/types/ast.d.ts index 6c2f330..4df765e 100644 --- a/packages/dts-generator/src/types/ast.d.ts +++ b/packages/dts-generator/src/types/ast.d.ts @@ -135,6 +135,7 @@ export interface VariableWithValue extends Variable { export interface FunctionDesc extends AstNode, UI5JSDocs { kind: "FunctionDesc"; name: string; + variations?: Array; static?: boolean; overwrite?: boolean; typeParameters?: TypeParameter[]; From ebda15206c4a6914c34ca051f453308b71ff13c6 Mon Sep 17 00:00:00 2001 From: Frank Weigel Date: Thu, 3 Oct 2024 11:47:40 +0200 Subject: [PATCH 2/3] feat: rename 'variations' to 'overloads'; suppress implementation signature --- .../dts-generator/src/phases/dts-code-gen.ts | 17 +++++++++++++---- packages/dts-generator/src/phases/json-fixer.ts | 4 ++-- .../dts-generator/src/phases/json-to-ast.ts | 10 +++++----- packages/dts-generator/src/types/ast.d.ts | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/dts-generator/src/phases/dts-code-gen.ts b/packages/dts-generator/src/phases/dts-code-gen.ts index 30820b2..2fa1419 100644 --- a/packages/dts-generator/src/phases/dts-code-gen.ts +++ b/packages/dts-generator/src/phases/dts-code-gen.ts @@ -545,12 +545,13 @@ function genMethodOrFunction( ? "" : `<${_.map(ast.typeParameters, genTypeParameter).join(",")}>`; let text = ""; - if (ast.variations) { + if (ast.overloads) { text += _.map( - ast.variations, - (variation) => - genMethodOrFunction(variation, staticPossible, isFunc, options) + NL, + ast.overloads, + (overload) => + genMethodOrFunction(overload, staticPossible, isFunc, options) + NL, ).join(""); + return text; } text += JSDOC(ast) + NL; text += applyTsIgnore(ast); @@ -578,6 +579,14 @@ function genMethodOrFunction( function genConstructor(ast: FunctionDesc) { let text = ""; + if (ast.overloads) { + text += _.map( + ast.overloads, + (overload) => genConstructor(overload) + NL, + ).join(""); + return text; + } + text += JSDOC(ast) + NL; text += ast.overwrite ? "// @ts-ignore" + NL : ""; text += ast.visibility === "protected" ? "protected " : ""; // only needed for hiding constructors via @hideconstructor diff --git a/packages/dts-generator/src/phases/json-fixer.ts b/packages/dts-generator/src/phases/json-fixer.ts index 48d3353..dabecdb 100644 --- a/packages/dts-generator/src/phases/json-fixer.ts +++ b/packages/dts-generator/src/phases/json-fixer.ts @@ -525,8 +525,8 @@ function parseTypeExpressions(symbols: ConcreteSymbol[]) { if (Array.isArray(method.throws)) { method.throws.forEach(visitAnythingWithAType); } - if (Array.isArray(method.variations)) { - method.variations.forEach(visitMethod); + if (Array.isArray(method.overloads)) { + method.overloads.forEach(visitMethod); } } diff --git a/packages/dts-generator/src/phases/json-to-ast.ts b/packages/dts-generator/src/phases/json-to-ast.ts index 37a7bc6..111583b 100644 --- a/packages/dts-generator/src/phases/json-to-ast.ts +++ b/packages/dts-generator/src/phases/json-to-ast.ts @@ -254,8 +254,8 @@ class ASTVisitor { * @param fct */ _visitFunction(fct: FunctionDesc) { - if (fct.variations) { - _.forEach(fct.variations, (variation) => this._visitFunction(variation)); + if (fct.overloads) { + _.forEach(fct.overloads, (overload) => this._visitFunction(overload)); } _.forEach(fct.typeParameters, (typeParam) => this._visitTypeParam(typeParam), @@ -1268,7 +1268,7 @@ function buildFunction(ui5Method: ObjMethod): FunctionDesc { assertKnownProps( [ "name", - "variations", + "overloads", "typeParameters", "parameters", "returnValue", @@ -1281,8 +1281,8 @@ function buildFunction(ui5Method: ObjMethod): FunctionDesc { const astNode: FunctionDesc = { kind: "FunctionDesc", name: ui5Method.name, - variations: ui5Method.variations - ? _.map(ui5Method.variations, buildFunction) + overloads: ui5Method.overloads + ? _.map(ui5Method.overloads, buildFunction) : undefined, static: ui5Method.static === true, typeParameters: _.map(ui5Method.typeParameters, buildTypeParameter), diff --git a/packages/dts-generator/src/types/ast.d.ts b/packages/dts-generator/src/types/ast.d.ts index 4df765e..d13d28c 100644 --- a/packages/dts-generator/src/types/ast.d.ts +++ b/packages/dts-generator/src/types/ast.d.ts @@ -135,7 +135,7 @@ export interface VariableWithValue extends Variable { export interface FunctionDesc extends AstNode, UI5JSDocs { kind: "FunctionDesc"; name: string; - variations?: Array; + overloads?: Array; static?: boolean; overwrite?: boolean; typeParameters?: TypeParameter[]; From f9c1677ee35cb9fefb9fadd0608787a13530863e Mon Sep 17 00:00:00 2001 From: Frank Weigel Date: Thu, 3 Oct 2024 12:04:20 +0200 Subject: [PATCH 3/3] feat: add yarn as packageManager in package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 2b4d3fb..fbcc348 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "root", "private": true, + "packageManager": "yarn@1.22.22", "workspaces": { "packages": [ "packages/*",