From fdcad8e60a85e14de34bd685ee97b6c4f7b431aa Mon Sep 17 00:00:00 2001 From: drkjc Date: Wed, 21 Oct 2026 17:00:44 -0400 Subject: [PATCH 1/4] fix: bind example servers to localhost by default --- README.md | 2 +- server/README.md | 4 +++- server/docker-compose.yml | 14 +++++++------- server/dotnet/Dockerfile | 2 +- server/dotnet/Program.cs | 3 ++- server/go/Dockerfile | 1 + server/go/main.go | 7 ++++++- server/java/Dockerfile | 1 + .../com/spreedly/composer/examples/SidecarApp.java | 3 ++- server/node-ts/Dockerfile | 1 + server/node-ts/src/index.ts | 3 ++- server/python/Dockerfile | 1 + server/python/app.py | 2 +- server/ruby/Dockerfile | 1 + server/ruby/app.rb | 2 +- server/tests/docker-compose.test.yml | 2 +- 16 files changed, 32 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 3765a72..2c09107 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Requires PHP 8.2+. ```bash cd server/php composer install -php -S 0.0.0.0:3022 -t . app.php +php -S 127.0.0.1:3022 -t . app.php # http://localhost:3022 ``` diff --git a/server/README.md b/server/README.md index 0d9e2d0..4fdb765 100644 --- a/server/README.md +++ b/server/README.md @@ -32,6 +32,8 @@ DODGEBALL_SECRET_KEY=your_secret_key `SPREEDLY_API_URL` and `SPREEDLY_SECRET_KEY` are also accepted when the `DODGEBALL_*` names are unset. +The servers listen on `127.0.0.1`, so only this machine can reach them. Set `HOST=0.0.0.0` to accept connections from other machines, for example in a container or behind a load balancer. The Docker images already set it. For PHP, change the address in the `php -S` command. + ## Run locally ### Node (TypeScript) @@ -60,7 +62,7 @@ Requires PHP 8.2+. ```bash cd server/php composer install -php -S 0.0.0.0:3022 -t . app.php +php -S 127.0.0.1:3022 -t . app.php # http://localhost:3022 ``` diff --git a/server/docker-compose.yml b/server/docker-compose.yml index 825e788..5ec55d4 100644 --- a/server/docker-compose.yml +++ b/server/docker-compose.yml @@ -13,7 +13,7 @@ services: additional_contexts: sdk: ../../composer-sdk-server-node ports: - - "3020:3020" + - "127.0.0.1:3020:3020" env_file: - path: ./node-ts/.env required: false @@ -24,7 +24,7 @@ services: additional_contexts: sdk: ../../composer-sdk-server-python ports: - - "3021:3021" + - "127.0.0.1:3021:3021" env_file: - path: ./python/.env required: false @@ -35,7 +35,7 @@ services: additional_contexts: sdk: ../../composer-sdk-server-php ports: - - "3022:3022" + - "127.0.0.1:3022:3022" env_file: - path: ./php/.env required: false @@ -46,7 +46,7 @@ services: additional_contexts: sdk: ../../composer-sdk-server-ruby ports: - - "3023:3023" + - "127.0.0.1:3023:3023" env_file: - path: ./ruby/.env required: false @@ -57,7 +57,7 @@ services: additional_contexts: sdk: ../../composer-sdk-server-go ports: - - "3024:3024" + - "127.0.0.1:3024:3024" env_file: - path: ./go/.env required: false @@ -68,7 +68,7 @@ services: additional_contexts: sdk: ../../composer-sdk-server-java ports: - - "3025:3025" + - "127.0.0.1:3025:3025" env_file: - path: ./java/.env required: false @@ -79,7 +79,7 @@ services: additional_contexts: sdk: ../../composer-sdk-server-dotnet ports: - - "3026:3026" + - "127.0.0.1:3026:3026" env_file: - path: ./dotnet/.env required: false diff --git a/server/dotnet/Dockerfile b/server/dotnet/Dockerfile index 497827e..e0d5245 100644 --- a/server/dotnet/Dockerfile +++ b/server/dotnet/Dockerfile @@ -16,7 +16,7 @@ FROM mcr.microsoft.com/dotnet/aspnet:10.0 WORKDIR /app COPY --from=build /out . ENV PORT=3026 -ENV ASPNETCORE_URLS=http://0.0.0.0:3026 +ENV HOST=0.0.0.0 EXPOSE 3026 USER $APP_UID ENTRYPOINT ["dotnet", "Sidecar.dll"] diff --git a/server/dotnet/Program.cs b/server/dotnet/Program.cs index 08b8b6b..3b90d18 100644 --- a/server/dotnet/Program.cs +++ b/server/dotnet/Program.cs @@ -16,7 +16,8 @@ var sdkMeta = new SdkMeta("dotnet", "Spreedly.ComposerSdk.Server", "1.0.0"); var port = EnvOrDefault("PORT", "3026"); -Environment.SetEnvironmentVariable("ASPNETCORE_URLS", $"http://0.0.0.0:{port}"); +var host = EnvOrDefault("HOST", "127.0.0.1"); +Environment.SetEnvironmentVariable("ASPNETCORE_URLS", $"http://{host}:{port}"); var secretKey = EnvOr("DODGEBALL_SECRET_KEY", "SPREEDLY_SECRET_KEY"); if (!IsApiKeyConfigured(secretKey)) diff --git a/server/go/Dockerfile b/server/go/Dockerfile index fcc6619..0bd606d 100644 --- a/server/go/Dockerfile +++ b/server/go/Dockerfile @@ -22,6 +22,7 @@ FROM gcr.io/distroless/static-debian12:nonroot WORKDIR /app COPY --from=build --chown=nonroot:nonroot /app/sidecar /app/sidecar ENV PORT=3024 +ENV HOST=0.0.0.0 EXPOSE 3024 USER nonroot ENTRYPOINT ["/app/sidecar"] diff --git a/server/go/main.go b/server/go/main.go index 211ea3d..ec021b4 100644 --- a/server/go/main.go +++ b/server/go/main.go @@ -68,6 +68,11 @@ func main() { port = "3024" } + host := os.Getenv("HOST") + if host == "" { + host = "127.0.0.1" + } + secretKey := envOr("DODGEBALL_SECRET_KEY", "SPREEDLY_SECRET_KEY") if secretKey == "" { secretKey = "UNSET_SECRET_KEY" @@ -93,7 +98,7 @@ func main() { http.HandleFunc("/checkpoint", checkpointHandler(client)) log.Printf("Server is running on http://localhost:%s", port) - log.Fatal(http.ListenAndServe(":"+port, nil)) + log.Fatal(http.ListenAndServe(host+":"+port, nil)) } func healthzHandler(w http.ResponseWriter, _ *http.Request) { diff --git a/server/java/Dockerfile b/server/java/Dockerfile index 5316d8e..e982e72 100644 --- a/server/java/Dockerfile +++ b/server/java/Dockerfile @@ -31,5 +31,6 @@ COPY --from=build /app/target/java-sidecar-1.0.0.jar /app/sidecar.jar RUN useradd --uid 10001 --no-create-home sidecar USER sidecar ENV PORT=3025 +ENV HOST=0.0.0.0 EXPOSE 3025 CMD ["java", "-jar", "/app/sidecar.jar"] diff --git a/server/java/src/main/java/com/spreedly/composer/examples/SidecarApp.java b/server/java/src/main/java/com/spreedly/composer/examples/SidecarApp.java index 9cb60bd..0fd22c1 100644 --- a/server/java/src/main/java/com/spreedly/composer/examples/SidecarApp.java +++ b/server/java/src/main/java/com/spreedly/composer/examples/SidecarApp.java @@ -44,6 +44,7 @@ public final class SidecarApp { public static void main(String[] args) throws Exception { String port = envOrDefault("PORT", "3025"); + String host = envOrDefault("HOST", "127.0.0.1"); String secretKey = envOr("DODGEBALL_SECRET_KEY", "SPREEDLY_SECRET_KEY"); if (!isApiKeyConfigured(secretKey)) { System.out.println("warning: " + MISSING_CONFIG_MESSAGE); @@ -51,7 +52,7 @@ public static void main(String[] args) throws Exception { Composer composer = buildComposer(secretKey); - HttpServer server = HttpServer.create(new InetSocketAddress(Integer.parseInt(port)), 0); + HttpServer server = HttpServer.create(new InetSocketAddress(host, Integer.parseInt(port)), 0); server.createContext("/healthz", exchange -> { if (!"GET".equals(exchange.getRequestMethod())) { sendText(exchange, 405, "Method not allowed"); diff --git a/server/node-ts/Dockerfile b/server/node-ts/Dockerfile index 385c6e1..57aae34 100644 --- a/server/node-ts/Dockerfile +++ b/server/node-ts/Dockerfile @@ -35,6 +35,7 @@ RUN npm install --install-links COPY tsconfig.json ./ COPY src ./src ENV PORT=3020 +ENV HOST=0.0.0.0 EXPOSE 3020 USER node CMD ["./node_modules/.bin/ts-node", "src/index.ts"] diff --git a/server/node-ts/src/index.ts b/server/node-ts/src/index.ts index 4ced23b..b12901d 100644 --- a/server/node-ts/src/index.ts +++ b/server/node-ts/src/index.ts @@ -9,6 +9,7 @@ app.use(cors()); app.options("*", cors()); const port = process.env.PORT || 3020; +const host = process.env.HOST || "127.0.0.1"; import { Composer, ComposerApiVersion, VERSION as sdkVersion } from "@spreedly/composer-sdk-server"; import { ICheckpointOptions } from "@spreedly/composer-sdk-server/dist/types/types"; @@ -261,6 +262,6 @@ const jsonParseErrorHandler: ErrorRequestHandler = (err, _req, res, next) => { app.use(jsonParseErrorHandler); -app.listen(port, () => { +app.listen(Number(port), host, () => { console.log(`Server is running on http://localhost:${port}`); }); diff --git a/server/python/Dockerfile b/server/python/Dockerfile index 4c39a29..9fa8a52 100644 --- a/server/python/Dockerfile +++ b/server/python/Dockerfile @@ -19,5 +19,6 @@ COPY app.py ./ RUN useradd --uid 10001 --create-home sidecar USER sidecar ENV PORT=3021 +ENV HOST=0.0.0.0 EXPOSE 3021 CMD ["python", "app.py"] diff --git a/server/python/app.py b/server/python/app.py index 3af2f49..60ad81c 100644 --- a/server/python/app.py +++ b/server/python/app.py @@ -179,4 +179,4 @@ def checkpoint(): if __name__ == "__main__": port = int(os.environ.get("PORT", "3021")) - app.run(host="0.0.0.0", port=port) + app.run(host=os.environ.get("HOST", "127.0.0.1"), port=port) diff --git a/server/ruby/Dockerfile b/server/ruby/Dockerfile index ea9f9cc..ae52f02 100644 --- a/server/ruby/Dockerfile +++ b/server/ruby/Dockerfile @@ -22,5 +22,6 @@ COPY app.rb ./ RUN useradd --uid 10001 --create-home sidecar USER sidecar ENV PORT=3023 +ENV HOST=0.0.0.0 EXPOSE 3023 CMD ["bundle", "exec", "ruby", "app.rb"] diff --git a/server/ruby/app.rb b/server/ruby/app.rb index 1835bd9..468d7dd 100644 --- a/server/ruby/app.rb +++ b/server/ruby/app.rb @@ -7,7 +7,7 @@ require 'composer' set :port, ENV.fetch('PORT', '3023').to_i -set :bind, '0.0.0.0' +set :bind, ENV.fetch('HOST', '127.0.0.1') def env_or(primary, fallback) primary_value = ENV[primary].to_s diff --git a/server/tests/docker-compose.test.yml b/server/tests/docker-compose.test.yml index 17476c8..0ec2f09 100644 --- a/server/tests/docker-compose.test.yml +++ b/server/tests/docker-compose.test.yml @@ -16,7 +16,7 @@ services: - ./tests/fake-composer-api.mjs:/app/fake-composer-api.mjs:ro command: node /app/fake-composer-api.mjs ports: - - "3099:3099" + - "127.0.0.1:3099:3099" node-sidecar: environment: &fake_api From 91dd5f0ab4553886ff42ca0abc58c99f2a536043 Mon Sep 17 00:00:00 2001 From: drkjc Date: Thu, 22 Oct 2026 09:56:17 -0400 Subject: [PATCH 2/4] fix: restrict node example CORS to the web-next origin --- server/README.md | 2 +- server/node-ts/.env.example | 2 ++ server/node-ts/src/index.ts | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/server/README.md b/server/README.md index 4fdb765..1ab4ec9 100644 --- a/server/README.md +++ b/server/README.md @@ -172,7 +172,7 @@ PHP's built-in server, Sinatra, Go's `net/http` package, a minimal Java HTTP ser Call `checkpoint` from a route that already authenticates the user, such as `POST /api/orders`. Do not expose an unauthenticated `/checkpoint`. -The node example allows any origin so the browser clients in `client/` can call `http://localhost:3020`. If a browser will call your API, set `Access-Control-Allow-Origin` to your frontend origin. +The node example allows browser calls from `http://localhost:3000`, the origin of the web-next client in `client/`. If you run web-next on another port or open it at `http://127.0.0.1:3000`, set `CORS_ORIGIN` to match. If a browser will call your API, set `Access-Control-Allow-Origin` to your frontend origin. ## SDK repositories diff --git a/server/node-ts/.env.example b/server/node-ts/.env.example index e5d718d..a0ff008 100644 --- a/server/node-ts/.env.example +++ b/server/node-ts/.env.example @@ -2,3 +2,5 @@ DODGEBALL_API_URL=https://api.sandbox.dodgeballhq.com DODGEBALL_SECRET_KEY= # How many reverse proxies sit in front. 0 = socket address; ignore X-Forwarded-For. TRUSTED_PROXY_COUNT=0 +# Browser origin allowed to call this server (the web-next client by default). +CORS_ORIGIN=http://localhost:3000 diff --git a/server/node-ts/src/index.ts b/server/node-ts/src/index.ts index b12901d..c7fc240 100644 --- a/server/node-ts/src/index.ts +++ b/server/node-ts/src/index.ts @@ -5,8 +5,7 @@ dotenv.config(); const app = express(); app.use(express.json()); -app.use(cors()); -app.options("*", cors()); +app.use(cors({ origin: process.env.CORS_ORIGIN || "http://localhost:3000" })); const port = process.env.PORT || 3020; const host = process.env.HOST || "127.0.0.1"; From fa16492d60a578098094191d2c67c97f87f8e4f8 Mon Sep 17 00:00:00 2001 From: drkjc Date: Thu, 22 Oct 2026 13:45:59 -0400 Subject: [PATCH 3/4] docs: note CORS_ORIGIN when running web-next on a custom port --- client/web-next/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/web-next/README.md b/client/web-next/README.md index 45c0173..5fb1e39 100644 --- a/client/web-next/README.md +++ b/client/web-next/README.md @@ -41,7 +41,7 @@ Start that sidecar before using this UI. Only node-ts is set up for browser call 1. Go to this directory: `cd ./client/web-next` 1. Add a `.env` file based on `.env.example` (see **Configuration** above). 1. Run `npm install` to install the dependencies. -1. Run `npm run dev` to start the development server. If you want to use a specific port, you can run `npm run dev -- --port `. +1. Run `npm run dev` to start the development server. If you want to use a specific port, you can run `npm run dev -- --port `, and set `CORS_ORIGIN=http://localhost:` in `server/node-ts/.env` so the sidecar allows browser calls from it. 1. Visit `http://localhost:` in your browser, you will see an error in the same terminal where you ran `npm run dev` - it will show simple information about Trust Client SDK initialization, and let you get a source token on demand. ## What is special about Next JS and Composer? From 1273643946879003ba9143acaf65a9f0bfe1950a Mon Sep 17 00:00:00 2001 From: drkjc Date: Thu, 22 Oct 2026 13:56:18 -0400 Subject: [PATCH 4/4] fix: update next to 15.5.28 and follow-redirects to 1.16.1 --- client/web-next/package-lock.json | 89 ++++++++++++++++--------------- client/web-next/package.json | 2 +- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/client/web-next/package-lock.json b/client/web-next/package-lock.json index dcc842e..d9b73a0 100644 --- a/client/web-next/package-lock.json +++ b/client/web-next/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@dodgeball/trust-sdk-client": "^0.0.38", "@faker-js/faker": "^10.6.0", - "next": "15.5.27", + "next": "15.5.28", "react": "^19.0.0", "react-dom": "^19.0.0" }, @@ -761,9 +761,9 @@ } }, "node_modules/@next/env": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.27.tgz", - "integrity": "sha512-WC5hvVqiuFOcRyz6gKPeJkiVvSMf3scNeAV49CdWtVqxmUlzh8UKR6YHt9yiNkh8LngtzqSlVz07/Ma3ZAzchA==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.28.tgz", + "integrity": "sha512-xxW5EBI8fMPuVTPBW7LL980IRbuDXlbkUAwp9DDhtb4Lnich3nJ13uYpvrX4VE74hWPf6AvHHAMmGCidcHjbfg==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -776,9 +776,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.27.tgz", - "integrity": "sha512-fBA9QurmK4+uj4wNhmRTuO5zMVRaBHCvp6H93zTG/5i6Yi6TewbvbesXB8YQNj8T99Cwrow87hHiFV6wL/hyMA==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.28.tgz", + "integrity": "sha512-dPoQYXcfSIqx5o+TOXVXO7kONK5qbtNRDeiTfII0bT3puGIT6VF5e0QwmxNZfEZ5Zety5f3m9P/p4xqwfiLlPg==", "cpu": [ "arm64" ], @@ -792,9 +792,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.27.tgz", - "integrity": "sha512-FGZwJwry8qZNHxD/nfwrCwCHHrqx6epqItkkxbYcBQEQ2uw5S43bY83fQB5zbAsZE7TELMjoYkbhsQ4oKM7wwg==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.28.tgz", + "integrity": "sha512-RgCJ7buBivTH+6sddqaVm+/v8kwMHlFkobvdt3DfETutws5HrxnToMIWSN9X3MZ3aAi7BbKrGZZWUDQLEycXqw==", "cpu": [ "x64" ], @@ -808,9 +808,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.27.tgz", - "integrity": "sha512-GQulAaJYNF1RYuatlsw9/uzbKz4if2V7Ic9nVO+P0ljYPm4yBRTFIl6g5YkKTw40lMLbpy9edLoH44g3jSHMYA==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.28.tgz", + "integrity": "sha512-OHXQe13olE59aKe++zHavGcJPh5SLHXi6Anret3BBeq1+qhSuOJDNAli/EDDfxs6UTqA4Qddo4uyYry2slyjiQ==", "cpu": [ "arm64" ], @@ -824,9 +824,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.27.tgz", - "integrity": "sha512-URFFsUmu8Pi0/1qdnUI7tx7keZw1Mt5zHfrIX1RfDG9Nih8DYxK54WZsDJUX2ZTlii1jgotL7qcbwKnSAES6xQ==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.28.tgz", + "integrity": "sha512-nTB7bB6vfn4ezCJNYP43ukt2o8L3+WxKF/sTcTxepdXsJh3SM9RhlU7wrZYbH7L4HO5M87dqDTwm8587vAkCiw==", "cpu": [ "arm64" ], @@ -840,9 +840,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.27.tgz", - "integrity": "sha512-aJp74z7uvU5jQhyH7lyk+4qSRcTdKbKT9NQE3jiO9kWYkoHZjKi0zzHDbCoZ+v2sJDEiJ/z58R0UlWMGWNF3HA==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.28.tgz", + "integrity": "sha512-WXCfVI32rW3xCusoUX1RpZKtyChWU2Zwe27JUDmM3KrXwcDNc9vV4zEq0GKFAURnuQ/Ouo/XqPvB0yh445XZCg==", "cpu": [ "x64" ], @@ -856,9 +856,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.27.tgz", - "integrity": "sha512-ILl2bQ8MbpvyMpY8AXljb3BXs0MJSC8HXZ6QV5AWpVS7ZELqNPtrHvhUk+SNarvjvICXX8bCS287TCi+gUFVYg==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.28.tgz", + "integrity": "sha512-Miq+NDb/HWsXuxseYxMM6fuEOQXgTziarkKIRpVKCn8W69cEfhQaQr+90pO+u4q2CbJR2wzXmUuCFyZaJs/Nng==", "cpu": [ "x64" ], @@ -872,9 +872,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.27.tgz", - "integrity": "sha512-1MB9Rh5y8TOPN2x7naNTJNkCZQav9c70AI7EBYXxsEewwOffC4DjjwBwKf20NBvcA+u+5jDv7nVmHxunlP2d7Q==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.28.tgz", + "integrity": "sha512-5LR79lemgDlgxvG7MQJ+zHCkVcrUoQuO7CiIvq3I58vNW4goSOE2b+19Z6FujRWMouvni4gvudYFuFuNxolGWA==", "cpu": [ "arm64" ], @@ -888,9 +888,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.27.tgz", - "integrity": "sha512-XtYgpGOswgnyBWXzOEG6q9RhvnSw0CEZ0MbWqCsl5PISgt9EzvJvNW5mU5n1PsphX/lnamzxjgQXH2GUJL8nqg==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.28.tgz", + "integrity": "sha512-GNipvXUYROSTf4PXEyH95FrWImIB5zdaK6uEOg0RP1/X2drnvoMwiBkJ0VWdzX7w3iiBm3y5g2TxkKDGVTOQcg==", "cpu": [ "x64" ], @@ -2734,15 +2734,16 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.1.tgz", + "integrity": "sha512-FNvFGzoMLWmE6Yj9spb/zjd7yiNCHiAW9/Tg9CXrQ8wuu32HtlJOwWO11OJafl5FfY3DxTdQ0vj42zU1kvv5jg==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -3880,12 +3881,12 @@ "dev": true }, "node_modules/next": { - "version": "15.5.27", - "resolved": "https://registry.npmjs.org/next/-/next-15.5.27.tgz", - "integrity": "sha512-F82CrlPZ8GRxBH9RIIoR3qU1t5RT3dv1K8moe8SjlDEquiFipvEI13R1Om90TaUOEwShkWCMlg8+gvTNzfMhvg==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/next/-/next-15.5.28.tgz", + "integrity": "sha512-JjhLBBY1PNnuwPtcZ7t8yxVeJVYvD2Jyp633J+gRCNbzSt7N0E+xqCf6uQiff3+3qmUkwcF/ksfSsK1xsZ76Tw==", "license": "MIT", "dependencies": { - "@next/env": "15.5.27", + "@next/env": "15.5.28", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", @@ -3898,15 +3899,15 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.5.27", - "@next/swc-darwin-x64": "15.5.27", - "@next/swc-linux-arm64-gnu": "15.5.27", - "@next/swc-linux-arm64-musl": "15.5.27", - "@next/swc-linux-x64-gnu": "15.5.27", - "@next/swc-linux-x64-musl": "15.5.27", - "@next/swc-win32-arm64-msvc": "15.5.27", - "@next/swc-win32-x64-msvc": "15.5.27", - "sharp": "^0.34.3 || ^0.35.4" + "@next/swc-darwin-arm64": "15.5.28", + "@next/swc-darwin-x64": "15.5.28", + "@next/swc-linux-arm64-gnu": "15.5.28", + "@next/swc-linux-arm64-musl": "15.5.28", + "@next/swc-linux-x64-gnu": "15.5.28", + "@next/swc-linux-x64-musl": "15.5.28", + "@next/swc-win32-arm64-msvc": "15.5.28", + "@next/swc-win32-x64-msvc": "15.5.28", + "sharp": "^0.34.3 || ^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", diff --git a/client/web-next/package.json b/client/web-next/package.json index f0a272b..e523288 100644 --- a/client/web-next/package.json +++ b/client/web-next/package.json @@ -12,7 +12,7 @@ "dependencies": { "@dodgeball/trust-sdk-client": "^0.0.38", "@faker-js/faker": "^10.6.0", - "next": "15.5.27", + "next": "15.5.28", "react": "^19.0.0", "react-dom": "^19.0.0" },