From ad83e738789be26b285a5f89ce5339b709b28d72 Mon Sep 17 00:00:00 2001 From: maesi Date: Sat, 13 Dec 2025 10:43:29 +0100 Subject: [PATCH 01/92] upgrade go version to 1.25.5 --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 4 ++-- go.mod | 2 +- images/alpha.Dockerfile | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1a9c4fa9d..f02406b48 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.25.1 + go-version: 1.25.5 - name: Check out code uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 20b3e7caa..379123ef6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: password: ${{ secrets.DOCKER_PASSWORD }} - uses: actions/setup-go@v5 with: - go-version: 1.25.1 + go-version: 1.25.5 - uses: actions/setup-node@v4 with: node-version: 23 @@ -59,7 +59,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-go@v5 with: - go-version: 1.25.1 + go-version: 1.25.5 - uses: actions/setup-node@v4 with: node-version: 23 diff --git a/go.mod b/go.mod index 31f7c209f..3b2754778 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module mokapi -go 1.25.1 +go 1.25.5 require ( github.com/Masterminds/sprig v2.22.0+incompatible diff --git a/images/alpha.Dockerfile b/images/alpha.Dockerfile index bfc4e3993..a07f21bb6 100644 --- a/images/alpha.Dockerfile +++ b/images/alpha.Dockerfile @@ -11,7 +11,7 @@ COPY ./docs ./src/assets/docs RUN npm install RUN npm run build -FROM golang:1.25.1-alpine AS gobuild +FROM golang:1.25.5-alpine AS gobuild ARG VERSION=dev From ab53eabb482688cd4bd8e8a83288a6f63630f02a Mon Sep 17 00:00:00 2001 From: maesi Date: Sat, 13 Dec 2025 11:05:13 +0100 Subject: [PATCH 02/92] fix Unsupported TypeScript syntax --- webui/src/vue-modules.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui/src/vue-modules.d.ts b/webui/src/vue-modules.d.ts index 10b4e5525..ab5f367d8 100644 --- a/webui/src/vue-modules.d.ts +++ b/webui/src/vue-modules.d.ts @@ -5,7 +5,7 @@ declare module 'markdown-it-codetabs' declare module '@ssthouse/vue3-tree-chart' declare module 'highlight.js' { export interface HLJS{ - highlightAuto: function() + highlightAuto: () => any } const hljs: HLJS export default hljs From ff2d4242484d8ab03622cbbdababbf07bdb873d1 Mon Sep 17 00:00:00 2001 From: maesi Date: Mon, 15 Dec 2025 15:10:54 +0100 Subject: [PATCH 03/92] fix security alert #51 --- providers/directory/search.go | 5 ++- providers/directory/search_test.go | 60 ++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/providers/directory/search.go b/providers/directory/search.go index 7dfa12d60..2301ec502 100644 --- a/providers/directory/search.go +++ b/providers/directory/search.go @@ -562,7 +562,10 @@ func sidToBytes(sid string) ([]byte, error) { // Revision rev, revErr := strconv.ParseUint(parts[0], 10, 32) if revErr != nil { - return nil, fmt.Errorf("invalid uint value %v at position: %v", parts[0], 0) + return nil, fmt.Errorf("invalid SID revision value value '%v' at position: %v", parts[0], 0) + } + if rev > 255 { + return nil, fmt.Errorf("SID revision value '%v' out of byte range (0-255) at position: %v", parts[1], 0) } result = append(result, byte(rev)) diff --git a/providers/directory/search_test.go b/providers/directory/search_test.go index 846f4a5ad..7135a2485 100644 --- a/providers/directory/search_test.go +++ b/providers/directory/search_test.go @@ -281,6 +281,66 @@ objectSid:: AQUAAAAAAAUVAAAAF8sUcR3r8QcekDXQw9wAAA== require.Equal(t, "cn=user1", res.Results[0].Dn) }, }, + { + name: "ldap filter objectSid using AD style with invalid revision", + input: `{ "files": [ "./users.ldif" ] }`, + reader: &dynamictest.Reader{Data: map[string]*dynamic.Config{ + "file:/users.ldif": {Raw: []byte(` +dn: +namingContexts: dc=example_domain_name +subschemaSubentry: cn=schema + +dn: cn=schema +objectClass: top +objectClass: subschema +attributeTypes: ( 1.2.3.4.5.6.7.8 NAME 'objectSid' DESC 'objectSid' EQUALITY activeDirectoryObjectSidMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) +`)}, + }}, + test: func(t *testing.T, h ldap.Handler, log *test.Hook, err error) { + require.NoError(t, err) + + rr := ldaptest.NewRecorder() + h.ServeLDAP(rr, ldaptest.NewRequest(0, &ldap.SearchRequest{ + Scope: ldap.ScopeWholeSubtree, + Filter: fmt.Sprintf("(objectSid=S-foo-5-21-1234567890-1234567890-1234567890-1001)"), + })) + res := rr.Message.(*ldap.SearchResponse) + + require.Len(t, res.Results, 0) + require.Len(t, log.Entries, 2) + require.Equal(t, "ldap: filter syntax error: invalid SID 'S-foo-5-21-1234567890-1234567890-1234567890-1001': invalid SID revision value value 'foo' at position: 0", log.Entries[1].Message) + }, + }, + { + name: "ldap filter objectSid using AD style with revision to high", + input: `{ "files": [ "./users.ldif" ] }`, + reader: &dynamictest.Reader{Data: map[string]*dynamic.Config{ + "file:/users.ldif": {Raw: []byte(` +dn: +namingContexts: dc=example_domain_name +subschemaSubentry: cn=schema + +dn: cn=schema +objectClass: top +objectClass: subschema +attributeTypes: ( 1.2.3.4.5.6.7.8 NAME 'objectSid' DESC 'objectSid' EQUALITY activeDirectoryObjectSidMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) +`)}, + }}, + test: func(t *testing.T, h ldap.Handler, log *test.Hook, err error) { + require.NoError(t, err) + + rr := ldaptest.NewRecorder() + h.ServeLDAP(rr, ldaptest.NewRequest(0, &ldap.SearchRequest{ + Scope: ldap.ScopeWholeSubtree, + Filter: fmt.Sprintf("(objectSid=S-300-5-21-1234567890-1234567890-1234567890-1001)"), + })) + res := rr.Message.(*ldap.SearchResponse) + + require.Len(t, res.Results, 0) + require.Len(t, log.Entries, 2) + require.Equal(t, "ldap: filter syntax error: invalid SID 'S-300-5-21-1234567890-1234567890-1234567890-1001': SID revision value '5' out of byte range (0-255) at position: 0", log.Entries[1].Message) + }, + }, { name: "ldap filter objectSid using AD style with invalid authId", input: `{ "files": [ "./users.ldif" ] }`, From 1b6ab593923ffb13bda7627ac4ebed8e9f36d275 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 07:04:16 +0000 Subject: [PATCH 04/92] Bump vite from 7.2.7 to 7.3.0 in /webui Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.2.7 to 7.3.0. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v7.3.0/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v7.3.0/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 7.3.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- webui/package-lock.json | 258 ++++++++++++++++++++++------------------ webui/package.json | 2 +- 2 files changed, 146 insertions(+), 114 deletions(-) diff --git a/webui/package-lock.json b/webui/package-lock.json index a18f2c95c..0a161d480 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -43,7 +43,7 @@ "npm-run-all": "^4.1.5", "prettier": "^3.7.4", "typescript": "~5.9.3", - "vite": "^7.2.7", + "vite": "^7.3.0", "vue-tsc": "^3.1.8", "xml2js": "^0.6.2" } @@ -104,9 +104,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", "cpu": [ "ppc64" ], @@ -121,9 +121,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", "cpu": [ "arm" ], @@ -138,9 +138,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", "cpu": [ "arm64" ], @@ -155,9 +155,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", "cpu": [ "x64" ], @@ -172,9 +172,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", "cpu": [ "arm64" ], @@ -189,9 +189,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", "cpu": [ "x64" ], @@ -206,9 +206,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", "cpu": [ "arm64" ], @@ -223,9 +223,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", "cpu": [ "x64" ], @@ -240,9 +240,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", "cpu": [ "arm" ], @@ -257,9 +257,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", "cpu": [ "arm64" ], @@ -274,9 +274,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", "cpu": [ "ia32" ], @@ -291,9 +291,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", "cpu": [ "loong64" ], @@ -308,9 +308,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", "cpu": [ "mips64el" ], @@ -325,9 +325,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", "cpu": [ "ppc64" ], @@ -342,9 +342,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", "cpu": [ "riscv64" ], @@ -359,9 +359,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", "cpu": [ "s390x" ], @@ -376,9 +376,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", "cpu": [ "x64" ], @@ -393,9 +393,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", "cpu": [ "arm64" ], @@ -410,9 +410,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", "cpu": [ "x64" ], @@ -427,9 +427,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", "cpu": [ "arm64" ], @@ -444,9 +444,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ "x64" ], @@ -460,10 +460,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -478,9 +495,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -495,9 +512,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ "ia32" ], @@ -512,9 +529,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ "x64" ], @@ -795,6 +812,7 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -1155,8 +1173,7 @@ "node_modules/@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", - "peer": true + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" }, "node_modules/@types/markdown-it": { "version": "12.2.3", @@ -1171,8 +1188,7 @@ "node_modules/@types/mdurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", - "peer": true + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" }, "node_modules/@types/node": { "version": "25.0.1", @@ -1180,6 +1196,7 @@ "integrity": "sha512-czWPzKIAXucn9PtsttxmumiQ9N0ok9FrBwgRWrwmVLlp86BrMExzvXRLFYRJ+Ex3g6yqj+KuaxfX1JTgV2lpfg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -1618,6 +1635,7 @@ "integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.38.0", "@typescript-eslint/types": "8.38.0", @@ -1815,13 +1833,15 @@ "version": "1.43.5", "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.5.tgz", "integrity": "sha512-iH5FLBKdB7SVn9GR37UgA/tpQS8OTWIxWAuq3Ofaw+Qbc69FfPXsXd9jeW7KRG2xKpKMqBDnu0tHBrCWY5QI7A==", - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2416,6 +2436,7 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", + "peer": true, "engines": { "node": ">=12" } @@ -2741,9 +2762,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2754,31 +2775,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, "node_modules/escape-string-regexp": { @@ -2799,6 +2821,7 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -2859,6 +2882,7 @@ "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "build/bin/cli.js" }, @@ -2903,6 +2927,7 @@ "integrity": "sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", @@ -3952,6 +3977,7 @@ "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "peer": true, "dependencies": { "argparse": "^2.0.1", "entities": "~2.1.0", @@ -4642,6 +4668,7 @@ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -5227,6 +5254,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -5296,6 +5324,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5371,13 +5400,14 @@ } }, "node_modules/vite": { - "version": "7.2.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz", - "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", + "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", @@ -5483,6 +5513,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -5502,6 +5533,7 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz", "integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==", "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/compiler-sfc": "3.5.25", diff --git a/webui/package.json b/webui/package.json index f442565a7..bf95ba077 100644 --- a/webui/package.json +++ b/webui/package.json @@ -51,7 +51,7 @@ "npm-run-all": "^4.1.5", "prettier": "^3.7.4", "typescript": "~5.9.3", - "vite": "^7.2.7", + "vite": "^7.3.0", "vue-tsc": "^3.1.8", "xml2js": "^0.6.2" } From 7f4dd988add42732f89d9d21c2e23286c57bb411 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 07:04:17 +0000 Subject: [PATCH 05/92] Bump github.com/evanw/esbuild from 0.27.1 to 0.27.2 Bumps [github.com/evanw/esbuild](https://github.com/evanw/esbuild) from 0.27.1 to 0.27.2. - [Release notes](https://github.com/evanw/esbuild/releases) - [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) - [Commits](https://github.com/evanw/esbuild/compare/v0.27.1...v0.27.2) --- updated-dependencies: - dependency-name: github.com/evanw/esbuild dependency-version: 0.27.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3b2754778..be2a2010d 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/bradleyfalzon/ghinstallation/v2 v2.17.0 github.com/brianvoe/gofakeit/v6 v6.28.0 github.com/dop251/goja v0.0.0-20250309171923-bcd7cc6bf64c - github.com/evanw/esbuild v0.27.1 + github.com/evanw/esbuild v0.27.2 github.com/fsnotify/fsnotify v1.9.0 github.com/go-co-op/gocron v1.37.0 github.com/go-git/go-git/v5 v5.16.4 diff --git a/go.sum b/go.sum index 5783117b1..0c44e1abc 100644 --- a/go.sum +++ b/go.sum @@ -81,8 +81,8 @@ github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/evanw/esbuild v0.27.1 h1:SkYgb1wrwJkJYwBp5hjmQGm3riUHbCdfViyEvjAA/KA= -github.com/evanw/esbuild v0.27.1/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48= +github.com/evanw/esbuild v0.27.2 h1:3xBEws9y/JosfewXMM2qIyHAi+xRo8hVx475hVkJfNg= +github.com/evanw/esbuild v0.27.2/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= From da4d083066ab0e85153a7c12b6309f6282b26bd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 07:10:57 +0000 Subject: [PATCH 06/92] Bump eslint from 9.39.1 to 9.39.2 in /webui Bumps [eslint](https://github.com/eslint/eslint) from 9.39.1 to 9.39.2. - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v9.39.1...v9.39.2) --- updated-dependencies: - dependency-name: eslint dependency-version: 9.39.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- webui/package-lock.json | 16 ++++++++-------- webui/package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/webui/package-lock.json b/webui/package-lock.json index 0a161d480..6afe4caf2 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -38,7 +38,7 @@ "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/tsconfig": "^0.8.1", - "eslint": "^9.39.1", + "eslint": "^9.39.2", "eslint-plugin-vue": "^10.6.2", "npm-run-all": "^4.1.5", "prettier": "^3.7.4", @@ -640,9 +640,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, "license": "MIT", "engines": { @@ -2816,9 +2816,9 @@ } }, "node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", "peer": true, @@ -2829,7 +2829,7 @@ "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.1", + "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", diff --git a/webui/package.json b/webui/package.json index bf95ba077..544750586 100644 --- a/webui/package.json +++ b/webui/package.json @@ -46,7 +46,7 @@ "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/tsconfig": "^0.8.1", - "eslint": "^9.39.1", + "eslint": "^9.39.2", "eslint-plugin-vue": "^10.6.2", "npm-run-all": "^4.1.5", "prettier": "^3.7.4", From d49382a678e10e2c4289dee7df07cceda3de3945 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 07:17:40 +0000 Subject: [PATCH 07/92] Bump @vitejs/plugin-vue from 6.0.2 to 6.0.3 in /webui Bumps [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue) from 6.0.2 to 6.0.3. - [Release notes](https://github.com/vitejs/vite-plugin-vue/releases) - [Changelog](https://github.com/vitejs/vite-plugin-vue/blob/main/packages/plugin-vue/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite-plugin-vue/commits/plugin-vue@6.0.3/packages/plugin-vue) --- updated-dependencies: - dependency-name: "@vitejs/plugin-vue" dependency-version: 6.0.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- webui/package-lock.json | 18 +++++++++--------- webui/package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/webui/package-lock.json b/webui/package-lock.json index 6afe4caf2..fdfe3851e 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -34,7 +34,7 @@ "@rushstack/eslint-patch": "^1.15.0", "@types/js-yaml": "^4.0.9", "@types/node": "^25.0.1", - "@vitejs/plugin-vue": "^6.0.2", + "@vitejs/plugin-vue": "^6.0.3", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/tsconfig": "^0.8.1", @@ -819,9 +819,9 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.50", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.50.tgz", - "integrity": "sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==", + "version": "1.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz", + "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==", "dev": true, "license": "MIT" }, @@ -1270,19 +1270,19 @@ } }, "node_modules/@vitejs/plugin-vue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.2.tgz", - "integrity": "sha512-iHmwV3QcVGGvSC1BG5bZ4z6iwa1SOpAPWmnjOErd4Ske+lZua5K9TtAVdx0gMBClJ28DViCbSmZitjWZsWO3LA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.3.tgz", + "integrity": "sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==", "dev": true, "license": "MIT", "dependencies": { - "@rolldown/pluginutils": "1.0.0-beta.50" + "@rolldown/pluginutils": "1.0.0-beta.53" }, "engines": { "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "vue": "^3.2.25" } }, diff --git a/webui/package.json b/webui/package.json index 544750586..ba6ceed2a 100644 --- a/webui/package.json +++ b/webui/package.json @@ -42,7 +42,7 @@ "@rushstack/eslint-patch": "^1.15.0", "@types/js-yaml": "^4.0.9", "@types/node": "^25.0.1", - "@vitejs/plugin-vue": "^6.0.2", + "@vitejs/plugin-vue": "^6.0.3", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/tsconfig": "^0.8.1", From 7287d27d74299d2e9dc4da12f41e17da1223ebb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 07:24:20 +0000 Subject: [PATCH 08/92] Bump vue from 3.5.25 to 3.5.26 in /webui Bumps [vue](https://github.com/vuejs/core) from 3.5.25 to 3.5.26. - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.5.25...v3.5.26) --- updated-dependencies: - dependency-name: vue dependency-version: 3.5.26 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- webui/package-lock.json | 118 ++++++++++++++++++++-------------------- webui/package.json | 2 +- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/webui/package-lock.json b/webui/package-lock.json index fdfe3851e..8437c5189 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -21,7 +21,7 @@ "http-status-codes": "^2.3.0", "js-yaml": "^4.1.1", "ncp": "^2.0.0", - "vue": "^3.5.25", + "vue": "^3.5.26", "vue-router": "^4.6.4", "vue3-ace-editor": "^2.2.4", "vue3-highlightjs": "^1.0.5", @@ -1316,22 +1316,22 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.25.tgz", - "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.26.tgz", + "integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==", "license": "MIT", "dependencies": { "@babel/parser": "^7.28.5", - "@vue/shared": "3.5.25", - "entities": "^4.5.0", + "@vue/shared": "3.5.26", + "entities": "^7.0.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-core/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz", + "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -1341,26 +1341,26 @@ } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.25.tgz", - "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz", + "integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.25", - "@vue/shared": "3.5.25" + "@vue/compiler-core": "3.5.26", + "@vue/shared": "3.5.26" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.25.tgz", - "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz", + "integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==", "license": "MIT", "dependencies": { "@babel/parser": "^7.28.5", - "@vue/compiler-core": "3.5.25", - "@vue/compiler-dom": "3.5.25", - "@vue/compiler-ssr": "3.5.25", - "@vue/shared": "3.5.25", + "@vue/compiler-core": "3.5.26", + "@vue/compiler-dom": "3.5.26", + "@vue/compiler-ssr": "3.5.26", + "@vue/shared": "3.5.26", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.6", @@ -1368,13 +1368,13 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.25.tgz", - "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz", + "integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.25", - "@vue/shared": "3.5.25" + "@vue/compiler-dom": "3.5.26", + "@vue/shared": "3.5.26" } }, "node_modules/@vue/devtools-api": { @@ -1761,53 +1761,53 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.25.tgz", - "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.26.tgz", + "integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.25" + "@vue/shared": "3.5.26" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.25.tgz", - "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.26.tgz", + "integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.25", - "@vue/shared": "3.5.25" + "@vue/reactivity": "3.5.26", + "@vue/shared": "3.5.26" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.25.tgz", - "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz", + "integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.25", - "@vue/runtime-core": "3.5.25", - "@vue/shared": "3.5.25", - "csstype": "^3.1.3" + "@vue/reactivity": "3.5.26", + "@vue/runtime-core": "3.5.26", + "@vue/shared": "3.5.26", + "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.25.tgz", - "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.26.tgz", + "integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.25", - "@vue/shared": "3.5.25" + "@vue/compiler-ssr": "3.5.26", + "@vue/shared": "3.5.26" }, "peerDependencies": { - "vue": "3.5.25" + "vue": "3.5.26" } }, "node_modules/@vue/shared": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", - "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.26.tgz", + "integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==", "license": "MIT" }, "node_modules/@vue/tsconfig": { @@ -5529,17 +5529,17 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.25", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz", - "integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==", + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz", + "integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==", "license": "MIT", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.5.25", - "@vue/compiler-sfc": "3.5.25", - "@vue/runtime-dom": "3.5.25", - "@vue/server-renderer": "3.5.25", - "@vue/shared": "3.5.25" + "@vue/compiler-dom": "3.5.26", + "@vue/compiler-sfc": "3.5.26", + "@vue/runtime-dom": "3.5.26", + "@vue/server-renderer": "3.5.26", + "@vue/shared": "3.5.26" }, "peerDependencies": { "typescript": "*" diff --git a/webui/package.json b/webui/package.json index ba6ceed2a..467aa2602 100644 --- a/webui/package.json +++ b/webui/package.json @@ -29,7 +29,7 @@ "http-status-codes": "^2.3.0", "js-yaml": "^4.1.1", "ncp": "^2.0.0", - "vue": "^3.5.25", + "vue": "^3.5.26", "vue-router": "^4.6.4", "vue3-ace-editor": "^2.2.4", "vue3-highlightjs": "^1.0.5", From 4af9d95745db95ac25a7ec5af47607476410b294 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 07:30:55 +0000 Subject: [PATCH 09/92] Bump @types/node from 25.0.1 to 25.0.3 in /webui Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.0.1 to 25.0.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.0.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- webui/package-lock.json | 8 ++++---- webui/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webui/package-lock.json b/webui/package-lock.json index 8437c5189..0895c474b 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -33,7 +33,7 @@ "@playwright/test": "^1.57.0", "@rushstack/eslint-patch": "^1.15.0", "@types/js-yaml": "^4.0.9", - "@types/node": "^25.0.1", + "@types/node": "^25.0.3", "@vitejs/plugin-vue": "^6.0.3", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", @@ -1191,9 +1191,9 @@ "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" }, "node_modules/@types/node": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.1.tgz", - "integrity": "sha512-czWPzKIAXucn9PtsttxmumiQ9N0ok9FrBwgRWrwmVLlp86BrMExzvXRLFYRJ+Ex3g6yqj+KuaxfX1JTgV2lpfg==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "dev": true, "license": "MIT", "peer": true, diff --git a/webui/package.json b/webui/package.json index 467aa2602..6efbea962 100644 --- a/webui/package.json +++ b/webui/package.json @@ -41,7 +41,7 @@ "@playwright/test": "^1.57.0", "@rushstack/eslint-patch": "^1.15.0", "@types/js-yaml": "^4.0.9", - "@types/node": "^25.0.1", + "@types/node": "^25.0.3", "@vitejs/plugin-vue": "^6.0.3", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", From b870298fc4255b1b18d51644118025eb99204983 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 21 Dec 2025 14:32:51 +0000 Subject: [PATCH 10/92] Bump github.com/blevesearch/bleve/v2 from 2.5.6 to 2.5.7 Bumps [github.com/blevesearch/bleve/v2](https://github.com/blevesearch/bleve) from 2.5.6 to 2.5.7. - [Release notes](https://github.com/blevesearch/bleve/releases) - [Commits](https://github.com/blevesearch/bleve/compare/v2.5.6...v2.5.7) --- updated-dependencies: - dependency-name: github.com/blevesearch/bleve/v2 dependency-version: 2.5.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index be2a2010d..1d304c69c 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.25.5 require ( github.com/Masterminds/sprig v2.22.0+incompatible - github.com/blevesearch/bleve/v2 v2.5.6 + github.com/blevesearch/bleve/v2 v2.5.7 github.com/blevesearch/bleve_index_api v1.2.11 github.com/bradleyfalzon/ghinstallation/v2 v2.17.0 github.com/brianvoe/gofakeit/v6 v6.28.0 @@ -49,7 +49,7 @@ require ( github.com/blevesearch/zapx/v13 v13.4.2 // indirect github.com/blevesearch/zapx/v14 v14.4.2 // indirect github.com/blevesearch/zapx/v15 v15.4.2 // indirect - github.com/blevesearch/zapx/v16 v16.2.7 // indirect + github.com/blevesearch/zapx/v16 v16.2.8 // indirect github.com/cloudflare/circl v1.6.1 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/go.sum b/go.sum index 0c44e1abc..e9f71cbbc 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY github.com/bits-and-blooms/bitset v1.12.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bits-and-blooms/bitset v1.22.0 h1:Tquv9S8+SGaS3EhyA+up3FXzmkhxPGjQQCkcs2uw7w4= github.com/bits-and-blooms/bitset v1.22.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/blevesearch/bleve/v2 v2.5.6 h1:YdixQmOUuZHojQRe8Te7BY2cRirbzpbcpybAFs0m2DI= -github.com/blevesearch/bleve/v2 v2.5.6/go.mod h1:t5WoESS5TDteTdnjhhvpA1BpLYErOBX2IQViTMLK7wo= +github.com/blevesearch/bleve/v2 v2.5.7 h1:2d9YrL5zrX5EBBW++GOaEKjE+NPWeZGaX77IM26m1Z8= +github.com/blevesearch/bleve/v2 v2.5.7/go.mod h1:yj0NlS7ocGC4VOSAedqDDMktdh2935v2CSWOCDMHdSA= github.com/blevesearch/bleve_index_api v1.2.11 h1:bXQ54kVuwP8hdrXUSOnvTQfgK0KI1+f9A0ITJT8tX1s= github.com/blevesearch/bleve_index_api v1.2.11/go.mod h1:rKQDl4u51uwafZxFrPD1R7xFOwKnzZW7s/LSeK4lgo0= github.com/blevesearch/geo v0.2.4 h1:ECIGQhw+QALCZaDcogRTNSJYQXRtC8/m8IKiA706cqk= @@ -56,8 +56,8 @@ github.com/blevesearch/zapx/v14 v14.4.2 h1:2SGHakVKd+TrtEqpfeq8X+So5PShQ5nW6GNxT github.com/blevesearch/zapx/v14 v14.4.2/go.mod h1:rz0XNb/OZSMjNorufDGSpFpjoFKhXmppH9Hi7a877D8= github.com/blevesearch/zapx/v15 v15.4.2 h1:sWxpDE0QQOTjyxYbAVjt3+0ieu8NCE0fDRaFxEsp31k= github.com/blevesearch/zapx/v15 v15.4.2/go.mod h1:1pssev/59FsuWcgSnTa0OeEpOzmhtmr/0/11H0Z8+Nw= -github.com/blevesearch/zapx/v16 v16.2.7 h1:xcgFRa7f/tQXOwApVq7JWgPYSlzyUMmkuYa54tMDuR0= -github.com/blevesearch/zapx/v16 v16.2.7/go.mod h1:murSoCJPCk25MqURrcJaBQ1RekuqSCSfMjXH4rHyA14= +github.com/blevesearch/zapx/v16 v16.2.8 h1:SlnzF0YGtSlrsOE3oE7EgEX6BIepGpeqxs1IjMbHLQI= +github.com/blevesearch/zapx/v16 v16.2.8/go.mod h1:murSoCJPCk25MqURrcJaBQ1RekuqSCSfMjXH4rHyA14= github.com/bradleyfalzon/ghinstallation/v2 v2.17.0 h1:SmbUK/GxpAspRjSQbB6ARvH+ArzlNzTtHydNyXUQ6zg= github.com/bradleyfalzon/ghinstallation/v2 v2.17.0/go.mod h1:vuD/xvJT9Y+ZVZRv4HQ42cMyPFIYqpc7AbB4Gvt/DlY= github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4= From 1e0a7a061422bf4ea23f41a9f7fa2545a55526f3 Mon Sep 17 00:00:00 2001 From: maesi Date: Wed, 24 Dec 2025 14:38:51 +0100 Subject: [PATCH 11/92] improve Dashboard (WIP) add Demo Dashboard to website (WIP) add mail config AllowUnknownSenders --- Taskfile.yml | 2 +- docs/guides/mail/overview.md | 11 +- examples/mokapi/dashboard.yml | 4 +- examples/mokapi/services_http.js | 2 +- images/alpha.Dockerfile | 2 +- kafka/request_test.go | 28 +- providers/mail/config.go | 14 +- providers/mail/smtp_handler.go | 16 +- providers/mail/smtp_handler_test.go | 22 +- server/server_mail.go | 8 +- server/server_mail_test.go | 3 +- webui/.env | 1 + webui/.env.website | 2 +- webui/.gitignore | 1 + webui/e2e/Dashboard/http/books.spec.ts | 8 +- webui/e2e/Dashboard/kafka/cluster.spec.ts | 11 +- webui/e2e/Dashboard/kafka/topic.order.spec.ts | 8 +- .../kafka/topic.userSignedUp.spec.ts | 4 +- webui/e2e/Dashboard/mail/testserver.spec.ts | 17 +- webui/e2e/components/kafka.ts | 4 +- webui/e2e/header.spec.ts | 11 +- webui/e2e/models/http.ts | 10 +- webui/index.html | 9 + webui/package-lock.json | 106 ++++++- webui/package.json | 4 + webui/src/App.vue | 17 -- webui/src/assets/dashboard.css | 10 +- webui/src/assets/datatable.css | 2 +- webui/src/components/Header.vue | 13 +- .../src/components/dashboard/AppStartCard.vue | 10 +- webui/src/components/dashboard/ConfigCard.vue | 30 +- webui/src/components/dashboard/JobCard.vue | 6 +- .../dashboard/KafkaMessageMetricCard.vue | 33 -- webui/src/components/dashboard/MemoryCard.vue | 6 +- webui/src/components/dashboard/MetricCard.vue | 3 +- .../components/dashboard/SchemaValidate.vue | 8 +- .../components/dashboard/ServiceInfoCard.vue | 17 +- webui/src/components/dashboard/SourceView.vue | 17 +- .../dashboard/http/EndpointsCard.vue | 11 +- .../dashboard/http/HttpOperation.vue | 22 +- .../dashboard/http/HttpOperationsCard.vue | 44 +-- .../components/dashboard/http/HttpPath.vue | 8 +- .../dashboard/http/HttpRequestMetricCard.vue | 6 +- .../components/dashboard/http/HttpService.vue | 21 +- .../dashboard/http/HttpServicesCard.vue | 10 +- .../src/components/dashboard/http/Request.vue | 24 +- .../components/dashboard/http/Requests.vue | 48 +-- .../src/components/dashboard/http/Servers.vue | 33 +- .../dashboard/http/request/HttpParameters.vue | 44 +-- .../http/request/HttpRequestCard.vue | 134 +++++---- .../http/response/HttpResponseCard.vue | 6 +- .../dashboard/kafka/KafkaGroups.vue | 58 ++-- .../dashboard/kafka/KafkaGroupsCard.vue | 2 +- .../dashboard/kafka/KafkaMessages.vue | 15 +- .../dashboard/kafka/KafkaMessagesCard.vue | 2 +- .../dashboard/kafka/KafkaService.vue | 23 +- .../dashboard/kafka/KafkaServicesCard.vue | 10 +- .../components/dashboard/kafka/KafkaTopic.vue | 15 +- .../dashboard/kafka/KafkaTopicsCard.vue | 8 +- .../components/dashboard/kafka/Message.vue | 23 +- .../components/dashboard/kafka/Servers.vue | 73 +++-- .../dashboard/kafka/TopicConfig.vue | 9 +- .../dashboard/ldap/LdapRequestMetricCard.vue | 6 +- .../dashboard/ldap/LdapServicesCard.vue | 16 +- .../src/components/dashboard/ldap/Request.vue | 30 +- .../components/dashboard/ldap/Requests.vue | 24 +- .../src/components/dashboard/ldap/Search.vue | 73 ++--- .../src/components/dashboard/ldap/Server.vue | 25 +- .../src/components/dashboard/ldap/Service.vue | 18 +- webui/src/components/dashboard/mail/Mail.vue | 8 +- .../dashboard/mail/MailAttachments.vue | 18 +- .../components/dashboard/mail/MailBody.vue | 6 +- .../components/dashboard/mail/MailFooter.vue | 18 +- .../dashboard/mail/MailServicesCard.vue | 17 +- .../src/components/dashboard/mail/Mailbox.vue | 257 ++++++++-------- .../components/dashboard/mail/Mailboxes.vue | 17 +- webui/src/components/dashboard/mail/Mails.vue | 18 +- .../src/components/dashboard/mail/Servers.vue | 16 +- .../src/components/dashboard/mail/Service.vue | 28 +- .../components/dashboard/mail/Settings.vue | 24 +- .../dashboard/mail/SmtpMessageMetricCard.vue | 6 +- webui/src/composables/events.ts | 36 --- webui/src/composables/example.ts | 59 ---- webui/src/composables/mails.ts | 23 -- webui/src/composables/metrics.ts | 11 +- webui/src/composables/services.ts | 51 ---- webui/src/main.ts | 4 +- webui/src/router/index.ts | 283 +++++++++--------- webui/src/types/ldap.d.ts | 1 - webui/src/views/DashboardView.vue | 74 +++-- 90 files changed, 1162 insertions(+), 1134 deletions(-) delete mode 100644 webui/src/components/dashboard/KafkaMessageMetricCard.vue delete mode 100644 webui/src/composables/events.ts delete mode 100644 webui/src/composables/example.ts delete mode 100644 webui/src/composables/mails.ts delete mode 100644 webui/src/composables/services.ts diff --git a/Taskfile.yml b/Taskfile.yml index b558c3c90..25e268494 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -33,7 +33,7 @@ tasks: - npm run clean - npm run copy-docs - npm version {{.VERSION}} - - npm run build + - npm run build-dashboard build-npm-package: deps: [build-vue-app] cmds: diff --git a/docs/guides/mail/overview.md b/docs/guides/mail/overview.md index 7c01dbeb7..ac0065270 100644 --- a/docs/guides/mail/overview.md +++ b/docs/guides/mail/overview.md @@ -237,11 +237,12 @@ folders: The settings object defines global configuration options that influence server behavior. -| Field Name | Type | Default | Description | -|-------------------|---------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| maxRecipients | integer | 0 | (Optional) Maximum number of recipients per email. Use 0 for unlimited. | -| autoCreateMailbox | boolean | true | (Optional) Allow create mailboxes at runtime. | -| maxInboxMails | integer | 100 | (Optional) Maximum number of messages kept in the INBOX folder. Oldest mails are removed when the limit is exceeded. Use 0 to disable the limit and store messages indefinitely (not recommended). | +| Field Name | Type | Default | Description | +|-----------------------|---------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| maxRecipients | integer | 0 | (Optional) Maximum number of recipients per email. Use 0 for unlimited. | +| autoCreateMailbox | boolean | true | (Optional) Allow create mailboxes at runtime. | +| maxInboxMails | integer | 100 | (Optional) Maximum number of messages kept in the INBOX folder. Oldest mails are removed when the limit is exceeded. Use 0 to disable the limit and store messages indefinitely (not recommended). | +| AllowUnknownSenders | boolean | true | (Optional) If true, the server accepts any MAIL FROM: address, even if it’s not listed in the mailboxes: configuration. | ##### Mailbox Object Example diff --git a/examples/mokapi/dashboard.yml b/examples/mokapi/dashboard.yml index c8abc9304..ca1ac5caf 100644 --- a/examples/mokapi/dashboard.yml +++ b/examples/mokapi/dashboard.yml @@ -141,7 +141,7 @@ paths: schema: $ref: './mail.yml#/components/schemas/MailboxDetails' "404": - description: mail not found + description: mailbox not found /api/services/mail/{name}/mailboxes/{mailbox}/messages: get: summary: Retrieve mailboxes for given mail server @@ -166,6 +166,8 @@ paths: type: array items: $ref: './mail.yml#/components/schemas/SmtpMessageInfo' + "404": + description: mailbox not found /api/services/mail/messages/{messageId}: get: summary: Retrieve the mail with the given messageId diff --git a/examples/mokapi/services_http.js b/examples/mokapi/services_http.js index e05708bdb..be0781533 100644 --- a/examples/mokapi/services_http.js +++ b/examples/mokapi/services_http.js @@ -521,7 +521,7 @@ export let apps = [ operations: [ { method: "get", - summary: "Add a new pet to the store", + summary: "Get books from the store", operationId: "listBooks", responses: [ { diff --git a/images/alpha.Dockerfile b/images/alpha.Dockerfile index a07f21bb6..73ffde179 100644 --- a/images/alpha.Dockerfile +++ b/images/alpha.Dockerfile @@ -9,7 +9,7 @@ WORKDIR webui COPY ./docs ./src/assets/docs RUN npm install -RUN npm run build +RUN npm run build-dashboard FROM golang:1.25.5-alpine AS gobuild diff --git a/kafka/request_test.go b/kafka/request_test.go index c526433ac..3dcc7b42a 100644 --- a/kafka/request_test.go +++ b/kafka/request_test.go @@ -203,7 +203,7 @@ func Test_Offset(t *testing.T) { require.Equal(t, b, buf.Bytes()) } -func Test_ApiVersion(t *testing.T) { +func Test_ApiVersion_Version_Newer(t *testing.T) { req := &kafka.Request{ Host: "", Header: &kafka.Header{ @@ -226,3 +226,29 @@ func Test_ApiVersion(t *testing.T) { err = result.Read(r) require.NoError(t, err) } + +func Test_ApiVersion_Tagged(t *testing.T) { + req := &kafka.Request{ + Host: "", + Header: &kafka.Header{ + Size: 0, + ApiKey: kafka.ApiVersions, + ApiVersion: 3, + CorrelationId: 0, + }, + Message: &apiVersion.Request{ + TagFields: map[int64]string{3: "abc"}, + }, + } + var buf bytes.Buffer + w := bufio.NewWriter(&buf) + err := req.Write(w) + require.NoError(t, err) + err = w.Flush() + require.NoError(t, err) + + r := bufio.NewReader(&buf) + result := &kafka.Request{} + err = result.Read(r) + require.NoError(t, err) +} diff --git a/providers/mail/config.go b/providers/mail/config.go index 86381c7e9..7d3fef8c9 100644 --- a/providers/mail/config.go +++ b/providers/mail/config.go @@ -4,10 +4,11 @@ import ( "bytes" "encoding/json" "fmt" - "gopkg.in/yaml.v3" "mokapi/config/dynamic" "mokapi/smtp" "regexp" + + "gopkg.in/yaml.v3" ) var serverNamePattern = regexp.MustCompile(`^[A-Za-z0-9_-]+$`) @@ -42,9 +43,10 @@ type Server struct { } type Settings struct { - MaxRecipients int `yaml:"maxRecipients" json:"maxRecipients"` - AutoCreateMailbox bool `yaml:"autoCreateMailbox" json:"autoCreateMailbox"` - MaxInboxMails int `yaml:"maxInboxMails" json:"maxInboxMails"` + MaxRecipients int `yaml:"maxRecipients" json:"maxRecipients"` + AutoCreateMailbox bool `yaml:"autoCreateMailbox" json:"autoCreateMailbox"` + MaxInboxMails int `yaml:"maxInboxMails" json:"maxInboxMails"` + AllowUnknownSenders bool `yaml:"allowUnknownSenders" json:"allowUnknownSenders"` } type MailboxConfig struct { @@ -125,7 +127,7 @@ func (c *Config) Parse(_ *dynamic.Config, _ dynamic.Reader) error { func (c *Config) UnmarshalYAML(value *yaml.Node) error { type alias Config tmp := alias(*c) - tmp.Settings = &Settings{AutoCreateMailbox: true} + tmp.Settings = &Settings{AutoCreateMailbox: true, AllowUnknownSenders: true} err := value.Decode(&tmp) *c = Config(tmp) return err @@ -135,7 +137,7 @@ func (c *Config) UnmarshalJSON(b []byte) error { dec := json.NewDecoder(bytes.NewReader(b)) type alias Config tmp := alias(*c) - tmp.Settings = &Settings{AutoCreateMailbox: true} + tmp.Settings = &Settings{AutoCreateMailbox: true, AllowUnknownSenders: true} err := dec.Decode(&tmp) *c = Config(tmp) return err diff --git a/providers/mail/smtp_handler.go b/providers/mail/smtp_handler.go index 6a038595d..cdc6efad9 100644 --- a/providers/mail/smtp_handler.go +++ b/providers/mail/smtp_handler.go @@ -2,12 +2,13 @@ package mail import ( "fmt" - log "github.com/sirupsen/logrus" "mokapi/engine/common" "mokapi/runtime/events" "mokapi/runtime/monitor" "mokapi/smtp" "time" + + log "github.com/sirupsen/logrus" ) type Handler struct { @@ -89,8 +90,10 @@ func (h *Handler) serveMail(rw smtp.ResponseWriter, r *smtp.MailRequest, ctx *sm if len(h.config.Mailboxes) > 0 { if m, ok := h.store.Mailboxes[r.From]; !ok { - h.writeErrorResponse(rw, r, smtp.AddressRejected, fmt.Sprintf("Unknown mailbox %v", r.From)) - return + if !h.AllowUnknownSenders() { + h.writeErrorResponse(rw, r, smtp.AddressRejected, fmt.Sprintf("Unknown mailbox %v", r.From)) + return + } } else if len(m.Username) > 0 && len(ctx.Auth) == 0 { h.writeErrorResponse(rw, r, smtp.AuthRequired, "") return @@ -151,3 +154,10 @@ func (h *Handler) writeRuleResponse(rw smtp.ResponseWriter, r smtp.Request, resp l.Error = response.Message _ = rw.Write(res) } + +func (h *Handler) AllowUnknownSenders() bool { + if h.config.Settings == nil { + return true + } + return h.config.Settings.AllowUnknownSenders +} diff --git a/providers/mail/smtp_handler_test.go b/providers/mail/smtp_handler_test.go index 54e4916ed..bfa0f14a0 100644 --- a/providers/mail/smtp_handler_test.go +++ b/providers/mail/smtp_handler_test.go @@ -3,7 +3,6 @@ package mail_test import ( "context" "encoding/base64" - "github.com/stretchr/testify/require" "mokapi/engine/enginetest" "mokapi/providers/mail" "mokapi/runtime/events/eventstest" @@ -11,6 +10,8 @@ import ( "mokapi/smtp/smtptest" "testing" "time" + + "github.com/stretchr/testify/require" ) func TestHandler_ServeSMTP(t *testing.T) { @@ -71,11 +72,12 @@ func TestHandler_ServeSMTP(t *testing.T) { }, }, { - name: "mail invalid mailbox", + name: "mail unknown mailbox with not allowing unknown mailbox", config: &mail.Config{ Mailboxes: map[string]*mail.MailboxConfig{ "bob@foo.bar": {}, }, + Settings: &mail.Settings{AllowUnknownSenders: false}, }, test: func(t *testing.T, h *mail.Handler, s *mail.Store, _ *eventstest.Handler) { ctx := smtp.NewClientContext(context.Background(), "") @@ -85,6 +87,22 @@ func TestHandler_ServeSMTP(t *testing.T) { require.Equal(t, &exp, r.Result) }, }, + { + name: "mail unknown mailbox and allowing unknown mailbox", + config: &mail.Config{ + Mailboxes: map[string]*mail.MailboxConfig{ + "bob@foo.bar": {}, + }, + Settings: &mail.Settings{AllowUnknownSenders: true}, + }, + test: func(t *testing.T, h *mail.Handler, s *mail.Store, _ *eventstest.Handler) { + ctx := smtp.NewClientContext(context.Background(), "") + r := sendMail(t, h, ctx) + exp := smtp.Ok + exp.Message = "OK" + require.Equal(t, exp, r.Result) + }, + }, { name: "mail valid mailbox", config: &mail.Config{ diff --git a/server/server_mail.go b/server/server_mail.go index 274d7c65e..a38be992c 100644 --- a/server/server_mail.go +++ b/server/server_mail.go @@ -2,7 +2,6 @@ package server import ( "fmt" - log "github.com/sirupsen/logrus" "mokapi/config/dynamic" engine "mokapi/engine/common" "mokapi/imap" @@ -13,6 +12,8 @@ import ( "mokapi/smtp" "net" "sync" + + log "github.com/sirupsen/logrus" ) type MailServer interface { @@ -75,10 +76,7 @@ func (m *MailManager) startServers(cfg *runtime.MailInfo) error { } h := cfg.Handler(m.app.Monitor.Mail, m.eventEmitter, m.app.Events) for _, server := range cfg.Servers { - _, port, err := net.SplitHostPort(server.Host) - if err != nil { - return err - } + _, port, _ := net.SplitHostPort(server.Host) switch server.Protocol { case "smtp": diff --git a/server/server_mail_test.go b/server/server_mail_test.go index f41de2b7f..11c0aff04 100644 --- a/server/server_mail_test.go +++ b/server/server_mail_test.go @@ -2,7 +2,6 @@ package server_test import ( "fmt" - "github.com/stretchr/testify/require" "mokapi/config/dynamic" "mokapi/config/dynamic/dynamictest" "mokapi/config/static" @@ -15,6 +14,8 @@ import ( "mokapi/smtp/smtptest" "mokapi/try" "testing" + + "github.com/stretchr/testify/require" ) func TestSmtp(t *testing.T) { diff --git a/webui/.env b/webui/.env index 5811dbc3e..9115d53d8 100644 --- a/webui/.env +++ b/webui/.env @@ -1 +1,2 @@ +VITE_DEMO=true VITE_DASHBOARD=true \ No newline at end of file diff --git a/webui/.env.website b/webui/.env.website index e23563bb1..804f5004a 100644 --- a/webui/.env.website +++ b/webui/.env.website @@ -1 +1 @@ -VITE_DASHBOARD=false \ No newline at end of file +VITE_WEBSITE=true \ No newline at end of file diff --git a/webui/.gitignore b/webui/.gitignore index 082f33fd6..7382fc04c 100644 --- a/webui/.gitignore +++ b/webui/.gitignore @@ -31,3 +31,4 @@ test-results/ playwright-report/ src/assets/docs public/sitemap.xml +public/demo/ diff --git a/webui/e2e/Dashboard/http/books.spec.ts b/webui/e2e/Dashboard/http/books.spec.ts index ee72bbc5b..22c16a616 100644 --- a/webui/e2e/Dashboard/http/books.spec.ts +++ b/webui/e2e/Dashboard/http/books.spec.ts @@ -52,14 +52,14 @@ test.describe('Visit Books API', () => { let cells = path.methods.locator('tbody tr').nth(0).getByRole('cell') await expect(cells.nth(0)).toHaveText('GET', {ignoreCase: false}) await expect(cells.nth(0).locator('span')).toHaveClass('badge operation get') - await expect(cells.nth(1)).toHaveText('Add a new pet to the store') - await expect(cells.nth(2)).toHaveText('listBooks') + await expect(cells.nth(1)).toHaveText('listBooks') + await expect(cells.nth(2)).toHaveText('Get books from the store') cells = path.methods.locator('tbody tr').nth(1).getByRole('cell') await expect(cells.nth(0)).toHaveText('POST', {ignoreCase: false}) await expect(cells.nth(0).locator('span')).toHaveClass('badge operation post') - await expect(cells.nth(1)).toHaveText('Add a new book') - await expect(cells.nth(2)).toHaveText('addBook') + await expect(cells.nth(1)).toHaveText('addBook') + await expect(cells.nth(2)).toHaveText('Add a new book') await test.step('visit method post', async () => { await path.clickOperation('POST') diff --git a/webui/e2e/Dashboard/kafka/cluster.spec.ts b/webui/e2e/Dashboard/kafka/cluster.spec.ts index cc3d44056..c5e70ef17 100644 --- a/webui/e2e/Dashboard/kafka/cluster.spec.ts +++ b/webui/e2e/Dashboard/kafka/cluster.spec.ts @@ -19,8 +19,7 @@ test('Visit Kafka cluster "Kafka World"', async ({ page }) => { const info = page.getByRole('region', { name: "Info" }) await expect(info.getByLabel('Name')).toHaveText(cluster.name) await expect(info.getByLabel('Version')).toHaveText(cluster.version) - await expect(info.getByLabel('Contact').getByTitle('mokapi - Website')).toHaveText(cluster.contact.name) - const mailto = info.getByLabel('Contact').getByTitle('Send email to mokapi') + const mailto = info.getByLabel('Contact').getByTitle('info@mokapi.io') await expect(mailto).toBeVisible() await expect(mailto).toHaveAttribute("href", /^mailto:/) await expect(info.getByLabel('Type of API')).toHaveText('Kafka') @@ -28,7 +27,7 @@ test('Visit Kafka cluster "Kafka World"', async ({ page }) => { }) await test.step('Check broker section', async () => { - const brokers = useTable(page.getByRole('region', { name: "Brokers" }).getByRole('table', { name: 'Cluster Brokers' }), ['Name', 'Host', 'Tags', 'Description']) + const brokers = useTable(page.getByRole('region', { name: "Brokers" }).getByRole('table', { name: 'Brokers' }), ['Name', 'Host', 'Tags', 'Description']) const broker = brokers.getRow(1) await expect(broker.getCellByName('Name')).toHaveText(cluster.brokers[0].name) await expect(broker.getCellByName('Host')).toHaveText(cluster.brokers[0].url) @@ -37,7 +36,7 @@ test('Visit Kafka cluster "Kafka World"', async ({ page }) => { }) await test.step('Check topic section', async () => { - const table = page.getByRole('region', { name: "Topics" }).getByRole('table', { name: 'Cluster Topics' }) + const table = page.getByRole('region', { name: "Topics" }).getByRole('table', { name: 'Topics' }) await expect(table).toBeVisible() const topics = useKafkaTopics(table) await topics.testTopic(0, cluster.topics[0]) @@ -45,7 +44,7 @@ test('Visit Kafka cluster "Kafka World"', async ({ page }) => { }) await test.step('Check groups section', async () => { - const table = page.getByRole('region', { name: "Groups" }).getByRole('table', { name: 'Cluster Groups' }) + const table = page.getByRole('region', { name: "Groups" }).getByRole('table', { name: 'Groups' }) await expect(table).toBeVisible() const groups = useKafkaGroups(table) await groups.testGroup(0, cluster.groups[0]) @@ -60,7 +59,7 @@ test('Visit Kafka cluster "Kafka World"', async ({ page }) => { await expect(config.getCellByName('Last Update')).toHaveText(formatDateTime('2023-02-15T08:49:25.482366+01:00')) }) - await useKafkaMessages(page).test(page.getByRole('region', { name: "Recent Messages" }).getByRole('table', { name: 'Cluster Messages' })) + await useKafkaMessages(page).test(page.getByRole('region', { name: "Recent Messages" }).getByRole('table', { name: 'Recent Messages' })) }) test('Visit Kafka cluster config file', async ({ page, context }) => { diff --git a/webui/e2e/Dashboard/kafka/topic.order.spec.ts b/webui/e2e/Dashboard/kafka/topic.order.spec.ts index 620b951ba..f72caddcd 100644 --- a/webui/e2e/Dashboard/kafka/topic.order.spec.ts +++ b/webui/e2e/Dashboard/kafka/topic.order.spec.ts @@ -16,10 +16,10 @@ test('Visit Kafka topic mokapi.shop.products', async ({ page, context }) => { await open() await tabs.kafka.click() - await page.getByRole('table', { name: 'Kafka Clusters' }).getByText(cluster.name).click() + await page.getByRole('table', { name: 'Clusters' }).getByText(cluster.name).click() await expect(page.getByRole('region', { name: "Info" })).toBeVisible() - await page.getByRole('table', { name: 'Cluster Topics' }).getByText(topic.name).click() + await page.getByRole('table', { name: 'Topics' }).getByText(topic.name).click() }) await test.step('Check info section"', async () => { @@ -31,7 +31,7 @@ test('Visit Kafka topic mokapi.shop.products', async ({ page, context }) => { await expect(info.getByLabel('Description')).toHaveText(topic.description) }) - await useKafkaMessages(page).test(page.getByRole('table', { name: 'Topic Messages' }), false) + await useKafkaMessages(page).test(page.getByRole('table', { name: 'Recent Messages' }), false) const tabList = page.getByRole('region', { name: 'Topic Data' }).getByRole('tablist') await test.step('Check partition"', async () => { @@ -59,7 +59,7 @@ test('Visit Kafka topic mokapi.shop.products', async ({ page, context }) => { await expect(configs.getByLabel('Name')).toHaveText(topic.messageConfigs[0].name) await expect(configs.getByLabel('Summary')).toHaveText(topic.messageConfigs[0].summary) await expect(configs.getByLabel('Description')).toHaveText(topic.messageConfigs[0].description) - await expect(configs.getByLabel('Content Type')).toHaveText(topic.messageConfigs[0].contentType) + await expect(configs.getByLabel('Message Content Type')).toHaveText(topic.messageConfigs[0].contentType) diff --git a/webui/e2e/Dashboard/kafka/topic.userSignedUp.spec.ts b/webui/e2e/Dashboard/kafka/topic.userSignedUp.spec.ts index 227a14bf7..911d9ba41 100644 --- a/webui/e2e/Dashboard/kafka/topic.userSignedUp.spec.ts +++ b/webui/e2e/Dashboard/kafka/topic.userSignedUp.spec.ts @@ -16,7 +16,7 @@ test('Visit Kafka topic mokapi.shop.userSignedUp', async ({ page, context }) => await page.getByRole('table', { name: 'Kafka Clusters' }).getByText(cluster.name).click() await expect(page.getByRole('region', { name: "Info" })).toBeVisible() - await page.getByRole('table', { name: 'Cluster Topics' }).getByText(topic.name).click() + await page.getByRole('table', { name: 'Topics' }).getByText(topic.name).click() }) await test.step('Check info section"', async () => { @@ -60,7 +60,7 @@ test('Visit Kafka topic mokapi.shop.userSignedUp', async ({ page, context }) => await expect(configs.getByLabel('Summary')).not.toBeVisible() await expect(configs.getByLabel('Description')).not.toBeVisible() - await expect(configs.getByLabel('Content Type')).toHaveText(topic.messageConfigs[1].contentType) + await expect(configs.getByLabel('Message Content Type')).toHaveText(topic.messageConfigs[1].contentType) const { test: testSourceView } = useSourceView(configs.getByRole('tabpanel', { name: 'Value' })) await testSourceView({ diff --git a/webui/e2e/Dashboard/mail/testserver.spec.ts b/webui/e2e/Dashboard/mail/testserver.spec.ts index 39d64ea10..dfef572bb 100644 --- a/webui/e2e/Dashboard/mail/testserver.spec.ts +++ b/webui/e2e/Dashboard/mail/testserver.spec.ts @@ -29,16 +29,17 @@ test('Visit Mail Testserver', async ({ page }) => { const servers = useTable(table, ['Name', 'Host', 'Protocol', 'Description']) let row = servers.getRow(1) - await expect(row.getCellByName('Name')).toHaveText('smtp') - await expect(row.getCellByName('Host')).toHaveText('localhost:8025') - await expect(row.getCellByName('Protocol')).toHaveText('smtp') - await expect(row.getCellByName('Description')).toHaveText("Mokapi's SMTP Server") - - row = servers.getRow(2) await expect(row.getCellByName('Name')).toHaveText('imap') await expect(row.getCellByName('Host')).toHaveText('localhost:8030') await expect(row.getCellByName('Protocol')).toHaveText('imap') await expect(row.getCellByName('Description')).toHaveText("Mokapi's IMAP Server") + + row = servers.getRow(2) + await expect(row.getCellByName('Name')).toHaveText('smtp') + await expect(row.getCellByName('Host')).toHaveText('localhost:8025') + await expect(row.getCellByName('Protocol')).toHaveText('smtp') + await expect(row.getCellByName('Description')).toHaveText("Mokapi's SMTP Server") + }) await test.step('Check mailboxes', async () => { @@ -129,7 +130,7 @@ test('Visit Mail Testserver', async ({ page }) => { await expect(body.getByRole('img')).toHaveAttribute('src', /\/attachments\/icon.png$/) const attachments = page.getByRole('region', { name: 'Attachments' }) - const foo = attachments.getByRole('listitem', { name: 'foo.txt' }) + const foo = attachments.getByRole('link', { name: 'foo.txt' }) await expect(foo.getByLabel('Disposition')).toHaveText('attachment') await expect(foo.getByLabel('Size')).toHaveText('34.06 kB') @@ -139,7 +140,7 @@ test('Visit Mail Testserver', async ({ page }) => { ]) await expect(download.suggestedFilename()).toBe('foo.txt') - const icon = attachments.getByRole('listitem', { name: 'icon.png' }) + const icon = attachments.getByRole('link', { name: 'icon.png' }) await expect(icon.getByLabel('Disposition')).toHaveText('inline') await expect(icon.getByLabel('Size')).toHaveText('372 B') }) diff --git a/webui/e2e/components/kafka.ts b/webui/e2e/components/kafka.ts index e34d3ff99..968adbb5b 100644 --- a/webui/e2e/components/kafka.ts +++ b/webui/e2e/components/kafka.ts @@ -128,7 +128,7 @@ export function useKafkaMessages(page: Page) { await expect(page.getByText('Producer Id', { exact: true })).not.toBeVisible({ timeout: 100 }) await expect(page.getByText('Producer Epoch', { exact: true })).not.toBeVisible({ timeout: 100 }) await expect(page.getByText('Sequence Number', { exact: true })).not.toBeVisible({ timeout: 100 }) - await expect(page.getByLabel('Content Type', { exact: true })).toHaveText('application/json') + await expect(page.getByRole('region', { name: 'Meta' }).getByLabel('Content Type', { exact: true })).toHaveText('application/json') await expect(page.getByLabel('Key Type', { exact: true })).toHaveText('string') await expect(page.getByLabel('Time', { exact: true })).toHaveText(formatDateTime('2023-02-13T09:49:25.482366+01:00')) @@ -151,7 +151,7 @@ export function useKafkaMessages(page: Page) { await expect(page.getByLabel('Producer Id', { exact: true })).toHaveText('3') await expect(page.getByLabel('Producer Epoch', { exact: true })).toHaveText('1') await expect(page.getByLabel('Sequence Number', { exact: true })).toHaveText('1') - await expect(page.getByLabel('Content Type', { exact: true })).toHaveText('application/json') + await expect(page.getByRole('region', { name: 'Meta' }).getByLabel('Content Type', { exact: true })).toHaveText('application/json') await expect(page.getByLabel('Key Type', { exact: true })).toHaveText('string') await expect(page.getByLabel('Time', { exact: true })).toHaveText(formatDateTime('2023-02-13T09:49:25.482366+01:00')) diff --git a/webui/e2e/header.spec.ts b/webui/e2e/header.spec.ts index dc4161523..db7a5edcb 100644 --- a/webui/e2e/header.spec.ts +++ b/webui/e2e/header.spec.ts @@ -6,11 +6,12 @@ test('header in dashboard', async ({ dashboard }) => { await test.step("navigation links", async () => { const links = dashboard.header.getNavLinks() await expect(links.nth(0)).toHaveText('Dashboard') - await expect(links.nth(1)).toHaveText('Guides') - await expect(links.nth(2)).toHaveText('Configuration') - await expect(links.nth(3)).toHaveText('JavaScript API') - await expect(links.nth(4)).toHaveText('Resources') - await expect(links.nth(5)).toHaveText('References') + const startIndex = process.env.CI ? 1 : 2; + await expect(links.nth(startIndex)).toHaveText('Guides') + await expect(links.nth(startIndex + 1)).toHaveText('Configuration') + await expect(links.nth(startIndex + 2)).toHaveText('JavaScript API') + await expect(links.nth(startIndex + 3)).toHaveText('Resources') + await expect(links.nth(startIndex + 4)).toHaveText('References') }) await test.step('version number', async() => { diff --git a/webui/e2e/models/http.ts b/webui/e2e/models/http.ts index 1ae9077c1..cdd5f413b 100644 --- a/webui/e2e/models/http.ts +++ b/webui/e2e/models/http.ts @@ -71,13 +71,13 @@ export class HttpOperationModel { constructor(readonly element: Locator) { this.operation = element.getByTestId('operation') this.path = element.getByTestId('path') - this.operationId = element.getByTestId('operationid') - this.service = element.getByTestId('service').getByRole('link') + this.operationId = element.getByLabel('Operation ID') + this.service = element.getByLabel('Service', { exact: true }).getByRole('link') this.type = element.getByTestId('type') - this.summary = element.getByTestId('summary') + this.summary = element.getByLabel('Summary') this.description = element.getByTestId('description') - this.request = new HttpOperationRequestModel(element.getByTestId('http-request')) - this.response = new HttpOperationResponseModel(element.getByTestId('http-response')) + this.request = new HttpOperationRequestModel(element.getByLabel('Request')) + this.response = new HttpOperationResponseModel(element.getByLabel('Response')) } } diff --git a/webui/index.html b/webui/index.html index a510d0d14..ae9d47a46 100644 --- a/webui/index.html +++ b/webui/index.html @@ -16,6 +16,15 @@ +
diff --git a/webui/package-lock.json b/webui/package-lock.json index a18f2c95c..32c99b82b 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -20,7 +20,10 @@ "fuse.js": "^7.1.0", "http-status-codes": "^2.3.0", "js-yaml": "^4.1.1", + "kafkajs": "^2.2.4", + "ldapts": "^8.0.33", "ncp": "^2.0.0", + "nodemailer": "^7.0.12", "vue": "^3.5.25", "vue-router": "^4.6.4", "vue3-ace-editor": "^2.2.4", @@ -1123,6 +1126,15 @@ "@ssthouse/tree-chart-core": "^1.2.0" } }, + "node_modules/@types/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@types/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-V91DSJ2l0h0gRhVP4oBfBzRBN9lAbPUkGDMCnwedqPKX2d84aAMc9CulOvxdw1f7DfEYx99afab+Rsm3e52jhA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/bootstrap": { "version": "5.2.10", "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.10.tgz", @@ -1178,7 +1190,6 @@ "version": "25.0.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.1.tgz", "integrity": "sha512-czWPzKIAXucn9PtsttxmumiQ9N0ok9FrBwgRWrwmVLlp86BrMExzvXRLFYRJ+Ex3g6yqj+KuaxfX1JTgV2lpfg==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -1882,6 +1893,15 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -2507,10 +2527,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -3867,6 +3886,15 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/kafkajs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", + "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -3877,6 +3905,22 @@ "json-buffer": "3.0.1" } }, + "node_modules/ldapts": { + "version": "8.0.33", + "resolved": "https://registry.npmjs.org/ldapts/-/ldapts-8.0.33.tgz", + "integrity": "sha512-z3fO6/WkfVE58u0QX4B48ITrxXRQAwWKXRsv2asGuUAPa6YVC1P1opiEoX+mTq9sH4xCfqdMb0ENeH86sBF+MQ==", + "license": "MIT", + "dependencies": { + "@types/asn1": ">=0.2.4", + "asn1": "0.2.6", + "debug": "4.4.3", + "strict-event-emitter-types": "2.0.0", + "whatwg-url": "15.1.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4111,7 +4155,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/muggle-string": { @@ -4159,6 +4202,15 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/nodemailer": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.12.tgz", + "integrity": "sha512-H+rnK5bX2Pi/6ms3sN4/jRQvYSMltV6vqup/0SFOrxYYY/qoNvhXPlYq3e+Pm9RFJRwrMGbMIwi81M4dxpomhA==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -4669,7 +4721,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5078,6 +5129,12 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, + "node_modules/strict-event-emitter-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz", + "integrity": "sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==", + "license": "ISC" + }, "node_modules/string.prototype.padend": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", @@ -5245,6 +5302,18 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -5328,7 +5397,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, "license": "MIT" }, "node_modules/unicorn-magic": { @@ -5629,6 +5697,15 @@ "markdown-it-toc-done-right": "^4.2.0" } }, + "node_modules/webidl-conversions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", + "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -5637,6 +5714,19 @@ "node": ">=18" } }, + "node_modules/whatwg-url": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", + "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "license": "MIT", + "dependencies": { + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/webui/package.json b/webui/package.json index f442565a7..681f543b6 100644 --- a/webui/package.json +++ b/webui/package.json @@ -5,6 +5,7 @@ "scripts": { "dev": "vite", "build": "run-p type-check build-only", + "build-dashboard": "vite build --mode dashboard", "build-website": "vite build --mode website", "preview": "vite preview", "test:e2e": "playwright test", @@ -28,7 +29,10 @@ "fuse.js": "^7.1.0", "http-status-codes": "^2.3.0", "js-yaml": "^4.1.1", + "kafkajs": "^2.2.4", + "ldapts": "^8.0.33", "ncp": "^2.0.0", + "nodemailer": "^7.0.12", "vue": "^3.5.25", "vue-router": "^4.6.4", "vue3-ace-editor": "^2.2.4", diff --git a/webui/src/App.vue b/webui/src/App.vue index 11710cc21..570952542 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -1,23 +1,6 @@ \ No newline at end of file diff --git a/webui/src/components/dashboard/SchemaValidate.vue b/webui/src/components/dashboard/SchemaValidate.vue index 86c9794b6..6d8c86de3 100644 --- a/webui/src/components/dashboard/SchemaValidate.vue +++ b/webui/src/components/dashboard/SchemaValidate.vue @@ -1,11 +1,12 @@