Compare commits

...

37 commits

Author SHA1 Message Date
Augusto Dwenger J. 624d0b4f80 misc: Add missing restart policies
Some checks failed
ci/woodpecker/push/java/1 Pipeline is pending
ci/woodpecker/push/java/2 Pipeline is pending
ci/woodpecker/push/java/3 Pipeline is pending
ci/woodpecker/push/java/4 Pipeline is pending
ci/woodpecker/push/nodejs Pipeline is pending
ci/woodpecker/push/oci-image-build/1 unknown status
ci/woodpecker/push/oci-image-build/2 unknown status
ci/woodpecker/push/oci-image-build/3 unknown status
ci/woodpecker/push/oci-image-build/4 unknown status
ci/woodpecker/push/oci-image-build/5 unknown status
ci/woodpecker/push/oci-image-build/6 unknown status
ci/woodpecker/push/oci-image-build/7 unknown status
ci/woodpecker/push/oci-image-build/8 unknown status
2023-12-08 20:17:35 +01:00
Augusto Dwenger J. 03693b0e20 web: Make api request debug log configurable through env var 2023-12-08 20:16:04 +01:00
Augusto Dwenger J. b49018abfc ui: Fix title in browser tab 2023-12-08 20:07:24 +01:00
Augusto Dwenger J. 8e66e0cbad build: Fix caddy config 2023-12-08 20:06:28 +01:00
Augusto Dwenger J. 297196fef6 misc: Fix ui container not being assinged an Ip 2023-12-08 20:05:17 +01:00
Augusto Dwenger J. 8e38a944de misc: Fix port mapping 2023-12-08 19:35:59 +01:00
Augusto Dwenger J. 4ce49cb68f ci: Add build steps for the ui before building the oci image
All checks were successful
ci/woodpecker/manual/java/1 Pipeline was successful
ci/woodpecker/manual/java/2 Pipeline was successful
ci/woodpecker/manual/java/3 Pipeline was successful
ci/woodpecker/manual/java/4 Pipeline was successful
ci/woodpecker/manual/nodejs Pipeline was successful
ci/woodpecker/manual/oci-image-build/1 Pipeline was successful
ci/woodpecker/manual/oci-image-build/2 Pipeline was successful
ci/woodpecker/manual/oci-image-build/3 Pipeline was successful
ci/woodpecker/manual/oci-image-build/4 Pipeline was successful
ci/woodpecker/manual/oci-image-build/5 Pipeline was successful
ci/woodpecker/manual/oci-image-build/6 Pipeline was successful
ci/woodpecker/manual/oci-image-build/7 Pipeline was successful
ci/woodpecker/manual/oci-image-build/8 Pipeline was successful
2023-12-08 00:08:40 +01:00
Augusto Dwenger J. f0e7038a05 ci: Refactor java steps into one file 2023-12-08 00:03:27 +01:00
Augusto Dwenger J. 97d2c80f85 ci: Add build steps befor oci-image-build steps 2023-12-07 23:45:21 +01:00
Augusto Dwenger J. 09bebecd9f ci: Add compile steps before test steps 2023-12-07 23:42:01 +01:00
Augusto Dwenger J. 3a03657b1c ci: Rename oci image build step file
This is to enable a previous build out side of the container context.
2023-12-07 23:34:37 +01:00
Augusto Dwenger J. e3ba53fa70 misc: Add network isolation between docker compose services 2023-12-07 23:32:21 +01:00
Augusto Dwenger J. 1bb00fcda9 misc: Add config volume for caddy
All checks were successful
ci/woodpecker/manual/test/1 Pipeline was successful
ci/woodpecker/manual/test/2 Pipeline was successful
ci/woodpecker/manual/test/3 Pipeline was successful
ci/woodpecker/manual/test/4 Pipeline was successful
ci/woodpecker/manual/build/1 Pipeline was successful
ci/woodpecker/manual/build/2 Pipeline was successful
ci/woodpecker/manual/build/3 Pipeline was successful
ci/woodpecker/manual/build/4 Pipeline was successful
ci/woodpecker/manual/build/5 Pipeline was successful
ci/woodpecker/manual/build/6 Pipeline was successful
ci/woodpecker/manual/build/7 Pipeline was successful
ci/woodpecker/manual/build/8 Pipeline was successful
Makes the container runnable.
2023-12-07 16:37:28 +01:00
Augusto Dwenger J. beb7d72a9e build: Extend caddy config 2023-12-07 16:36:27 +01:00
Augusto Dwenger J. 1d52665659 ci: Fix woodpecker version 2 platform selection deprecation 2023-12-07 01:30:33 +01:00
Augusto Dwenger J. 9ab413c614 ui: Remove old build script
Some checks failed
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/manual/test/1 Pipeline was successful
ci/woodpecker/manual/test/2 Pipeline was successful
ci/woodpecker/manual/test/3 Pipeline was successful
ci/woodpecker/manual/test/4 Pipeline was successful
ci/woodpecker/manual/build/1 Pipeline was successful
ci/woodpecker/manual/build/2 Pipeline was successful
ci/woodpecker/manual/build/3 Pipeline was successful
ci/woodpecker/manual/build/4 Pipeline was successful
ci/woodpecker/manual/build/5 Pipeline was successful
ci/woodpecker/manual/build/6 Pipeline was successful
ci/woodpecker/manual/build/7 Pipeline was successful
ci/woodpecker/manual/build/8 Pipeline failed
2023-11-23 22:56:17 +01:00
Augusto Dwenger J. 99603fc4fc ui: Remove vs-code configuration
Don't checkin editor specific configs.
2023-11-23 22:55:03 +01:00
Augusto Dwenger J. 9f22c9d6f1 build: Remove old build script 2023-11-23 22:53:35 +01:00
Augusto Dwenger J. e1477673b2 doc: Add minimal section for the UI 2023-11-23 22:50:36 +01:00
Augusto Dwenger J. 3a5763e40f doc: Remove pull instructions
I don't provide public/stable pre build images and you would anyway
need to build it locally for the caddy proxy...
2023-11-23 22:45:16 +01:00
Augusto Dwenger J. ba258cd3a7 ci: Add test step before build
All checks were successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/build Pipeline was successful
The project doesn't include tests but this might hopefully change
in the future.
2023-11-23 22:38:56 +01:00
Augusto Dwenger J. f844b01309 ui: Update package-lock 2023-11-23 22:24:40 +01:00
Augusto Dwenger J. 9e45ef3071 misc: Ignore data directory from local setup 2023-11-23 22:08:35 +01:00
Augusto Dwenger J. ae961c182d misc: Add ui and caddy to the docker-compose setup 2023-11-23 22:05:28 +01:00
Augusto Dwenger J. 5dde21b991 build: Add caddy build for revers proxy between ui and web
Caddy should be later used with the docker-compose setup.
The idea is to have it for local development. In production
you should use a reverse proxy with auth and certificate
managment (https).

I had to update the syntax version to support EOF with cat.
2023-11-23 21:58:05 +01:00
Augusto Dwenger J. 2e20c7e307 ci: Change to create steps for each platform
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This should make debugging an parallelisation easier.
2023-11-23 21:30:31 +01:00
Augusto Dwenger J. 4d1094b003 ci: Add ui target
Some checks failed
ci/woodpecker/push/build Pipeline failed
2023-11-23 21:21:30 +01:00
Augusto Dwenger J. 739c4f5da8 ci: Replace pipeline with steps
Some checks failed
ci/woodpecker/push/build Pipeline failed
Pipeline was an old way to declare steps.
2023-11-23 21:18:51 +01:00
Augusto Dwenger J. 5418f632b6 ci: Update buildx plugin image to 2.2.1
Should fix git issues.
2023-11-23 21:17:44 +01:00
Augusto Dwenger J. c49f1525ec ci: Add build step for none main branch
Only build without pushing if not on main branch.
2023-11-23 21:15:59 +01:00
Augusto Dwenger J. a638778b1d ui: Add Dockerfile target for building the UI 2023-11-23 21:02:05 +01:00
Augusto Dwenger J. aace2a0c95 web: Remove static file serving config 2023-11-23 21:00:20 +01:00
Augusto Dwenger J. ab9d8213ee ui: Move out of the web package 2023-11-23 21:00:20 +01:00
Augusto Dwenger J. 38372e3869 web: Remove NodeJS interaction from Maven
I want to split the build of the web application and the UI into
tow different builds. The plan is to serve the UI though a NGINX
or another static file hosting application.
My original thought was to minimize the setup, but I have more pain
with my setup to build the app than its worth...
2023-11-23 21:00:20 +01:00
Augusto Dwenger J. edad5fd140 misc: Update dependencies to news version 2023-11-23 21:00:20 +01:00
Augusto Dwenger J. 49576a7893 Revert "ci: Remove platfrom runner selection"
This reverts commit 858d871477.
I can only use the amd runner - for the moment I hope.
2023-11-23 21:00:20 +01:00
Augusto Dwenger J. 3c63bf9b27 misc: Update to Java 21 2023-11-23 21:00:19 +01:00
53 changed files with 423 additions and 412 deletions

View file

@ -8,6 +8,7 @@
!web/src/
!web/pom.xml
!pom.xml
web/src/ui/node_modules
web/src/ui/node
web/src/ui/dist
!ui/
ui/node_modules
ui/node
ui/dist

2
.gitignore vendored
View file

@ -126,3 +126,5 @@ fabric.properties
.idea/caches/build_file_checksums.ser
.env
data/

View file

@ -1,24 +0,0 @@
matrix:
TARGET:
- bot
- web
- migration
when:
branch: main
pipeline:
build:
image: woodpeckerci/plugin-docker-buildx:2.2.0
group: build
settings:
registry: rg.fr-par.scw.cloud/hamburghammer
username: nologin
password:
from_secret: docker_token
dockerfile: Dockerfile
target: ${TARGET}
repo: rg.fr-par.scw.cloud/hamburghammer/dchat/${TARGET}
tags: latest
pull_image: false
platforms: linux/amd64,linux/arm64

26
.woodpecker/java.yml Normal file
View file

@ -0,0 +1,26 @@
matrix:
MODULE:
- db
- bot
- web
- migration
variables:
- &image 'docker.io/maven:3.9-eclipse-temurin-21'
steps:
compile:
image: *image
group: compile
commands:
- mvn --batch-mode --no-transfer-progress -pl ${MODULE} -am compile
test:
image: *image
group: test
commands:
- mvn --batch-mode --no-transfer-progress -pl ${MODULE} -am test
build:
image: *image
group: build
commands:
- mvn --batch-mode --no-transfer-progress -Dmaven.test.skip -pl ${MODULE} -am install

7
.woodpecker/nodejs.yml Normal file
View file

@ -0,0 +1,7 @@
steps:
build:
image: docker.io/node:18-alpine
directory: ui
commands:
- npm ci
- npm run build

View file

@ -0,0 +1,52 @@
matrix:
TARGET:
- bot
- web
- migration
- ui
PLATFORM:
- linux/amd64
- linux/arm64
labels:
platform: linux/amd64
depends_on:
- java
- nodejs
steps:
build-only:
image: woodpeckerci/plugin-docker-buildx:2.2.1
group: build
settings:
registry: rg.fr-par.scw.cloud/hamburghammer
username: nologin
password:
from_secret: docker_token
dockerfile: Dockerfile
target: ${TARGET}
repo: rg.fr-par.scw.cloud/hamburghammer/dchat/${TARGET}
tags: latest
pull_image: false
platforms: ${PLATFORM}
dry-run: true
when:
- branch:
exclude: [main]
build:
image: woodpeckerci/plugin-docker-buildx:2.2.1
group: build
settings:
registry: rg.fr-par.scw.cloud/hamburghammer
username: nologin
password:
from_secret: docker_token
dockerfile: Dockerfile
target: ${TARGET}
repo: rg.fr-par.scw.cloud/hamburghammer/dchat/${TARGET}
tags: latest
pull_image: false
platforms: ${PLATFORM}
when:
- branch: main

View file

@ -1,9 +1,9 @@
# syntax=docker/dockerfile:1
# syntax=docker/dockerfile:1.4.0
ARG MAVEN_CLI_OPTS="--batch-mode --no-transfer-progress -Dmaven.test.skip"
# Copy all project files
FROM docker.io/maven:3.9-eclipse-temurin-20 AS setup
FROM docker.io/maven:3.9-eclipse-temurin-21 AS setup
WORKDIR /app
# Copy the dependency specifications
COPY pom.xml .
@ -46,20 +46,50 @@ RUN --mount=type=cache,target=/root/.m2/ \
mvn ${MAVEN_CLI_OPTS} -pl migration package
# Create final web
FROM docker.io/eclipse-temurin:20-jdk-jammy AS web
FROM docker.io/eclipse-temurin:21-jdk-jammy AS web
WORKDIR /app
COPY --from=web-build /app/web/target/web-*-fat.jar /app/web.jar
EXPOSE 8080
CMD ["java", "-jar", "/app/web.jar"]
# Create final migration
FROM docker.io/eclipse-temurin:20-jdk-jammy AS migration
FROM docker.io/eclipse-temurin:21-jdk-jammy AS migration
WORKDIR /app
COPY --from=migration-build /app/migration/target/migration-*-fat.jar /app/migration.jar
CMD ["java", "-jar", "/app/migration.jar"]
# Create final bot
FROM docker.io/eclipse-temurin:20-jdk-jammy AS bot
FROM docker.io/eclipse-temurin:21-jdk-jammy AS bot
WORKDIR /app
COPY --from=bot-build /app/bot/target/bot-*-fat.jar /app/bot.jar
CMD ["java", "-jar", "/app/bot.jar"]
# Build the ui
FROM docker.io/node:18-alpine AS ui-build
WORKDIR /ui
COPY ui/package.json ui/package-lock.json .
RUN npm ci
COPY ui .
RUN npm run build
# Create final ui
FROM docker.io/nginx AS ui
COPY --from=ui-build ui/dist /usr/share/nginx/html
# Create caddy reverse proxy
FROM docker.io/caddy AS caddy
RUN <<EOF cat > /etc/caddy/Caddyfile
{
debug
auto_https off
}
:8080 {
route {
reverse_proxy /api/* web:8080
reverse_proxy ui:80
}
}
EOF
EXPOSE 8080

View file

@ -26,12 +26,6 @@ cd dchat
docker compose build
```
#### Pull the prebuilt images
```shell
docker compose pull
```
### Configure environment
```shell
@ -70,6 +64,11 @@ Invite the bot through the link provided in the container logs.
docker compose logs bot
```
### Permissions
After starting the stack, navigate to [localhost:8081](http://localhost:8081)
and feel free to configure who and how much they can use the bot :)
## LICENSE
The software is licensed under the [MPL-2.0](LICENSE) license.

View file

@ -1,54 +0,0 @@
#!/usr/bin/env bash
AUTHORS="Augusto Dwenger J. <dwenger@posteo.de>"
URL="https://${REPO}"
VENDOR="hamburghammer"
build() {
CREATED=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
REVISION=$(git rev-parse HEAD)
IMAGE_LATEST="${REPO}:latest"
if [ "$PUSH_LATEST" == "1" ]; then
DOCKER_BUILD_ARGS="$DOCKER_BUILD_ARGS --push"
fi
# shellcheck disable=SC2086
docker buildx build \
$DOCKER_BUILD_ARGS \
-t $IMAGE_LATEST \
--file Containerfile \
--platform linux/amd64,linux/arm64 \
--label "org.opencontainers.image.revision=${REVISION}" \
--label "org.opencontainers.image.version=${TAG}" \
--label "org.opencontainers.image.authors=${AUTHORS}" \
--label "org.opencontainers.image.created=${CREATED}" \
--label "org.opencontainers.image.source=${URL}" \
--label "org.opencontainers.image.vendor=${VENDOR}" \
--label "org.opencontainers.image.title=${TITLE}" \
--label "org.opencontainers.image.description=${DESCRIPTION}" \
. || exit $?
}
echo "start building bot"
REPO="git.hhhammer.de/hamburghammer/dchat/bot"
TITLE="dchat-bot"
DESCRIPTION="A Discord bot to chat with ChatGPT from OpenAI"
DOCKER_BUILD_ARGS="--target bot"
build
echo "start building web"
REPO="git.hhhammer.de/hamburghammer/dchat/web"
TITLE="dchat-web"
DESCRIPTION="A web API and UI for the dchat-bot configuration"
DOCKER_BUILD_ARGS="--target web"
build
echo "start building migration"
REPO="git.hhhammer.de/hamburghammer/dchat/migration"
TITLE="dchat-migration"
DESCRIPTION="A migration tool for the dchat database"
DOCKER_BUILD_ARGS="--target migration"
build

View file

@ -10,6 +10,8 @@ services:
context: .
target: bot
restart: unless-stopped
networks:
- db
user: 1000:1000
depends_on:
- db
@ -32,6 +34,9 @@ services:
- migration
ports:
- 8080:8080
networks:
- db
- web
migration:
image: git.hhhammer.de/hamburghammer/dchat/migration:latest
@ -44,6 +49,39 @@ services:
user: 1000:1000
depends_on:
- db
networks:
- db
ui:
image: git.hhhammer.de/hamburghammer/dchat/ui:latest
build:
dockerfile: Dockerfile
context: .
target: ui
restart: unless-stopped
ports:
- 8081:80
networks:
- ui
caddy:
image: git.hhhammer.de/hamburghammer/dchat/caddy:latest
build:
dockerfile: Dockerfile
context: .
target: caddy
restart: unless-stopped
user: 1000:1000
depends_on:
- ui
- web
ports:
- 8082:8080
networks:
- ui
- web
volumes:
- caddy_config:/config
db:
image: docker.io/postgres:15-alpine
@ -52,6 +90,8 @@ services:
restart: unless-stopped
ports:
- 127.0.0.1:5432:5432
networks:
- db
volumes:
- ./data/postgres:/var/lib/postgresql/data:rw
healthcheck:
@ -60,3 +100,11 @@ services:
timeout: 5s
retries: 5
start_period: 60s
volumes:
caddy_config:
networks:
db:
ui:
web:

20
pom.xml
View file

@ -27,10 +27,10 @@
</licenses>
<properties>
<maven.compiler.source>20</maven.compiler.source>
<maven.compiler.target>20</maven.compiler.target>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jackson.version>2.15.1</jackson.version>
<jackson.version>2.16.0</jackson.version>
</properties>
@ -56,30 +56,30 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.7</version>
<version>2.0.9</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.6</version>
<version>1.4.11</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>24.0.1</version>
<version>24.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.0</version>
<version>42.7.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
@ -99,7 +99,7 @@
<dependency>
<groupId>io.javalin</groupId>
<artifactId>javalin</artifactId>
<version>5.5.0</version>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>org.javacord</groupId>
@ -110,7 +110,7 @@
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.20.0</version>
<version>2.22.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>

View file

@ -18,7 +18,7 @@ coverage
/cypress/screenshots/
# Editor directories and files
.vscode/*
.vscode/extensions.json
!.vscode/extensions.json
.idea
*.suo

View file

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vite App</title>
<title>dchat</title>
</head>
<body>
<div id="app"></div>

View file

@ -7,6 +7,7 @@
"": {
"name": "dchat-ui",
"version": "0.0.0",
"license": "MPL-2.0",
"dependencies": {
"daisyui": "^2.51.5",
"vue": "^3.2.47",
@ -37,9 +38,9 @@
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.16.tgz",
"integrity": "sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
"integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
"cpu": [
"arm"
],
@ -53,9 +54,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz",
"integrity": "sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
"integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
"cpu": [
"arm64"
],
@ -69,9 +70,9 @@
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.16.tgz",
"integrity": "sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
"integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
"cpu": [
"x64"
],
@ -85,9 +86,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.16.tgz",
"integrity": "sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
"integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
"cpu": [
"arm64"
],
@ -101,9 +102,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.16.tgz",
"integrity": "sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
"integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
"cpu": [
"x64"
],
@ -117,9 +118,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.16.tgz",
"integrity": "sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
"integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
"cpu": [
"arm64"
],
@ -133,9 +134,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.16.tgz",
"integrity": "sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
"integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
"cpu": [
"x64"
],
@ -149,9 +150,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.16.tgz",
"integrity": "sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
"integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
"cpu": [
"arm"
],
@ -165,9 +166,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.16.tgz",
"integrity": "sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
"integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
"cpu": [
"arm64"
],
@ -181,9 +182,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.16.tgz",
"integrity": "sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
"integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
"cpu": [
"ia32"
],
@ -197,9 +198,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.16.tgz",
"integrity": "sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
"integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
"cpu": [
"loong64"
],
@ -213,9 +214,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.16.tgz",
"integrity": "sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
"integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
"cpu": [
"mips64el"
],
@ -229,9 +230,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.16.tgz",
"integrity": "sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
"integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
"cpu": [
"ppc64"
],
@ -245,9 +246,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.16.tgz",
"integrity": "sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
"integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
"cpu": [
"riscv64"
],
@ -261,9 +262,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.16.tgz",
"integrity": "sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
"integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
"cpu": [
"s390x"
],
@ -277,9 +278,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.16.tgz",
"integrity": "sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
"integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
"cpu": [
"x64"
],
@ -293,9 +294,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.16.tgz",
"integrity": "sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
"integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
"cpu": [
"x64"
],
@ -309,9 +310,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.16.tgz",
"integrity": "sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
"integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
"cpu": [
"x64"
],
@ -325,9 +326,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.16.tgz",
"integrity": "sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
"integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
"cpu": [
"x64"
],
@ -341,9 +342,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.16.tgz",
"integrity": "sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
"integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
"cpu": [
"arm64"
],
@ -357,9 +358,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.16.tgz",
"integrity": "sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
"integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
"cpu": [
"ia32"
],
@ -373,9 +374,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.16.tgz",
"integrity": "sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
"integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
"cpu": [
"x64"
],
@ -1178,9 +1179,9 @@
}
},
"node_modules/esbuild": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.16.tgz",
"integrity": "sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
"dev": true,
"hasInstallScript": true,
"bin": {
@ -1190,28 +1191,28 @@
"node": ">=12"
},
"optionalDependencies": {
"@esbuild/android-arm": "0.17.16",
"@esbuild/android-arm64": "0.17.16",
"@esbuild/android-x64": "0.17.16",
"@esbuild/darwin-arm64": "0.17.16",
"@esbuild/darwin-x64": "0.17.16",
"@esbuild/freebsd-arm64": "0.17.16",
"@esbuild/freebsd-x64": "0.17.16",
"@esbuild/linux-arm": "0.17.16",
"@esbuild/linux-arm64": "0.17.16",
"@esbuild/linux-ia32": "0.17.16",
"@esbuild/linux-loong64": "0.17.16",
"@esbuild/linux-mips64el": "0.17.16",
"@esbuild/linux-ppc64": "0.17.16",
"@esbuild/linux-riscv64": "0.17.16",
"@esbuild/linux-s390x": "0.17.16",
"@esbuild/linux-x64": "0.17.16",
"@esbuild/netbsd-x64": "0.17.16",
"@esbuild/openbsd-x64": "0.17.16",
"@esbuild/sunos-x64": "0.17.16",
"@esbuild/win32-arm64": "0.17.16",
"@esbuild/win32-ia32": "0.17.16",
"@esbuild/win32-x64": "0.17.16"
"@esbuild/android-arm": "0.18.20",
"@esbuild/android-arm64": "0.18.20",
"@esbuild/android-x64": "0.18.20",
"@esbuild/darwin-arm64": "0.18.20",
"@esbuild/darwin-x64": "0.18.20",
"@esbuild/freebsd-arm64": "0.18.20",
"@esbuild/freebsd-x64": "0.18.20",
"@esbuild/linux-arm": "0.18.20",
"@esbuild/linux-arm64": "0.18.20",
"@esbuild/linux-ia32": "0.18.20",
"@esbuild/linux-loong64": "0.18.20",
"@esbuild/linux-mips64el": "0.18.20",
"@esbuild/linux-ppc64": "0.18.20",
"@esbuild/linux-riscv64": "0.18.20",
"@esbuild/linux-s390x": "0.18.20",
"@esbuild/linux-x64": "0.18.20",
"@esbuild/netbsd-x64": "0.18.20",
"@esbuild/openbsd-x64": "0.18.20",
"@esbuild/sunos-x64": "0.18.20",
"@esbuild/win32-arm64": "0.18.20",
"@esbuild/win32-ia32": "0.18.20",
"@esbuild/win32-x64": "0.18.20"
}
},
"node_modules/escalade": {
@ -2159,9 +2160,9 @@
}
},
"node_modules/postcss": {
"version": "8.4.22",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.22.tgz",
"integrity": "sha512-XseknLAfRHzVWjCEtdviapiBtfLdgyzExD50Rg2ePaucEesyh8Wv4VPdW0nbyDa1ydbrAxV19jvMT4+LFmcNUA==",
"version": "8.4.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
"funding": [
{
"type": "opencollective",
@ -2396,9 +2397,9 @@
}
},
"node_modules/rollup": {
"version": "3.20.3",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.3.tgz",
"integrity": "sha512-u6/O1X42CAZ79rbk+smyONJQLTpwFBL7InpRa/AVWia5lq60w5J/PUsVHCOgSolN0X9R2GjQ41fZm3x28Hk1lA==",
"version": "3.29.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
@ -2448,9 +2449,9 @@
}
},
"node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"bin": {
"semver": "bin/semver"
@ -2850,15 +2851,14 @@
}
},
"node_modules/vite": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz",
"integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==",
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz",
"integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==",
"dev": true,
"dependencies": {
"esbuild": "^0.17.5",
"postcss": "^8.4.21",
"resolve": "^1.22.1",
"rollup": "^3.18.0"
"esbuild": "^0.18.10",
"postcss": "^8.4.27",
"rollup": "^3.27.1"
},
"bin": {
"vite": "bin/vite.js"
@ -2866,12 +2866,16 @@
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
},
"peerDependencies": {
"@types/node": ">= 14",
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
"stylus": "*",
"sugarss": "*",
@ -2884,6 +2888,9 @@
"less": {
"optional": true
},
"lightningcss": {
"optional": true
},
"sass": {
"optional": true
},
@ -3019,156 +3026,156 @@
"integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw=="
},
"@esbuild/android-arm": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.16.tgz",
"integrity": "sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
"integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
"dev": true,
"optional": true
},
"@esbuild/android-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz",
"integrity": "sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
"integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
"dev": true,
"optional": true
},
"@esbuild/android-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.16.tgz",
"integrity": "sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
"integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
"dev": true,
"optional": true
},
"@esbuild/darwin-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.16.tgz",
"integrity": "sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
"integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
"dev": true,
"optional": true
},
"@esbuild/darwin-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.16.tgz",
"integrity": "sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
"integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
"dev": true,
"optional": true
},
"@esbuild/freebsd-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.16.tgz",
"integrity": "sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
"integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
"dev": true,
"optional": true
},
"@esbuild/freebsd-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.16.tgz",
"integrity": "sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
"integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
"dev": true,
"optional": true
},
"@esbuild/linux-arm": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.16.tgz",
"integrity": "sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
"integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
"dev": true,
"optional": true
},
"@esbuild/linux-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.16.tgz",
"integrity": "sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
"integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
"dev": true,
"optional": true
},
"@esbuild/linux-ia32": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.16.tgz",
"integrity": "sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
"integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
"dev": true,
"optional": true
},
"@esbuild/linux-loong64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.16.tgz",
"integrity": "sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
"integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
"dev": true,
"optional": true
},
"@esbuild/linux-mips64el": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.16.tgz",
"integrity": "sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
"integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
"dev": true,
"optional": true
},
"@esbuild/linux-ppc64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.16.tgz",
"integrity": "sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
"integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
"dev": true,
"optional": true
},
"@esbuild/linux-riscv64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.16.tgz",
"integrity": "sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
"integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
"dev": true,
"optional": true
},
"@esbuild/linux-s390x": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.16.tgz",
"integrity": "sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
"integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
"dev": true,
"optional": true
},
"@esbuild/linux-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.16.tgz",
"integrity": "sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
"integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
"dev": true,
"optional": true
},
"@esbuild/netbsd-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.16.tgz",
"integrity": "sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
"integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
"dev": true,
"optional": true
},
"@esbuild/openbsd-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.16.tgz",
"integrity": "sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
"integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
"dev": true,
"optional": true
},
"@esbuild/sunos-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.16.tgz",
"integrity": "sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
"integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
"dev": true,
"optional": true
},
"@esbuild/win32-arm64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.16.tgz",
"integrity": "sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
"integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
"dev": true,
"optional": true
},
"@esbuild/win32-ia32": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.16.tgz",
"integrity": "sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
"integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
"dev": true,
"optional": true
},
"@esbuild/win32-x64": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.16.tgz",
"integrity": "sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
"integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
"dev": true,
"optional": true
},
@ -3790,33 +3797,33 @@
}
},
"esbuild": {
"version": "0.17.16",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.16.tgz",
"integrity": "sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==",
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
"dev": true,
"requires": {
"@esbuild/android-arm": "0.17.16",
"@esbuild/android-arm64": "0.17.16",
"@esbuild/android-x64": "0.17.16",
"@esbuild/darwin-arm64": "0.17.16",
"@esbuild/darwin-x64": "0.17.16",
"@esbuild/freebsd-arm64": "0.17.16",
"@esbuild/freebsd-x64": "0.17.16",
"@esbuild/linux-arm": "0.17.16",
"@esbuild/linux-arm64": "0.17.16",
"@esbuild/linux-ia32": "0.17.16",
"@esbuild/linux-loong64": "0.17.16",
"@esbuild/linux-mips64el": "0.17.16",
"@esbuild/linux-ppc64": "0.17.16",
"@esbuild/linux-riscv64": "0.17.16",
"@esbuild/linux-s390x": "0.17.16",
"@esbuild/linux-x64": "0.17.16",
"@esbuild/netbsd-x64": "0.17.16",
"@esbuild/openbsd-x64": "0.17.16",
"@esbuild/sunos-x64": "0.17.16",
"@esbuild/win32-arm64": "0.17.16",
"@esbuild/win32-ia32": "0.17.16",
"@esbuild/win32-x64": "0.17.16"
"@esbuild/android-arm": "0.18.20",
"@esbuild/android-arm64": "0.18.20",
"@esbuild/android-x64": "0.18.20",
"@esbuild/darwin-arm64": "0.18.20",
"@esbuild/darwin-x64": "0.18.20",
"@esbuild/freebsd-arm64": "0.18.20",
"@esbuild/freebsd-x64": "0.18.20",
"@esbuild/linux-arm": "0.18.20",
"@esbuild/linux-arm64": "0.18.20",
"@esbuild/linux-ia32": "0.18.20",
"@esbuild/linux-loong64": "0.18.20",
"@esbuild/linux-mips64el": "0.18.20",
"@esbuild/linux-ppc64": "0.18.20",
"@esbuild/linux-riscv64": "0.18.20",
"@esbuild/linux-s390x": "0.18.20",
"@esbuild/linux-x64": "0.18.20",
"@esbuild/netbsd-x64": "0.18.20",
"@esbuild/openbsd-x64": "0.18.20",
"@esbuild/sunos-x64": "0.18.20",
"@esbuild/win32-arm64": "0.18.20",
"@esbuild/win32-ia32": "0.18.20",
"@esbuild/win32-x64": "0.18.20"
}
},
"escalade": {
@ -4489,9 +4496,9 @@
"integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ=="
},
"postcss": {
"version": "8.4.22",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.22.tgz",
"integrity": "sha512-XseknLAfRHzVWjCEtdviapiBtfLdgyzExD50Rg2ePaucEesyh8Wv4VPdW0nbyDa1ydbrAxV19jvMT4+LFmcNUA==",
"version": "8.4.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
"requires": {
"nanoid": "^3.3.6",
"picocolors": "^1.0.0",
@ -4618,9 +4625,9 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rollup": {
"version": "3.20.3",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.3.tgz",
"integrity": "sha512-u6/O1X42CAZ79rbk+smyONJQLTpwFBL7InpRa/AVWia5lq60w5J/PUsVHCOgSolN0X9R2GjQ41fZm3x28Hk1lA==",
"version": "3.29.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
"dev": true,
"requires": {
"fsevents": "~2.3.2"
@ -4646,9 +4653,9 @@
}
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true
},
"shebang-command": {
@ -4944,16 +4951,15 @@
}
},
"vite": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz",
"integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==",
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz",
"integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==",
"dev": true,
"requires": {
"esbuild": "^0.17.5",
"esbuild": "^0.18.10",
"fsevents": "~2.3.2",
"postcss": "^8.4.21",
"resolve": "^1.22.1",
"rollup": "^3.18.0"
"postcss": "^8.4.27",
"rollup": "^3.27.1"
}
},
"vue": {

View file

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -85,50 +85,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.9.1</version>
<configuration>
<nodeVersion>${node.version}</nodeVersion>
<workingDirectory>src/ui</workingDirectory>
</configuration>
<executions>
<execution>
<id>Install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<nodeVersion>${node.version}</nodeVersion>
<npmVersion>${npm.version}</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<execution>
<id>npm build</id>
<goals>
<goal>npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<arguments>run build-only</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>

View file

@ -24,6 +24,7 @@ public class App {
String apiPortStr = System.getenv("API_PORT") != null ? System.getenv("API_PORT") : "8080";
int apiPort = Integer.parseInt(apiPortStr);
boolean debug = "true".equals(System.getenv("API_DEBUG"));
var config = new HikariConfig();
config.setJdbcUrl(postgresUrl);
@ -33,8 +34,9 @@ public class App {
try (var ds = new HikariDataSource(config)) {
var serverDBService = new ServerDBService(ds);
var userDBService = new UserDBService(ds);
var appConfig = new AppConfig(apiPort, debug);
var webApi = new WebAPI(serverDBService, userDBService, apiPort);
var webApi = new WebAPI(serverDBService, userDBService, appConfig);
webApi.run();
}
}

View file

@ -0,0 +1,4 @@
package de.hhhammer.dchat.web;
public record AppConfig(int port, boolean debug) {
}

View file

@ -20,26 +20,21 @@ public class WebAPI implements Runnable {
private static final Logger logger = LoggerFactory.getLogger(WebAPI.class);
private final ServerDBService serverDBService;
private final UserDBService userDBService;
private final int port;
private final AppConfig appConfig;
public WebAPI(ServerDBService serverDBService, UserDBService userDBService, int port) {
public WebAPI(ServerDBService serverDBService, UserDBService userDBService, AppConfig appConfig) {
this.serverDBService = serverDBService;
this.userDBService = userDBService;
this.port = port;
this.appConfig = appConfig;
}
@Override
public void run() {
logger.info("Starting web application");
var app = Javalin.create(config -> {
// config.plugins.enableDevLogging();
if (appConfig.debug()) config.plugins.enableDevLogging();
config.http.prefer405over404 = true; // return 405 instead of 404 if path is mapped to different HTTP method
config.http.defaultContentType = "application/json";
config.staticFiles.add(staticFileConfig -> {
staticFileConfig.hostedPath = "/";
staticFileConfig.location = Location.CLASSPATH;
staticFileConfig.directory = "ui";
});
});
var waitForShutdown = new CompletableFuture<Void>();
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
@ -56,11 +51,6 @@ public class WebAPI implements Runnable {
ctx.header("Access-Control-Allow-Origin", "*");
ctx.header("Access-Control-Allow-Methods", "*");
});
app.after(ctx -> {
if (!ctx.path().startsWith("/api") && (ctx.status().equals(HttpStatus.NOT_FOUND) || ctx.status().equals(HttpStatus.METHOD_NOT_ALLOWED))) {
ctx.redirect("/");
}
});
app.options("*", ctx -> ctx.status(HttpStatus.OK));
app.routes(() -> {
@ -74,7 +64,7 @@ public class WebAPI implements Runnable {
});
});
app.start(this.port);
app.start(appConfig.port());
try {
waitForShutdown.get();
} catch (InterruptedException | ExecutionException e) {

View file

@ -1,3 +0,0 @@
{
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
}

View file

@ -1,31 +0,0 @@
#!/usr/bin/env bash
REPO="git.hhhammer.de/hamburghammer/dchat-ui"
AUTHORS="Augusto Dwenger J. <dwenger@posteo.de>"
URL="https://${REPO}"
VENDOR="hamburghammer"
TITLE="dchat-ui"
DESCRIPTION="The Web-UI for dchat a Discord bot to chat with ChatGPT from OpenAI"
CREATED=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
REVISION=$(git rev-parse HEAD)
IMAGE_LATEST="${REPO}:latest"
# shellcheck disable=SC2086
podman build \
$DOCKER_BUILD_ARGS \
-t $IMAGE_LATEST \
--label "org.opencontainers.image.revision=${REVISION}" \
--label "org.opencontainers.image.version=${TAG}" \
--label "org.opencontainers.image.authors=${AUTHORS}" \
--label "org.opencontainers.image.created=${CREATED}" \
--label "org.opencontainers.image.source=${URL}" \
--label "org.opencontainers.image.vendor=${VENDOR}" \
--label "org.opencontainers.image.title=${TITLE}" \
--label "org.opencontainers.image.description=${DESCRIPTION}" \
. || exit $?
if [ "$PUSH_LATEST" == "1" ]; then
podman push "${IMAGE_LATEST}"
fi