From 180d87d7ca5d559dbec814066748ac3ca2ada932 Mon Sep 17 00:00:00 2001 From: riccio82 Date: Fri, 24 Apr 2026 12:20:20 +0200 Subject: [PATCH 01/38] Replace Webpack with Vite 8 build system Migrate the entire frontend build pipeline from Webpack to Vite 8 (Rolldown/OXC). Adds vite.config.js with entry discovery from groups.json, HTML template generation, vendor code splitting, and dynamic plugin loading via glob + indirect eval. - Add vite.config.js with htmlTemplatePlugin for PHPTAL templates - Add public/vite-entries/ with all entry points and groups.json - Add lib/Utils/Vite/ViteAssets.php for dev/prod asset injection - Update BaseKleinViewController to use ViteAssets - Update templates (_manage.html, common.html) for Vite assets - Update package.json: consolidate scripts, add Vite deps, add events polyfill, remove 14 webpack-only devDependencies - Delete webpack.config.js - Update .gitignore for public/build/ output directory --- .gitignore | 3 +- .../Abstracts/BaseKleinViewController.php | 33 +- lib/Utils/Vite/ViteAssets.php | 77 + lib/View/templates/_manage.html | 4 +- lib/View/templates/common.html | 4 +- package.json | 24 +- public/vite-entries/activityLog.js | 2 + public/vite-entries/allPagesPlugins.js | 1 + public/vite-entries/analyze.js | 2 + public/vite-entries/apiDoc.js | 2 + public/vite-entries/cattool.js | 7 + public/vite-entries/cattoolPlugins.js | 1 + public/vite-entries/commonCss.js | 1 + public/vite-entries/dashboard.js | 3 + public/vite-entries/errorPage.js | 1 + public/vite-entries/groups.json | 31 + public/vite-entries/qa-report.js | 2 + public/vite-entries/signin.js | 4 + public/vite-entries/test-entry.js | 1 + public/vite-entries/upload.js | 4 + public/vite-entries/uploadPlugins.js | 1 + public/vite-entries/xliffToTarget.js | 2 + vite.config.js | 298 ++++ webpack.config.js | 575 ------ yarn.lock | 1561 +++++------------ 25 files changed, 873 insertions(+), 1771 deletions(-) create mode 100644 lib/Utils/Vite/ViteAssets.php create mode 100644 public/vite-entries/activityLog.js create mode 100644 public/vite-entries/allPagesPlugins.js create mode 100644 public/vite-entries/analyze.js create mode 100644 public/vite-entries/apiDoc.js create mode 100644 public/vite-entries/cattool.js create mode 100644 public/vite-entries/cattoolPlugins.js create mode 100644 public/vite-entries/commonCss.js create mode 100644 public/vite-entries/dashboard.js create mode 100644 public/vite-entries/errorPage.js create mode 100644 public/vite-entries/groups.json create mode 100644 public/vite-entries/qa-report.js create mode 100644 public/vite-entries/signin.js create mode 100644 public/vite-entries/test-entry.js create mode 100644 public/vite-entries/upload.js create mode 100644 public/vite-entries/uploadPlugins.js create mode 100644 public/vite-entries/xliffToTarget.js create mode 100644 vite.config.js delete mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index a17e03c23e..6d1b11f7a5 100644 --- a/.gitignore +++ b/.gitignore @@ -84,4 +84,5 @@ certs /.phpunit.cache /CallGraph /PHP-SQL-Parser -/storage \ No newline at end of file +/storage +/public/build/ diff --git a/lib/Controller/Abstracts/BaseKleinViewController.php b/lib/Controller/Abstracts/BaseKleinViewController.php index 474eb7c5ac..134ede2ed8 100644 --- a/lib/Controller/Abstracts/BaseKleinViewController.php +++ b/lib/Controller/Abstracts/BaseKleinViewController.php @@ -20,6 +20,7 @@ use Utils\Templating\PHPTalMap; use Utils\Templating\PHPTALWithAppend; use Utils\Tools\Utils; +use Utils\Vite\ViteAssets; /** * Created by PhpStorm. @@ -67,9 +68,21 @@ public function __construct(Request $request, Response $response, ?ServiceProvid */ public function setView(string $template_name, array $params = [], int $code = 200): void { - $this->view = new PHPTALWithAppend(AppConfig::$TEMPLATE_ROOT . "/$template_name"); + $viteDevMode = ViteAssets::isDevMode(); + + if ( $viteDevMode ) { + $templatePath = AppConfig::$TEMPLATE_ROOT . "/templates/_$template_name"; + } else { + $templatePath = AppConfig::$TEMPLATE_ROOT . "/$template_name"; + } + + $this->view = new PHPTALWithAppend($templatePath); $this->httpCode = $code; + if ( $viteDevMode ) { + $this->view->setTemplateRepository( AppConfig::$TEMPLATE_ROOT ); + } + $this->view->{'basepath'} = AppConfig::$BASEURL; $this->view->{'hostpath'} = AppConfig::$HTTPHOST; $this->view->{'build_number'} = AppConfig::$BUILD_NUMBER; @@ -92,7 +105,18 @@ public function setView(string $template_name, array $params = [], int $code = 2 $this->view->{'footer_js'} = []; $this->view->{'config_js'} = []; - $this->view->{'css_resources'} = []; + + /** + * This is a unique ID generated at runtime. + * It is injected into the nonce attribute of `< script >` tags to allow browsers to safely execute the contained CSS and JavaScript. + */ + $nonce = Utils::uuid4(); + $this->view->{'x_nonce_unique_id'} = $nonce; + + $this->view->{'vite_html'} = ''; + if ( $viteDevMode ) { + $this->view->{'vite_html'} = ViteAssets::getHtml( $template_name, $nonce ); + } // init oauth clients $this->view->{'googleAuthURL'} = (AppConfig::$GOOGLE_OAUTH_CLIENT_ID) ? OauthClient::getInstance(GoogleProvider::PROVIDER_NAME)->getAuthorizationUrl($_SESSION) : ""; @@ -107,11 +131,6 @@ public function setView(string $template_name, array $params = [], int $code = 2 AppConfig::$HTTPHOST . "/gdrive/oauth/response" )->getAuthorizationUrl($_SESSION, 'drive') : ""; - /** - * This is a unique ID generated at runtime. - * It is injected into the nonce attribute of `< script >` tags to allow browsers to safely execute the contained CSS and JavaScript. - */ - $this->view->{'x_nonce_unique_id'} = Utils::uuid4(); $this->view->{'x_self_ajax_location_hosts'} = AppConfig::$ENABLE_MULTI_DOMAIN_API ? " *.ajax." . parse_url(AppConfig::$HTTPHOST)['host'] : null; $this->addParamsToView($params); diff --git a/lib/Utils/Vite/ViteAssets.php b/lib/Utils/Vite/ViteAssets.php new file mode 100644 index 0000000000..2647a5eaf1 --- /dev/null +++ b/lib/Utils/Vite/ViteAssets.php @@ -0,0 +1,77 @@ +' + . "import RefreshRuntime from '/@react-refresh'\n" + . "RefreshRuntime.injectIntoGlobalHook(window)\n" + . 'window.$RefreshReg$ = () => {}' . "\n" + . 'window.$RefreshSig$ = () => (type) => type' . "\n" + . 'window.__vite_plugin_react_preamble_installed__ = true' + . ''; + + $lines[] = ''; + + foreach ( $entries as $entry ) { + $lines[] = ''; + } + + return implode( "\n", $lines ); + } + +} diff --git a/lib/View/templates/_manage.html b/lib/View/templates/_manage.html index e72fcd4698..55927e2ec3 100755 --- a/lib/View/templates/_manage.html +++ b/lib/View/templates/_manage.html @@ -39,9 +39,7 @@
-
-
Loading Projects
-
+
diff --git a/lib/View/templates/common.html b/lib/View/templates/common.html index ef63df133d..c583444778 100644 --- a/lib/View/templates/common.html +++ b/lib/View/templates/common.html @@ -46,8 +46,6 @@ - - - + ${structure vite_html} diff --git a/package.json b/package.json index 38df42c7d3..62f06eebdf 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "lint": "eslint --ignore-path .gitignore .", "test": "jest --watchAll", "coverage": "jest --silent --coverage", - "watch": "sed -i \"s/version .*/version = \\\"v${npm_package_version}\\\"/g\" ./nodejs/config.ini && webpack --mode development --watch", - "build:dev": "sed -i \"s/version .*/version = \\\"v${npm_package_version}\\\"/g\" ./nodejs/config.ini && webpack --mode development", - "build:production": "webpack --mode production", + "watch": "vite", + "build:dev": "vite build --mode development", + "build:production": "vite build", "prepare": "husky" }, "workspaces": [ @@ -25,6 +25,7 @@ "crypto-js": "^4.1.1", "diff-match-patch": "^1.0.5", "draft-js": "^0.11.4", + "events": "^3.3.0", "file-saver": "^2.0.5", "flux": "^4.0.4", "format-message": "^6.2.4", @@ -59,18 +60,16 @@ "devDependencies": { "@babel/core": "^7.28.5", "@babel/eslint-parser": "^7.28.5", - "@babel/plugin-transform-runtime": "^7.28.5", "@babel/preset-env": "^7.28.5", "@babel/preset-react": "^7.28.5", - "@sentry/webpack-plugin": "4.9.1", + "@sentry/vite-plugin": "^5.2.0", "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.2.0", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", - "babel-loader": "10.1.1", + "@vitejs/plugin-react": "^6.0.1", "baseline-browser-mapping": "^2.9.15", "broadcast-channel": "^7.1.0", - "css-loader": "7.1.4", "eslint": "^8.0.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-jest": "^29.0.0", @@ -80,27 +79,18 @@ "eslint-plugin-testing-library": "^7.0.0", "fs-extra": "^11.1.1", "glob": "^11.1.0", - "html-webpack-plugin": "5.6.6", "husky": ">=6", "ini": "^5.0.0", "jest": "^30.0.0", "jest-environment-jsdom": "^30.0.0", "jest-transform-css": "^6.0.1", "lint-staged": ">=10", - "mini-css-extract-plugin": "^2.7.6", "msw": "^2.7.3", "prettier": "^3.0.0", "sass": "^1.66.0", - "sass-loader": "16.0.7", - "style-loader": "4.0.0", - "terser-webpack-plugin": "^5.3.11", - "thread-loader": "^4.0.4", "undici": "^5.28.2", + "vite": "^8.0.9", "web-streams-polyfill": "^4.1.0", - "webpack": "5.104.1", - "webpack-bundle-analyzer": "^4.10.2", - "webpack-cli": "6.0.1", - "webpack-concat-files-plugin": "^0.5.2", "whatwg-fetch": "^3.6.20" }, "resolutions": { diff --git a/public/vite-entries/activityLog.js b/public/vite-entries/activityLog.js new file mode 100644 index 0000000000..55bd937637 --- /dev/null +++ b/public/vite-entries/activityLog.js @@ -0,0 +1,2 @@ +import '../js/pages/ActivityLog.js' +import '../css/sass/components/pages/ActivityLogPage.scss' diff --git a/public/vite-entries/allPagesPlugins.js b/public/vite-entries/allPagesPlugins.js new file mode 100644 index 0000000000..651e370e8e --- /dev/null +++ b/public/vite-entries/allPagesPlugins.js @@ -0,0 +1 @@ +import.meta.glob('../../plugins/*/static/src/all/*.js', {eager: true}) diff --git a/public/vite-entries/analyze.js b/public/vite-entries/analyze.js new file mode 100644 index 0000000000..5911d9a0e5 --- /dev/null +++ b/public/vite-entries/analyze.js @@ -0,0 +1,2 @@ +import '../js/pages/AnalyzePage.js' +import '../css/sass/components/pages/AnalyzePage.scss' diff --git a/public/vite-entries/apiDoc.js b/public/vite-entries/apiDoc.js new file mode 100644 index 0000000000..cc68a15ac6 --- /dev/null +++ b/public/vite-entries/apiDoc.js @@ -0,0 +1,2 @@ +import '../css/sass/components/pages/CattoolPage.scss' +import '../css/sass/components/pages/ApiDocPage.scss' diff --git a/public/vite-entries/cattool.js b/public/vite-entries/cattool.js new file mode 100644 index 0000000000..a3dd75ea63 --- /dev/null +++ b/public/vite-entries/cattool.js @@ -0,0 +1,7 @@ +// Vite wrapper entry — mirrors webpack's "cattool" entry point +// globalFunctions provides segment plugin hooks (getContextBefore/After, registerFooterTabs) +// — only needed by cattool pages, moved here from mountPage.js to avoid pulling +// SegmentActions/SegmentStore into every page's dependency graph. +import '../js/globalFunctions' +import '../js/pages/CatTool.js' +import '../css/sass/components/pages/CattoolPage.scss' diff --git a/public/vite-entries/cattoolPlugins.js b/public/vite-entries/cattoolPlugins.js new file mode 100644 index 0000000000..7c422c8caf --- /dev/null +++ b/public/vite-entries/cattoolPlugins.js @@ -0,0 +1 @@ +import.meta.glob('../../plugins/*/static/src/cattool/*.js', {eager: true}) diff --git a/public/vite-entries/commonCss.js b/public/vite-entries/commonCss.js new file mode 100644 index 0000000000..4bc7e31908 --- /dev/null +++ b/public/vite-entries/commonCss.js @@ -0,0 +1 @@ +import '../css/sass/components/pages/CattoolPage.scss' diff --git a/public/vite-entries/dashboard.js b/public/vite-entries/dashboard.js new file mode 100644 index 0000000000..e9d27788d8 --- /dev/null +++ b/public/vite-entries/dashboard.js @@ -0,0 +1,3 @@ +// Vite wrapper entry — mirrors webpack's "dashboard" entry point +import '../js/pages/Dashboard.js' +import '../css/sass/components/pages/DashboardPage.scss' diff --git a/public/vite-entries/errorPage.js b/public/vite-entries/errorPage.js new file mode 100644 index 0000000000..2756ca953d --- /dev/null +++ b/public/vite-entries/errorPage.js @@ -0,0 +1 @@ +import '../css/sass/components/pages/NewProjectPage.scss' diff --git a/public/vite-entries/groups.json b/public/vite-entries/groups.json new file mode 100644 index 0000000000..0576b909e2 --- /dev/null +++ b/public/vite-entries/groups.json @@ -0,0 +1,31 @@ +{ + "index.html": ["cattool", "cattoolPlugins", "allPagesPlugins"], + "manage.html": ["dashboard", "allPagesPlugins"], + "signin.html": ["signin", "allPagesPlugins"], + "upload.html": ["upload", "uploadPlugins", "allPagesPlugins"], + "revise_summary.html": ["qa-report", "allPagesPlugins"], + "analyze.html": ["analyze", "allPagesPlugins"], + "jobAnalysis.html": ["analyze", "allPagesPlugins"], + "xliffToTarget.html": ["xliffToTarget", "allPagesPlugins"], + "activity_log.html": ["activityLog", "allPagesPlugins"], + "APIDoc.php": ["apiDoc"], + "activity_log_not_found.html": ["commonCss"], + "job_archived.html": ["commonCss"], + "job_cancelled.html": ["commonCss"], + "job_not_found.html": ["commonCss"], + "project_not_found.html": ["commonCss"], + "badConfiguration.html": ["commonCss"], + "configMissing.html": ["commonCss"], + "offline.html": ["commonCss"], + "400.html": ["errorPage"], + "401.html": ["errorPage"], + "403.html": ["errorPage"], + "404.html": ["errorPage"], + "409.html": ["errorPage"], + "410.html": ["errorPage"], + "500.html": ["errorPage"], + "503.html": ["errorPage"], + "oauth_response_handler.html": [], + "redirectFailurePage.html": [], + "redirectSuccessPage.html": [] +} diff --git a/public/vite-entries/qa-report.js b/public/vite-entries/qa-report.js new file mode 100644 index 0000000000..260946f07e --- /dev/null +++ b/public/vite-entries/qa-report.js @@ -0,0 +1,2 @@ +import '../js/pages/QualityReport.js' +import '../css/sass/components/pages/QualityReportPage.scss' diff --git a/public/vite-entries/signin.js b/public/vite-entries/signin.js new file mode 100644 index 0000000000..c289ddfb92 --- /dev/null +++ b/public/vite-entries/signin.js @@ -0,0 +1,4 @@ +// Vite wrapper entry — mirrors webpack's "signin" entry point +// Imports both JS page component and its paired SCSS +import '../js/pages/SignIn.js' +import '../css/sass/components/pages/SignInPage.scss' diff --git a/public/vite-entries/test-entry.js b/public/vite-entries/test-entry.js new file mode 100644 index 0000000000..09d4352e8b --- /dev/null +++ b/public/vite-entries/test-entry.js @@ -0,0 +1 @@ +// test diff --git a/public/vite-entries/upload.js b/public/vite-entries/upload.js new file mode 100644 index 0000000000..eb6584c948 --- /dev/null +++ b/public/vite-entries/upload.js @@ -0,0 +1,4 @@ +// Vite wrapper entry — mirrors webpack's "upload" entry point +// Imports both JS page component and its paired SCSS +import '../js/pages/NewProject.js' +import '../css/sass/components/pages/NewProjectPage.scss' diff --git a/public/vite-entries/uploadPlugins.js b/public/vite-entries/uploadPlugins.js new file mode 100644 index 0000000000..7865b8b094 --- /dev/null +++ b/public/vite-entries/uploadPlugins.js @@ -0,0 +1 @@ +import.meta.glob('../../plugins/*/static/src/upload/*.js', {eager: true}) diff --git a/public/vite-entries/xliffToTarget.js b/public/vite-entries/xliffToTarget.js new file mode 100644 index 0000000000..0756542355 --- /dev/null +++ b/public/vite-entries/xliffToTarget.js @@ -0,0 +1,2 @@ +import '../js/pages/XliffToTarget.js' +import '../css/sass/components/pages/NewProjectPage.scss' diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000000..0fb0581921 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,298 @@ +import {defineConfig, transformWithOxc} from 'vite' +import react from '@vitejs/plugin-react' +import {readFileSync, writeFileSync, existsSync} from 'node:fs' +import {resolve, join} from 'node:path' +import {createRequire} from 'node:module' +import {globSync} from 'glob' + +const require = createRequire(import.meta.url) +const ini = require('ini') + +const matecatConfig = ini.parse(readFileSync('./inc/config.ini', 'utf-8')) + +// Single source of truth: template name → Vite entry names +const entryGroups = JSON.parse(readFileSync('./public/vite-entries/groups.json', 'utf-8')) + +const allEntryNames = [...new Set(Object.values(entryGroups).flat())] +const input = Object.fromEntries( + allEntryNames.map((name) => [name, `public/vite-entries/${name}.js`]), +) + +// Load plugin-specific build configs (same pattern as webpack.config.js). +// Each plugin can provide a plugin.vite.config.js that assigns to pluginViteConfig. +const pluginConfigFiles = globSync('./plugins/*/plugin.vite.config.js', { + ignore: './plugins/**/node_modules/**', +}) +let pluginConfig = {} +for (const file of pluginConfigFiles) { + const data = readFileSync(file, 'utf-8') + const config = (0, eval)(data) + pluginConfig = {...pluginConfig, ...config} +} + +let sentryVitePlugin = null +if (pluginConfig.sentryVitePlugin) { + try { + sentryVitePlugin = require('@sentry/vite-plugin').sentryVitePlugin + } catch { + // @sentry/vite-plugin not installed — open-source repo without Sentry + } +} + +// Vite 8 OXC fix: .js files default to lang:'js' (no JSX parsing). +// Pre-transform with lang:'jsx' so builtin:vite-transform doesn't choke. +function jsxInJsPlugin() { + return { + name: 'transform-js-as-jsx', + enforce: 'pre', + async transform(code, id) { + if (/\.js$/.test(id) && !id.includes('node_modules')) { + return transformWithOxc(code, id, {lang: 'jsx'}) + } + }, + } +} + +/** + * Post-build plugin: reads source PHPTAL templates from lib/View/templates/, + * injects Vite asset tags (with TAL nonce attributes), and writes complete + * output templates to lib/View/ — the same location Webpack writes to. + * + * PHP serves the output templates directly. Zero manifest parsing at runtime. + * Tags use tal:attributes="nonce x_nonce_unique_id" so PHPTAL injects the + * per-request CSP nonce at render time. + */ +function htmlTemplatePlugin() { + const NONCE_ATTR = 'tal:attributes="nonce x_nonce_unique_id"' + const BASE = '/public/build/' + const TEMPLATES_DIR = resolve('lib/View/templates') + const OUTPUT_DIR = resolve('lib/View') + + function collectDeps(manifest, chunkKey, seen, preloads, styles) { + if (seen.has(chunkKey)) return + seen.add(chunkKey) + + const chunk = manifest[chunkKey] + if (!chunk) return + + for (const importKey of chunk.imports ?? []) { + collectDeps(manifest, importKey, seen, preloads, styles) + } + + if (!chunk.isEntry && chunk.file) { + preloads.push(chunk.file) + } + + for (const css of chunk.css ?? []) { + styles.push(css) + } + } + + return { + name: 'html-templates', + apply: 'build', + closeBundle() { + const outDir = resolve('public/build') + const manifestPath = join(outDir, '.vite', 'manifest.json') + + if (!existsSync(manifestPath)) { + console.warn('[html-templates] No manifest found, skipping.') + return + } + + const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8')) + + for (const [templateName, entries] of Object.entries(entryGroups)) { + const sourcePath = join(TEMPLATES_DIR, `_${templateName}`) + if (!existsSync(sourcePath)) { + console.warn( + `[html-templates] Source template "_${templateName}" not found, skipping.`, + ) + continue + } + + let html = readFileSync(sourcePath, 'utf-8') + const outputPath = join(OUTPUT_DIR, templateName) + + // Empty entries — just copy template without injection + if (entries.length === 0) { + writeFileSync(outputPath, html) + console.log(`[html-templates] _${templateName} → ${templateName} (copy)`) + continue + } + + const scripts = [] + const styles = [] + const preloads = [] + const seen = new Set() + + for (const entryName of entries) { + const key = `public/vite-entries/${entryName}.js` + const entry = manifest[key] + if (!entry) { + console.warn(`[html-templates] Entry "${key}" not in manifest.`) + continue + } + + for (const importKey of entry.imports ?? []) { + collectDeps(manifest, importKey, seen, preloads, styles) + } + + if (entry.file) { + scripts.push(entry.file) + } + + for (const css of entry.css ?? []) { + styles.push(css) + } + } + + // .php templates use their own nonce mechanism — inject plain tags + const isPhp = templateName.endsWith('.php') + const nonce = isPhp ? '' : ` ${NONCE_ATTR}` + + const tags = [] + + for (const file of [...new Set(preloads)]) { + tags.push( + ` `, + ) + } + + for (const file of [...new Set(styles)]) { + tags.push( + ` `, + ) + } + + for (const file of scripts) { + tags.push( + ` `, + ) + } + + const injection = + ` \n${tags.join('\n')}\n` + html = html.replace('', injection + '') + + writeFileSync(outputPath, html) + console.log( + `[html-templates] _${templateName} → ${templateName} (${tags.length} tags)`, + ) + } + }, + } +} + +export default defineConfig(({mode, command}) => { + const isProd = mode === 'production' + const hasSentry = isProd && sentryVitePlugin && pluginConfig.sentryVitePlugin + + if (hasSentry && matecatConfig.BUILD_NUMBER) { + pluginConfig.sentryVitePlugin.release = { + name: matecatConfig.BUILD_NUMBER, + } + console.log('[sentry] release', pluginConfig.sentryVitePlugin.release) + } + + return { + plugins: [ + jsxInJsPlugin(), + react({ + include: /\.(js|jsx)$/, + }), + htmlTemplatePlugin(), + hasSentry && sentryVitePlugin(pluginConfig.sentryVitePlugin), + ], + + define: { + 'process.env._ENV': JSON.stringify(matecatConfig.ENV ?? 'development'), + 'process.env.version': JSON.stringify(matecatConfig.BUILD_NUMBER ?? ''), + 'process.env.MODE': JSON.stringify(mode), + global: 'globalThis', + }, + + resolve: { + extensions: ['.js', '.jsx', '.json'], + }, + + base: command === 'serve' ? '/' : '/public/build/', + publicDir: false, + + build: { + manifest: true, + outDir: 'public/build', + emptyOutDir: true, + sourcemap: hasSentry ? 'hidden' : mode !== 'production', + + rolldownOptions: { + input, + output: { + entryFileNames: '[name].[hash].js', + chunkFileNames: '[name].[hash].js', + assetFileNames: 'assets/[name].[hash].[ext]', + codeSplitting: { + groups: [ + { + name: 'react-vendor', + test: /node_modules[\\/](react|react-dom|scheduler)/, + priority: 20, + }, + { + name: 'editor-vendor', + test: /node_modules[\\/](draft-js|immutable)/, + priority: 15, + }, + { + name: 'vendor', + test: /node_modules/, + priority: 10, + }, + ], + }, + }, + }, + }, + + optimizeDeps: { + rolldownOptions: { + moduleTypes: {'.js': 'jsx'}, + }, + }, + + css: { + devSourcemap: true, + lightningcss: { + errorRecovery: true, + }, + preprocessorOptions: { + scss: { + quietDeps: true, + }, + }, + }, + + server: { + host: '0.0.0.0', + port: 5173, + strictPort: true, + origin: 'https://dev.matecat.com', + cors: true, + hmr: { + protocol: 'wss', + host: 'dev.matecat.com', + clientPort: 443, + path: '__vite_hmr', + }, + watch: { + usePolling: true, + interval: 500, + ignored: [ + '**/storage/**', + '**/node_modules/**', + '**/vendor/**', + '**/public/build/**', + ], + }, + }, +}}) diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 384102770a..0000000000 --- a/webpack.config.js +++ /dev/null @@ -1,575 +0,0 @@ -const path = require('path') -const webpack = require('webpack') -const {globSync} = require('glob') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const HtmlWebPackPlugin = require('html-webpack-plugin') -const {sentryWebpackPlugin} = require('@sentry/webpack-plugin') -const TerserPlugin = require('terser-webpack-plugin') -const fs = require('fs') -const ini = require('ini') -// const BundleAnalyzerPlugin = -// require('webpack-bundle-analyzer').BundleAnalyzerPlugin - -function getDirectories(path) { - return fs.readdirSync(path).filter(function (file) { - return fs.statSync(path + '/' + file).isDirectory() - }) -} - -const matecatConfig = async ({env}, {mode}) => { - const isDev = mode === 'development' - const config = ini.parse(fs.readFileSync('./inc/config.ini', 'utf-8')) - let pluginsCattoolFiles = [] - let pluginsUploadFiles = [] - let pluginsAllPagesFiles = [] - const pluginDirectories = getDirectories('./plugins/') - pluginDirectories.forEach((dir) => { - const cattoolDirectory = './plugins/' + dir + '/static/src/cattool/' - pluginsCattoolFiles = pluginsCattoolFiles.concat( - globSync('./' + cattoolDirectory + '*.js').map((item) => { - return path.resolve(__dirname, item) - }), - ) - - const uploadDirectory = './plugins/' + dir + '/static/src/upload/' - pluginsUploadFiles = pluginsUploadFiles.concat( - globSync('./' + uploadDirectory + '*.js').map((item) => { - return path.resolve(__dirname, item) - }), - ) - - const allDirectory = './plugins/' + dir + '/static/src/all/' - pluginsAllPagesFiles = pluginsAllPagesFiles.concat( - globSync('./' + allDirectory + '*.js').map((item) => { - return path.resolve(__dirname, item) - }), - ) - }) - let entryPoints = {} - if (pluginsCattoolFiles.length > 0) { - entryPoints.cattoolPlugins = pluginsCattoolFiles - } - if (pluginsUploadFiles.length > 0) { - entryPoints.uploadPlugins = pluginsUploadFiles - } - if (pluginsAllPagesFiles.length > 0) { - entryPoints.allPagesPlugins = pluginsAllPagesFiles - } - //look for webpack config files - const files = globSync('./plugins/*/plugin.webpack.config.js', { - ignore: './plugins/**/node_modules/**', - }) - console.log('Plugins file', files) - - let pluginConfig = {} - files.forEach((file) => { - const data = fs.readFileSync(file) - const config = eval(data.toString('utf8')) - pluginConfig = {...pluginConfig, ...config} - }) - if (pluginConfig.sentryWebpackPlugin) { - pluginConfig.sentryWebpackPlugin.release = { - name: JSON.stringify(config.BUILD_NUMBER), - } - console.log('Sentry release', pluginConfig.sentryWebpackPlugin.release) - } - return { - target: 'web', - watchOptions: { - aggregateTimeout: 500, - ignored: ['/node_modules/'], - poll: 500, - }, - output: { - filename: isDev ? '[name].[fullhash].js' : '[name].[contenthash].js', - sourceMapFilename: isDev ? '[name].[fullhash].js.map' : '[file].map', - path: path.resolve(__dirname, 'public/build'), - chunkFilename: isDev - ? '[name].[fullhash].chunk.js' - : '[name].[contenthash].chunk.js', - publicPath: '/public/build/', - clean: true, - }, - optimization: { - moduleIds: 'deterministic', - runtimeChunk: 'single', - splitChunks: { - chunks: 'all', - minSize: 20 * 1024, // Minimum size in bytes for a chunk to be generated - maxSize: 200 * 1024, // Maximum size in bytes for a chunk before it is split - maxInitialRequests: Infinity, - automaticNameDelimiter: '-', - cacheGroups: { - vendors: { - test: /[\\/]node_modules[\\/]/, - name: 'vendors', - chunks: 'all', - }, - lodash: { - test: /[\\/]node_modules[\\/](lodash)[\\/]/, - name: 'lodash', - chunks: 'all', - priority: 10, - }, - immutable: { - test: /[\\/]node_modules[\\/](immutable)[\\/]/, - name: 'immutable', - chunks: 'all', - priority: 10, - }, - }, - }, - minimize: !isDev, - minimizer: [ - new TerserPlugin({ - parallel: true, - terserOptions: { - compress: { - drop_console: !isDev, - }, - output: { - comments: false, - }, - }, - }), - ], - }, - cache: { - type: 'filesystem', - cacheDirectory: path.resolve(__dirname, 'node_modules/.cache/webpack'), - }, - module: { - rules: [ - { - test: /\.(js|jsx)$/, - include: [ - path.resolve(__dirname, 'public/js'), - path.resolve(__dirname, 'public/img/icons'), - path.resolve(__dirname, 'plugins'), - ], - exclude: '/node_modules/', - use: [ - { - loader: 'thread-loader', - options: { - workers: 2, - }, - }, - { - loader: 'babel-loader', - options: { - presets: ['@babel/preset-env'], - cacheDirectory: true, - }, - }, - ], - }, - { - test: /\.css$/i, - include: [ - path.resolve(__dirname, 'public/css'), - path.resolve(__dirname, 'node_modules'), - ], - use: [ - { - loader: MiniCssExtractPlugin.loader, - options: { - publicPath: '/public/build/', - }, - }, - 'css-loader', - ], - }, - { - test: /\.s[ac]ss$/i, - include: [ - path.resolve(__dirname, 'public/css/sass/'), - path.resolve(__dirname, 'plugins'), - ], - use: [ - { - loader: MiniCssExtractPlugin.loader, - options: { - publicPath: '/public/build/', - }, - }, - 'css-loader', - 'sass-loader', - ], - }, - { - test: /\.(png|jpe?g|gif|mp4|svg|ico)$/i, - include: [path.resolve(__dirname, 'public/img')], - type: 'asset/resource', - generator: { - filename: 'images/[name][ext]', - }, - }, - { - test: /\.(woff(2)?|ttf|eot|otf)(\?v=\d+\.\d+\.\d+)?$/, - include: [path.resolve(__dirname, 'public/css/fonts')], - type: 'asset/resource', - generator: { - filename: 'fonts/[name][ext]', - }, - }, - ], - }, - entry: { - 'qa-report': [ - path.resolve(__dirname, 'public/js/pages/QualityReport.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/QualityReportPage.scss', - ), - ], - upload: [ - path.resolve(__dirname, 'public/js/pages/NewProject.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/NewProjectPage.scss', - ), - ], - ...entryPoints, - cattool: [ - path.resolve(__dirname, 'public/js/pages/CatTool.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/CattoolPage.scss', - ), - ], - dashboard: [ - path.resolve(__dirname, 'public/js/pages/Dashboard.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/DashboardPage.scss', - ), - ], - analyze: [ - path.resolve(__dirname, 'public/js/pages/AnalyzePage.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/AnalyzePage.scss', - ), - ], - signin: [ - path.resolve(__dirname, 'public/js/pages/SignIn.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/SignInPage.scss', - ), - ], - xliffToTarget: [ - path.resolve(__dirname, 'public/js/pages/XliffToTarget.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/NewProjectPage.scss', - ), - ], - activityLog: [ - path.resolve(__dirname, 'public/js/pages/ActivityLog.js'), - path.resolve( - __dirname, - 'public/css/sass/components/pages/ActivityLogPage.scss', - ), - ], - commonCss: [ - path.resolve( - __dirname, - 'public/css/sass/components/pages/CattoolPage.scss', - ), - ], - apiDoc: [ - path.resolve( - __dirname, - 'public/css/sass/components/pages/CattoolPage.scss', - ), - path.resolve( - __dirname, - 'public/css/sass/components/pages/ApiDocPage.scss', - ), - ], - errorPage: [ - path.resolve( - __dirname, - 'public/css/sass/components/pages/NewProjectPage.scss', - ), - ], - }, - plugins: [ - // new BundleAnalyzerPlugin({analyzerMode: 'static'}), - new webpack.DefinePlugin({ - 'process.env._ENV': JSON.stringify(config.ENV), - 'process.env.version': JSON.stringify(config.BUILD_NUMBER), - 'process.env.MODE': JSON.stringify(mode), - }), - new MiniCssExtractPlugin({ - filename: '[name].[contenthash].css', - chunkFilename: '[id].[contenthash].css', - ignoreOrder: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/revise_summary.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_revise_summary.html', - ), - chunks: ['qa-report', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/upload.html'), - template: path.resolve(__dirname, './lib/View/templates/_upload.html'), - chunks: ['upload', 'uploadPlugins', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/index.html'), - template: path.resolve(__dirname, './lib/View/templates/_index.html'), - chunks: ['cattool', 'cattoolPlugins', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/manage.html'), - template: path.resolve(__dirname, './lib/View/templates/_manage.html'), - chunks: ['dashboard', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/analyze.html'), - template: path.resolve(__dirname, './lib/View/templates/_analyze.html'), - chunks: ['analyze', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/signin.html'), - template: path.resolve(__dirname, './lib/View/templates/_signin.html'), - chunks: ['signin', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/jobAnalysis.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_jobAnalysis.html', - ), - chunks: ['analyze', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/xliffToTarget.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_xliffToTarget.html', - ), - chunks: ['xliffToTarget', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/APIDoc.php'), - template: path.resolve(__dirname, './lib/View/templates/_APIDoc.php'), - chunks: ['apiDoc'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/activity_log.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_activity_log.html', - ), - chunks: ['activityLog', 'allPagesPlugins'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve( - __dirname, - './lib/View/activity_log_not_found.html', - ), - template: path.resolve( - __dirname, - './lib/View/templates/_activity_log_not_found.html', - ), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve( - __dirname, - './lib/View/oauth_response_handler.html', - ), - template: path.resolve( - __dirname, - './lib/View/templates/_oauth_response_handler.html', - ), - chunks: [], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve( - __dirname, - './lib/View/redirectFailurePage.html', - ), - template: path.resolve( - __dirname, - './lib/View/templates/_redirectFailurePage.html', - ), - chunks: [], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve( - __dirname, - './lib/View/redirectSuccessPage.html', - ), - template: path.resolve( - __dirname, - './lib/View/templates/_redirectSuccessPage.html', - ), - chunks: [], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/job_archived.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_job_archived.html', - ), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/job_cancelled.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_job_cancelled.html', - ), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/job_not_found.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_job_not_found.html', - ), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/project_not_found.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_project_not_found.html', - ), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/badConfiguration.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_badConfiguration.html', - ), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/configMissing.html'), - template: path.resolve( - __dirname, - './lib/View/templates/_configMissing.html', - ), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/offline.html'), - template: path.resolve(__dirname, './lib/View/templates/_offline.html'), - chunks: ['commonCss'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/400.html'), - template: path.resolve(__dirname, './lib/View/templates/_400.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/401.html'), - template: path.resolve(__dirname, './lib/View/templates/_401.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/403.html'), - template: path.resolve(__dirname, './lib/View/templates/_403.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/404.html'), - template: path.resolve(__dirname, './lib/View/templates/_404.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/409.html'), - template: path.resolve(__dirname, './lib/View/templates/_409.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/410.html'), - template: path.resolve(__dirname, './lib/View/templates/_410.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/500.html'), - template: path.resolve(__dirname, './lib/View/templates/_500.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - new HtmlWebPackPlugin({ - filename: path.resolve(__dirname, './lib/View/503.html'), - template: path.resolve(__dirname, './lib/View/templates/_503.html'), - chunks: ['errorPage'], - publicPath: '/public/build/', - xhtml: true, - }), - !isDev && - pluginConfig.sentryWebpackPlugin && - sentryWebpackPlugin(pluginConfig.sentryWebpackPlugin), - ], - devtool: isDev ? 'inline-source-map' : 'source-map', - } -} -module.exports = matecatConfig diff --git a/yarn.lock b/yarn.lock index 753218386d..93733d28b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -133,17 +133,6 @@ regexpu-core "^6.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1" - integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA== - dependencies: - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - debug "^4.4.3" - lodash.debounce "^4.0.8" - resolve "^1.22.11" - "@babel/helper-define-polyfill-provider@^0.6.6": version "0.6.6" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz#714dfe33d8bd710f556df59953720f6eeb6c1a14" @@ -829,18 +818,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-runtime@^7.28.5": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz#a5fded13cc656700804bfd6e5ebd7fffd5266803" - integrity sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w== - dependencies: - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - semver "^6.3.1" - "@babel/plugin-transform-shorthand-properties@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" @@ -1101,15 +1078,13 @@ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== -"@discoveryjs/json-ext@0.5.7": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@discoveryjs/json-ext@^0.6.1": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz#f13c7c205915eb91ae54c557f5e92bddd8be0e83" - integrity sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== +"@emnapi/core@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.9.2.tgz#3870265ecffc7352d01ead62d8d83d8358a2d034" + integrity sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA== + dependencies: + "@emnapi/wasi-threads" "1.2.1" + tslib "^2.4.0" "@emnapi/core@^1.4.3": version "1.5.0" @@ -1119,6 +1094,13 @@ "@emnapi/wasi-threads" "1.1.0" tslib "^2.4.0" +"@emnapi/runtime@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.9.2.tgz#8b469a3db160817cadb1de9050211a9d1ea84fa2" + integrity sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw== + dependencies: + tslib "^2.4.0" + "@emnapi/runtime@^1.4.3": version "1.5.0" resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.5.0.tgz#9aebfcb9b17195dce3ab53c86787a6b7d058db73" @@ -1133,6 +1115,13 @@ dependencies: tslib "^2.4.0" +"@emnapi/wasi-threads@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" + integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== + dependencies: + tslib "^2.4.0" + "@eslint-community/eslint-utils@^4.2.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" @@ -1588,24 +1577,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/source-map@^0.3.3": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" - integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - -"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": version "1.5.5" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== -"@jridgewell/sourcemap-codec@^1.4.15": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.2.tgz#4f25c8f17f28ccf70ed16e03f8fbf6d3998cb8fd" - integrity sha512-gKYheCylLIedI+CSZoDtGkFV9YEBxRRVcfCH7OfAqh4TyUyRjEE6WVE/aXDXX0p8BIe/QgLcaAoI0220KRRFgg== - "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" @@ -1635,6 +1611,13 @@ "@emnapi/runtime" "^1.4.3" "@tybys/wasm-util" "^0.10.0" +"@napi-rs/wasm-runtime@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz#a46bbfedc29751b7170c5d23bc1d8ee8c7e3c1e1" + integrity sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow== + dependencies: + "@tybys/wasm-util" "^0.10.1" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -1650,12 +1633,12 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1786,6 +1769,11 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz#10b2944ca559386590683392022a897eefd011d3" integrity sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw== +"@oxc-project/types@=0.126.0": + version "0.126.0" + resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.126.0.tgz#9d9fa6fe9af5bc6c45996c6d9b9a3b3a4cd500e5" + integrity sha512-oGfVtjAgwQVVpfBrbtk4e1XDyWHRFta6BS3GWVzrF8xYBT2VGQAk39yJS/wFSMrZqoiCU4oghT3Ch0HaHGIHcQ== + "@parcel/watcher-android-arm64@2.5.1": version "2.5.1" resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" @@ -1885,11 +1873,6 @@ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.9.tgz#d229a7b7f9dac167a156992ef23c7f023653f53b" integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== -"@polka/url@^1.0.0-next.24": - version "1.0.0-next.29" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1" - integrity sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww== - "@popperjs/core@^2.6.0": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" @@ -2214,6 +2197,95 @@ resolved "https://registry.yarnpkg.com/@reach/observe-rect/-/observe-rect-1.2.0.tgz#d7a6013b8aafcc64c778a0ccb83355a11204d3b2" integrity sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ== +"@rolldown/binding-android-arm64@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.16.tgz#9af7872d363738e7a2aaa1c1be8cad57adf75798" + integrity sha512-rhY3k7Bsae9qQfOtph2Pm2jZEA+s8Gmjoz4hhmx70K9iMQ/ddeae+xhRQcM5IuVx5ry1+bGfkvMn7D6MJggVSA== + +"@rolldown/binding-darwin-arm64@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.16.tgz#88f394f20c664ac2c51fe5d5d364b94bbf8ef430" + integrity sha512-rNz0yK078yrNn3DrdgN+PKiMOW8HfQ92jQiXxwX8yW899ayV00MLVdaCNeVBhG/TbH3ouYVObo8/yrkiectkcQ== + +"@rolldown/binding-darwin-x64@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.16.tgz#d5350b1d3d13fddb1bc5abb00cadc07787a5d6fa" + integrity sha512-r/OmdR00HmD4i79Z//xO06uEPOq5hRXdhw7nzkxQxwSavs3PSHa1ijntdpOiZ2mzOQ3fVVu8C1M19FoNM+dMUQ== + +"@rolldown/binding-freebsd-x64@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.16.tgz#116fe2b906ef658e913bd1419775114dee97c35f" + integrity sha512-KcRE5w8h0OnjUatG8pldyD14/CQ5Phs1oxfR+3pKDjboHRo9+MkqQaiIZlZRpsxC15paeXme/I127tUa9TXJ6g== + +"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.16.tgz#3a72b393936c580b40aa66230cdc30ac20fb0409" + integrity sha512-bT0guA1bpxEJ/ZhTRniQf7rNF8ybvXOuWbNIeLABaV5NGjx4EtOWBTSRGWFU9ZWVkPOZ+HNFP8RMcBokBiZ0Kg== + +"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.16.tgz#3ec9b2dce7b5c29d37272fa3a1aee6159badfb76" + integrity sha512-+tHktCHWV8BDQSjemUqm/Jl/TPk3QObCTIjmdDy/nlupcujZghmKK2962LYrqFpWu+ai01AN/REOH3NEpqvYQg== + +"@rolldown/binding-linux-arm64-musl@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.16.tgz#4103d75b7e7f2650d32fef0df01ff5441657b6ee" + integrity sha512-3fPzdREH806oRLxpTWW1Gt4tQHs0TitZFOECB2xzCFLPKnSOy90gwA7P29cksYilFO6XVRY1kzga0cL2nRjKPg== + +"@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.16.tgz#4bff51a9d0c4c5ec402ac10f41cef22d6a21889c" + integrity sha512-EKwI1tSrLs7YVw+JPJT/G2dJQ1jl9qlTTTEG0V2Ok/RdOenRfBw2PQdLPyjhIu58ocdBfP7vIRN/pvMsPxs/AQ== + +"@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.16.tgz#7b9399eda0b2e49c7e5d2b98172196565de3709f" + integrity sha512-Uknladnb3Sxqu6SEcqBldQyJUpk8NleooZEc0MbRBJ4inEhRYWZX0NJu12vNf2mqAq7gsofAxHrGghiUYjhaLQ== + +"@rolldown/binding-linux-x64-gnu@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.16.tgz#82b64f4c9aa018718c27a11fc5f8e9141f1c3276" + integrity sha512-FIb8+uG49sZBtLTn+zt1AJ20TqVcqWeSIyoVt0or7uAWesgKaHbiBh6OpA/k9v0LTt+PTrb1Lao133kP4uVxkg== + +"@rolldown/binding-linux-x64-musl@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.16.tgz#710c4bf32715d5564fd7bb39bfbe9195f0e8b9a6" + integrity sha512-RuERhF9/EgWxZEXYWCOaViUWHIboceK4/ivdtQ3R0T44NjLkIIlGIAVAuCddFxsZ7vnRHtNQUrt2vR2n2slB2w== + +"@rolldown/binding-openharmony-arm64@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.16.tgz#ab5cc4736ff363c4fad67c017edf4634c036e82a" + integrity sha512-mXcXnvd9GpazCxeUCCnZ2+YF7nut+ZOEbE4GtaiPtyY6AkhZWbK70y1KK3j+RDhjVq5+U8FySkKRb/+w0EeUwA== + +"@rolldown/binding-wasm32-wasi@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.16.tgz#906dec98ca584cec655a336fca870ac7095fbe93" + integrity sha512-3Q2KQxnC8IJOLqXmUMoYwyIPZU9hzRbnHaoV3Euz+VVnjZKcY8ktnNP8T9R4/GGQtb27C/UYKABxesKWb8lsvQ== + dependencies: + "@emnapi/core" "1.9.2" + "@emnapi/runtime" "1.9.2" + "@napi-rs/wasm-runtime" "^1.1.4" + +"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.16.tgz#19dd3cf898727fad4f9209cf2aae829a789a9348" + integrity sha512-tj7XRemQcOcFwv7qhpUxMTBbI5mWMlE4c1Omhg5+h8GuLXzyj8HviYgR+bB2DMDgRqUE+jiDleqSCRjx4aYk/Q== + +"@rolldown/binding-win32-x64-msvc@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.16.tgz#94f8930ac50d62c5d9a1a14855125aa945a14234" + integrity sha512-PH5DRZT+F4f2PTXRXR8uJxnBq2po/xFtddyabTJVJs/ZYVHqXPEgNIr35IHTEa6bpa0Q8Awg+ymkTaGnKITw4g== + +"@rolldown/pluginutils@1.0.0-rc.16": + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.16.tgz#bc27c8f906309b57c6c10eddb21043fd8e86b87e" + integrity sha512-45+YtqxLYKDWQouLKCrpIZhke+nXxhsw+qAHVzHDVwttyBlHNBVs2K25rDXrZzhpTp9w1FlAlvweV1H++fdZoA== + +"@rolldown/pluginutils@1.0.0-rc.7": + version "1.0.0-rc.7" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz#0414869467f0e471a6515d4f506c85fde867e022" + integrity sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA== + "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" @@ -2255,10 +2327,10 @@ "@sentry/types" "7.120.4" "@sentry/utils" "7.120.4" -"@sentry/babel-plugin-component-annotate@4.9.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.9.1.tgz#76b306cb89ac465946e9328228a20c5e7b83b534" - integrity sha512-0gEoi2Lb54MFYPOmdTfxlNKxI7kCOvNV7gP8lxMXJ7nCazF5OqOOZIVshfWjDLrc0QrSV6XdVvwPV9GDn4wBMg== +"@sentry/babel-plugin-component-annotate@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-5.2.0.tgz#6d6f3c47d7f795f5dfbb9b59abef6ab33e5e7f2d" + integrity sha512-8LbOI5Kzb5F0+7LVQPi2+zGz1iPiRRFhM+7uZ/ZQ33L9BmDOYNIy3xWxCfMw2JCuMXXaxF47XCjGmR22/B0WPg== "@sentry/browser@^7.40.0": version "7.120.4" @@ -2274,64 +2346,63 @@ "@sentry/types" "7.120.4" "@sentry/utils" "7.120.4" -"@sentry/bundler-plugin-core@4.9.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.9.1.tgz#6a12b555954e5f727df982825ae240d56b1e29f4" - integrity sha512-moii+w7N8k8WdvkX7qCDY9iRBlhgHlhTHTUQwF2FNMhBHuqlNpVcSJJqJMjFUQcjYMBDrZgxhfKV18bt5ixwlQ== +"@sentry/bundler-plugin-core@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-5.2.0.tgz#805ab7820b23d21ba5267e97db7300df35aede88" + integrity sha512-+C0x4gEIJRgoMwyRFGx+TFiJ1Po2BZlT1v61+PnouiaprKL5qtZG8n5PXx/5LPLDsVjSIcXjnDrTz9aSm8SJ3w== dependencies: "@babel/core" "^7.18.5" - "@sentry/babel-plugin-component-annotate" "4.9.1" - "@sentry/cli" "^2.57.0" + "@sentry/babel-plugin-component-annotate" "5.2.0" + "@sentry/cli" "^2.58.5" dotenv "^16.3.1" find-up "^5.0.0" - glob "^10.5.0" - magic-string "0.30.8" - unplugin "1.0.1" - -"@sentry/cli-darwin@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.58.2.tgz#61f6f836de8ac2e1992ccadc0368bc403f23c609" - integrity sha512-MArsb3zLhA2/cbd4rTm09SmTpnEuZCoZOpuZYkrpDw1qzBVJmRFA1W1hGAQ9puzBIk/ubY3EUhhzuU3zN2uD6w== - -"@sentry/cli-linux-arm64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.2.tgz#3a7a9c83e31b482599ce08d93d5ba6c8a1a44c7f" - integrity sha512-ay3OeObnbbPrt45cjeUyQjsx5ain1laj1tRszWj37NkKu55NZSp4QCg1gGBZ0gBGhckI9nInEsmKtix00alw2g== - -"@sentry/cli-linux-arm@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.2.tgz#f9bef6802cb707d1603a02e0727fed22d834e133" - integrity sha512-HU9lTCzcHqCz/7Mt5n+cv+nFuJdc1hGD2h35Uo92GgxX3/IujNvOUfF+nMX9j6BXH6hUt73R5c0Ycq9+a3Parg== - -"@sentry/cli-linux-i686@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.2.tgz#a3e6cb24d314f2d948b96457731f9345dc8370f9" - integrity sha512-CN9p0nfDFsAT1tTGBbzOUGkIllwS3hygOUyTK7LIm9z+UHw5uNgNVqdM/3Vg+02ymjkjISNB3/+mqEM5osGXdA== - -"@sentry/cli-linux-x64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.2.tgz#8e071e11b03524b08d369075f3203b05529ca233" - integrity sha512-oX/LLfvWaJO50oBVOn4ZvG2SDWPq0MN8SV9eg5tt2nviq+Ryltfr7Rtoo+HfV+eyOlx1/ZXhq9Wm7OT3cQuz+A== - -"@sentry/cli-win32-arm64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.2.tgz#af109a165c25245458a6c58b79a91c639b1df1b0" - integrity sha512-+cl3x2HPVMpoSVGVM1IDWlAEREZrrVQj4xBb0TRKII7g3hUxRsAIcsrr7+tSkie++0FuH4go/b5fGAv51OEF3w== - -"@sentry/cli-win32-i686@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.2.tgz#53038b43b2c14c419fb71586f7448e7580ed4e39" - integrity sha512-omFVr0FhzJ8oTJSg1Kf+gjLgzpYklY0XPfLxZ5iiMiYUKwF5uo1RJRdkUOiEAv0IqpUKnmKcmVCLaDxsWclB7Q== - -"@sentry/cli-win32-x64@2.58.2": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.2.tgz#b4c81a3c163344ae8b27523a0391e7f99c533f41" - integrity sha512-2NAFs9UxVbRztQbgJSP5i8TB9eJQ7xraciwj/93djrSMHSEbJ0vC47TME0iifgvhlHMs5vqETOKJtfbbpQAQFA== - -"@sentry/cli@^2.57.0": - version "2.58.2" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.58.2.tgz#0d6e19a1771d27aae8b2765a6f3e96062e2c7502" - integrity sha512-U4u62V4vaTWF+o40Mih8aOpQKqKUbZQt9A3LorIJwaE3tO3XFLRI70eWtW2se1Qmy0RZ74zB14nYcFNFl2t4Rw== + glob "^13.0.6" + magic-string "~0.30.8" + +"@sentry/cli-darwin@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.58.5.tgz#ea9c4ab41161f15c636d0d2dcf126202cb49a588" + integrity sha512-lYrNzenZFJftfwSya7gwrHGxtE+Kob/e1sr9lmHMFOd4utDlmq0XFDllmdZAMf21fxcPRI1GL28ejZ3bId01fQ== + +"@sentry/cli-linux-arm64@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.5.tgz#38e866ee11ca88f6fb2164a6afd6cff4156b33d4" + integrity sha512-/4gywFeBqRB6tR/iGMRAJ3HRqY6Z7Yp4l8ZCbl0TDLAfHNxu7schEw4tSnm2/Hh9eNMiOVy4z58uzAWlZXAYBQ== + +"@sentry/cli-linux-arm@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.5.tgz#12da36dd10166c09275b8a91366ad0906a8482fd" + integrity sha512-KtHweSIomYL4WVDrBrYSYJricKAAzxUgX86kc6OnlikbyOhoK6Fy8Vs6vwd52P6dvWPjgrMpUYjW2M5pYXQDUw== + +"@sentry/cli-linux-i686@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.5.tgz#9434360fb67fee3028886de2b143fbed93c627ac" + integrity sha512-G7261dkmyxqlMdyvyP06b+RTIVzp1gZNgglj5UksxSouSUqRd/46W/2pQeOMPhloDYo9yLtCN2YFb3Mw4aUsWw== + +"@sentry/cli-linux-x64@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.5.tgz#405d1740dd2774d7f139e217f628d11e7446fd04" + integrity sha512-rP04494RSmt86xChkQ+ecBNRYSPbyXc4u0IA7R7N1pSLCyO74e5w5Al+LnAq35cMfVbZgz5Sm0iGLjyiUu4I1g== + +"@sentry/cli-win32-arm64@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.5.tgz#0807783f9fa67b32703154533c31c09355149d3c" + integrity sha512-AOJ2nCXlQL1KBaCzv38m3i2VmSHNurUpm7xVKd6yAHX+ZoVBI8VT0EgvwmtJR2TY2N2hNCC7UrgRmdUsQ152bA== + +"@sentry/cli-win32-i686@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.5.tgz#79586eab70341ebde3bbcb0be6d436da3840ef64" + integrity sha512-EsuboLSOnlrN7MMPJ1eFvfMDm+BnzOaSWl8eYhNo8W/BIrmNgpRUdBwnWn9Q2UOjJj5ZopukmsiMYtU/D7ml9g== + +"@sentry/cli-win32-x64@2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.5.tgz#4937c0821abfd346da50a3cf1ecbd752f75f8ef4" + integrity sha512-IZf+XIMiQwj+5NzqbOQfywlOitmCV424Vtf9c+ep61AaVScUFD1TSrQbOcJJv5xGxhlxNOMNgMeZhdexdzrKZg== + +"@sentry/cli@^2.58.5": + version "2.58.5" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.58.5.tgz#160a89235ba2add4c198f666d8c14547a1459ae8" + integrity sha512-tavJ7yGUZV+z3Ct2/ZB6mg339i08sAk6HDkgqmSRuQEu2iLS5sl9HIvuXfM6xjv8fwlgFOSy++WNABNAcGHUbg== dependencies: https-proxy-agent "^5.0.0" node-fetch "^2.6.7" @@ -2339,14 +2410,14 @@ proxy-from-env "^1.1.0" which "^2.0.2" optionalDependencies: - "@sentry/cli-darwin" "2.58.2" - "@sentry/cli-linux-arm" "2.58.2" - "@sentry/cli-linux-arm64" "2.58.2" - "@sentry/cli-linux-i686" "2.58.2" - "@sentry/cli-linux-x64" "2.58.2" - "@sentry/cli-win32-arm64" "2.58.2" - "@sentry/cli-win32-i686" "2.58.2" - "@sentry/cli-win32-x64" "2.58.2" + "@sentry/cli-darwin" "2.58.5" + "@sentry/cli-linux-arm" "2.58.5" + "@sentry/cli-linux-arm64" "2.58.5" + "@sentry/cli-linux-i686" "2.58.5" + "@sentry/cli-linux-x64" "2.58.5" + "@sentry/cli-win32-arm64" "2.58.5" + "@sentry/cli-win32-i686" "2.58.5" + "@sentry/cli-win32-x64" "2.58.5" "@sentry/core@7.120.4": version "7.120.4" @@ -2376,6 +2447,14 @@ "@sentry/types" "7.120.4" "@sentry/utils" "7.120.4" +"@sentry/rollup-plugin@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@sentry/rollup-plugin/-/rollup-plugin-5.2.0.tgz#41601fa35fdcf9a43cff9807cdca012780d2fd5b" + integrity sha512-a8LfpvcYMFtFSroro5MpCcOoS528LeLfUHzxWURnpofOnY+Aso9Si4y4dFlna+RKqxCXjmFbn6CLnfI+YrHysQ== + dependencies: + "@sentry/bundler-plugin-core" "5.2.0" + magic-string "~0.30.8" + "@sentry/types@7.120.4": version "7.120.4" resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.120.4.tgz#8fab8dceeec4bda079fc6e8e380b982f766de354" @@ -2388,14 +2467,13 @@ dependencies: "@sentry/types" "7.120.4" -"@sentry/webpack-plugin@4.9.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-4.9.1.tgz#2ed6bb943416816f3d89583626a7612fd296973e" - integrity sha512-Ssx2lHiq8VWywUGd/hmW3U3VYBC0Up7D6UzUiDAWvy18PbTCVszaa54fKMFEQ1yIBg/ePRET53pIzfkcZgifmQ== +"@sentry/vite-plugin@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@sentry/vite-plugin/-/vite-plugin-5.2.0.tgz#eca4c5eebe00696ded98e055f185faf846886f19" + integrity sha512-4Jo3ixBspso5HY81PDvZdRXkH9wYGVmcw/0a2IX9ejbyKBdHqkYg4IhAtNqGUAyGuHwwRS9Y1S+sCMvrXv6htw== dependencies: - "@sentry/bundler-plugin-core" "4.9.1" - unplugin "1.0.1" - uuid "^9.0.0" + "@sentry/bundler-plugin-core" "5.2.0" + "@sentry/rollup-plugin" "5.2.0" "@sinclair/typebox@^0.34.0": version "0.34.41" @@ -2466,7 +2544,7 @@ dependencies: form-data "^4.0.4" -"@tybys/wasm-util@^0.10.0": +"@tybys/wasm-util@^0.10.0", "@tybys/wasm-util@^0.10.1": version "0.10.1" resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== @@ -2511,40 +2589,6 @@ dependencies: "@babel/types" "^7.28.2" -"@types/eslint-scope@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" @@ -2573,21 +2617,11 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/node@*": version "25.5.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-25.5.0.tgz#5c99f37c443d9ccc4985866913f1ed364217da31" @@ -2856,179 +2890,23 @@ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz#538b1e103bf8d9864e7b85cc96fa8d6fb6c40777" integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g== -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" - integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== - dependencies: - "@webassemblyjs/helper-numbers" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - -"@webassemblyjs/floating-point-hex-parser@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" - integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== - -"@webassemblyjs/helper-api-error@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" - integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== - -"@webassemblyjs/helper-buffer@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" - integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== - -"@webassemblyjs/helper-numbers@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" - integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.13.2" - "@webassemblyjs/helper-api-error" "1.13.2" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" - integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== - -"@webassemblyjs/helper-wasm-section@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" - integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/wasm-gen" "1.14.1" - -"@webassemblyjs/ieee754@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" - integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" - integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" - integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== - -"@webassemblyjs/wasm-edit@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" - integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/helper-wasm-section" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-opt" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - "@webassemblyjs/wast-printer" "1.14.1" - -"@webassemblyjs/wasm-gen@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" - integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wasm-opt@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" - integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-buffer" "1.14.1" - "@webassemblyjs/wasm-gen" "1.14.1" - "@webassemblyjs/wasm-parser" "1.14.1" - -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" - integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@webassemblyjs/helper-api-error" "1.13.2" - "@webassemblyjs/helper-wasm-bytecode" "1.13.2" - "@webassemblyjs/ieee754" "1.13.2" - "@webassemblyjs/leb128" "1.13.2" - "@webassemblyjs/utf8" "1.13.2" - -"@webassemblyjs/wast-printer@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" - integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== - dependencies: - "@webassemblyjs/ast" "1.14.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-3.0.1.tgz#76ac285b9658fa642ce238c276264589aa2b6b57" - integrity sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA== - -"@webpack-cli/info@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-3.0.1.tgz#3cff37fabb7d4ecaab6a8a4757d3826cf5888c63" - integrity sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ== - -"@webpack-cli/serve@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-3.0.1.tgz#bd8b1f824d57e30faa19eb78e4c0951056f72f00" - integrity sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -acorn-import-phases@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" - integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== +"@vitejs/plugin-react@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz#d9113b71a0a592714913eafd9e5e63bcafd0ff15" + integrity sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ== + dependencies: + "@rolldown/pluginutils" "1.0.0-rc.7" acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.0.0: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.8.1, acorn@^8.9.0: +acorn@^8.9.0: version "8.15.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== -acorn@^8.14.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" - integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== - agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -3041,26 +2919,7 @@ agent-base@^7.1.0, agent-base@^7.1.2: resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3070,16 +2929,6 @@ ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.9.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc" - integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -3121,7 +2970,7 @@ ansi-styles@^6.2.1, ansi-styles@^6.2.3: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== -anymatch@^3.1.3, anymatch@~3.1.2: +anymatch@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -3182,11 +3031,6 @@ array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9: is-string "^1.1.1" math-intrinsics "^1.1.0" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - array.prototype.findlast@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" @@ -3291,13 +3135,6 @@ babel-jest@30.2.0: graceful-fs "^4.2.11" slash "^3.0.0" -babel-loader@10.1.1: - version "10.1.1" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-10.1.1.tgz#ce9748e85b7071eb88006e3cfa9e6cf14eeb97c5" - integrity sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg== - dependencies: - find-up "^5.0.0" - babel-plugin-istanbul@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz#d8b518c8ea199364cf84ccc82de89740236daf92" @@ -3316,15 +3153,6 @@ babel-plugin-jest-hoist@30.2.0: dependencies: "@types/babel__core" "^7.20.5" -babel-plugin-polyfill-corejs2@^0.4.14: - version "0.4.17" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91" - integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w== - dependencies: - "@babel/compat-data" "^7.28.6" - "@babel/helper-define-polyfill-provider" "^0.6.8" - semver "^6.3.1" - babel-plugin-polyfill-corejs2@^0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz#808fa349686eea4741807cfaaa2aa3aa57ce120a" @@ -3334,14 +3162,6 @@ babel-plugin-polyfill-corejs2@^0.4.15: "@babel/helper-define-polyfill-provider" "^0.6.6" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" - integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" - core-js-compat "^3.43.0" - babel-plugin-polyfill-corejs3@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz#65b06cda48d6e447e1e926681f5a247c6ae2b9cf" @@ -3350,13 +3170,6 @@ babel-plugin-polyfill-corejs3@^0.14.0: "@babel/helper-define-polyfill-provider" "^0.6.6" core-js-compat "^3.48.0" -babel-plugin-polyfill-regenerator@^0.6.5: - version "0.6.8" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721" - integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.8" - babel-plugin-polyfill-regenerator@^0.6.6: version "0.6.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz#69f5dd263cab933c42fe5ea05e83443b374bd4bf" @@ -3408,16 +3221,6 @@ baseline-browser-mapping@^2.9.0, baseline-browser-mapping@^2.9.15: resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz#7697721c22f94f66195d0c34299b1a91e3299493" integrity sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g== -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - brace-expansion@^1.1.7: version "1.1.12" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" @@ -3440,7 +3243,7 @@ brace-expansion@^5.0.5: dependencies: balanced-match "^4.0.2" -braces@^3.0.3, braces@~3.0.2: +braces@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -3511,14 +3314,6 @@ callsites@^3.0.0, callsites@^3.1.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3547,21 +3342,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - chokidar@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" @@ -3569,11 +3349,6 @@ chokidar@^4.0.0: dependencies: readdirp "^4.0.1" -chrome-trace-event@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== - ci-info@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.0.tgz#c39b1013f8fdbd28cd78e62318357d02da160cd7" @@ -3589,13 +3364,6 @@ classnames@^2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== -clean-css@^5.2.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== - dependencies: - source-map "~0.6.0" - cli-cursor@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" @@ -3625,15 +3393,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - clsx@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" @@ -3666,7 +3425,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^2.0.14, colorette@^2.0.20: +colorette@^2.0.20: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -3678,31 +3437,16 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - commander@^14.0.3: version "14.0.3" resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.3.tgz#425d79b48f9af82fcd9e4fc1ea8af6c5ec07bbc2" integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== -commander@^2.20.0, commander@^2.20.3: +commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - commander@^9.0.0: version "9.5.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" @@ -3728,13 +3472,6 @@ cookie@^1.0.2: resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.1.1.tgz#3bb9bdfc82369db9c2f69c93c9c3ceb310c88b3c" integrity sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ== -core-js-compat@^3.43.0: - version "3.49.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6" - integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA== - dependencies: - browserslist "^4.28.1" - core-js-compat@^3.48.0: version "3.48.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.48.0.tgz#7efbe1fc1cbad44008190462217cc5558adaeaa6" @@ -3773,36 +3510,6 @@ crypto-js@^4.1.1: resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== -css-loader@7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.4.tgz#8f6bf9f8fc8cbef7d2ef6e80acc6545eaefa90b1" - integrity sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.40" - postcss-modules-extract-imports "^3.1.0" - postcss-modules-local-by-default "^4.0.5" - postcss-modules-scope "^3.2.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.6.3" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-what@^6.0.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" - integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== - css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" @@ -3871,11 +3578,6 @@ date-fns@^4.1.0: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-4.1.0.tgz#64b3d83fff5aa80438f5b1a633c2e83b8a1c2d14" integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.4.3, debug@~4.4.1: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" @@ -3955,6 +3657,11 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== +detect-libc@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + detect-newline@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3970,13 +3677,6 @@ diff-match-patch@^1.0.5: resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== -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" @@ -4001,13 +3701,6 @@ dom-accessibility-api@^0.6.3: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - dom-helpers@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -4016,27 +3709,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - dompurify@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.0.tgz#b1fc33ebdadb373241621e0a30e4ad81573dfd0b" @@ -4044,23 +3716,6 @@ dompurify@^3.3.2: optionalDependencies: "@types/trusted-types" "^2.0.7" -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - dotenv@^16.3.1: version "16.6.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" @@ -4084,11 +3739,6 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -4130,29 +3780,11 @@ engine.io-parser@~5.2.1: resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== -enhanced-resolve@^5.17.4: - version "5.19.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz#6687446a15e969eaa63c2fa2694510e17ae6d97c" - integrity sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.3.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - entities@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== -envinfo@^7.14.0: - version "7.14.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" - integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== - environment@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" @@ -4257,11 +3889,6 @@ es-iterator-helpers@^1.2.1: iterator.prototype "^1.1.4" safe-array-concat "^1.1.3" -es-module-lexer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1" - integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== - es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" @@ -4531,7 +4158,7 @@ eventemitter3@^5.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== -events@^3.2.0: +events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -4578,17 +4205,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.0.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -4599,16 +4215,6 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-uri@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" - integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== - -fastest-levenshtein@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - fastq@^1.6.0: version "1.20.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" @@ -4716,11 +4322,6 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - flatted@^3.2.9: version "3.4.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" @@ -4802,7 +4403,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.3, fsevents@~2.3.2: +fsevents@^2.3.3, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -4899,13 +4500,6 @@ get-symbol-description@^1.1.0: es-errors "^1.3.0" get-intrinsic "^1.2.6" -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -4913,11 +4507,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@^10.3.10: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" @@ -4930,18 +4519,6 @@ glob@^10.3.10: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^10.5.0: - version "10.5.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" - integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - glob@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-11.1.0.tgz#4f826576e4eb99c7dad383793d2f9f08f67e50a6" @@ -4954,6 +4531,15 @@ glob@^11.1.0: package-json-from-dist "^1.0.0" path-scurry "^2.0.0" +glob@^13.0.6: + version "13.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d" + integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw== + dependencies: + minimatch "^10.2.2" + minipass "^7.1.3" + path-scurry "^2.0.2" + glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -4981,26 +4567,12 @@ globalthis@^1.0.4: define-properties "^1.2.1" gopd "^1.0.1" -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -5015,13 +4587,6 @@ graphql@^16.12.0: resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.13.0.tgz#726857e897e87d54412d62356ec0b6b76bfab409" integrity sha512-uSisMYERbaB9bkA9M4/4dnqyktaEkf1kMHNKq/7DHyxVeWqHQ2mBmVqm5u6/FVHwF3iCNalKcg82Zfl+tffWoA== -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - has-bigints@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" @@ -5065,11 +4630,6 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - headers-polyfill@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-4.0.3.tgz#922a0155de30ecc1f785bcf04be77844ca95ad07" @@ -5082,45 +4642,11 @@ html-encoding-sniffer@^4.0.0: dependencies: whatwg-encoding "^3.1.1" -html-escaper@^2.0.0, html-escaper@^2.0.2: +html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-webpack-plugin@5.6.6: - version "5.6.6" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz#5321b9579f4a1949318550ced99c2a4a4e60cbaf" - integrity sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - http-proxy-agent@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" @@ -5167,12 +4693,12 @@ icss-replace-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== -icss-utils@^5.0.0, icss-utils@^5.1.0: +icss-utils@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ignore@^5.1.1, ignore@^5.2.0: +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== @@ -5205,7 +4731,7 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2, import-local@^3.2.0: +import-local@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== @@ -5250,11 +4776,6 @@ internal-slot@^1.1.0: hasown "^2.0.2" side-channel "^1.1.0" -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -5294,13 +4815,6 @@ is-bigint@^1.1.0: dependencies: has-bigints "^1.0.2" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-boolean-object@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" @@ -5377,7 +4891,7 @@ is-generator-function@^1.0.10: has-tostringtag "^1.0.2" safe-regex-test "^1.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -5427,13 +4941,6 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -5520,11 +5027,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" @@ -5963,15 +5465,6 @@ jest-worker@30.2.0: merge-stream "^2.0.0" supports-color "^8.1.1" -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest@^30.0.0: version "30.2.0" resolved "https://registry.yarnpkg.com/jest/-/jest-30.2.0.tgz#9f0a71e734af968f26952b5ae4b724af82681630" @@ -6053,12 +5546,7 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -6068,11 +5556,6 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -6126,11 +5609,6 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -6151,6 +5629,80 @@ lie@3.1.1: dependencies: immediate "~3.0.5" +lightningcss-android-arm64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz#f033885116dfefd9c6f54787523e3514b61e1968" + integrity sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg== + +lightningcss-darwin-arm64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz#50b71871b01c8199584b649e292547faea7af9b5" + integrity sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ== + +lightningcss-darwin-x64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz#35f3e97332d130b9ca181e11b568ded6aebc6d5e" + integrity sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w== + +lightningcss-freebsd-x64@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz#9777a76472b64ed6ff94342ad64c7bafd794a575" + integrity sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig== + +lightningcss-linux-arm-gnueabihf@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz#13ae652e1ab73b9135d7b7da172f666c410ad53d" + integrity sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw== + +lightningcss-linux-arm64-gnu@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz#417858795a94592f680123a1b1f9da8a0e1ef335" + integrity sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ== + +lightningcss-linux-arm64-musl@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz#6be36692e810b718040802fd809623cffe732133" + integrity sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg== + +lightningcss-linux-x64-gnu@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz#0b7803af4eb21cfd38dd39fe2abbb53c7dd091f6" + integrity sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA== + +lightningcss-linux-x64-musl@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz#88dc8ba865ddddb1ac5ef04b0f161804418c163b" + integrity sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg== + +lightningcss-win32-arm64-msvc@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz#4f30ba3fa5e925f5b79f945e8cc0d176c3b1ab38" + integrity sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw== + +lightningcss-win32-x64-msvc@1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz#141aa5605645064928902bb4af045fa7d9f4220a" + integrity sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q== + +lightningcss@^1.32.0: + version "1.32.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.32.0.tgz#b85aae96486dcb1bf49a7c8571221273f4f1e4a9" + integrity sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ== + dependencies: + detect-libc "^2.0.3" + optionalDependencies: + lightningcss-android-arm64 "1.32.0" + lightningcss-darwin-arm64 "1.32.0" + lightningcss-darwin-x64 "1.32.0" + lightningcss-freebsd-x64 "1.32.0" + lightningcss-linux-arm-gnueabihf "1.32.0" + lightningcss-linux-arm64-gnu "1.32.0" + lightningcss-linux-arm64-musl "1.32.0" + lightningcss-linux-x64-gnu "1.32.0" + lightningcss-linux-x64-musl "1.32.0" + lightningcss-win32-arm64-msvc "1.32.0" + lightningcss-win32-x64-msvc "1.32.0" + lilconfig@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -6185,11 +5737,6 @@ listr2@^9.0.5: rfdc "^1.4.1" wrap-ansi "^9.0.0" -loader-runner@^4.1.0, loader-runner@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" - integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== - loader-utils@^3.2.0: version "3.3.1" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" @@ -6236,7 +5783,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.21: version "4.18.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c" integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q== @@ -6269,13 +5816,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - lru-cache@^10.2.0, lru-cache@^10.4.3: version "10.4.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" @@ -6298,12 +5838,12 @@ lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -magic-string@0.30.8: - version "0.30.8" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" - integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== +magic-string@~0.30.8: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" + "@jridgewell/sourcemap-codec" "^1.5.5" make-dir@^4.0.0: version "4.0.0" @@ -6334,11 +5874,6 @@ 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.2.3, 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== - micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" @@ -6352,7 +5887,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27: +mime-types@^2.1.12: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -6374,14 +5909,6 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-css-extract-plugin@^2.7.6: - version "2.10.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.1.tgz#a7f0bb890f4e1ce6dfc124bd1e6d6fcd3b359844" - integrity sha512-k7G3Y5QOegl380tXmZ68foBRRjE9Ljavx835ObdvmZjQ639izvZD8CS7BkWw1qKPPzHsGL/JDhl0uyU1zc2rJw== - dependencies: - schema-utils "^4.0.0" - tapable "^2.2.1" - minimatch@^10.1.1: version "10.1.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" @@ -6420,16 +5947,16 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== +minipass@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b" + integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== + moment@^2.29.4: version "2.30.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== -mrmime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" - integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== - ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" @@ -6479,19 +6006,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - node-addon-api@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" @@ -6514,7 +6028,7 @@ node-releases@^2.0.27: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d" integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -6526,13 +6040,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - nwsapi@^2.2.16: version "2.2.22" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.22.tgz#109f9530cda6c156d6a713cdf5939e9f0de98b9d" @@ -6630,11 +6137,6 @@ onetime@^7.0.0: dependencies: mimic-function "^5.0.0" -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -6719,14 +6221,6 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -6751,14 +6245,6 @@ parse5@^7.0.0, parse5@^7.2.1: dependencies: entities "^6.0.0" -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -6795,22 +6281,25 @@ path-scurry@^2.0.0: lru-cache "^11.0.0" minipass "^7.1.2" +path-scurry@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85" + integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + path-to-regexp@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== -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== - -picocolors@1.1.1, picocolors@^1.0.0, picocolors@^1.1.1: +picocolors@1.1.1, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -6860,12 +6349,12 @@ postcss-load-config@4.0.1: lilconfig "^2.0.5" yaml "^2.1.1" -postcss-modules-extract-imports@^3.0.0, postcss-modules-extract-imports@^3.1.0: +postcss-modules-extract-imports@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== -postcss-modules-local-by-default@^4.0.0, postcss-modules-local-by-default@^4.0.5: +postcss-modules-local-by-default@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== @@ -6874,7 +6363,7 @@ postcss-modules-local-by-default@^4.0.0, postcss-modules-local-by-default@^4.0.5 postcss-selector-parser "^7.0.0" postcss-value-parser "^4.1.0" -postcss-modules-scope@^3.0.0, postcss-modules-scope@^3.2.0: +postcss-modules-scope@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== @@ -6910,15 +6399,15 @@ postcss-selector-parser@^7.0.0: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.40: - version "8.5.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" - integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== +postcss@^8.5.10: + version "8.5.10" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.10.tgz#8992d8c30acf3f12169e7c09514a12fed7e48356" + integrity sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ== dependencies: nanoid "^3.3.11" picocolors "^1.1.1" @@ -6958,14 +6447,6 @@ prettier@^3.0.0: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.1.tgz#edf48977cf991558f4fcbd8a3ba6015ba2a3a173" integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg== -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - pretty-format@30.2.0: version "30.2.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe" @@ -7207,20 +6688,6 @@ readdirp@^4.0.1: resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -7296,32 +6763,11 @@ regjsparser@^0.13.0: dependencies: jsesc "~3.1.0" -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - requireindex@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" @@ -7344,15 +6790,6 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.20.0, resolve@^1.22.4: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - resolve@^1.22.11: version "1.22.11" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" @@ -7362,6 +6799,15 @@ resolve@^1.22.11: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.5: version "2.0.0-next.5" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" @@ -7401,6 +6847,30 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rolldown@1.0.0-rc.16: + version "1.0.0-rc.16" + resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.0.0-rc.16.tgz#47c1e6b088be3f531a9aacbdb8a90e2255f02702" + integrity sha512-rzi5WqKzEZw3SooTt7cgm4eqIoujPIyGcJNGFL7iPEuajQw7vxMHUkXylu4/vhCkJGXsgRmxqMKXUpT6FEgl0g== + dependencies: + "@oxc-project/types" "=0.126.0" + "@rolldown/pluginutils" "1.0.0-rc.16" + optionalDependencies: + "@rolldown/binding-android-arm64" "1.0.0-rc.16" + "@rolldown/binding-darwin-arm64" "1.0.0-rc.16" + "@rolldown/binding-darwin-x64" "1.0.0-rc.16" + "@rolldown/binding-freebsd-x64" "1.0.0-rc.16" + "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.16" + "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.16" + "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.16" + "@rolldown/binding-linux-ppc64-gnu" "1.0.0-rc.16" + "@rolldown/binding-linux-s390x-gnu" "1.0.0-rc.16" + "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.16" + "@rolldown/binding-linux-x64-musl" "1.0.0-rc.16" + "@rolldown/binding-openharmony-arm64" "1.0.0-rc.16" + "@rolldown/binding-wasm32-wasi" "1.0.0-rc.16" + "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.16" + "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.16" + rrweb-cssom@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" @@ -7446,13 +6916,6 @@ safe-regex-test@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@16.0.7: - version "16.0.7" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.7.tgz#d1f8723b795805831d41b5825e3d9cd72cb939e7" - integrity sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA== - dependencies: - neo-async "^2.6.2" - sass@^1.66.0: version "1.94.2" resolved "https://registry.yarnpkg.com/sass/-/sass-1.94.2.tgz#198511fc6fdd2fc0a71b8d1261735c12608d4ef3" @@ -7478,25 +6941,6 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" - integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - scroll@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scroll/-/scroll-3.0.1.tgz#d5afb59fb3592ee3df31c89743e78b39e4cd8a26" @@ -7536,7 +6980,7 @@ semver@^7.5.3, semver@^7.5.4, semver@^7.7.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== -semver@^7.6.3, semver@^7.7.3: +semver@^7.7.3: version "7.7.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== @@ -7577,13 +7021,6 @@ setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -7658,15 +7095,6 @@ signal-exit@^4.0.1, signal-exit@^4.1.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -7706,11 +7134,6 @@ socket.io-parser@~4.2.4: "@socket.io/component-emitter" "~3.1.0" debug "~4.4.1" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" @@ -7724,15 +7147,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -7944,11 +7359,6 @@ style-inject@0.3.0: resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== -style-loader@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-4.0.0.tgz#0ea96e468f43c69600011e0589cb05c44f3b17a5" - integrity sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA== - substyle@^9.1.0: version "9.4.1" resolved "https://registry.yarnpkg.com/substyle/-/substyle-9.4.1.tgz#6a4647f363bc14fecc51aac371d4dbeda082aa50" @@ -7964,7 +7374,7 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0, supports-color@^8.1.1: +supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -7998,41 +7408,6 @@ tagged-tag@^1.0.0: resolved "https://registry.yarnpkg.com/tagged-tag/-/tagged-tag-1.0.0.tgz#a0b5917c2864cba54841495abfa3f6b13edcf4d6" integrity sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng== -tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" - integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== - -terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.16: - version "5.4.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz#95fc4cf4437e587be11ecf37d08636089174d76b" - integrity sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g== - dependencies: - "@jridgewell/trace-mapping" "^0.3.25" - jest-worker "^27.4.5" - schema-utils "^4.3.0" - terser "^5.31.1" - -terser@^5.10.0: - version "5.43.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" - integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.14.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -terser@^5.31.1: - version "5.46.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.46.1.tgz#40e4b1e35d5f13130f82793a8b3eeb7ec3a92eee" - integrity sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.15.0" - commander "^2.20.0" - source-map-support "~0.5.20" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -8047,22 +7422,12 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -thread-loader@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-4.0.4.tgz#954141f6ce6c472b513737252b4729ecad2e4902" - integrity sha512-tXagu6Hivd03wB2tiS1bqvw345sc7mKei32EgpYpq31ZLes9FN0mEK2nKzXLRFgwt3PsBB0E/MZDp159rDoqwg== - dependencies: - json-parse-better-errors "^1.0.2" - loader-runner "^4.1.0" - neo-async "^2.6.2" - schema-utils "^4.2.0" - tinyexec@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.4.tgz#6c60864fe1d01331b2f17c6890f535d7e5385408" integrity sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw== -tinyglobby@^0.2.15: +tinyglobby@^0.2.15, tinyglobby@^0.2.16: version "0.2.16" resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6" integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg== @@ -8106,11 +7471,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - tough-cookie@^5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.2.tgz#66d774b4a1d9e12dc75089725af3ac75ec31bed7" @@ -8168,7 +7528,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -8322,16 +7682,6 @@ unload@2.4.1: resolved "https://registry.yarnpkg.com/unload/-/unload-2.4.1.tgz#b0c5b7fb44e17fcbf50dcb8fb53929c59dd226a5" integrity sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw== -unplugin@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f" - integrity sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA== - dependencies: - acorn "^8.8.1" - chokidar "^3.5.3" - webpack-sources "^3.2.3" - webpack-virtual-modules "^0.5.0" - unrs-resolver@^1.7.11: version "1.11.1" resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9" @@ -8399,21 +7749,11 @@ util-deprecate@^1.0.2: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - uuid@^13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-13.0.0.tgz#263dc341b19b4d755eb8fe36b78d95a6b65707e8" integrity sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w== -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - v8-to-istanbul@^9.0.1: version "9.3.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" @@ -8423,6 +7763,19 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" +vite@^8.0.9: + version "8.0.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-8.0.9.tgz#69602329ebcea1f281124735a1113be51c45d1da" + integrity sha512-t7g7GVRpMXjNpa67HaVWI/8BWtdVIQPCL2WoozXXA7LBGEFK4AkkKkHx2hAQf5x1GZSlcmEDPkVLSGahxnEEZw== + dependencies: + lightningcss "^1.32.0" + picomatch "^4.0.4" + postcss "^8.5.10" + rolldown "1.0.0-rc.16" + tinyglobby "^0.2.16" + optionalDependencies: + fsevents "~2.3.3" + w3c-xmlserializer@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" @@ -8444,14 +7797,6 @@ warning@^4.0.2: dependencies: loose-envify "^1.0.0" -watchpack@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" - integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - web-streams-polyfill@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.2.0.tgz#93295e67af95889a1e044a6beff1366c82720650" @@ -8472,110 +7817,6 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-bundle-analyzer@^4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" - integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-cli@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-6.0.1.tgz#a1ce25da5ba077151afd73adfa12e208e5089207" - integrity sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw== - dependencies: - "@discoveryjs/json-ext" "^0.6.1" - "@webpack-cli/configtest" "^3.0.1" - "@webpack-cli/info" "^3.0.1" - "@webpack-cli/serve" "^3.0.1" - colorette "^2.0.14" - commander "^12.1.0" - cross-spawn "^7.0.3" - envinfo "^7.14.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" - webpack-merge "^6.0.1" - -webpack-concat-files-plugin@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/webpack-concat-files-plugin/-/webpack-concat-files-plugin-0.5.2.tgz#cb988b6566c4e19fa284a8ab27d5beb90320dc4c" - integrity sha512-bnsTzDTI5Ur1JaeLs6yeKlNdfRukJR9tgdZIIwy4c5Uyy0kJ0UhrOX42COG42vFZhwAZfo+tzU2/awhKoZw3Ug== - dependencies: - globby "^10.0.1" - schema-utils "^3.0.0" - webpack-sources "^1.4.3" - -webpack-merge@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" - integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.1" - -webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^3.2.3, webpack-sources@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" - integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== - -webpack-virtual-modules@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" - integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== - -webpack@5.104.1: - version "5.104.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.104.1.tgz#94bd41eb5dbf06e93be165ba8be41b8260d4fb1a" - integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== - dependencies: - "@types/eslint-scope" "^3.7.7" - "@types/estree" "^1.0.8" - "@types/json-schema" "^7.0.15" - "@webassemblyjs/ast" "^1.14.1" - "@webassemblyjs/wasm-edit" "^1.14.1" - "@webassemblyjs/wasm-parser" "^1.14.1" - acorn "^8.15.0" - acorn-import-phases "^1.0.3" - browserslist "^4.28.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.4" - es-module-lexer "^2.0.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.3.1" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^4.3.3" - tapable "^2.3.0" - terser-webpack-plugin "^5.3.16" - watchpack "^2.4.4" - webpack-sources "^3.3.3" - whatwg-encoding@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" @@ -8669,11 +7910,6 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wildcard@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" @@ -8710,11 +7946,6 @@ write-file-atomic@^5.0.1: imurmurhash "^0.1.4" signal-exit "^4.0.1" -ws@^7.3.1: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - ws@^8.18.0, ws@~8.18.3: version "8.18.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" From 818c82477500fc960b322fc6f3822db8afb36161 Mon Sep 17 00:00:00 2001 From: riccio82 Date: Fri, 24 Apr 2026 12:20:48 +0200 Subject: [PATCH 02/38] Adapt source code for Vite compatibility - commonUtils: convert require() to dynamic import() for offlineUtils and CatToolActions (breaks circular deps) - mbc-style.scss: remove *zoom:1 IE hack (lightningcss warning) - Button.scss: fix selector specificity for Vite CSS ordering - SegmentButtons/SegmentTargetToolbar/SegmentsContainer: adjust component imports for ESM module resolution - useSocketLayer: simplify import path - mountPage: remove unused require --- public/css/sass/components/common/Button.scss | 8 +++---- public/css/sass/mbc-style.scss | 4 +--- .../js/components/segments/SegmentButtons.js | 8 +++---- .../segments/SegmentTargetToolbar.js | 18 +++++++++------ .../components/segments/SegmentsContainer.js | 22 +++++++++---------- public/js/hooks/useSocketLayer.js | 3 +-- public/js/pages/mountPage.js | 1 - public/js/utils/commonUtils.js | 9 +++++--- 8 files changed, 38 insertions(+), 35 deletions(-) diff --git a/public/css/sass/components/common/Button.scss b/public/css/sass/components/common/Button.scss index 431fdb6e71..589abda59a 100644 --- a/public/css/sass/components/common/Button.scss +++ b/public/css/sass/components/common/Button.scss @@ -56,7 +56,7 @@ a.button-component-container { box-shadow: inset 0 0 0 1px var(--btnBorderColor); color: var(--btnAltTextColor); - &:not(:disabled):global(.button--active) { + &:not(:disabled).button--active { box-shadow: inset 0 0 0 1px var(--btnBorderColorActive); background-color: var(--btnBgColorSemitransAlt); } @@ -80,8 +80,8 @@ a.button-component-container { &.ghost { color: var(--btnAltTextColor); - &:not(:disabled):global(.button--active), - &:not(:disabled):global(.button--active):hover { + &:not(:disabled).button--active, + &:not(:disabled).button--active:hover { background-color: var(--btnBgColorSemitransAlt); color: var(--btnAltTextColor); } @@ -99,7 +99,7 @@ a.button-component-container { &.link { color: var(--btnAltTextColor); - &:not(:disabled):global(.button--active) { + &:not(:disabled).button--active { color: colors.$grey8; } diff --git a/public/css/sass/mbc-style.scss b/public/css/sass/mbc-style.scss index e4d7340f14..d4f0772cb7 100644 --- a/public/css/sass/mbc-style.scss +++ b/public/css/sass/mbc-style.scss @@ -620,9 +620,7 @@ Close icon ballon - Right panel Clearfix helpers ****** */ -.mbc-clearfix { - *zoom: 1; -} +.mbc-clearfix {} .mbc-clearfix:before, .mbc-clearfix:after { display: table; diff --git a/public/js/components/segments/SegmentButtons.js b/public/js/components/segments/SegmentButtons.js index 4ed397b1af..524c6f8530 100644 --- a/public/js/components/segments/SegmentButtons.js +++ b/public/js/components/segments/SegmentButtons.js @@ -189,7 +189,7 @@ export const SegmentButton = ({segment, disabled, isReview}) => { title="Revise and go to next translated" > {' '} - A+>> + {'A+>>'}

{isMac ? 'CMD' : 'CTRL'} @@ -299,7 +299,7 @@ export const SegmentButton = ({segment, disabled, isReview}) => { title="Translate and go to next untranslated" > {' '} - T+>> + {'T+>>'}

{isMac ? 'CMD' : 'CTRL'} @@ -325,7 +325,7 @@ export const SegmentButton = ({segment, disabled, isReview}) => { data-segmentid={'segment-' + segment.sid} title="Translate and go to next repetition" > - REP > + {'REP >'}

  • @@ -336,7 +336,7 @@ export const SegmentButton = ({segment, disabled, isReview}) => { data-segmentid={'segment-' + segment.sid} title="Translate and go to next repetition group" > - REP >> + {'REP >>'}
  • diff --git a/public/js/components/segments/SegmentTargetToolbar.js b/public/js/components/segments/SegmentTargetToolbar.js index 13f996a93b..92116afa00 100644 --- a/public/js/components/segments/SegmentTargetToolbar.js +++ b/public/js/components/segments/SegmentTargetToolbar.js @@ -35,10 +35,11 @@ export const SegmentTargetToolbar = ({ const [isIconsBundled, setIsIconsBundled] = useState(false) const getIconButton = (props) => { - const {children, ...rest} = props + const {children, key, ...rest} = props return ( - )} + {alternatives.has_error && + typeof alternatives.retryCallback === 'function' && ( + + )} ) : ( From 921571aaa413b267d89abd559061c7fc281d6b0b Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 15:11:35 +0200 Subject: [PATCH 14/38] =?UTF-8?q?=F0=9F=94=A7=20chore(phpstan):=20regenera?= =?UTF-8?q?te=20baseline=20for=20new=20@throws=20rules?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - regenerate phpstan-baseline.neon to absorb 726 pre-existing @throws violations across 275 files - add phpstan-throws-backlog.txt listing all files to fix sequentially --- phpstan-baseline.neon | 4454 +++++++++++++++++++++++++++++++++++- phpstan-throws-backlog.txt | 283 +++ 2 files changed, 4706 insertions(+), 31 deletions(-) create mode 100644 phpstan-throws-backlog.txt diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index d6873f338d..f3a03bdae3 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -6,12 +6,24 @@ parameters: count: 1 path: lib/Bootstrap.php + - + message: '#^Method Bootstrap\:\:formatOutputExceptions\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Bootstrap.php + - message: '#^Method Bootstrap\:\:getConfigurationForEnvironment\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Bootstrap.php + - + message: '#^Method Bootstrap\:\:initMandatoryPlugins\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Bootstrap.php + - message: '#^Parameter \#1 \$directory of function mkdir expects string, string\|null given\.$#' identifier: argument.type @@ -60,18 +72,72 @@ parameters: count: 1 path: lib/Bootstrap.php + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:alternative_translations\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:alternative_translations\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 12 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:alternative_translations\(\) throws checked exception Matecat\\Locales\\InvalidLanguageException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + - message: '#^Method Controller\\API\\App\\AIAssistantController\:\:enqueueWorker\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/AIAssistantController.php + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:feedback\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:feedback\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:feedback\(\) throws checked exception Matecat\\Locales\\InvalidLanguageException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|null given\.$#' identifier: argument.type count: 3 path: lib/Controller/API/App/AIAssistantController.php + - + message: '#^Method Controller\\API\\App\\AjaxUtilsController\:\:clearNotCompletedUploads\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/AjaxUtilsController.php + + - + message: '#^Method Controller\\API\\App\\AjaxUtilsController\:\:clearNotCompletedUploads\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/AjaxUtilsController.php + + - + message: '#^Method Controller\\API\\App\\AjaxUtilsController\:\:ping\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AjaxUtilsController.php + - message: '#^Cannot access offset ''host'' on array\{scheme\?\: string, host\?\: string, port\?\: int\<0, 65535\>, user\?\: string, pass\?\: string, path\?\: string, query\?\: string, fragment\?\: string\}\|false\.$#' identifier: offsetAccess.nonOffsetAccessible @@ -90,6 +156,18 @@ parameters: count: 1 path: lib/Controller/API/App/Authentication/ForgotPasswordController.php + - + message: '#^Method Controller\\API\\App\\Authentication\\ForgotPasswordController\:\:setNewPassword\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/Authentication/ForgotPasswordController.php + + - + message: '#^Method Controller\\API\\App\\Authentication\\ForgotPasswordController\:\:setNewPassword\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/Authentication/ForgotPasswordController.php + - message: '#^Parameter \#1 \$new_password of method Model\\Users\\Authentication\\PasswordResetModel\:\:resetPassword\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -276,6 +354,18 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:delete\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 8 + path: lib/Controller/API/App/CommentController.php + + - + message: '#^Method Controller\\API\\App\\CommentController\:\:delete\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueComment\(\) has parameter \$id_client with no type specified\.$#' identifier: missingType.parameter @@ -294,6 +384,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueComment\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueDeleteCommentMessage\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -330,6 +426,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueDeleteCommentMessage\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:filterUsers\(\) has parameter \$uidSentList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -360,6 +462,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:getRange\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:prepareCommentData\(\) has parameter \$request with no type specified\.$#' identifier: missingType.parameter @@ -372,18 +480,36 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:prepareCommentData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:prepareMentionCommentData\(\) has parameter \$request with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:prepareMentionCommentData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:projectData\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:resolve\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:resolveTeamMentions\(\) has parameter \$message with no type specified\.$#' identifier: missingType.parameter @@ -438,6 +564,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Parameter \#1 \$body of class Stomp\\Transport\\Message constructor expects string, string\|false given\.$#' identifier: argument.type @@ -690,6 +822,24 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:buildProjectStructure\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:buildProjectStructure\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 22 + path: lib/Controller/API/App/CreateProjectController.php + + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:clearSessionFiles\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:generateTargetEngineAssociation\(\) has parameter \$mt_engine with no type specified\.$#' identifier: missingType.parameter @@ -726,6 +876,12 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:getFileMetadata\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:getFilesList\(\) has parameter \$arFiles with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -804,12 +960,24 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateMtEngine\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validatePayableRateTemplate\(\) never returns Model\\PayableRates\\CustomPayableRateStruct so it can be removed from the return type\.$#' identifier: return.unusedType count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validatePublicTMPenalty\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateQaModelTemplate\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' identifier: throws.unusedType @@ -822,12 +990,24 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateSourceLang\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateTargetLangs\(\) has parameter \$target_lang with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateTargetLangs\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -1098,6 +1278,12 @@ parameters: count: 1 path: lib/Controller/API/App/DeleteContributionController.php + - + message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/DeleteContributionController.php + - message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:updateSuggestionsArray\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -1122,6 +1308,18 @@ parameters: count: 1 path: lib/Controller/API/App/DeleteContributionController.php + - + message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/App/DeleteContributionController.php + + - + message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/DeleteContributionController.php + - message: '#^PHPDoc tag @var has invalid value \(\$tm_key TmKeyStruct\)\: Unexpected token "\$tm_key", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -1152,12 +1350,24 @@ parameters: count: 1 path: lib/Controller/API/App/DeleteContributionController.php + - + message: '#^Method Controller\\API\\App\\DownloadAnalysisReportController\:\:download\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/DownloadAnalysisReportController.php + - message: '#^Method Controller\\API\\App\\DownloadAnalysisReportController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/DownloadAnalysisReportController.php + - + message: '#^Method Controller\\API\\App\\DownloadAnalysisReportController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/DownloadAnalysisReportController.php + - message: '#^Parameter \#1 \$message of class InvalidArgumentException constructor expects string, int given\.$#' identifier: argument.type @@ -1230,6 +1440,18 @@ parameters: count: 1 path: lib/Controller/API/App/EngineController.php + - + message: '#^Method Controller\\API\\App\\EngineController\:\:add\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Controller/API/App/EngineController.php + + - + message: '#^Method Controller\\API\\App\\EngineController\:\:disable\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/EngineController.php + - message: '#^Method Controller\\API\\App\\EngineController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -1308,6 +1530,12 @@ parameters: count: 1 path: lib/Controller/API/App/FilesController.php + - + message: '#^Method Controller\\API\\App\\FilesController\:\:validateInteger\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/FilesController.php + - message: '#^Access to an undefined property object\:\:\$id_after\.$#' identifier: property.notFound @@ -1344,6 +1572,12 @@ parameters: count: 2 path: lib/Controller/API/App/GetContributionController.php + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:get\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 12 + path: lib/Controller/API/App/GetContributionController.php + - message: '#^Method Controller\\API\\App\\GetContributionController\:\:getCrossLanguages\(\) has parameter \$cross_language with no type specified\.$#' identifier: missingType.parameter @@ -1356,6 +1590,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetContributionController.php + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/GetContributionController.php + - message: '#^Method Controller\\API\\App\\GetContributionController\:\:rewriteContributionContexts\(\) has parameter \$request with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -1368,6 +1608,18 @@ parameters: count: 1 path: lib/Controller/API/App/GetContributionController.php + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Controller/API/App/GetContributionController.php + + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetContributionController.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:get\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -1572,6 +1824,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:doSearch\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Method Controller\\API\\App\\GetSearchController\:\:getJobData\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -1614,18 +1872,36 @@ parameters: count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:saveReplacementEvent\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 8 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Method Controller\\API\\App\\GetSearchController\:\:updateSegments\(\) has parameter \$search_results with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:updateSegments\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Method Controller\\API\\App\\GetSearchController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Offset ''segment_hash'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' identifier: offsetAccess.notFound @@ -1806,6 +2082,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetSegmentsController.php + - + message: '#^Method Controller\\API\\App\\GetSegmentsController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/GetSegmentsController.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -1872,6 +2154,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetTranslationMismatchesController.php + - + message: '#^Method Controller\\API\\App\\GetVolumeAnalysisController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetVolumeAnalysisController.php + - message: '#^Parameter \#2 \$features of class Model\\Analysis\\Status constructor expects Model\\FeaturesBase\\FeatureSet, Model\\FeaturesBase\\FeatureSet\|null given\.$#' identifier: argument.type @@ -1944,6 +2232,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetWarningController.php + - + message: '#^Method Controller\\API\\App\\GetWarningController\:\:icuEnabled\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/GetWarningController.php + - message: '#^Method Controller\\API\\App\\GetWarningController\:\:invokeLocalWarningsOnFeatures\(\) has parameter \$src_content with no type specified\.$#' identifier: missingType.parameter @@ -2082,6 +2376,18 @@ parameters: count: 1 path: lib/Controller/API/App/HeartBeat.php + - + message: '#^Method Controller\\API\\App\\HeartBeat\:\:ping\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/HeartBeat.php + + - + message: '#^Method Controller\\API\\App\\IntentoController\:\:routingList\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/IntentoController.php + - message: '#^Ternary operator condition is always true\.$#' identifier: ternary.alwaysTrue @@ -2148,18 +2454,36 @@ parameters: count: 1 path: lib/Controller/API/App/OutsourceConfirmationController.php + - + message: '#^Method Controller\\API\\App\\OutsourceToController\:\:outsource\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/OutsourceToController.php + - message: '#^Method Controller\\API\\App\\OutsourceToController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/OutsourceToController.php + - + message: '#^Method Controller\\API\\App\\OutsourceToController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/OutsourceToController.php + - message: '#^Method Controller\\API\\App\\QualityFrameworkController\:\:renderQualityFramework\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/QualityFrameworkController.php + - + message: '#^Method Controller\\API\\App\\QualityFrameworkController\:\:renderQualityFramework\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/QualityFrameworkController.php + - message: '#^Method Controller\\API\\App\\RequestExportTMXController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -2184,12 +2508,36 @@ parameters: count: 1 path: lib/Controller/API/App/RequestExportTMXController.php + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:complete\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetChunkCompletedController.php + + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetChunkCompletedController.php + - message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/SetChunkCompletedController.php + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/SetChunkCompletedController.php + + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SetChunkCompletedController.php + - message: '#^Parameter \#1 \$id_job of static method Model\\Jobs\\JobDao\:\:getByIdAndPassword\(\) expects int, string given\.$#' identifier: argument.type @@ -2208,12 +2556,24 @@ parameters: count: 1 path: lib/Controller/API/App/SetChunkCompletedController.php + - + message: '#^Method Controller\\API\\App\\SetCurrentSegmentController\:\:set\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetCurrentSegmentController.php + - message: '#^Method Controller\\API\\App\\SetCurrentSegmentController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/SetCurrentSegmentController.php + - + message: '#^Method Controller\\API\\App\\SetCurrentSegmentController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/SetCurrentSegmentController.php + - message: '#^Parameter \#1 \$value of function count expects array\|Countable, array\|string given\.$#' identifier: argument.type @@ -2316,12 +2676,30 @@ parameters: count: 1 path: lib/Controller/API/App/SetTranslationController.php + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:evalSetContribution\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/App/SetTranslationController.php + - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getOldTranslation\(\) never returns null so it can be removed from the return type\.$#' identifier: return.unusedType count: 1 path: lib/Controller/API/App/SetTranslationController.php + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getOldTranslation\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getOldTranslation\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/SetTranslationController.php + - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getTranslationObject\(\) has parameter \$saved_translation with no type specified\.$#' identifier: missingType.parameter @@ -2341,31 +2719,67 @@ parameters: path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$new_translation with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:icuEnabled\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$old_translation with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:validateTheRequest\(\) should return array\{id_job\: numeric\-string, password\: string, received_password\: string, id_segment\: string, time_to_edit\: int\|numeric\-string, id_translator\: string, translation\: string, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\} but returns array\{id_job\: non\-falsy\-string, password\: non\-falsy\-string, received_password\: string\|false, id_segment\: non\-falsy\-string, time_to_edit\: 0\|string, id_translator\: string\|false, translation\: string\|false, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\}\.$#' - identifier: return.type + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:setSubFilteringBehavior\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Offset ''locked'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' - identifier: offsetAccess.notFound - count: 1 + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:translate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 9 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Offset ''match_type'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$new_translation with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$old_translation with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:validateTheRequest\(\) should return array\{id_job\: numeric\-string, password\: string, received_password\: string, id_segment\: string, time_to_edit\: int\|numeric\-string, id_translator\: string, translation\: string, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\} but returns array\{id_job\: non\-falsy\-string, password\: non\-falsy\-string, received_password\: string\|false, id_segment\: non\-falsy\-string, time_to_edit\: 0\|string, id_translator\: string\|false, translation\: string\|false, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\}\.$#' + identifier: return.type + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Offset ''locked'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' + identifier: offsetAccess.notFound + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Offset ''match_type'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' identifier: offsetAccess.notFound count: 1 path: lib/Controller/API/App/SetTranslationController.php @@ -2646,6 +3060,12 @@ parameters: count: 1 path: lib/Controller/API/App/SplitSegmentController.php + - + message: '#^Method Controller\\API\\App\\SplitSegmentController\:\:split\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SplitSegmentController.php + - message: '#^Method Controller\\API\\App\\SplitSegmentController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -2712,6 +3132,12 @@ parameters: count: 1 path: lib/Controller/API/App/TmKeyManagementController.php + - + message: '#^Method Controller\\API\\App\\TmKeyManagementController\:\:_checkForAdaptiveEngines\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/TmKeyManagementController.php + - message: '#^Method Controller\\API\\App\\TmKeyManagementController\:\:sortKeysInTheRightOrder\(\) has parameter \$jobKeyList with no type specified\.$#' identifier: missingType.parameter @@ -2754,18 +3180,48 @@ parameters: count: 1 path: lib/Controller/API/App/TmKeyManagementController.php + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/UpdateJobKeysController.php + - message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:jobOwnerIsMe\(\) has parameter \$owner with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/UpdateJobKeysController.php + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTMKeysArray\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/UpdateJobKeysController.php + - message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/UpdateJobKeysController.php + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/UpdateJobKeysController.php + + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/UpdateJobKeysController.php + + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/UpdateJobKeysController.php + - message: '#^Parameter \#1 \$Json_clientKeys of static method Utils\\TmKeyManagement\\TmKeyManager\:\:mergeJsonKeys\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -2808,6 +3264,12 @@ parameters: count: 1 path: lib/Controller/API/App/UserKeysController.php + - + message: '#^Method Controller\\API\\App\\UserKeysController\:\:getMemoryToUpdate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/UserKeysController.php + - message: '#^Method Controller\\API\\App\\UserKeysController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -2844,6 +3306,12 @@ parameters: count: 1 path: lib/Controller/API/App/UserKeysController.php + - + message: '#^Method Controller\\API\\App\\XliffToTargetConverterController\:\:convert\(\) throws checked exception Klein\\Exceptions\\ResponseAlreadySentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/XliffToTargetConverterController.php + - message: '#^Parameter \#1 \$body of method Klein\\AbstractResponse\:\:body\(\) expects string\|null, string\|false given\.$#' identifier: argument.type @@ -2892,6 +3360,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/Base.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\Base\:\:onFailure\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/Base.php + - message: '#^Property Controller\\API\\Commons\\Validators\\Base\:\:\$_failureCallback \(Closure\|null\) does not accept callable\(\)\: mixed\.$#' identifier: assign.propertyType @@ -2910,6 +3384,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/Base.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ChunkPasswordValidator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/Commons/Validators/ChunkPasswordValidator.php + - message: '#^Method Controller\\API\\Commons\\Validators\\ChunkPasswordValidator\:\:getChunk\(\) should return Model\\Jobs\\JobStruct but returns Model\\Jobs\\JobStruct\|null\.$#' identifier: return.type @@ -2982,6 +3462,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/JobPasswordValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectAccessTokenValidator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/Commons/Validators/ProjectAccessTokenValidator.php + - message: '#^Property Controller\\API\\Commons\\Validators\\ProjectAccessTokenValidator\:\:\$accessToken \(string\) does not accept string\|false\|null\.$#' identifier: assign.propertyType @@ -3006,6 +3492,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/ProjectAccessValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectPasswordValidator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/Commons/Validators/ProjectPasswordValidator.php + - message: '#^Method Controller\\API\\Commons\\Validators\\ProjectPasswordValidator\:\:getPassword\(\) should return string but returns string\|null\.$#' identifier: return.type @@ -3054,6 +3546,18 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/ProjectValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectValidator\:\:setFeature\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/ProjectValidator.php + + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectValidator\:\:setIdProject\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/ProjectValidator.php + - message: '#^Method Controller\\API\\Commons\\Validators\\ProjectValidator\:\:setProject\(\) has no return type specified\.$#' identifier: missingType.return @@ -3084,6 +3588,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/SegmentTranslationIssueValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\SegmentValidator\:\:_validate\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/SegmentValidator.php + - message: '#^PHPDoc tag @return with type mixed is not subtype of native type void\.$#' identifier: return.phpDocType @@ -3108,6 +3618,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/ViewValidators/ViewLoginRedirectValidator.php + - + message: '#^Method Controller\\API\\GDrive\\GDriveController\:\:changeConversionParameters\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/GDrive/GDriveController.php + - message: '#^Method Controller\\API\\GDrive\\GDriveController\:\:doImport\(\) has parameter \$listOfIds with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3162,6 +3678,12 @@ parameters: count: 1 path: lib/Controller/API/GDrive/OAuthController.php + - + message: '#^Method Controller\\API\\GDrive\\OAuthController\:\:__handleCode\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/GDrive/OAuthController.php + - message: '#^Method Controller\\API\\GDrive\\OAuthController\:\:__handleError\(\) has no return type specified\.$#' identifier: missingType.return @@ -3228,6 +3750,18 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:buildProjectStructure\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + + - + message: '#^Method Controller\\API\\V1\\NewController\:\:buildProjectStructure\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 21 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:generateTargetEngineAssociation\(\) has parameter \$mt_engine with no type specified\.$#' identifier: missingType.parameter @@ -3258,6 +3792,12 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:getFileMetadata\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:getFilesList\(\) has parameter \$arFiles with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3300,6 +3840,12 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:validateCharacterCounterMode\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:validateDialectStrictParam\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3354,6 +3900,12 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:validatePublicTMPenalty\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:validateQaModel\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' identifier: throws.unusedType @@ -3936,6 +4488,30 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadController.php + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:_saveActivity\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/DownloadController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:_saveActivity\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:downloadFile\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:downloadFile\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/V2/DownloadController.php + - message: '#^Method Controller\\API\\V2\\DownloadController\:\:getOutputContentsWithZipFiles\(\) has parameter \$output_content with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3948,6 +4524,12 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadController.php + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:ifGlobalSightXliffRemoveTargetMarks\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadController.php + - message: '#^Method Controller\\API\\V2\\DownloadController\:\:startRemoteFileService\(\) has parameter \$output_content with no type specified\.$#' identifier: missingType.parameter @@ -4086,6 +4668,18 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadJobTMXController.php + - + message: '#^Method Controller\\API\\V2\\DownloadJobTMXController\:\:_saveActivity\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadJobTMXController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadJobTMXController\:\:index\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/DownloadJobTMXController.php + - message: '#^PHPDoc tag @var has invalid value \(\$tmx SplTempFileObject\)\: Unexpected token "\$tmx", expected type at offset 28 on line 2$#' identifier: phpDoc.parseError @@ -4134,6 +4728,12 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadOriginalController.php + - + message: '#^Method Controller\\API\\V2\\DownloadOriginalController\:\:index\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/V2/DownloadOriginalController.php + - message: '#^Offset ''basename'' might not exist on array\|string\.$#' identifier: offsetAccess.notFound @@ -4188,6 +4788,12 @@ parameters: count: 3 path: lib/Controller/API/V2/GlossaryFilesController.php + - + message: '#^Method Controller\\API\\V2\\GlossaryFilesController\:\:afterConstruct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/GlossaryFilesController.php + - message: '#^Method Controller\\API\\V2\\GlossaryFilesController\:\:extractCSV\(\) has no return type specified\.$#' identifier: missingType.return @@ -4260,6 +4866,12 @@ parameters: count: 1 path: lib/Controller/API/V2/JobsController.php + - + message: '#^Method Controller\\API\\V2\\JobsTranslatorsController\:\:get\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/JobsTranslatorsController.php + - message: '#^Parameter \#1 \$delivery_date of method Model\\Translators\\TranslatorsModel\:\:setDeliveryDate\(\) expects int\|string, string\|false\|null given\.$#' identifier: argument.type @@ -4302,6 +4914,12 @@ parameters: count: 1 path: lib/Controller/API/V2/MarkAllSegmentStatusController.php + - + message: '#^Method Controller\\API\\V2\\MemoryKeysController\:\:listKeys\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/MemoryKeysController.php + - message: '#^Property Model\\TmKeyManagement\\MemoryKeyStruct\:\:\$uid \(int\) does not accept int\|null\.$#' identifier: assign.propertyType @@ -4332,6 +4950,18 @@ parameters: count: 1 path: lib/Controller/API/V2/ProjectsController.php + - + message: '#^Method Controller\\API\\V2\\ProjectsController\:\:deleteDueDate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/ProjectsController.php + + - + message: '#^Method Controller\\API\\V2\\ProjectsController\:\:updateDueDate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/ProjectsController.php + - message: '#^Property Controller\\API\\V2\\ProjectsController\:\:\$project \(Model\\Projects\\ProjectStruct\) does not accept Model\\Projects\\ProjectStruct\|null\.$#' identifier: assign.propertyType @@ -4398,6 +5028,30 @@ parameters: count: 1 path: lib/Controller/API/V2/SegmentTranslationIssueController.php + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:checkLoggedUserPermissions\(\) throws checked exception Controller\\API\\Commons\\Exceptions\\AuthorizationError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:checkLoggedUserPermissions\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:create\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:update\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + - message: '#^Parameter \#1 \$entry of method Controller\\API\\V2\\SegmentTranslationIssueController\:\:checkLoggedUserPermissions\(\) expects Model\\LQA\\EntryStruct, Model\\LQA\\EntryStruct\|null given\.$#' identifier: argument.type @@ -4458,12 +5112,24 @@ parameters: count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:checkSplit\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^Method Controller\\API\\V2\\SplitJobController\:\:checkSplitAccess\(\) has parameter \$jobList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:checkSplitAccess\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^Method Controller\\API\\V2\\SplitJobController\:\:filterJobsById\(\) has parameter \$jobList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -4482,12 +5148,24 @@ parameters: count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:merge\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^Method Controller\\API\\V2\\SplitJobController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^PHPDoc tag @var has invalid value \(\$data SplitMergeProjectData\)\: Unexpected token "\$data", expected type at offset 10 on line 1$#' identifier: phpDoc.parseError @@ -4524,6 +5202,12 @@ parameters: count: 1 path: lib/Controller/API/V2/TeamMembersController.php + - + message: '#^Method Controller\\API\\V2\\TeamMembersController\:\:index\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/TeamMembersController.php + - message: '#^Parameter \#1 \$emails of method Model\\Teams\\TeamModel\:\:addMemberEmails\(\) expects array, array\\|false\|null given\.$#' identifier: argument.type @@ -4548,6 +5232,12 @@ parameters: count: 1 path: lib/Controller/API/V2/TeamsController.php + - + message: '#^Method Controller\\API\\V2\\TeamsController\:\:getTeamList\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/TeamsController.php + - message: '#^Parameter \#1 \$email of method Model\\Teams\\TeamModel\:\:addMemberEmail\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -4572,6 +5262,12 @@ parameters: count: 1 path: lib/Controller/API/V2/TeamsController.php + - + message: '#^Method Controller\\API\\V2\\TeamsProjectsController\:\:_appendSingleProjectTeamValidators\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/TeamsProjectsController.php + - message: '#^Property Controller\\API\\V2\\TeamsProjectsController\:\:\$project \(Model\\Projects\\ProjectStruct\) does not accept Model\\Projects\\ProjectStruct\|null\.$#' identifier: assign.propertyType @@ -4608,6 +5304,18 @@ parameters: count: 1 path: lib/Controller/API/V2/UrlsController.php + - + message: '#^Method Controller\\API\\V2\\UserController\:\:edit\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/UserController.php + + - + message: '#^Method Controller\\API\\V2\\UserController\:\:setMetadata\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/UserController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|null given\.$#' identifier: argument.type @@ -4650,6 +5358,12 @@ parameters: count: 1 path: lib/Controller/API/V3/CountWordController.php + - + message: '#^Method Controller\\API\\V3\\CountWordController\:\:afterConstruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/CountWordController.php + - message: '#^PHPDoc tag @var has invalid value \(\$filter MateCatFilter\)\: Unexpected token "\$filter", expected type at offset 9 on line 1$#' identifier: phpDoc.parseError @@ -4770,6 +5484,12 @@ parameters: count: 1 path: lib/Controller/API/V3/DownloadQRController.php + - + message: '#^Method Controller\\API\\V3\\DownloadQRController\:\:download\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V3/DownloadQRController.php + - message: '#^Parameter \#1 \$stream of function fclose expects resource, resource\|false given\.$#' identifier: argument.type @@ -4812,12 +5532,24 @@ parameters: count: 1 path: lib/Controller/API/V3/FileInfoController.php + - + message: '#^Method Controller\\API\\V3\\FileInfoController\:\:setInstructions\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/FileInfoController.php + - message: '#^Method Controller\\API\\V3\\FiltersConfigTemplateController\:\:validateJSON\(\) has parameter \$json with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/V3/FiltersConfigTemplateController.php + - + message: '#^Method Controller\\API\\V3\\FiltersConfigTemplateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/FiltersConfigTemplateController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|false given\.$#' identifier: argument.type @@ -4884,6 +5616,12 @@ parameters: count: 1 path: lib/Controller/API/V3/IssueCheckController.php + - + message: '#^Method Controller\\API\\V3\\LaraController\:\:glossaries\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/LaraController.php + - message: '#^Parameter \#2 \$engineId of class Controller\\API\\Commons\\Validators\\EngineOwnershipValidator constructor expects int, string\|false given\.$#' identifier: argument.type @@ -4956,6 +5694,12 @@ parameters: count: 1 path: lib/Controller/API/V3/ModernMTController.php + - + message: '#^Method Controller\\API\\V3\\ModernMTController\:\:extractCSV\(\) throws checked exception PhpOffice\\PhpSpreadsheet\\Writer\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/ModernMTController.php + - message: '#^Method Controller\\API\\V3\\ModernMTController\:\:filterResult\(\) has parameter \$memory with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5064,6 +5808,12 @@ parameters: count: 1 path: lib/Controller/API/V3/ModernMTController.php + - + message: '#^Method Controller\\API\\V3\\MyMemoryController\:\:saveMemoryKey\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/MyMemoryController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|null given\.$#' identifier: argument.type @@ -5106,6 +5856,12 @@ parameters: count: 1 path: lib/Controller/API/V3/PayableRateController.php + - + message: '#^Method Controller\\API\\V3\\PayableRateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/PayableRateController.php + - message: '#^Parameter \#1 \$json of class Utils\\Validator\\JSONSchema\\JSONValidatorObject constructor expects string, string\|null given\.$#' identifier: argument.type @@ -5232,6 +5988,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QAModelTemplateController.php + - + message: '#^Method Controller\\API\\V3\\QAModelTemplateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QAModelTemplateController.php + - message: '#^Parameter \#1 \$json of class Utils\\Validator\\JSONSchema\\JSONValidatorObject constructor expects string, string\|null given\.$#' identifier: argument.type @@ -5298,6 +6060,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:_getPaginationLinks\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QualityReportControllerAPI.php + - message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:getJob\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -5310,6 +6078,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:getSecsPerWord\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QualityReportControllerAPI.php + - message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:getTteArrayForSegment\(\) has parameter \$tteArray with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5322,6 +6096,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:show\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QualityReportControllerAPI.php + - message: '#^PHPDoc tag @var for variable \$filter has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5352,6 +6132,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\RevisionFeedbackController\:\:feedback\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Controller/API/V3/RevisionFeedbackController.php + - message: '#^Method Controller\\API\\V3\\RevisionFeedbackController\:\:getJob\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -5508,12 +6294,24 @@ parameters: count: 1 path: lib/Controller/API/V3/SegmentAnalysisController.php + - + message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsForAJob\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/SegmentAnalysisController.php + - message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsForAProject\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/V3/SegmentAnalysisController.php + - + message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsForAProject\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/SegmentAnalysisController.php + - message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsFromIdJobAndPassword\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5544,6 +6342,12 @@ parameters: count: 1 path: lib/Controller/API/V3/SegmentAnalysisController.php + - + message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:job\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/SegmentAnalysisController.php + - message: '#^PHPDoc tag @var has invalid value \(\$segmentForAnalysis ShapelessConcreteStruct\)\: Unexpected token "\$segmentForAnalysis", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -5622,12 +6426,24 @@ parameters: count: 1 path: lib/Controller/API/V3/TeamsProjectsController.php + - + message: '#^Method Controller\\API\\V3\\TeamsProjectsController\:\:getTotalPages\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/TeamsProjectsController.php + - message: '#^Method Controller\\API\\V3\\TeamsProjectsController\:\:setTeam\(\) has parameter \$team with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/V3/TeamsProjectsController.php + - + message: '#^Method Controller\\API\\V3\\TeamsProjectsController\:\:setTeam\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/TeamsProjectsController.php + - message: '#^Access to an undefined property object\:\:\$definitions\.$#' identifier: property.notFound @@ -5646,6 +6462,12 @@ parameters: count: 1 path: lib/Controller/API/V3/XliffConfigTemplateController.php + - + message: '#^Method Controller\\API\\V3\\XliffConfigTemplateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/XliffConfigTemplateController.php + - message: '#^Parameter \#1 \$json of static method Model\\Xliff\\XliffConfigTemplateDao\:\:createFromJSON\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -5706,6 +6528,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/AbstractDownloadController.php + - + message: '#^Method Controller\\Abstracts\\AbstractDownloadController\:\:finalize\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/AbstractDownloadController.php + - message: '#^Method Controller\\Abstracts\\AbstractDownloadController\:\:nocache\(\) has no return type specified\.$#' identifier: missingType.return @@ -5766,6 +6594,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/AbstractDownloadController.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:destroyAuthentication\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/AuthCookie.php + - message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:generateSignedAuthCookie\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5778,6 +6612,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/Authentication/AuthCookie.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:getCredentials\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/AuthCookie.php + - message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:getData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5886,6 +6726,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/Authentication/CookieManager.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:_cacheSetConnection\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + - message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:_deleteCacheByKey\(\) should return bool but returns int\.$#' identifier: return.type @@ -5904,6 +6750,18 @@ parameters: count: 1 path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:_setInCacheMap\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + + - + message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:isLoginCookieStillActive\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + - message: '#^Parameter \#1 \$key of method Predis\\ClientInterface\:\:get\(\) expects string, int given\.$#' identifier: argument.type @@ -6108,6 +6966,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/BaseKleinViewController.php + - + message: '#^Method Controller\\Abstracts\\BaseKleinViewController\:\:render\(\) throws checked exception Klein\\Exceptions\\ResponseAlreadySentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/BaseKleinViewController.php + - message: '#^Method Controller\\Abstracts\\BaseKleinViewController\:\:setView\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6162,6 +7026,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/KleinController.php + - + message: '#^Method Controller\\Abstracts\\KleinController\:\:broadcastLogout\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/KleinController.php + - message: '#^Method Controller\\Abstracts\\KleinController\:\:getFeatureSet\(\) should return Model\\FeaturesBase\\FeatureSet but returns Model\\FeaturesBase\\FeatureSet\|null\.$#' identifier: return.type @@ -6192,6 +7062,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/KleinController.php + - + message: '#^Method Controller\\Abstracts\\KleinController\:\:setAuthKeysIfExists\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/Abstracts/KleinController.php + - message: '#^Method Controller\\Abstracts\\KleinController\:\:startTimer\(\) has no return type specified\.$#' identifier: missingType.return @@ -6246,6 +7122,12 @@ parameters: count: 1 path: lib/Controller/Traits/KleinResponseFileStream.php + - + message: '#^Method Controller\\Traits\\KleinResponseFileStream\:\:streamFileFromPointer\(\) throws checked exception Klein\\Exceptions\\ResponseAlreadySentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Traits/KleinResponseFileStream.php + - message: '#^Method Controller\\Traits\\KleinResponseFileStream\:\:streamFileInlineFromPointer\(\) has no return type specified\.$#' identifier: missingType.return @@ -6318,6 +7200,12 @@ parameters: count: 1 path: lib/Controller/Views/AnalyzeController.php + - + message: '#^Method Controller\\Views\\AnalyzeController\:\:renderView\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/AnalyzeController.php + - message: '#^Method Controller\\Views\\AnalyzeController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6366,6 +7254,12 @@ parameters: count: 1 path: lib/Controller/Views/CattoolController.php + - + message: '#^Method Controller\\Views\\CattoolController\:\:_saveActivity\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/CattoolController.php + - message: '#^Method Controller\\Views\\CattoolController\:\:archived\(\) has parameter \$jobOwnership with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6408,6 +7302,12 @@ parameters: count: 1 path: lib/Controller/Views/CattoolController.php + - + message: '#^Method Controller\\Views\\CattoolController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/Views/CattoolController.php + - message: '#^Offset 0 might not exist on array\\|null\.$#' identifier: offsetAccess.notFound @@ -6474,6 +7374,12 @@ parameters: count: 1 path: lib/Controller/Views/ManageController.php + - + message: '#^Method Controller\\Views\\ManageController\:\:renderView\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/ManageController.php + - message: '#^Property Model\\ActivityLog\\ActivityLogStruct\:\:\$ip \(string\) does not accept string\|null\.$#' identifier: assign.propertyType @@ -6492,12 +7398,30 @@ parameters: count: 1 path: lib/Controller/Views/OauthResponseHandlerController.php + - + message: '#^Method Controller\\Views\\OauthResponseHandlerController\:\:_processSuccessfulOAuth\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/Views/OauthResponseHandlerController.php + - message: '#^Parameter \#2 \$provider of method Controller\\Views\\OauthResponseHandlerController\:\:_processSuccessfulOAuth\(\) expects null, string\|false\|null given\.$#' identifier: argument.type count: 1 path: lib/Controller/Views/OauthResponseHandlerController.php + - + message: '#^Method Controller\\Views\\OutsourceTo\\AbstractController\:\:afterConstruct\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/OutsourceTo/AbstractController.php + + - + message: '#^Method Controller\\Views\\OutsourceTo\\AbstractController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/OutsourceTo/AbstractController.php + - message: '#^Offset ''currency'' might not exist on Utils\\Shop\\AbstractItem\|null\.$#' identifier: offsetAccess.notFound @@ -6522,6 +7446,12 @@ parameters: count: 1 path: lib/Controller/Views/QualityReportController.php + - + message: '#^Method Controller\\Views\\QualityReportController\:\:renderView\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/QualityReportController.php + - message: '#^Method Controller\\Views\\QualityReportController\:\:searchableStatuses\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6540,6 +7470,12 @@ parameters: count: 1 path: lib/Controller/Views/QualityReportController.php + - + message: '#^Method Controller\\Views\\TemplateDecorator\\AbstractDecorator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/TemplateDecorator/AbstractDecorator.php + - message: '#^Method Controller\\Views\\TemplateDecorator\\AbstractDecorator\:\:decorate\(\) has no return type specified\.$#' identifier: missingType.return @@ -6570,6 +7506,12 @@ parameters: count: 1 path: lib/Controller/Views/TemplateDecorator/DownloadOmegaTOutputDecorator.php + - + message: '#^Method Controller\\Views\\TemplateDecorator\\DownloadOmegaTOutputDecorator\:\:createOmegaTZip\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/TemplateDecorator/DownloadOmegaTOutputDecorator.php + - message: '#^Method Controller\\Views\\TemplateDecorator\\DownloadOmegaTOutputDecorator\:\:decorate\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6642,6 +7584,12 @@ parameters: count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:create\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getAllForProject\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -6654,12 +7602,24 @@ parameters: count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getAllForProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getByID\(\) has parameter \$activity_id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getByID\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getLastActionInProject\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -6672,6 +7632,12 @@ parameters: count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getLastActionInProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:read\(\) has parameter \$whereKeys with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6696,6 +7662,18 @@ parameters: count: 1 path: lib/Model/Analysis/AbstractStatus.php + - + message: '#^Method Model\\Analysis\\AbstractStatus\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Analysis/AbstractStatus.php + + - + message: '#^Method Model\\Analysis\\AbstractStatus\:\:_fetchProjectData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Analysis/AbstractStatus.php + - message: '#^Method Model\\Analysis\\AbstractStatus\:\:fetchData\(\) should return \$this\(Model\\Analysis\\AbstractStatus\) but returns Model\\Analysis\\AbstractStatus\.$#' identifier: return.type @@ -6726,6 +7704,12 @@ parameters: count: 1 path: lib/Model/Analysis/AbstractStatus.php + - + message: '#^Method Model\\Analysis\\AbstractStatus\:\:loadObjects\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Analysis/AbstractStatus.php + - message: '#^Parameter \#1 \$mt_we_workflow_enabled of static method Model\\Analysis\\Constants\\MatchConstantsFactory\:\:getInstance\(\) expects bool\|null, string\|false given\.$#' identifier: argument.type @@ -6792,12 +7776,24 @@ parameters: count: 1 path: lib/Model/Analysis/AnalysisDao.php + - + message: '#^Method Model\\Analysis\\AnalysisDao\:\:destroyCacheByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Analysis/AnalysisDao.php + - message: '#^Method Model\\Analysis\\AnalysisDao\:\:getProjectStatsVolumeAnalysis\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Analysis/AnalysisDao.php + - + message: '#^Method Model\\Analysis\\AnalysisDao\:\:getProjectStatsVolumeAnalysis\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Analysis/AnalysisDao.php + - message: '#^Unsafe usage of new static\(\)\.$#' identifier: new.static @@ -6924,6 +7920,12 @@ parameters: count: 1 path: lib/Model/Analysis/XTRFStatus.php + - + message: '#^Method Model\\Analysis\\XTRFStatus\:\:formatFile\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 13 + path: lib/Model/Analysis/XTRFStatus.php + - message: '#^Method Model\\Analysis\\XTRFStatus\:\:getResultArray\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6954,30 +7956,60 @@ parameters: count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:create\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:deleteByUid\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:deleteByUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:findByKey\(\) has parameter \$key with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:findByKey\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getByUid\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getByUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyStruct\:\:validSecret\(\) has parameter \$secret with no type specified\.$#' identifier: missingType.parameter @@ -7002,12 +8034,30 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:createFromChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:deleteEvent\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:getByIdAndChunk\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:getByIdAndChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:lastCompletionRecord\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7020,6 +8070,12 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:validSources\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7038,6 +8094,12 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:createOrUpdateFromStruct\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:updatePassword\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -7056,6 +8118,12 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:validSources\(\) has no return type specified\.$#' identifier: missingType.return @@ -7068,12 +8136,30 @@ parameters: count: 1 path: lib/Model/Comments/BaseCommentStruct.php + - + message: '#^Method Model\\Comments\\BaseCommentStruct\:\:templateMessage\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Comments/BaseCommentStruct.php + - message: '#^Parameter \#1 \$object of function date_format expects DateTimeInterface, DateTime\|false given\.$#' identifier: argument.type count: 2 path: lib/Model/Comments/BaseCommentStruct.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:deleteComment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Comments/CommentDao.php + + - + message: '#^Method Model\\Comments\\CommentDao\:\:destroySegmentIdSegmentCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -7086,6 +8172,12 @@ parameters: count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getCommentsForChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getOpenThreadsForProjects\(\) has parameter \$projectIds with no type specified\.$#' identifier: missingType.parameter @@ -7098,12 +8190,24 @@ parameters: count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getOpenThreadsForProjects\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getThreadContributorUids\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getThreadContributorUids\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getThreadsBySegments\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -7122,6 +8226,12 @@ parameters: count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getThreadsBySegments\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getUsersIdFromContent\(\) has parameter \$content with no type specified\.$#' identifier: missingType.parameter @@ -7207,27 +8317,63 @@ parameters: path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServiceByUserAndId\(\) has parameter \$id_service with no type specified\.$#' - identifier: missingType.parameter - count: 1 + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:setServiceExpired\(\) has parameter \$time with no type specified\.$#' - identifier: missingType.parameter - count: 1 + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findDefaultServiceByUserAndName\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServiceByUserAndId\(\) has parameter \$id_service with no type specified\.$#' + identifier: missingType.parameter count: 1 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$primary_keys type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServiceByUserAndId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServicesByUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findUserServicesByNameAndEmail\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:setDefaultService\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:setServiceExpired\(\) has parameter \$time with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$primary_keys type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - @@ -7296,6 +8442,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/GDriveTokenVerifyModel.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\GDriveUserAuthorizationModel\:\:__collectProperties\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ConnectedServices/GDrive/GDriveUserAuthorizationModel.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\GDriveUserAuthorizationModel\:\:__insertService\(\) should return Model\\ConnectedServices\\ConnectedServiceStruct but returns Model\\ConnectedServices\\ConnectedServiceStruct\|false\.$#' identifier: return.type @@ -7326,6 +8478,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:copyFile\(\) has parameter \$copyTitle with no type specified\.$#' identifier: missingType.parameter @@ -7350,6 +8508,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:getService\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:updateFileOnGDrive\(\) has parameter \$parents with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7392,6 +8556,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:deleteDirectory\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:doConversion\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7428,6 +8598,18 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:getInstanceForCLI\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:getInstanceForCLI\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:getToken\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7440,6 +8622,24 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:removeFile\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:removeFile\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:sanitizeFileName\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + - message: '#^Parameter \#1 \$googleMime of static method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:officeExtensionFromMime\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -7476,6 +8676,18 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\DefuseEncryption\:\:decrypt\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\DefuseEncryption\:\:encrypt\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + - message: '#^Parameter \#2 \$key of static method Defuse\\Crypto\\Crypto\:\:decrypt\(\) expects Defuse\\Crypto\\Key, Defuse\\Crypto\\Key\|null given\.$#' identifier: argument.type @@ -7500,6 +8712,24 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Facebook\\FacebookProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Facebook\\FacebookProvider\:\:getClient\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Facebook\\FacebookProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + - message: '#^Property Model\\ConnectedServices\\Oauth\\ProviderUser\:\:\$email \(string\) does not accept string\|null\.$#' identifier: assign.propertyType @@ -7512,6 +8742,30 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getAuthorizationUrl\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getResourceOwner\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + - message: '#^Method Model\\ConnectedServices\\Oauth\\Google\\AccessToken\:\:__construct\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7548,6 +8802,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Google/GoogleClientLogsFormatter.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Google\\GoogleProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ConnectedServices/Oauth/Google/GoogleProvider.php + - message: '#^Parameter \#1 \$applicationName of method Google\\Client\:\:setApplicationName\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -7578,6 +8838,48 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Google/GoogleProvider.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\LinkedIn\\LinkedInProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\LinkedIn\\LinkedInProvider\:\:getResourceOwner\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\LinkedIn\\LinkedInProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getAuthorizationUrl\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getResourceOwner\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + - message: '#^PHPDoc tag @return with type mixed is not subtype of native type Model\\ConnectedServices\\Oauth\\ProviderUser\.$#' identifier: return.phpDocType @@ -7596,12 +8898,24 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\OauthClient\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/OauthClient.php + - message: '#^Method Model\\ConnectedServices\\Oauth\\OauthClient\:\:getAuthorizationUrl\(\) has parameter \$_session with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/ConnectedServices/Oauth/OauthClient.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\OauthClient\:\:getInstance\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/OauthClient.php + - message: '#^Property Model\\ConnectedServices\\Oauth\\OauthClient\:\:\$provider \(Model\\ConnectedServices\\Oauth\\AbstractProvider\) does not accept object\.$#' identifier: assign.propertyType @@ -7878,6 +9192,12 @@ parameters: count: 1 path: lib/Model/Conversion/InternalHashPaths.php + - + message: '#^Method Model\\Conversion\\InternalHashPaths\:\:__construct\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/InternalHashPaths.php + - message: '#^Parameter \#1 \$string of function trim expects string, string\|false given\.$#' identifier: argument.type @@ -7896,6 +9216,12 @@ parameters: count: 1 path: lib/Model/Conversion/MimeTypes/Guesser/FileinfoMimeTypeGuesser.php + - + message: '#^Method Model\\Conversion\\MimeTypes\\Guesser\\SimpleMarkupMimeTypeGuesser\:\:guessMimeType\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/MimeTypes/Guesser/SimpleMarkupMimeTypeGuesser.php + - message: '#^Parameter \#1 \$haystack of function stripos expects string, string\|false given\.$#' identifier: argument.type @@ -7914,6 +9240,12 @@ parameters: count: 1 path: lib/Model/Conversion/MimeTypes/MimeTypes.php + - + message: '#^Method Model\\Conversion\\MimeTypes\\MimeTypes\:\:guessMimeType\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Conversion/MimeTypes/MimeTypes.php + - message: '#^Property Model\\Conversion\\MimeTypes\\MimeTypes\:\:\$extensions type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7962,12 +9294,24 @@ parameters: count: 1 path: lib/Model/Conversion/Upload.php + - + message: '#^Method Model\\Conversion\\Upload\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/Upload.php + - message: '#^Method Model\\Conversion\\Upload\:\:_filesAreTooMuch\(\) has parameter \$filesToUpload with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Conversion/Upload.php + - + message: '#^Method Model\\Conversion\\Upload\:\:fixFileName\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/Upload.php + - message: '#^Method Model\\Conversion\\Upload\:\:getUniformGlobalFilesStructure\(\) has parameter \$filesToUpload with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8046,6 +9390,12 @@ parameters: count: 1 path: lib/Model/Conversion/ZipArchiveHandler.php + - + message: '#^Method Model\\Conversion\\ZipArchiveHandler\:\:extractFilesInTmp\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/ZipArchiveHandler.php + - message: '#^Method Model\\Conversion\\ZipArchiveHandler\:\:prependZipFileName\(\) is unused\.$#' identifier: method.unused @@ -8154,6 +9504,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDao.php + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_cacheSetConnection\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDao.php + - message: '#^Method Model\\DataAccess\\AbstractDao\:\:_deleteCacheByKey\(\) should return bool but returns int\.$#' identifier: return.type @@ -8178,12 +9534,30 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDao.php + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_fetchObjectMap\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDao.php + + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_fetchObjectMap\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/DataAccess/AbstractDao.php + - message: '#^Method Model\\DataAccess\\AbstractDao\:\:_getStatementForQuery\(\) has parameter \$query with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/DataAccess/AbstractDao.php + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_getStatementForQuery\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDao.php + - message: '#^Method Model\\DataAccess\\AbstractDao\:\:_sanitizeInputArray\(\) has parameter \$input with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8382,6 +9756,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - + message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:__construct\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:__get\(\) has parameter \$name with no type specified\.$#' identifier: missingType.parameter @@ -8412,6 +9792,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - + message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:setTimestamp\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:toArray\(\) has parameter \$mask with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8436,6 +9822,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - + message: '#^Method Model\\DataAccess\\Database\:\:begin\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:buildInsertStatement\(\) has parameter \$attrs with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8454,6 +9846,18 @@ parameters: count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:commit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + + - + message: '#^Method Model\\DataAccess\\Database\:\:getConnection\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:insert\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8490,12 +9894,30 @@ parameters: count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:last_insert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:nextSequence\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:nextSequence\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 9 + path: lib/Model/DataAccess/Database.php + + - + message: '#^Method Model\\DataAccess\\Database\:\:rollback\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:update\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8508,6 +9930,18 @@ parameters: count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:update\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/DataAccess/Database.php + + - + message: '#^Method Model\\DataAccess\\Database\:\:useDb\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/DataAccess/Database.php + - message: '#^Parameter \#1 \$server of class Model\\DataAccess\\Database constructor expects string, string\|null given\.$#' identifier: argument.type @@ -8598,6 +10032,30 @@ parameters: count: 1 path: lib/Model/DataAccess/ShapelessConcreteStruct.php + - + message: '#^Method Model\\DataAccess\\ShapelessConcreteStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/ShapelessConcreteStruct.php + + - + message: '#^Method Model\\DataAccess\\ShapelessConcreteStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/ShapelessConcreteStruct.php + + - + message: '#^Method Model\\DataAccess\\ShapelessConcreteStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/ShapelessConcreteStruct.php + + - + message: '#^Method Model\\EditLog\\EditLogSegmentStruct\:\:getSecsPerWord\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/EditLog/EditLogSegmentStruct.php + - message: '#^Loose comparison using \=\= between int and ''NULL'' will always evaluate to false\.$#' identifier: equal.alwaysFalse @@ -8616,6 +10074,24 @@ parameters: count: 1 path: lib/Model/Engines/EngineDAO.php + - + message: '#^Method Model\\Engines\\EngineDAO\:\:create\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Engines/EngineDAO.php + + - + message: '#^Method Model\\Engines\\EngineDAO\:\:disable\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Engines/EngineDAO.php + + - + message: '#^Method Model\\Engines\\EngineDAO\:\:sanitize\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Engines/EngineDAO.php + - message: '#^Negated boolean expression is always false\.$#' identifier: booleanNot.alwaysFalse @@ -8736,6 +10212,18 @@ parameters: count: 1 path: lib/Model/Engines/Structs/EngineStruct.php + - + message: '#^Method Model\\Engines\\Structs\\EngineStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Engines/Structs/EngineStruct.php + + - + message: '#^Method Model\\Engines\\Structs\\EngineStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Engines/Structs/EngineStruct.php + - message: '#^PHPDoc tag @return with type Model\\Engines\\Structs\\EngineStruct is not subtype of native type static\(Model\\Engines\\Structs\\EngineStruct\)\.$#' identifier: return.phpDocType @@ -8970,6 +10458,12 @@ parameters: count: 1 path: lib/Model/FeaturesBase/FeatureSet.php + - + message: '#^Method Model\\FeaturesBase\\FeatureSet\:\:merge\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FeaturesBase/FeatureSet.php + - message: '#^Method Model\\FeaturesBase\\FeatureSet\:\:runOnFeature\(\) has parameter \$args with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8995,8 +10489,14 @@ parameters: path: lib/Model/FeaturesBase/FeatureSet.php - - message: '#^Method Model\\FeaturesBase\\PluginsLoader\:\:getValidCodes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\FeaturesBase\\PluginsLoader\:\:getInstance\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FeaturesBase/PluginsLoader.php + + - + message: '#^Method Model\\FeaturesBase\\PluginsLoader\:\:getValidCodes\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: lib/Model/FeaturesBase/PluginsLoader.php @@ -9036,12 +10536,36 @@ parameters: count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:deleteFailedProjectFiles\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Files/FileDao.php + + - + message: '#^Method Model\\Files\\FileDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/FileDao.php + - message: '#^Method Model\\Files\\FileDao\:\:getByJobId\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:getByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FileDao.php + + - + message: '#^Method Model\\Files\\FileDao\:\:getByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FileDao.php + - message: '#^Method Model\\Files\\FileDao\:\:insertFilesJob\(\) has parameter \$id_file with no type specified\.$#' identifier: missingType.parameter @@ -9054,6 +10578,12 @@ parameters: count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:isFileInProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Files/FileDao.php + - message: '#^Method Model\\Files\\FileDao\:\:updateField\(\) has parameter \$field with no type specified\.$#' identifier: missingType.parameter @@ -9072,6 +10602,12 @@ parameters: count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:updateField\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/FileDao.php + - message: '#^Property Model\\Files\\FileDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9138,18 +10674,66 @@ parameters: count: 1 path: lib/Model/Files/FilesInfoUtility.php + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getByFileId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getBySegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getFirstAndLastSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + - message: '#^Method Model\\Files\\FilesPartsDao\:\:insert\(\) should return int but returns string\|false\.$#' identifier: return.type count: 1 path: lib/Model/Files/FilesPartsDao.php + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:insert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Files/FilesPartsDao.php + - message: '#^Method Model\\Files\\MetadataDao\:\:bulkInsert\(\) has parameter \$metadata with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Files/MetadataDao.php + - + message: '#^Method Model\\Files\\MetadataDao\:\:bulkInsert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/MetadataDao.php + + - + message: '#^Method Model\\Files\\MetadataDao\:\:insert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/MetadataDao.php + + - + message: '#^Method Model\\Files\\MetadataDao\:\:update\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/MetadataDao.php + - message: '#^Cannot call method format\(\) on DateTime\|false\.$#' identifier: method.nonObject @@ -9168,12 +10752,24 @@ parameters: count: 1 path: lib/Model/FilesStorage/AbstractFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:deleteHashFromUploadDir\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/AbstractFilesStorage.php + - message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:getFilesForJob\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/AbstractFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:getFilesForJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/FilesStorage/AbstractFilesStorage.php + - message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:pathinfo_fix\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9252,24 +10848,66 @@ parameters: count: 2 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:cacheZipArchive\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:getFastAnalysisData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:getFastAnalysisData\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:getHashesFromDir\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:linkZipToProject\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:moveFromCacheToFileDir\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:storeFastAnalysisFile\(\) has parameter \$segments_metadata with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:storeFastAnalysisFile\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^PHPDoc tag @return with type bool\|string is not subtype of native type string\|false\.$#' identifier: return.phpDocType @@ -9366,6 +11004,12 @@ parameters: count: 3 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:cacheZipArchive\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:createFileName\(\) has parameter \$file_info with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9414,6 +11058,12 @@ parameters: count: 1 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getFastAnalysisData\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getFastAnalysisFileName\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -9426,12 +11076,42 @@ parameters: count: 1 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getHashesFromDir\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getStaticS3Client\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/FilesStorage/S3FilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:storeFastAnalysisFile\(\) has parameter \$segments_metadata with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:storeFastAnalysisFile\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Offset ''basename'' might not exist on array\|string\.$#' identifier: offsetAccess.notFound @@ -9792,6 +11472,12 @@ parameters: count: 1 path: lib/Model/Filters/DTO/Yaml.php + - + message: '#^Method Model\\Filters\\DTO\\Yaml\:\:setInnerContentType\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/DTO/Yaml.php + - message: '#^Method Model\\Filters\\DTO\\Yaml\:\:setTranslateKeys\(\) has parameter \$translate_keys with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9822,6 +11508,24 @@ parameters: count: 1 path: lib/Model/Filters/DTO/Yaml.php + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryByUidAndNameCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + - message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9834,6 +11538,24 @@ parameters: count: 1 path: lib/Model/Filters/FiltersConfigTemplateDao.php + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + - message: '#^Parameter \#1 \$uid of static method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryPaginated\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -9894,6 +11616,18 @@ parameters: count: 1 path: lib/Model/Filters/FiltersConfigTemplateStruct.php + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Filters/FiltersConfigTemplateStruct.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Filters/FiltersConfigTemplateStruct.php + - message: '#^Parameter \#1 \$date of static method Utils\\Date\\DateTimeUtil\:\:formatIsoDate\(\) expects null, string\|null given\.$#' identifier: argument.type @@ -9984,18 +11718,120 @@ parameters: count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:createFromStruct\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:deleteOnMerge\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:destroyCacheByProjectId\(\) has parameter \$project_id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:destroyCacheByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getAllModifiedSegmentsForPee\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getByIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getByIdProjectAndIdJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getBySegmentTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getFirstSegmentOfFilesInJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getOwnerUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getPeeStats\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getReviewedWordsCountGroupedByFileParts\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:getSegmentTranslationsCount\(\) has parameter \$idJobs with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSegmentTranslationsCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSegmentsCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSplitData\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSplitJobPreparedStatement\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:getTimeToEdit\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -10008,6 +11844,18 @@ parameters: count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:getTimeToEdit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:hasACustomPayableRate\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:updateAllJobsStatusesByProjectId\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -10020,6 +11868,24 @@ parameters: count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:updateJobWeightedPeeAndTTE\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:updateOwner\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:updateStdWcAndTotalWc\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Jobs/JobDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$res JobStruct\)\: Unexpected token "\$res", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -10074,6 +11940,12 @@ parameters: count: 1 path: lib/Model/Jobs/JobStruct.php + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getClientKeys\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + - message: '#^Method Model\\Jobs\\JobStruct\:\:getOpenThreadsCount\(\) has no return type specified\.$#' identifier: missingType.return @@ -10081,8 +11953,20 @@ parameters: path: lib/Model/Jobs/JobStruct.php - - message: '#^Method Model\\Jobs\\JobStruct\:\:getQualityOverall\(\) has parameter \$chunkReviews with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\Jobs\\JobStruct\:\:getOpenThreadsCount\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getOutsource\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getQualityOverall\(\) has parameter \$chunkReviews with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: lib/Model/Jobs/JobStruct.php @@ -10092,12 +11976,48 @@ parameters: count: 1 path: lib/Model/Jobs/JobStruct.php + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getTranslator\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:setIsReview\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + - message: '#^Method Model\\Jobs\\JobStruct\:\:setSourcePage\(\) has parameter \$_revisionNumber with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Jobs/JobStruct.php + - + message: '#^Method Model\\Jobs\\JobStruct\:\:setSourcePage\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\JobDao\:\:getPeeStats\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -10164,6 +12084,12 @@ parameters: count: 1 path: lib/Model/Jobs/MetadataDao.php + - + message: '#^Method Model\\Jobs\\MetadataDao\:\:bulkSet\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/MetadataDao.php + - message: '#^Method Model\\Jobs\\MetadataDao\:\:delete\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -10182,12 +12108,24 @@ parameters: count: 1 path: lib/Model/Jobs/MetadataDao.php + - + message: '#^Method Model\\Jobs\\MetadataDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/MetadataDao.php + - message: '#^Method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Jobs/MetadataDao.php + - + message: '#^Method Model\\Jobs\\MetadataDao\:\:set\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/MetadataDao.php + - message: '#^Unsafe access to private property Model\\Jobs\\MetadataDao\:\:\$__transactionStarted through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -10206,6 +12144,18 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:createRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/CategoryDao.php + + - + message: '#^Method Model\\LQA\\CategoryDao\:\:createRecord\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Method Model\\LQA\\CategoryDao\:\:extractOptions\(\) has parameter \$json with no type specified\.$#' identifier: missingType.parameter @@ -10236,6 +12186,12 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Method Model\\LQA\\CategoryDao\:\:findByIdModelAndIdParent\(\) has parameter \$id_model with no type specified\.$#' identifier: missingType.parameter @@ -10248,6 +12204,12 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:findByIdModelAndIdParent\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Method Model\\LQA\\CategoryDao\:\:getCategoriesAndSeverities\(\) has parameter \$id_model with no type specified\.$#' identifier: missingType.parameter @@ -10260,6 +12222,18 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:getCategoriesAndSeverities\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/CategoryDao.php + + - + message: '#^Method Model\\LQA\\CategoryDao\:\:getCategoriesByModel\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Offset ''id'' might not exist on array\{subcategories\: list\, label\?\: mixed, id\?\: int, options\?\: array, severities\?\: array\}\.$#' identifier: offsetAccess.notFound @@ -10314,6 +12288,12 @@ parameters: count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:_findChunkReviews\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:_findChunkReviewsStatement\(\) has parameter \$chunksArray with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10338,18 +12318,66 @@ parameters: count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:countTimeToEdit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:createRecord\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:createRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:createRecord\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:deleteByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:exists\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByIdJob\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByIdJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByIdJobAndPasswordAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByProjectId\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10374,12 +12402,48 @@ parameters: count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findLastReviewByJobIdPasswordAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:getPenaltyPointsForChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:getReviewedWordsCountForSecondPass\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:isTOrR1OrR2\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:passFailCountsAtomicUpdate\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:updateReviewPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$chunkReview ChunkReviewStruct\)\: Unexpected token "\$chunkReview", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -10434,6 +12498,18 @@ parameters: count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:createComment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/LQA/EntryCommentDao.php + + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:createComment\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Method Model\\LQA\\EntryCommentDao\:\:fetchCommentsGroupedByIssueIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10446,18 +12522,42 @@ parameters: count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:fetchCommentsGroupedByIssueIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Method Model\\LQA\\EntryCommentDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Method Model\\LQA\\EntryCommentDao\:\:findByIssueId\(\) has parameter \$id_issue with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:findByIssueId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryCommentDao.php + + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:move\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Property Model\\LQA\\EntryCommentStruct\:\:\$id \(int\|null\) does not accept string\|false\.$#' identifier: assign.propertyType @@ -10482,24 +12582,90 @@ parameters: count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:createEntry\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:createEntry\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:deleteEntry\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:findAllByChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:findAllByTranslationVersion\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + - message: '#^Method Model\\LQA\\EntryDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:findByIdSegmentAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + - message: '#^Method Model\\LQA\\EntryDao\:\:getBySegmentIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:getBySegmentIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:getIssuesGroupedByIdFilePart\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:modifyEntry\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryDao.php + - message: '#^Method Model\\LQA\\EntryDao\:\:updateRepliesCount\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:updateRepliesCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryDao.php + - message: '#^Property Model\\LQA\\EntryStruct\:\:\$id \(int\|null\) does not accept string\|false\.$#' identifier: assign.propertyType @@ -10536,6 +12702,12 @@ parameters: count: 1 path: lib/Model/LQA/EntryStruct.php + - + message: '#^Method Model\\LQA\\EntryStruct\:\:setDefaults\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryStruct.php + - message: '#^PHPDoc tag @return with type array\|null is not subtype of native type float\|null\.$#' identifier: return.phpDocType @@ -10632,12 +12804,30 @@ parameters: count: 1 path: lib/Model/LQA/ModelDao.php + - + message: '#^Method Model\\LQA\\ModelDao\:\:createRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ModelDao.php + + - + message: '#^Method Model\\LQA\\ModelDao\:\:createRecord\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ModelDao.php + - message: '#^Method Model\\LQA\\ModelDao\:\:decodePassOptions\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/ModelDao.php + - + message: '#^Method Model\\LQA\\ModelDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ModelDao.php + - message: '#^Method Model\\LQA\\ModelDao\:\:insertCategory\(\) has parameter \$category with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10800,6 +12990,30 @@ parameters: count: 1 path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:remove\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:update\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + - message: '#^Parameter \#1 \$date of static method Utils\\Date\\DateTimeUtil\:\:formatIsoDate\(\) expects null, string given\.$#' identifier: argument.type @@ -10908,6 +13122,12 @@ parameters: count: 1 path: lib/Model/LQA/QAModelTemplate/QAModelTemplateStruct.php + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 15 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateStruct.php + - message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10950,6 +13170,18 @@ parameters: count: 1 path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\:\:hydrateFromJSON\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + - message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10962,6 +13194,24 @@ parameters: count: 1 path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:destroyQueryByUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + - message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10987,9 +13237,21 @@ parameters: path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php - - message: '#^PHPDoc tag @return with type Model\\MTQE\\PayableRate\\DTO\\MTQEPayableRateBreakdowns\|null is not subtype of native type Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\|null\.$#' - identifier: return.phpDocType - count: 1 + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^PHPDoc tag @return with type Model\\MTQE\\PayableRate\\DTO\\MTQEPayableRateBreakdowns\|null is not subtype of native type Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\|null\.$#' + identifier: return.phpDocType + count: 1 path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php - @@ -11016,6 +13278,24 @@ parameters: count: 1 path: lib/Model/MTQE/Templates/DTO/MTQEWorkflowParams.php + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:destroyQueryByUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + - message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11040,6 +13320,18 @@ parameters: count: 1 path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + - message: '#^Unsafe access to private property Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:\$instance through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -11058,6 +13350,18 @@ parameters: count: 1 path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + - message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateStruct\:\:hydrateParamsFromDataArray\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11094,6 +13398,12 @@ parameters: count: 1 path: lib/Model/Outsource/ConfirmationDao.php + - + message: '#^Method Model\\Outsource\\ConfirmationDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Outsource/ConfirmationDao.php + - message: '#^Property Model\\Outsource\\ConfirmationDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11172,18 +13482,42 @@ parameters: count: 2 path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:create\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:destroyCacheByIdCustomer\(\) has parameter \$id_customer with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getByIdCustomer\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getByUserId\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getByUserId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - message: '#^Parameter \#1 \$id of method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getById\(\) expects int, string\|false given\.$#' identifier: argument.type @@ -11208,6 +13542,12 @@ parameters: count: 1 path: lib/Model/OwnerFeatures/OwnerFeatureStruct.php + - + message: '#^Method Model\\Pagination\\Pager\:\:_cacheSetConnection\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Pagination/Pager.php + - message: '#^Method Model\\Pagination\\Pager\:\:_deleteCacheByKey\(\) should return bool but returns int\.$#' identifier: return.type @@ -11232,6 +13572,12 @@ parameters: count: 1 path: lib/Model/Pagination/Pager.php + - + message: '#^Method Model\\Pagination\\Pager\:\:count\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Pagination/Pager.php + - message: '#^Method Model\\Pagination\\Pager\:\:format\(\) has parameter \$items with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11250,6 +13596,24 @@ parameters: count: 1 path: lib/Model/Pagination/Pager.php + - + message: '#^Method Model\\Pagination\\Pager\:\:getPagination\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Pagination/Pager.php + + - + message: '#^Method Model\\Pagination\\Pager\:\:getPagination\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Pagination/Pager.php + + - + message: '#^Method Model\\Pagination\\Pager\:\:getPagination\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Pagination/Pager.php + - message: '#^Parameter \#1 \$key of method Predis\\ClientInterface\:\:get\(\) expects string, int given\.$#' identifier: argument.type @@ -11286,6 +13650,12 @@ parameters: count: 1 path: lib/Model/Pagination/PaginationParameters.php + - + message: '#^Method Model\\Pagination\\PaginationParameters\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Pagination/PaginationParameters.php + - message: '#^Method Model\\Pagination\\PaginationParameters\:\:getBindParams\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11340,6 +13710,24 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateDao.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:assocModelToJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/PayableRates/CustomPayableRateDao.php + + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateDao.php + + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateDao.php + - message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11358,6 +13746,18 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateDao.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/PayableRates/CustomPayableRateDao.php + + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result CustomPayableRateStruct\[\]\)\: Unexpected token "\$result", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -11424,12 +13824,24 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:getBreakdownsArray\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateStruct.php + - message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:getPayableRates\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/PayableRates/CustomPayableRateStruct.php + - message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11448,6 +13860,12 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:validateLanguage\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateStruct.php + - message: '#^Parameter \#1 \$date of static method Utils\\Date\\DateTimeUtil\:\:formatIsoDate\(\) expects null, string given\.$#' identifier: argument.type @@ -11466,6 +13884,12 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\ProjectCreation\\JobCreationService\:\:buildTmKeysJson\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ProjectCreation/JobCreationService.php + - message: '#^Property Model\\ProjectCreation\\ProjectStructure\:\:\$instance_id \(int\) on left side of \?\? is not nullable\.$#' identifier: nullCoalesce.property @@ -11484,12 +13908,24 @@ parameters: count: 1 path: lib/Model/ProjectCreation/SegmentExtractor.php + - + message: '#^Method Model\\ProjectCreation\\SegmentExtractor\:\:persistXliffFileAttributes\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ProjectCreation/SegmentExtractor.php + - message: '#^Result of \|\| is always true\.$#' identifier: booleanOr.alwaysTrue count: 1 path: lib/Model/ProjectCreation/SegmentExtractor.php + - + message: '#^Method Model\\ProjectCreation\\SegmentStorageService\:\:linkSegmentIdsToRelatedData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ProjectCreation/SegmentStorageService.php + - message: '#^Parameter \#1 \$id_segment of method Model\\ProjectCreation\\SegmentStorageService\:\:insertOriginalDataRecord\(\) expects int, int\|string given\.$#' identifier: argument.type @@ -11502,12 +13938,24 @@ parameters: count: 1 path: lib/Model/ProjectCreation/SegmentStorageService.php + - + message: '#^Method Model\\ProjectCreation\\TmKeyService\:\:setPrivateTMKeys\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ProjectCreation/TmKeyService.php + - message: '#^Method Model\\Projects\\ManageModel\:\:_getProjects\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ManageModel.php + - + message: '#^Method Model\\Projects\\ManageModel\:\:_getProjects\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ManageModel.php + - message: '#^Method Model\\Projects\\ManageModel\:\:conditionsForProjectsQuery\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11556,6 +14004,12 @@ parameters: count: 1 path: lib/Model/Projects/ManageModel.php + - + message: '#^Method Model\\Projects\\ManageModel\:\:getProjectsNumber\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ManageModel.php + - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' identifier: argument.type @@ -11574,6 +14028,24 @@ parameters: count: 1 path: lib/Model/Projects/MetadataDao.php + - + message: '#^Method Model\\Projects\\MetadataDao\:\:allByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/MetadataDao.php + + - + message: '#^Method Model\\Projects\\MetadataDao\:\:bulkSet\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/MetadataDao.php + + - + message: '#^Method Model\\Projects\\MetadataDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/MetadataDao.php + - message: '#^Method Model\\Projects\\MetadataDao\:\:getProjectStaticSubfilteringCustomHandlers\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11586,6 +14058,12 @@ parameters: count: 1 path: lib/Model/Projects/MetadataDao.php + - + message: '#^Method Model\\Projects\\MetadataDao\:\:set\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/MetadataDao.php + - message: '#^Using nullsafe property access "\?\-\>value" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' identifier: nullsafe.neverNull @@ -11604,12 +14082,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:assignToAssignee\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:assignToTeam\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:assignToTeam\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:changeProjectStatus\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -11622,6 +14112,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:deleteFailedProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:destroyCacheById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:destroyCacheByIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:destroyCacheForProjectData\(\) has parameter \$jid with no type specified\.$#' identifier: missingType.parameter @@ -11646,12 +14154,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:exists\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdAndPassword\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -11664,18 +14184,42 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdCustomer\(\) has parameter \$id_customer with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdCustomer\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findByTeamId\(\) has parameter \$filter with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByTeamId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getByIdList\(\) has parameter \$id_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11688,6 +14232,12 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getByIdList\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getJobIds\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -11700,6 +14250,12 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getJobIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getPasswordsMap\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -11712,30 +14268,72 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getPasswordsMap\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getProjectAndJobData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getProjectAndJobData\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getRemoteFileServiceName\(\) has parameter \$project_ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getRemoteFileServiceName\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getTotalCountByTeamId\(\) has parameter \$filter with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getTotalCountByTeamId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:isGDriveProject\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:isGDriveProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:massiveSelfAssignment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:unassignProjects\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:uncompletedChunksByProjectId\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -11766,12 +14364,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:updateAnalysisStatus\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:updateField\(\) has parameter \$value with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:updateField\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^PHPDoc tag @return has invalid value \(ProjectStruct\[\]\|IDaoStruct\[\]\|\[\]\)\: Unexpected token "\[", expected type at offset 84 on line 4$#' identifier: phpDoc.parseError @@ -11904,6 +14514,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectStruct.php + - + message: '#^Method Model\\Projects\\ProjectStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectStruct.php + + - + message: '#^Method Model\\Projects\\ProjectStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectStruct.php + + - + message: '#^Method Model\\Projects\\ProjectStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectStruct.php + - message: '#^Parameter \#1 \$id of method Model\\Projects\\MetadataDao\:\:allByProjectId\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -11935,23 +14563,71 @@ parameters: path: lib/Model/Projects/ProjectStruct.php - - message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:destroyDefaultTemplateCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Model/Projects/ProjectTemplateDao.php - - message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getDefaultTemplate\(\) has parameter \$uid with no type specified\.$#' + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getDefaultTemplate\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectTemplateDao.php + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getDefaultTemplate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Projects/ProjectTemplateDao.php + - message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getUserDefaultMt\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectTemplateDao.php + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:markAsNotDefault\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:removeSubTemplateByIdAndUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result ProjectTemplateStruct\[\]\)\: Unexpected token "\$result", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -12156,6 +14832,12 @@ parameters: count: 1 path: lib/Model/Projects/ProjectTemplateStruct.php + - + message: '#^Method Model\\Projects\\ProjectTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 24 + path: lib/Model/Projects/ProjectTemplateStruct.php + - message: '#^Method Model\\Projects\\ProjectTemplateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12276,6 +14958,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportDao.php + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getAverages\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + - message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getIssuesBySegments\(\) has parameter \$segments_id with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12288,12 +14976,30 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportDao.php + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getIssuesBySegments\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getReviseIssuesByChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + - message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getSegmentsForQualityReport\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/QualityReport/QualityReportDao.php + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getSegmentsForQualityReport\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + - message: '#^Cannot call method fullName\(\) on Model\\Users\\UserStruct\|null\.$#' identifier: method.nonObject @@ -12342,6 +15048,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportModel.php + - + message: '#^Method Model\\QualityReport\\QualityReportModel\:\:resetScore\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/QualityReport/QualityReportModel.php + - message: '#^Method Model\\QualityReport\\QualityReportModel\:\:structureNestComment\(\) has parameter \$record with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12426,6 +15138,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportSegmentModel.php + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_assignComments\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + - message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_assignIssues\(\) has no return type specified\.$#' identifier: missingType.return @@ -12456,6 +15174,24 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportSegmentModel.php + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_commonSegmentAssignments\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_getChunkReviews\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_populateLastTranslationAndRevision\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + - message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:getSegmentsForQR\(\) has parameter \$segment_ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12534,6 +15270,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportSegmentStruct.php + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentStruct\:\:getSecsPerWord\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentStruct.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -12594,6 +15336,36 @@ parameters: count: 1 path: lib/Model/RemoteFiles/RemoteFileDao.php + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getByFileAndJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getByFileId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getOriginalsByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:jobHasRemoteFiles\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + - message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:getFeedback\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -12612,18 +15384,66 @@ parameters: count: 1 path: lib/Model/ReviseFeedback/FeedbackDAO.php + - + message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:getFeedback\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ReviseFeedback/FeedbackDAO.php + + - + message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:insertOrUpdate\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ReviseFeedback/FeedbackDAO.php + + - + message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:updateFeedbackPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ReviseFeedback/FeedbackDAO.php + - message: '#^Expression on left side of \?\? is not nullable\.$#' identifier: nullCoalesce.expr count: 1 path: lib/Model/Search/MySQLReplaceEventDAO.php + - + message: '#^Method Model\\Search\\MySQLReplaceEventDAO\:\:getEvents\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventDAO.php + + - + message: '#^Method Model\\Search\\MySQLReplaceEventDAO\:\:save\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventDAO.php + + - + message: '#^Method Model\\Search\\MySQLReplaceEventIndexDAO\:\:getActualIndex\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventIndexDAO.php + + - + message: '#^Method Model\\Search\\MySQLReplaceEventIndexDAO\:\:save\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventIndexDAO.php + - message: '#^Call to an undefined method Predis\\Client\:\:hgetAll\(\)\.$#' identifier: method.notFound count: 1 path: lib/Model/Search/RedisReplaceEventDAO.php + - + message: '#^Method Model\\Search\\RedisReplaceEventDAO\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Search/RedisReplaceEventDAO.php + - message: '#^Parameter \#2 \$field of method Predis\\ClientInterface\:\:hset\(\) expects string, int given\.$#' identifier: argument.type @@ -12642,6 +15462,12 @@ parameters: count: 1 path: lib/Model/Search/RedisReplaceEventDAO.php + - + message: '#^Method Model\\Search\\RedisReplaceEventIndexDAO\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Search/RedisReplaceEventIndexDAO.php + - message: '#^PHPDoc tag @return with type mixed is not subtype of native type int\.$#' identifier: return.phpDocType @@ -12660,6 +15486,12 @@ parameters: count: 1 path: lib/Model/Search/SearchModel.php + - + message: '#^Method Model\\Search\\SearchModel\:\:_loadParams\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Search/SearchModel.php + - message: '#^Method Model\\Search\\SearchModel\:\:find\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12756,6 +15588,24 @@ parameters: count: 1 path: lib/Model/Segments/ContextStruct.php + - + message: '#^Method Model\\Segments\\ContextStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/ContextStruct.php + + - + message: '#^Method Model\\Segments\\ContextStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/ContextStruct.php + + - + message: '#^Method Model\\Segments\\ContextStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/ContextStruct.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, array\|string given\.$#' identifier: argument.type @@ -12780,6 +15630,30 @@ parameters: count: 2 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:countByFile\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getByChunkId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getByChunkIdAndSegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getContextAndSegmentByIDs\(\) has parameter \$id_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12792,18 +15666,48 @@ parameters: count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getNextSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getPaginationSegments\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getPaginationSegments\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsDownload\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsDownload\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForAnalysisFromIdJobAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForAnalysisFromIdProjectAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForQr\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -12822,6 +15726,12 @@ parameters: count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForQr\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsIdForQR\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12864,12 +15774,36 @@ parameters: count: 1 path: lib/Model/Segments/SegmentMetadataDao.php + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:get\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentMetadataDao.php + + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:getAll\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentMetadataDao.php + - message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:getBySegmentIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentMetadataDao.php + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:getBySegmentIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentMetadataDao.php + + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:save\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Segments/SegmentMetadataDao.php + - message: '#^Method Model\\Segments\\SegmentNoteDao\:\:_buildResult\(\) has no return type specified\.$#' identifier: missingType.return @@ -12888,18 +15822,54 @@ parameters: count: 1 path: lib/Model/Segments/SegmentNoteDao.php + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getAggregatedBySegmentIdInInterval\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Segments/SegmentNoteDao.php + - message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getAllAggregatedBySegmentIdInInterval\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentNoteDao.php + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getAllAggregatedBySegmentIdInInterval\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Segments/SegmentNoteDao.php + + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getBySegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentNoteDao.php + - message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getBySegmentIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentNoteDao.php + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getBySegmentIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentNoteDao.php + + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getJsonNotesByRange\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentNoteDao.php + + - + message: '#^Method Model\\Segments\\SegmentOriginalDataDao\:\:getBySegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentOriginalDataDao.php + - message: '#^Method Model\\Segments\\SegmentOriginalDataDao\:\:getSegmentDataRefMap\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12912,6 +15882,12 @@ parameters: count: 1 path: lib/Model/Segments/SegmentOriginalDataDao.php + - + message: '#^Method Model\\Segments\\SegmentOriginalDataDao\:\:insertRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Segments/SegmentOriginalDataDao.php + - message: '#^Parameter \#1 \$string of function trim expects string, string\|null given\.$#' identifier: argument.type @@ -12930,12 +15906,24 @@ parameters: count: 1 path: lib/Model/Segments/SegmentOriginalDataStruct.php + - + message: '#^Method Model\\Segments\\SegmentOriginalDataStruct\:\:getMap\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentOriginalDataStruct.php + - message: '#^Method Model\\Segments\\SegmentOriginalDataStruct\:\:setMap\(\) has parameter \$map with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentOriginalDataStruct.php + - + message: '#^Method Model\\Segments\\SegmentOriginalDataStruct\:\:setMap\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentOriginalDataStruct.php + - message: '#^Property Model\\Segments\\SegmentOriginalDataStruct\:\:\$decoded_map type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12954,12 +15942,48 @@ parameters: count: 1 path: lib/Model/Segments/SegmentStruct.php + - + message: '#^Method Model\\Segments\\SegmentStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentStruct.php + + - + message: '#^Method Model\\Segments\\SegmentStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentStruct.php + + - + message: '#^Method Model\\Segments\\SegmentStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentStruct.php + - message: '#^Class Model\\Segments\\SegmentUIStruct implements generic interface ArrayAccess but does not specify its types\: TKey, TValue$#' identifier: missingType.generics count: 1 path: lib/Model/Segments/SegmentUIStruct.php + - + message: '#^Method Model\\Segments\\SegmentUIStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentUIStruct.php + + - + message: '#^Method Model\\Segments\\SegmentUIStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentUIStruct.php + + - + message: '#^Method Model\\Segments\\SegmentUIStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentUIStruct.php + - message: '#^Property Model\\Segments\\SegmentUIStruct\:\:\$data_ref_map type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13002,24 +16026,54 @@ parameters: count: 1 path: lib/Model/TMSService/TMSServiceDao.php + - + message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getMTForTMXExport\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/TMSService/TMSServiceDao.php + - message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTMForTMXExport\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/TMSService/TMSServiceDao.php + - + message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTMForTMXExport\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/TMSService/TMSServiceDao.php + - message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTranslationsForTMXExport\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/TMSService/TMSServiceDao.php + - + message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTranslationsForTMXExport\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/TMSService/TMSServiceDao.php + - message: '#^Method Model\\Teams\\InvitedUser\:\:completeTeamSignUp\(\) has parameter \$invitation with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/InvitedUser.php + - + message: '#^Method Model\\Teams\\InvitedUser\:\:completeTeamSignUp\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Teams/InvitedUser.php + + - + message: '#^Method Model\\Teams\\InvitedUser\:\:hasPendingInvitations\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/InvitedUser.php + - message: '#^Parameter \#1 \$struct of class Model\\Teams\\TeamModel constructor expects Model\\Teams\\TeamStruct, Model\\Teams\\TeamStruct\|null given\.$#' identifier: argument.type @@ -13044,6 +16098,12 @@ parameters: count: 1 path: lib/Model/Teams/MembershipDao.php + - + message: '#^Method Model\\Teams\\MembershipDao\:\:deleteUserFromTeam\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Teams/MembershipDao.php + - message: '#^Method Model\\Teams\\MembershipDao\:\:findById\(\) has no return type specified\.$#' identifier: missingType.return @@ -13056,6 +16116,12 @@ parameters: count: 1 path: lib/Model/Teams/MembershipDao.php + - + message: '#^Method Model\\Teams\\MembershipDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Teams/MembershipDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$members MembershipStruct\[\]\)\: Unexpected token "\$members", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -13134,18 +16200,54 @@ parameters: count: 1 path: lib/Model/Teams/PendingInvitations.php + - + message: '#^Method Model\\Teams\\TeamDao\:\:createPersonalTeam\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamDao.php + - message: '#^Method Model\\Teams\\TeamDao\:\:createUserTeam\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/TeamDao.php + - + message: '#^Method Model\\Teams\\TeamDao\:\:createUserTeam\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamDao.php + + - + message: '#^Method Model\\Teams\\TeamDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Teams/TeamDao.php + + - + message: '#^Method Model\\Teams\\TeamDao\:\:deleteTeam\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Teams/TeamDao.php + + - + message: '#^Method Model\\Teams\\TeamDao\:\:destroyCacheUserCreatedTeams\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamDao.php + - message: '#^Method Model\\Teams\\TeamDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Teams/TeamDao.php + - + message: '#^Method Model\\Teams\\TeamDao\:\:updateTeamName\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Teams/TeamDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$res TeamStruct\)\: Unexpected token "\$res", expected type at offset 9 on line 1$#' identifier: phpDoc.parseError @@ -13194,18 +16296,60 @@ parameters: count: 1 path: lib/Model/Teams/TeamModel.php + - + message: '#^Method Model\\Teams\\TeamModel\:\:_checkAddMembersToPersonalTeam\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_checkPersonalUnique\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_checkType\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_createTeamWithMatecatUsers\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_createTeamWithMatecatUsers\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Teams/TeamModel.php + - message: '#^Method Model\\Teams\\TeamModel\:\:_getInvitedEmails\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/TeamModel.php + - + message: '#^Method Model\\Teams\\TeamModel\:\:_getInvitedEmails\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + - message: '#^Method Model\\Teams\\TeamModel\:\:_getRemovedMembersEmailList\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/TeamModel.php + - + message: '#^Method Model\\Teams\\TeamModel\:\:_setPendingStatuses\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + - message: '#^Method Model\\Teams\\TeamModel\:\:addMemberEmails\(\) has parameter \$emails with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13446,6 +16590,12 @@ parameters: count: 1 path: lib/Model/TmKeyManagement/UserKeysModel.php + - + message: '#^Method Model\\TmKeyManagement\\UserKeysModel\:\:getKeys\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/TmKeyManagement/UserKeysModel.php + - message: '#^PHPDoc tag @var has invalid value \(\$_client_tm_key TmKeyStruct\)\: Unexpected token "\$_client_tm_key", expected type at offset 24 on line 2$#' identifier: phpDoc.parseError @@ -13488,6 +16638,18 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:addTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Translations/SegmentTranslationDao.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:findBySegmentAndJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getAllSegmentsByIdListAndJobId\(\) has parameter \$id_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13500,6 +16662,24 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getAllSegmentsByIdListAndJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationDao.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getByFile\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getLast10TranslatedSegmentIDsInLastHour\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13512,6 +16692,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getMaxSegmentIdsFromJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getUnchangeableStatus\(\) has parameter \$segments_ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13536,6 +16722,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getWordsPerSecond\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:propagateTranslation\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13548,12 +16740,24 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:rebuildFromReplaceEvents\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:setAnalysisValue\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:setAnalysisValue\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateFirstTimeOpenedContribution\(\) has parameter \$data with no type specified\.$#' identifier: missingType.parameter @@ -13572,6 +16776,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateLastTranslationDateByIdList\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateSuggestionsArray\(\) has parameter \$id_segment with no type specified\.$#' identifier: missingType.parameter @@ -13584,6 +16794,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateSuggestionsArray\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result SegmentTranslationStruct\[\]\)\: Unexpected token "\$result", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -13626,6 +16842,24 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationStruct.php + - + message: '#^Method Model\\Translations\\SegmentTranslationStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationStruct.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationStruct.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationStruct.php + - message: '#^PHPDoc tag @return with type array\\|null is not subtype of native type Model\\Jobs\\JobStruct\|null\.$#' identifier: return.phpDocType @@ -13644,6 +16878,12 @@ parameters: count: 1 path: lib/Model/Translations/WarningDao.php + - + message: '#^Method Model\\Translations\\WarningDao\:\:getErrorsByChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Translations/WarningDao.php + - message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByJobIdAndPassword\(\) has parameter \$jid with no type specified\.$#' identifier: missingType.parameter @@ -13662,6 +16902,12 @@ parameters: count: 1 path: lib/Model/Translations/WarningDao.php + - + message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByJobIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/WarningDao.php + - message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByProjectIds\(\) has parameter \$projectIds with no type specified\.$#' identifier: missingType.parameter @@ -13674,6 +16920,12 @@ parameters: count: 1 path: lib/Model/Translations/WarningDao.php + - + message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByProjectIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/WarningDao.php + - message: '#^Property Model\\TranslationsSplit\\SegmentSplitStruct\:\:\$source_chunk_lengths type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13698,6 +16950,12 @@ parameters: count: 1 path: lib/Model/TranslationsSplit/SplitDAO.php + - + message: '#^Method Model\\TranslationsSplit\\SplitDAO\:\:_validatePrimaryKey\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Model/TranslationsSplit/SplitDAO.php + - message: '#^Property Model\\TranslationsSplit\\SegmentSplitStruct\:\:\$source_chunk_lengths \(array\|string\) does not accept string\|false\|null\.$#' identifier: assign.propertyType @@ -13740,6 +16998,12 @@ parameters: count: 1 path: lib/Model/Translators/TranslatorsModel.php + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translators/TranslatorsModel.php + - message: '#^Method Model\\Translators\\TranslatorsModel\:\:getTranslator\(\) has no return type specified\.$#' identifier: missingType.return @@ -13752,6 +17016,24 @@ parameters: count: 1 path: lib/Model/Translators/TranslatorsModel.php + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:saveProfile\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translators/TranslatorsModel.php + + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:setDeliveryDate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Translators/TranslatorsModel.php + + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:update\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Translators/TranslatorsModel.php + - message: '#^PHPDoc tag @param for parameter \$job_password with type mixed is not subtype of native type string\.$#' identifier: parameter.phpDocType @@ -13878,6 +17160,12 @@ parameters: count: 1 path: lib/Model/Users/Authentication/OAuthSignInModel.php + - + message: '#^Method Model\\Users\\Authentication\\OAuthSignInModel\:\:_createNewUser\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/Authentication/OAuthSignInModel.php + - message: '#^Parameter \#1 \$email of method Model\\Users\\UserDao\:\:getByEmail\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -13908,6 +17196,12 @@ parameters: count: 1 path: lib/Model/Users/Authentication/PasswordResetModel.php + - + message: '#^Method Model\\Users\\Authentication\\PasswordResetModel\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/Authentication/PasswordResetModel.php + - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' identifier: argument.type @@ -13938,6 +17232,12 @@ parameters: count: 1 path: lib/Model/Users/Authentication/SignupModel.php + - + message: '#^Method Model\\Users\\Authentication\\SignupModel\:\:processSignup\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/Authentication/SignupModel.php + - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' identifier: argument.type @@ -13998,6 +17298,12 @@ parameters: count: 1 path: lib/Model/Users/MetadataDao.php + - + message: '#^Method Model\\Users\\MetadataDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Users/MetadataDao.php + - message: '#^Method Model\\Users\\MetadataDao\:\:destroyCacheKey\(\) has parameter \$key with no type specified\.$#' identifier: missingType.parameter @@ -14034,6 +17340,12 @@ parameters: count: 1 path: lib/Model/Users/MetadataDao.php + - + message: '#^Method Model\\Users\\MetadataDao\:\:getAllByUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/MetadataDao.php + - message: '#^Method Model\\Users\\MetadataDao\:\:getAllByUidList\(\) has parameter \$UIDs with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14052,6 +17364,12 @@ parameters: count: 1 path: lib/Model/Users/MetadataDao.php + - + message: '#^Method Model\\Users\\MetadataDao\:\:set\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Users/MetadataDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result MetadataStruct\)\: Unexpected token "\$result", expected type at offset 9 on line 1$#' identifier: phpDoc.parseError @@ -14124,6 +17442,12 @@ parameters: count: 1 path: lib/Model/Users/RedeemableProject.php + - + message: '#^Method Model\\Users\\RedeemableProject\:\:tryToRedeem\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/RedeemableProject.php + - message: '#^Parameter \#1 \$project of method Model\\Jobs\\JobDao\:\:updateOwner\(\) expects Model\\Projects\\ProjectStruct, Model\\Projects\\ProjectStruct\|null given\.$#' identifier: argument.type @@ -14154,12 +17478,30 @@ parameters: count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:createUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/UserDao.php + + - + message: '#^Method Model\\Users\\UserDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:destroyCacheByEmail\(\) has parameter \$email with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:destroyCacheByEmail\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:destroyCacheByUid\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter @@ -14172,6 +17514,18 @@ parameters: count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:getByConfirmationToken\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/UserDao.php + + - + message: '#^Method Model\\Users\\UserDao\:\:getByEmails\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:getByUid\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -14184,12 +17538,24 @@ parameters: count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:getProjectOwner\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:updateUser\(\) should return Model\\Users\\UserStruct but returns Model\\Users\\UserStruct\|null\.$#' identifier: return.type count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:updateUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Users/UserDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$__resultSet UserStruct\[\]\)\: Unexpected token "\$__resultSet", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -14280,6 +17646,24 @@ parameters: count: 1 path: lib/Model/Warnings/GlobalWarningStruct.php + - + message: '#^Method Model\\Warnings\\GlobalWarningStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Warnings/GlobalWarningStruct.php + + - + message: '#^Method Model\\Warnings\\GlobalWarningStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Warnings/GlobalWarningStruct.php + + - + message: '#^Method Model\\Warnings\\GlobalWarningStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Warnings/GlobalWarningStruct.php + - message: '#^Cannot call method getApproved2RawWords\(\) on Model\\WordCount\\WordCountStruct\|null\.$#' identifier: method.nonObject @@ -14370,6 +17754,18 @@ parameters: count: 1 path: lib/Model/WordCount/CounterModel.php + - + message: '#^Method Model\\WordCount\\CounterModel\:\:_verifyStatus\(\) throws checked exception BadMethodCallException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/CounterModel.php + + - + message: '#^Method Model\\WordCount\\CounterModel\:\:getUpdatedValues\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/CounterModel.php + - message: '#^Method Model\\WordCount\\CounterModel\:\:methodNameForStatusCall\(\) has parameter \$name with no type specified\.$#' identifier: missingType.parameter @@ -14388,6 +17784,12 @@ parameters: count: 1 path: lib/Model/WordCount/WordCountStruct.php + - + message: '#^Method Model\\WordCount\\WordCountStruct\:\:loadFromJob\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/WordCountStruct.php + - message: '#^Method Model\\WordCount\\WordCountStruct\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14406,12 +17808,24 @@ parameters: count: 1 path: lib/Model/WordCount/WordCounterDao.php + - + message: '#^Method Model\\WordCount\\WordCounterDao\:\:getStatsForJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/WordCount/WordCounterDao.php + - message: '#^Method Model\\WordCount\\WordCounterDao\:\:initializeWordCount\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Model/WordCount/WordCounterDao.php + - + message: '#^Method Model\\WordCount\\WordCounterDao\:\:updateWordCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/WordCounterDao.php + - message: '#^Cannot assign new offset to string\.$#' identifier: offsetAssign.dimType @@ -14460,12 +17874,36 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setAnalysis\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setEditor\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setMatchCategory\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setStates\(\) has parameter \$states with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setStates\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, string given\.$#' identifier: argument.type @@ -14502,6 +17940,18 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - + message: '#^Method Model\\Xliff\\DTO\\DefaultRule\:\:isTranslated\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Xliff/DTO/DefaultRule.php + + - + message: '#^Method Model\\Xliff\\DTO\\DefaultRule\:\:setAnalysis\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/DefaultRule.php + - message: '#^Property Model\\Xliff\\DTO\\DefaultRule\:\:\$_STATES type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14556,6 +18006,12 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/XliffRulesModel.php + - + message: '#^Method Model\\Xliff\\DTO\\XliffRulesModel\:\:getRulesForVersion\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/XliffRulesModel.php + - message: '#^Method Model\\Xliff\\DTO\\XliffRulesModel\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14580,6 +18036,24 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/XliffRulesModel.php + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:destroyQueryByIdAndUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:destroyQueryByUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + - message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14604,6 +18078,24 @@ parameters: count: 1 path: lib/Model/Xliff/XliffConfigTemplateDao.php + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + - message: '#^Property Model\\Xliff\\XliffConfigTemplateStruct\:\:\$id \(int\) does not accept string\|false\.$#' identifier: assign.propertyType @@ -14622,6 +18114,12 @@ parameters: count: 1 path: lib/Model/Xliff/XliffConfigTemplateDao.php + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Xliff/XliffConfigTemplateStruct.php + - message: '#^Method Model\\Xliff\\XliffConfigTemplateStruct\:\:hydrateRulesFromDataArray\(\) has parameter \$rules with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14664,6 +18162,12 @@ parameters: count: 1 path: lib/Plugins/Features/AbstractRevisionFeature.php + - + message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:alter_chunk_review_struct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/AbstractRevisionFeature.php + - message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:createQaChunkReviewRecords\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14706,6 +18210,12 @@ parameters: count: 1 path: lib/Plugins/Features/AbstractRevisionFeature.php + - + message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:postProjectCreate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/AbstractRevisionFeature.php + - message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:project_completion_event_saved\(\) has parameter \$completion_event_id with no type specified\.$#' identifier: missingType.parameter @@ -14892,6 +18402,12 @@ parameters: count: 1 path: lib/Plugins/Features/ProjectCompletion.php + - + message: '#^Method Plugins\\Features\\ProjectCompletion\:\:postAddSegmentTranslation\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/ProjectCompletion.php + - message: '#^Parameter \#1 \$id_job of method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:updatePassword\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -14964,6 +18480,12 @@ parameters: count: 1 path: lib/Plugins/Features/ProjectCompletion/Decorator/CatDecorator.php + - + message: '#^Method Plugins\\Features\\ProjectCompletion\\Model\\EventModel\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ProjectCompletion/Model/EventModel.php + - message: '#^Parameter \#1 \$project of method Model\\FeaturesBase\\FeatureSet\:\:loadForProject\(\) expects Model\\Projects\\ProjectStruct, Model\\Projects\\ProjectStruct\|null given\.$#' identifier: argument.type @@ -14988,6 +18510,12 @@ parameters: count: 1 path: lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php + - + message: '#^Method Plugins\\Features\\ProjectCompletion\\Model\\ProjectCompletionStatusModel\:\:getStatus\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php + - message: '#^Method Plugins\\Features\\ProjectCompletion\\Model\\ProjectCompletionStatusModel\:\:populateStatus\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15012,12 +18540,24 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:getOrCreateChunkReviews\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - message: '#^Method Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:setPreparedEvents\(\) has parameter \$prepared_events with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:updateJobWordCounter\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - message: '#^PHPDoc tag @var for property Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:\$chunk with type mixed is not subtype of native type Model\\Jobs\\JobStruct\.$#' identifier: property.phpDocType @@ -15078,6 +18618,12 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\ChunkReviewModel\:\:recountAndUpdatePassFailResult\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php + - message: '#^Parameter \#1 \$chunkReviewID of method Model\\LQA\\ChunkReviewDao\:\:passFailCountsAtomicUpdate\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -15186,6 +18732,12 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/ReviewUtils.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\ReviewUtils\:\:validRevisionNumbers\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ReviewExtended/ReviewUtils.php + - message: '#^Unreachable statement \- code above always terminates\.$#' identifier: deadCode.unreachable @@ -15336,6 +18888,18 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\TranslationIssueModel\:\:__construct\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + + - + message: '#^Method Plugins\\Features\\ReviewExtended\\TranslationIssueModel\:\:saveDiff\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + - message: '#^Method Plugins\\Features\\ReviewExtended\\TranslationIssueModel\:\:setDiff\(\) has parameter \$diff with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15450,12 +19014,30 @@ parameters: count: 1 path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + - + message: '#^Method Plugins\\Features\\SegmentFilter\\Model\\SegmentFilterDao\:\:__getLimit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + - message: '#^Method Plugins\\Features\\SegmentFilter\\Model\\SegmentFilterDao\:\:_buildResult\(\) has parameter \$array_result with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + - + message: '#^Method Plugins\\Features\\SegmentFilter\\Model\\SegmentFilterDao\:\:getSqlForRegularIntervals\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEvent\:\:__construct\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEvent.php + - message: '#^Parameter \#1 \$id_job of method Model\\Segments\\SegmentDao\:\:getByChunkIdAndSegmentId\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -15486,6 +19068,12 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getAllFinalRevisionsForSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getLatestEventForSegment\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -15498,6 +19086,18 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getLatestEventForSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getLatestEventsInSegmentInterval\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getTteForSegments\(\) has parameter \$id_segment_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15516,6 +19116,12 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:unsetFinalRevisionFlag\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - message: '#^Property Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15534,6 +19140,18 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\TranslationEventsHandler\:\:prepareEventStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + + - + message: '#^Method Plugins\\Features\\TranslationEvents\\TranslationEventsHandler\:\:saveEvent\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + - message: '#^Property Plugins\\Features\\TranslationEvents\\Model\\TranslationEventStruct\:\:\$final_revision \(int\) does not accept bool\.$#' identifier: assign.propertyType @@ -15570,12 +19188,24 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Handlers/DummyTranslationVersionHandler.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:propagateTranslation\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:saveVersion\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:storeTranslationEvent\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15624,6 +19254,12 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getAllRelevantEvents\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getLastRevisionsBySegmentsAndSourcePage\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -15642,18 +19278,42 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getLastRevisionsBySegmentsAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionNumberForTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForChunk\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForJob\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForRevision\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -15666,6 +19326,24 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForRevision\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForRevision\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:insertVersionRecords\(\) has no return type specified\.$#' identifier: missingType.return @@ -15678,18 +19356,42 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:insertVersionRecords\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:insertVersionRecords\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:saveVersion\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:saveVersion\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:updateVersion\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:updateVersion\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Parameter \$segmentsToUpdate of method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:savePropagationVersions\(\) has invalid type Plugins\\Features\\TranslationVersions\\Model\\Propagation_PropagationTotalStruct\.$#' identifier: class.notFound @@ -15846,6 +19548,18 @@ parameters: count: 1 path: lib/Utils/ActiveMQ/AMQHandler.php + - + message: '#^Method Utils\\ActiveMQ\\AMQHandler\:\:getNewInstanceForDaemons\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/AMQHandler.php + + - + message: '#^Method Utils\\ActiveMQ\\AMQHandler\:\:getRedisClient\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/AMQHandler.php + - message: '#^Method Utils\\ActiveMQ\\AMQHandler\:\:subscribe\(\) has parameter \$header with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15882,6 +19596,18 @@ parameters: count: 1 path: lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + - + message: '#^Method Utils\\ActiveMQ\\ClientHelpers\\ProjectQueue\:\:getPublishedResults\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + + - + message: '#^Method Utils\\ActiveMQ\\ClientHelpers\\ProjectQueue\:\:publishResults\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + - message: '#^Method Utils\\ActiveMQ\\WorkerClient\:\:enqueue\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15906,6 +19632,12 @@ parameters: count: 1 path: lib/Utils/ActiveMQ/WorkerClient.php + - + message: '#^Method Utils\\ActiveMQ\\WorkerClient\:\:enqueueWithClient\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/WorkerClient.php + - message: '#^Property Utils\\ActiveMQ\\WorkerClient\:\:\$_QUEUES type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15942,6 +19674,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\AIAssistantWorker\:\:alternative_translations\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\AIAssistantWorker\:\:emitErrorMessage\(\) has parameter \$payload with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -16080,6 +19818,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:_getLockProjectForVolumeAnalysis\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:_getSegmentsForFastVolumeAnalysis\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -16152,12 +19896,24 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:getProjectSegmentsTranslationSummary\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:main\(\) has parameter \$args with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:main\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - message: '#^PHPDoc tag @var has invalid value \(\$myMemory MyMemory\)\: Unexpected token "\$myMemory", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -16284,6 +20040,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:_endQueueCallback\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:_getMT\(\) has parameter \$_config with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -16386,6 +20148,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:_tryToCloseProject\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:getProjectSegmentsTranslationSummary\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -16398,6 +20166,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:getProjectSegmentsTranslationSummary\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:initPostProcess\(\) has parameter \$source_lang with no type specified\.$#' identifier: missingType.parameter @@ -16944,6 +20718,18 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/GlossaryWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\JobsWorker\:\:_recountAvgPee\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/JobsWorker.php + + - + message: '#^Method Utils\\AsyncTasks\\Workers\\JobsWorker\:\:process\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/JobsWorker.php + - message: '#^Parameter \#1 \$queueElement of method Utils\\AsyncTasks\\Workers\\JobsWorker\:\:_checkForReQueueEnd\(\) expects Utils\\TaskRunner\\Commons\\QueueElement, Utils\\TaskRunner\\Commons\\AbstractElement given\.$#' identifier: argument.type @@ -17460,6 +21246,12 @@ parameters: count: 1 path: lib/Utils/Currency/ChangeRatesFetcher.php + - + message: '#^Method Utils\\Currency\\TranslatedChangeRatesFetcher\:\:fetchChangeRates\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Currency/TranslatedChangeRatesFetcher.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' identifier: argument.type @@ -17676,6 +21468,12 @@ parameters: count: 1 path: lib/Utils/Email/ProjectAssignedEmail.php + - + message: '#^Method Utils\\Email\\ProjectAssignedEmail\:\:_getTemplateVariables\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Email/ProjectAssignedEmail.php + - message: '#^Parameter \#1 \$id_job of method Model\\WordCount\\WordCountStruct\:\:setIdJob\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -17796,6 +21594,12 @@ parameters: count: 1 path: lib/Utils/Email/WelcomeEmail.php + - + message: '#^Method Utils\\Email\\WelcomeEmail\:\:send\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Email/WelcomeEmail.php + - message: '#^Parameter \#2 \$subject of method Utils\\Email\\AbstractEmail\:\:doSend\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -17826,6 +21630,18 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:__get\(\) has parameter \$key with no type specified\.$#' identifier: missingType.parameter @@ -17844,6 +21660,12 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:_call\(\) has parameter \$curl_options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -17886,6 +21708,12 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:deleteMemory\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:deleteMemory\(\) has parameter \$memoryKey with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -17928,6 +21756,12 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:memoryExists\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:memoryExists\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18150,6 +21984,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL.php + - + message: '#^Method Utils\\Engines\\DeepL\:\:_getClient\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + - message: '#^Method Utils\\Engines\\DeepL\:\:createGlossary\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18162,6 +22002,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL.php + - + message: '#^Method Utils\\Engines\\DeepL\:\:delete\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + - message: '#^Method Utils\\Engines\\DeepL\:\:deleteGlossary\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18198,6 +22044,18 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL.php + - + message: '#^Method Utils\\Engines\\DeepL\:\:set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + + - + message: '#^Method Utils\\Engines\\DeepL\:\:update\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + - message: '#^Using nullsafe property access "\?\-\>value" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' identifier: nullsafe.neverNull @@ -18216,6 +22074,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:allGlossaries\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:createGlossary\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18228,24 +22092,48 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:createGlossary\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:deleteGlossary\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:deleteGlossary\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossary\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossary\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossaryEntries\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossaryEntries\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:parse\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18270,6 +22158,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:translate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Parameter \#1 \$body of method Utils\\Engines\\DeepL\\DeepLApiClient\:\:parse\(\) expects string, bool\|string\|null given\.$#' identifier: argument.type @@ -18504,6 +22398,12 @@ parameters: count: 1 path: lib/Utils/Engines/Intento.php + - + message: '#^Method Utils\\Engines\\Intento\:\:getProviderList\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Intento.php + - message: '#^Method Utils\\Engines\\Intento\:\:getRoutingList\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18708,6 +22608,12 @@ parameters: count: 1 path: lib/Utils/Engines/Lara.php + - + message: '#^Method Utils\\Engines\\Lara\:\:getMemoryIfMine\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Lara.php + - message: '#^Method Utils\\Engines\\Lara\:\:memoryExists\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18750,6 +22656,12 @@ parameters: count: 1 path: lib/Utils/Engines/Lara.php + - + message: '#^Method Utils\\Engines\\Lara\:\:validateLaraStyle\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Lara.php + - message: '#^Parameter \#1 \$body of class Stomp\\Transport\\Message constructor expects string, string\|false given\.$#' identifier: argument.type @@ -18948,6 +22860,12 @@ parameters: count: 1 path: lib/Utils/Engines/MMT.php + - + message: '#^Method Utils\\Engines\\MMT\:\:delete\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/MMT.php + - message: '#^Method Utils\\Engines\\MMT\:\:deleteMemory\(\) has parameter \$memoryKey with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19032,6 +22950,12 @@ parameters: count: 1 path: lib/Utils/Engines/MMT.php + - + message: '#^Method Utils\\Engines\\MMT\:\:getMemoryIfMine\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/MMT.php + - message: '#^Method Utils\\Engines\\MMT\:\:importGlossary\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19734,6 +23658,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/ErrorResponse.php + - + message: '#^Method Utils\\Engines\\Results\\ErrorResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/Results/ErrorResponse.php + - message: '#^Method Utils\\Engines\\Results\\ErrorResponse\:\:get_as_array\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19746,6 +23676,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MTResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MTResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/Results/MTResponse.php + - message: '#^Method Utils\\Engines\\Results\\MTResponse\:\:get_as_array\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19758,6 +23694,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/AnalyzeResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\AnalyzeResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/AnalyzeResponse.php + - message: '#^Method Utils\\Engines\\Results\\MyMemory\\AuthKeyResponse\:\:__construct\(\) has parameter \$response with no type specified\.$#' identifier: missingType.parameter @@ -19770,6 +23712,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/CheckGlossaryResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\CheckGlossaryResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/CheckGlossaryResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\CheckGlossaryResponse\:\:\$matches has no type specified\.$#' identifier: missingType.property @@ -19782,6 +23730,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/CreateUserResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\CreateUserResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/CreateUserResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\CreateUserResponse\:\:\$id has no type specified\.$#' identifier: missingType.property @@ -19806,6 +23760,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/DomainsResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\DomainsResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/DomainsResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\DomainsResponse\:\:\$entries has no type specified\.$#' identifier: missingType.property @@ -19818,6 +23778,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/ExportResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\ExportResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/ExportResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\ExportResponse\:\:\$id has no type specified\.$#' identifier: missingType.property @@ -19836,6 +23802,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/FileImportAndStatusResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\FileImportAndStatusResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/FileImportAndStatusResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\FileImportAndStatusResponse\:\:\$id has no type specified\.$#' identifier: missingType.property @@ -19860,6 +23832,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/GetMemoryResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\GetMemoryResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/Results/MyMemory/GetMemoryResponse.php + - message: '#^Method Utils\\Engines\\Results\\MyMemory\\GetMemoryResponse\:\:buildMyMemoryMatch\(\) has parameter \$match with no type specified\.$#' identifier: missingType.parameter @@ -19890,6 +23868,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/KeysGlossaryResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\KeysGlossaryResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/KeysGlossaryResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\KeysGlossaryResponse\:\:\$entries has no type specified\.$#' identifier: missingType.property @@ -20166,6 +24150,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/SetContributionResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\SetContributionResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/SetContributionResponse.php + - message: '#^Call to an undefined method Matecat\\SubFiltering\\AbstractFilter\:\:fromLayer1ToLayer2\(\)\.$#' identifier: method.notFound @@ -20466,6 +24456,12 @@ parameters: count: 1 path: lib/Utils/Engines/Validators/GoogleTranslateEngineValidator.php + - + message: '#^Method Utils\\Engines\\Validators\\IntentoEngineOptionsValidator\:\:validate\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Utils/Engines/Validators/IntentoEngineOptionsValidator.php + - message: '#^Access to an undefined property Utils\\Engines\\Validators\\Contracts\\EngineValidatorObject\:\:\$engineStruct\.$#' identifier: property.notFound @@ -20568,6 +24564,12 @@ parameters: count: 1 path: lib/Utils/Engines/YandexTranslate.php + - + message: '#^Method Utils\\Files\\CSV\:\:extract\(\) throws checked exception PhpOffice\\PhpSpreadsheet\\Writer\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Files/CSV.php + - message: '#^Method Utils\\Files\\CSV\:\:headers\(\) has parameter \$filepath with no type specified\.$#' identifier: missingType.parameter @@ -20772,6 +24774,12 @@ parameters: count: 1 path: lib/Utils/LQA/QA.php + - + message: '#^Method Utils\\LQA\\QA\:\:prepareDOMStructures\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/LQA/QA.php + - message: '#^Parameter \#2 \$subject of function preg_match expects string, string\|false given\.$#' identifier: argument.type @@ -20988,6 +24996,12 @@ parameters: count: 1 path: lib/Utils/LQA/QA/ErrObject.php + - + message: '#^Method Utils\\LQA\\QA\\ErrObject\:\:get\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Utils/LQA/QA/ErrObject.php + - message: '#^Method Utils\\LQA\\QA\\ErrorManager\:\:JSONtoExceptionList\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21270,6 +25284,12 @@ parameters: count: 11 path: lib/Utils/LQA/SizeRestriction/SizeRestriction.php + - + message: '#^Method Utils\\Logger\\Handlers\\CloudWatchHandlerProvider\:\:getClient\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/Handlers/CloudWatchHandlerProvider.php + - message: '#^Method Utils\\Logger\\Handlers\\CloudWatchHandlerProvider\:\:getHandlerParams\(\) has parameter \$configurationParams with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21390,36 +25410,72 @@ parameters: count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:alert\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:critical\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:critical\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:debug\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:debug\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:emergency\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:emergency\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:error\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:error\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:info\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:info\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:log\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21432,12 +25488,24 @@ parameters: count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:notice\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:warning\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:warning\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Network\\MultiCurlHandler\:\:_callbackExecute\(\) has parameter \$record with no type specified\.$#' identifier: missingType.parameter @@ -21636,12 +25704,24 @@ parameters: count: 1 path: lib/Utils/OutsourceTo/Translated.php + - + message: '#^Method Utils\\OutsourceTo\\Translated\:\:__addCartElementToCart\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/OutsourceTo/Translated.php + - message: '#^Method Utils\\OutsourceTo\\Translated\:\:__getProjectData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/OutsourceTo/Translated.php + - + message: '#^Method Utils\\OutsourceTo\\Translated\:\:__getProjectData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/OutsourceTo/Translated.php + - message: '#^Method Utils\\OutsourceTo\\Translated\:\:__prepareOutsourcedJobCart\(\) has parameter \$apiCallResult with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21702,6 +25782,12 @@ parameters: count: 1 path: lib/Utils/OutsourceTo/Translated.php + - + message: '#^Method Utils\\OutsourceTo\\Translated\:\:performQuote\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/OutsourceTo/Translated.php + - message: '#^Offset ''currency'' might not exist on Utils\\Shop\\AbstractItem\|null\.$#' identifier: offsetAccess.notFound @@ -21828,6 +25914,12 @@ parameters: count: 1 path: lib/Utils/Redis/RedisHandler.php + - + message: '#^Method Utils\\Redis\\RedisHandler\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Redis/RedisHandler.php + - message: '#^Method Utils\\Redis\\RedisHandler\:\:formatDSN\(\) has parameter \$dsnString with no type specified\.$#' identifier: missingType.parameter @@ -21876,6 +25968,12 @@ parameters: count: 1 path: lib/Utils/Registry/AppConfig.php + - + message: '#^Method Utils\\Registry\\AppConfig\:\:__construct\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Registry/AppConfig.php + - message: '#^Method Utils\\Registry\\AppConfig\:\:init\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21954,6 +26052,12 @@ parameters: count: 1 path: lib/Utils/Search/ReplaceHistory.php + - + message: '#^Method Utils\\Search\\ReplaceHistoryFactory\:\:_checkDriver\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Search/ReplaceHistoryFactory.php + - message: '#^Method Utils\\Search\\ReplaceHistoryFactory\:\:create\(\) has parameter \$driver with no type specified\.$#' identifier: missingType.parameter @@ -21972,6 +26076,12 @@ parameters: count: 1 path: lib/Utils/Search/ReplaceHistoryFactory.php + - + message: '#^Method Utils\\Search\\ReplaceHistoryFactory\:\:create\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Search/ReplaceHistoryFactory.php + - message: '#^Method Utils\\ServerCheck\\ServerCheck\:\:getByteValue\(\) has parameter \$value with no type specified\.$#' identifier: missingType.parameter @@ -22002,6 +26112,12 @@ parameters: count: 1 path: lib/Utils/ServerCheck/UploadParams.php + - + message: '#^Method Utils\\ServerCheck\\UploadParams\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ServerCheck/UploadParams.php + - message: '#^Call to an undefined method object\:\:offsetSet\(\)\.$#' identifier: method.notFound @@ -22032,6 +26148,18 @@ parameters: count: 1 path: lib/Utils/Shop/AbstractItem.php + - + message: '#^Method Utils\\Shop\\AbstractItem\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Shop/AbstractItem.php + + - + message: '#^Method Utils\\Shop\\AbstractItem\:\:offsetSet\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Shop/AbstractItem.php + - message: '#^PHPDoc tag @throws has invalid value \(LogicException/DomainException\)\: Unexpected token "/DomainException", expected TOKEN_HORIZONTAL_WS at offset 438 on line 15$#' identifier: phpDoc.parseError @@ -22044,6 +26172,12 @@ parameters: count: 1 path: lib/Utils/Shop/AbstractItem.php + - + message: '#^Method Utils\\Shop\\Cart\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Shop/Cart.php + - message: '#^Property Utils\\Shop\\Cart\:\:\$cart type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22092,6 +26226,12 @@ parameters: count: 1 path: lib/Utils/TMS/TMSService.php + - + message: '#^Method Utils\\TMS\\TMSService\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TMS/TMSService.php + - message: '#^Method Utils\\TMS\\TMSService\:\:_fileUploadStatus\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22128,6 +26268,18 @@ parameters: count: 1 path: lib/Utils/TMS/TMSService.php + - + message: '#^Method Utils\\TMS\\TMSService\:\:exportJobAsCSV\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/TMS/TMSService.php + + - + message: '#^Method Utils\\TMS\\TMSService\:\:getUserAdaptiveMTEngines\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TMS/TMSService.php + - message: '#^Method Utils\\TMS\\TMSService\:\:glossaryUploadStatus\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22212,6 +26364,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Commons/AbstractDaemon.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\AbstractDaemon\:\:installHandler\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Commons/AbstractDaemon.php + - message: '#^Method Utils\\TaskRunner\\Commons\\AbstractDaemon\:\:main\(\) has parameter \$args with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22242,6 +26400,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Commons/AbstractElement.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\AbstractElement\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Commons/AbstractElement.php + - message: '#^Method Utils\\TaskRunner\\Commons\\AbstractElement\:\:__toString\(\) should return string but returns string\|false\.$#' identifier: return.type @@ -22308,6 +26472,12 @@ parameters: count: 2 path: lib/Utils/TaskRunner/Commons/AbstractWorker.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\Configuration\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Commons/Configuration.php + - message: '#^Method Utils\\TaskRunner\\Commons\\Configuration\:\:getRaw\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22326,6 +26496,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Commons/Context.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\Context\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/TaskRunner/Commons/Context.php + - message: '#^Method Utils\\TaskRunner\\Commons\\Context\:\:__toString\(\) should return string but returns string\|false\.$#' identifier: return.type @@ -22404,6 +26580,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Executor.php + - + message: '#^Method Utils\\TaskRunner\\Executor\:\:installHandler\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Executor.php + - message: '#^PHPDoc tag @var has invalid value \(\$msgFrame Frame\)\: Unexpected token "\$msgFrame", expected type at offset 28 on line 2$#' identifier: phpDoc.parseError @@ -22464,6 +26646,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/TaskManager.php + - + message: '#^Method Utils\\TaskRunner\\TaskManager\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/TaskManager.php + - message: '#^Method Utils\\TaskRunner\\TaskManager\:\:_balanceQueues\(\) has no return type specified\.$#' identifier: missingType.return @@ -22686,12 +26874,30 @@ parameters: count: 1 path: lib/Utils/TmKeyManagement/TmKeyManager.php + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:sanitize\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TmKeyManagement/TmKeyManager.php + + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:sanitize\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Utils/TmKeyManagement/TmKeyManager.php + - message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:shareKey\(\) has parameter \$emailList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/TmKeyManagement/TmKeyManager.php + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:shareKey\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/TmKeyManagement/TmKeyManager.php + - message: '#^PHPDoc tag @var has invalid value \(\$_client_tm_key TmKeyStruct\)\: Unexpected token "\$_client_tm_key", expected type at offset 24 on line 2$#' identifier: phpDoc.parseError @@ -22782,6 +26988,12 @@ parameters: count: 1 path: lib/Utils/TmKeyManagement/TmKeyStruct.php + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyStruct\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TmKeyManagement/TmKeyStruct.php + - message: '#^Method Utils\\TmKeyManagement\\TmKeyStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22854,6 +27066,12 @@ parameters: count: 1 path: lib/Utils/Tools/CatUtils.php + - + message: '#^Method Utils\\Tools\\CatUtils\:\:_performanceEstimationTime\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/CatUtils.php + - message: '#^Method Utils\\Tools\\CatUtils\:\:clean_raw_string_4_word_count\(\) should return string but returns string\|null\.$#' identifier: return.type @@ -23208,6 +27426,24 @@ parameters: count: 1 path: lib/Utils/Tools/SimpleJWT.php + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:getInstanceFromString\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:getInstanceFromString\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Utils/Tools/SimpleJWT.php + + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:getInstanceFromString\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + - message: '#^Method Utils\\Tools\\SimpleJWT\:\:getPayload\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23220,6 +27456,12 @@ parameters: count: 1 path: lib/Utils/Tools/SimpleJWT.php + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:offsetSet\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + - message: '#^Method Utils\\Tools\\SimpleJWT\:\:parseJWTString\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23232,6 +27474,12 @@ parameters: count: 1 path: lib/Utils/Tools/SimpleJWT.php + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:sign\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + - message: '#^PHPDoc tag @property has invalid value \(int exp\)\: Unexpected token "exp", expected variable at offset 216 on line 10$#' identifier: phpDoc.parseError @@ -23742,6 +27990,18 @@ parameters: count: 1 path: lib/Utils/Validator/JSONSchema/JSONValidator.php + - + message: '#^Method Utils\\Validator\\JSONSchema\\JSONValidator\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Validator/JSONSchema/JSONValidator.php + + - + message: '#^Method Utils\\Validator\\JSONSchema\\JSONValidator\:\:getValidJSONSchema\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Validator/JSONSchema/JSONValidator.php + - message: '#^Parameter \#1 \$jsonSchema of static method Utils\\Validator\\JSONSchema\\JSONValidator\:\:getValidJSONSchema\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -23760,6 +28020,12 @@ parameters: count: 1 path: lib/Utils/Validator/JSONSchema/JSONValidatorObject.php + - + message: '#^Method Utils\\XliffReplacer\\SilentXliffReplacerCallback\:\:thereAreErrors\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Utils/XliffReplacer/SilentXliffReplacerCallback.php + - message: '#^Cannot access property \$target on Model\\Jobs\\JobStruct\|null\.$#' identifier: property.nonObject @@ -23778,6 +28044,12 @@ parameters: count: 1 path: lib/Utils/XliffReplacer/XliffReplacerCallback.php + - + message: '#^Method Utils\\XliffReplacer\\XliffReplacerCallback\:\:icuEnabled\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/XliffReplacer/XliffReplacerCallback.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -23832,6 +28104,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisChunk.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisChunk\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/Analysis/AnalysisChunk.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisChunk\:\:getEngines\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23904,6 +28182,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisFile.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisFile\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/View/API/App/Json/Analysis/AnalysisFile.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisFile\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23934,6 +28218,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisJobSummary.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisMatch\:\:__construct\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/Analysis/AnalysisMatch.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisMatch\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23964,6 +28254,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisProjectSummary.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisProjectSummary\:\:getEstimatedWorkTime\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/Analysis/AnalysisProjectSummary.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisProjectSummary\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23976,12 +28272,24 @@ parameters: count: 1 path: lib/View/API/App/Json/ConnectedService.php + - + message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/ConnectedService.php + - message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/View/API/App/Json/ConnectedService.php + - + message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:render\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/ConnectedService.php + - message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:renderItem\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24012,6 +28320,12 @@ parameters: count: 1 path: lib/View/API/App/Json/UserProfile.php + - + message: '#^Method View\\API\\App\\Json\\UserProfile\:\:renderItem\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/UserProfile.php + - message: '#^Method View\\API\\Commons\\Error\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24048,6 +28362,12 @@ parameters: count: 1 path: lib/View/API/Commons/ZipContentObject.php + - + message: '#^Method View\\API\\Commons\\ZipContentObject\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/Commons/ZipContentObject.php + - message: '#^Method View\\API\\Commons\\ZipContentObject\:\:build\(\) has parameter \$_array_params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24060,6 +28380,18 @@ parameters: count: 1 path: lib/View/API/Commons/ZipContentObject.php + - + message: '#^Method View\\API\\Commons\\ZipContentObject\:\:setDocumentContentFromFileSystem\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/Commons/ZipContentObject.php + + - + message: '#^Method View\\API\\Commons\\ZipContentObject\:\:setDocumentContentFromS3\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/Commons/ZipContentObject.php + - message: '#^Method View\\API\\Commons\\ZipContentObject\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24216,6 +28548,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/Membership.php + - + message: '#^Method View\\API\\V2\\Json\\Membership\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/Membership.php + - message: '#^Method View\\API\\V2\\Json\\Membership\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24276,6 +28614,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/Project.php + - + message: '#^Method View\\API\\V2\\Json\\Project\:\:render\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/Project.php + - message: '#^Method View\\API\\V2\\Json\\Project\:\:renderItem\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24432,6 +28776,18 @@ parameters: count: 1 path: lib/View/API/V2/Json/SegmentTranslationIssue.php + - + message: '#^Method View\\API\\V2\\Json\\SegmentTranslationIssue\:\:genCSVTmpFile\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentTranslationIssue.php + + - + message: '#^Method View\\API\\V2\\Json\\SegmentTranslationIssue\:\:genCSVTmpFile\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentTranslationIssue.php + - message: '#^Method View\\API\\V2\\Json\\SegmentTranslationIssue\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24462,6 +28818,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/SegmentTranslationMismatches.php + - + message: '#^Method View\\API\\V2\\Json\\SegmentTranslationMismatches\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentTranslationMismatches.php + - message: '#^Method View\\API\\V2\\Json\\SegmentTranslationMismatches\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24492,6 +28854,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/SegmentVersion.php + - + message: '#^Method View\\API\\V2\\Json\\SegmentVersion\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentVersion.php + - message: '#^Method View\\API\\V2\\Json\\SegmentVersion\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24798,6 +29166,18 @@ parameters: count: 1 path: lib/View/API/V3/Json/QualitySummary.php + - + message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: lib/View/APIDoc.php + + - + message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, string\|false given\.$#' + identifier: argument.type + count: 1 + path: lib/View/APIDoc.php + - message: '#^Method UploadHandler\:\:_isRightExtension\(\) has parameter \$fileUp with no type specified\.$#' identifier: missingType.parameter @@ -24852,6 +29232,12 @@ parameters: count: 1 path: lib/View/fileupload/UploadHandler.php + - + message: '#^Method UploadHandler\:\:normalFileDelete\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/fileupload/UploadHandler.php + - message: '#^Method UploadHandler\:\:set_file_delete_url\(\) has parameter \$file with no type specified\.$#' identifier: missingType.parameter @@ -24918,6 +29304,12 @@ parameters: count: 1 path: lib/View/fileupload/UploadHandler.php + - + message: '#^Method UploadHandler\:\:zipInternalFileDelete\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/fileupload/UploadHandler.php + - message: '#^Offset ''extension'' might not exist on array\{dirname\?\: string, basename\: string, extension\?\: string, filename\: string\}\.$#' identifier: offsetAccess.notFound diff --git a/phpstan-throws-backlog.txt b/phpstan-throws-backlog.txt new file mode 100644 index 0000000000..43be0eb900 --- /dev/null +++ b/phpstan-throws-backlog.txt @@ -0,0 +1,283 @@ +# PHPStan @throws backlog — files to fix sequentially +# Error types: missingCheckedExceptionInThrows, tooWideThrowType, +# checkTooWideThrowTypesInProtectedAndPublicMethods +# Total files: 275 +# Total baseline entries: 726 +# +# Format: BASELINE_ENTRIES FILE_PATH +# + 2 lib/Bootstrap.php + 6 lib/Controller/API/App/AIAssistantController.php + 3 lib/Controller/API/App/AjaxUtilsController.php + 2 lib/Controller/API/App/Authentication/ForgotPasswordController.php + 9 lib/Controller/API/App/CommentController.php + 8 lib/Controller/API/App/CreateProjectController.php + 3 lib/Controller/API/App/DeleteContributionController.php + 2 lib/Controller/API/App/DownloadAnalysisReportController.php + 2 lib/Controller/API/App/EngineController.php + 1 lib/Controller/API/App/FilesController.php + 4 lib/Controller/API/App/GetContributionController.php + 4 lib/Controller/API/App/GetSearchController.php + 1 lib/Controller/API/App/GetSegmentsController.php + 1 lib/Controller/API/App/GetVolumeAnalysisController.php + 1 lib/Controller/API/App/GetWarningController.php + 1 lib/Controller/API/App/HeartBeat.php + 1 lib/Controller/API/App/IntentoController.php + 2 lib/Controller/API/App/OutsourceToController.php + 1 lib/Controller/API/App/QualityFrameworkController.php + 4 lib/Controller/API/App/SetChunkCompletedController.php + 2 lib/Controller/API/App/SetCurrentSegmentController.php + 9 lib/Controller/API/App/SetTranslationController.php + 1 lib/Controller/API/App/SplitSegmentController.php + 1 lib/Controller/API/App/TmKeyManagementController.php + 5 lib/Controller/API/App/UpdateJobKeysController.php + 1 lib/Controller/API/App/UserKeysController.php + 1 lib/Controller/API/App/XliffToTargetConverterController.php + 1 lib/Controller/API/Commons/Validators/Base.php + 1 lib/Controller/API/Commons/Validators/ChunkPasswordValidator.php + 1 lib/Controller/API/Commons/Validators/ProjectAccessTokenValidator.php + 1 lib/Controller/API/Commons/Validators/ProjectPasswordValidator.php + 2 lib/Controller/API/Commons/Validators/ProjectValidator.php + 1 lib/Controller/API/Commons/Validators/SegmentValidator.php + 1 lib/Controller/API/GDrive/GDriveController.php + 1 lib/Controller/API/GDrive/OAuthController.php + 5 lib/Controller/API/V1/NewController.php + 5 lib/Controller/API/V2/DownloadController.php + 2 lib/Controller/API/V2/DownloadJobTMXController.php + 1 lib/Controller/API/V2/DownloadOriginalController.php + 1 lib/Controller/API/V2/GlossaryFilesController.php + 1 lib/Controller/API/V2/JobsTranslatorsController.php + 1 lib/Controller/API/V2/MemoryKeysController.php + 2 lib/Controller/API/V2/ProjectsController.php + 4 lib/Controller/API/V2/SegmentTranslationIssueController.php + 4 lib/Controller/API/V2/SplitJobController.php + 1 lib/Controller/API/V2/TeamMembersController.php + 1 lib/Controller/API/V2/TeamsController.php + 1 lib/Controller/API/V2/TeamsProjectsController.php + 2 lib/Controller/API/V2/UserController.php + 1 lib/Controller/API/V3/CountWordController.php + 1 lib/Controller/API/V3/DownloadQRController.php + 1 lib/Controller/API/V3/FileInfoController.php + 1 lib/Controller/API/V3/FiltersConfigTemplateController.php + 1 lib/Controller/API/V3/LaraController.php + 1 lib/Controller/API/V3/ModernMTController.php + 1 lib/Controller/API/V3/MyMemoryController.php + 1 lib/Controller/API/V3/PayableRateController.php + 1 lib/Controller/API/V3/QAModelTemplateController.php + 3 lib/Controller/API/V3/QualityReportControllerAPI.php + 1 lib/Controller/API/V3/RevisionFeedbackController.php + 3 lib/Controller/API/V3/SegmentAnalysisController.php + 2 lib/Controller/API/V3/TeamsProjectsController.php + 1 lib/Controller/API/V3/XliffConfigTemplateController.php + 1 lib/Controller/Abstracts/AbstractDownloadController.php + 2 lib/Controller/Abstracts/Authentication/AuthCookie.php + 3 lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + 1 lib/Controller/Abstracts/BaseKleinViewController.php + 2 lib/Controller/Abstracts/KleinController.php + 1 lib/Controller/Traits/KleinResponseFileStream.php + 1 lib/Controller/Views/AnalyzeController.php + 2 lib/Controller/Views/CattoolController.php + 1 lib/Controller/Views/ManageController.php + 1 lib/Controller/Views/OauthResponseHandlerController.php + 2 lib/Controller/Views/OutsourceTo/AbstractController.php + 1 lib/Controller/Views/QualityReportController.php + 1 lib/Controller/Views/TemplateDecorator/AbstractDecorator.php + 1 lib/Controller/Views/TemplateDecorator/DownloadOmegaTOutputDecorator.php + 4 lib/Model/ActivityLog/ActivityLogDao.php + 3 lib/Model/Analysis/AbstractStatus.php + 2 lib/Model/Analysis/AnalysisDao.php + 1 lib/Model/Analysis/XTRFStatus.php + 5 lib/Model/ApiKeys/ApiKeyDao.php + 4 lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + 2 lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + 1 lib/Model/Comments/BaseCommentStruct.php + 6 lib/Model/Comments/CommentDao.php + 6 lib/Model/ConnectedServices/ConnectedServiceDao.php + 1 lib/Model/ConnectedServices/GDrive/GDriveUserAuthorizationModel.php + 2 lib/Model/ConnectedServices/GDrive/RemoteFileService.php + 6 lib/Model/ConnectedServices/GDrive/Session.php + 2 lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + 3 lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + 4 lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + 1 lib/Model/ConnectedServices/Oauth/Google/GoogleProvider.php + 3 lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + 4 lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + 2 lib/Model/ConnectedServices/Oauth/OauthClient.php + 1 lib/Model/Conversion/InternalHashPaths.php + 1 lib/Model/Conversion/MimeTypes/Guesser/SimpleMarkupMimeTypeGuesser.php + 1 lib/Model/Conversion/MimeTypes/MimeTypes.php + 2 lib/Model/Conversion/Upload.php + 1 lib/Model/Conversion/ZipArchiveHandler.php + 4 lib/Model/DataAccess/AbstractDao.php + 2 lib/Model/DataAccess/AbstractDaoObjectStruct.php + 8 lib/Model/DataAccess/Database.php + 3 lib/Model/DataAccess/ShapelessConcreteStruct.php + 1 lib/Model/EditLog/EditLogSegmentStruct.php + 3 lib/Model/Engines/EngineDAO.php + 2 lib/Model/Engines/Structs/EngineStruct.php + 1 lib/Model/FeaturesBase/FeatureSet.php + 1 lib/Model/FeaturesBase/PluginsLoader.php + 6 lib/Model/Files/FileDao.php + 5 lib/Model/Files/FilesPartsDao.php + 3 lib/Model/Files/MetadataDao.php + 2 lib/Model/FilesStorage/AbstractFilesStorage.php + 7 lib/Model/FilesStorage/FsFilesStorage.php + 7 lib/Model/FilesStorage/S3FilesStorage.php + 1 lib/Model/Filters/DTO/Yaml.php + 6 lib/Model/Filters/FiltersConfigTemplateDao.php + 2 lib/Model/Filters/FiltersConfigTemplateStruct.php + 22 lib/Model/Jobs/JobDao.php + 9 lib/Model/Jobs/JobStruct.php + 3 lib/Model/Jobs/MetadataDao.php + 6 lib/Model/LQA/CategoryDao.php + 15 lib/Model/LQA/ChunkReviewDao.php + 6 lib/Model/LQA/EntryCommentDao.php + 11 lib/Model/LQA/EntryDao.php + 1 lib/Model/LQA/EntryStruct.php + 3 lib/Model/LQA/ModelDao.php + 4 lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + 1 lib/Model/LQA/QAModelTemplate/QAModelTemplateStruct.php + 2 lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + 5 lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + 5 lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + 2 lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + 1 lib/Model/Outsource/ConfirmationDao.php + 4 lib/Model/OwnerFeatures/OwnerFeatureDao.php + 5 lib/Model/Pagination/Pager.php + 1 lib/Model/Pagination/PaginationParameters.php + 5 lib/Model/PayableRates/CustomPayableRateDao.php + 3 lib/Model/PayableRates/CustomPayableRateStruct.php + 1 lib/Model/ProjectCreation/JobCreationService.php + 1 lib/Model/ProjectCreation/SegmentExtractor.php + 1 lib/Model/ProjectCreation/SegmentStorageService.php + 1 lib/Model/ProjectCreation/TmKeyService.php + 2 lib/Model/Projects/ManageModel.php + 4 lib/Model/Projects/MetadataDao.php + 22 lib/Model/Projects/ProjectDao.php + 3 lib/Model/Projects/ProjectStruct.php + 8 lib/Model/Projects/ProjectTemplateDao.php + 1 lib/Model/Projects/ProjectTemplateStruct.php + 4 lib/Model/QualityReport/QualityReportDao.php + 1 lib/Model/QualityReport/QualityReportModel.php + 4 lib/Model/QualityReport/QualityReportSegmentModel.php + 1 lib/Model/QualityReport/QualityReportSegmentStruct.php + 5 lib/Model/RemoteFiles/RemoteFileDao.php + 3 lib/Model/ReviseFeedback/FeedbackDAO.php + 2 lib/Model/Search/MySQLReplaceEventDAO.php + 2 lib/Model/Search/MySQLReplaceEventIndexDAO.php + 1 lib/Model/Search/RedisReplaceEventDAO.php + 1 lib/Model/Search/RedisReplaceEventIndexDAO.php + 1 lib/Model/Search/SearchModel.php + 3 lib/Model/Segments/ContextStruct.php + 10 lib/Model/Segments/SegmentDao.php + 4 lib/Model/Segments/SegmentMetadataDao.php + 5 lib/Model/Segments/SegmentNoteDao.php + 2 lib/Model/Segments/SegmentOriginalDataDao.php + 2 lib/Model/Segments/SegmentOriginalDataStruct.php + 3 lib/Model/Segments/SegmentStruct.php + 3 lib/Model/Segments/SegmentUIStruct.php + 3 lib/Model/TMSService/TMSServiceDao.php + 2 lib/Model/Teams/InvitedUser.php + 2 lib/Model/Teams/MembershipDao.php + 6 lib/Model/Teams/TeamDao.php + 7 lib/Model/Teams/TeamModel.php + 1 lib/Model/TmKeyManagement/UserKeysModel.php + 11 lib/Model/Translations/SegmentTranslationDao.php + 3 lib/Model/Translations/SegmentTranslationStruct.php + 3 lib/Model/Translations/WarningDao.php + 4 lib/Model/Translators/TranslatorsModel.php + 1 lib/Model/Users/Authentication/OAuthSignInModel.php + 1 lib/Model/Users/Authentication/PasswordResetModel.php + 1 lib/Model/Users/Authentication/SignupModel.php + 3 lib/Model/Users/MetadataDao.php + 1 lib/Model/Users/RedeemableProject.php + 7 lib/Model/Users/UserDao.php + 3 lib/Model/Warnings/GlobalWarningStruct.php + 2 lib/Model/WordCount/CounterModel.php + 1 lib/Model/WordCount/WordCountStruct.php + 2 lib/Model/WordCount/WordCounterDao.php + 4 lib/Model/Xliff/DTO/AbstractXliffRule.php + 2 lib/Model/Xliff/DTO/DefaultRule.php + 1 lib/Model/Xliff/DTO/XliffRulesModel.php + 6 lib/Model/Xliff/XliffConfigTemplateDao.php + 1 lib/Model/Xliff/XliffConfigTemplateStruct.php + 2 lib/Plugins/Features/AbstractRevisionFeature.php + 1 lib/Plugins/Features/ProjectCompletion.php + 1 lib/Plugins/Features/ProjectCompletion/Model/EventModel.php + 1 lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php + 2 lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + 1 lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php + 1 lib/Plugins/Features/ReviewExtended/ReviewUtils.php + 2 lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + 2 lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + 1 lib/Plugins/Features/TranslationEvents/Model/TranslationEvent.php + 4 lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + 2 lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + 2 lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + 12 lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + 2 lib/Utils/ActiveMQ/AMQHandler.php + 2 lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + 1 lib/Utils/ActiveMQ/WorkerClient.php + 1 lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php + 3 lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + 3 lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + 2 lib/Utils/AsyncTasks/Workers/JobsWorker.php + 1 lib/Utils/Currency/TranslatedChangeRatesFetcher.php + 1 lib/Utils/Email/ProjectAssignedEmail.php + 1 lib/Utils/Email/WelcomeEmail.php + 3 lib/Utils/Engines/AbstractEngine.php + 4 lib/Utils/Engines/DeepL.php + 6 lib/Utils/Engines/DeepL/DeepLApiClient.php + 1 lib/Utils/Engines/Intento.php + 2 lib/Utils/Engines/Lara.php + 2 lib/Utils/Engines/MMT.php + 1 lib/Utils/Engines/Results/ErrorResponse.php + 1 lib/Utils/Engines/Results/MTResponse.php + 1 lib/Utils/Engines/Results/MyMemory/AnalyzeResponse.php + 1 lib/Utils/Engines/Results/MyMemory/CheckGlossaryResponse.php + 1 lib/Utils/Engines/Results/MyMemory/CreateUserResponse.php + 1 lib/Utils/Engines/Results/MyMemory/DomainsResponse.php + 1 lib/Utils/Engines/Results/MyMemory/ExportResponse.php + 1 lib/Utils/Engines/Results/MyMemory/FileImportAndStatusResponse.php + 1 lib/Utils/Engines/Results/MyMemory/GetMemoryResponse.php + 1 lib/Utils/Engines/Results/MyMemory/KeysGlossaryResponse.php + 1 lib/Utils/Engines/Results/MyMemory/SetContributionResponse.php + 1 lib/Utils/Engines/Validators/IntentoEngineOptionsValidator.php + 1 lib/Utils/Files/CSV.php + 1 lib/Utils/LQA/QA.php + 1 lib/Utils/LQA/QA/ErrObject.php + 1 lib/Utils/Logger/Handlers/CloudWatchHandlerProvider.php + 8 lib/Utils/Logger/MatecatLogger.php + 3 lib/Utils/OutsourceTo/Translated.php + 1 lib/Utils/Redis/RedisHandler.php + 1 lib/Utils/Registry/AppConfig.php + 2 lib/Utils/Search/ReplaceHistoryFactory.php + 1 lib/Utils/ServerCheck/UploadParams.php + 2 lib/Utils/Shop/AbstractItem.php + 1 lib/Utils/Shop/Cart.php + 3 lib/Utils/TMS/TMSService.php + 1 lib/Utils/TaskRunner/Commons/AbstractDaemon.php + 1 lib/Utils/TaskRunner/Commons/AbstractElement.php + 1 lib/Utils/TaskRunner/Commons/Configuration.php + 1 lib/Utils/TaskRunner/Commons/Context.php + 1 lib/Utils/TaskRunner/Executor.php + 1 lib/Utils/TaskRunner/TaskManager.php + 3 lib/Utils/TmKeyManagement/TmKeyManager.php + 1 lib/Utils/TmKeyManagement/TmKeyStruct.php + 1 lib/Utils/Tools/CatUtils.php + 5 lib/Utils/Tools/SimpleJWT.php + 2 lib/Utils/Validator/JSONSchema/JSONValidator.php + 1 lib/Utils/XliffReplacer/XliffReplacerCallback.php + 1 lib/View/API/App/Json/Analysis/AnalysisChunk.php + 1 lib/View/API/App/Json/Analysis/AnalysisFile.php + 1 lib/View/API/App/Json/Analysis/AnalysisMatch.php + 1 lib/View/API/App/Json/Analysis/AnalysisProjectSummary.php + 2 lib/View/API/App/Json/ConnectedService.php + 1 lib/View/API/App/Json/UserProfile.php + 3 lib/View/API/Commons/ZipContentObject.php + 1 lib/View/API/V2/Json/Membership.php + 1 lib/View/API/V2/Json/Project.php + 2 lib/View/API/V2/Json/SegmentTranslationIssue.php + 1 lib/View/API/V2/Json/SegmentTranslationMismatches.php + 1 lib/View/API/V2/Json/SegmentVersion.php + 2 lib/View/fileupload/UploadHandler.php From fa75811db930b73ce2065e03da7d3407f395697a Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 17:22:41 +0200 Subject: [PATCH 15/38] =?UTF-8?q?=F0=9F=93=9D=20docs:=20add=20PR=20readine?= =?UTF-8?q?ss=20checklist=20template=20and=20GitHub=20Actions=20validator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - create `.github/PULL_REQUEST_TEMPLATE.md` to standardize pull request descriptions - add `.github/workflows/pr-readiness-check.yml` GitHub Action to validate mandatory checklist - implement checklist validation logic in `.github/scripts/pr-readiness-check.js` - include comprehensive unit tests in `.github/scripts/pr-readiness-check.test.js` Signed-off-by: domenico --- .github/PULL_REQUEST_TEMPLATE.md | 66 ++++ .github/scripts/pr-readiness-check.js | 209 +++++++++++ .github/scripts/pr-readiness-check.test.js | 388 +++++++++++++++++++++ .github/workflows/pr-readiness-check.yml | 75 ++++ 4 files changed, 738 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/scripts/pr-readiness-check.js create mode 100644 .github/scripts/pr-readiness-check.test.js create mode 100644 .github/workflows/pr-readiness-check.yml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..b0fbcfc71f --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,66 @@ +## Summary + + + +## Type + + + +- [ ] `feat` — new user-facing feature +- [ ] `fix` — bug fix +- [ ] `refactor` — restructure without behavior change +- [ ] `chore` — build, deps, config, docs +- [ ] `perf` — performance improvement +- [ ] `test` — test coverage + +## Changes + + + +| File | Change | +|------|--------| +| | | + +## Migration Notes + + + +- [ ] Migration file added in `migrations/` directory +- [ ] Backward-compatible with current production schema +- [ ] NOT backward-compatible — breaking changes documented in Notes section +- [ ] Tested on a fresh database and on an existing one + +## Testing + + + +- [ ] `vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes +- [ ] `./vendor/bin/phpstan` passes (0 errors, with baseline) +- [ ] Manual testing performed (describe below) +- [ ] New tests added for changed behavior +- [ ] Regression tests added for bug fixes + + + +## AI Disclosure + + + +- [ ] No AI tools were used in this PR +- [ ] AI tools were used — details below + + + +## Notes + + diff --git a/.github/scripts/pr-readiness-check.js b/.github/scripts/pr-readiness-check.js new file mode 100644 index 0000000000..8cbf55502d --- /dev/null +++ b/.github/scripts/pr-readiness-check.js @@ -0,0 +1,209 @@ +'use strict'; + +// ── Helpers ─────────────────────────────────────────────────── + +function escapeRegex(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} + +function getChecked(items, body) { + return items.filter((item) => { + return new RegExp(`-\\s*\\[[xX]\\]\\s*${escapeRegex(item)}`).test(body); + }); +} + +function getUnchecked(items, body) { + return items.filter((item) => { + return !new RegExp(`-\\s*\\[[xX]\\]\\s*${escapeRegex(item)}`).test(body); + }); +} + +function isChecked(item, body) { + return new RegExp(`-\\s*\\[[xX]\\]\\s*${escapeRegex(item)}`).test(body); +} + +// ── Section validators ──────────────────────────────────────── + +function validateExactlyOne(items, body, {none, multiple}) { + const checked = getChecked(items, body); + if (checked.length === 0) return none; + if (checked.length > 1) return multiple; + return null; +} + +function validateAtLeastOne(items, body, {none}) { + if (getChecked(items, body).length === 0) return none; + return null; +} + +function validateAll(items, body, {prefix}) { + const unchecked = getUnchecked(items, body); + if (unchecked.length === 0) return null; + return [prefix, ...unchecked.map((m) => ` - ${m}`)].join('\n'); +} + +function hasNonEmptySection(sectionHeader, body) { + const re = new RegExp(`##\\s*${escapeRegex(sectionHeader)}\\s*\\n([\\s\\S]*?)(?=\\n##\\s|$)`); + const match = body.match(re); + if (!match) return false; + const content = match[1] + .replace(//g, '') + .trim(); + return content.length > 0; +} + +// ── Checklist items ─────────────────────────────────────────── + +const TYPE_ITEMS = [ + '`feat` — new user-facing feature', + '`fix` — bug fix', + '`refactor` — restructure without behavior change', + '`chore` — build, deps, config, docs', + '`perf` — performance improvement', + '`test` — test coverage', +]; + +const TYPE_FIX = '`fix` — bug fix'; +const TYPE_FEAT = '`feat` — new user-facing feature'; + +const TESTING_ITEMS = [ + '`vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes', + '`./vendor/bin/phpstan` passes (0 errors, with baseline)', + 'Manual testing performed (describe below)', + 'New tests added for changed behavior', + 'Regression tests added for bug fixes', +]; + +const REGRESSION_ITEM = 'Regression tests added for bug fixes'; + +const AI_ITEMS = [ + 'No AI tools were used in this PR', + 'AI tools were used — details below', +]; + +const MIGRATION_REQUIRED_ITEMS = [ + 'Migration file added in `migrations/` directory', + 'Tested on a fresh database and on an existing one', +]; + +const MIGRATION_COMPAT_ITEMS = [ + 'Backward-compatible with current production schema', + 'NOT backward-compatible — breaking changes documented in Notes section', +]; + +const NOT_BACKWARD_COMPATIBLE = 'NOT backward-compatible — breaking changes documented in Notes section'; + +// ── Main validator ──────────────────────────────────────────── + +/** + * @param {string} body - PR body markdown text + * @param {object} files + * @param {string[]} files.migrationFilenames - filenames under migrations/ from the PR diff + * @param {string[]} files.testFilesWithAdditions - test filenames (under tests/) that have additions > 0 + * @returns {string[]} error messages (empty = all checks pass) + */ +function validatePrChecklist(body, {migrationFilenames = [], testFilesWithAdditions = []} = {}) { + const errors = []; + + // ── Type: exactly one ──────────────────────────────────── + const typeErr = validateExactlyOne(TYPE_ITEMS, body, { + none: 'No PR type selected. Check exactly one item under **Type**.', + multiple: 'Multiple PR types selected. Check exactly one item under **Type**.', + }); + if (typeErr) errors.push(typeErr); + + const isFix = isChecked(TYPE_FIX, body); + const isFeat = isChecked(TYPE_FEAT, body); + + // ── Testing: at least one ──────────────────────────────── + const testErr = validateAtLeastOne(TESTING_ITEMS, body, { + none: 'No testing items checked. Check at least one item under **Testing**.', + }); + if (testErr) errors.push(testErr); + + // ── fix → regression tests checkbox must be checked ────── + if (isFix && !isChecked(REGRESSION_ITEM, body)) { + errors.push( + 'PR type is `fix` but "Regression tests added for bug fixes" is not checked.\n' + + 'Bug fixes must include regression tests.', + ); + } + + // ── feat/fix → test files must be present with additions ─ + if ((isFeat || isFix) && testFilesWithAdditions.length === 0) { + errors.push( + `PR type is \`${isFix ? 'fix' : 'feat'}\` but no test files with added lines found in the diff.\n` + + 'Features and bug fixes must include new or updated tests (under tests/).', + ); + } + + // ── AI Disclosure: exactly one ─────────────────────────── + const aiErr = validateExactlyOne(AI_ITEMS, body, { + none: 'AI disclosure not filled. Check one item under **AI Disclosure**.', + multiple: 'Both AI disclosure options checked. Select only one.', + }); + if (aiErr) errors.push(aiErr); + + // ── Migration: bidirectional enforcement ────────────────── + const hasMigrationSection = /## Migration Notes/.test(body); + const hasMigrationFiles = migrationFilenames.length > 0; + + if (hasMigrationSection && !hasMigrationFiles) { + errors.push( + 'Migration Notes section is present but no migration file found in migrations/ directory.\n' + + 'Either add a migration file (migrations/YYYYMMDDHHMMSS_description.php)\n' + + 'or delete the Migration Notes section if no migration is needed.', + ); + } + + if (hasMigrationFiles && !hasMigrationSection) { + errors.push( + 'PR contains migration files but the Migration Notes section is missing:\n' + + migrationFilenames.map((f) => ` - ${f}`).join('\n') + '\n\n' + + 'Add the Migration Notes section from the PR template and complete all checklist items.', + ); + } + + if (hasMigrationSection && hasMigrationFiles) { + const migErr = validateAll(MIGRATION_REQUIRED_ITEMS, body, { + prefix: 'Migration section present but not all items checked:', + }); + if (migErr) errors.push(migErr); + + const compatErr = validateExactlyOne(MIGRATION_COMPAT_ITEMS, body, { + none: 'Migration compatibility not specified. Check exactly one: backward-compatible OR not backward-compatible.', + multiple: 'Both migration compatibility options checked. Select only one.', + }); + if (compatErr) errors.push(compatErr); + + // ── NOT backward-compatible → Notes section must have content + if (isChecked(NOT_BACKWARD_COMPATIBLE, body) && !hasNonEmptySection('Notes', body)) { + errors.push( + 'Migration is marked as NOT backward-compatible but the Notes section is empty.\n' + + 'Document breaking changes, migration impact, and deployment steps in the Notes section.', + ); + } + } + + return errors; +} + +module.exports = { + validatePrChecklist, + getChecked, + getUnchecked, + isChecked, + validateExactlyOne, + validateAtLeastOne, + validateAll, + hasNonEmptySection, + TYPE_ITEMS, + TYPE_FIX, + TYPE_FEAT, + TESTING_ITEMS, + REGRESSION_ITEM, + AI_ITEMS, + MIGRATION_REQUIRED_ITEMS, + MIGRATION_COMPAT_ITEMS, + NOT_BACKWARD_COMPATIBLE, +}; diff --git a/.github/scripts/pr-readiness-check.test.js b/.github/scripts/pr-readiness-check.test.js new file mode 100644 index 0000000000..a9a14de166 --- /dev/null +++ b/.github/scripts/pr-readiness-check.test.js @@ -0,0 +1,388 @@ +'use strict'; + +const {describe, it} = require('node:test'); +const assert = require('node:assert/strict'); +const { + validatePrChecklist, + getChecked, + getUnchecked, + hasNonEmptySection, +} = require('./pr-readiness-check.js'); + +// ── Test fixtures ───────────────────────────────────────────── + +function validBody({ + type = '`fix` — bug fix', + testing = '`vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes', + regression = true, + ai = 'No AI tools were used in this PR', + migrationSection = false, + migrationChecked = false, + compat = null, + notes = '', + } = {}) { + let body = `## Summary\n\nFix something.\n\n## Type\n\n- [x] ${type}\n\n`; + body += `## Testing\n\n- [x] ${testing}\n`; + if (regression) { + body += '- [x] Regression tests added for bug fixes\n'; + } + body += '\n'; + body += `## AI Disclosure\n\n- [x] ${ai}\n\n`; + + if (migrationSection) { + body += '## Migration Notes\n\n'; + if (migrationChecked) { + body += '- [x] Migration file added in `migrations/` directory\n'; + body += '- [x] Tested on a fresh database and on an existing one\n'; + } else { + body += '- [ ] Migration file added in `migrations/` directory\n'; + body += '- [ ] Tested on a fresh database and on an existing one\n'; + } + if (compat === 'backward') { + body += '- [x] Backward-compatible with current production schema\n'; + body += '- [ ] NOT backward-compatible — breaking changes documented in Notes section\n'; + } else if (compat === 'breaking') { + body += '- [ ] Backward-compatible with current production schema\n'; + body += '- [x] NOT backward-compatible — breaking changes documented in Notes section\n'; + } else if (compat === 'both') { + body += '- [x] Backward-compatible with current production schema\n'; + body += '- [x] NOT backward-compatible — breaking changes documented in Notes section\n'; + } else { + body += '- [ ] Backward-compatible with current production schema\n'; + body += '- [ ] NOT backward-compatible — breaking changes documented in Notes section\n'; + } + } + + body += `## Notes\n\n${notes}\n`; + + return body; +} + +const TEST_FILES = ['tests/unit/SomeTest.php']; + +// ── Helper tests ────────────────────────────────────────────── + +describe('getChecked', () => { + it('finds checked items with [x]', () => { + const body = '- [x] alpha\n- [ ] beta\n- [X] gamma'; + assert.deepEqual(getChecked(['alpha', 'beta', 'gamma'], body), ['alpha', 'gamma']); + }); + + it('returns empty when nothing is checked', () => { + const body = '- [ ] alpha\n- [ ] beta'; + assert.deepEqual(getChecked(['alpha', 'beta'], body), []); + }); + + it('handles regex special characters in item text', () => { + const body = '- [x] `vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes'; + const result = getChecked( + ['`vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes'], + body, + ); + assert.equal(result.length, 1); + }); +}); + +describe('getUnchecked', () => { + it('finds unchecked items', () => { + const body = '- [x] alpha\n- [ ] beta'; + assert.deepEqual(getUnchecked(['alpha', 'beta'], body), ['beta']); + }); +}); + +describe('hasNonEmptySection', () => { + it('returns true when section has content', () => { + const body = '## Notes\n\nBreaking changes: removed column X.\n'; + assert.equal(hasNonEmptySection('Notes', body), true); + }); + + it('returns false when section is empty', () => { + const body = '## Notes\n\n'; + assert.equal(hasNonEmptySection('Notes', body), false); + }); + + it('returns false when section only has HTML comments', () => { + const body = '## Notes\n\n\n'; + assert.equal(hasNonEmptySection('Notes', body), false); + }); + + it('returns false when section is missing', () => { + assert.equal(hasNonEmptySection('Notes', '## Summary\n\nHello\n'), false); + }); + + it('returns true when section has content after a comment', () => { + const body = '## Notes\n\n\nActual breaking change here.\n'; + assert.equal(hasNonEmptySection('Notes', body), true); + }); +}); + +// ── validatePrChecklist ─────────────────────────────────────── + +describe('validatePrChecklist', () => { + describe('valid PRs', () => { + it('passes with all required sections filled (fix)', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + + it('passes with feat type and test files', () => { + const body = validBody({type: '`feat` — new user-facing feature', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + + it('passes with refactor type and no test files', () => { + const body = validBody({type: '`refactor` — restructure without behavior change', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.deepEqual(errors, []); + }); + + it('passes with AI tools used', () => { + const body = validBody({ai: 'AI tools were used — details below'}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + }); + + describe('Type section', () => { + it('fails when no type is selected', () => { + const body = '## Summary\n\n## Testing\n\n- [x] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [x] No AI tools were used in this PR\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('No PR type selected'))); + }); + + it('fails when multiple types are selected', () => { + let body = validBody(); + body = body.replace('## Type\n\n- [x] `fix` — bug fix', '## Type\n\n- [x] `fix` — bug fix\n- [x] `feat` — new user-facing feature'); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.ok(errors.some((e) => e.includes('Multiple PR types selected'))); + }); + }); + + describe('Testing section', () => { + it('fails when no testing item is checked', () => { + const body = '## Summary\n\n## Type\n\n- [x] `chore` — build, deps, config, docs\n\n## Testing\n\n- [ ] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [x] No AI tools were used in this PR\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('No testing items checked'))); + }); + }); + + describe('fix → regression tests mandatory', () => { + it('fails when type is fix but regression checkbox not checked', () => { + const body = validBody({regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.ok(errors.some((e) => e.includes('Regression tests added for bug fixes'))); + }); + + it('passes when type is fix and regression checkbox is checked', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + + it('does not require regression checkbox for non-fix types', () => { + const body = validBody({type: '`feat` — new user-facing feature', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.ok(!errors.some((e) => e.includes('Regression tests'))); + }); + }); + + describe('feat/fix → test files must be in diff', () => { + it('fails when type is fix but no test files with additions', () => { + const body = validBody(); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(errors.some((e) => e.includes('no test files with added lines'))); + }); + + it('fails when type is feat but no test files with additions', () => { + const body = validBody({type: '`feat` — new user-facing feature', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(errors.some((e) => e.includes('no test files with added lines'))); + }); + + it('passes when type is fix and test files have additions', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: ['tests/unit/FooTest.php']}); + assert.deepEqual(errors, []); + }); + + it('does not require test files for chore type', () => { + const body = validBody({type: '`chore` — build, deps, config, docs', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(!errors.some((e) => e.includes('no test files'))); + }); + + it('does not require test files for refactor type', () => { + const body = validBody({type: '`refactor` — restructure without behavior change', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(!errors.some((e) => e.includes('no test files'))); + }); + }); + + describe('AI Disclosure section', () => { + it('fails when no AI option is selected', () => { + const body = '## Summary\n\n## Type\n\n- [x] `chore` — build, deps, config, docs\n\n## Testing\n\n- [x] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [ ] No AI tools were used in this PR\n- [ ] AI tools were used — details below\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('AI disclosure not filled'))); + }); + + it('fails when both AI options are selected', () => { + const body = '## Summary\n\n## Type\n\n- [x] `chore` — build, deps, config, docs\n\n## Testing\n\n- [x] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [x] No AI tools were used in this PR\n- [x] AI tools were used — details below\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('Both AI disclosure options'))); + }); + }); + + describe('Migration — bidirectional enforcement', () => { + it('fails when section present but no migration files in diff', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'backward'}); + const errors = validatePrChecklist(body, {migrationFilenames: [], testFilesWithAdditions: TEST_FILES}); + assert.ok(errors.some((e) => e.includes('no migration file found'))); + }); + + it('fails when migration files in diff but no section in body', () => { + const body = validBody(); + const errors = validatePrChecklist(body, { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES, + }); + assert.ok(errors.some((e) => e.includes('Migration Notes section is missing'))); + }); + + it('lists the migration filenames when section is missing', () => { + const body = validBody(); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php', 'migrations/20260420130000_add_index.php'], + testFilesWithAdditions: TEST_FILES, + }; + const errors = validatePrChecklist(body, files); + const migError = errors.find((e) => e.includes('Migration Notes section is missing')); + assert.ok(migError.includes('20260420120000_add_column.php')); + assert.ok(migError.includes('20260420130000_add_index.php')); + }); + + it('passes when no section and no migration files', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + }); + + describe('Migration — checklist completeness', () => { + it('fails when required items are unchecked', () => { + const body = validBody({migrationSection: true, migrationChecked: false, compat: 'backward'}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('not all items checked'))); + }); + + it('passes when all items checked + backward-compatible', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'backward'}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + + it('passes when all items checked + NOT backward-compatible + notes filled', () => { + const body = validBody({ + migrationSection: true, + migrationChecked: true, + compat: 'breaking', + notes: 'Column X removed. Run migration before deploying.' + }); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + }); + + describe('Migration — compatibility selection', () => { + it('fails when no compat option is selected', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: null}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Migration compatibility not specified'))); + }); + + it('fails when both compat options are selected', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'both'}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Both migration compatibility'))); + }); + }); + + describe('NOT backward-compatible → Notes must have content', () => { + it('fails when breaking compat selected but Notes section is empty', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'breaking', notes: ''}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Notes section is empty'))); + }); + + it('fails when breaking compat selected but Notes has only HTML comments', () => { + const body = validBody({ + migrationSection: true, + migrationChecked: true, + compat: 'breaking', + notes: '' + }); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Notes section is empty'))); + }); + + it('passes when breaking compat selected and Notes has content', () => { + const body = validBody({ + migrationSection: true, + migrationChecked: true, + compat: 'breaking', + notes: 'Column removed. Deploy migration first.' + }); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + + it('does not require Notes content when backward-compatible', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'backward', notes: ''}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + }); + + describe('empty body', () => { + it('fails with errors for type, testing, and AI', () => { + const errors = validatePrChecklist('', {}); + assert.equal(errors.length, 3); + assert.ok(errors.some((e) => e.includes('No PR type selected'))); + assert.ok(errors.some((e) => e.includes('No testing items checked'))); + assert.ok(errors.some((e) => e.includes('AI disclosure not filled'))); + }); + }); +}); diff --git a/.github/workflows/pr-readiness-check.yml b/.github/workflows/pr-readiness-check.yml new file mode 100644 index 0000000000..9d179b0e7a --- /dev/null +++ b/.github/workflows/pr-readiness-check.yml @@ -0,0 +1,75 @@ +name: PR Readiness Checklist + +on: + pull_request: + types: [ opened, edited, reopened, synchronize, ready_for_review ] + +permissions: + contents: read + pull-requests: read + +jobs: + readiness-checklist: + name: Validate mandatory PR checklist + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate checklist + uses: actions/github-script@v7 + with: + script: | + const { validatePrChecklist } = require('./.github/scripts/pr-readiness-check.js'); + const pr = context.payload.pull_request; + + const labels = (pr.labels || []).map((l) => l.name); + if (labels.includes('checklist-exception')) { + core.notice('Bypassing checklist — PR has label: checklist-exception'); + return; + } + + const files = await github.paginate(github.rest.pulls.listFiles, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pr.number, + per_page: 100, + }); + + const migrationFilenames = files + .map((f) => f.filename) + .filter((name) => name.startsWith('migrations/') && name !== 'migrations/AbstractMatecatMigration.php'); + + const testFilesWithAdditions = files + .filter((f) => f.filename.startsWith('tests/') && f.additions > 0) + .map((f) => f.filename); + + const errors = validatePrChecklist(pr.body || '', { migrationFilenames, testFilesWithAdditions }); + + if (errors.length > 0) { + core.setFailed( + [ + 'PR readiness checklist incomplete:', + '', + ...errors, + '', + 'Update the PR body checklist. To bypass, apply label: checklist-exception', + ].join('\n'), + ); + } + + readiness-tests: + name: PR checklist script tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '24' + + - name: Run tests + run: node --test .github/scripts/pr-readiness-check.test.js From 798a5b35db71c148b5c41d08e89e23e147fb14fe Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 17:33:30 +0200 Subject: [PATCH 16/38] =?UTF-8?q?=F0=9F=93=9D=20docs(pr-template):=20simpl?= =?UTF-8?q?ify=20AI=20usage=20disclosure=20instructions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - update instructions to only require naming the AI agent/tool used - adjust example to remove implementation + test generation details 🐛 fix(pr-checks): ensure comments are fully removed in section validation - implement loop to repeatedly strip nested HTML comments in `pr-readiness-check.js` 🔧 chore(tests): exclude `.github/scripts` from jest transformations - update `jest.config.js` to add `.github/scripts/` to `transformIgnorePatterns` Signed-off-by: domenico --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++-- .github/scripts/pr-readiness-check.js | 11 +++++++---- jest.config.js | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index b0fbcfc71f..829c4f50f0 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -57,8 +57,8 @@ - [ ] No AI tools were used in this PR - [ ] AI tools were used — details below - + ## Notes diff --git a/.github/scripts/pr-readiness-check.js b/.github/scripts/pr-readiness-check.js index 8cbf55502d..5007679d2d 100644 --- a/.github/scripts/pr-readiness-check.js +++ b/.github/scripts/pr-readiness-check.js @@ -46,10 +46,13 @@ function hasNonEmptySection(sectionHeader, body) { const re = new RegExp(`##\\s*${escapeRegex(sectionHeader)}\\s*\\n([\\s\\S]*?)(?=\\n##\\s|$)`); const match = body.match(re); if (!match) return false; - const content = match[1] - .replace(//g, '') - .trim(); - return content.length > 0; + let cleaned = match[1]; + let prev; + do { + prev = cleaned; + cleaned = cleaned.replace(//g, ''); + } while (cleaned !== prev); + return cleaned.trim().length > 0; } // ── Checklist items ─────────────────────────────────────────── diff --git a/jest.config.js b/jest.config.js index 08f262730c..01096f3e40 100644 --- a/jest.config.js +++ b/jest.config.js @@ -11,7 +11,7 @@ module.exports = { '!/public/api/**', '!/public/**/*.min.js', ], - transformIgnorePatterns: ['node_modules/(?!@bundled-es-modules)/'], + transformIgnorePatterns: ['node_modules/(?!@bundled-es-modules)/', '.github/scripts/'], transform: { '^.+\\.js$': 'babel-jest', '.+\\.(css|styl|less|sass|scss)$': 'jest-transform-css', From d601fcb846664c2f5b95816c323f29d773ddff73 Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 17:46:57 +0200 Subject: [PATCH 17/38] =?UTF-8?q?=F0=9F=94=A7=20chore(jest):=20exclude=20.?= =?UTF-8?q?github/=20from=20Jest=20test=20discovery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add testPathIgnorePatterns to jest.config.js so Jest does not pick up CI validation scripts that use Node built-in test runner --- jest.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/jest.config.js b/jest.config.js index 01096f3e40..d8f345fd30 100644 --- a/jest.config.js +++ b/jest.config.js @@ -11,6 +11,7 @@ module.exports = { '!/public/api/**', '!/public/**/*.min.js', ], + testPathIgnorePatterns: ['/node_modules/', '/.github/'], transformIgnorePatterns: ['node_modules/(?!@bundled-es-modules)/', '.github/scripts/'], transform: { '^.+\\.js$': 'babel-jest', From dfad79f922e8565e43f87a601014543c5c3e0c95 Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 17:59:17 +0200 Subject: [PATCH 18/38] =?UTF-8?q?=F0=9F=94=A7=20chore(phpstan):=20exclude?= =?UTF-8?q?=20APIDoc=20build=20artifacts=20from=20analysis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add lib/View/APIDoc.php and lib/View/templates/_APIDoc.php to excludePaths in phpstan.neon (webpack build artifacts) - remove 5 stale baseline entries referencing excluded files --- phpstan-baseline.neon | 30 ------------------------------ phpstan.neon | 14 +++++++++++++- 2 files changed, 13 insertions(+), 31 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index f3a03bdae3..698eba5e97 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -29166,18 +29166,6 @@ parameters: count: 1 path: lib/View/API/V3/Json/QualitySummary.php - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: lib/View/APIDoc.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: lib/View/APIDoc.php - - message: '#^Method UploadHandler\:\:_isRightExtension\(\) has parameter \$fileUp with no type specified\.$#' identifier: missingType.parameter @@ -29387,21 +29375,3 @@ parameters: identifier: missingType.iterableValue count: 1 path: lib/View/fileupload/UploadHandler.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: lib/View/templates/_APIDoc.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: lib/View/templates/_APIDoc.php - - - - message: '#^Path in require_once\(\) "\.\./\.\./lib/Bootstrap\.php" is not a file or it does not exist\.$#' - identifier: requireOnce.fileNotFound - count: 1 - path: lib/View/templates/_APIDoc.php diff --git a/phpstan.neon b/phpstan.neon index 812bdeb9af..de3edeb82e 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -6,4 +6,16 @@ parameters: paths: - lib excludePaths: - - lib/View/APIDoc.php (?) \ No newline at end of file + - lib/View/APIDoc.php + - lib/View/templates/_APIDoc.php + # Flag @throws \Exception on public/protected methods when only + # a narrower exception (e.g. \InvalidArgumentException) is thrown + checkTooWideThrowTypesInProtectedAndPublicMethods: true + exceptions: + check: + # Report when code throws an exception that has no + # matching @throws tag in the method's PHPDoc + missingCheckedExceptionInThrows: true + # Report when @throws declares a broader type than + # what is actually thrown (applies to all methods) + tooWideThrowType: true From 9367b1582f1172cedde0b6ed7197916715bf24cd Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 18:07:25 +0200 Subject: [PATCH 19/38] =?UTF-8?q?=F0=9F=94=A7=20chore(phpstan):=20mark=20A?= =?UTF-8?q?PIDoc.php=20exclude=20path=20as=20optional?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - APIDoc.php is a webpack build artifact that may not exist in CI - append (?) to its excludePaths entry so PHPStan tolerates absence --- phpstan.neon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpstan.neon b/phpstan.neon index de3edeb82e..e6c38f6a44 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -6,7 +6,7 @@ parameters: paths: - lib excludePaths: - - lib/View/APIDoc.php + - lib/View/APIDoc.php (?) - lib/View/templates/_APIDoc.php # Flag @throws \Exception on public/protected methods when only # a narrower exception (e.g. \InvalidArgumentException) is thrown From b8b3cbb8b288a580a292a92b330c58f3a46c7d0b Mon Sep 17 00:00:00 2001 From: Domenico Lupinetti <8008416+Ostico@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:08:38 +0200 Subject: [PATCH 20/38] Update .github/workflows/pr-readiness-check.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/pr-readiness-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-readiness-check.yml b/.github/workflows/pr-readiness-check.yml index 9d179b0e7a..d65af01026 100644 --- a/.github/workflows/pr-readiness-check.yml +++ b/.github/workflows/pr-readiness-check.yml @@ -2,7 +2,7 @@ name: PR Readiness Checklist on: pull_request: - types: [ opened, edited, reopened, synchronize, ready_for_review ] + types: [ opened, edited, reopened, synchronize, ready_for_review, labeled, unlabeled ] permissions: contents: read From 09affd9e4cecad550e5f097c8fa6af202fc83312 Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 18:35:40 +0200 Subject: [PATCH 21/38] =?UTF-8?q?=F0=9F=91=B7=20ci:=20add=20conventional-c?= =?UTF-8?q?ommit=20message=20enforcement=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - validate PR title (required gate) and commit messages (hygiene gate) against emoji-prefixed conventional-commit spec - add commit-message-check.js with emoji↔type map, VS16 normalization, format/length/case/period validation, merge-commit skip - add 35 unit tests covering all 12 types, edge cases, and error collection - bypass via `commit-message-exception` label --- .github/scripts/commit-message-check.js | 166 +++++++++++++ .github/scripts/commit-message-check.test.js | 239 +++++++++++++++++++ .github/workflows/commit-message-check.yml | 112 +++++++++ 3 files changed, 517 insertions(+) create mode 100644 .github/scripts/commit-message-check.js create mode 100644 .github/scripts/commit-message-check.test.js create mode 100644 .github/workflows/commit-message-check.yml diff --git a/.github/scripts/commit-message-check.js b/.github/scripts/commit-message-check.js new file mode 100644 index 0000000000..299a10d78f --- /dev/null +++ b/.github/scripts/commit-message-check.js @@ -0,0 +1,166 @@ +'use strict'; + +// ── Canonical emoji ↔ type map (from conventional-commit.prompt.md) ── + +const EMOJI_TYPE_MAP = { + '\u{1F3D7}\uFE0F': 'build', // 🏗️ + '\u{1F527}': 'chore', // 🔧 + '\u{1F477}': 'ci', // 👷 + '\u{1F4DD}': 'docs', // 📝 + '\u2728': 'feat', // ✨ + '\u{1F41B}': 'fix', // 🐛 + '\u26A1\uFE0F': 'perf', // ⚡️ + '\u267B\uFE0F': 'refactor', // ♻️ + '\u23EA\uFE0F': 'revert', // ⏪️ + '\u{1F484}': 'style', // 💄 + '\u2705': 'test', // ✅ + '\u{1F310}': 'i18n', // 🌐 +}; + +const TYPE_EMOJI_MAP = Object.fromEntries( + Object.entries(EMOJI_TYPE_MAP).map(([emoji, type]) => [type, emoji]), +); + +const VALID_TYPES = Object.values(EMOJI_TYPE_MAP); + +const MAX_SUBJECT_LENGTH = 100; + +// ── Helpers ────────────────────────────────────────────────────────── + +/** + * Strip Unicode variation selector 16 (U+FE0F) for comparison. + * Some editors/terminals include it, others don't. + */ +function stripVS16(str) { + return str.replace(/\uFE0F/g, ''); +} + +/** + * Find the conventional type for a given emoji. + * Matches with or without the trailing VS16 character. + */ +function findTypeForEmoji(emoji) { + const normalized = stripVS16(emoji); + for (const [key, type] of Object.entries(EMOJI_TYPE_MAP)) { + if (stripVS16(key) === normalized) { + return type; + } + } + return null; +} + +/** + * Return true when the subject line is an auto-generated merge commit + * that should be exempt from conventional-commit rules. + */ +function isAutoGenerated(subject) { + return /^Merge /.test(subject); +} + +// ── Core validation ────────────────────────────────────────────────── + +/** + * Validate a commit message (or PR title) against the project's + * conventional-commit spec with emoji prefixes. + * + * Only the first line (subject) is validated. + * + * @param {string} message Full commit message or PR title + * @returns {{ valid: boolean, errors: string[], skipped: boolean }} + */ +function validateCommitMessage(message) { + const errors = []; + + if (!message || typeof message !== 'string') { + return {valid: false, errors: ['Empty or invalid commit message'], skipped: false}; + } + + const subject = message.split('\n')[0].trim(); + + if (!subject) { + return {valid: false, errors: ['Empty subject line'], skipped: false}; + } + + // Auto-generated merge commits are exempt + if (isAutoGenerated(subject)) { + return {valid: true, errors: [], skipped: true}; + } + + // ── Length ──────────────────────────────────────────────────── + if (subject.length > MAX_SUBJECT_LENGTH) { + errors.push( + `Subject exceeds ${MAX_SUBJECT_LENGTH} characters (${subject.length})`, + ); + } + + // ── Split emoji from rest ──────────────────────────────────── + const firstSpace = subject.indexOf(' '); + if (firstSpace === -1) { + errors.push( + 'Subject must start with an emoji followed by a space', + ); + return {valid: false, errors, skipped: false}; + } + + const emoji = subject.slice(0, firstSpace); + const rest = subject.slice(firstSpace + 1); + + // ── Emoji lookup ───────────────────────────────────────────── + const emojiType = findTypeForEmoji(emoji); + if (!emojiType) { + const validList = Object.entries(EMOJI_TYPE_MAP) + .map(([e, t]) => `${e} ${t}`) + .join(', '); + errors.push(`Unknown emoji "${emoji}". Valid: ${validList}`); + } + + // ── Parse: [()][!]: ─────────────── + const restMatch = rest.match(/^(\w+)(?:\(([^)]+)\))?(!)?: (.+)$/); + if (!restMatch) { + errors.push( + 'Format after emoji must be: [()][!]: ', + ); + return {valid: false, errors, skipped: false}; + } + + const [, type, , , description] = restMatch; + + // ── Type enum ──────────────────────────────────────────────── + if (!VALID_TYPES.includes(type)) { + errors.push( + `Invalid type "${type}". Valid: ${VALID_TYPES.join(', ')}`, + ); + } + + // ── Emoji ↔ type consistency ───────────────────────────────── + if (emojiType && VALID_TYPES.includes(type) && emojiType !== type) { + const correctEmoji = TYPE_EMOJI_MAP[type] || '?'; + errors.push( + `Emoji ${emoji} is for "${emojiType}", not "${type}". ` + + `Use ${correctEmoji} for "${type}"`, + ); + } + + // ── No capitalization ──────────────────────────────────────── + if (description && /^[A-Z]/.test(description)) { + errors.push('Description must start with a lowercase letter'); + } + + // ── No trailing period ─────────────────────────────────────── + if (description && description.endsWith('.')) { + errors.push('Description must not end with a period'); + } + + return {valid: errors.length === 0, errors, skipped: false}; +} + +module.exports = { + EMOJI_TYPE_MAP, + TYPE_EMOJI_MAP, + VALID_TYPES, + MAX_SUBJECT_LENGTH, + validateCommitMessage, + findTypeForEmoji, + isAutoGenerated, + stripVS16, +}; diff --git a/.github/scripts/commit-message-check.test.js b/.github/scripts/commit-message-check.test.js new file mode 100644 index 0000000000..93c69678ca --- /dev/null +++ b/.github/scripts/commit-message-check.test.js @@ -0,0 +1,239 @@ +'use strict'; + +const {describe, it} = require('node:test'); +const assert = require('node:assert/strict'); +const { + EMOJI_TYPE_MAP, + TYPE_EMOJI_MAP, + VALID_TYPES, + MAX_SUBJECT_LENGTH, + validateCommitMessage, + findTypeForEmoji, + isAutoGenerated, + stripVS16, +} = require('./commit-message-check.js'); + +// ── stripVS16 ───────────────────────────────────────────────── + +describe('stripVS16', () => { + it('removes VS16 from string', () => { + assert.equal(stripVS16('\u26A1\uFE0F'), '\u26A1'); + }); + + it('leaves strings without VS16 unchanged', () => { + assert.equal(stripVS16('\u2728'), '\u2728'); + }); + + it('removes multiple VS16 characters', () => { + assert.equal(stripVS16('\uFE0Fa\uFE0Fb\uFE0F'), 'ab'); + }); +}); + +// ── findTypeForEmoji ────────────────────────────────────────── + +describe('findTypeForEmoji', () => { + it('finds type for each canonical emoji', () => { + for (const [emoji, type] of Object.entries(EMOJI_TYPE_MAP)) { + assert.equal(findTypeForEmoji(emoji), type, `${emoji} should map to ${type}`); + } + }); + + it('finds type when VS16 is stripped from input', () => { + assert.equal(findTypeForEmoji('\u26A1'), 'perf'); + }); + + it('finds type when VS16 is added to input', () => { + assert.equal(findTypeForEmoji('\u2728\uFE0F'), 'feat'); + }); + + it('returns null for unknown emoji', () => { + assert.equal(findTypeForEmoji('\u{1F600}'), null); + }); +}); + +// ── isAutoGenerated ─────────────────────────────────────────── + +describe('isAutoGenerated', () => { + it('detects merge commit', () => { + assert.equal(isAutoGenerated('Merge branch \'main\' into feature'), true); + }); + + it('detects merge pull request', () => { + assert.equal(isAutoGenerated('Merge pull request #42 from org/branch'), true); + }); + + it('rejects normal message', () => { + assert.equal(isAutoGenerated('\u2728 feat: add login'), false); + }); +}); + +// ── EMOJI_TYPE_MAP / TYPE_EMOJI_MAP consistency ─────────────── + +describe('map consistency', () => { + it('TYPE_EMOJI_MAP is the reverse of EMOJI_TYPE_MAP', () => { + for (const [emoji, type] of Object.entries(EMOJI_TYPE_MAP)) { + assert.equal(TYPE_EMOJI_MAP[type], emoji); + } + }); + + it('VALID_TYPES contains all map values', () => { + const fromMap = Object.values(EMOJI_TYPE_MAP).sort(); + assert.deepEqual([...VALID_TYPES].sort(), fromMap); + }); + + it('has 12 type entries', () => { + assert.equal(VALID_TYPES.length, 12); + }); +}); + +// ── validateCommitMessage – valid messages ──────────────────── + +describe('validateCommitMessage – valid', () => { + it('simple feat', () => { + const r = validateCommitMessage('\u2728 feat: add user login'); + assert.equal(r.valid, true); + assert.equal(r.errors.length, 0); + assert.equal(r.skipped, false); + }); + + it('fix with scope', () => { + const r = validateCommitMessage('\u{1F41B} fix(auth): handle expired token'); + assert.equal(r.valid, true); + }); + + it('breaking change with !', () => { + const r = validateCommitMessage('\u2728 feat(api)!: remove legacy endpoint'); + assert.equal(r.valid, true); + }); + + it('all 12 types accepted', () => { + const messages = [ + ['\u{1F3D7}\uFE0F', 'build'], + ['\u{1F527}', 'chore'], + ['\u{1F477}', 'ci'], + ['\u{1F4DD}', 'docs'], + ['\u2728', 'feat'], + ['\u{1F41B}', 'fix'], + ['\u26A1\uFE0F', 'perf'], + ['\u267B\uFE0F', 'refactor'], + ['\u23EA\uFE0F', 'revert'], + ['\u{1F484}', 'style'], + ['\u2705', 'test'], + ['\u{1F310}', 'i18n'], + ]; + for (const [emoji, type] of messages) { + const r = validateCommitMessage(`${emoji} ${type}: do something`); + assert.equal(r.valid, true, `${emoji} ${type} should be valid`); + } + }); + + it('merge commit is skipped', () => { + const r = validateCommitMessage('Merge branch \'main\' into feature'); + assert.equal(r.valid, true); + assert.equal(r.skipped, true); + assert.equal(r.errors.length, 0); + }); + + it('multi-line message validates only subject', () => { + const r = validateCommitMessage('\u{1F41B} fix: resolve crash\n\nDetailed body here.'); + assert.equal(r.valid, true); + }); + + it('exactly 100 characters is valid', () => { + const desc = 'a'.repeat(100 - '\u2728 feat: '.length); + const r = validateCommitMessage(`\u2728 feat: ${desc}`); + assert.equal(r.valid, true); + }); + + it('emoji without VS16 matches type with VS16 in map', () => { + const r = validateCommitMessage('\u26A1 perf: optimize query'); + assert.equal(r.valid, true); + }); + + it('emoji with VS16 matches type without VS16 in map', () => { + const r = validateCommitMessage('\u2728\uFE0F feat: add feature'); + assert.equal(r.valid, true); + }); +}); + +// ── validateCommitMessage – invalid messages ────────────────── + +describe('validateCommitMessage – invalid', () => { + it('empty message', () => { + const r = validateCommitMessage(''); + assert.equal(r.valid, false); + assert.ok(r.errors[0].includes('Empty')); + }); + + it('null message', () => { + const r = validateCommitMessage(null); + assert.equal(r.valid, false); + }); + + it('undefined message', () => { + const r = validateCommitMessage(undefined); + assert.equal(r.valid, false); + }); + + it('no space after emoji', () => { + const r = validateCommitMessage('\u2728feat: add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Format after emoji'))); + }); + + it('unknown emoji', () => { + const r = validateCommitMessage('\u{1F600} feat: add smile'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Unknown emoji'))); + }); + + it('invalid type', () => { + const r = validateCommitMessage('\u2728 feature: add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Invalid type'))); + }); + + it('emoji-type mismatch', () => { + const r = validateCommitMessage('\u{1F41B} feat: add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('not "feat"'))); + }); + + it('capitalized description', () => { + const r = validateCommitMessage('\u2728 feat: Add user login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('lowercase'))); + }); + + it('trailing period', () => { + const r = validateCommitMessage('\u2728 feat: add user login.'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('period'))); + }); + + it('exceeds 100 characters', () => { + const desc = 'a'.repeat(101 - '\u2728 feat: '.length); + const r = validateCommitMessage(`\u2728 feat: ${desc}`); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('exceeds'))); + }); + + it('missing colon after type', () => { + const r = validateCommitMessage('\u2728 feat add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Format'))); + }); + + it('emoji only, no rest', () => { + const r = validateCommitMessage('\u2728'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('space'))); + }); + + it('collects multiple errors', () => { + const desc = 'A'.repeat(95); + const r = validateCommitMessage(`\u{1F41B} feat: ${desc}.`); + assert.equal(r.valid, false); + assert.ok(r.errors.length >= 3, `expected >= 3 errors, got ${r.errors.length}: ${r.errors.join('; ')}`); + }); +}); diff --git a/.github/workflows/commit-message-check.yml b/.github/workflows/commit-message-check.yml new file mode 100644 index 0000000000..532bc6dd53 --- /dev/null +++ b/.github/workflows/commit-message-check.yml @@ -0,0 +1,112 @@ +name: Commit Message Check + +on: + pull_request: + types: [opened, edited, reopened, synchronize] + +permissions: + contents: read + pull-requests: read + +jobs: + pr-title: + name: Validate PR title (required) + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate PR title + uses: actions/github-script@v7 + with: + script: | + const { validateCommitMessage } = require('./.github/scripts/commit-message-check.js'); + const pr = context.payload.pull_request; + + const labels = (pr.labels || []).map((l) => l.name); + if (labels.includes('commit-message-exception')) { + core.notice('Bypassing PR title check — label: commit-message-exception'); + return; + } + + const result = validateCommitMessage(pr.title); + if (!result.valid) { + const lines = [ + '## PR title does not follow conventional-commit format', + '', + 'Expected: ` [()][!]: `', + '', + '**Errors:**', + ...result.errors.map((e) => `- ${e}`), + '', + 'See `.github/prompts/conventional-commit.prompt.md` for the full spec.', + ]; + core.setFailed(lines.join('\n')); + } + + commit-messages: + name: Validate commit messages (hygiene) + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate commits + uses: actions/github-script@v7 + with: + script: | + const { validateCommitMessage } = require('./.github/scripts/commit-message-check.js'); + const pr = context.payload.pull_request; + + const labels = (pr.labels || []).map((l) => l.name); + if (labels.includes('commit-message-exception')) { + core.notice('Bypassing commit message check — label: commit-message-exception'); + return; + } + + const commits = await github.paginate(github.rest.pulls.listCommits, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pr.number, + per_page: 100, + }); + + const failures = []; + for (const c of commits) { + const msg = c.commit.message; + const result = validateCommitMessage(msg); + if (result.skipped) continue; + if (!result.valid) { + const sha = c.sha.slice(0, 7); + failures.push(`\`${sha}\`: ${result.errors.join('; ')}`); + } + } + + if (failures.length > 0) { + const lines = [ + `## ${failures.length} commit message(s) violate conventional-commit format`, + '', + ...failures.map((f) => `- ${f}`), + '', + '> This is a hygiene gate. Fix via interactive rebase or amend.', + '> Add label `commit-message-exception` to bypass.', + ]; + core.setFailed(lines.join('\n')); + } + + commit-message-tests: + name: Unit tests for commit-message-check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '24' + + - name: Run tests + run: node --test .github/scripts/commit-message-check.test.js From 8a1c3e868ebd928958838d49f0307047a8ba7868 Mon Sep 17 00:00:00 2001 From: domenico Date: Mon, 20 Apr 2026 18:49:23 +0200 Subject: [PATCH 22/38] =?UTF-8?q?=F0=9F=90=9B=20fix(ci):=20relax=20commit?= =?UTF-8?q?=20message=20check=20for=20Copilot=20and=20GitHub=20web=20edits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add requireEmoji option (default true) to validateCommitMessage so PR title stays strict while commit messages accept emoji-less conventional-commit format (e.g. "docs(qa): ...") - auto-skip GitHub web UI patterns (Update/Create/Delete/Rename) in relaxed mode - update workflow to pass requireEmoji: false for commit-messages job - add 18 new tests for relaxed mode and isGitHubWebEdit (53 total) --- .github/scripts/commit-message-check.js | 62 +++++------ .github/scripts/commit-message-check.test.js | 106 ++++++++++++++++++- .github/workflows/commit-message-check.yml | 2 +- 3 files changed, 134 insertions(+), 36 deletions(-) diff --git a/.github/scripts/commit-message-check.js b/.github/scripts/commit-message-check.js index 299a10d78f..1023a7559f 100644 --- a/.github/scripts/commit-message-check.js +++ b/.github/scripts/commit-message-check.js @@ -49,26 +49,17 @@ function findTypeForEmoji(emoji) { return null; } -/** - * Return true when the subject line is an auto-generated merge commit - * that should be exempt from conventional-commit rules. - */ function isAutoGenerated(subject) { return /^Merge /.test(subject); } +function isGitHubWebEdit(subject) { + return /^(Update|Create|Delete|Rename) .+/.test(subject); +} + // ── Core validation ────────────────────────────────────────────────── -/** - * Validate a commit message (or PR title) against the project's - * conventional-commit spec with emoji prefixes. - * - * Only the first line (subject) is validated. - * - * @param {string} message Full commit message or PR title - * @returns {{ valid: boolean, errors: string[], skipped: boolean }} - */ -function validateCommitMessage(message) { +function validateCommitMessage(message, {requireEmoji = true} = {}) { const errors = []; if (!message || typeof message !== 'string') { @@ -81,72 +72,74 @@ function validateCommitMessage(message) { return {valid: false, errors: ['Empty subject line'], skipped: false}; } - // Auto-generated merge commits are exempt if (isAutoGenerated(subject)) { return {valid: true, errors: [], skipped: true}; } - // ── Length ──────────────────────────────────────────────────── + if (!requireEmoji && isGitHubWebEdit(subject)) { + return {valid: true, errors: [], skipped: true}; + } + if (subject.length > MAX_SUBJECT_LENGTH) { errors.push( `Subject exceeds ${MAX_SUBJECT_LENGTH} characters (${subject.length})`, ); } - // ── Split emoji from rest ──────────────────────────────────── const firstSpace = subject.indexOf(' '); if (firstSpace === -1) { errors.push( - 'Subject must start with an emoji followed by a space', + requireEmoji + ? 'Subject must start with an emoji followed by a space' + : 'Subject must contain a space', ); return {valid: false, errors, skipped: false}; } - const emoji = subject.slice(0, firstSpace); + const firstToken = subject.slice(0, firstSpace); const rest = subject.slice(firstSpace + 1); - // ── Emoji lookup ───────────────────────────────────────────── - const emojiType = findTypeForEmoji(emoji); - if (!emojiType) { + const emojiType = findTypeForEmoji(firstToken); + const hasEmoji = emojiType !== null; + + if (requireEmoji && !hasEmoji) { const validList = Object.entries(EMOJI_TYPE_MAP) .map(([e, t]) => `${e} ${t}`) .join(', '); - errors.push(`Unknown emoji "${emoji}". Valid: ${validList}`); + errors.push(`Unknown emoji "${firstToken}". Valid: ${validList}`); } - // ── Parse: [()][!]: ─────────────── - const restMatch = rest.match(/^(\w+)(?:\(([^)]+)\))?(!)?: (.+)$/); - if (!restMatch) { + const textToParse = hasEmoji ? rest : subject; + const formatMatch = textToParse.match(/^(\w+)(?:\(([^)]+)\))?(!)?: (.+)$/); + if (!formatMatch) { errors.push( - 'Format after emoji must be: [()][!]: ', + hasEmoji + ? 'Format after emoji must be: [()][!]: ' + : 'Format must be: [()][!]: ', ); return {valid: false, errors, skipped: false}; } - const [, type, , , description] = restMatch; + const [, type, , , description] = formatMatch; - // ── Type enum ──────────────────────────────────────────────── if (!VALID_TYPES.includes(type)) { errors.push( `Invalid type "${type}". Valid: ${VALID_TYPES.join(', ')}`, ); } - // ── Emoji ↔ type consistency ───────────────────────────────── - if (emojiType && VALID_TYPES.includes(type) && emojiType !== type) { + if (hasEmoji && emojiType && VALID_TYPES.includes(type) && emojiType !== type) { const correctEmoji = TYPE_EMOJI_MAP[type] || '?'; errors.push( - `Emoji ${emoji} is for "${emojiType}", not "${type}". ` + + `Emoji ${firstToken} is for "${emojiType}", not "${type}". ` + `Use ${correctEmoji} for "${type}"`, ); } - // ── No capitalization ──────────────────────────────────────── if (description && /^[A-Z]/.test(description)) { errors.push('Description must start with a lowercase letter'); } - // ── No trailing period ─────────────────────────────────────── if (description && description.endsWith('.')) { errors.push('Description must not end with a period'); } @@ -162,5 +155,6 @@ module.exports = { validateCommitMessage, findTypeForEmoji, isAutoGenerated, + isGitHubWebEdit, stripVS16, }; diff --git a/.github/scripts/commit-message-check.test.js b/.github/scripts/commit-message-check.test.js index 93c69678ca..6128c8170b 100644 --- a/.github/scripts/commit-message-check.test.js +++ b/.github/scripts/commit-message-check.test.js @@ -10,6 +10,7 @@ const { validateCommitMessage, findTypeForEmoji, isAutoGenerated, + isGitHubWebEdit, stripVS16, } = require('./commit-message-check.js'); @@ -178,7 +179,7 @@ describe('validateCommitMessage – invalid', () => { it('no space after emoji', () => { const r = validateCommitMessage('\u2728feat: add login'); assert.equal(r.valid, false); - assert.ok(r.errors.some(e => e.includes('Format after emoji'))); + assert.ok(r.errors.some(e => e.includes('Format'))); }); it('unknown emoji', () => { @@ -237,3 +238,106 @@ describe('validateCommitMessage – invalid', () => { assert.ok(r.errors.length >= 3, `expected >= 3 errors, got ${r.errors.length}: ${r.errors.join('; ')}`); }); }); + +// ── isGitHubWebEdit ─────────────────────────────────────────── + +describe('isGitHubWebEdit', () => { + it('detects Update pattern', () => { + assert.equal(isGitHubWebEdit('Update pr-readiness-check.yml'), true); + }); + + it('detects Create pattern', () => { + assert.equal(isGitHubWebEdit('Create new-file.md'), true); + }); + + it('detects Delete pattern', () => { + assert.equal(isGitHubWebEdit('Delete old-file.js'), true); + }); + + it('detects Rename pattern', () => { + assert.equal(isGitHubWebEdit('Rename foo.js to bar.js'), true); + }); + + it('rejects normal commit', () => { + assert.equal(isGitHubWebEdit('fix: update login flow'), false); + }); + + it('rejects partial match at wrong position', () => { + assert.equal(isGitHubWebEdit('Please Update the file'), false); + }); +}); + +// ── validateCommitMessage – relaxed mode (requireEmoji: false) ─ + +describe('validateCommitMessage – relaxed mode', () => { + const relaxed = {requireEmoji: false}; + + it('accepts emoji-less conventional commit', () => { + const r = validateCommitMessage('docs(qa): add full phpdoc for shared ICU detector', relaxed); + assert.equal(r.valid, true); + assert.equal(r.skipped, false); + }); + + it('accepts emoji-less commit with scope and !', () => { + const r = validateCommitMessage('feat(api)!: remove legacy endpoint', relaxed); + assert.equal(r.valid, true); + }); + + it('accepts emoji-less commit without scope', () => { + const r = validateCommitMessage('refactor: share ICU source detection logic across LQA flows', relaxed); + assert.equal(r.valid, true); + }); + + it('still accepts emoji commits in relaxed mode', () => { + const r = validateCommitMessage('\u2728 feat: add user login', relaxed); + assert.equal(r.valid, true); + }); + + it('still validates emoji-type consistency in relaxed mode', () => { + const r = validateCommitMessage('\u{1F41B} feat: wrong emoji', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('not "feat"'))); + }); + + it('skips GitHub web edit in relaxed mode', () => { + const r = validateCommitMessage('Update .github/workflows/pr-readiness-check.yml', relaxed); + assert.equal(r.valid, true); + assert.equal(r.skipped, true); + }); + + it('does NOT skip GitHub web edit in strict mode', () => { + const r = validateCommitMessage('Update .github/workflows/pr-readiness-check.yml'); + assert.equal(r.valid, false); + }); + + it('still rejects invalid type in relaxed mode', () => { + const r = validateCommitMessage('feature: add login', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Invalid type'))); + }); + + it('still rejects capitalized description in relaxed mode', () => { + const r = validateCommitMessage('fix: Update broken thing', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('lowercase'))); + }); + + it('still rejects trailing period in relaxed mode', () => { + const r = validateCommitMessage('fix: update broken thing.', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('period'))); + }); + + it('still rejects over-length in relaxed mode', () => { + const desc = 'a'.repeat(96); + const r = validateCommitMessage(`fix: ${desc}`, relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('exceeds'))); + }); + + it('skips merge commits in relaxed mode', () => { + const r = validateCommitMessage('Merge branch \'main\' into feature', relaxed); + assert.equal(r.valid, true); + assert.equal(r.skipped, true); + }); +}); diff --git a/.github/workflows/commit-message-check.yml b/.github/workflows/commit-message-check.yml index 532bc6dd53..2f39758ac7 100644 --- a/.github/workflows/commit-message-check.yml +++ b/.github/workflows/commit-message-check.yml @@ -76,7 +76,7 @@ jobs: const failures = []; for (const c of commits) { const msg = c.commit.message; - const result = validateCommitMessage(msg); + const result = validateCommitMessage(msg, {requireEmoji: false}); if (result.skipped) continue; if (!result.valid) { const sha = c.sha.slice(0, 7); From dec166ece1e60683c2280e177d527b774e30c9ae Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 16:01:48 +0200 Subject: [PATCH 23/38] =?UTF-8?q?=F0=9F=94=A7=20chore(phpstan):=20add=20@t?= =?UTF-8?q?hrows=20\Throwable=20to=20FastAnalysis=20transaction=20callers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Declare checked exceptions on all methods using Database::transaction(), which re-throws \Throwable on rollback. Remove 2 stale baseline entries now covered by the broader @throws declaration. --- lib/Model/DataAccess/Database.php | 2 ++ .../AsyncTasks/Workers/Analysis/FastAnalysis.php | 8 ++++---- phpstan-baseline.neon | 12 ------------ 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/lib/Model/DataAccess/Database.php b/lib/Model/DataAccess/Database.php index b302f129bd..9537be4e64 100644 --- a/lib/Model/DataAccess/Database.php +++ b/lib/Model/DataAccess/Database.php @@ -185,6 +185,8 @@ public function rollback(): void /** * @Override * {@inheritdoc} + * + * @throws \Throwable Re-throws the original exception after rollback */ public function transaction(callable $callback): mixed { diff --git a/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php b/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php index c2f2f7d181..0d2b614db8 100644 --- a/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php +++ b/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php @@ -137,7 +137,7 @@ protected function __construct(string $configFile, ?string $contextIndex = null) * @param array|null $args * * @return void - * @throws Exception + * @throws \Throwable */ public function main(array $args = null): void { @@ -410,7 +410,7 @@ public function cleanShutDown(): void } /** - * @throws ReflectionException + * @throws \Throwable */ protected function _updateProject($pid, $status): void { @@ -476,7 +476,7 @@ protected function _executeInsert($tuple_list, $bind_values): void * @param array|null $subfiltering_handlers * @param bool $icu_enabled * @return int - * @throws Exception + * @throws \Throwable */ protected function _insertFastAnalysis( ProjectStruct $projectStruct, @@ -888,7 +888,7 @@ protected function _getQueueAddressesByPriority(int $queueLen, int $id_mt_engine * @param int $limit * * @return array - * @throws ReflectionException + * @throws \Throwable */ protected function _getLockProjectForVolumeAnalysis(int $limit = 1): array { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 698eba5e97..3b08c3fc23 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -19818,12 +19818,6 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php - - - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:_getLockProjectForVolumeAnalysis\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' - identifier: missingType.checkedException - count: 4 - path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php - - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:_getSegmentsForFastVolumeAnalysis\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -19908,12 +19902,6 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php - - - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:main\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' - identifier: missingType.checkedException - count: 1 - path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php - - message: '#^PHPDoc tag @var has invalid value \(\$myMemory MyMemory\)\: Unexpected token "\$myMemory", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError From 12c904533e6e217a42384510403ece6c6f415320 Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 16:17:19 +0200 Subject: [PATCH 24/38] =?UTF-8?q?=F0=9F=91=B7=20ci(test-guard):=20add=20te?= =?UTF-8?q?st=20adequacy=20gate=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - run PHPUnit with Xdebug coverage on pull requests - invoke ostico/test-guard@v1.0.1 with 80% coverage threshold - enable AI-powered test adequacy analysis --- .github/workflows/test-guard.yml | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/test-guard.yml diff --git a/.github/workflows/test-guard.yml b/.github/workflows/test-guard.yml new file mode 100644 index 0000000000..b262ca4355 --- /dev/null +++ b/.github/workflows/test-guard.yml @@ -0,0 +1,47 @@ +name: Test Guard + +on: + pull_request: + types: [ opened, synchronize ] + +permissions: + contents: read + pull-requests: write + statuses: write + +jobs: + test-guard: + name: Test adequacy gate + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: '${{ secrets.CI_USER_TOKEN_MATECATBOT || github.token }}' + submodules: recursive + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + extensions: curl, gd, intl, mbstring, readline, xml, zip, json, redis + coverage: xdebug + tools: composer + + - name: Install dependencies + run: composer install --no-interaction --prefer-dist + + - name: Run PHPUnit with coverage + run: | + vendor/bin/phpunit \ + --exclude-group=ExternalServices \ + --coverage-clover=coverage.xml + + - name: Test Guard + uses: ostico/test-guard@v1.0.1 + with: + coverage-file: coverage.xml + coverage-threshold: '80' + ai-enabled: 'true' From 8012fb84c5c201d1a2ab4f4b3688c78521cbabc3 Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 16:42:48 +0200 Subject: [PATCH 25/38] =?UTF-8?q?=F0=9F=91=B7=20ci(test-guard):=20integrat?= =?UTF-8?q?e=20test-guard=20into=20CI/CD=20pipeline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - move test-guard from standalone workflow into _ci-cd.yml as a PR-only job that consumes coverage from the tests job - extract coverage.xml from test container via docker cp and upload as "coverage-report" artifact - add pull-requests:write and statuses:write permissions to aws_dev.yml and aws_prod.yml callers - set per-job permissions in _ci-cd.yml (test-guard needs write access, other jobs only need contents:read) - update docker submodule (php-pcov + --coverage-clover) --- .github/workflows/_ci-cd.yml | 55 ++++++++++++++++++++++++++++++-- .github/workflows/aws_dev.yml | 2 ++ .github/workflows/aws_prod.yml | 2 ++ .github/workflows/test-guard.yml | 47 --------------------------- docker | 2 +- 5 files changed, 58 insertions(+), 50 deletions(-) delete mode 100644 .github/workflows/test-guard.yml diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index 690e4e674e..b7c3b69590 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -33,8 +33,9 @@ env: # Opt into Node.js 24 for all JavaScript-based actions (checkout@v4, etc.) # Remove once actions/checkout@v5 is released with native Node 24 support. FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true -permissions: - contents: read +# Permissions are set per-job (not workflow-level) because test-guard +# requires pull-requests:write while other jobs only need contents:read. +# The calling workflow (aws_dev.yml / aws_prod.yml) sets the ceiling. jobs: # ─────────────────────────────────────────────────────────────────────────── # JOB 1 – tests @@ -46,6 +47,8 @@ jobs: name: Run tests runs-on: ubuntu-24.04 environment: ci_test + permissions: + contents: read steps: # Checkout the repo including all git submodules. # Falls back to the built-in github.token for fork PRs where @@ -74,6 +77,19 @@ jobs: docker compose -f docker/docker-compose-ci.yml build test-node > /dev/null 2>&1 # Run tests — exit code propagated to the workflow step docker compose -f docker/docker-compose-ci.yml up test-node --exit-code-from test-node || exit 1 + + # ── Coverage artifact (consumed by test-guard job) ────────────────── + - name: Extract coverage report from test container + run: | + CONTAINER_ID=$(docker compose -f docker/docker-compose-ci.yml ps -aq test-node | head -1) + docker cp "$CONTAINER_ID":/var/www/matecat/coverage.xml ./coverage.xml + + - name: Upload coverage artifact + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: coverage.xml + retention-days: 7 # ─────────────────────────────────────────────────────────────────────────── # JOB 2 – deploy (only when should_deploy is true) # @@ -89,6 +105,8 @@ jobs: name: Deploy to ${{ inputs.deploy_environment }} runs-on: ubuntu-24.04 environment: ${{ inputs.deploy_environment }} + permissions: + contents: read if: ${{ inputs.should_deploy }} needs: - tests @@ -163,3 +181,36 @@ jobs: # ── :latest aliases together ────────────────────────────────────── docker push $WEB_REPO:latest docker push $DAEMONS_REPO:latest + + # ─────────────────────────────────────────────────────────────────────────── + # JOB – test-guard (PR only) + # + # Downloads the "coverage-report" artifact produced by the tests job and + # runs ostico/test-guard to evaluate test adequacy on changed files. + # ─────────────────────────────────────────────────────────────────────────── + test-guard: + name: Test adequacy gate + runs-on: ubuntu-latest + needs: tests + if: github.event_name == 'pull_request' + permissions: + contents: read + pull-requests: write + statuses: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Download coverage artifact + uses: actions/download-artifact@v4 + with: + name: coverage-report + + - name: Test Guard + uses: ostico/test-guard@v1.0.1 + with: + coverage-file: coverage.xml + coverage-threshold: '80' + ai-enabled: 'true' diff --git a/.github/workflows/aws_dev.yml b/.github/workflows/aws_dev.yml index 907bd9b7b8..9820c8f367 100644 --- a/.github/workflows/aws_dev.yml +++ b/.github/workflows/aws_dev.yml @@ -9,6 +9,8 @@ on: branches: [ "develop" ] permissions: contents: read + pull-requests: write + statuses: write jobs: ci-cd: uses: ./.github/workflows/_ci-cd.yml diff --git a/.github/workflows/aws_prod.yml b/.github/workflows/aws_prod.yml index 6fbe2d5550..d843f4c153 100644 --- a/.github/workflows/aws_prod.yml +++ b/.github/workflows/aws_prod.yml @@ -15,6 +15,8 @@ on: branches: [ "master" ] permissions: contents: read + pull-requests: write + statuses: write jobs: ci-cd: uses: ./.github/workflows/_ci-cd.yml diff --git a/.github/workflows/test-guard.yml b/.github/workflows/test-guard.yml deleted file mode 100644 index b262ca4355..0000000000 --- a/.github/workflows/test-guard.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Test Guard - -on: - pull_request: - types: [ opened, synchronize ] - -permissions: - contents: read - pull-requests: write - statuses: write - -jobs: - test-guard: - name: Test adequacy gate - runs-on: ubuntu-latest - if: github.event.pull_request.draft == false - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: '${{ secrets.CI_USER_TOKEN_MATECATBOT || github.token }}' - submodules: recursive - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.3' - extensions: curl, gd, intl, mbstring, readline, xml, zip, json, redis - coverage: xdebug - tools: composer - - - name: Install dependencies - run: composer install --no-interaction --prefer-dist - - - name: Run PHPUnit with coverage - run: | - vendor/bin/phpunit \ - --exclude-group=ExternalServices \ - --coverage-clover=coverage.xml - - - name: Test Guard - uses: ostico/test-guard@v1.0.1 - with: - coverage-file: coverage.xml - coverage-threshold: '80' - ai-enabled: 'true' diff --git a/docker b/docker index c8ac253cd2..f67c79dde7 160000 --- a/docker +++ b/docker @@ -1 +1 @@ -Subproject commit c8ac253cd2993e88088ea23777f05bae0fabe6b6 +Subproject commit f67c79dde7d8a9b0778daa414afea2410795c3a2 From ef9e750ec3c94789ae6e92a7957261193aff0674 Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 16:50:56 +0200 Subject: [PATCH 26/38] =?UTF-8?q?=F0=9F=91=B7=20ci(test-guard):=20bump=20o?= =?UTF-8?q?stico/test-guard=20to=20v1.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/_ci-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index b7c3b69590..4523a60739 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -209,7 +209,7 @@ jobs: name: coverage-report - name: Test Guard - uses: ostico/test-guard@v1.0.1 + uses: ostico/test-guard@v1.0.3 with: coverage-file: coverage.xml coverage-threshold: '80' From 331aef553f0e86d974fb359ba30a61e7e342187e Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 18:07:17 +0200 Subject: [PATCH 27/38] =?UTF-8?q?=F0=9F=91=B7=20ci(test-guard):=20bump=20o?= =?UTF-8?q?stico/test-guard=20to=20v1.0.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/_ci-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index 4523a60739..615684a3cf 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -209,7 +209,7 @@ jobs: name: coverage-report - name: Test Guard - uses: ostico/test-guard@v1.0.3 + uses: ostico/test-guard@v1.0.5 with: coverage-file: coverage.xml coverage-threshold: '80' From 4aa0604e82d92d215bfb5e7665d7f3448ce3a94d Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 18:39:21 +0200 Subject: [PATCH 28/38] =?UTF-8?q?=F0=9F=91=B7=20ci:=20add=20models:read=20?= =?UTF-8?q?permission=20to=20=5Fci-cd.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - grant models:read permission in PR workflows for repository access Signed-off-by: domenico --- .github/workflows/_ci-cd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index 615684a3cf..27d5c9bc90 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -197,6 +197,7 @@ jobs: contents: read pull-requests: write statuses: write + models: read steps: - name: Checkout repository uses: actions/checkout@v4 From 3aa2362e996aabf383ef633ac96c3c6354d55ca7 Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 18:47:21 +0200 Subject: [PATCH 29/38] =?UTF-8?q?=F0=9F=90=9B=20fix(ci):=20add=20models:re?= =?UTF-8?q?ad=20permission=20for=20test-guard=20AI=20analysis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/aws_dev.yml | 1 + .github/workflows/aws_prod.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/aws_dev.yml b/.github/workflows/aws_dev.yml index 9820c8f367..e46798bbf6 100644 --- a/.github/workflows/aws_dev.yml +++ b/.github/workflows/aws_dev.yml @@ -11,6 +11,7 @@ permissions: contents: read pull-requests: write statuses: write + models: read jobs: ci-cd: uses: ./.github/workflows/_ci-cd.yml diff --git a/.github/workflows/aws_prod.yml b/.github/workflows/aws_prod.yml index d843f4c153..f56e0fc0db 100644 --- a/.github/workflows/aws_prod.yml +++ b/.github/workflows/aws_prod.yml @@ -17,6 +17,7 @@ permissions: contents: read pull-requests: write statuses: write + models: read jobs: ci-cd: uses: ./.github/workflows/_ci-cd.yml From 9837941dbbc666e0e5d458df25ad8a6a472d28b9 Mon Sep 17 00:00:00 2001 From: domenico Date: Tue, 21 Apr 2026 18:52:29 +0200 Subject: [PATCH 30/38] =?UTF-8?q?=F0=9F=91=B7=20ci(test-guard):=20switch?= =?UTF-8?q?=20to=20floating=20tag=20ostico/test-guard@v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/_ci-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index 27d5c9bc90..9e8b103a60 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -210,7 +210,7 @@ jobs: name: coverage-report - name: Test Guard - uses: ostico/test-guard@v1.0.5 + uses: ostico/test-guard@v1 with: coverage-file: coverage.xml coverage-threshold: '80' From 068e9284b1478ba15652965187eb8ed41a1fc207 Mon Sep 17 00:00:00 2001 From: domenico Date: Wed, 22 Apr 2026 10:35:57 +0200 Subject: [PATCH 31/38] =?UTF-8?q?=F0=9F=91=B7=20ci(permissions):=20replace?= =?UTF-8?q?=20statuses:write=20with=20checks:write=20in=20workflows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - update permissions in _ci-cd.yml, aws_prod.yml, and aws_dev.yml - align with GitHub's recommended permissions model Signed-off-by: domenico --- .github/workflows/_ci-cd.yml | 2 +- .github/workflows/aws_dev.yml | 2 +- .github/workflows/aws_prod.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index 9e8b103a60..b0e9e7ee3a 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -196,7 +196,7 @@ jobs: permissions: contents: read pull-requests: write - statuses: write + checks: write models: read steps: - name: Checkout repository diff --git a/.github/workflows/aws_dev.yml b/.github/workflows/aws_dev.yml index e46798bbf6..5eea011722 100644 --- a/.github/workflows/aws_dev.yml +++ b/.github/workflows/aws_dev.yml @@ -10,7 +10,7 @@ on: permissions: contents: read pull-requests: write - statuses: write + checks: write models: read jobs: ci-cd: diff --git a/.github/workflows/aws_prod.yml b/.github/workflows/aws_prod.yml index f56e0fc0db..7ad9fc4661 100644 --- a/.github/workflows/aws_prod.yml +++ b/.github/workflows/aws_prod.yml @@ -16,7 +16,7 @@ on: permissions: contents: read pull-requests: write - statuses: write + checks: write models: read jobs: ci-cd: From dbe6bb5250dac725da985a33ed6e7899c57c45e8 Mon Sep 17 00:00:00 2001 From: domenico Date: Thu, 23 Apr 2026 13:49:56 +0200 Subject: [PATCH 32/38] =?UTF-8?q?=F0=9F=91=B7=20ci(coverage):=20add=20JS?= =?UTF-8?q?=20coverage=20report=20to=20test-guard=20pipeline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Clover reporter to Jest so it writes js-coverage/clover.xml - Extract both PHP and JS coverage from test container - Pass both files to test-guard via YAML block scalar --- .github/workflows/_ci-cd.yml | 17 +++++++++++------ docker | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index b0e9e7ee3a..7530d7c80d 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -78,17 +78,20 @@ jobs: # Run tests — exit code propagated to the workflow step docker compose -f docker/docker-compose-ci.yml up test-node --exit-code-from test-node || exit 1 - # ── Coverage artifact (consumed by test-guard job) ────────────────── - - name: Extract coverage report from test container + # ── Coverage artifacts (consumed by test-guard job) ───────────────── + - name: Extract coverage reports from test container run: | CONTAINER_ID=$(docker compose -f docker/docker-compose-ci.yml ps -aq test-node | head -1) - docker cp "$CONTAINER_ID":/var/www/matecat/coverage.xml ./coverage.xml + docker cp "$CONTAINER_ID":/var/www/matecat/coverage.xml ./php-coverage.xml + docker cp "$CONTAINER_ID":/var/www/matecat/js-coverage/clover.xml ./js-coverage.xml - - name: Upload coverage artifact + - name: Upload coverage artifacts uses: actions/upload-artifact@v4 with: name: coverage-report - path: coverage.xml + path: | + php-coverage.xml + js-coverage.xml retention-days: 7 # ─────────────────────────────────────────────────────────────────────────── # JOB 2 – deploy (only when should_deploy is true) @@ -212,6 +215,8 @@ jobs: - name: Test Guard uses: ostico/test-guard@v1 with: - coverage-file: coverage.xml + coverage-file: | + php-coverage.xml + js-coverage.xml coverage-threshold: '80' ai-enabled: 'true' diff --git a/docker b/docker index f67c79dde7..b0553a128b 160000 --- a/docker +++ b/docker @@ -1 +1 @@ -Subproject commit f67c79dde7d8a9b0778daa414afea2410795c3a2 +Subproject commit b0553a128b136e615216d555e49ba0d7882f5b8b From 1ba25de24115ba7f33b147bb6fe1e7c5b2b9ffa7 Mon Sep 17 00:00:00 2001 From: riccio82 Date: Tue, 28 Apr 2026 12:03:34 +0200 Subject: [PATCH 33/38] Update submodule --- docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker b/docker index b0553a128b..1be999a369 160000 --- a/docker +++ b/docker @@ -1 +1 @@ -Subproject commit b0553a128b136e615216d555e49ba0d7882f5b8b +Subproject commit 1be999a369607ce44b33dfe760f56980fc69f93e From cb1793cf117faa8ca1db3dfced3da32f451803ef Mon Sep 17 00:00:00 2001 From: riccio82 Date: Tue, 28 Apr 2026 12:12:30 +0200 Subject: [PATCH 34/38] Remove unused test-entry.js placeholder --- public/vite-entries/test-entry.js | 1 - 1 file changed, 1 deletion(-) delete mode 100644 public/vite-entries/test-entry.js diff --git a/public/vite-entries/test-entry.js b/public/vite-entries/test-entry.js deleted file mode 100644 index 09d4352e8b..0000000000 --- a/public/vite-entries/test-entry.js +++ /dev/null @@ -1 +0,0 @@ -// test From a54317062c82fa1e7048ab602beeb75af773102f Mon Sep 17 00:00:00 2001 From: riccio82 Date: Wed, 29 Apr 2026 09:50:33 +0200 Subject: [PATCH 35/38] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(imports):?= =?UTF-8?q?=20convert=20lazy=20require()=20to=20async=20import()=20and=20u?= =?UTF-8?q?pdate=20circular=20deps=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace all 6 lazy require() patterns with fire-and-forget import() in SegmentActions, SegmentStore, commonUtils, and offlineUtils - Rewrite check-circular-deps.js to use madge JS API with skipAsyncImports - Eliminates all CommonJS require() from application source - Zero circular dependencies detected by madge --- check-circular-deps.js | 52 ++++++++++++++--------------- docker | 2 +- public/js/actions/SegmentActions.js | 22 ++++++------ public/js/stores/SegmentStore.js | 8 +++-- public/js/utils/commonUtils.js | 17 +++++++--- public/js/utils/offlineUtils.js | 11 +++--- 6 files changed, 60 insertions(+), 52 deletions(-) diff --git a/check-circular-deps.js b/check-circular-deps.js index f340787974..afab4f88d3 100644 --- a/check-circular-deps.js +++ b/check-circular-deps.js @@ -1,30 +1,30 @@ #!/usr/bin/env node -const {execSync} = require('child_process') +const madge = require('madge') -let cycles -try { - const output = execSync( - 'npx madge --circular --extensions js --json public/js/', - {encoding: 'utf8', maxBuffer: 10 * 1024 * 1024}, - ) - cycles = JSON.parse(output) -} catch (e) { - if (e.stdout) { - cycles = JSON.parse(e.stdout) - } else { - console.error('Failed to run madge:', e.message) - process.exit(1) - } -} +madge('public/js/', { + fileExtensions: ['js'], + detectiveOptions: { + es6: { + skipAsyncImports: true, + }, + }, +}) + .then((res) => { + const cycles = res.circular() -if (cycles.length > 0) { - console.error( - `\x1b[31m✖ Found ${cycles.length} circular dependencies:\x1b[0m\n`, - ) - cycles.forEach((cycle, i) => { - console.error(` ${i + 1}) ${cycle.join(' → ')}`) + if (cycles.length > 0) { + console.error( + `\x1b[31m✖ Found ${cycles.length} circular dependencies:\x1b[0m\n`, + ) + cycles.forEach((cycle, i) => { + console.error(` ${i + 1}) ${cycle.join(' → ')}`) + }) + process.exit(1) + } else { + console.log('\x1b[32m✔ No circular dependencies\x1b[0m') + } + }) + .catch((err) => { + console.error('Failed to run madge:', err.message) + process.exit(1) }) - process.exit(1) -} else { - console.log('\x1b[32m✔ No circular dependencies\x1b[0m') -} diff --git a/docker b/docker index b0553a128b..1be999a369 160000 --- a/docker +++ b/docker @@ -1 +1 @@ -Subproject commit b0553a128b136e615216d555e49ba0d7882f5b8b +Subproject commit 1be999a369607ce44b33dfe760f56980fc69f93e diff --git a/public/js/actions/SegmentActions.js b/public/js/actions/SegmentActions.js index fdb48821b9..76244434a3 100644 --- a/public/js/actions/SegmentActions.js +++ b/public/js/actions/SegmentActions.js @@ -62,19 +62,19 @@ import {getTranslationMismatches as getTranslationMismatchesApi} from '../api/ge import TextUtils from '../utils/textUtils' import {TAB} from '../constants/SegmentTabConstants' -// Lazy-loaded to break circular dependencies -// Using require() instead of import so madge's ES6 detective doesn't -// register these as static edges — webpack still resolves them correctly -// at call time. +// Async-loaded to break circular dependency for static analysis. let _SegmentsFilterUtil let _SetTranslationUtil -const getSegmentsFilterUtil = () => - _SegmentsFilterUtil || - (_SegmentsFilterUtil = - require('../components/header/cattol/segment_filter/segment_filter').default) -const getSetTranslationUtil = () => - _SetTranslationUtil || - (_SetTranslationUtil = require('../setTranslationUtil')) +import( + '../components/header/cattol/segment_filter/segment_filter' +).then((m) => { + _SegmentsFilterUtil = m.default +}) +import('../setTranslationUtil').then((m) => { + _SetTranslationUtil = m +}) +const getSegmentsFilterUtil = () => _SegmentsFilterUtil +const getSetTranslationUtil = () => _SetTranslationUtil const SegmentActions = { localStorageCommentsClosed: diff --git a/public/js/stores/SegmentStore.js b/public/js/stores/SegmentStore.js index 290d96b484..546640dce0 100644 --- a/public/js/stores/SegmentStore.js +++ b/public/js/stores/SegmentStore.js @@ -47,10 +47,12 @@ import { import {transformTagsToText, removeTagsFromText, checkXliffTagsInText} from '../components/segments/utils/DraftMatecatUtils/tagUtils' import {checkTPEnabled, checkCurrentSegmentTPEnabled} from '../utils/tagProjectionUtils' -// Lazy-loaded to break circular dependencies +// Async-loaded to break circular dependency for static analysis. let _SegmentUtils -const getSegmentUtils = () => - _SegmentUtils || (_SegmentUtils = require('../utils/segmentUtils').default) +import('../utils/segmentUtils').then((m) => { + _SegmentUtils = m.default +}) +const getSegmentUtils = () => _SegmentUtils EventEmitter.prototype.setMaxListeners(0) diff --git a/public/js/utils/commonUtils.js b/public/js/utils/commonUtils.js index 5dad3a712c..17b805ebe4 100644 --- a/public/js/utils/commonUtils.js +++ b/public/js/utils/commonUtils.js @@ -9,13 +9,20 @@ import { setLastSegmentFromLocalStorage, } from './segmentLocalStorage' -// Lazy-loaded to break circular dependencies +// Async-loaded to break circular dependency for static analysis. +// In Vite/ESM, the module resolves before any user interaction triggers these getters. let _SegmentActions -const getSegmentActions = () => - _SegmentActions || - (_SegmentActions = require('../actions/SegmentActions').default) +import('../actions/SegmentActions').then((m) => { + _SegmentActions = m.default +}) +const getSegmentActions = () => _SegmentActions + +let _SetTranslationUtil +import('../setTranslationUtil').then((m) => { + _SetTranslationUtil = m +}) const checkTranslationTailEmpty = () => - require('../setTranslationUtil').isTranslationTailEmpty() + _SetTranslationUtil.isTranslationTailEmpty() const CommonUtils = { millisecondsToTime(milli) { diff --git a/public/js/utils/offlineUtils.js b/public/js/utils/offlineUtils.js index 418541aceb..36158dc177 100644 --- a/public/js/utils/offlineUtils.js +++ b/public/js/utils/offlineUtils.js @@ -9,13 +9,12 @@ import { } from '../actions/notificationActions' import SegmentStore from '../stores/SegmentStore' -// Lazy-loaded to break circular dependency with setTranslationUtil -// Using require() instead of import so madge's ES6 detective doesn't -// register this as a static edge. Do NOT convert back to import. +// Async-loaded to break circular dependency for static analysis. let _SetTranslationUtil -const getSetTranslationUtil = () => - _SetTranslationUtil || - (_SetTranslationUtil = require('../setTranslationUtil')) +import('../setTranslationUtil').then((m) => { + _SetTranslationUtil = m +}) +const getSetTranslationUtil = () => _SetTranslationUtil const OfflineUtils = { offline: false, From d58e9c3008a45addc977f050806a89a0e358aa87 Mon Sep 17 00:00:00 2001 From: riccio82 Date: Wed, 29 Apr 2026 10:51:14 +0200 Subject: [PATCH 36/38] =?UTF-8?q?=F0=9F=90=9B=20fix(hmr):=20prevent=20port?= =?UTF-8?q?al=20crash=20on=20hot=20reload=20and=20remove=20hardcoded=20dev?= =?UTF-8?q?=20host?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - usePortal: only remove DOM elements the hook created, guard null targets - vite.config: derive server origin/HMR host from config.ini CLI_HTTP_HOST --- public/js/hooks/usePortal.js | 7 +++++-- vite.config.js | 11 +++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/public/js/hooks/usePortal.js b/public/js/hooks/usePortal.js index 5d87a88db2..0c0e6daa91 100644 --- a/public/js/hooks/usePortal.js +++ b/public/js/hooks/usePortal.js @@ -8,16 +8,19 @@ const usePortal = (el) => { }) const createPortal = useCallback((targetEl) => { + let created = false if (targetEl === document.body) { targetEl = document.createElement('div') targetEl.className = 'portal-container' document.body.appendChild(targetEl) + created = true } - const Portal = ({children}) => ReactDOM.createPortal(children, targetEl) + const Portal = ({children}) => + targetEl ? ReactDOM.createPortal(children, targetEl) : null const remove = () => { - if (targetEl.parentNode) { + if (created && targetEl && targetEl.parentNode) { targetEl.parentNode.removeChild(targetEl) } } diff --git a/vite.config.js b/vite.config.js index 0fb0581921..b7aad63afe 100644 --- a/vite.config.js +++ b/vite.config.js @@ -184,6 +184,9 @@ function htmlTemplatePlugin() { } } +const cliHttpHost = matecatConfig.CLI_HTTP_HOST?.replace(/"/g, '') || 'https://dev.matecat.com' +const hostUrl = new URL(cliHttpHost) + export default defineConfig(({mode, command}) => { const isProd = mode === 'production' const hasSentry = isProd && sentryVitePlugin && pluginConfig.sentryVitePlugin @@ -276,12 +279,12 @@ export default defineConfig(({mode, command}) => { host: '0.0.0.0', port: 5173, strictPort: true, - origin: 'https://dev.matecat.com', + origin: cliHttpHost, cors: true, hmr: { - protocol: 'wss', - host: 'dev.matecat.com', - clientPort: 443, + protocol: hostUrl.protocol === 'https:' ? 'wss' : 'ws', + host: hostUrl.hostname, + clientPort: parseInt(hostUrl.port) || (hostUrl.protocol === 'https:' ? 443 : 80), path: '__vite_hmr', }, watch: { From 9c863b6d15225f1df1a85323ad1c65e9ca04b803 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 29 Apr 2026 08:57:23 +0000 Subject: [PATCH 37/38] fix: remove redundant dynamic imports and add error handling to updateAppByPopState Agent-Logs-Url: https://github.com/matecat/MateCat/sessions/5f089a0b-62e3-44b4-8506-388e68930643 Co-authored-by: riccio82 <4459567+riccio82@users.noreply.github.com> --- public/js/utils/commonUtils.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/public/js/utils/commonUtils.js b/public/js/utils/commonUtils.js index 17b805ebe4..de1d72e6b0 100644 --- a/public/js/utils/commonUtils.js +++ b/public/js/utils/commonUtils.js @@ -134,17 +134,23 @@ const CommonUtils = { }, setBrowserHistoryBehavior() { - let updateAppByPopState = async () => { - const [{default: SegmentStore}, {default: SegmentActions}] = - await Promise.all([ - import('../stores/SegmentStore'), - import('../actions/SegmentActions'), - ]) - var segment = SegmentStore.getSegmentByIdToJS(this.parsedHash.segmentId) - var currentSegment = SegmentStore.getCurrentSegment() - if (segment && currentSegment?.sid === segment.sid) return - if (segment && !segment.opened) { - getSegmentActions().openSegment(this.parsedHash.segmentId, true) + const updateAppByPopState = () => { + try { + const segment = SegmentStore.getSegmentByIdToJS( + this.parsedHash.segmentId, + ) + const currentSegment = SegmentStore.getCurrentSegment() + if (segment && currentSegment?.sid === segment.sid) return + if (segment && !segment.opened) { + getSegmentActions().openSegment(this.parsedHash.segmentId, true) + } + } catch (e) { + console.error( + '[commonUtils] updateAppByPopState failed for segment', + this.parsedHash.segmentId, + '- navigation may be incomplete:', + e, + ) } } From 530b7f6be296696a01594330e9c5de5d59b3e3ee Mon Sep 17 00:00:00 2001 From: riccio82 Date: Wed, 29 Apr 2026 11:04:46 +0200 Subject: [PATCH 38/38] =?UTF-8?q?=F0=9F=9B=A1=EF=B8=8F=20fix(imports):=20a?= =?UTF-8?q?dd=20defensive=20guards=20to=20async=20import=20getters?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - throw explicit error if module accessed before async import resolves - guards added to SegmentActions, SegmentStore, and commonUtils - prevents silent TypeError on undefined access in edge cases --- public/js/actions/SegmentActions.js | 10 ++++++++-- public/js/stores/SegmentStore.js | 5 ++++- public/js/utils/commonUtils.js | 13 ++++++++++--- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/public/js/actions/SegmentActions.js b/public/js/actions/SegmentActions.js index 76244434a3..64c49e8c79 100644 --- a/public/js/actions/SegmentActions.js +++ b/public/js/actions/SegmentActions.js @@ -73,8 +73,14 @@ import( import('../setTranslationUtil').then((m) => { _SetTranslationUtil = m }) -const getSegmentsFilterUtil = () => _SegmentsFilterUtil -const getSetTranslationUtil = () => _SetTranslationUtil +const getSegmentsFilterUtil = () => { + if (!_SegmentsFilterUtil) throw new Error('[SegmentActions] SegmentsFilterUtil not loaded yet') + return _SegmentsFilterUtil +} +const getSetTranslationUtil = () => { + if (!_SetTranslationUtil) throw new Error('[SegmentActions] SetTranslationUtil not loaded yet') + return _SetTranslationUtil +} const SegmentActions = { localStorageCommentsClosed: diff --git a/public/js/stores/SegmentStore.js b/public/js/stores/SegmentStore.js index 546640dce0..ef0e192097 100644 --- a/public/js/stores/SegmentStore.js +++ b/public/js/stores/SegmentStore.js @@ -52,7 +52,10 @@ let _SegmentUtils import('../utils/segmentUtils').then((m) => { _SegmentUtils = m.default }) -const getSegmentUtils = () => _SegmentUtils +const getSegmentUtils = () => { + if (!_SegmentUtils) throw new Error('[SegmentStore] SegmentUtils not loaded yet') + return _SegmentUtils +} EventEmitter.prototype.setMaxListeners(0) diff --git a/public/js/utils/commonUtils.js b/public/js/utils/commonUtils.js index de1d72e6b0..e149d7566d 100644 --- a/public/js/utils/commonUtils.js +++ b/public/js/utils/commonUtils.js @@ -15,14 +15,21 @@ let _SegmentActions import('../actions/SegmentActions').then((m) => { _SegmentActions = m.default }) -const getSegmentActions = () => _SegmentActions +const getSegmentActions = () => { + if (!_SegmentActions) + throw new Error('[commonUtils] SegmentActions not loaded yet') + return _SegmentActions +} let _SetTranslationUtil import('../setTranslationUtil').then((m) => { _SetTranslationUtil = m }) -const checkTranslationTailEmpty = () => - _SetTranslationUtil.isTranslationTailEmpty() +const checkTranslationTailEmpty = () => { + if (!_SetTranslationUtil) + throw new Error('[commonUtils] SetTranslationUtil not loaded yet') + return _SetTranslationUtil.isTranslationTailEmpty() +} const CommonUtils = { millisecondsToTime(milli) {