Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# .dockerignore is used to exclude files and directories from being copied into the Docker image during the build process. This helps to reduce the size of the image and improve build times by only including necessary files.
# keep it at the root of the project to ensure that we don't copy unnecessary files into the Docker image.

node_modules
**/.turbo
**/.cache
**/apps/*/.next
**/packages/*/dist
**/packages/*/docs
**/.eslintcache
1 change: 1 addition & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ npmPreapprovedPackages:
- ws
- "@vitest/*"
- "shadcn"
- "@oxc-project/*"

npmPublishProvenance: true

Expand Down
2 changes: 1 addition & 1 deletion docker/otel-lgtm/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: flowblade-otel-lgtm

services:
otel-lgtm:
image: grafana/otel-lgtm:0.21.0
image: grafana/otel-lgtm:0.22.0
# 4000 is for the web ui
ports: ['4000:3000', '4317:4317', '4318:4318', '4040:4040', '9090:9090']
networks:
Expand Down
8 changes: 4 additions & 4 deletions examples/apps/fastify-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"@httpx/assert": "0.16.8",
"@httpx/dsn-parser": "1.9.9",
"@httpx/exception": "3.1.9",
"@httpx/lru": "0.13.1",
"@httpx/lru": "0.13.2",
"@httpx/memo-intl": "1.4.10",
"@httpx/plain-object": "2.1.8",
"@httpx/treeu": "0.5.8",
Expand All @@ -66,8 +66,8 @@
"@typescript-eslint/eslint-plugin": "8.57.1",
"@typescript-eslint/parser": "8.57.1",
"@typescript/native-preview": "catalog:",
"@vitest/coverage-v8": "4.1.0",
"@vitest/ui": "4.1.0",
"@vitest/coverage-v8": "4.1.1",
"@vitest/ui": "4.1.1",
"cross-env": "10.1.0",
"eslint": "8.57.1",
"execa": "9.6.1",
Expand All @@ -76,7 +76,7 @@
"tiny-glob": "0.2.9",
"tsx": "4.21.0",
"typescript": "5.9.3",
"vitest": "4.1.0"
"vitest": "4.1.1"
},
"engines": {
"node": ">=20.11.0"
Expand Down
2 changes: 1 addition & 1 deletion examples/apps/nextjs-app/.env
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ DB_FLOWBLADE_MARIADB_DSN="mysql://admin:flowblade@localhost:3306/flowblade"

BETTER_AUTH_SECRET=

OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_EXPORTER_OTLP_ENDPOINT=
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
#OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

Expand Down
10 changes: 9 additions & 1 deletion examples/apps/nextjs-app/docker/.dockerignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
# this file should won't be read unless it exists in the
# context directory specified in the docker compose file

node_modules
**/node_modules
#**/.turbo
#**/.cache
#**/apps/*/.next
#**/packages/*/dist
#**/packages/*/docs
#**/.eslintcache
46 changes: 25 additions & 21 deletions examples/apps/nextjs-app/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
ARG NODE_VERSION=24.14
ARG DEBIAN_VERSION=trixie-slim
ARG COREPACK_VERSION=0.34.6

#############################################################
# Stage 1 - App extraction / pruning #
#############################################################

FROM node:${NODE_VERSION}-${DEBIAN_VERSION} AS app-builder
FROM node:${NODE_VERSION}-${DEBIAN_VERSION} AS prepare

#RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
#RUN --mount=type=cache,id=apt-cache,target=/var/cache/apt,sharing=locked \
# --mount=type=cache,id=apt-lib,target=/var/lib/apt,sharing=locked \
RUN apt-get update \
#&& apt-get install build-essential cmake curl unzip ca-certificates git jq --no-install-recommends -y \
&& apt-get install git jq --no-install-recommends -y \
&& corepack enable
&& rm -rf /var/cache/apt/* \
## Corepack won't be bundled in node 25+
&& npm i -g corepack@${COREPACK_VERSION} && corepack enable


WORKDIR /app
Expand All @@ -33,16 +33,18 @@ RUN turbo prune --scope=@examples/nextjs-app --docker --out-dir=./out/nextjs-app
# Stage 2 - App installation #
#############################################################

FROM app-builder AS app-installer
FROM prepare AS builder

ENV TZ=Etc/UTC

# Optimize for YARN installation speed
ENV YARN_ENABLE_GLOBAL_CACHE=false
ENV YARN_ENABLE_MIRROR=false
ENV YARN_ENABLE_TELEMETRY=false
ENV YARN_NODE_LINKER=node-modules
ENV YARN_NM_MODE=hardlinks-local
ENV YARN_ENABLE_HARDENED_MODE=0
ENV YARN_ENABLE_CONSTRAINTS_CHECKS=false
# If using different compression level than in local (recommended: prefer to not do this)
#ENV YARN_COMPRESSION_LEVEL 0
#ENV YARN_CHECKSUM_BEHAVIOR ignore
Expand All @@ -55,20 +57,19 @@ WORKDIR /app

# First install the dependencies (as they change less often)
COPY --link .gitignore ./
COPY --from=app-builder --link /app/out/nextjs-app/json/ .
COPY --from=app-builder --link /app/out/nextjs-app/yarn.lock ./yarn.lock

COPY --from=prepare --link /app/out/nextjs-app/json/ .
COPY --from=prepare --link /app/out/nextjs-app/yarn.lock ./yarn.lock

# Option 1: run install without cache
#RUN yarn install --inline-builds

# Option 2: run install with buildx cache mount (buildx)
RUN --mount=type=cache,target=/root/.yarn3-cache,id=yarn3-cache \
RUN --mount=type=cache,target=/root/.yarn3-cache,id=yarn3-cache,sharing=locked \
YARN_CACHE_FOLDER=/root/.yarn3-cache \
yarn install --inline-builds

# Build the project
COPY --from=app-builder /app/out/nextjs-app/full/ .
COPY --link --from=prepare /app/out/nextjs-app/full/ .
COPY --link .gitignore turbo.jsonc tsconfig.base.json ./

ENV NEXT_BUILD_IGNORE_ESLINT=true
Expand All @@ -78,15 +79,17 @@ ENV NODE_ENV=production
# ENV NEXT_BUILD_ENV_SENTRY_ENABLED=false
# ENV NEXT_BUILD_ENV_SENTRY_TRACING=false


RUN yarn workspace @examples/db-sqlserver prisma-generate
RUN yarn turbo run build --filter=@examples/nextjs-app...

RUN yarn turbo run build --filter=@examples/nextjs-app
# Alternative we can also
#RUN yarn turbo run build --filter=@examples/nextjs-app...

#############################################################
# Stage 3 - App runner #
#############################################################

FROM node:${NODE_VERSION}-${DEBIAN_VERSION} AS app-runner
FROM node:${NODE_VERSION}-${DEBIAN_VERSION} AS runner

ARG NEXTJS_APP_PORT

Expand All @@ -96,11 +99,12 @@ ENV PORT=${NEXTJS_APP_PORT:-3000}
ENV TZ=Etc/UTC
ENV NODE_ENV=production

#RUN --mount=type=cache,id=apt-cache,target=/var/cache/apt,sharing=locked \
# --mount=type=cache,id=apt-lib,target=/var/lib/apt,sharing=locked \
RUN apt-get update \
&& apt-get install bash tzdata --no-install-recommends -y \
&& corepack enable
&& rm -rf /var/cache/apt/* \
# If needed, we can enable corepack in the runner as well, but for now we don't need it \
# since we're running the built server.js directly with node.
&& npm i -g corepack@${COREPACK_VERSION} && corepack enable


WORKDIR /app
Expand All @@ -114,15 +118,15 @@ RUN chown nextjs:nodejs .next

USER nextjs

COPY --from=app-installer --chown=nextjs:nodejs /app/examples/apps/nextjs-app/next.config.mjs \
COPY --from=builder --chown=nextjs:nodejs /app/examples/apps/nextjs-app/next.config.mjs \
/app/examples/apps/nextjs-app/package.json \
./

# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=app-installer --chown=nextjs:nodejs /app/examples/apps/nextjs-app/.next/standalone ./
COPY --from=app-installer --chown=nextjs:nodejs /app/examples/apps/nextjs-app/.next/static ./examples/apps/nextjs-app/.next/static
COPY --from=app-installer --chown=nextjs:nodejs /app/examples/apps/nextjs-app/public ./examples/apps/nextjs-app/public
COPY --from=builder --chown=nextjs:nodejs /app/examples/apps/nextjs-app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/examples/apps/nextjs-app/.next/static ./examples/apps/nextjs-app/.next/static
COPY --from=builder --chown=nextjs:nodejs /app/examples/apps/nextjs-app/public ./examples/apps/nextjs-app/public

EXPOSE ${PORT}

Expand Down
17 changes: 9 additions & 8 deletions examples/apps/nextjs-app/docker/Dockerfile.alpine
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ ARG ALPINE_VERSION=3.23

FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS app-builder

# gcompat is required for duckdb neo to work
RUN apk add --no-cache git jq && corepack enable
# You might want to add gcompat for duckdb neo to work
RUN apk add --no-cache git jq && rm -rf /var/cache/apk/* && npm i -g corepack && corepack enable
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

For official Node.js 24 Alpine Docker images, what is the recommended deterministic approach for Corepack (bundled vs npm-installed), and which Corepack versions are compatible with Node 24?

💡 Result:

For official Node.js 24 Alpine Docker images, the bundled Corepack (included with Node.js 24) is the recommended deterministic approach. Run corepack enable to activate the shims for yarn and pnpm. This uses Corepack's predefined "Known Good Releases" for package managers, ensuring consistent versions across builds without network fetches after initial enablement (use corepack prepare for offline determinism). npm-installing Corepack (@latest, e.g., v0.34.6 as of 2026-01) is not recommended for determinism, as it may introduce version drift and requires extra layers/security considerations; the bundled version matches Node 24 exactly. All Corepack versions compatible with Node >=16.9.0 / >=14.19.0 work with Node 24, but use the bundled one matching Node 24's build.

Citations:


🏁 Script executed:

cat -n examples/apps/nextjs-app/docker/Dockerfile.alpine | head -100

Repository: belgattitude/flowblade

Length of output: 4074


Use bundled Corepack and remove npm-install from runtime stage.

Line 11 and Line 93 install Corepack via npm without version pinning, which makes builds non-deterministic. However, the correct fix is to rely on the bundled Corepack in Node.js 24 Alpine images instead of npm-installing it. Simply use corepack enable without the npm i -g corepack command—the bundled version is deterministic by design and matches the Node version exactly. Additionally, remove Corepack entirely from line 93 (runner stage) since the runtime stage doesn't execute package-manager commands.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/Dockerfile.alpine` at line 11, The Dockerfile
runtime stage installs Corepack via "npm i -g corepack" (seen in the RUN that
also runs "corepack enable"), which is unnecessary and non-deterministic; remove
the "npm i -g corepack" invocation and just run "corepack enable" (relying on
the Node 24 Alpine bundled Corepack), and also remove any Corepack
installation/enablement in the runner stage (the install at line 93) since the
runtime/runner stages don't need to install package managers.


WORKDIR /app

COPY --link package.json turbo.json ./
COPY --link package.json turbo.jsonc ./

# We can't run turbo without yarn install first, let's install locally and make sure
# both local and docker are aligned on the package.json version.
Expand All @@ -39,7 +39,7 @@ ENV NEXT_BUILD_ENV_OUTPUT=standalone
# ENV NEXT_BUILD_ENV_SENTRY_ENABLED=false
# ENV NEXT_BUILD_ENV_SENTRY_TRACING=false

ENV TZ=Europe/Brussels
ENV TZ=Etc/UTC

# Optimize for YARN installation speed
ENV YARN_ENABLE_GLOBAL_CACHE=false
Expand Down Expand Up @@ -70,8 +70,8 @@ RUN yarn install --inline-builds
# yarn install --inline-builds

# Build the project
COPY --from=app-builder /app/out/nextjs-app/full/ .
COPY --link .gitignore turbo.json tsconfig.base.json ./
COPY --link --from=app-builder /app/out/nextjs-app/full/ .
COPY --link .gitignore turbo.jsonc tsconfig.base.json ./

RUN yarn workspace @examples/db-sqlserver prisma-generate
RUN yarn turbo run build --filter=@examples/nextjs-app...
Expand All @@ -87,9 +87,10 @@ ARG NEXTJS_APP_PORT
# Bort PORT / HOSTNAME envs are respected by nextjs start/dev.
ENV HOSTNAME=0.0.0.0
ENV PORT=${NEXTJS_APP_PORT:-3000}
ENV TZ=Europe/Brussels

RUN apk add --no-cache tzdata bash && corepack enable
ENV TZ=Etc/UTC

RUN apk add --no-cache tzdata && rm -rf /var/cache/apk/* && npm i -g corepack && corepack enable
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Unnecessary corepack install in runner stage

The runner stage installs and enables corepack (npm i -g corepack && corepack enable), but corepack is a package manager bootstrapper — it is only needed during dependency installation and build, not when running the final standalone Next.js output. The Debian Dockerfile correctly omits this in its runner stage (the equivalent line is commented out there).

This adds unnecessary layer weight and inconsistency between the two Dockerfiles. Consider aligning with the Debian runner:

Suggested change
RUN apk add --no-cache tzdata && rm -rf /var/cache/apk/* && npm i -g corepack && corepack enable
RUN apk add --no-cache tzdata && rm -rf /var/cache/apk/*


WORKDIR /app

Expand Down
15 changes: 9 additions & 6 deletions examples/apps/nextjs-app/docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

### Requirements

- [x] [docker-engine](https://docs.docker.com/get-docker) >= 23 and [buildkit](https://docs.docker.com/build/buildkit/).
- [x] docker compose v2: [repo](https://github.com/docker/compose) - [docs](https://docs.docker.com/compose/)
- [x] optional: [lazydocker](https://github.com/jesseduffield/lazydocker), a beautiful tui.
- [x] optional: [dive](https://github.com/wagoodman/dive) to debug layer sizes.
Expand All @@ -11,9 +10,13 @@

```bash
cd ./docker
docker compose build
docker compose build --progress=plain # More verbose
docker compose build --parallel # Might be faster
docker buildx bake --file docker-compose.yml

# Alternatives
# docker compose build
# docker compose build --progress=plain # More verbose
# docker compose build --parallel # Might be faster

docker compose up
docker compose down
```
Expand All @@ -23,15 +26,15 @@ docker compose down
#### Run bash in container

```bash
docker compose run nextjs-app bash
docker compose run nextjs-app bash
# equivalent to
docker run --rm -it --entrypoint bash flowblade-nextjs-app-nextjs-app
Comment on lines +29 to 31
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Align the “equivalent” image name with the new exported image tag.

Line 31 still references the old image naming, while Line 37 now uses flowblade-example-nextjs-app. This makes the “equivalent to” command misleading.

🛠️ Suggested doc fix
-docker run --rm -it --entrypoint bash flowblade-nextjs-app-nextjs-app
+docker run --rm -it --entrypoint bash flowblade-example-nextjs-app

Also applies to: 37-37

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/README.md` around lines 29 - 31, Update the
"equivalent to" docker run command so the image name matches the new exported
tag: replace the old image name "flowblade-nextjs-app-nextjs-app" with
"flowblade-example-nextjs-app" in the line that reads "docker run --rm -it
--entrypoint bash flowblade-nextjs-app-nextjs-app" (also update the other
occurrence that still references the old name) so the example aligns with the
"docker compose run nextjs-app bash" and the later mention of
"flowblade-example-nextjs-app".

```

#### Get the exported size

```bash
export IMAGE=flowblade-nextjs-app
export IMAGE=flowblade-example-nextjs-app-debian

# Inspect the image
docker image inspect ${IMAGE}
Expand Down
17 changes: 17 additions & 0 deletions examples/apps/nextjs-app/docker/docker-compose.alpine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: flowblade-example-nextjs
services:
app-alpine:
build:
# Start from root of the monorepo
context: ../../../../
dockerfile: ./examples/apps/nextjs-app/docker/Dockerfile.alpine
restart: no
networks:
- flowblade-net
ports:
- 3000:3000

networks:
flowblade-net:
driver: bridge
enable_ipv6: false
4 changes: 2 additions & 2 deletions examples/apps/nextjs-app/docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: flowblade-nextjs-app
name: flowblade-example-nextjs
services:
nextjs-app:
app-debian:
Comment on lines +1 to +3
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update Docker README examples to match renamed service/project.

The compose rename to flowblade-example-nextjs / app-debian should be reflected in examples/apps/nextjs-app/docker/README.md commands to prevent broken copy-paste usage.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/docker-compose.yml` around lines 1 - 3, The
README's Docker commands still reference the old project/service names; update
the examples in the README to use the new compose project name
"flowblade-example-nextjs" and service name "app-debian" so copy-paste commands
(docker-compose up/down, exec, logs, etc.) match the docker-compose.yml. Search
for occurrences of the old names in the README and replace them with
"flowblade-example-nextjs" for the compose project and "app-debian" for the
service in all command examples.

build:
# Start from root of the monorepo
context: ../../../../
Expand Down
24 changes: 13 additions & 11 deletions examples/apps/nextjs-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,12 @@
"lint": "next typegen && eslint . --ext .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts --cache --cache-location ../../../.cache/eslint/nextjs-app.eslintcache",
"fix-staged": "lint-staged --allow-empty",
"codegen": "run-s codegen-api",
"codegen-api": "tsx ./scripts/codegen-openapi-json-schema.ts && kubb generate"
"codegen-api": "tsx ./scripts/codegen-openapi-json-schema.ts && kubb generate",
"docker-build": "cd docker && docker buildx bake --file ./docker-compose.yml",
"docker-build-alpine": "cd docker && docker buildx bake --file ./docker-compose.alpine.yml"
},
"dependencies": {
"@duckdb/duckdb-wasm": "1.31.0",
"@duckdb/duckdb-wasm": "1.33.1-dev20.0",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Confirm declared version
rg -n "\"@duckdb/duckdb-wasm\"" examples/apps/nextjs-app/package.json -C1

# Inspect DuckDB WASM API touchpoints that are sensitive to SDK changes
rg -n "from '@duckdb/duckdb-wasm'|AsyncDuckDB|DuckDBConfig|getJsDelivrBundles|selectBundle|instantiate\\(|AsyncDuckDBConnection|\\.connect\\(|\\.query\\(" \
  examples/apps/nextjs-app/src -C2

Repository: belgattitude/flowblade

Length of output: 8440


🌐 Web query:

What are the documented breaking or behavioral changes between @duckdb/duckdb-wasm 1.31.0 and 1.33.1-dev20.0?

💡 Result:

No documented breaking or behavioral changes specific to @duckdb/duckdb-wasm between versions 1.31.0 and 1.33.1-dev20.0 were found in official release notes or changelogs. The duckdb-wasm releases (1.31.0 based on DuckDB v1.4.0, 1.32.0, 1.33.0 with no differences from 1.32.0) provide minimal details, primarily noting underlying DuckDB core updates and minor fixes without explicit breaking changes for WASM. Behavioral changes, if any, would stem from DuckDB core updates (e.g., v1.4.0 to v1.5.0), but no WASM-specific behavioral shifts are documented. Check the GitHub repo diffs for v1.31.0...1.33.1-dev20.0 or DuckDB core release notes for potential indirect impacts.

Citations:


Prefer stable releases over prerelease versions for runtime dependencies with direct API usage.

Line 42 upgrades to @duckdb/duckdb-wasm@1.33.1-dev20.0 (dev prerelease). The app has direct API usage in duckdb-wasm-init.ts and duck-wasm-test-panel.tsx, including AsyncDuckDB instantiation, bundle selection, and query execution. While no documented breaking changes between 1.31.0 and 1.33.1-dev20.0 were found, prerelease versions can introduce undocumented changes. Either validate compatibility with this version explicitly or switch to a stable release.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/package.json` at line 42, The dependency
`@duckdb/duckdb-wasm` is pinned to a dev prerelease (1.33.1-dev20.0); update
package.json to use a stable release (e.g., the latest 1.33.x stable or revert
to 1.31.0) or explicitly validate compatibility with the prerelease by running
and confirming the duckdb-wasm-init.ts and duck-wasm-test-panel.tsx flows
(AsyncDuckDB instantiation, bundle selection, and query execution) still behave
correctly; if you keep the prerelease, add a clear comment in package.json
explaining why and include tests that exercise AsyncDuckDB creation, bundle
selection logic, and basic query execution to catch any breaking changes.

"@duckdb/node-api": "1.5.0-r.1",
"@examples/base-auth": "workspace:^",
"@examples/base-ui": "workspace:^",
Expand All @@ -52,19 +54,19 @@
"@hono/node-server": "1.19.11",
"@hono/standard-validator": "0.2.2",
"@httpx/assert": "0.16.8",
"@httpx/compress": "0.3.11",
"@httpx/compress": "0.3.12",
"@httpx/dsn-parser": "1.9.9",
"@httpx/encode": "0.1.8",
"@httpx/exception": "3.1.9",
"@httpx/hash": "0.2.5",
"@httpx/jwt-verify": "0.2.1",
"@httpx/lru": "0.13.1",
"@httpx/md5": "1.0.2",
"@httpx/jwt-verify": "0.2.2",
"@httpx/lru": "0.13.2",
"@httpx/md5": "1.0.3",
"@httpx/memo-intl": "1.4.10",
"@httpx/plain-object": "2.1.8",
"@httpx/stable-hash": "0.3.8",
"@httpx/treeu": "0.5.8",
"@httpx/xcache": "0.4.12",
"@httpx/xcache": "0.5.0",
"@logtape/logtape": "2.0.4",
"@logtape/otel": "2.0.4",
"@logtape/pretty": "2.0.4",
Expand Down Expand Up @@ -99,7 +101,7 @@
"class-variance-authority": "0.7.1",
"clsx": "2.1.1",
"hast-util-to-jsx-runtime": "2.3.6",
"hono": "4.12.8",
"hono": "4.12.9",
"hono-openapi": "1.3.0",
"json-schema-walker": "3.2.0",
"ky": "1.14.3",
Expand Down Expand Up @@ -153,8 +155,8 @@
"@typescript/native-preview": "catalog:",
"@valibot/to-json-schema": "1.6.0",
"@vitejs/plugin-react": "6.0.1",
"@vitest/coverage-v8": "4.1.0",
"@vitest/ui": "4.1.0",
"@vitest/coverage-v8": "4.1.1",
"@vitest/ui": "4.1.1",
"cross-env": "10.1.0",
"eslint": "8.57.1",
"happy-dom": "20.8.4",
Expand All @@ -168,7 +170,7 @@
"tsx": "4.21.0",
"tw-animate-css": "1.4.0",
"typescript": "5.9.3",
"vitest": "4.1.0"
"vitest": "4.1.1"
},
"engines": {
"node": ">=20.19.0"
Expand Down
Loading
Loading