diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index a48d6949006..c6bb08e7167 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -255,6 +255,7 @@ jobs: - customjhlite - typescriptapp - thymeleafapp + - langchain4japp include: - java-build-tool: maven - spring-config-format: yaml @@ -263,7 +264,7 @@ jobs: - app: mariadbapp spring-config-format: properties - app: consulapp - java-version: 22 + java-version: 23 - app: vuejwtapp node-version: 'latest' - app: fullapp diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index abf1d781578..5f9a6563f6d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -370,6 +370,7 @@ from the main (upstream) repository: - reactiveapp - customjhlite - typescriptapp + - langchain4japp - Below is the list of build tools that can be used for testing (supported input params for the generate.sh script): - gradle - maven diff --git a/package-lock.json b/package-lock.json index 289ad751af0..6bcede558ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "jhlite", - "version": "1.21.1-SNAPSHOT", + "version": "1.22.1-SNAPSHOT", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "jhlite", - "version": "1.21.1-SNAPSHOT", + "version": "1.22.1-SNAPSHOT", "license": "Apache-2.0", "dependencies": { "axios": "1.7.7", @@ -22,19 +22,19 @@ "@prettier/plugin-xml": "3.4.1", "@tikui/core": "6.2.1", "@types/sinon": "17.0.3", - "@typescript-eslint/eslint-plugin": "8.12.2", - "@typescript-eslint/parser": "8.12.2", + "@typescript-eslint/eslint-plugin": "8.13.0", + "@typescript-eslint/parser": "8.13.0", "@vitejs/plugin-vue": "5.1.4", "@vitest/coverage-istanbul": "2.1.4", "@vue/test-utils": "2.4.6", - "cypress": "13.15.1", + "cypress": "13.15.2", "eslint": "9.14.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-cypress": "4.1.0", "eslint-plugin-pug": "1.2.5", "eslint-plugin-vue": "9.30.0", "fontello-cli": "0.6.2", - "globals": "15.11.0", + "globals": "15.12.0", "husky": "9.1.6", "jsdom": "25.0.1", "lint-staged": "15.2.10", @@ -56,7 +56,7 @@ "stylelint-config-standard-scss": "13.1.0", "tikuidoc-tikui": "8.0.0", "typescript": "5.6.3", - "typescript-eslint": "8.12.2", + "typescript-eslint": "8.13.0", "vite": "5.4.10", "vitest": "2.1.4", "vitest-sonar-reporter": "2.0.0", @@ -1218,6 +1218,20 @@ "node": ">=18.18.0" } }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1233,9 +1247,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1439,10 +1453,11 @@ "license": "MIT" }, "node_modules/@parcel/watcher": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", - "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "dev": true, + "hasInstallScript": true, "license": "MIT", "optional": true, "dependencies": { @@ -1459,24 +1474,25 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.4.1", - "@parcel/watcher-darwin-arm64": "2.4.1", - "@parcel/watcher-darwin-x64": "2.4.1", - "@parcel/watcher-freebsd-x64": "2.4.1", - "@parcel/watcher-linux-arm-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-musl": "2.4.1", - "@parcel/watcher-linux-x64-glibc": "2.4.1", - "@parcel/watcher-linux-x64-musl": "2.4.1", - "@parcel/watcher-win32-arm64": "2.4.1", - "@parcel/watcher-win32-ia32": "2.4.1", - "@parcel/watcher-win32-x64": "2.4.1" + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", - "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", "cpu": [ "arm64" ], @@ -1495,9 +1511,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", - "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", "cpu": [ "arm64" ], @@ -1516,9 +1532,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", - "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", "cpu": [ "x64" ], @@ -1537,9 +1553,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", - "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", "cpu": [ "x64" ], @@ -1558,9 +1574,30 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", - "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", "cpu": [ "arm" ], @@ -1579,9 +1616,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", - "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", "cpu": [ "arm64" ], @@ -1600,9 +1637,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", - "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", "cpu": [ "arm64" ], @@ -1621,9 +1658,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", - "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", "cpu": [ "x64" ], @@ -1642,9 +1679,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", - "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", "cpu": [ "x64" ], @@ -1663,9 +1700,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", - "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", "cpu": [ "arm64" ], @@ -1684,9 +1721,9 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", - "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", "cpu": [ "ia32" ], @@ -1705,9 +1742,9 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", - "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", "cpu": [ "x64" ], @@ -1790,9 +1827,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.3.tgz", - "integrity": "sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.25.0.tgz", + "integrity": "sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==", "cpu": [ "arm" ], @@ -1804,9 +1841,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.3.tgz", - "integrity": "sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.25.0.tgz", + "integrity": "sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==", "cpu": [ "arm64" ], @@ -1818,9 +1855,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.3.tgz", - "integrity": "sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.25.0.tgz", + "integrity": "sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==", "cpu": [ "arm64" ], @@ -1832,9 +1869,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.3.tgz", - "integrity": "sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.25.0.tgz", + "integrity": "sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==", "cpu": [ "x64" ], @@ -1846,9 +1883,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.3.tgz", - "integrity": "sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.25.0.tgz", + "integrity": "sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==", "cpu": [ "arm64" ], @@ -1860,9 +1897,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.3.tgz", - "integrity": "sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.25.0.tgz", + "integrity": "sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==", "cpu": [ "x64" ], @@ -1874,9 +1911,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.3.tgz", - "integrity": "sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.25.0.tgz", + "integrity": "sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==", "cpu": [ "arm" ], @@ -1888,9 +1925,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.3.tgz", - "integrity": "sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.25.0.tgz", + "integrity": "sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==", "cpu": [ "arm" ], @@ -1902,9 +1939,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.3.tgz", - "integrity": "sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.25.0.tgz", + "integrity": "sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==", "cpu": [ "arm64" ], @@ -1916,9 +1953,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.3.tgz", - "integrity": "sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.25.0.tgz", + "integrity": "sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==", "cpu": [ "arm64" ], @@ -1930,9 +1967,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.3.tgz", - "integrity": "sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.25.0.tgz", + "integrity": "sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==", "cpu": [ "ppc64" ], @@ -1944,9 +1981,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.3.tgz", - "integrity": "sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.25.0.tgz", + "integrity": "sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==", "cpu": [ "riscv64" ], @@ -1958,9 +1995,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.3.tgz", - "integrity": "sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.25.0.tgz", + "integrity": "sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==", "cpu": [ "s390x" ], @@ -1972,9 +2009,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.3.tgz", - "integrity": "sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.25.0.tgz", + "integrity": "sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==", "cpu": [ "x64" ], @@ -1986,9 +2023,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.3.tgz", - "integrity": "sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.25.0.tgz", + "integrity": "sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==", "cpu": [ "x64" ], @@ -2000,9 +2037,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.3.tgz", - "integrity": "sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.25.0.tgz", + "integrity": "sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==", "cpu": [ "arm64" ], @@ -2014,9 +2051,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.3.tgz", - "integrity": "sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.25.0.tgz", + "integrity": "sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==", "cpu": [ "ia32" ], @@ -2028,9 +2065,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.3.tgz", - "integrity": "sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.25.0.tgz", + "integrity": "sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==", "cpu": [ "x64" ], @@ -2159,9 +2196,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", - "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, "license": "MIT", "optional": true, @@ -2212,17 +2249,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.2.tgz", - "integrity": "sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", + "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.12.2", - "@typescript-eslint/type-utils": "8.12.2", - "@typescript-eslint/utils": "8.12.2", - "@typescript-eslint/visitor-keys": "8.12.2", + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/type-utils": "8.13.0", + "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -2246,16 +2283,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.12.2.tgz", - "integrity": "sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", + "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.12.2", - "@typescript-eslint/types": "8.12.2", - "@typescript-eslint/typescript-estree": "8.12.2", - "@typescript-eslint/visitor-keys": "8.12.2", + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/typescript-estree": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", "debug": "^4.3.4" }, "engines": { @@ -2275,14 +2312,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.12.2.tgz", - "integrity": "sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", + "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.12.2", - "@typescript-eslint/visitor-keys": "8.12.2" + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2293,14 +2330,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.12.2.tgz", - "integrity": "sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", + "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.12.2", - "@typescript-eslint/utils": "8.12.2", + "@typescript-eslint/typescript-estree": "8.13.0", + "@typescript-eslint/utils": "8.13.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -2318,9 +2355,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.12.2.tgz", - "integrity": "sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", + "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", "dev": true, "license": "MIT", "engines": { @@ -2332,14 +2369,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.2.tgz", - "integrity": "sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", + "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.12.2", - "@typescript-eslint/visitor-keys": "8.12.2", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -2361,16 +2398,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.12.2.tgz", - "integrity": "sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", + "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.12.2", - "@typescript-eslint/types": "8.12.2", - "@typescript-eslint/typescript-estree": "8.12.2" + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/typescript-estree": "8.13.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2384,13 +2421,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.2.tgz", - "integrity": "sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", + "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/types": "8.13.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -2554,30 +2591,30 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.8.tgz", - "integrity": "sha512-K/GxMOXGq997bO00cdFhTNuR85xPxj0BEEAy+BaqqayTmy9Tmhfgmq2wpJcVspRhcwfgPoE2/mEJa26emUhG/g==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.10.tgz", + "integrity": "sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==", "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.8" + "@volar/source-map": "2.4.10" } }, "node_modules/@volar/source-map": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.8.tgz", - "integrity": "sha512-jeWJBkC/WivdelMwxKkpFL811uH/jJ1kVxa+c7OvG48DXc3VrP7pplSWPP2W1dLMqBxD+awRlg55FQQfiup4cA==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.10.tgz", + "integrity": "sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA==", "dev": true, "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.8.tgz", - "integrity": "sha512-6xkIYJ5xxghVBhVywMoPMidDDAFT1OoQeXwa27HSgJ6AiIKRe61RXLoik+14Z7r0JvnblXVsjsRLmCr42SGzqg==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.10.tgz", + "integrity": "sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.8", + "@volar/language-core": "2.4.10", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -2868,9 +2905,9 @@ } }, "node_modules/alien-signals": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.2.0.tgz", - "integrity": "sha512-StlonZhBBrsPPwrDjiPAiVTf/rolxffLxVPT60Qv/t88BZ81BvUVzHgGqEFvJ1ii8HXtm1+zU2Icr59tfWEcag==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.2.1.tgz", + "integrity": "sha512-FlEQrDJe9r2RI4cDlnK2zYqJezvx1uJaWEuwxsnlFqnPwvJbgitNBRumWrLDv8lA+7cCikpMxfJD2TTHiaTklA==", "dev": true, "license": "MIT" }, @@ -3578,9 +3615,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001677", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", - "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "dev": true, "funding": [ { @@ -3760,9 +3797,9 @@ } }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", "dev": true, "funding": [ { @@ -4266,9 +4303,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", "dev": true, "license": "MIT", "dependencies": { @@ -4337,14 +4374,14 @@ "license": "MIT" }, "node_modules/cypress": { - "version": "13.15.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.1.tgz", - "integrity": "sha512-DwUFiKXo4lef9kA0M4iEhixFqoqp2hw8igr0lTqafRb9qtU3X0XGxKbkSYsUFdkrAkphc7MPDxoNPhk5pj9PVg==", + "version": "13.15.2", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.2.tgz", + "integrity": "sha512-ARbnUorjcCM3XiPwgHKuqsyr5W9Qn+pIIBPaoilnoBkLdSC2oLQjV1BUpnmc7KR+b7Avah3Ly2RMFnfxr96E/A==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "@cypress/request": "^3.0.4", + "@cypress/request": "^3.0.6", "@cypress/xvfb": "^1.2.4", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", @@ -4355,6 +4392,7 @@ "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", + "ci-info": "^4.0.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", "commander": "^6.2.1", @@ -4369,7 +4407,6 @@ "figures": "^3.2.0", "fs-extra": "^9.1.0", "getos": "^3.2.1", - "is-ci": "^3.0.1", "is-installed-globally": "~0.4.0", "lazy-ass": "^1.6.0", "listr2": "^3.8.3", @@ -4841,9 +4878,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.50", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz", - "integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==", + "version": "1.5.55", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz", + "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==", "dev": true, "license": "ISC" }, @@ -5277,20 +5314,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@humanwhocodes/retry": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.0.tgz", - "integrity": "sha512-xnRgu9DxZbkWak/te3fcytNyp8MTbuiZIaueg2rgEvBuN55n04nwLYLU9TX/VVlusc9L2ZNXi99nUFNkHXtr5g==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6328,9 +6351,9 @@ } }, "node_modules/globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", "dev": true, "license": "MIT", "engines": { @@ -6788,19 +6811,6 @@ "node": ">=8" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", @@ -8869,9 +8879,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, "license": "MIT", "engines": { @@ -9293,9 +9303,9 @@ "license": "MIT" }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.48", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.48.tgz", + "integrity": "sha512-GCRK8F6+Dl7xYniR5a4FYbpBzU8XnZVeowqsQFYdcXuSbChgiks7qybSkbvnaeqv0G0B+dd9/jJgH8kkLDQeEA==", "funding": [ { "type": "opencollective", @@ -9313,7 +9323,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -10405,9 +10415,9 @@ } }, "node_modules/rollup": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.3.tgz", - "integrity": "sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.25.0.tgz", + "integrity": "sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==", "dev": true, "license": "MIT", "dependencies": { @@ -10421,24 +10431,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.3", - "@rollup/rollup-android-arm64": "4.24.3", - "@rollup/rollup-darwin-arm64": "4.24.3", - "@rollup/rollup-darwin-x64": "4.24.3", - "@rollup/rollup-freebsd-arm64": "4.24.3", - "@rollup/rollup-freebsd-x64": "4.24.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.3", - "@rollup/rollup-linux-arm-musleabihf": "4.24.3", - "@rollup/rollup-linux-arm64-gnu": "4.24.3", - "@rollup/rollup-linux-arm64-musl": "4.24.3", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.3", - "@rollup/rollup-linux-riscv64-gnu": "4.24.3", - "@rollup/rollup-linux-s390x-gnu": "4.24.3", - "@rollup/rollup-linux-x64-gnu": "4.24.3", - "@rollup/rollup-linux-x64-musl": "4.24.3", - "@rollup/rollup-win32-arm64-msvc": "4.24.3", - "@rollup/rollup-win32-ia32-msvc": "4.24.3", - "@rollup/rollup-win32-x64-msvc": "4.24.3", + "@rollup/rollup-android-arm-eabi": "4.25.0", + "@rollup/rollup-android-arm64": "4.25.0", + "@rollup/rollup-darwin-arm64": "4.25.0", + "@rollup/rollup-darwin-x64": "4.25.0", + "@rollup/rollup-freebsd-arm64": "4.25.0", + "@rollup/rollup-freebsd-x64": "4.25.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.25.0", + "@rollup/rollup-linux-arm-musleabihf": "4.25.0", + "@rollup/rollup-linux-arm64-gnu": "4.25.0", + "@rollup/rollup-linux-arm64-musl": "4.25.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.25.0", + "@rollup/rollup-linux-riscv64-gnu": "4.25.0", + "@rollup/rollup-linux-s390x-gnu": "4.25.0", + "@rollup/rollup-linux-x64-gnu": "4.25.0", + "@rollup/rollup-linux-x64-musl": "4.25.0", + "@rollup/rollup-win32-arm64-msvc": "4.25.0", + "@rollup/rollup-win32-ia32-msvc": "4.25.0", + "@rollup/rollup-win32-x64-msvc": "4.25.0", "fsevents": "~2.3.2" } }, @@ -11202,9 +11212,9 @@ } }, "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", "dev": true, "license": "MIT" }, @@ -11899,22 +11909,22 @@ } }, "node_modules/tldts": { - "version": "6.1.58", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.58.tgz", - "integrity": "sha512-MQJrJhjHOYGYb8DobR6Y4AdDbd4TYkyQ+KBDVc5ODzs1cbrvPpfN1IemYi9jfipJ/vR1YWvrDli0hg1y19VRoA==", + "version": "6.1.60", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.60.tgz", + "integrity": "sha512-TYVHm7G9NCnhgqOsFalbX6MG1Po5F4efF+tLfoeiOGQq48Oqgwcgz8upY2R1BHWa4aDrj28RYx0dkYJ63qCFMg==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.58" + "tldts-core": "^6.1.60" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.58", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.58.tgz", - "integrity": "sha512-dR936xmhBm7AeqHIhCWwK765gZ7dFyL+IqLSFAjJbFlUXGMLCb8i2PzlzaOuWBuplBTaBYseSb565nk/ZEM0Bg==", + "version": "6.1.60", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.60.tgz", + "integrity": "sha512-XHjoxak8SFQnHnmYHb3PcnW5TZ+9ErLZemZei3azuIRhQLw4IExsVbL3VZJdHcLeNaXq6NqawgpDPpjBOg4B5g==", "dev": true, "license": "MIT" }, @@ -12126,15 +12136,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.12.2.tgz", - "integrity": "sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.13.0.tgz", + "integrity": "sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.12.2", - "@typescript-eslint/parser": "8.12.2", - "@typescript-eslint/utils": "8.12.2" + "@typescript-eslint/eslint-plugin": "8.13.0", + "@typescript-eslint/parser": "8.13.0", + "@typescript-eslint/utils": "8.13.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index d728cf8e318..7919b88af59 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jhlite", - "version": "1.21.1-SNAPSHOT", + "version": "1.22.1-SNAPSHOT", "description": "JHipster Lite", "homepage": "https://www.jhipster.tech/", "bugs": "https://github.com/jhipster/jhipster-lite/issues", @@ -60,19 +60,19 @@ "@prettier/plugin-xml": "3.4.1", "@tikui/core": "6.2.1", "@types/sinon": "17.0.3", - "@typescript-eslint/eslint-plugin": "8.12.2", - "@typescript-eslint/parser": "8.12.2", + "@typescript-eslint/eslint-plugin": "8.13.0", + "@typescript-eslint/parser": "8.13.0", "@vitejs/plugin-vue": "5.1.4", "@vitest/coverage-istanbul": "2.1.4", "@vue/test-utils": "2.4.6", - "cypress": "13.15.1", + "cypress": "13.15.2", "eslint": "9.14.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-cypress": "4.1.0", "eslint-plugin-pug": "1.2.5", "eslint-plugin-vue": "9.30.0", "fontello-cli": "0.6.2", - "globals": "15.11.0", + "globals": "15.12.0", "husky": "9.1.6", "jsdom": "25.0.1", "lint-staged": "15.2.10", @@ -94,7 +94,7 @@ "stylelint-config-standard-scss": "13.1.0", "tikuidoc-tikui": "8.0.0", "typescript": "5.6.3", - "typescript-eslint": "8.12.2", + "typescript-eslint": "8.13.0", "vite": "5.4.10", "vitest": "2.1.4", "vitest-sonar-reporter": "2.0.0", diff --git a/pom.xml b/pom.xml index de8576b16c8..ebd3570b7a8 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ tech.jhipster.lite jhlite - 1.21.1-SNAPSHOT + 1.22.1-SNAPSHOT jhlite JHipster Lite jar @@ -68,7 +68,7 @@ 1.3.0 2.6.0 1.2.1 - 4.0.0.4121 + 5.0.0.4389 2.17.0 7.20.1 37 @@ -342,7 +342,6 @@ **/generator/buildtool/maven/.mvn/wrapper/* **/generator/buildtool/gradle/gradle/wrapper/* - src/main/webapp/app/common/primary/applicationlistener/WindowApplicationListener.ts @@ -711,11 +710,13 @@ - You are running an older version of Maven. JHipster requires at least Maven ${maven.version} + You are running an older version of Maven. JHipster Lite requires at least Maven ${maven.version} ${maven.version} - You are running an incompatible version of Java. JHipster engine requires at least Java ${java.version} + + You are running an incompatible version of Java. JHipster Lite engine requires at least Java ${java.version} + ${java.version} diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java index 86467a94cb2..b29a1226583 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java @@ -116,7 +116,7 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) { private Consumer patchEslintConfig(JHipsterModuleProperties properties) { String reactConfig = """ - \t\tfiles: ['src/main/webapp/**/*.{ts,tsx}', 'src/main/webapp/**/*.spec.ts'], + \t\tfiles: ['src/main/webapp/**/*.{ts,tsx}', 'src/test/webapp/unit/**/*.{ts,tsx}'], \t\textends: [...typescript.configs.recommendedTypeChecked, react], \t\tsettings: { \t\t\treact: { @@ -143,6 +143,10 @@ private Consumer patchEslintConfig(JHipsterModuleProperti regex("[ \\t]+quotes: \\['error', 'single', \\{ avoidEscape: true }],"), """ \t\t\t'react/react-in-jsx-scope': 'off', + \t\t\t'@typescript-eslint/no-explicit-any': 'off', + \t\t\t'@typescript-eslint/no-unsafe-argument': 'off', + \t\t\t'@typescript-eslint/await-thenable': 'off', + \t\t\t'@typescript-eslint/consistent-type-imports': 'error', \t\t\t'@typescript-eslint/no-misused-promises': [ \t\t\t\t'error', \t\t\t\t{ diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java index 59d68cd6879..6243dc7f596 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java @@ -65,7 +65,7 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) { vi.mock('react-i18next', () => ({ useTranslation: () => { return { - t: vi.fn().mockImplementation((_str: string) => 'Internationalization enabled'), + t: vi.fn().mockImplementation(() => 'Internationalization enabled'), }; }, })); diff --git a/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java b/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java index 6119d26c382..33e43d96a1e 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java @@ -149,6 +149,7 @@ private Consumer patchEslintConfig(JHipsterModuleProperti .add(eslintTypescriptVueRule("'vue/html-self-closing': 'off',", properties.indentation())) .add(eslintTypescriptVueRule("'@typescript-eslint/no-explicit-any': 'off',", properties.indentation())) .add(eslintTypescriptVueRule("'@typescript-eslint/no-empty-object-type': 'off',", properties.indentation())) + .add(eslintTypescriptVueRule("'@typescript-eslint/consistent-type-imports': 'error',", properties.indentation())) .and() .and(); //@formatter:on diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/application/LangChain4jApplicationService.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/application/LangChain4jApplicationService.java new file mode 100644 index 00000000000..1576bb54e8c --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/application/LangChain4jApplicationService.java @@ -0,0 +1,20 @@ +package tech.jhipster.lite.generator.server.springboot.langchain4j.application; + +import org.springframework.stereotype.Service; +import tech.jhipster.lite.generator.server.springboot.langchain4j.domain.LangChain4jModuleFactory; +import tech.jhipster.lite.module.domain.JHipsterModule; +import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; + +@Service +public class LangChain4jApplicationService { + + private final LangChain4jModuleFactory factory; + + public LangChain4jApplicationService() { + factory = new LangChain4jModuleFactory(); + } + + public JHipsterModule buildModule(JHipsterModuleProperties properties) { + return factory.buildModule(properties); + } +} diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/domain/LangChain4jModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/domain/LangChain4jModuleFactory.java new file mode 100644 index 00000000000..09dbe3d6efa --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/domain/LangChain4jModuleFactory.java @@ -0,0 +1,51 @@ +package tech.jhipster.lite.generator.server.springboot.langchain4j.domain; + +import static tech.jhipster.lite.module.domain.JHipsterModule.*; + +import tech.jhipster.lite.module.domain.JHipsterModule; +import tech.jhipster.lite.module.domain.file.JHipsterSource; +import tech.jhipster.lite.module.domain.javabuild.ArtifactId; +import tech.jhipster.lite.module.domain.javabuild.GroupId; +import tech.jhipster.lite.module.domain.javabuild.VersionSlug; +import tech.jhipster.lite.module.domain.javaproperties.PropertyKey; +import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; +import tech.jhipster.lite.shared.error.domain.Assert; + +public class LangChain4jModuleFactory { + + private static final String API_KEY_DEMO_COMMENT = + "You can temporarily use 'demo' key, which is provided for free for demonstration purposes"; + + private static final JHipsterSource SOURCE = from("server/springboot/langchain4j"); + private static final GroupId GROUP_ID = groupId("dev.langchain4j"); + private static final ArtifactId ARTIFACT_ID = artifactId("langchain4j-spring-boot-starter"); + private static final ArtifactId OPEN_AI_ARTIFACT_ID = artifactId("langchain4j-open-ai-spring-boot-starter"); + private static final VersionSlug VERSION_SLUG = versionSlug("langchain4j"); + + private static final String PROPERTIES = "properties"; + private static final PropertyKey LANGCHAIN4J_PROPERTY_API_KEY = propertyKey("langchain4j.open-ai.chat-model.api-key"); + + public JHipsterModule buildModule(JHipsterModuleProperties properties) { + Assert.notNull(PROPERTIES, properties); + + //@formatter:off + return moduleBuilder(properties) + .documentation(documentationTitle("LangChain4j"), SOURCE.template("langchain4j.md")) + .javaDependencies() + .addDependency(GROUP_ID, ARTIFACT_ID, VERSION_SLUG) + .addDependency(GROUP_ID, OPEN_AI_ARTIFACT_ID, VERSION_SLUG) + .and() + .springMainProperties() + .set(LANGCHAIN4J_PROPERTY_API_KEY, propertyValue("demo")) + .comment(LANGCHAIN4J_PROPERTY_API_KEY, comment(API_KEY_DEMO_COMMENT)) + .set(propertyKey("langchain4j.open-ai.chat-model.model-name"), propertyValue("gpt-4o-mini")) + .set(propertyKey("langchain4j.open-ai.chat-model.log-requests"), propertyValue("true")) + .set(propertyKey("langchain4j.open-ai.chat-model.log-responses"), propertyValue("true")) + .and() + .springTestProperties() + .set(LANGCHAIN4J_PROPERTY_API_KEY, propertyValue("jhipster")) + .and() + .build(); + //@formatter:on + } +} diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/infrastructure/primary/LangChain4jModuleConfiguration.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/infrastructure/primary/LangChain4jModuleConfiguration.java new file mode 100644 index 00000000000..870e2f54041 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/infrastructure/primary/LangChain4jModuleConfiguration.java @@ -0,0 +1,26 @@ +package tech.jhipster.lite.generator.server.springboot.langchain4j.infrastructure.primary; + +import static tech.jhipster.lite.shared.slug.domain.JHLiteModuleSlug.LANGCHAIN4J; +import static tech.jhipster.lite.shared.slug.domain.JHLiteModuleSlug.SPRING_BOOT; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import tech.jhipster.lite.generator.server.springboot.langchain4j.application.LangChain4jApplicationService; +import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization; +import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertiesDefinition; +import tech.jhipster.lite.module.domain.resource.JHipsterModuleResource; + +@Configuration +class LangChain4jModuleConfiguration { + + @Bean + JHipsterModuleResource langChain4jModule(LangChain4jApplicationService langChain4j) { + return JHipsterModuleResource.builder() + .slug(LANGCHAIN4J) + .propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addProjectBaseName().addIndentation().build()) + .apiDoc("LangChain4j", "Add LangChain4j") + .organization(JHipsterModuleOrganization.builder().addDependency(SPRING_BOOT).build()) + .tags("server", "spring", "spring-boot", "langchain4j") + .factory(langChain4j::buildModule); + } +} diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/package-info.java new file mode 100644 index 00000000000..1d7a2fab36d --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/langchain4j/package-info.java @@ -0,0 +1,2 @@ +@tech.jhipster.lite.BusinessContext +package tech.jhipster.lite.generator.server.springboot.langchain4j; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/application/SampleLangChain4jApplicationService.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/application/SampleLangChain4jApplicationService.java new file mode 100644 index 00000000000..e8fe52f63fc --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/application/SampleLangChain4jApplicationService.java @@ -0,0 +1,20 @@ +package tech.jhipster.lite.generator.server.springboot.mvc.sample.langchain4j.application; + +import org.springframework.stereotype.Service; +import tech.jhipster.lite.generator.server.springboot.mvc.sample.langchain4j.domain.SampleLangChain4jModuleFactory; +import tech.jhipster.lite.module.domain.JHipsterModule; +import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; + +@Service +public class SampleLangChain4jApplicationService { + + private final SampleLangChain4jModuleFactory factory; + + public SampleLangChain4jApplicationService() { + factory = new SampleLangChain4jModuleFactory(); + } + + public JHipsterModule buildModule(JHipsterModuleProperties properties) { + return factory.buildModule(properties); + } +} diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/domain/SampleLangChain4jModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/domain/SampleLangChain4jModuleFactory.java new file mode 100644 index 00000000000..8edc458dbe6 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/domain/SampleLangChain4jModuleFactory.java @@ -0,0 +1,39 @@ +package tech.jhipster.lite.generator.server.springboot.mvc.sample.langchain4j.domain; + +import static tech.jhipster.lite.module.domain.JHipsterModule.*; + +import tech.jhipster.lite.module.domain.JHipsterModule; +import tech.jhipster.lite.module.domain.file.JHipsterDestination; +import tech.jhipster.lite.module.domain.file.JHipsterSource; +import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; +import tech.jhipster.lite.shared.error.domain.Assert; + +public class SampleLangChain4jModuleFactory { + + private static final String SAMPLE = "sample"; + + private static final JHipsterSource SOURCE = from("server/springboot/mvc/sample/langchain4j"); + + private static final String PRIMARY = "infrastructure/primary"; + + public JHipsterModule buildModule(JHipsterModuleProperties properties) { + Assert.notNull("properties", properties); + + String packagePath = properties.packagePath(); + JHipsterDestination mainDestination = toSrcMainJava().append(packagePath).append(SAMPLE); + JHipsterDestination testDestination = toSrcTestJava().append(packagePath).append(SAMPLE); + + //@formatter:off + return moduleBuilder(properties) + .files() + .batch(SOURCE.append("main").append(PRIMARY), mainDestination.append(PRIMARY)) + .addTemplate("ChatResource.java") + .and() + .batch(SOURCE.append("test").append(SAMPLE).append(PRIMARY), testDestination.append(PRIMARY)) + .addTemplate("ChatResourceTest.java") + .and() + .and() + .build(); + //@formatter:on + } +} diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/infrastructure/primary/SampleLangChain4jModuleConfiguration.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/infrastructure/primary/SampleLangChain4jModuleConfiguration.java new file mode 100644 index 00000000000..92e0f632273 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/infrastructure/primary/SampleLangChain4jModuleConfiguration.java @@ -0,0 +1,28 @@ +package tech.jhipster.lite.generator.server.springboot.mvc.sample.langchain4j.infrastructure.primary; + +import static tech.jhipster.lite.shared.slug.domain.JHLiteFeatureSlug.SPRING_MVC_SERVER; +import static tech.jhipster.lite.shared.slug.domain.JHLiteModuleSlug.*; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import tech.jhipster.lite.generator.server.springboot.mvc.sample.langchain4j.application.SampleLangChain4jApplicationService; +import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization; +import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertiesDefinition; +import tech.jhipster.lite.module.domain.resource.JHipsterModuleResource; + +@Configuration +class SampleLangChain4jModuleConfiguration { + + @Bean + JHipsterModuleResource langChain4jResourceInit(SampleLangChain4jApplicationService applicationService) { + return JHipsterModuleResource.builder() + .slug(SPRING_BOOT_LANGCHAIN4J_SAMPLE) + .propertiesDefinition( + JHipsterModulePropertiesDefinition.builder().addBasePackage().addIndentation().addSpringConfigurationFormat().build() + ) + .apiDoc("Spring Boot - LangChain4j", "Add LangChain4j sample") + .organization(JHipsterModuleOrganization.builder().addDependency(SPRING_MVC_SERVER).addDependency(LANGCHAIN4J).build()) + .tags("spring-boot", "spring", "server", "langchain4j") + .factory(applicationService::buildModule); + } +} diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/package-info.java new file mode 100644 index 00000000000..a0e75e2f4d7 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/mvc/sample/langchain4j/package-info.java @@ -0,0 +1,2 @@ +@tech.jhipster.lite.BusinessContext +package tech.jhipster.lite.generator.server.springboot.mvc.sample.langchain4j; diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java index 51a9768313e..beb8e6cc199 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java @@ -20,7 +20,7 @@ public interface NpmVersions { * source folder for this version * @return The version * @throws UnknownNpmPackageException - * is the package can't be found in source + * if the package can't be found in source */ default NpmPackageVersion get(NpmPackageName packageName, NpmVersionSource source) { return get().get(packageName, source); @@ -35,7 +35,7 @@ default NpmPackageVersion get(NpmPackageName packageName, NpmVersionSource sourc * source folder for this version * @return The version * @throws UnknownNpmPackageException - * is the package can't be found in source + * if the package can't be found in source */ default NpmPackageVersion get(String packageName, NpmVersionSource source) { return get(new NpmPackageName(packageName), source); @@ -50,7 +50,7 @@ default NpmPackageVersion get(String packageName, NpmVersionSource source) { * source folder for this version * @return The version * @throws UnknownNpmPackageException - * is the package can't be found in source + * if the package can't be found in source */ default NpmPackageVersion get(String packageName, NpmVersionSourceFactory source) { return get(packageName, source.build()); diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsReader.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsReader.java index 448c37360e6..74e8216b2ab 100644 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsReader.java +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsReader.java @@ -4,7 +4,7 @@ /** *

- * Read version for an npm dependency + * Read version for a npm dependency *

* *

diff --git a/src/main/java/tech/jhipster/lite/shared/error/domain/Assert.java b/src/main/java/tech/jhipster/lite/shared/error/domain/Assert.java index 08a0a2f6016..77213a8b538 100644 --- a/src/main/java/tech/jhipster/lite/shared/error/domain/Assert.java +++ b/src/main/java/tech/jhipster/lite/shared/error/domain/Assert.java @@ -368,11 +368,11 @@ public StringAsserter notBlank() { } /** - * Ensure that the value does not contain whitespace + * Ensure that the value does not contain whitespace * * @return The current asserter * @throws MissingMandatoryValueException - * if the value contain whitespace + * if the value contains whitespace */ public StringAsserter noWhitespace() { notNull(); diff --git a/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java b/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java index c769698cc71..60953e986df 100644 --- a/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java +++ b/src/main/java/tech/jhipster/lite/shared/slug/domain/JHLiteModuleSlug.java @@ -157,7 +157,9 @@ public enum JHLiteModuleSlug implements JHipsterModuleSlugFactory { VUE_OAUTH2_KEYCLOAK("vue-oauth2-keycloak"), VUE_PINIA("vue-pinia"), TS_PAGINATION_DOMAIN("ts-pagination-domain"), - TS_REST_PAGINATION("ts-rest-pagination"); + TS_REST_PAGINATION("ts-rest-pagination"), + LANGCHAIN4J("langchain4j"), + SPRING_BOOT_LANGCHAIN4J_SAMPLE("spring-boot-langchain4j-sample"); private static final Map moduleSlugMap = Stream.of(values()).collect( Collectors.toMap(JHLiteModuleSlug::get, Function.identity()) diff --git a/src/main/resources/generator/buildtool/gradle/gradle/wrapper/gradle-wrapper.properties b/src/main/resources/generator/buildtool/gradle/gradle/wrapper/gradle-wrapper.properties index df97d72b8b9..94113f200e6 100644 --- a/src/main/resources/generator/buildtool/gradle/gradle/wrapper/gradle-wrapper.properties +++ b/src/main/resources/generator/buildtool/gradle/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/resources/generator/client/common/cypress/utils/DataSelector.ts b/src/main/resources/generator/client/common/cypress/utils/DataSelector.ts index e0d3e7c69cd..00d0d5b5007 100755 --- a/src/main/resources/generator/client/common/cypress/utils/DataSelector.ts +++ b/src/main/resources/generator/client/common/cypress/utils/DataSelector.ts @@ -1 +1,2 @@ -export const dataSelector = (selector: string): string => `[data-selector="${selector}"]`; +export const dataSelector = (selector: string): string => + `[data-selector="${selector}"], [data-cy="${selector}"], [data-test="${selector}"], [data-testid="${selector}"]`; diff --git a/src/main/resources/generator/client/common/cypress/utils/Interceptor.ts b/src/main/resources/generator/client/common/cypress/utils/Interceptor.ts index da9e9663799..07602571751 100755 --- a/src/main/resources/generator/client/common/cypress/utils/Interceptor.ts +++ b/src/main/resources/generator/client/common/cypress/utils/Interceptor.ts @@ -1,4 +1,4 @@ -import { HttpResponseInterceptor, RouteMatcher, StaticResponse } from 'cypress/types/net-stubbing'; +import type { HttpResponseInterceptor, RouteMatcher, StaticResponse } from 'cypress/types/net-stubbing'; type ResponseSender = { send: () => void; diff --git a/src/main/resources/generator/client/common/hexagonal-documentation/front-hexagonal-architecture.md.mustache b/src/main/resources/generator/client/common/hexagonal-documentation/front-hexagonal-architecture.md.mustache index 0e72434ead0..d555c48328f 100644 --- a/src/main/resources/generator/client/common/hexagonal-documentation/front-hexagonal-architecture.md.mustache +++ b/src/main/resources/generator/client/common/hexagonal-documentation/front-hexagonal-architecture.md.mustache @@ -123,7 +123,7 @@ export const homeRoutes = (): RouteRecordRaw[] => [ (example for vue.js, need some adaptation for other frontends frameworks) -You can then append this routes to the main routes in `router.ts`: +You can then append these routes to the main routes in `router.ts`: ```typescript import { createRouter, createWebHistory } from 'vue-router'; diff --git a/src/main/resources/generator/client/common/playwright/common/primary/app/Home-Page.ts b/src/main/resources/generator/client/common/playwright/common/primary/app/Home-Page.ts index 8d61573c7f2..8dbc0591176 100644 --- a/src/main/resources/generator/client/common/playwright/common/primary/app/Home-Page.ts +++ b/src/main/resources/generator/client/common/playwright/common/primary/app/Home-Page.ts @@ -1,4 +1,4 @@ -import { Page } from '@playwright/test'; +import { type Page } from '@playwright/test'; export class HomePage { readonly page: Page; diff --git a/src/main/resources/generator/client/react/i18n/src/main/webapp/app/i18n.ts b/src/main/resources/generator/client/react/i18n/src/main/webapp/app/i18n.ts index 7c8b4967634..34d2c39109c 100644 --- a/src/main/resources/generator/client/react/i18n/src/main/webapp/app/i18n.ts +++ b/src/main/resources/generator/client/react/i18n/src/main/webapp/app/i18n.ts @@ -4,7 +4,7 @@ import { initReactI18next } from 'react-i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; import Backend from 'i18next-http-backend'; -void i18n +i18n .use(Backend) .use(LanguageDetector) .use(initReactI18next) @@ -19,6 +19,9 @@ void i18n backend: { loadPath: '../assets/locales/{{ lng }}/{{ ns }}.json', }, + }) + .catch(error => { + console.error('i18n initialization failed', error); }); export default i18n; diff --git a/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginForm/index.test.tsx.mustache b/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginForm/index.test.tsx.mustache index 513c72e1621..3cac8855967 100644 --- a/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginForm/index.test.tsx.mustache +++ b/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginForm/index.test.tsx.mustache @@ -14,7 +14,7 @@ const login = async () => { const { getByText, getByPlaceholderText, getByTestId } = render(); const loginButton = getByText('Log in'); fireEvent.click(loginButton); - await act(async () => { + await act(() => { fireEvent.change(getByPlaceholderText("Nom d'utilisateur"), { target: { value: 'admin' }, }); @@ -40,7 +40,7 @@ describe('loginForm', () => { fireEvent.click(loginButton); expect(getByText('Connect')).toBeTruthy(); const submitButton = getByTestId('submit-button'); - await act(async () => { + await act(() => { fireEvent.click(submitButton); }); }); diff --git a/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginModal/index.test.tsx.mustache b/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginModal/index.test.tsx.mustache index 0bfd9b2e3fb..e7d2756581c 100644 --- a/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginModal/index.test.tsx.mustache +++ b/src/main/resources/generator/client/react/security/jwt/src/test/webapp/unit/login/primary/loginModal/index.test.tsx.mustache @@ -37,7 +37,7 @@ describe('test login modal', () => { it('should contain password input', async () => { const { getByPlaceholderText, getByTestId } = LoginModalRender(true); const username = getByPlaceholderText('Mot de passe'); - await act(async () => { + await act(() => { const displayPasswordButton = getByTestId('display-password'); fireEvent.click(displayPasswordButton); }); @@ -54,7 +54,7 @@ describe('test login modal', () => { const { getByPlaceholderText, getByTestId } = LoginModalRender(true); const spy = vi.spyOn(axios, 'post'); spy.mockImplementationOnce((): Promise => Promise.resolve({ data: {} })); - await act(async () => { + await act(() => { fireEvent.change(getByPlaceholderText("Nom d'utilisateur"), { target: { value: 'admin' }, }); @@ -71,7 +71,7 @@ describe('test login modal', () => { const { getByPlaceholderText, getByRole } = LoginModalRender(true); const spy = vi.spyOn(axios, 'post'); spy.mockImplementationOnce((): Promise => Promise.resolve({ data: {} })); - await act(async () => { + await act(() => { fireEvent.change(getByPlaceholderText("Nom d'utilisateur"), { target: { value: 'admin' }, }); @@ -86,7 +86,7 @@ describe('test login modal', () => { it('should contain error message when submit button is clicked with empty value', async () => { const { getByTestId } = LoginModalRender(true); - await act(async () => { + await act(() => { const submitButton = getByTestId('submit-button'); fireEvent.click(submitButton); }); diff --git a/src/main/resources/generator/client/vue/documentation/vue-oauth2-keycloak-authentication-components.md b/src/main/resources/generator/client/vue/documentation/vue-oauth2-keycloak-authentication-components.md index 49384df281d..e376bf8e119 100644 --- a/src/main/resources/generator/client/vue/documentation/vue-oauth2-keycloak-authentication-components.md +++ b/src/main/resources/generator/client/vue/documentation/vue-oauth2-keycloak-authentication-components.md @@ -423,7 +423,7 @@ Location: `src/test/webapp/unit/auth/infrastructure/secondary/KeycloakStub.ts` This file provides a stub for Keycloak to be used in tests. ```typescript -import Keycloak from 'keycloak-js'; +import type Keycloak from 'keycloak-js'; import sinon from 'sinon'; import type { SinonStub } from 'sinon'; diff --git a/src/main/resources/generator/client/vue/i18n/src/test/HomePageVue.spec.ts b/src/main/resources/generator/client/vue/i18n/src/test/HomePageVue.spec.ts index b082d640bb7..536fa9cff77 100644 --- a/src/main/resources/generator/client/vue/i18n/src/test/HomePageVue.spec.ts +++ b/src/main/resources/generator/client/vue/i18n/src/test/HomePageVue.spec.ts @@ -1,5 +1,5 @@ import HomepageVue from '@/home/infrastructure/primary/HomepageVue.vue'; -import { shallowMount, VueWrapper } from '@vue/test-utils'; +import { shallowMount, type VueWrapper } from '@vue/test-utils'; import { describe, expect, it } from 'vitest'; let wrapper: VueWrapper; diff --git a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/application/AuthProvider.ts.mustache b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/application/AuthProvider.ts.mustache index 9ccdb2992a3..8bc094212d5 100644 --- a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/application/AuthProvider.ts.mustache +++ b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/application/AuthProvider.ts.mustache @@ -1,6 +1,6 @@ import type { AuthRepository } from '@/auth/domain/AuthRepository'; import { KeycloakAuthRepository } from '@/auth/infrastructure/secondary/KeycloakAuthRepository'; -import { KeycloakHttp } from '@/auth/infrastructure/secondary/KeycloakHttp'; +import { type KeycloakHttp } from '@/auth/infrastructure/secondary/KeycloakHttp'; import { provide } from '@/injections'; import { key } from 'piqure'; diff --git a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakAuthRepository.ts.mustache b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakAuthRepository.ts.mustache index 6d9613b07dc..920ecbe6fb8 100644 --- a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakAuthRepository.ts.mustache +++ b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakAuthRepository.ts.mustache @@ -1,6 +1,6 @@ import type { AuthRepository } from '@/auth/domain/AuthRepository'; import type { AuthenticatedUser } from '@/auth/domain/AuthenticatedUser'; -import { KeycloakHttp } from './KeycloakHttp'; +import { type KeycloakHttp } from './KeycloakHttp'; export class KeycloakAuthRepository implements AuthRepository { constructor(private readonly keycloakHttp: KeycloakHttp) {} diff --git a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakHttp.ts.mustache b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakHttp.ts.mustache index e21618f1ab4..7a7a9651a63 100644 --- a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakHttp.ts.mustache +++ b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/auth/infrastructure/secondary/KeycloakHttp.ts.mustache @@ -1,5 +1,5 @@ import type { AuthenticatedUser } from '@/auth/domain/AuthenticatedUser'; -import Keycloak from 'keycloak-js'; +import type Keycloak from 'keycloak-js'; export class KeycloakHttp { private initialized: boolean = false; diff --git a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/test/webapp/unit/auth/infrastructure/secondary/KeycloakStub.ts.mustache b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/test/webapp/unit/auth/infrastructure/secondary/KeycloakStub.ts.mustache index d49fdea7498..c8a8ff8cff0 100644 --- a/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/test/webapp/unit/auth/infrastructure/secondary/KeycloakStub.ts.mustache +++ b/src/main/resources/generator/client/vue/security/oauth2_keycloak/webapp/app/test/webapp/unit/auth/infrastructure/secondary/KeycloakStub.ts.mustache @@ -1,4 +1,4 @@ -import Keycloak from 'keycloak-js'; +import type Keycloak from 'keycloak-js'; import type { SinonStub } from 'sinon'; import sinon from 'sinon'; diff --git a/src/main/resources/generator/client/vue/webapp/app/env.d.ts.mustache b/src/main/resources/generator/client/vue/webapp/app/env.d.ts.mustache index 025ac41ec43..2435bff5c02 100644 --- a/src/main/resources/generator/client/vue/webapp/app/env.d.ts.mustache +++ b/src/main/resources/generator/client/vue/webapp/app/env.d.ts.mustache @@ -1,7 +1,7 @@ /// declare module '*.vue' { - import { DefineComponent } from 'vue'; + import type DefineComponent from 'vue'; const component: DefineComponent<{}, {}, any>; export default component; } diff --git a/src/main/resources/generator/client/vue/webapp/app/test/webapp/unit/router/infrastructure/primary/HomeRouter.spec.ts.mustache b/src/main/resources/generator/client/vue/webapp/app/test/webapp/unit/router/infrastructure/primary/HomeRouter.spec.ts.mustache index b40d2e636ff..340d6a158d5 100644 --- a/src/main/resources/generator/client/vue/webapp/app/test/webapp/unit/router/infrastructure/primary/HomeRouter.spec.ts.mustache +++ b/src/main/resources/generator/client/vue/webapp/app/test/webapp/unit/router/infrastructure/primary/HomeRouter.spec.ts.mustache @@ -1,6 +1,6 @@ import HomepageVue from '@/home/infrastructure/primary/HomepageVue.vue'; import { routes } from '@/router'; -import { mount, VueWrapper } from '@vue/test-utils'; +import { mount, type VueWrapper } from '@vue/test-utils'; import { beforeEach, describe, expect, it } from 'vitest'; import { createRouter, createWebHistory, type Router } from 'vue-router'; diff --git a/src/main/resources/generator/dependencies/Dockerfile b/src/main/resources/generator/dependencies/Dockerfile index 30187d9c750..466226ba33e 100644 --- a/src/main/resources/generator/dependencies/Dockerfile +++ b/src/main/resources/generator/dependencies/Dockerfile @@ -9,7 +9,7 @@ FROM mysql:9.1.0 FROM cassandra:5.0.2 FROM mcr.microsoft.com/mssql/server:2022-latest FROM postgres:17.0 -FROM apache/kafka-native:3.8.1 +FROM apache/kafka-native:3.9.0 FROM tchiotludo/akhq:0.25.1 FROM apachepulsar/pulsar:4.0.0 FROM neo4j:5.25.1-community diff --git a/src/main/resources/generator/dependencies/angular/package.json b/src/main/resources/generator/dependencies/angular/package.json index 09d8b179efd..bc9071eeaf2 100644 --- a/src/main/resources/generator/dependencies/angular/package.json +++ b/src/main/resources/generator/dependencies/angular/package.json @@ -2,11 +2,11 @@ "dependencies": { "@angular-builders/jest": "18.0.0", "@angular/build": "18.2.11", - "@angular/cdk": "18.2.11", + "@angular/cdk": "18.2.12", "@angular/cli": "18.2.11", - "@angular/compiler-cli": "18.2.10", - "@angular/core": "18.2.10", - "@angular/material": "18.2.11", + "@angular/compiler-cli": "18.2.11", + "@angular/core": "18.2.11", + "@angular/material": "18.2.12", "angular-eslint": "18.4.0", "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.2.4", diff --git a/src/main/resources/generator/dependencies/common/package.json b/src/main/resources/generator/dependencies/common/package.json index a6dabb840b0..720dd21ab4e 100644 --- a/src/main/resources/generator/dependencies/common/package.json +++ b/src/main/resources/generator/dependencies/common/package.json @@ -11,20 +11,20 @@ "@tikui/core": "6.2.1", "@tsconfig/recommended": "1.0.8", "@types/jest": "29.5.14", - "@types/node": "22.8.6", - "@typescript-eslint/eslint-plugin": "8.12.2", - "@typescript-eslint/parser": "8.12.2", + "@types/node": "22.9.0", + "@typescript-eslint/eslint-plugin": "8.13.0", + "@typescript-eslint/parser": "8.13.0", "@vitest/coverage-istanbul": "2.1.4", "autoprefixer": "10.4.20", "browser-sync": "3.0.3", "cssnano": "7.0.6", - "cypress": "13.15.1", + "cypress": "13.15.2", "eslint": "9.14.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-cypress": "4.1.0", - "globals": "15.11.0", + "globals": "15.12.0", "husky": "9.1.6", - "i18next": "23.16.4", + "i18next": "23.16.5", "i18next-browser-languagedetector": "8.0.0", "i18next-http-backend": "2.6.2", "jest": "29.7.0", @@ -38,7 +38,7 @@ "onchange": "7.1.0", "path-exists-cli": "2.0.0", "piqure": "2.1.1", - "postcss": "8.4.47", + "postcss": "8.4.48", "postcss-cli": "11.0.0", "prettier": "3.3.3", "prettier-plugin-gherkin": "3.1.0", @@ -55,9 +55,9 @@ "tikuidoc-tikui": "8.0.0", "ts-jest": "29.2.5", "typescript": "5.6.2", - "typescript-eslint": "8.12.2", + "typescript-eslint": "8.13.0", "vite": "5.4.10", - "vite-tsconfig-paths": "5.0.1", + "vite-tsconfig-paths": "5.1.2", "vitest": "2.1.4", "vitest-sonar-reporter": "2.0.0" } diff --git a/src/main/resources/generator/dependencies/gradle/libs.versions.toml b/src/main/resources/generator/dependencies/gradle/libs.versions.toml index 45fed640c83..68ef18b9b31 100644 --- a/src/main/resources/generator/dependencies/gradle/libs.versions.toml +++ b/src/main/resources/generator/dependencies/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -checkstyle = "10.20.0" +checkstyle = "10.20.1" jib = "3.4.4" git-properties = "2.4.2" protobuf-plugin = "0.9.4" diff --git a/src/main/resources/generator/dependencies/pom.xml b/src/main/resources/generator/dependencies/pom.xml index f33b9269e26..4b84384691b 100644 --- a/src/main/resources/generator/dependencies/pom.xml +++ b/src/main/resources/generator/dependencies/pom.xml @@ -21,10 +21,10 @@ 4.1.3 2.6.0 2.6.0 - 3.8.1 + 3.9.0 5.5.0 - 2.13.3 - 4.29.2 + 2.13.4 + 4.30.0 0.10.2 0.12.6 3.17.0 @@ -40,7 +40,7 @@ 1.0.1 2.1.0-M2 2.1.0-M4 - 2.2.0 + 2.2.1 5.11.3 3.26.3 @@ -61,7 +61,7 @@ 1.11 3.1.0 1.2.1 - 4.0.0.4121 + 5.0.0.4389 3.5.0 3.4.4 3.13.0 @@ -70,6 +70,7 @@ 3.1.0 0.0.21 1.0.3 + 0.36.0 @@ -400,6 +401,16 @@ openapi-backwards-compat-maven-plugin ${openapi-backwards-compat-maven-plugin.version} + + dev.langchain4j + langchain4j-spring-boot-starter + ${langchain4j.version} + + + dev.langchain4j + langchain4j-open-ai-spring-boot-starter + ${langchain4j.version} + diff --git a/src/main/resources/generator/dependencies/react/package.json b/src/main/resources/generator/dependencies/react/package.json index f6b7d49f25e..95ca629725e 100644 --- a/src/main/resources/generator/dependencies/react/package.json +++ b/src/main/resources/generator/dependencies/react/package.json @@ -16,9 +16,8 @@ "eslint-plugin-react": "7.37.2", "react": "18.3.1", "react-dom": "18.3.1", - "react-hook-form": "7.53.1", - "react-i18next": "15.1.0", - "react-scripts": "5.0.1", + "react-hook-form": "7.53.2", + "react-i18next": "15.1.1", "sass": "1.80.6", "ts-node": "10.9.2" } diff --git a/src/main/resources/generator/dependencies/vue/package.json b/src/main/resources/generator/dependencies/vue/package.json index bb28b4bb8e7..c31a41192ec 100644 --- a/src/main/resources/generator/dependencies/vue/package.json +++ b/src/main/resources/generator/dependencies/vue/package.json @@ -4,16 +4,16 @@ "description": "JHipster Lite : used for Vite+Vue3 dependencies", "license": "Apache-2.0", "dependencies": { - "@pinia/testing": "0.1.6", + "@pinia/testing": "0.1.7", "@types/sinon": "17.0.3", "@vitejs/plugin-vue": "5.1.4", "@vue/test-utils": "2.4.6", - "@vue/tsconfig": "0.5.1", + "@vue/tsconfig": "0.6.0", "axios": "1.7.7", "eslint-plugin-vue": "9.30.0", "i18next-vue": "5.0.0", - "pinia": "2.2.5", - "pinia-plugin-persistedstate": "4.1.2", + "pinia": "2.2.6", + "pinia-plugin-persistedstate": "4.1.3", "sinon": "19.0.2", "vue": "3.5.12", "vue-router": "4.4.5", diff --git a/src/main/resources/generator/server/javatool/archunit/test/EqualsHashcodeArchTest.java.mustache b/src/main/resources/generator/server/javatool/archunit/test/EqualsHashcodeArchTest.java.mustache index c7dc65aafd6..04932501d4e 100644 --- a/src/main/resources/generator/server/javatool/archunit/test/EqualsHashcodeArchTest.java.mustache +++ b/src/main/resources/generator/server/javatool/archunit/test/EqualsHashcodeArchTest.java.mustache @@ -27,7 +27,7 @@ class EqualsHashcodeArchTest { private ArchCondition.ConditionByPredicate implementBothOrNone() { return ArchCondition.from( - new DescribedPredicate<>("Class should implement none or both method equals and hashcode") { + new DescribedPredicate<>("Class should implement none or both methods equals and hashcode") { @Override public boolean test(JavaClass clazz) { return hasEquals(clazz) == hasHashCode(clazz); diff --git a/src/main/resources/generator/server/javatool/archunit/test/HexagonalArchTest.java.mustache b/src/main/resources/generator/server/javatool/archunit/test/HexagonalArchTest.java.mustache index b53385dc882..b39acf7b2d7 100644 --- a/src/main/resources/generator/server/javatool/archunit/test/HexagonalArchTest.java.mustache +++ b/src/main/resources/generator/server/javatool/archunit/test/HexagonalArchTest.java.mustache @@ -122,7 +122,7 @@ class HexagonalArchTest { .mayNotBeAccessedByAnyLayer() .whereLayer("secondary adapters") .mayNotBeAccessedByAnyLayer() - .because("Each bounded context should implement an hexagonal architecture") + .because("Each bounded context should implement a hexagonal architecture") .check(classes) ); } diff --git a/src/main/resources/generator/server/sonar/sonar-project.properties.mustache b/src/main/resources/generator/server/sonar/sonar-project.properties.mustache index 9d0492d0270..8ac1547b545 100644 --- a/src/main/resources/generator/server/sonar/sonar-project.properties.mustache +++ b/src/main/resources/generator/server/sonar/sonar-project.properties.mustache @@ -21,7 +21,7 @@ sonar.exclusions=\ src/main/webapp/app/index.tsx,\ src/main/webapp/main.ts -sonar.issue.ignore.multicriteria=S117,S119,S125_1,S125_2,S3437,S4502,S4684,S4032,S5778,S6206,S6548,S6437,S6471,UndocumentedApi,S2301,S7027 +sonar.issue.ignore.multicriteria=S117,S119,S125_1,S125_2,S3437,S4502,S4684,S4032,S5778,S6206,S6548,S6437,UndocumentedApi,S2301,S7027 # Rule: Local variable and method parameter names should comply with a naming convention # Handled with checkstyle. Should be revisited with java 25 once Unnamed Patterns and Variables are available (JEP 443) @@ -74,10 +74,6 @@ sonar.issue.ignore.multicriteria.S6548.ruleKey=java:S6548 sonar.issue.ignore.multicriteria.S6437.resourceKey=src/main/resources/config/application.yml sonar.issue.ignore.multicriteria.S6437.ruleKey=java:S6437 -# Rule: Run container as default user -sonar.issue.ignore.multicriteria.S6471.resourceKey=src/main/docker/cassandra/**/* -sonar.issue.ignore.multicriteria.S6471.ruleKey=docker:S6471 - # Rule: Methods should not contain selector parameters sonar.issue.ignore.multicriteria.S2301.resourceKey=src/main/webapp/app/auth/oauth2-auth.service.ts sonar.issue.ignore.multicriteria.S2301.ruleKey=typescript:S2301 diff --git a/src/main/resources/generator/server/springboot/broker/kafka/KafkaTestContainerExtension.java.mustache b/src/main/resources/generator/server/springboot/broker/kafka/KafkaTestContainerExtension.java.mustache index 75c427a7c31..1117c1f3cff 100644 --- a/src/main/resources/generator/server/springboot/broker/kafka/KafkaTestContainerExtension.java.mustache +++ b/src/main/resources/generator/server/springboot/broker/kafka/KafkaTestContainerExtension.java.mustache @@ -15,6 +15,8 @@ public class KafkaTestContainerExtension implements BeforeAllCallback { public void beforeAll(final ExtensionContext context) { if (!kafkaContainerStarted.get()) { kafkaContainer = new KafkaContainer(DockerImageName.parse("{{kafkaDockerImage}}")).withNetwork(null); + // Waiting this issue https://github.com/testcontainers/testcontainers-java/issues/9506 to remove this line + kafkaContainer.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094"); kafkaContainer.start(); kafkaContainerStarted.set(true); System.setProperty("kafka.bootstrap.servers", kafkaContainer.getBootstrapServers()); diff --git a/src/main/resources/generator/server/springboot/database/jpa/MsSQLTestContainerExtension.java.mustache b/src/main/resources/generator/server/springboot/database/jpa/MsSQLTestContainerExtension.java.mustache index 9773bee5963..2355466c385 100644 --- a/src/main/resources/generator/server/springboot/database/jpa/MsSQLTestContainerExtension.java.mustache +++ b/src/main/resources/generator/server/springboot/database/jpa/MsSQLTestContainerExtension.java.mustache @@ -10,7 +10,7 @@ public class MsSQLTestContainerExtension implements BeforeAllCallback { private static AtomicBoolean started = new AtomicBoolean(false); - private static MSSQLServerContainer container = new MSSQLServerContainer<>("{{mssqlDockerImageWithVersion}}") + private static MSSQLServerContainer container = new MSSQLServerContainer<>("{{mssqlDockerImageWithVersion}}") .withUrlParam("trustServerCertificate","true") .acceptLicense(); diff --git a/src/main/resources/generator/server/springboot/dbmigration/cassandra/Cassandra-Migration.Dockerfile.mustache b/src/main/resources/generator/server/springboot/dbmigration/cassandra/Cassandra-Migration.Dockerfile.mustache index e4b74a94b81..ebbc4b338dd 100644 --- a/src/main/resources/generator/server/springboot/dbmigration/cassandra/Cassandra-Migration.Dockerfile.mustache +++ b/src/main/resources/generator/server/springboot/dbmigration/cassandra/Cassandra-Migration.Dockerfile.mustache @@ -1,5 +1,7 @@ FROM {{ cassandraDockerImage }} +RUN useradd -m cassandra_user + # script to orchestrate the automatic keyspace creation and apply all migration scripts COPY cassandra/scripts/autoMigrate.sh /usr/local/bin/autoMigrate RUN chmod 755 /usr/local/bin/autoMigrate @@ -8,4 +10,6 @@ RUN chmod 755 /usr/local/bin/autoMigrate COPY cassandra/scripts/execute-cql.sh /usr/local/bin/execute-cql RUN chmod 755 /usr/local/bin/execute-cql +USER cassandra_user + ENTRYPOINT ["autoMigrate"] diff --git a/src/main/resources/generator/server/springboot/langchain4j/langchain4j.md.mustache b/src/main/resources/generator/server/springboot/langchain4j/langchain4j.md.mustache new file mode 100644 index 00000000000..f2e0f630f77 --- /dev/null +++ b/src/main/resources/generator/server/springboot/langchain4j/langchain4j.md.mustache @@ -0,0 +1,5 @@ +# LangChain4j + +How to use it: + +[Official documentation](https://docs.langchain4j.dev/tutorials/spring-boot-integration/) diff --git a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/assertions-errors/assertion-errors-messages.properties b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/assertions-errors/assertion-errors-messages.properties index 7283baa260b..713dbea3a8f 100644 --- a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/assertions-errors/assertion-errors-messages.properties +++ b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/assertions-errors/assertion-errors-messages.properties @@ -29,5 +29,5 @@ assertion-error.STRING_TOO_SHORT.title=String too short assertion-error.STRING_WITH_WHITESPACES.detail=The string {{ field }} must not have any whitespaces assertion-error.STRING_WITH_WHITESPACES.title=String with whitespaces -assertion-error.TOO_MANY_ELEMENTS.detail=There is too many elements in {{ field }}, max is {{ maxSize }} (current {{ currentSize }} element(s)) +assertion-error.TOO_MANY_ELEMENTS.detail=There are too many elements in {{ field }}, max is {{ maxSize }} (current {{ currentSize }} element(s)) assertion-error.TOO_MANY_ELEMENTS.title=Too many elements diff --git a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/errors/application-errors-messages_fr.properties b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/errors/application-errors-messages_fr.properties index 08ab58f760f..07046ab50ee 100644 --- a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/errors/application-errors-messages_fr.properties +++ b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/resources/errors/application-errors-messages_fr.properties @@ -2,7 +2,7 @@ ################################# Messages for errors ################################# ####################################################################################### -error.bad-request.detail=Votre requête n'est pas valide: {{ code }} +error.bad-request.detail=Votre requête n'est pas valide : {{ code }} error.bad-request.title=Bad request error.internal-server-error.detail=Une erreur est survenue diff --git a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/ApplicationErrorsHandlerIT.java.mustache b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/ApplicationErrorsHandlerIT.java.mustache index dc839c15a39..be0c341cff1 100644 --- a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/ApplicationErrorsHandlerIT.java.mustache +++ b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/ApplicationErrorsHandlerIT.java.mustache @@ -32,6 +32,6 @@ class {{ baseName }}ErrorsHandlerIT { .perform(get("/api/errors/bad-request").locale(Locale.FRANCE)) .andExpect(status().is4xxClientError()) .andExpect(jsonPath("title").value("Bad request")) - .andExpect(jsonPath("detail").value("Votre requête n'est pas valide: 400")); + .andExpect(jsonPath("detail").value("Votre requête n'est pas valide : 400")); } } diff --git a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/AssertionErrorsHandlerIT.java.mustache b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/AssertionErrorsHandlerIT.java.mustache index 3ccdb6c2017..56deb3d7d70 100644 --- a/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/AssertionErrorsHandlerIT.java.mustache +++ b/src/main/resources/generator/server/springboot/mvc/internationalized-errors/test/AssertionErrorsHandlerIT.java.mustache @@ -93,7 +93,7 @@ class AssertionErrorsHandlerIT { .perform(get("/api/assertion-errors/too-many-elements")) .andExpect(status().isBadRequest()) .andExpect(jsonPath("title").value("Too many elements")) - .andExpect(jsonPath("detail").value("There is too many elements in myField, max is 1 (current 2 element(s))")) + .andExpect(jsonPath("detail").value("There are too many elements in myField, max is 1 (current 2 element(s))")) .andExpect(jsonPath("key").value("TOO_MANY_ELEMENTS")); } diff --git a/src/main/resources/generator/server/springboot/mvc/sample/langchain4j/main/infrastructure/primary/ChatResource.java.mustache b/src/main/resources/generator/server/springboot/mvc/sample/langchain4j/main/infrastructure/primary/ChatResource.java.mustache new file mode 100644 index 00000000000..5098457c422 --- /dev/null +++ b/src/main/resources/generator/server/springboot/mvc/sample/langchain4j/main/infrastructure/primary/ChatResource.java.mustache @@ -0,0 +1,23 @@ +package {{packageName}}.sample.infrastructure.primary; + +import dev.langchain4j.model.chat.ChatLanguageModel; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") +class ChatResource { + + private final ChatLanguageModel chatLanguageModel; + + public ChatResource(ChatLanguageModel chatLanguageModel) { + this.chatLanguageModel = chatLanguageModel; + } + + @GetMapping("/chat") + public String send(@RequestParam(value = "message", defaultValue = "Hello") String message) { + return chatLanguageModel.generate(message); + } +} diff --git a/src/main/resources/generator/server/springboot/mvc/sample/langchain4j/test/sample/infrastructure/primary/ChatResourceTest.java.mustache b/src/main/resources/generator/server/springboot/mvc/sample/langchain4j/test/sample/infrastructure/primary/ChatResourceTest.java.mustache new file mode 100644 index 00000000000..8ebb8a53d95 --- /dev/null +++ b/src/main/resources/generator/server/springboot/mvc/sample/langchain4j/test/sample/infrastructure/primary/ChatResourceTest.java.mustache @@ -0,0 +1,32 @@ +package {{packageName}}.sample.infrastructure.primary; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import {{packageName}}.UnitTest; +import dev.langchain4j.model.chat.ChatLanguageModel; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@UnitTest +@ExtendWith(MockitoExtension.class) +class ChatResourceTest { + + private static final String ANSWER = "Hello! How can I assist you today?"; + + @Mock + private ChatLanguageModel chatLanguageModel; + + @InjectMocks + private ChatResource chat; + + @Test + void shouldSendMessage() { + when(chatLanguageModel.generate("Hello")).thenReturn(ANSWER); + + assertThat(chat.send("Hello")).isEqualTo(ANSWER); + } +} diff --git a/src/main/resources/generator/server/springboot/mvc/security/jwt/basic-auth/main/infrastructure/primary/RestAuthenticationQuery.java.mustache b/src/main/resources/generator/server/springboot/mvc/security/jwt/basic-auth/main/infrastructure/primary/RestAuthenticationQuery.java.mustache index acc87a63b62..0b86778f048 100644 --- a/src/main/resources/generator/server/springboot/mvc/security/jwt/basic-auth/main/infrastructure/primary/RestAuthenticationQuery.java.mustache +++ b/src/main/resources/generator/server/springboot/mvc/security/jwt/basic-auth/main/infrastructure/primary/RestAuthenticationQuery.java.mustache @@ -13,7 +13,7 @@ import {{packageName}}.account.infrastructure.primary.RestAuthenticationQuery.Re import {{packageName}}.shared.authentication.domain.Roles; @JsonDeserialize(builder = RestAuthenticationQueryBuilder.class) -@Schema(name = "AuthenticationQuery", description = "Query to authenticate au user") +@Schema(name = "AuthenticationQuery", description = "Query to authenticate a user") final class RestAuthenticationQuery { private final String username; diff --git a/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/docker/jhipster-realm.json.mustache b/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/docker/jhipster-realm.json.mustache index a74ae77ffca..226b81e74b5 100644 --- a/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/docker/jhipster-realm.json.mustache +++ b/src/main/resources/generator/server/springboot/mvc/security/oauth2/core/docker/jhipster-realm.json.mustache @@ -1807,7 +1807,7 @@ { "id": "da7d3a39-7077-4354-9ffc-5b9f79fbaf0d", "alias": "Verify Existing Account by Re-authentication", - "description": "Reauthentication of existing account", + "description": "Re-authentication of existing account", "providerId": "basic-flow", "topLevel": false, "builtIn": true, diff --git a/src/main/resources/messages/assertions-errors/assertion-errors-messages.properties b/src/main/resources/messages/assertions-errors/assertion-errors-messages.properties index af994cff457..bdf719eb6d7 100644 --- a/src/main/resources/messages/assertions-errors/assertion-errors-messages.properties +++ b/src/main/resources/messages/assertions-errors/assertion-errors-messages.properties @@ -28,7 +28,7 @@ assertion-error.STRING_TOO_SHORT.title=String too short assertion-error.STRING_WITH_WHITESPACES.detail=The string {{ field }} must not have any whitespaces assertion-error.STRING_WITH_WHITESPACES.title=String with whitespaces -assertion-error.TOO_MANY_ELEMENTS.detail=There is too many elements in {{ field }}, max is {{ maxSize }} (current {{ currentSize }} element(s)) +assertion-error.TOO_MANY_ELEMENTS.detail=There are too many elements in {{ field }}, max is {{ maxSize }} (current {{ currentSize }} element(s)) assertion-error.TOO_MANY_ELEMENTS.title=Too many elements assertion-error.STRING_NOT_MATCHING_PATTERN.detail=The string {{ field }} must match the pattern {{ pattern }} diff --git a/src/main/resources/messages/errors/generator-errors-messages_fr.properties b/src/main/resources/messages/errors/generator-errors-messages_fr.properties index fbebb5e1d38..f040c19435f 100644 --- a/src/main/resources/messages/errors/generator-errors-messages_fr.properties +++ b/src/main/resources/messages/errors/generator-errors-messages_fr.properties @@ -38,7 +38,7 @@ error.invalid-property-type.title=Type de propriété invalide error.invalid-slug.detail=Slug invalide. Les slugs doivent être composés uniquement de lettres en minuscules, de nombres ou de tirets error.invalid-slug.title=Slug invalide -error.invalid-tag.detail=Nom du tag {{ tag }} invalide, les tag doivent être uniquement constitués de lettres minuscules, de nombres ou de tirets +error.invalid-tag.detail=Nom du tag {{ tag }} invalide, les tags doivent être uniquement constitués de lettres minuscules, de nombres ou de tirets error.invalid-tag.title=Tag invalide error.invalid-toml-version-catalog-file.detail=Le fichier gradle/libs.versions.toml est invalide diff --git a/src/main/webapp/app/module/primary/landscape-loader/LandscapeLoader.html b/src/main/webapp/app/module/primary/landscape-loader/LandscapeLoader.html index c40c708c0c7..006c53360e7 100644 --- a/src/main/webapp/app/module/primary/landscape-loader/LandscapeLoader.html +++ b/src/main/webapp/app/module/primary/landscape-loader/LandscapeLoader.html @@ -1,4 +1,4 @@ -

+
diff --git a/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.component.ts b/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.component.ts index a73ea1be2a0..fb038181c50 100644 --- a/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.component.ts +++ b/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.component.ts @@ -42,7 +42,7 @@ export default defineComponent({ }); const removeDataSelectorAttrs = (data: string): string => { - const regex = /data-selector="[^"]*"/g; + const regex = /data-testid="[^"]*"/g; return data.replace(regex, ''); }; diff --git a/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.html b/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.html index c590d0b5bff..1df69fa96b5 100644 --- a/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.html +++ b/src/main/webapp/app/module/primary/landscape-minimap/LandscapeMiniMap.html @@ -1,13 +1,11 @@
- + @@ -19,8 +17,8 @@ @mousemove="grabbing" @mouseup="stopGrabbing" @mouseleave="stopGrabbing" - data-selector="minimap-viewer" + data-testid="minimap-viewer" >
-
+
diff --git a/src/main/webapp/app/module/primary/landscape-module/LandscapeModule.html b/src/main/webapp/app/module/primary/landscape-module/LandscapeModule.html index 7c75b929063..2c034be2d93 100644 --- a/src/main/webapp/app/module/primary/landscape-module/LandscapeModule.html +++ b/src/main/webapp/app/module/primary/landscape-module/LandscapeModule.html @@ -2,7 +2,7 @@ class="jhlite-chip" :class="moduleClass()" :ref="el => landscapeElements.set(module.slugString(), el)" - :data-selector="`${module.slugString()}-module`" + :data-testid="`${module.slugString()}-module`" @mouseover="emphasizeModule()" @mouseleave="deEmphasizeModule()" @click="clickedModule()" @@ -15,7 +15,7 @@ name="ccw" aria-label="Reapply" title="Re-apply module" - :data-selector="`module-${module.slug}-application-icon`" + :data-testid="`module-${module.slug}-application-icon`" />
{{ module.operation() }}
diff --git a/src/main/webapp/app/module/primary/landscape-preset-configuration/LandscapePresetConfiguration.html b/src/main/webapp/app/module/primary/landscape-preset-configuration/LandscapePresetConfiguration.html index 159c485cc1d..92910a23f1c 100644 --- a/src/main/webapp/app/module/primary/landscape-preset-configuration/LandscapePresetConfiguration.html +++ b/src/main/webapp/app/module/primary/landscape-preset-configuration/LandscapePresetConfiguration.html @@ -4,7 +4,7 @@ class="jhlite-button-main -small" @click="openPresetConfiguration" title="Show presets configurations" - data-selector="show-preset-configuration-btn" + data-testid="show-preset-configuration-btn" > @@ -13,7 +13,7 @@ v-if="isPresetConfigurationOpen" @click="closePresetConfiguration" title="Hide presets configurations" - data-selector="hide-preset-configuration-btn" + data-testid="hide-preset-configuration-btn" > diff --git a/src/main/webapp/app/module/primary/landscape/Landscape.html b/src/main/webapp/app/module/primary/landscape/Landscape.html index b3cd7bcd310..7a26fd98163 100644 --- a/src/main/webapp/app/module/primary/landscape/Landscape.html +++ b/src/main/webapp/app/module/primary/landscape/Landscape.html @@ -1,5 +1,5 @@ -
+
@@ -7,7 +7,7 @@ class="jhlite-button-switch" :class="modeSwitchClass('COMPACTED')" @click="selectMode('COMPACTED')" - data-selector="compacted-mode-button" + data-testid="compacted-mode-button" > Compacted @@ -15,7 +15,7 @@ class="jhlite-button-switch" :class="modeSwitchClass('EXTENDED')" @click="selectMode('EXTENDED')" - data-selector="extended-mode-button" + data-testid="extended-mode-button" > Extended @@ -36,7 +36,7 @@ class="jhlite-input-text" placeholder="Search modules..." @input="performSearch($event.target.value)" - data-selector="landscape-search-input" + data-testid="landscape-search-input" />
@@ -46,7 +46,7 @@
@@ -95,7 +95,7 @@

{{ element.sl {{ element.sl

:placeholder="property.defaultValue" @input="setNumberProperty(property.key, $event.target.value)" :value="parameters.get(property.key)" - :data-selector="`parameter-${property.key}-field`" + :data-testid="`parameter-${property.key}-field`" v-if="property.type === 'INTEGER'" />
-
+
Optional
@@ -70,7 +70,7 @@

Properties

type="checkbox" id="commit-modules" @click="updateModuleCommit($event.target.checked)" - data-selector="commit-module-application" + data-testid="commit-module-application" checked="checked" /> diff --git a/src/main/webapp/app/module/primary/modules-patch-loader/ModulesPatchLoader.html b/src/main/webapp/app/module/primary/modules-patch-loader/ModulesPatchLoader.html index 947d1c2d4d3..5ad27d9dd69 100644 --- a/src/main/webapp/app/module/primary/modules-patch-loader/ModulesPatchLoader.html +++ b/src/main/webapp/app/module/primary/modules-patch-loader/ModulesPatchLoader.html @@ -1,4 +1,4 @@ -
+
diff --git a/src/main/webapp/app/module/primary/modules-patch/ModulesPatch.html b/src/main/webapp/app/module/primary/modules-patch/ModulesPatch.html index b4e37804d5a..10e33d120e4 100644 --- a/src/main/webapp/app/module/primary/modules-patch/ModulesPatch.html +++ b/src/main/webapp/app/module/primary/modules-patch/ModulesPatch.html @@ -1,5 +1,5 @@ -
+
@@ -12,11 +12,11 @@ type="text" class="jhipster-modules-filters--filter" placeholder="Filter" - data-selector="modules-filter-field" + data-testid="modules-filter-field" @input="updateSearch($event.target.value)" /> -
+
{{ displayedModulesCount() }} / {{ totalModulesCount() }}
@@ -31,7 +31,7 @@

{{ category.name }}

:class="moduleClass(module.slug)" @click="toggleModule(module.slug)" @keyup.enter="toggleModule(module.slug)" - :data-selector="`${module.slug}-module-content`" + :data-testid="`${module.slug}-module-content`" >
{{ tag }}
@@ -61,23 +61,13 @@

{{ category.name }}

:class="moduleClass(module.slug)" :disabled="disabledApplication(module.slug)" @click="applyModule(module.slug)" - :data-selector="`module-${module.slug}-application-button`" + :data-testid="`module-${module.slug}-application-button`" > - + - +
diff --git a/src/main/webapp/app/module/primary/project-actions/ProjectActions.html b/src/main/webapp/app/module/primary/project-actions/ProjectActions.html index 2e3dc33cbbc..cdcd941fd6b 100644 --- a/src/main/webapp/app/module/primary/project-actions/ProjectActions.html +++ b/src/main/webapp/app/module/primary/project-actions/ProjectActions.html @@ -3,13 +3,13 @@
-
- diff --git a/src/main/webapp/app/module/primary/tag-filter/TagFilter.html b/src/main/webapp/app/module/primary/tag-filter/TagFilter.html index a4133b194b5..90bec3e12f2 100644 --- a/src/main/webapp/app/module/primary/tag-filter/TagFilter.html +++ b/src/main/webapp/app/module/primary/tag-filter/TagFilter.html @@ -1 +1 @@ - + diff --git a/src/main/webapp/app/module/secondary/LocalStorageModuleParametersRepository.ts b/src/main/webapp/app/module/secondary/LocalStorageModuleParametersRepository.ts index ad553fcae55..dfdba43126d 100644 --- a/src/main/webapp/app/module/secondary/LocalStorageModuleParametersRepository.ts +++ b/src/main/webapp/app/module/secondary/LocalStorageModuleParametersRepository.ts @@ -1,7 +1,7 @@ import { ModuleParameterType } from '../domain/ModuleParameters'; import { ModuleParametersRepository } from '../domain/ModuleParametersRepository'; -const STORAGE_KEY_MODULE_PARAMETERS_SUFIX = '_moduleParameters'; +const STORAGE_KEY_MODULE_PARAMETERS_SUFFIX = '_moduleParameters'; const STORAGE_KEY_CURRENT_FOLDER_PATH = 'currentFolderPath'; export class LocalStorageModuleParametersRepository implements ModuleParametersRepository { @@ -13,12 +13,12 @@ export class LocalStorageModuleParametersRepository implements ModuleParametersR } store(folderPath: string, map: Map): void { - this.localStorage.setItem(folderPath + STORAGE_KEY_MODULE_PARAMETERS_SUFIX, JSON.stringify(Array.from(map.entries()))); + this.localStorage.setItem(folderPath + STORAGE_KEY_MODULE_PARAMETERS_SUFFIX, JSON.stringify(Array.from(map.entries()))); } get(folderPath: string): Map { this.localStorage.setItem(STORAGE_KEY_CURRENT_FOLDER_PATH, folderPath); - const storedValue = this.localStorage.getItem(folderPath + STORAGE_KEY_MODULE_PARAMETERS_SUFIX); + const storedValue = this.localStorage.getItem(folderPath + STORAGE_KEY_MODULE_PARAMETERS_SUFFIX); if (storedValue) { return new Map(JSON.parse(storedValue)); } diff --git a/src/main/webapp/app/shared/theme-button/infrastructure/primary/ThemeButton.vue b/src/main/webapp/app/shared/theme-button/infrastructure/primary/ThemeButton.vue index 43480fbe9c1..354f22cb980 100644 --- a/src/main/webapp/app/shared/theme-button/infrastructure/primary/ThemeButton.vue +++ b/src/main/webapp/app/shared/theme-button/infrastructure/primary/ThemeButton.vue @@ -6,7 +6,7 @@ type="checkbox" name="mode" :checked="!isDarkTheme" - data-selector="theme-switch-button" + data-testid="theme-switch-button" @change="toggleTheme" />