From 020af7f15fc738c125a7993518ac6f5db40867f7 Mon Sep 17 00:00:00 2001 From: Dejan Zdravkovic Date: Mon, 30 Dec 2024 04:03:36 +0100 Subject: [PATCH] production ready docker --- README.md | 46 +++--- backend/spring-boot/Dockerfile | 14 +- ...compose.yml => docker-compose-api-dev.yml} | 11 +- ...mpose-db.yml => docker-compose-db-dev.yml} | 0 .../api/shared/config/DataInit.java | 2 +- .../src/main/resources/application.properties | 4 +- docker-compose.yml | 19 ++- frontend/svelte-kit/Dockerfile | 28 ++-- frontend/svelte-kit/package.json | 1 + frontend/svelte-kit/pnpm-lock.yaml | 131 +++++++++++++++++- frontend/svelte-kit/svelte.config.js | 2 +- 11 files changed, 199 insertions(+), 59 deletions(-) rename backend/spring-boot/{docker-compose.yml => docker-compose-api-dev.yml} (89%) rename backend/spring-boot/{docker-compose-db.yml => docker-compose-db-dev.yml} (100%) diff --git a/README.md b/README.md index cf7d337f..4e35468c 100644 --- a/README.md +++ b/README.md @@ -27,26 +27,26 @@ Login credentials: ### Environment variables -| Variable | Description | Default | -| ------------------------ | --------------------------------------------------------------------- | -------------------------------- | -| APP_NAME | Name of the app that will be used in the application | BootstrapBugZ | -| UI_URL | URL on which UI is running | http://bootstrapbugz-ui:5173 | -| UI_PORT | Port on which you'll find UI running | 5173 | -| API_URL | URL on which API is running | http://bootstrapbugz-api:8080/v1 | -| SERVER_PORT | Port on which you'll find API running | 8080 | -| POSTGRES_HOST | Host on which postgres is running, used when locally starting the API | localhost | -| POSTGRES_PORT | Port on which you'll find postgres running | 5432 | -| POSTGRES_DATABASE | Name of the postgres database | bootstrapbugz | -| POSTGRES_USERNAME | Postgres username | postgres | -| POSTGRES_PASSWORD | Postgres password | root | -| REDIS_HOST | Host on which redis is running, used when locally starting the API | 127.0.0.1 | -| REDIS_PORT | Port on which you'll find redis running | 6379 | -| REDIS_DATABASE | Name of the redis database | 0 | -| REDIS_PASSWORD | Redis password | root | -| MAIL_HOST | SMTP host | smtp.mailgun.org | -| MAIL_PORT | SMTP port | 587 | -| MAIL_USERNAME | SMTP username | username | -| MAIL_PASSWORD | SMTP password | password | -| JWT_SECRET | Secret used to sign jwt | secret | -| SPRING_SECURITY_PASSWORD | Password used for auto-generated users | qwerty123 | -| HTTP_PROTOCOL | http protocol | http | +| Variable | Description | Default | +| ------------------------ | --------------------------------------------------------------------------------------------------------- | ---------------- | +| APP_NAME | Name of the app that will be used in the application | BootstrapBugZ | +| HTTP_PROTOCOL | HTTP protocol | http | +| UI_HOST | UI Host | localhost | +| UI_PORT | Port on which you'll find UI running | 5173 | +| API_PORT | Port on which you'll find API running | 8080 | +| POSTGRES_HOST | **Used only to override application.properties when starting locally.** Host on which postgres is running | localhost | +| POSTGRES_PORT | Port on which you'll find postgres running | 5432 | +| POSTGRES_DATABASE | Name of the postgres database | bootstrapbugz | +| POSTGRES_USERNAME | Postgres username | postgres | +| POSTGRES_PASSWORD | Postgres password | root | +| REDIS_HOST | **Used only to override application.properties when starting locally.** Host on which redis is running | localhost | +| REDIS_PORT | Port on which you'll find redis running | 6379 | +| REDIS_DATABASE | Name of the redis database | 0 | +| REDIS_PASSWORD | Redis password | root | +| MAIL_HOST | SMTP host | smtp.mailgun.org | +| MAIL_PORT | SMTP port | 587 | +| MAIL_USERNAME | SMTP username | username | +| MAIL_PASSWORD | SMTP password | password | +| JWT_SECRET | Secret used to sign jwt | secret | +| SPRING_SECURITY_PASSWORD | Password used for auto-generated users | qwerty123 | + diff --git a/backend/spring-boot/Dockerfile b/backend/spring-boot/Dockerfile index b38eb47b..d21750f6 100644 --- a/backend/spring-boot/Dockerfile +++ b/backend/spring-boot/Dockerfile @@ -1,21 +1,19 @@ FROM maven:3.9.6-amazoncorretto-21-debian AS build - RUN apt-get update; apt-get install -y curl \ && curl -sL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs \ && curl -L https://www.npmjs.com/install.sh | sh - WORKDIR /app - COPY pom.xml . COPY src ./src - RUN mvn clean install -DskipTests -FROM openjdk:21-jdk - +FROM openjdk:21-jdk AS dev WORKDIR /app - COPY --from=build /app/target/*.jar bootstrapbugz-api.jar - ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "bootstrapbugz-api.jar"] + +FROM openjdk:21-jdk AS prod +WORKDIR /app +COPY --from=build /app/target/*.jar bootstrapbugz-api.jar +ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "bootstrapbugz-api.jar"] diff --git a/backend/spring-boot/docker-compose.yml b/backend/spring-boot/docker-compose-api-dev.yml similarity index 89% rename from backend/spring-boot/docker-compose.yml rename to backend/spring-boot/docker-compose-api-dev.yml index 1e454e09..143b51c8 100644 --- a/backend/spring-boot/docker-compose.yml +++ b/backend/spring-boot/docker-compose-api-dev.yml @@ -2,13 +2,14 @@ services: bootstrapbugz-api: container_name: bootstrapbugz-api image: bootstrapbugz-api:1.0.0 - build: . + build: + target: ${PROFILE:-dev} ports: - - "${SERVER_PORT:-8080}:${SERVER_PORT:-8080}" + - "${API_PORT:-8080}:${API_PORT:-8080}" environment: APP_NAME: ${APP_NAME:-BootstrapBugZ} - SERVER_PORT: ${SERVER_PORT:-8080} - UI_URL: ${UI_URL:-http://localhost:5173} + API_PORT: ${API_PORT:-8080} + UI_URL: ${HTTP_PROTOCOL:-http}://${UI_HOST:-localhost}:${UI_PORT:-5173} SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:${POSTGRES_PORT:-5432}/${POSTGRES_DATABASE:-bootstrapbugz} SPRING_DATASOURCE_USERNAME: ${POSTGRES_USERNAME:-postgres} SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD:-root} @@ -31,7 +32,7 @@ services: "CMD", "curl", "-f", - "${HTTP_PROTOCOL:-http}://localhost:${SERVER_PORT:-8080}/actuator/health", + "${HTTP_PROTOCOL:-http}://localhost:${API_PORT:-8080}/actuator/health", ] start_period: 10s interval: 30s diff --git a/backend/spring-boot/docker-compose-db.yml b/backend/spring-boot/docker-compose-db-dev.yml similarity index 100% rename from backend/spring-boot/docker-compose-db.yml rename to backend/spring-boot/docker-compose-db-dev.yml diff --git a/backend/spring-boot/src/main/java/org/bootstrapbugz/api/shared/config/DataInit.java b/backend/spring-boot/src/main/java/org/bootstrapbugz/api/shared/config/DataInit.java index 3ff8a4c0..b38807de 100644 --- a/backend/spring-boot/src/main/java/org/bootstrapbugz/api/shared/config/DataInit.java +++ b/backend/spring-boot/src/main/java/org/bootstrapbugz/api/shared/config/DataInit.java @@ -17,7 +17,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; -@Profile({"dev", "test"}) +@Profile({"dev", "prod", "test"}) @Component public class DataInit implements ApplicationRunner { private final UserRepository userRepository; diff --git a/backend/spring-boot/src/main/resources/application.properties b/backend/spring-boot/src/main/resources/application.properties index eb52609e..c49a1c65 100644 --- a/backend/spring-boot/src/main/resources/application.properties +++ b/backend/spring-boot/src/main/resources/application.properties @@ -1,6 +1,6 @@ # app app.name=${APP_NAME:BootstrapBugZ} -server.port=${SERVER_PORT:8080} +server.port=${API_PORT:8080} ui.url=${UI_URL:http://localhost:5173} # database spring.sql.init.platform=postgres @@ -17,7 +17,7 @@ spring.data.web.pageable.default-page-size=10 #logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE # redis spring.data.redis.database=${REDIS_DATABASE:0} -spring.data.redis.host=${REDIS_HOST:127.0.0.1} +spring.data.redis.host=${REDIS_HOST:localhost} spring.data.redis.port=${REDIS_PORT:6379} spring.data.redis.password=${REDIS_PASSWORD:root} spring.data.redis.timeout=60 diff --git a/docker-compose.yml b/docker-compose.yml index d9a02f95..85f845dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,12 +5,13 @@ services: build: context: ./backend/spring-boot dockerfile: Dockerfile + target: ${PROFILE:-prod} ports: - - "${SERVER_PORT:-8080}:${SERVER_PORT:-8080}" + - "${API_PORT:-8080}:${API_PORT:-8080}" environment: APP_NAME: ${APP_NAME:-BootstrapBugZ} - SERVER_PORT: ${SERVER_PORT:-8080} - UI_URL: ${UI_URL:-http://bootstrapbugz-ui:5173} + API_PORT: ${API_PORT:-8080} + UI_URL: ${HTTP_PROTOCOL:-http}://${UI_HOST:-localhost}:${UI_PORT:-5173} SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:${POSTGRES_PORT:-5432}/${POSTGRES_DATABASE:-bootstrapbugz} SPRING_DATASOURCE_USERNAME: ${POSTGRES_USERNAME:-postgres} SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD:-root} @@ -33,7 +34,7 @@ services: "CMD", "curl", "-f", - "${HTTP_PROTOCOL:-http}://localhost:${SERVER_PORT:-8080}/actuator/health", + "${HTTP_PROTOCOL:-http}://localhost:${API_PORT:-8080}/actuator/health", ] start_period: 10s interval: 30s @@ -95,10 +96,14 @@ services: build: context: ./frontend/svelte-kit dockerfile: Dockerfile + args: + PUBLIC_APP_NAME: ${APP_NAME:-BootstrapBugZ} + PUBLIC_API_URL: ${HTTP_PROTOCOL:-http}://bootstrapbugz-api:${API_PORT:-8080}/v1 + JWT_SECRET: ${JWT_SECRET:-secret} + target: ${PROFILE:-prod} environment: - PUBLIC_APP_NAME: ${APP_NAME:-BootstrapBugZ} - PUBLIC_API_URL: ${API_URL:-http://bootstrapbugz-api:8080/v1} - JWT_SECRET: ${JWT_SECRET:-secret} + PORT: ${UI_PORT:-5173} + ORIGIN: ${HTTP_PROTOCOL:-http}://${UI_HOST:-localhost}:${UI_PORT:-5173} ports: - "${UI_PORT:-5173}:${UI_PORT:-5173}" depends_on: diff --git a/frontend/svelte-kit/Dockerfile b/frontend/svelte-kit/Dockerfile index 0e969310..e9c3897f 100644 --- a/frontend/svelte-kit/Dockerfile +++ b/frontend/svelte-kit/Dockerfile @@ -1,17 +1,29 @@ -FROM node:20-alpine - -RUN apk add --no-cache curl - +FROM node:22-alpine AS base WORKDIR /app - +ARG PUBLIC_APP_NAME +ARG PUBLIC_API_URL +ARG JWT_SECRET COPY package.json . COPY pnpm-lock.yaml . - RUN npm install -g pnpm RUN pnpm install - COPY . . +FROM base AS dev +RUN apk add --no-cache curl +CMD ["pnpm", "run", "dev", "--host"] + +FROM base AS build RUN pnpm run build +RUN pnpm prune --prod -CMD ["pnpm", "run", "dev", "--host"] \ No newline at end of file +FROM node:22-alpine AS prod +RUN apk add --no-cache curl +WORKDIR /app +# copy node_modules only if you have dependencies in package.json +# if you only have devDependencies you can skip this line +# COPY --from=build /app/node_modules node_modules/ +COPY --from=build /app/build build/ +COPY --from=build /app/package.json . +ENV NODE_ENV=production +CMD ["node", "build"] diff --git a/frontend/svelte-kit/package.json b/frontend/svelte-kit/package.json index 46998531..64762f8b 100644 --- a/frontend/svelte-kit/package.json +++ b/frontend/svelte-kit/package.json @@ -22,6 +22,7 @@ "@inlang/paraglide-sveltekit": "0.15.0", "@playwright/test": "1.49.1", "@sveltejs/adapter-auto": "3.3.1", + "@sveltejs/adapter-node": "5.2.11", "@sveltejs/kit": "2.13.0", "@sveltejs/vite-plugin-svelte": "5.0.3", "@types/eslint": "9.6.1", diff --git a/frontend/svelte-kit/pnpm-lock.yaml b/frontend/svelte-kit/pnpm-lock.yaml index 0e5b7150..ae45aaa7 100644 --- a/frontend/svelte-kit/pnpm-lock.yaml +++ b/frontend/svelte-kit/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@sveltejs/adapter-auto': specifier: 3.3.1 version: 3.3.1(@sveltejs/kit@2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1))) + '@sveltejs/adapter-node': + specifier: 5.2.11 + version: 5.2.11(@sveltejs/kit@2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1))) '@sveltejs/kit': specifier: 2.13.0 version: 2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)) @@ -82,7 +85,7 @@ importers: version: 5.15.0 svelte-check: specifier: 4.1.1 - version: 4.1.1(svelte@5.15.0)(typescript@5.7.2) + version: 4.1.1(picomatch@4.0.2)(svelte@5.15.0)(typescript@5.7.2) svelte-sonner: specifier: 0.3.28 version: 0.3.28(svelte@5.15.0) @@ -879,6 +882,42 @@ packages: resolution: {integrity: sha512-ct43jurbe7lsUX5eIrj4ijO3j/6zIPp7CDnFWXDs7UPAbw1Pu1iH3oAmFdP4jcskKJBURH5M9oTtyeiUXyHX8Q==} engines: {node: '>=18.16.0'} + '@rollup/plugin-commonjs@28.0.2': + resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@16.0.0': + resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.29.1': resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} cpu: [arm] @@ -994,6 +1033,11 @@ packages: peerDependencies: '@sveltejs/kit': ^2.0.0 + '@sveltejs/adapter-node@5.2.11': + resolution: {integrity: sha512-lR7/dfUaKFf3aI408KRDy/BVDYoqUws7zNOJz2Hl4JoshlTnMgdha3brXBRFXB+cWtYvJjjPhvmq3xqpbioi4w==} + peerDependencies: + '@sveltejs/kit': ^2.4.0 + '@sveltejs/kit@2.13.0': resolution: {integrity: sha512-6t6ne00vZx/TjD6s0Jvwt8wRLKBwbSAN1nhlOzcLUSTYX1hTp4eCBaTPB5Yz/lu+tYcvz4YPEEuPv3yfsNp2gw==} engines: {node: '>=18.13'} @@ -1045,6 +1089,9 @@ packages: '@types/node@22.10.2': resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/validator@13.12.2': resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} @@ -1353,6 +1400,9 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -1559,6 +1609,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -1747,10 +1800,16 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -2014,6 +2073,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -3370,6 +3433,42 @@ snapshots: '@poppinss/macroable@1.0.4': optional: true + '@rollup/plugin-commonjs@28.0.2(rollup@4.29.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.4.2(picomatch@4.0.2) + is-reference: 1.2.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.29.1 + + '@rollup/plugin-json@6.1.0(rollup@4.29.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + optionalDependencies: + rollup: 4.29.1 + + '@rollup/plugin-node-resolve@16.0.0(rollup@4.29.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.10 + optionalDependencies: + rollup: 4.29.1 + + '@rollup/pluginutils@5.1.4(rollup@4.29.1)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.29.1 + '@rollup/rollup-android-arm-eabi@4.29.1': optional: true @@ -3448,6 +3547,14 @@ snapshots: '@sveltejs/kit': 2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)) import-meta-resolve: 4.1.0 + '@sveltejs/adapter-node@5.2.11(@sveltejs/kit@2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))': + dependencies: + '@rollup/plugin-commonjs': 28.0.2(rollup@4.29.1) + '@rollup/plugin-json': 6.1.0(rollup@4.29.1) + '@rollup/plugin-node-resolve': 16.0.0(rollup@4.29.1) + '@sveltejs/kit': 2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)) + rollup: 4.29.1 + '@sveltejs/kit@2.13.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)))(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1))': dependencies: '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.15.0)(vite@6.0.5(@types/node@22.10.2)(jiti@1.21.7)(yaml@2.6.1)) @@ -3515,6 +3622,8 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/resolve@1.20.2': {} + '@types/validator@13.12.2': optional: true @@ -3859,6 +3968,8 @@ snapshots: commander@4.1.1: {} + commondir@1.0.1: {} + concat-map@0.0.1: {} consola@3.2.3: {} @@ -4129,6 +4240,8 @@ snapshots: estraverse@5.3.0: {} + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.6 @@ -4160,7 +4273,9 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.4.2: {} + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 file-entry-cache@8.0.0: dependencies: @@ -4281,8 +4396,14 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-module@1.0.0: {} + is-number@7.0.0: {} + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.6 + is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 @@ -4525,6 +4646,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.2: {} + pify@2.3.0: {} pify@5.0.0: {} @@ -4779,11 +4902,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.1.1(svelte@5.15.0)(typescript@5.7.2): + svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.15.0)(typescript@5.7.2): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 - fdir: 6.4.2 + fdir: 6.4.2(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 svelte: 5.15.0 diff --git a/frontend/svelte-kit/svelte.config.js b/frontend/svelte-kit/svelte.config.js index 44ab6551..76087934 100644 --- a/frontend/svelte-kit/svelte.config.js +++ b/frontend/svelte-kit/svelte.config.js @@ -1,4 +1,4 @@ -import adapter from '@sveltejs/adapter-auto'; +import adapter from '@sveltejs/adapter-node'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */