diff --git a/apps/cfddns/docker-compose.yml b/apps/cfddns/docker-compose.yml new file mode 100644 index 0000000..acd6726 --- /dev/null +++ b/apps/cfddns/docker-compose.yml @@ -0,0 +1,13 @@ +services: + cfddns: + image: 'favonia/cloudflare-ddns:latest' + environment: + - 'CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}' + - 'DOMAINS=${DOMAINS}' + - 'PROXIED=${PROXIED:-false}' + - 'UPDATE_CRON=${UPDATE_CRON:-@every 5m}' + - 'TZ=${TZ:-UTC}' + x-runtipi: + is_main: true +x-runtipi: + schema_version: 2 diff --git a/apps/cistech-tunnel/docker-compose.yml b/apps/cistech-tunnel/docker-compose.yml index 42570c9..c9624e0 100755 --- a/apps/cistech-tunnel/docker-compose.yml +++ b/apps/cistech-tunnel/docker-compose.yml @@ -1,46 +1,29 @@ services: cistech-tunnel: - image: git.alexzaw.dev/alexz/openconnect-vpn:latest - restart: unless-stopped - networks: - cistech-tunnel_runtipi_network: - gw_priority: 0 - tipi_main_network: - gw_priority: 1 - environment: - VPN_EMAIL: ${VPN_EMAIL} - VPN_PASSWORD: ${VPN_PASSWORD} - VPN_TOTP_SECRET: ${VPN_TOTP_SECRET} - VPN_HOST: ${VPN_HOST} - VNC_PASSWORD: ${VNC_PASSWORD} - TZ: ${TZ} - TARGET_IP: ${TARGET_IP} - ports: - - ${APP_PORT}:6092 + image: 'git.alexzaw.dev/alexz/openconnect-vpn:latest' volumes: - - ${APP_DATA_DIR}/config:/config - - ${APP_DATA_DIR}:/runtime - - /etc/runtipi/repos/runtipi/apps/cistech-tunnel/shared:/shared - - /etc/runtipi/repos/runtipi/apps/cistech-tunnel/shared/xstartup:/root/.vnc/xstartup:ro + - '${APP_DATA_DIR}/config:/config' + - '${APP_DATA_DIR}:/runtime' + - '/etc/runtipi/repos/runtipi/apps/cistech-tunnel/shared:/shared' + - '/etc/runtipi/repos/runtipi/apps/cistech-tunnel/shared/xstartup:/root/.vnc/xstartup:ro' + environment: + - 'VPN_EMAIL=${VPN_EMAIL}' + - 'VPN_PASSWORD=${VPN_PASSWORD}' + - 'VPN_TOTP_SECRET=${VPN_TOTP_SECRET}' + - 'VPN_HOST=${VPN_HOST}' + - 'VNC_PASSWORD=${VNC_PASSWORD}' + - 'TZ=${TZ}' + - 'TARGET_IP=${TARGET_IP}' labels: - generated: true - traefik.enable: true - traefik.docker.network: runtipi_tipi_main_network - traefik.http.middlewares.cistech-tunnel-runtipi-web-redirect.redirectscheme.scheme: https - traefik.http.services.cistech-tunnel-runtipi.loadbalancer.server.port: "6092" - traefik.http.routers.cistech-tunnel-runtipi-insecure.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.cistech-tunnel-runtipi-insecure.entrypoints: web - traefik.http.routers.cistech-tunnel-runtipi-insecure.service: cistech-tunnel-runtipi - traefik.http.routers.cistech-tunnel-runtipi-insecure.middlewares: cistech-tunnel-runtipi-web-redirect - traefik.http.routers.cistech-tunnel-runtipi.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.cistech-tunnel-runtipi.entrypoints: websecure - traefik.http.routers.cistech-tunnel-runtipi.service: cistech-tunnel-runtipi - traefik.http.routers.cistech-tunnel-runtipi.tls.certresolver: myresolver - runtipi.managed: true - runtipi.appurn: cistech-tunnel:runtipi - cap_add: - - NET_ADMIN - devices: - - /dev/net/tun + 'runtipi.managed': true privileged: true - stop_grace_period: 30s + cap_add: + - 'NET_ADMIN' + stop_grace_period: '30s' + devices: + - '/dev/net/tun' + x-runtipi: + internal_port: 6092 + is_main: true +x-runtipi: + schema_version: 2 diff --git a/apps/cloudbeaver/docker-compose.yml b/apps/cloudbeaver/docker-compose.yml index d9922b9..b71fd8a 100755 --- a/apps/cloudbeaver/docker-compose.yml +++ b/apps/cloudbeaver/docker-compose.yml @@ -1,46 +1,16 @@ services: cloudbeaver: - image: dbeaver/cloudbeaver:25.2.5 - restart: unless-stopped - networks: - cloudbeaver_runtipi_network: - gw_priority: 0 - tipi_main_network: - gw_priority: 1 - extra_hosts: - - host.docker.internal:host-gateway - environment: - CB_SERVER_NAME: CloudBeaver - CB_ADMIN_NAME: admin - CB_ADMIN_PASSWORD: admin - ports: - - ${APP_PORT}:8978 + image: 'dbeaver/cloudbeaver:25.2.5' volumes: - - ${APP_DATA_DIR}/data:/opt/cloudbeaver/workspace - labels: - generated: true - traefik.enable: true - traefik.docker.network: runtipi_tipi_main_network - traefik.http.middlewares.cloudbeaver-runtipi-web-redirect.redirectscheme.scheme: https - traefik.http.services.cloudbeaver-runtipi.loadbalancer.server.port: "8978" - traefik.http.routers.cloudbeaver-runtipi-insecure.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.cloudbeaver-runtipi-insecure.entrypoints: web - traefik.http.routers.cloudbeaver-runtipi-insecure.service: cloudbeaver-runtipi - traefik.http.routers.cloudbeaver-runtipi-insecure.middlewares: cloudbeaver-runtipi-web-redirect - traefik.http.routers.cloudbeaver-runtipi.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.cloudbeaver-runtipi.entrypoints: websecure - traefik.http.routers.cloudbeaver-runtipi.service: cloudbeaver-runtipi - traefik.http.routers.cloudbeaver-runtipi.tls.certresolver: myresolver - runtipi.managed: true - runtipi.appurn: cloudbeaver:runtipi -networks: - tipi_main_network: - name: runtipi_tipi_main_network - external: true - cloudbeaver_runtipi_network: - name: cloudbeaver_runtipi_network - external: false - ipam: - config: - - subnet: 10.128.18.0/24 - + - '${APP_DATA_DIR}/data:/opt/cloudbeaver/workspace' + environment: + - 'CB_SERVER_NAME=CloudBeaver' + - 'CB_ADMIN_NAME=admin' + - 'CB_ADMIN_PASSWORD=admin' + extra_hosts: + - 'host.docker.internal:host-gateway' + x-runtipi: + internal_port: 8978 + is_main: true +x-runtipi: + schema_version: 2 diff --git a/package-lock.json b/package-lock.json old mode 100755 new mode 100644 index 4f476a6..afff4ed --- a/package-lock.json +++ b/package-lock.json @@ -9,22 +9,126 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@runtipi/common": "^0.8.0", + "@runtipi/common": "^1.1.3", + "ajv": "^8.18.0", "bun": "^1.2.10", + "codemod": "^1.7.11", "zod-validation-error": "^3.4.0" }, "devDependencies": { "@types/bun": "latest", - "@types/node": "^22.14.1" + "@types/node": "^22.14.1", + "arktype": "^2.1.29" }, "peerDependencies": { "typescript": "^5.0.0" } }, + "node_modules/@ark/schema": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@ark/schema/-/schema-0.56.0.tgz", + "integrity": "sha512-ECg3hox/6Z/nLajxXqNhgPtNdHWC9zNsDyskwO28WinoFEnWow4IsERNz9AnXRhTZJnYIlAJ4uGn3nlLk65vZA==", + "license": "MIT", + "dependencies": { + "@ark/util": "0.56.0" + } + }, + "node_modules/@ark/util": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@ark/util/-/util-0.56.0.tgz", + "integrity": "sha512-BghfRC8b9pNs3vBoDJhcta0/c1J1rsoS1+HgVUreMFPdhz/CRAKReAu57YEllNaSy98rWAdY1gE+gFup7OXpgA==", + "license": "MIT" + }, + "node_modules/@codemod.com/cli-darwin-arm64": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@codemod.com/cli-darwin-arm64/-/cli-darwin-arm64-1.7.11.tgz", + "integrity": "sha512-dE/cjW0sT5YKR0jwGH0jr17zV3vtBA53vpWObhgK6mBWRPgBrN5bSdYgldLIcleUHkfQiydRu4n+qZdz9FOtgQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@codemod.com/cli-darwin-x64": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@codemod.com/cli-darwin-x64/-/cli-darwin-x64-1.7.11.tgz", + "integrity": "sha512-+lv43KcLQkiq5Ph1ICPpMNBZS+zy71Q2Vs6EvFJogGrMWpQ7inx010sNTbwJRQ4mlf06/OzCJK+K+8pHaOFB5Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@codemod.com/cli-linux-arm64-gnu": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@codemod.com/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.7.11.tgz", + "integrity": "sha512-fwTZ9rdi0K3ltsvt630QEWW1upZGapCCOWngczNHCLUdQ9rr6LCFW40eq97GBvfutZRNAVofrDCks/3q1CbCqw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@codemod.com/cli-linux-x64-gnu": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@codemod.com/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.7.11.tgz", + "integrity": "sha512-3wG8uJlKmEdc+EJcDiuFD8I9qXAgjHYt/sgvcJZgtJem6/NEbJ7qbLhteGHYOat61l+u+cs6iMwOQ7JEDSzJcg==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@codemod.com/cli-win32-x64-msvc": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@codemod.com/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.7.11.tgz", + "integrity": "sha512-YXabpaVKrPomfCduIH360NKNVDwpvdB8JZacIlkFvqJdzA3H4hjFDf7VvxVgSTreyVlVGlGycjy2nbnBb8evEQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@oven/bun-darwin-aarch64": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-darwin-aarch64/-/bun-darwin-aarch64-1.3.4.tgz", - "integrity": "sha512-2Ie4jDGvNGuPSD+pyyBKL8dJmX+bZfDNYEalwgROImVtwB1XYAatJK20dMaRlPA7jOhjvS9Io+4IZAJu7Js0AA==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-darwin-aarch64/-/bun-darwin-aarch64-1.3.12.tgz", + "integrity": "sha512-b6CQgT28Jx7uDwMTcGo7WFqUd1+wWTdp8XyPi/4LRcL/R4deKT7cLx/Q2ZCWAiK6ZU7yexoCaIaKun6azjRLVA==", "cpu": [ "arm64" ], @@ -35,9 +139,9 @@ ] }, "node_modules/@oven/bun-darwin-x64": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64/-/bun-darwin-x64-1.3.4.tgz", - "integrity": "sha512-4/BJojT8hk5g6Gecjn5yI7y96/+9Mtzsvdp9+2dcy9sTMdlV7jBvDzswqyJPZyQqw0F3HV3Vu9XuMubZwKd9lA==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64/-/bun-darwin-x64-1.3.12.tgz", + "integrity": "sha512-//6W21c+GinAMMmxD2hFrFmJH+ZlEwJYbLzAGqp0mLFTli9y74RMtDgI2n9pCupXSpU1Kr1sSylVW9yNbAG9Xg==", "cpu": [ "x64" ], @@ -48,9 +152,9 @@ ] }, "node_modules/@oven/bun-darwin-x64-baseline": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64-baseline/-/bun-darwin-x64-baseline-1.3.4.tgz", - "integrity": "sha512-ZYxzIOCDqylTMsnWYERjKMMuK2b4an4qbloBmUZTwLHmVzos00yrhtpitZhJBgH6yB/l4Q5eoJ2W98UKtFFeiQ==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-darwin-x64-baseline/-/bun-darwin-x64-baseline-1.3.12.tgz", + "integrity": "sha512-9jKJNOc9ID3BxPBPR4r1Mp1Wqde89Twi5zo2LoEMLMKbqpvEM/WUGdJ0Vv7OX1QPEqVblFO6NMky5yY7rjDI2w==", "cpu": [ "x64" ], @@ -61,9 +165,9 @@ ] }, "node_modules/@oven/bun-linux-aarch64": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64/-/bun-linux-aarch64-1.3.4.tgz", - "integrity": "sha512-8DUIlanftMdFxLGq2FxwKwfrp8O4ZofF/8Oc6lxCyEFmg2hixbHhL04+fPfJIi5D4hZloynxZdwTeDbGv/Kc4A==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64/-/bun-linux-aarch64-1.3.12.tgz", + "integrity": "sha512-eTru6tk3K4Ya3SSkUqq/LbdEjwPqLlfINmIhRORrCExBdB1tQbk+WYYflaymO61fkrjnMAjmLTGqk/K37RMIGA==", "cpu": [ "arm64" ], @@ -74,9 +178,9 @@ ] }, "node_modules/@oven/bun-linux-aarch64-musl": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64-musl/-/bun-linux-aarch64-musl-1.3.4.tgz", - "integrity": "sha512-6UtmM4wXgRKz+gnLZEfddfsuBSVQpJr09K12e5pbdnLzeWgXYlBT5FG8S7SVn1t6cbgBMnigEsFjWwfTuMNoCw==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-aarch64-musl/-/bun-linux-aarch64-musl-1.3.12.tgz", + "integrity": "sha512-HWIwFzm5fALd9Lli0CgaKb6xOGqODYyHpUTgkn/IHHuS/f3XDCu71+GgkyvfgCYbPoBSgBOfp5TzhRehPcgxow==", "cpu": [ "arm64" ], @@ -87,9 +191,9 @@ ] }, "node_modules/@oven/bun-linux-x64": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64/-/bun-linux-x64-1.3.4.tgz", - "integrity": "sha512-03iSDMqdrmIFAsvsRptq+A7EGNjkg20dNzPnqxAlXHk5rc1PeIRWIP0eIn0i3nI6mmdj33mimf9AGr0+d0lKMg==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64/-/bun-linux-x64-1.3.12.tgz", + "integrity": "sha512-H75bcEn46lMDxd+P+R6Q/jlIKl/YO0ZXaalSyWhQHr7qNmFhQt3rOHurFoCxuwQeqFoToh0JpWVyMVzByZqgBQ==", "cpu": [ "x64" ], @@ -100,9 +204,9 @@ ] }, "node_modules/@oven/bun-linux-x64-baseline": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-baseline/-/bun-linux-x64-baseline-1.3.4.tgz", - "integrity": "sha512-ZMGPbFPqmG/VYJv61D+Y1V7T23jPK57vYl7yYLakmkTRjG6vcJ0Akhb2qR1iW94rHvfEBjeuVDAZBp8Qp9oyWA==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-baseline/-/bun-linux-x64-baseline-1.3.12.tgz", + "integrity": "sha512-0y+lUiQsPvSGsyM/10KtxhVAQ20p6/D+vj01l6vo9gHpYUpyc1L9pSgaPa7SC9TuaiGASlM3Cb62bmSKW0E/3Q==", "cpu": [ "x64" ], @@ -113,9 +217,9 @@ ] }, "node_modules/@oven/bun-linux-x64-musl": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl/-/bun-linux-x64-musl-1.3.4.tgz", - "integrity": "sha512-xUXPuJHndGhk4K3Cx1FgTyTgDZOn+ki3eWvdXYqKdfi0EaNA9KpUq+/vUtpJbZRjzpHs9L+OJcdDILq5H0LX4g==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl/-/bun-linux-x64-musl-1.3.12.tgz", + "integrity": "sha512-Zb7T3JxWlArSe44ATO5mtjLCBCt7kenWPl9CYD+zeqq9kHswMv8Cd3h/9uzdv2PA4Flrq57J5XBSuRdStTCXCw==", "cpu": [ "x64" ], @@ -126,9 +230,9 @@ ] }, "node_modules/@oven/bun-linux-x64-musl-baseline": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl-baseline/-/bun-linux-x64-musl-baseline-1.3.4.tgz", - "integrity": "sha512-qsGSSlNsxiX8lAayK2uYCfMLtqu776F0nn7qoyzg9Ti7mElM3woNh7RtGClTwQ6qsp5/UvgqT9g4pLaDHmqJFg==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-linux-x64-musl-baseline/-/bun-linux-x64-musl-baseline-1.3.12.tgz", + "integrity": "sha512-jdsnuFD3H0l4AHtf1nInRHYWIMTWqok0aW8WysjzN5Isn6rBTBGK/ZWX6XjdTgDgcuVbVOYHiLUHHrvT9N6psA==", "cpu": [ "x64" ], @@ -138,10 +242,23 @@ "linux" ] }, + "node_modules/@oven/bun-windows-aarch64": { + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-windows-aarch64/-/bun-windows-aarch64-1.3.12.tgz", + "integrity": "sha512-Oq0FIcCgL3JWf/4qRuxI5fxsOGyWJ1j904PDx/1TxxSCWWAu0Hh2o8ck4TcaPVv/3BMc1k6UxqQQKBrdP7a+qQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@oven/bun-windows-x64": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64/-/bun-windows-x64-1.3.4.tgz", - "integrity": "sha512-nswsuN6+HZPim6x4tFpDFpMa/qpTKfywbGvCkzxwrbJO9MtpuW/54NA1nFbHhpV14OLU0xuxyBj2PK4FHq4MlA==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64/-/bun-windows-x64-1.3.12.tgz", + "integrity": "sha512-veSntY7pDLDh4XmxZMwTqxfoEVp0BDdeqCBoWL46/TigtniPtDFSTIWBxa6l/RcGzklUA/uqLqmsK/9cBZAm8Q==", "cpu": [ "x64" ], @@ -152,9 +269,9 @@ ] }, "node_modules/@oven/bun-windows-x64-baseline": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64-baseline/-/bun-windows-x64-baseline-1.3.4.tgz", - "integrity": "sha512-ZQiSDFfSUdOrPTiL2GvkxlC/kMED4fsJwdZnwJK6S9ylXnk9xY/9ZXfe1615SFLQl2LsVRzJAtjQLeM0BifIKQ==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@oven/bun-windows-x64-baseline/-/bun-windows-x64-baseline-1.3.12.tgz", + "integrity": "sha512-rV21md7QWnu3r/shev7IFMh6hX8BJHwofxESAofUT4yH866oCIbcNbzp6+fxrj4oGD8uisP6WoaTCboijv9yYg==", "cpu": [ "x64" ], @@ -165,39 +282,78 @@ ] }, "node_modules/@runtipi/common": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@runtipi/common/-/common-0.8.1.tgz", - "integrity": "sha512-x4K+Cn1LRsU1R0MyJBzAgjF457OyuJgi9RwcUhOpTSv6xPK+D8urM8qSQ9uLwK/2p/i2zGThxU6yUtsfkdnj/A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@runtipi/common/-/common-1.1.3.tgz", + "integrity": "sha512-04byPdD0leuM4K+9Qe91ZryUxrmnKj3iu5nCjOGVZ4KYILKGVhjyi7zX6VMVhesBh8tVWtvXzqZkUtaQO3l0gQ==", "license": "MIT", "dependencies": { - "zod": "^3.25.30", - "zod-to-json-schema": "^3.24.5" + "yaml": "^2.8.2" + }, + "peerDependencies": { + "arktype": ">=2", + "typescript": ">=5" } }, "node_modules/@types/bun": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.3.4.tgz", - "integrity": "sha512-EEPTKXHP+zKGPkhRLv+HI0UEX8/o+65hqARxLy8Ov5rIxMBPNTjeZww00CIihrIQGEQBYg+0roO5qOnS/7boGA==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.3.12.tgz", + "integrity": "sha512-DBv81elK+/VSwXHDlnH3Qduw+KxkTIWi7TXkAeh24zpi5l0B2kUg9Ga3tb4nJaPcOFswflgi/yAvMVBPrxMB+A==", "dev": true, "license": "MIT", "dependencies": { - "bun-types": "1.3.4" + "bun-types": "1.3.12" } }, "node_modules/@types/node": { - "version": "22.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.2.tgz", - "integrity": "sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==", + "version": "22.19.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.17.tgz", + "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/arkregex": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/arkregex/-/arkregex-0.0.5.tgz", + "integrity": "sha512-ncYjBdLlh5/QnVsAA8De16Tc9EqmYM7y/WU9j+236KcyYNUXogpz3sC4ATIZYzzLxwI+0sEOaQLEmLmRleaEXw==", + "license": "MIT", + "dependencies": { + "@ark/util": "0.56.0" + } + }, + "node_modules/arktype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.2.0.tgz", + "integrity": "sha512-t54MZ7ti5BhOEvzEkgKnWvqj+UbDfWig+DHr5I34xatymPusKLS0lQpNJd8M6DzmIto2QGszHfNKoFIT8tMCZQ==", + "license": "MIT", + "dependencies": { + "@ark/schema": "0.56.0", + "@ark/util": "0.56.0", + "arkregex": "0.0.5" + } + }, "node_modules/bun": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bun/-/bun-1.3.4.tgz", - "integrity": "sha512-xV6KgD5ImquuKsoghzbWmYzeCXmmSgN6yJGz444hri2W+NGKNRFUNrEhy9+/rRXbvNA2qF0K0jAwqFNy1/GhBg==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/bun/-/bun-1.3.12.tgz", + "integrity": "sha512-KLwDUqs5WIny/94F4xZ4QfaAE6YWyjR+s79pt/ItQhk2CG+PJQ5xL6VuOWhiyN2eP3fryZK95vog9CTLCaYV2Q==", "cpu": [ "arm64", "x64" @@ -214,29 +370,98 @@ "bunx": "bin/bunx.exe" }, "optionalDependencies": { - "@oven/bun-darwin-aarch64": "1.3.4", - "@oven/bun-darwin-x64": "1.3.4", - "@oven/bun-darwin-x64-baseline": "1.3.4", - "@oven/bun-linux-aarch64": "1.3.4", - "@oven/bun-linux-aarch64-musl": "1.3.4", - "@oven/bun-linux-x64": "1.3.4", - "@oven/bun-linux-x64-baseline": "1.3.4", - "@oven/bun-linux-x64-musl": "1.3.4", - "@oven/bun-linux-x64-musl-baseline": "1.3.4", - "@oven/bun-windows-x64": "1.3.4", - "@oven/bun-windows-x64-baseline": "1.3.4" + "@oven/bun-darwin-aarch64": "1.3.12", + "@oven/bun-darwin-x64": "1.3.12", + "@oven/bun-darwin-x64-baseline": "1.3.12", + "@oven/bun-linux-aarch64": "1.3.12", + "@oven/bun-linux-aarch64-musl": "1.3.12", + "@oven/bun-linux-x64": "1.3.12", + "@oven/bun-linux-x64-baseline": "1.3.12", + "@oven/bun-linux-x64-musl": "1.3.12", + "@oven/bun-linux-x64-musl-baseline": "1.3.12", + "@oven/bun-windows-aarch64": "1.3.12", + "@oven/bun-windows-x64": "1.3.12", + "@oven/bun-windows-x64-baseline": "1.3.12" } }, "node_modules/bun-types": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.3.4.tgz", - "integrity": "sha512-5ua817+BZPZOlNaRgGBpZJOSAQ9RQ17pkwPD0yR7CfJg+r8DgIILByFifDTa+IPDDxzf5VNhtNlcKqFzDgJvlQ==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.3.12.tgz", + "integrity": "sha512-HqOLj5PoFajAQciOMRiIZGNoKxDJSr6qigAttOX40vJuSp6DN/CxWp9s3C1Xwm4oH7ybueITwiaOcWXoYVoRkA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/codemod": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/codemod/-/codemod-1.7.11.tgz", + "integrity": "sha512-rfbd5HWUugz+27+YJUZ7tqRWVkKhKl+Gtab7L3Oq/9AJvFOFpONEKju6Jkv9UJDWSKwpWjAZ9xupb3MzHxxsRg==", + "license": "Apache-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "bin": { + "codemod": "codemod" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "@codemod.com/cli-darwin-arm64": "1.7.11", + "@codemod.com/cli-darwin-x64": "1.7.11", + "@codemod.com/cli-linux-arm64-gnu": "1.7.11", + "@codemod.com/cli-linux-x64-gnu": "1.7.11", + "@codemod.com/cli-win32-x64-msvc": "1.7.11" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -258,6 +483,21 @@ "dev": true, "license": "MIT" }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, "node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", @@ -268,15 +508,6 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-to-json-schema": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", - "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.25 || ^4" - } - }, "node_modules/zod-validation-error": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.4.tgz", diff --git a/package.json b/package.json index 925fe34..a2281ff 100755 --- a/package.json +++ b/package.json @@ -12,11 +12,14 @@ "license": "ISC", "devDependencies": { "@types/bun": "latest", - "@types/node": "^22.14.1" + "@types/node": "^22.14.1", + "arktype": "^2.1.29" }, "dependencies": { - "@runtipi/common": "^0.8.0", + "@runtipi/common": "^1.1.3", + "ajv": "^8.18.0", "bun": "^1.2.10", + "codemod": "^1.7.11", "zod-validation-error": "^3.4.0" }, "peerDependencies": {