From bf53c4358924a44d04298b80689b2fae0e891a22 Mon Sep 17 00:00:00 2001 From: akudev Date: Wed, 15 Oct 2025 16:08:18 +0200 Subject: [PATCH] chore(ts-interface-generator): update more dependencies In particular new eslint config format Plus adapt formatting --- packages/ts-interface-generator/.eslintrc.js | 38 --- .../ts-interface-generator/eslint.config.js | 63 ++++ packages/ts-interface-generator/package.json | 8 +- .../src/addSourceExports.ts | 4 +- .../src/astGenerationHelper.ts | 2 +- .../src/generateTSInterfaces.ts | 7 +- .../src/interfaceGenerationHelper.ts | 306 +++++++++--------- .../src/jsdocGenerator.ts | 2 +- .../src/typeScriptEnvironment.ts | 3 +- yarn.lock | 250 ++++---------- 10 files changed, 280 insertions(+), 403 deletions(-) delete mode 100644 packages/ts-interface-generator/.eslintrc.js create mode 100644 packages/ts-interface-generator/eslint.config.js diff --git a/packages/ts-interface-generator/.eslintrc.js b/packages/ts-interface-generator/.eslintrc.js deleted file mode 100644 index eec0f63..0000000 --- a/packages/ts-interface-generator/.eslintrc.js +++ /dev/null @@ -1,38 +0,0 @@ -module.exports = { - env: { - browser: true, - es6: true, - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - project: [ - "./tsconfig.json", - "./tsconfig-testcontrol.json", - "./tsconfig-tests.json", - ], - tsconfigRootDir: __dirname, - sourceType: "module", - }, - plugins: ["@typescript-eslint"], - rules: { - "@typescript-eslint/ban-ts-comment": [ - "error", - { - "ts-ignore": "allow-with-description", - minimumDescriptionLength: 10, - }, - ], - }, - ignorePatterns: [ - ".eslintrc.js", - "someFile.js", - "*.gen.d.ts", - "src/test/samples/sampleWebComponent/**/*", - ], -}; diff --git a/packages/ts-interface-generator/eslint.config.js b/packages/ts-interface-generator/eslint.config.js new file mode 100644 index 0000000..8463632 --- /dev/null +++ b/packages/ts-interface-generator/eslint.config.js @@ -0,0 +1,63 @@ +const { defineConfig, globalIgnores } = require("eslint/config"); + +const globals = require("globals"); +const tsParser = require("@typescript-eslint/parser"); +const typescriptEslint = require("@typescript-eslint/eslint-plugin"); +const js = require("@eslint/js"); + +const { FlatCompat } = require("@eslint/eslintrc"); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +module.exports = defineConfig([ + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + + parser: tsParser, + sourceType: "module", + + parserOptions: { + project: [ + "./tsconfig.json", + "./tsconfig-testcontrol.json", + "./tsconfig-tests.json", + ], + tsconfigRootDir: __dirname, + }, + }, + + extends: compat.extends( + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + ), + + plugins: { + "@typescript-eslint": typescriptEslint, + }, + + rules: { + "@typescript-eslint/ban-ts-comment": [ + "error", + { + "ts-ignore": "allow-with-description", + minimumDescriptionLength: 10, + }, + ], + }, + }, + globalIgnores([ + "**/.eslintrc.js", + "**/someFile.js", + "**/*.gen.d.ts", + "src/test/samples/sampleWebComponent/**/*", + ]), +]); diff --git a/packages/ts-interface-generator/package.json b/packages/ts-interface-generator/package.json index 3b36eee..87c79ec 100644 --- a/packages/ts-interface-generator/package.json +++ b/packages/ts-interface-generator/package.json @@ -40,9 +40,9 @@ "@types/node": "24.7.2", "@types/openui5": "1.127.0", "@types/yargs": "17.0.33", - "@typescript-eslint/eslint-plugin": "7.14.1", - "@typescript-eslint/parser": "7.14.1", - "eslint": "8.57.0", + "@typescript-eslint/eslint-plugin": "8.46.1", + "@typescript-eslint/parser": "8.46.1", + "eslint": "9.37.0", "jest": "30.2.0", "npm-run-all": "4.1.5", "ts-jest": "29.4.5", @@ -51,7 +51,7 @@ "dependencies": { "hjson": "3.2.2", "loglevel": "1.9.2", - "yargs": "17.7.2" + "yargs": "18.0.0" }, "peerDependencies": { "typescript": ">=5.2.0" diff --git a/packages/ts-interface-generator/src/addSourceExports.ts b/packages/ts-interface-generator/src/addSourceExports.ts index 8bb4173..2c6f561 100644 --- a/packages/ts-interface-generator/src/addSourceExports.ts +++ b/packages/ts-interface-generator/src/addSourceExports.ts @@ -1,5 +1,5 @@ -import path = require("path"); -import ts = require("typescript"); +import path from "path"; +import ts from "typescript"; /** * This function aims to find the UI5-style global name for all exports of the given source file diff --git a/packages/ts-interface-generator/src/astGenerationHelper.ts b/packages/ts-interface-generator/src/astGenerationHelper.ts index 6535026..80dfa4c 100644 --- a/packages/ts-interface-generator/src/astGenerationHelper.ts +++ b/packages/ts-interface-generator/src/astGenerationHelper.ts @@ -1,4 +1,4 @@ -import ts = require("typescript"); +import ts from "typescript"; import astToString from "./astToString"; import log from "loglevel"; import { diff --git a/packages/ts-interface-generator/src/generateTSInterfaces.ts b/packages/ts-interface-generator/src/generateTSInterfaces.ts index d311ce8..0cba163 100644 --- a/packages/ts-interface-generator/src/generateTSInterfaces.ts +++ b/packages/ts-interface-generator/src/generateTSInterfaces.ts @@ -8,8 +8,8 @@ import yargs from "yargs"; // configure yargs with the cli options as launcher const version = `${pkgJson.version} (from ${__filename})`; -yargs.version(version); -yargs +const appArgs = yargs() + .version(version) .option({ config: { alias: "c", @@ -33,7 +33,6 @@ yargs }, }) .default("watch", false) - .default("loglevel", "info"); + .default("loglevel", "info").argv as Args; -const appArgs = yargs.argv as Args; main(appArgs); diff --git a/packages/ts-interface-generator/src/interfaceGenerationHelper.ts b/packages/ts-interface-generator/src/interfaceGenerationHelper.ts index d0d720f..877a43f 100644 --- a/packages/ts-interface-generator/src/interfaceGenerationHelper.ts +++ b/packages/ts-interface-generator/src/interfaceGenerationHelper.ts @@ -1,7 +1,7 @@ -import path = require("path"); -import fs = require("fs"); -import ts = require("typescript"); -import Hjson = require("hjson"); +import path from "path"; +import fs from "fs"; +import ts from "typescript"; +import Hjson from "hjson"; import collectClassInfo, { expandDefaultKey } from "./collectClassInfo"; import { generateMethods, @@ -220,19 +220,17 @@ function getManagedObjects( const managedObjects: ManagedObjectInfo[] = []; sourceFile.statements.forEach((statement) => { - if (ts.isClassDeclaration(statement)) { + if (ts.isClassDeclaration(statement) && statement.heritageClauses) { let managedObjectFound = false; - statement.heritageClauses && - statement.heritageClauses.forEach((heritageClause) => { - heritageClause.types && - heritageClause.types.forEach((typeNode) => { - const type = typeChecker.getTypeFromTypeNode(typeNode); - const symbol = type.getSymbol(); - if (!symbol) { - throw new Error( - `Type '${typeNode.getText()}' referenced in ${ - sourceFile.fileName - } in the inheritance clause '${heritageClause.getFullText()}' could not be resolved. + statement.heritageClauses.forEach((heritageClause) => { + heritageClause.types?.forEach((typeNode) => { + const type = typeChecker.getTypeFromTypeNode(typeNode); + const symbol = type.getSymbol(); + if (!symbol) { + throw new Error( + `Type '${typeNode.getText()}' referenced in ${ + sourceFile.fileName + } in the inheritance clause '${heritageClause.getFullText()}' could not be resolved. Check the respective line in the source code: ts there an error for this type? Make sure the type is properly imported. If a working "import" is not possible and it is a UI5 type (or type from another library), the issue could be caused by the respective type definitions not being available. They must be found by the TypeScript compiler according to the configuration in tsconfig. To verify this step-by-step, you can do the following: 1. Check whether the (UI5 or other) types are added as dependency in package.json (or available as transitive dependency) @@ -240,158 +238,154 @@ If a working "import" is not possible and it is a UI5 type (or type from another 3. Check the "tsconfig.json" file: types outside the default "@types" package must be explicitly added in the "types" or "typeRoots" section. Is the name and path correct? One known cause of this error is that the "typeRoots" setting in tsconfig.json has wrong paths, which are not actually pointing to the correct location of the type definitions. Or is there a different reason why this type would not be known?`, - ); + ); + } + + // now check whether this type from which has been inherited is a ManagedObject + const interestingBaseClass = getInterestingBaseClass( + type, + typeChecker, + ); + if (!interestingBaseClass) { + return; + } + managedObjectFound = true; + + // ok, we have a ManagedObject/Control; now check whether it contains a metadata section, which means that accessor methods need to be generated + const metadata: ts.PropertyDeclaration[] = ( + statement.members.filter((member) => { + if ( + ts.isPropertyDeclaration(member) && + ts.isIdentifier(member.name) && + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison + member.name.escapedText === "metadata" && + member.modifiers && + member.modifiers.some((modifier) => { + return modifier.kind === ts.SyntaxKind.StaticKeyword; + }) + ) { + return true; } + }) + ); + if (!metadata || metadata.length === 0) { + // no metadata? => nothing to do + log.debug( + `Class ${statement.name ? statement.name.text : ""} in ${ + sourceFile.fileName + } inherits from ${interestingBaseClass} but has no metadata. This is not necessarily an issue, but if there is a metadata member in this class which *should* be recognized, make sure it has the 'static' keyword!`, + ); + return; + } else if (metadata.length > 1) { + // more than one metadata block?? + log.warn( + `ManagedObject with ${ + metadata.length + } static metadata members in class ${ + statement.name ? statement.name.text : "" + } inside ${ + sourceFile.fileName + }. This is unexpected. Ignoring this class.`, + ); + return; + } else if (!metadata[0].initializer) { + // exactly one "metadata" declaration, BUT not initialized with the actual metadata value + // this may mean that someone accidentally wrote "metadata: {...}" instead of "metadata = {...}", which is syntactically correct, + // but assigns a type structure, not a value. This would fail at runtime, as none of the intended API declarations work, but before + // failing at runtime, it would fail here in the generator, which later on tries to access the data. So let's warn the user. + log.warn( + `Inside file ${sourceFile.fileName}${ + statement.name ? " in class " + statement.name.text : "" + } there is a metadata declaration without a value. Did you accidentally write "metadata: ..." instead of "metadata = ..."?`, + ); + return; + } - // now check whether this type from which has been inherited is a ManagedObject - const interestingBaseClass = getInterestingBaseClass( - type, - typeChecker, + // invariant: there is exactly one metadata block with an initializer + + // now check whether there is a settings type in the superclass + // (which the generated settings type needs to inherit from) + // There really should be, because all descendants of ManagedObject should have one! + let settingsTypeFullName; + const settingsTypeNode = getSettingsType(type, typeChecker); + if (settingsTypeNode) { + const settingsType = + typeChecker.getTypeFromTypeNode(settingsTypeNode); + const symbol = settingsType.getSymbol(); + settingsTypeFullName = typeChecker.getFullyQualifiedName(symbol); + + if (settingsTypeFullName.startsWith('"./')) { + const settingsTypeDeclaration = symbol.getDeclarations()[0]; + const settingsTypeSourceFile = + settingsTypeDeclaration.getSourceFile().fileName; + const settingsTypeDirectory = path.dirname( + settingsTypeSourceFile, ); - if (!interestingBaseClass) { - return; - } - managedObjectFound = true; - - // ok, we have a ManagedObject/Control; now check whether it contains a metadata section, which means that accessor methods need to be generated - const metadata: ts.PropertyDeclaration[] = < - ts.PropertyDeclaration[] - >statement.members.filter((member) => { - if ( - ts.isPropertyDeclaration(member) && - ts.isIdentifier(member.name) && - // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison - member.name.escapedText === "metadata" && - member.modifiers && - member.modifiers.some((modifier) => { - return modifier.kind === ts.SyntaxKind.StaticKeyword; - }) - ) { - return true; - } - }); - if (!metadata || metadata.length === 0) { - // no metadata? => nothing to do - log.debug( - `Class ${statement.name ? statement.name.text : ""} in ${ - sourceFile.fileName - } inherits from ${interestingBaseClass} but has no metadata. This is not necessarily an issue, but if there is a metadata member in this class which *should* be recognized, make sure it has the 'static' keyword!`, + const managedObjectDirectory = path.dirname(sourceFile.fileName); + if (managedObjectDirectory !== settingsTypeDirectory) { + // settings type of superclass is in different directory, hence the generated import will have to traverse to that directory + const relativePath = path + .relative(managedObjectDirectory, settingsTypeDirectory) + .replace(/\\/g, "/"); + const match = settingsTypeFullName.match( + /".\/([^/]+\/)*([^/]+)".*/, ); - return; - } else if (metadata.length > 1) { - // more than one metadata block?? - log.warn( - `ManagedObject with ${ - metadata.length - } static metadata members in class ${ - statement.name ? statement.name.text : "" - } inside ${ - sourceFile.fileName - }. This is unexpected. Ignoring this class.`, - ); - return; - } else if (!metadata[0].initializer) { - // exactly one "metadata" declaration, BUT not initialized with the actual metadata value - // this may mean that someone accidentally wrote "metadata: {...}" instead of "metadata = {...}", which is syntactically correct, - // but assigns a type structure, not a value. This would fail at runtime, as none of the intended API declarations work, but before - // failing at runtime, it would fail here in the generator, which later on tries to access the data. So let's warn the user. - log.warn( - `Inside file ${sourceFile.fileName}${ - statement.name ? " in class " + statement.name.text : "" - } there is a metadata declaration without a value. Did you accidentally write "metadata: ..." instead of "metadata = ..."?`, - ); - return; - } - - // invariant: there is exactly one metadata block with an initializer - - // now check whether there is a settings type in the superclass - // (which the generated settings type needs to inherit from) - // There really should be, because all descendants of ManagedObject should have one! - let settingsTypeFullName; - const settingsTypeNode = getSettingsType(type, typeChecker); - if (settingsTypeNode) { - const settingsType = - typeChecker.getTypeFromTypeNode(settingsTypeNode); - const symbol = settingsType.getSymbol(); - settingsTypeFullName = - typeChecker.getFullyQualifiedName(symbol); - - if (settingsTypeFullName.startsWith('"./')) { - const settingsTypeDeclaration = symbol.getDeclarations()[0]; - const settingsTypeSourceFile = - settingsTypeDeclaration.getSourceFile().fileName; - const settingsTypeDirectory = path.dirname( - settingsTypeSourceFile, - ); - const managedObjectDirectory = path.dirname( - sourceFile.fileName, - ); - if (managedObjectDirectory !== settingsTypeDirectory) { - // settings type of superclass is in different directory, hence the generated import will have to traverse to that directory - const relativePath = path - .relative(managedObjectDirectory, settingsTypeDirectory) - .replace(/\\/, "/"); - const match = settingsTypeFullName.match( - /".\/([^/]+\/)*([^/]+)".*/, - ); - if (match) { - // insert the relative path - settingsTypeFullName = - '"./' + relativePath + settingsTypeFullName.slice(2); - } - } + if (match) { + // insert the relative path + settingsTypeFullName = + '"./' + relativePath + settingsTypeFullName.slice(2); } - } else if (metadata) { - throw new Error( - `'${ - statement.name ? statement.name.text : "" - }' inherits from '${interestingBaseClass}' and has metadata, but the parent class '${typeChecker.getFullyQualifiedName( - type.getSymbol(), - )}' seems to have no settings type. It might have no constructors - this is where the settings type is used. Or the settings type used there and its inheritance chain could not be resolved. + } + } + } else if (metadata) { + throw new Error( + `'${ + statement.name ? statement.name.text : "" + }' inherits from '${interestingBaseClass}' and has metadata, but the parent class '${typeChecker.getFullyQualifiedName( + type.getSymbol(), + )}' seems to have no settings type. It might have no constructors - this is where the settings type is used. Or the settings type used there and its inheritance chain could not be resolved. In case this parent class is also in your project, make sure to add its constructors, then try again. A comment with instructions might be in the console output above. Otherwise, you can temporarily remove this file (${ - sourceFile.fileName - }) from the project and try again to get the console output with the suggested constructors. + sourceFile.fileName + }) from the project and try again to get the console output with the suggested constructors. In any case, you need to make the parent class ${typeChecker.getFullyQualifiedName( - type.getSymbol(), - )} have constructors with typed settings object to overcome this issue. + type.getSymbol(), + )} have constructors with typed settings object to overcome this issue. `, - ); - } - - // check for already available constructor signatures (if not found, the console output prompts the user to add them) - const constructorSignaturesAvailable = - checkConstructors(statement); - - const className = statement.name ? statement.name.text : ""; - - // is this class a default export? - const isDefaultExport = - defaultExport && - ((ts.isIdentifier(defaultExport) && - defaultExport.text === className) || - defaultExport === statement); - - // store the information about the identified ManagedObject/Control - managedObjects.push({ - sourceFile, - className, - isDefaultExport, - classDeclaration: statement, - settingsTypeFullName, - interestingBaseClass, - constructorSignaturesAvailable, - metadata, - }); - return; - }); - if (managedObjectFound) { - // do not look at any other heritage clauses - return; + ); } + + // check for already available constructor signatures (if not found, the console output prompts the user to add them) + const constructorSignaturesAvailable = checkConstructors(statement); + + const className = statement.name ? statement.name.text : ""; + + // is this class a default export? + const isDefaultExport = + defaultExport && + ((ts.isIdentifier(defaultExport) && + defaultExport.text === className) || + defaultExport === statement); + + // store the information about the identified ManagedObject/Control + managedObjects.push({ + sourceFile, + className, + isDefaultExport, + classDeclaration: statement, + settingsTypeFullName, + interestingBaseClass, + constructorSignaturesAvailable, + metadata, + }); + return; }); + if (managedObjectFound) { + // do not look at any other heritage clauses + return; + } + }); } }); return managedObjects; diff --git a/packages/ts-interface-generator/src/jsdocGenerator.ts b/packages/ts-interface-generator/src/jsdocGenerator.ts index 24e8827..4d3ab9d 100644 --- a/packages/ts-interface-generator/src/jsdocGenerator.ts +++ b/packages/ts-interface-generator/src/jsdocGenerator.ts @@ -110,7 +110,7 @@ export function addJSDoc(oClassInfo: ClassInfo) { if (!minimal) { // only add generated suffix when prefs are not set to "minimal" - suffixLines && suffixLines.forEach((line) => lines.push(line)); + suffixLines?.forEach((line) => lines.push(line)); lines.push(""); } diff --git a/packages/ts-interface-generator/src/typeScriptEnvironment.ts b/packages/ts-interface-generator/src/typeScriptEnvironment.ts index 1717cf0..d4174be 100644 --- a/packages/ts-interface-generator/src/typeScriptEnvironment.ts +++ b/packages/ts-interface-generator/src/typeScriptEnvironment.ts @@ -155,8 +155,9 @@ function reportWatchStatusChanged(diagnostic: ts.Diagnostic) { ); // not interested in changes to generated files if (newChangedFiles.length) { const timer_begin = performance.now(); - !options.watchMode && + if (!options.watchMode) { log.debug("Changed files:\n- " + newChangedFiles.join("\n- ")); + } onProgramChanged(newProgram, newChangedFiles); const timer_end = performance.now(); log.debug( diff --git a/yarn.lock b/yarn.lock index c37f343..6d38843 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1215,7 +1215,7 @@ dependencies: tslib "^2.4.0" -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.7.0", "@eslint-community/eslint-utils@^4.8.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0", "@eslint-community/eslint-utils@^4.8.0": version "4.9.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== @@ -1280,11 +1280,6 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - "@eslint/js@8.57.1": version "8.57.1" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" @@ -1321,15 +1316,6 @@ "@humanfs/core" "^0.19.1" "@humanwhocodes/retry" "^0.4.0" -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - "@humanwhocodes/config-array@^0.13.0": version "0.13.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" @@ -1344,7 +1330,7 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2", "@humanwhocodes/object-schema@^2.0.3": +"@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== @@ -2882,21 +2868,6 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz#90e2f76a5930d553ede124e1f541a39b4417465e" - integrity sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.14.1" - "@typescript-eslint/type-utils" "7.14.1" - "@typescript-eslint/utils" "7.14.1" - "@typescript-eslint/visitor-keys" "7.14.1" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^1.3.0" - "@typescript-eslint/eslint-plugin@8.46.1", "@typescript-eslint/eslint-plugin@^8.13.0": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.1.tgz#20876354024140aabc8b400bc95735fdcade17d5" @@ -2912,17 +2883,6 @@ natural-compare "^1.4.0" ts-api-utils "^2.1.0" -"@typescript-eslint/parser@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.14.1.tgz#13d97f357aed3c5719f259a6cc3d1a1f065d3692" - integrity sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA== - dependencies: - "@typescript-eslint/scope-manager" "7.14.1" - "@typescript-eslint/types" "7.14.1" - "@typescript-eslint/typescript-estree" "7.14.1" - "@typescript-eslint/visitor-keys" "7.14.1" - debug "^4.3.4" - "@typescript-eslint/parser@8.46.1", "@typescript-eslint/parser@^8.13.0": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.46.1.tgz#81751f46800fc6b01ce1a72760cd17f06e7f395b" @@ -2943,14 +2903,6 @@ "@typescript-eslint/types" "^8.46.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz#63de7a577bc6fe8ee6e412a5b85499f654b93ee5" - integrity sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA== - dependencies: - "@typescript-eslint/types" "7.14.1" - "@typescript-eslint/visitor-keys" "7.14.1" - "@typescript-eslint/scope-manager@8.46.1": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.46.1.tgz#590dd2e65e95af646bdaf50adeae9af39e25e8c1" @@ -2964,16 +2916,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.1.tgz#24405888560175c6c209c39df11ac06a2efef9d7" integrity sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g== -"@typescript-eslint/type-utils@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz#c183f2f28c4c8578eb80aebc4ac9ace400160af6" - integrity sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ== - dependencies: - "@typescript-eslint/typescript-estree" "7.14.1" - "@typescript-eslint/utils" "7.14.1" - debug "^4.3.4" - ts-api-utils "^1.3.0" - "@typescript-eslint/type-utils@8.46.1": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.46.1.tgz#14d4307dd6045f6b48a888cde1513d6ec305537f" @@ -2985,30 +2927,11 @@ debug "^4.3.4" ts-api-utils "^2.1.0" -"@typescript-eslint/types@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.14.1.tgz#a43a540dbe5df7f2a11269683d777fc50b4350aa" - integrity sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg== - "@typescript-eslint/types@8.46.1", "@typescript-eslint/types@^8.13.0", "@typescript-eslint/types@^8.46.1": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.46.1.tgz#4c5479538ec10b5508b8e982e172911c987446d8" integrity sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ== -"@typescript-eslint/typescript-estree@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz#ba7c9bac8744487749d19569e254d057754a1575" - integrity sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA== - dependencies: - "@typescript-eslint/types" "7.14.1" - "@typescript-eslint/visitor-keys" "7.14.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - "@typescript-eslint/typescript-estree@8.46.1", "@typescript-eslint/typescript-estree@^8.13.0": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.1.tgz#1c146573b942ebe609c156c217ceafdc7a88e6ed" @@ -3025,16 +2948,6 @@ semver "^7.6.0" ts-api-utils "^2.1.0" -"@typescript-eslint/utils@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.14.1.tgz#3307b8226f99103dca2133d0ebcae38419d82c9d" - integrity sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.14.1" - "@typescript-eslint/types" "7.14.1" - "@typescript-eslint/typescript-estree" "7.14.1" - "@typescript-eslint/utils@8.46.1", "@typescript-eslint/utils@^8.13.0": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.46.1.tgz#c572184d9227d66b10a954b90249a20c48b22452" @@ -3045,14 +2958,6 @@ "@typescript-eslint/types" "8.46.1" "@typescript-eslint/typescript-estree" "8.46.1" -"@typescript-eslint/visitor-keys@7.14.1": - version "7.14.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz#cc79b5ea154aea734b2a13b983670749f5742274" - integrity sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA== - dependencies: - "@typescript-eslint/types" "7.14.1" - eslint-visitor-keys "^3.4.3" - "@typescript-eslint/visitor-keys@8.46.1": version "8.46.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.1.tgz#da35f1d58ec407419d68847cfd358b32746ac315" @@ -3103,7 +3008,7 @@ yargs "^17.7.2" "@ui5/dts-generator@link:packages/dts-generator": - version "3.9.0" + version "3.9.1" dependencies: "@definitelytyped/dtslint" latest "@definitelytyped/eslint-plugin" latest @@ -4395,6 +4300,15 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +cliui@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-9.0.1.tgz#6f7890f386f6f1f79953adc1f78dec46fcc2d291" + integrity sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w== + dependencies: + string-width "^7.2.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -5101,13 +5015,6 @@ diff@^7.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -5551,49 +5458,46 @@ eslint-visitor-keys@^4.2.1: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== -eslint@8.57.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint@9.37.0, eslint@^9.37.0: + version "9.37.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.37.0.tgz#ac0222127f76b09c0db63036f4fe289562072d74" + integrity sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint-community/eslint-utils" "^4.8.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.0" + "@eslint/config-helpers" "^0.4.0" + "@eslint/core" "^0.16.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.37.0" + "@eslint/plugin-kit" "^0.4.0" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" eslint@^8.57.1: version "8.57.1" @@ -5639,47 +5543,6 @@ eslint@^8.57.1: strip-ansi "^6.0.1" text-table "^0.2.0" -eslint@^9.37.0: - version "9.37.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.37.0.tgz#ac0222127f76b09c0db63036f4fe289562072d74" - integrity sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig== - dependencies: - "@eslint-community/eslint-utils" "^4.8.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.21.0" - "@eslint/config-helpers" "^0.4.0" - "@eslint/core" "^0.16.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.37.0" - "@eslint/plugin-kit" "^0.4.0" - "@humanfs/node" "^0.16.6" - "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.2" - "@types/estree" "^1.0.6" - "@types/json-schema" "^7.0.15" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.6" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^8.4.0" - eslint-visitor-keys "^4.2.1" - espree "^10.4.0" - esquery "^1.5.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - json-stable-stringify-without-jsonify "^1.0.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - espree@^10.0.1, espree@^10.4.0: version "10.4.0" resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" @@ -5897,7 +5760,7 @@ fast-fifo@^1.2.0, fast-fifo@^1.3.2: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3: +fast-glob@^3.3.2, fast-glob@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -6527,18 +6390,6 @@ globalthis@^1.0.4: define-properties "^1.2.1" gopd "^1.0.1" -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - globby@^14.0.2, globby@^14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-14.1.0.tgz#138b78e77cf5a8d794e327b15dce80bf1fb0a73e" @@ -6871,7 +6722,7 @@ ignore-walk@^8.0.0: dependencies: minimatch "^10.0.3" -ignore@^5.0.4, ignore@^5.2.0, ignore@^5.3.1: +ignore@^5.0.4, ignore@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== @@ -8622,7 +8473,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -9866,11 +9717,6 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - path-type@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-6.0.0.tgz#2f1bb6791a91ce99194caede5d6c5920ed81eb51" @@ -11526,11 +11372,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-api-utils@^1.3.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== - ts-api-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" @@ -12410,6 +12251,11 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^22.0.0: + version "22.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-22.0.0.tgz#87b82094051b0567717346ecd00fd14804b357c8" + integrity sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw== + yargs-unparser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -12433,6 +12279,18 @@ yargs@17.7.2, yargs@^17.0.0, yargs@^17.6.2, yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yargs@18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-18.0.0.tgz#6c84259806273a746b09f579087b68a3c2d25bd1" + integrity sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg== + dependencies: + cliui "^9.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + string-width "^7.2.0" + y18n "^5.0.5" + yargs-parser "^22.0.0" + yargs@^16.0.0, yargs@^16.1.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"