From 87cf18a9f240bfdeb85fccd60d93e8b405906bda Mon Sep 17 00:00:00 2001 From: maesi Date: Sun, 1 Mar 2026 10:10:02 +0100 Subject: [PATCH 1/7] chore: add again removed jobs --- .github/workflows/release.yml | 115 ++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9b023cef8..2481f2cf8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,6 +8,121 @@ permissions: contents: write jobs: + build-dashboard: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-go@v5 + with: + go-version: 1.25.5 + - uses: ./.github/actions/build-release-notes + - uses: actions/setup-node@v4 + with: + node-version: 23 + registry-url: 'https://registry.npmjs.org' + - run: npm install + working-directory: ./webui + - name: Install taskfile + run: sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin + - name: Build + run: task build-vue-app + env: + CGO_ENABLED: 0 + - name: Upload UI artifact + uses: actions/upload-artifact@v4 + with: + name: dashboard + path: webui/dist + + release-unix: + needs: build-dashboard + runs-on: ubuntu-latest + env: + DOCKER_CLI_EXPERIMENTAL: "enabled" + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Download dashboard + uses: actions/download-artifact@v4 + with: + name: dashboard + path: webui/dist + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Docker Login + uses: docker/login-action@v1 + with: + username: marle3003 + password: ${{ secrets.DOCKER_PASSWORD }} + - uses: actions/setup-go@v5 + with: + go-version: 1.25.5 + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v6 + with: + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAP_GITHUB_TOKEN: ${{ secrets.TAP_GITHUB_TOKEN }} + + release-windows: + needs: build-dashboard + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Download dashboard + uses: actions/download-artifact@v4 + with: + name: dashboard + path: webui/dist + - uses: actions/setup-go@v5 + with: + go-version: 1.25.5 + - uses: actions/setup-node@v4 + with: + node-version: 23 + registry-url: 'https://registry.npmjs.org' + - run: choco install go-task + - name: Install goversioninfo + run: go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@v1.4.0 + - name: Generate Windows metadata (.syso) + working-directory: ./cmd/mokapi + shell: pwsh + run: | + $versionParts = ($env:GITHUB_REF -replace '.*/v', '').Split('.') + '{}' | Out-File versioninfo.json -NoNewline ascii + goversioninfo -64 ` + -platform-specific='true' ` + -charset="1200" ` + -company="Mokapi OpenSource" ` + -copyright="© Marcel Lehmann. Licensed under MIT." ` + -description="Your API Mocking Tool for Agile Development, using Go and JavaScript" ` + -icon="../../icon.ico" ` + -internal-name="mokapi" ` + -original-name="mokapi.exe" ` + -product-name="mokapi" ` + -translation="0x0409" ` + -ver-major="$($versionParts[0])" ` + -ver-minor="$($versionParts[1])" ` + -ver-patch="$($versionParts[2])" ` + -product-version="$($versionParts[0]).$($versionParts[1]).$($versionParts[2])" + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v6 + with: + version: latest + args: release -f .goreleaser.windows.yml --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CHOCOLATEY_API_KEY: ${{ secrets.CHOCOLATEY_API_KEY }} release-npm: runs-on: ubuntu-latest From deba939d48df02d7498fd61455fb01eeeb42713b Mon Sep 17 00:00:00 2001 From: maesi Date: Sun, 1 Mar 2026 10:10:59 +0100 Subject: [PATCH 2/7] fix: build release notes if every commit is filtered out --- .github/actions/build-alpha-release-notes/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-alpha-release-notes/action.yml b/.github/actions/build-alpha-release-notes/action.yml index 6c664f482..a61a3cc28 100644 --- a/.github/actions/build-alpha-release-notes/action.yml +++ b/.github/actions/build-alpha-release-notes/action.yml @@ -27,12 +27,12 @@ runs: git log "${{ inputs.latest-tag }}..HEAD" \ --oneline \ --no-merges | - grep -v -E 'github-actions\[bot\]|dependabot\[bot\]|test|Bump' | + grep -v -E 'github-actions\[bot\]|dependabot\[bot\]|test|Bump|chore' || true | sed 's/^[a-f0-9]\{7,40\} //' | # remove SHA prefix awk '!seen[$0]++' | sed 's/^/- /' } > docs/release.md - - name: Upload UI artifact + - name: Upload release notes uses: actions/upload-artifact@v4 with: name: release-notes From 2ab22cc95bbe3234e17bb4e1c74d900bebb6f258 Mon Sep 17 00:00:00 2001 From: maesi Date: Sun, 1 Mar 2026 10:30:52 +0100 Subject: [PATCH 3/7] test: improve test --- server/server_test.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/server_test.go b/server/server_test.go index db8981168..d4b289f2f 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -2,9 +2,6 @@ package server_test import ( "context" - log "github.com/sirupsen/logrus" - "github.com/sirupsen/logrus/hooks/test" - "github.com/stretchr/testify/require" "mokapi/config/static" "mokapi/engine" "mokapi/runtime" @@ -12,6 +9,10 @@ import ( "mokapi/server" "testing" "time" + + log "github.com/sirupsen/logrus" + "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" ) func TestServer(t *testing.T) { @@ -29,16 +30,19 @@ func TestServer(t *testing.T) { hook := test.NewGlobal() log.SetLevel(log.DebugLevel) s := server.NewServer(pool, app, watcher, kafka, http, mail, ldap, e) + stopped := make(chan bool) go func() { err := s.Start() require.NoError(t, err) + close(stopped) }() time.Sleep(time.Second) s.Close() - time.Sleep(time.Second) + <-stopped require.Len(t, hook.Entries, 1) + require.Equal(t, "stopping server", hook.Entries[0].Message) } From 53e905de32b8c21d773bba8466958ea6cba1645c Mon Sep 17 00:00:00 2001 From: maesi Date: Sun, 1 Mar 2026 18:43:18 +0100 Subject: [PATCH 4/7] feat(npm): switch to platform-specific binary packages --- .github/workflows/release.yml | 11 +- .gitignore | 2 +- Taskfile.yml | 112 ++++++++++----- npm/@go-mokapi/darwin-arm64/README.md | 4 + npm/@go-mokapi/darwin-arm64/index.js | 2 + npm/@go-mokapi/darwin-arm64/package.json | 19 +++ npm/@go-mokapi/darwin-x64/README.md | 4 + npm/@go-mokapi/darwin-x64/index.js | 2 + npm/@go-mokapi/darwin-x64/package.json | 19 +++ npm/@go-mokapi/linux-arm64/README.md | 4 + npm/@go-mokapi/linux-arm64/index.js | 2 + npm/@go-mokapi/linux-arm64/package.json | 19 +++ npm/@go-mokapi/linux-x64/README.md | 4 + npm/@go-mokapi/linux-x64/index.js | 2 + npm/@go-mokapi/linux-x64/package.json | 19 +++ npm/@go-mokapi/win32-arm64/README.md | 4 + npm/@go-mokapi/win32-arm64/index.js | 2 + npm/@go-mokapi/win32-arm64/package.json | 19 +++ npm/@go-mokapi/win32-x64/README.md | 4 + npm/@go-mokapi/win32-x64/index.js | 2 + npm/@go-mokapi/win32-x64/package.json | 19 +++ npm/README.md | 124 ----------------- npm/bin/mokapi.js | 32 ----- npm/go-mokapi/README.md | 168 +++++++++++++++++++++++ npm/go-mokapi/bin/mokapi.js | 59 ++++++++ npm/{ => go-mokapi}/index.d.ts | 0 npm/{ => go-mokapi}/package.json | 20 +-- npm/{ => go-mokapi}/types/encoding.d.ts | 0 npm/{ => go-mokapi}/types/faker.d.ts | 0 npm/{ => go-mokapi}/types/file.d.ts | 0 npm/{ => go-mokapi}/types/global.d.ts | 0 npm/{ => go-mokapi}/types/http.d.ts | 0 npm/{ => go-mokapi}/types/index.d.ts | 0 npm/{ => go-mokapi}/types/kafka.d.ts | 0 npm/{ => go-mokapi}/types/mail.d.ts | 0 npm/{ => go-mokapi}/types/mustache.d.ts | 0 npm/{ => go-mokapi}/types/yaml.d.ts | 0 37 files changed, 464 insertions(+), 214 deletions(-) create mode 100644 npm/@go-mokapi/darwin-arm64/README.md create mode 100644 npm/@go-mokapi/darwin-arm64/index.js create mode 100644 npm/@go-mokapi/darwin-arm64/package.json create mode 100644 npm/@go-mokapi/darwin-x64/README.md create mode 100644 npm/@go-mokapi/darwin-x64/index.js create mode 100644 npm/@go-mokapi/darwin-x64/package.json create mode 100644 npm/@go-mokapi/linux-arm64/README.md create mode 100644 npm/@go-mokapi/linux-arm64/index.js create mode 100644 npm/@go-mokapi/linux-arm64/package.json create mode 100644 npm/@go-mokapi/linux-x64/README.md create mode 100644 npm/@go-mokapi/linux-x64/index.js create mode 100644 npm/@go-mokapi/linux-x64/package.json create mode 100644 npm/@go-mokapi/win32-arm64/README.md create mode 100644 npm/@go-mokapi/win32-arm64/index.js create mode 100644 npm/@go-mokapi/win32-arm64/package.json create mode 100644 npm/@go-mokapi/win32-x64/README.md create mode 100644 npm/@go-mokapi/win32-x64/index.js create mode 100644 npm/@go-mokapi/win32-x64/package.json delete mode 100644 npm/README.md delete mode 100644 npm/bin/mokapi.js create mode 100644 npm/go-mokapi/README.md create mode 100755 npm/go-mokapi/bin/mokapi.js rename npm/{ => go-mokapi}/index.d.ts (100%) rename npm/{ => go-mokapi}/package.json (56%) rename npm/{ => go-mokapi}/types/encoding.d.ts (100%) rename npm/{ => go-mokapi}/types/faker.d.ts (100%) rename npm/{ => go-mokapi}/types/file.d.ts (100%) rename npm/{ => go-mokapi}/types/global.d.ts (100%) rename npm/{ => go-mokapi}/types/http.d.ts (100%) rename npm/{ => go-mokapi}/types/index.d.ts (100%) rename npm/{ => go-mokapi}/types/kafka.d.ts (100%) rename npm/{ => go-mokapi}/types/mail.d.ts (100%) rename npm/{ => go-mokapi}/types/mustache.d.ts (100%) rename npm/{ => go-mokapi}/types/yaml.d.ts (100%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2481f2cf8..3a424fb64 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: - uses: ./.github/actions/build-release-notes - uses: actions/setup-node@v4 with: - node-version: 23 + node-version: 24 registry-url: 'https://registry.npmjs.org' - run: npm install working-directory: ./webui @@ -28,8 +28,6 @@ jobs: run: sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin - name: Build run: task build-vue-app - env: - CGO_ENABLED: 0 - name: Upload UI artifact uses: actions/upload-artifact@v4 with: @@ -86,11 +84,6 @@ jobs: - uses: actions/setup-go@v5 with: go-version: 1.25.5 - - uses: actions/setup-node@v4 - with: - node-version: 23 - registry-url: 'https://registry.npmjs.org' - - run: choco install go-task - name: Install goversioninfo run: go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@v1.4.0 - name: Generate Windows metadata (.syso) @@ -141,6 +134,6 @@ jobs: - name: Install taskfile run: sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin - name: Publish - run: task publish-npm-package VERSION=${GITHUB_REF##*/v} + run: task publish-all VERSION=${GITHUB_REF##*/v} env: CGO_ENABLED: 0 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0c8b28c1d..a0d82570f 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ # vendor/ data/* dist/ -bin/* +**/bin/ obj/ Debug/ diff --git a/Taskfile.yml b/Taskfile.yml index c27c59567..57884c31e 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -3,30 +3,6 @@ version: '3' tasks: - default: - deps: [build-vue-app] - cmds: - - task: build-windows - build-windows: - deps: [build-vue-app] - cmds: - - go build -o mokapi-windows-amd64.exe -ldflags="-w -s -X 'mokapi/version.BuildVersion=1.0'" ./cmd/mokapi - env: - GOOS: windows - GOARCH: amd64 - build-linux: - deps: [build-vue-app] - cmds: - - go build -o mokapi-linux-amd64 -ldflags="-X 'mokapi/version.BuildVersion=1.0'" ./cmd/mokapi - env: - GOOS: linux - GOARCH: amd64 - build-macos: - cmds: - - go build -o mokapi-darwin-arm64 -ldflags="-X 'mokapi/version.BuildVersion=1.0'" ./cmd/mokapi - env: - GOOS: darwin - GOARCH: arm64 build-vue-app: deps: [ensure-dist-folder] dir: webui @@ -36,36 +12,96 @@ tasks: - go run ../cmd/internal/gen-cli-docs/main.go --output-dir ./webui/src/assets/docs/configuration/static - npm version {{.VERSION}} - npm run build-dashboard - build-npm-package: - deps: [build-vue-app] + publish-all: + deps: [ build-vue-app ] cmds: - - task npm-build-windows VERSION={{.VERSION}} - - task npm-build-linux VERSION={{.VERSION}} - - task npm-build-macos VERSION={{.VERSION}} - publish-npm-package: - deps: [build-npm-package] - dir: npm + - task publish-platform-dependent VERSION={{.VERSION}} + - task publish-mokapi VERSION={{.VERSION}} + publish-platform-dependent: + deps: + - publish-mokapi-windows-x64 + - publish-mokapi-windows-arm64 + - publish-mokapi-linux-x64 + - publish-mokapi-linux-arm64 + - publish-mokapi-macos-x64 + - publish-mokapi-macos-arm64 + publish-mokapi: + dir: npm/go-mokapi cmds: - npm version {{.VERSION}} - npm publish --provenance - npm-build-windows: + publish-mokapi-windows-x64: + deps: [ build-mokapi-windows-x64 ] + dir: npm/@go-mokapi/win32-x64 + cmds: + - npm version {{.VERSION}} + - npm publish --provenance --access public + build-mokapi-windows-x64: cmds: - - go build -o ./npm/dist/mokapi-windows-amd64/mokapi.exe -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi + - go build -o ./npm/@go-mokapi/win32-x64/bin/mokapi.exe -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi env: GOOS: windows GOARCH: amd64 - npm-build-linux: + publish-mokapi-windows-arm64: + deps: [ build-mokapi-windows-arm64 ] + dir: npm/@go-mokapi/win32-arm64 cmds: - - go build -o ./npm/dist/mokapi-linux-amd64/mokapi -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi + - npm version {{.VERSION}} + - npm publish --provenance --access public + build-mokapi-windows-arm64: + cmds: + - go build -o ./npm/@go-mokapi/win32-arm64/bin/mokapi.exe -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi + env: + GOOS: windows + GOARCH: arm64 + publish-mokapi-linux-x64: + deps: [ build-mokapi-linux-x64 ] + dir: npm/@go-mokapi/linux-x64 + cmds: + - npm version {{.VERSION}} + - npm publish --provenance --access public + build-mokapi-linux-x64: + cmds: + - go build -o ./npm/@go-mokapi/linux-x64/bin/mokapi -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi env: GOOS: linux GOARCH: amd64 - npm-build-macos: + publish-mokapi-linux-arm64: + deps: [ build-mokapi-linux-arm64 ] + dir: npm/@go-mokapi/linux-arm64 + cmds: + - npm version {{.VERSION}} + - npm publish --provenance --access public + build-mokapi-linux-arm64: + cmds: + - go build -o ./npm/@go-mokapi/linux-arm64/bin/mokapi -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi + env: + GOOS: linux + GOARCH: arm64 + publish-mokapi-macos-arm64: + deps: [ build-mokapi-macos-arm64 ] + dir: npm/@go-mokapi/darwin-arm64 + cmds: + - npm version {{.VERSION}} + - npm publish --provenance --access public + build-mokapi-macos-arm64: cmds: - - go build -o ./npm/dist/mokapi-darwin-arm64/mokapi -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi + - go build -o ./npm/@go-mokapi/darwin-arm64/bin/mokapi -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi env: GOOS: darwin GOARCH: arm64 + publish-mokapi-macos-x64: + deps: [ build-mokapi-macos-x64 ] + dir: npm/@go-mokapi/darwin-x64 + cmds: + - npm version {{.VERSION}} + - npm publish --provenance --access public + build-mokapi-macos-x64: + cmds: + - go build -o ./npm/@go-mokapi/darwin-x64/bin/mokapi -ldflags="-X mokapi/version.BuildVersion={{.VERSION}}" ./cmd/mokapi + env: + GOOS: darwin + GOARCH: amd64 ensure-dist-folder: cmds: - mkdir -p webui/dist diff --git a/npm/@go-mokapi/darwin-arm64/README.md b/npm/@go-mokapi/darwin-arm64/README.md new file mode 100644 index 000000000..84dfc513c --- /dev/null +++ b/npm/@go-mokapi/darwin-arm64/README.md @@ -0,0 +1,4 @@ +# mokapi + +This package contains the **macOS ARM 64-bit binary** for **mokapi**, an API mocking tool. +See https://mokapi.io for details \ No newline at end of file diff --git a/npm/@go-mokapi/darwin-arm64/index.js b/npm/@go-mokapi/darwin-arm64/index.js new file mode 100644 index 000000000..53613b7f2 --- /dev/null +++ b/npm/@go-mokapi/darwin-arm64/index.js @@ -0,0 +1,2 @@ +const path = require('path'); +module.exports = path.join(__dirname, 'bin/mokapi'); \ No newline at end of file diff --git a/npm/@go-mokapi/darwin-arm64/package.json b/npm/@go-mokapi/darwin-arm64/package.json new file mode 100644 index 000000000..da7515725 --- /dev/null +++ b/npm/@go-mokapi/darwin-arm64/package.json @@ -0,0 +1,19 @@ +{ + "name": "@go-mokapi/darwin-arm64", + "version": "0.36.0", + "description": "The macOS ARM 64-bit binary for mokapi, an API mocking tool", + "homepage": "https://mokapi.io", + "repository": { + "type": "git", + "url": "git+https://github.com/marle3003/mokapi.git" + }, + "author": "Marcel Lehmann", + "license": "MIT", + "preferUnplugged": true, + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ] +} diff --git a/npm/@go-mokapi/darwin-x64/README.md b/npm/@go-mokapi/darwin-x64/README.md new file mode 100644 index 000000000..56c7565ce --- /dev/null +++ b/npm/@go-mokapi/darwin-x64/README.md @@ -0,0 +1,4 @@ +# mokapi + +This package contains the **macOS 64-bit binary** for **mokapi**, an API mocking tool. +See https://mokapi.io for details \ No newline at end of file diff --git a/npm/@go-mokapi/darwin-x64/index.js b/npm/@go-mokapi/darwin-x64/index.js new file mode 100644 index 000000000..53613b7f2 --- /dev/null +++ b/npm/@go-mokapi/darwin-x64/index.js @@ -0,0 +1,2 @@ +const path = require('path'); +module.exports = path.join(__dirname, 'bin/mokapi'); \ No newline at end of file diff --git a/npm/@go-mokapi/darwin-x64/package.json b/npm/@go-mokapi/darwin-x64/package.json new file mode 100644 index 000000000..5d28a7b5e --- /dev/null +++ b/npm/@go-mokapi/darwin-x64/package.json @@ -0,0 +1,19 @@ +{ + "name": "@go-mokapi/darwin-x64", + "version": "0.36.0", + "description": "The macOS 64-bit binary for mokapi, an API mocking tool", + "homepage": "https://mokapi.io", + "repository": { + "type": "git", + "url": "git+https://github.com/marle3003/mokapi.git" + }, + "author": "Marcel Lehmann", + "license": "MIT", + "preferUnplugged": true, + "os": [ + "darwin" + ], + "cpu": [ + "x64" + ] +} diff --git a/npm/@go-mokapi/linux-arm64/README.md b/npm/@go-mokapi/linux-arm64/README.md new file mode 100644 index 000000000..73b6e7104 --- /dev/null +++ b/npm/@go-mokapi/linux-arm64/README.md @@ -0,0 +1,4 @@ +# mokapi + +This package contains the **Linux ARM 64-bit binary** for **mokapi**, an API mocking tool. +See https://mokapi.io for details \ No newline at end of file diff --git a/npm/@go-mokapi/linux-arm64/index.js b/npm/@go-mokapi/linux-arm64/index.js new file mode 100644 index 000000000..53613b7f2 --- /dev/null +++ b/npm/@go-mokapi/linux-arm64/index.js @@ -0,0 +1,2 @@ +const path = require('path'); +module.exports = path.join(__dirname, 'bin/mokapi'); \ No newline at end of file diff --git a/npm/@go-mokapi/linux-arm64/package.json b/npm/@go-mokapi/linux-arm64/package.json new file mode 100644 index 000000000..9c1e99073 --- /dev/null +++ b/npm/@go-mokapi/linux-arm64/package.json @@ -0,0 +1,19 @@ +{ + "name": "@go-mokapi/linux-arm64", + "version": "0.36.0", + "description": "The Linux ARM 64-bit binary for mokapi, an API mocking tool", + "homepage": "https://mokapi.io", + "repository": { + "type": "git", + "url": "git+https://github.com/marle3003/mokapi.git" + }, + "author": "Marcel Lehmann", + "license": "MIT", + "preferUnplugged": true, + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ] +} diff --git a/npm/@go-mokapi/linux-x64/README.md b/npm/@go-mokapi/linux-x64/README.md new file mode 100644 index 000000000..907697608 --- /dev/null +++ b/npm/@go-mokapi/linux-x64/README.md @@ -0,0 +1,4 @@ +# mokapi + +This package contains the **Linux 64-bit binary** for **mokapi**, an API mocking tool. +See https://mokapi.io for details \ No newline at end of file diff --git a/npm/@go-mokapi/linux-x64/index.js b/npm/@go-mokapi/linux-x64/index.js new file mode 100644 index 000000000..53613b7f2 --- /dev/null +++ b/npm/@go-mokapi/linux-x64/index.js @@ -0,0 +1,2 @@ +const path = require('path'); +module.exports = path.join(__dirname, 'bin/mokapi'); \ No newline at end of file diff --git a/npm/@go-mokapi/linux-x64/package.json b/npm/@go-mokapi/linux-x64/package.json new file mode 100644 index 000000000..b6e09d08c --- /dev/null +++ b/npm/@go-mokapi/linux-x64/package.json @@ -0,0 +1,19 @@ +{ + "name": "@go-mokapi/linux-x64", + "version": "0.36.0", + "description": "The Linux 64-bit binary for mokapi, an API mocking tool", + "homepage": "https://mokapi.io", + "repository": { + "type": "git", + "url": "git+https://github.com/marle3003/mokapi.git" + }, + "author": "Marcel Lehmann", + "license": "MIT", + "preferUnplugged": true, + "os": [ + "linux" + ], + "cpu": [ + "x64" + ] +} diff --git a/npm/@go-mokapi/win32-arm64/README.md b/npm/@go-mokapi/win32-arm64/README.md new file mode 100644 index 000000000..0fa228997 --- /dev/null +++ b/npm/@go-mokapi/win32-arm64/README.md @@ -0,0 +1,4 @@ +# mokapi + +This package contains the **Windows ARM 64-bit binary** for **mokapi**, an API mocking tool. +See https://mokapi.io for details \ No newline at end of file diff --git a/npm/@go-mokapi/win32-arm64/index.js b/npm/@go-mokapi/win32-arm64/index.js new file mode 100644 index 000000000..53613b7f2 --- /dev/null +++ b/npm/@go-mokapi/win32-arm64/index.js @@ -0,0 +1,2 @@ +const path = require('path'); +module.exports = path.join(__dirname, 'bin/mokapi'); \ No newline at end of file diff --git a/npm/@go-mokapi/win32-arm64/package.json b/npm/@go-mokapi/win32-arm64/package.json new file mode 100644 index 000000000..a1ab5acad --- /dev/null +++ b/npm/@go-mokapi/win32-arm64/package.json @@ -0,0 +1,19 @@ +{ + "name": "@go-mokapi/win32-arm64", + "version": "0.36.0", + "description": "The Windows ARM 64-bit binary for mokapi, an API mocking tool", + "homepage": "https://mokapi.io", + "repository": { + "type": "git", + "url": "git+https://github.com/marle3003/mokapi.git" + }, + "author": "Marcel Lehmann", + "license": "MIT", + "preferUnplugged": true, + "os": [ + "win32" + ], + "cpu": [ + "arm64" + ] +} diff --git a/npm/@go-mokapi/win32-x64/README.md b/npm/@go-mokapi/win32-x64/README.md new file mode 100644 index 000000000..8f3a7590a --- /dev/null +++ b/npm/@go-mokapi/win32-x64/README.md @@ -0,0 +1,4 @@ +# mokapi + +This package contains the **Windows 64-bit binary** for **mokapi**, an API mocking tool. +See https://mokapi.io for details \ No newline at end of file diff --git a/npm/@go-mokapi/win32-x64/index.js b/npm/@go-mokapi/win32-x64/index.js new file mode 100644 index 000000000..53613b7f2 --- /dev/null +++ b/npm/@go-mokapi/win32-x64/index.js @@ -0,0 +1,2 @@ +const path = require('path'); +module.exports = path.join(__dirname, 'bin/mokapi'); \ No newline at end of file diff --git a/npm/@go-mokapi/win32-x64/package.json b/npm/@go-mokapi/win32-x64/package.json new file mode 100644 index 000000000..4469e17fb --- /dev/null +++ b/npm/@go-mokapi/win32-x64/package.json @@ -0,0 +1,19 @@ +{ + "name": "@go-mokapi/win32-x64", + "version": "0.36.0", + "description": "The Windows 64-bit binary for mokapi, an API mocking tool", + "homepage": "https://mokapi.io", + "repository": { + "type": "git", + "url": "git+https://github.com/marle3003/mokapi.git" + }, + "author": "Marcel Lehmann", + "license": "MIT", + "preferUnplugged": true, + "os": [ + "win32" + ], + "cpu": [ + "x64" + ] +} diff --git a/npm/README.md b/npm/README.md deleted file mode 100644 index 20c41aea7..000000000 --- a/npm/README.md +++ /dev/null @@ -1,124 +0,0 @@ -

- -Mokapi - -

- -

Your API Mocking Tool for Agile Development

- -# 🚀 Overview - -Mokapi is an open-source tool that helps Agile, DevOps, and Continuous -Deployment teams design, test, and validate APIs before implementation. -It enables rapid prototyping of scenarios—like delayed responses, -failures, or edge cases—without needing a live backend. By simulating -real-world conditions early, Mokapi improves API quality and reduces -the risk of bugs in production. - -# ✨ Features - -- **Multiple Protocol support**: HTTP, HTTPS, Apache Kafka, SMTP, LDAP -- **Everything as Code**: Reusing, version control, consistency and integrate mocks with your CI/CD. -- **An embedded JavaScript engine** to control everything - status, headers, delays, errors or other edge cases. -- **Patch Configuration** changes for mocking needs, rather than changing the original contract -- **Multiple Provider support**: File, HTTP, GIT, NPM to gather configurations and scripts. -- **Dashboard** to see what's going on. - -## 🔧 Spin Up Mokapi - -Install and start Mokapi using one of the following methods. -Replace the URL with your own OpenAPI or AsyncAPI specification. - -Windows -```shell -choco install mokapi -mokapi https://petstore31.swagger.io/api/v31/openapi.json -``` - -MacOS -```shell -brew tap marle3003/tap -brew install mokapi -mokapi https://petstore31.swagger.io/api/v31/openapi.json -``` - -Docker -```shell -docker run -p 80:80 -p 8080:8080 mokapi/mokapi:latest https://petstore31.swagger.io/api/v31/openapi.json -``` - -# 🎯 Hit Your First Mock -Once Mokapi is running, you can make requests to your mocked API like so: -```shell -curl http://localhost/api/v31/pet/2 -H 'Accept: application/json' -``` - -# 🧩 Customize Your Mock with JavaScript - -Mokapi makes it simple to control responses using embedded JavaScript. - -For example, you can dynamically change the response based on query parameters or headers: - -```typescript -import { on } from 'mokapi'; - -export default function() { - on('http', (request, response): boolean => { - switch (request.path.petId) { - case 2: - response.data.name = 'Betty'; - return true; - case 9: - response.statusCode = 404; - } - return false; - }); -} -``` - -# 🖥️ Dashboard - -Mokapi’s dashboard lets you visualize your mock APIs. View requests and responses in real-time, generate and validate sample data for testing. - -Mokapi Web UI - -# 🧪 Learn by Example - -Explore tutorials that walk you through mocking different protocols and scenarios: - -- 🌍 [Get started with REST API](https://mokapi.io/resources/tutorials/get-started-with-rest-api)\ - This tutorial will show you how to mock a REST API using an OpenAPI specification. - -- ⚡ [Mocking Kafka with AsyncAPI](https://mokapi.io/resources/tutorials/get-started-with-kafka)\ - mocking a Kafka topic using Mokapi and verifying that a producer generates valid messages. - -- 👨‍💻 [Mocking LDAP Authentication](https://mokapi.io/resources/tutorials/mock-ldap-authentication-in-node)\ - Simulate LDAP-based login flows, including group-based permissions. - -- 📧 [Mocking SMTP Mail Servers](https://mokapi.io/resources/tutorials/mock-smtp-server-send-mail-using-node)\ - Use Mokapi to simulate sending and receiving emails in Node.js apps. - -- 🖥️ [End-to-End Testing with Jest and GitHub Actions](https://mokapi.io/resources/tutorials/running-mokapi-in-a-ci-cd-pipeline)\ - Integrate Mokapi into your CI pipeline for full-stack E2E testing. - -> More examples are available on [mokapi.io/resources](https://mokapi.io/resources) - -# 📚 Documentation - -- [Get Started](https://mokapi.io/docs/welcome) -- [HTTP](https://mokapi.io/docs/http/overview) -- [Kafka](https://mokapi.io/docs/kafka/overview) -- [LDAP](https://mokapi.io/docs/ldap/overview) -- [SMTP](https://mokapi.io/docs/mail/overview) -- [Javascript API](https://mokapi.io/docs/javascript-api/overview) -- [Resources](https://mokapi.io/resources) - -# ☕ Support - -If you find Mokapi helpful, consider supporting the project: - -Buy Me A Coffee - -# 📄 License - -This project is licensed under the MIT License. See the [LICENSE](https://github.com/marle3003/mokapi/blob/main/LICENSE) file for details. \ No newline at end of file diff --git a/npm/bin/mokapi.js b/npm/bin/mokapi.js deleted file mode 100644 index d505207b2..000000000 --- a/npm/bin/mokapi.js +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env node -let spawn = require('child_process').spawn; -let path = require('path'); - -const ARCH_MAPPING = { - "ia32": "386", - "x64": "amd64", - "arm64": "arm64" -}; - -// Mapping between Node's `process.platform` to Golang's -const PLATFORM_MAPPING = { - "darwin": "darwin", - "linux": "linux", - "win32": "windows", -}; - -let exe = `../dist/mokapi-${PLATFORM_MAPPING[process.platform]}-${ARCH_MAPPING[process.arch]}/mokapi` -if (process.platform === 'win32') { - exe += '.exe' -} -const exePath = path.resolve(__dirname, exe) -const mokapi = spawn(exePath, process.argv.slice(2), {cwd: process.cwd()}) - -mokapi.stdout.on('data', function(data) { - console.log(data.toString()) -}) - -mokapi.stderr.on('data', function(data) { - console.log(data.toString()) -}) - diff --git a/npm/go-mokapi/README.md b/npm/go-mokapi/README.md new file mode 100644 index 000000000..c825dc9cc --- /dev/null +++ b/npm/go-mokapi/README.md @@ -0,0 +1,168 @@ +

+ +Mokapi + +

+

Mock APIs Across Protocols. Test Faster. Ship Better.

+

+ npm version + License + GitHub stars +

+ +## What is Mokapi? + +Mokapi is an open-source API mocking tool that lets you develop and test without waiting +for backends. Mock REST APIs, Kafka topics, LDAP directories, and SMTP servers using +OpenAPI and AsyncAPI specifications. + +Perfect for: +- Frontend developers building UIs before backends exist +- QA teams testing edge cases, errors, and timeouts +- DevOps engineers running reliable CI/CD tests without external dependencies +- API designers prototyping and validating contracts early + +## Quick Start + +Try Instantly + +``` +npx go-mokapi https://petstore3.swagger.io/api/v3/openapi.json +``` + +Then test your mock: + +``` +curl http://localhost/api/v3/pet/1 -H 'Accept: application/json' +``` + +Install Globally + +``` +npm install -g go-mokapi +mokapi https://petstore3.swagger.io/api/v3/openapi.json +``` + +### Other Installation Methods + +Homebrew (macOS/Linux): +``` +brew tap marle3003/tap +brew install mokapi +``` + +Chocolatey (Windows): +```yaml +choco install mokapi +``` + +Docker: +``` +docker run -p 80:80 -p 8080:8080 mokapi/mokapi:latest \ + https://petstore3.swagger.io/api/v3/openapi.json +``` + +## Key Features + +### Multi-Protocol Support +Mock HTTP/HTTPS, Apache Kafka, LDAP, and SMTP — all from a single tool. + +### Specification-Driven +Uses OpenAPI and AsyncAPI specs as the source of truth. Your mocks stay aligned with your API contracts. + +### Dynamic Behavior with JavaScript + +Control responses, simulate errors, add delays, or create complex workflows using embedded JavaScript: +```javascript +import { on } from 'mokapi' + +export default function() { + on('http', (request, response) => { + // Return 404 for specific IDs + if (request.path.petId === '999') { + response.statusCode = 404 + return + } + + // Customize response data + response.data.name = 'Custom Pet Name' + }) +} +``` + +### Everything as Code +Version control your mocks alongside your code. Run them in CI/CD pipelines. No UI configuration required. + +### Configuration Patching +Override parts of your OpenAPI spec without modifying the original file. Perfect for testing different scenarios. + +### Built-in Dashboard +Visualize requests, responses, and logs in real-time at http://localhost:8080 +Mokapi Web UI + +### Multiple Providers +Load specs from local files, HTTP URLs, Git repositories, or NPM packages. + +## Common Use Cases + +### Frontend Development +Mock backend APIs while building UIs. Test loading states, errors, and edge cases without waiting for real endpoints. + +### API Testing +Simulate timeouts, 500 errors, rate limits, and malformed responses. Test how your application handles failures. + +### CI/CD Integration +Run fast, reliable tests without external dependencies. No flaky tests due to network issues or unavailable services. + +### Contract Validation +Validate that your requests and responses match your OpenAPI specification. Catch breaking changes early. + +# Example Tutorials + +Explore tutorials that walk you through mocking different protocols and scenarios: + +- [Get started with REST API](https://mokapi.io/resources/tutorials/get-started-with-rest-api) + Mock a REST API using OpenAPI specification + +- [Mock Kafka with AsyncAPI](https://mokapi.io/resources/tutorials/get-started-with-kafka) + Simulate Kafka topics and validate message producers + +- [Mock LDAP Authentication](https://mokapi.io/resources/tutorials/mock-ldap-authentication-in-node)\ + Test authentication flows without a real LDAP server + +- [Mock SMTP Mail Servers](https://mokapi.io/resources/tutorials/mock-smtp-server-send-mail-using-node)\ + Test email workflows without sending real messages + +- [CI/CD Integration with GitHub Actions](https://mokapi.io/resources/tutorials/running-mokapi-in-a-ci-cd-pipeline)\ + Run Mokapi in automated test pipelines + +> More examples [mokapi.io/resources](https://mokapi.io/resources) + +## Documentation + +- [Getting Started Guide](https://mokapi.io/docs/welcome) +- [HTTP/REST API Documentation](https://mokapi.io/docs/http/overview) +- [Kafka Documentation](https://mokapi.io/docs/kafka/overview) +- [LDAP Documentation](https://mokapi.io/docs/ldap/overview) +- [SMTP/Mail Documentation](https://mokapi.io/docs/mail/overview) +- [JavaScript API Reference](https://mokapi.io/docs/javascript-api/overview) +- [Configuration Guide](https://mokapi.io/docs/configuration/overview) + +## Support the Project + +If Mokapi helps your team ship faster, consider supporting development: + +Buy Me A Coffee + +## License + +MIT License - see [LICENSE](https://github.com/marle3003/mokapi/blob/main/LICENSE) for details. + +## Links + +- Website: [mokapi.io](https://mokapi.io) +- GitHub: [github.com/marle3003/mokapi](https://github.com/marle3003/mokapi) +- NPM Package: [npmjs.com/package/go-mokapi](https://npmjs.com/package/go-mokapi) +- Documentation: [mokapi.io/docs](https://mokapi.io/docs) +- Tutorials: [mokapi.io/resources/tutorials](https://mokapi.io/resources/tutorials) +- Blog: [mokapi.io/resources/blogs](https://mokapi.io/resources/blogs) \ No newline at end of file diff --git a/npm/go-mokapi/bin/mokapi.js b/npm/go-mokapi/bin/mokapi.js new file mode 100755 index 000000000..3aa9b0960 --- /dev/null +++ b/npm/go-mokapi/bin/mokapi.js @@ -0,0 +1,59 @@ +#!/usr/bin/env node +const { spawn } = require('child_process'); +const fs = require('fs'); + +// Mapping Node platform + arch to scoped platform packages +function resolveBinary() { + const platform = process.platform; + const arch = process.arch; + + let pkgName; + + switch (platform) { + case 'linux': + pkgName = arch === 'arm64' + ? '@go-mokapi/linux-arm64' + : '@go-mokapi/linux-x64'; + break; + case 'darwin': + pkgName = arch === 'arm64' + ? '@go-mokapi/darwin-arm64' + : '@go-mokapi/darwin-x64'; + break; + case 'win32': + pkgName = arch === 'arm64' + ? '@go-mokapi/win32-arm64' + : '@go-mokapi/win32-x64'; + break; + default: + console.error(`Unsupported platform/arch: ${platform}/${arch}`); + process.exit(1); + } + + try { + // Each platform package exports the full path to the binary + const binaryPath = require(pkgName); + if (!fs.existsSync(binaryPath)) { + console.error(`Binary not found at ${binaryPath}`); + process.exit(1); + } + return binaryPath; + } catch (err) { + console.error(`Platform package ${pkgName} is not installed.`); + console.error(`Run 'npm install' to install the correct platform binary.`); + process.exit(1); + } +} + +// Get the binary path for current platform +const exe = resolveBinary(); + +// Spawn Mokapi process with arguments from CLI +const mokapi = spawn(exe, process.argv.slice(2), { cwd: process.cwd() }); + +// Forward stdout/stderr +mokapi.stdout.on('data', data => process.stdout.write(data)); +mokapi.stderr.on('data', data => process.stderr.write(data)); + +// Exit with the same code as Mokapi +mokapi.on('close', code => process.exit(code)); \ No newline at end of file diff --git a/npm/index.d.ts b/npm/go-mokapi/index.d.ts similarity index 100% rename from npm/index.d.ts rename to npm/go-mokapi/index.d.ts diff --git a/npm/package.json b/npm/go-mokapi/package.json similarity index 56% rename from npm/package.json rename to npm/go-mokapi/package.json index f8c9bf0ad..fa10bc1a0 100644 --- a/npm/package.json +++ b/npm/go-mokapi/package.json @@ -1,6 +1,6 @@ { "name": "go-mokapi", - "version": "0.6.0", + "version": "0.0.0", "description": "Easy and flexible API mocking", "homepage": "https://mokapi.io", "repository": { @@ -10,8 +10,14 @@ "bin": { "mokapi": "bin/mokapi.js" }, - "scripts": { - "mokapi": "mokapi" + "preferUnplugged": true, + "optionalDependencies": { + "@go-mokapi/darwin-arm64": "*", + "@go-mokapi/darwin-x64": "*", + "@go-mokapi/linux-arm64": "*", + "@go-mokapi/linux-x64": "*", + "@go-mokapi/win32-arm64": "*", + "@go-mokapi/win32-x64": "*" }, "keywords": [ "mock", @@ -22,11 +28,5 @@ ], "author": "Marcel Lehmann", "license": "MIT", - "types": "index.d.ts", - "files": [ - "bin", - "dist", - "types", - "index.d.ts" - ] + "types": "index.d.ts" } diff --git a/npm/types/encoding.d.ts b/npm/go-mokapi/types/encoding.d.ts similarity index 100% rename from npm/types/encoding.d.ts rename to npm/go-mokapi/types/encoding.d.ts diff --git a/npm/types/faker.d.ts b/npm/go-mokapi/types/faker.d.ts similarity index 100% rename from npm/types/faker.d.ts rename to npm/go-mokapi/types/faker.d.ts diff --git a/npm/types/file.d.ts b/npm/go-mokapi/types/file.d.ts similarity index 100% rename from npm/types/file.d.ts rename to npm/go-mokapi/types/file.d.ts diff --git a/npm/types/global.d.ts b/npm/go-mokapi/types/global.d.ts similarity index 100% rename from npm/types/global.d.ts rename to npm/go-mokapi/types/global.d.ts diff --git a/npm/types/http.d.ts b/npm/go-mokapi/types/http.d.ts similarity index 100% rename from npm/types/http.d.ts rename to npm/go-mokapi/types/http.d.ts diff --git a/npm/types/index.d.ts b/npm/go-mokapi/types/index.d.ts similarity index 100% rename from npm/types/index.d.ts rename to npm/go-mokapi/types/index.d.ts diff --git a/npm/types/kafka.d.ts b/npm/go-mokapi/types/kafka.d.ts similarity index 100% rename from npm/types/kafka.d.ts rename to npm/go-mokapi/types/kafka.d.ts diff --git a/npm/types/mail.d.ts b/npm/go-mokapi/types/mail.d.ts similarity index 100% rename from npm/types/mail.d.ts rename to npm/go-mokapi/types/mail.d.ts diff --git a/npm/types/mustache.d.ts b/npm/go-mokapi/types/mustache.d.ts similarity index 100% rename from npm/types/mustache.d.ts rename to npm/go-mokapi/types/mustache.d.ts diff --git a/npm/types/yaml.d.ts b/npm/go-mokapi/types/yaml.d.ts similarity index 100% rename from npm/types/yaml.d.ts rename to npm/go-mokapi/types/yaml.d.ts From 46f7a2ed471c389ad307344da5a9255b37313130 Mon Sep 17 00:00:00 2001 From: maesi Date: Sun, 1 Mar 2026 18:56:25 +0100 Subject: [PATCH 5/7] chore: bump eslint to 10.0.0 --- webui/package-lock.json | 433 ++++++++++++---------------------------- webui/package.json | 2 +- 2 files changed, 125 insertions(+), 310 deletions(-) diff --git a/webui/package-lock.json b/webui/package-lock.json index 6624c3c5e..82c311558 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -48,7 +48,7 @@ "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.7.0", "@vue/tsconfig": "^0.8.1", - "eslint": "^9.39.2", + "eslint": "^10.0.0", "eslint-plugin-vue": "^10.8.0", "npm-run-all": "^4.1.5", "prettier": "^3.8.1", @@ -592,153 +592,107 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz", + "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.7", + "@eslint/object-schema": "^3.0.2", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^10.2.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz", + "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.17.0" + "@eslint/core": "^1.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz", + "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "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": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz", + "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz", + "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.17.0", + "@eslint/core": "^1.1.0", "levn": "^0.4.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@humanfs/core": { @@ -1314,6 +1268,13 @@ "@popperjs/core": "^2.9.2" } }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1955,9 +1916,9 @@ "license": "BSD-3-Clause" }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -1977,9 +1938,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -2000,22 +1961,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2296,33 +2241,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/chokidar": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", @@ -2338,26 +2256,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -3313,33 +3211,30 @@ } }, "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.0.tgz", + "integrity": "sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", - "@eslint/plugin-kit": "^0.4.1", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.0", + "@eslint/config-helpers": "^0.5.2", + "@eslint/core": "^1.1.0", + "@eslint/plugin-kit": "^0.6.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", - "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", + "eslint-scope": "^9.1.0", + "eslint-visitor-keys": "^5.0.0", + "espree": "^11.1.0", + "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -3349,8 +3244,7 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^10.1.1", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -3358,7 +3252,7 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://eslint.org/donate" @@ -3452,17 +3346,19 @@ } }, "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz", + "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3481,69 +3377,84 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz", + "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" + "eslint-visitor-keys": "^5.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3984,19 +3895,6 @@ "node": ">=10.13.0" } }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", @@ -4075,16 +3973,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -4224,23 +4112,6 @@ "node": ">= 4" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -4915,13 +4786,6 @@ "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==", "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -5682,19 +5546,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -6199,16 +6050,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -6802,19 +6643,6 @@ "node": ">=4" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/superjson": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz", @@ -6827,19 +6655,6 @@ "node": ">=16" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", diff --git a/webui/package.json b/webui/package.json index 723f76c82..f9f03c813 100644 --- a/webui/package.json +++ b/webui/package.json @@ -57,7 +57,7 @@ "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.7.0", "@vue/tsconfig": "^0.8.1", - "eslint": "^9.39.2", + "eslint": "^10.0.0", "eslint-plugin-vue": "^10.8.0", "npm-run-all": "^4.1.5", "prettier": "^3.8.1", From bc3fd57c3b30b9805d41a4adf1326cee4348952f Mon Sep 17 00:00:00 2001 From: maesi Date: Sun, 1 Mar 2026 18:56:36 +0100 Subject: [PATCH 6/7] doc: update keywords --- npm/go-mokapi/package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/npm/go-mokapi/package.json b/npm/go-mokapi/package.json index fa10bc1a0..2bb93f6ac 100644 --- a/npm/go-mokapi/package.json +++ b/npm/go-mokapi/package.json @@ -22,9 +22,11 @@ "keywords": [ "mock", "api", + "http", "kafka", - "rest", - "http" + "ldap", + "smtp", + "imap" ], "author": "Marcel Lehmann", "license": "MIT", From a72e44f30c8fec010b95a42cb0479f68e9e88c5e Mon Sep 17 00:00:00 2001 From: maesi Date: Sun, 1 Mar 2026 19:08:08 +0100 Subject: [PATCH 7/7] chore: switch to node 24 --- .github/actions/publish-website/action.yml | 2 +- .github/actions/run-frontend-tests/action.yml | 2 +- .github/workflows/build.yml | 2 +- docs/resources/blogs/end-to-end-testing-mocked-apis.md | 2 +- docs/resources/tutorials/running-mokapi-github-action.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/actions/publish-website/action.yml b/.github/actions/publish-website/action.yml index 7c5c9c6a4..baf650b94 100644 --- a/.github/actions/publish-website/action.yml +++ b/.github/actions/publish-website/action.yml @@ -21,7 +21,7 @@ runs: steps: - uses: actions/setup-node@v4 with: - node-version: 23.11.1 + node-version: 24 registry-url: 'https://registry.npmjs.org' - id: release uses: pozetroninc/github-action-get-latest-release@master diff --git a/.github/actions/run-frontend-tests/action.yml b/.github/actions/run-frontend-tests/action.yml index 0adddeb5c..5c8f568e2 100644 --- a/.github/actions/run-frontend-tests/action.yml +++ b/.github/actions/run-frontend-tests/action.yml @@ -27,7 +27,7 @@ runs: shell: bash - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Install and Build working-directory: ./webui run: | diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f02406b48..f5becbdb4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: 23 + node-version: 24 - name: build webui working-directory: ./webui run: | diff --git a/docs/resources/blogs/end-to-end-testing-mocked-apis.md b/docs/resources/blogs/end-to-end-testing-mocked-apis.md index 4aefbf375..13a654072 100644 --- a/docs/resources/blogs/end-to-end-testing-mocked-apis.md +++ b/docs/resources/blogs/end-to-end-testing-mocked-apis.md @@ -83,7 +83,7 @@ jobs: - name: Set Up Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Install Dependencies run: npm install diff --git a/docs/resources/tutorials/running-mokapi-github-action.md b/docs/resources/tutorials/running-mokapi-github-action.md index 7fb8264c8..e43cd1e67 100644 --- a/docs/resources/tutorials/running-mokapi-github-action.md +++ b/docs/resources/tutorials/running-mokapi-github-action.md @@ -170,7 +170,7 @@ jobs: - name: Set Up Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Install Dependencies run: npm install