diff --git a/e2e/package.json b/e2e/package.json index 292b8539a6..d1bf612716 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@eslint/js": "^10.0.0", "@faker-js/faker": "^10.1.0", + "@futo-org/backups-orchestrator-ui": "0.1.71", "@immich/cli": "workspace:*", "@immich/e2e-auth-server": "workspace:*", "@immich/sdk": "workspace:*", @@ -44,7 +45,6 @@ "exiftool-vendored": "^35.0.0", "globals": "^17.0.0", "luxon": "^3.4.4", - "orchestration-ui": "0.1.69", "pg": "^8.11.3", "pngjs": "^7.0.0", "prettier": "^3.7.4", diff --git a/e2e/src/specs/maintenance/server/yucca-backups.e2e-spec.ts b/e2e/src/specs/maintenance/server/yucca-backups.e2e-spec.ts index 39104d6509..9c9c151e25 100644 --- a/e2e/src/specs/maintenance/server/yucca-backups.e2e-spec.ts +++ b/e2e/src/specs/maintenance/server/yucca-backups.e2e-spec.ts @@ -1,5 +1,5 @@ +import * as sdk from '@futo-org/backups-orchestrator-ui/sdk'; import { LoginResponseDto, StorageFolder } from '@immich/sdk'; -import * as sdk from 'orchestration-ui/sdk'; import { io, Socket } from 'socket.io-client'; import { createUserDto } from 'src/fixtures'; import { errorDto } from 'src/responses'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2804bd8df1..18396ed094 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,7 +113,7 @@ importers: version: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vitest: specifier: ^4.0.0 - version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest-fetch-mock: specifier: ^0.4.0 version: 0.4.5(vitest@4.1.5) @@ -199,6 +199,9 @@ importers: '@faker-js/faker': specifier: ^10.1.0 version: 10.4.0 + '@futo-org/backups-orchestrator-ui': + specifier: 0.1.71 + version: 0.1.71(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) '@immich/cli': specifier: workspace:* version: link:../cli @@ -253,9 +256,6 @@ importers: luxon: specifier: ^3.4.4 version: 3.7.2 - orchestration-ui: - specifier: 0.1.69 - version: 0.1.69(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) pg: specifier: ^8.11.3 version: 8.20.0 @@ -347,6 +347,9 @@ importers: '@extism/extism': specifier: 2.0.0-rc13 version: 2.0.0-rc13 + '@futo-org/backups-orchestrator-api': + specifier: 0.1.71 + version: 0.1.71(@nestjs/platform-express@11.1.19)(class-transformer@0.5.1)(reflect-metadata@0.2.2) '@immich/sql-tools': specifier: ^0.5.1 version: 0.5.2 @@ -521,9 +524,6 @@ importers: openid-client: specifier: ^6.3.3 version: 6.8.3 - orchestration-api: - specifier: 0.1.69 - version: 0.1.69(@nestjs/platform-express@11.1.19)(class-transformer@0.5.1)(reflect-metadata@0.2.2) pg: specifier: ^8.11.3 version: 8.20.0 @@ -671,7 +671,7 @@ importers: version: 13.15.10 '@vitest/coverage-v8': specifier: ^3.0.0 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^10.0.0 version: 10.2.1(jiti@2.6.1) @@ -725,13 +725,16 @@ importers: version: 6.1.1(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^3.0.0 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) web: dependencies: '@formatjs/icu-messageformat-parser': specifier: ^3.0.0 version: 3.5.4 + '@futo-org/backups-orchestrator-ui': + specifier: 0.1.71 + version: 0.1.71(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) '@immich/justified-layout-wasm': specifier: ^0.4.3 version: 0.4.3 @@ -782,7 +785,7 @@ importers: version: 2.6.0 fabric: specifier: ^7.0.0 - version: 7.3.1(encoding@0.1.13) + version: 7.3.1 geo-coordinates-parser: specifier: ^1.7.4 version: 1.7.4 @@ -813,9 +816,6 @@ importers: media-chrome: specifier: ^4.19.0 version: 4.19.0(react@19.2.5) - orchestration-ui: - specifier: 0.1.69 - version: 0.1.69(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) pmtiles: specifier: ^4.3.0 version: 4.4.1 @@ -984,7 +984,7 @@ importers: version: 8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vitest: specifier: ^4.0.0 - version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages: @@ -2826,6 +2826,17 @@ packages: resolution: {integrity: sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w==} engines: {node: '>=6'} + '@futo-org/backups-api-client@0.1.71': + resolution: {integrity: sha512-7V/cpRXlR8yi2bV9y9VFPd26tea8ePht9CZpCYOjMfgCpRJkGf9JlKBAg/kT0EHDwxW7tzYBgENIs3jkSwQ9Aw==} + + '@futo-org/backups-orchestrator-api@0.1.71': + resolution: {integrity: sha512-5KJERZGIUnxWWpVu6VtJ8fgpq/oJyUmKzcx+mBHf759aEbwQFzqLzPVs1K3uf8Btf7oRF50i6pJo1Jvko8FZGQ==} + + '@futo-org/backups-orchestrator-ui@0.1.71': + resolution: {integrity: sha512-2UlVKTvvwg4mKUE90LPh3O1IgIa1pC5flWkH6J+Ff819M2PvQtippKTvt4s/mBqx8CSl4Dy/LZAHpmIqyqdhiw==} + peerDependencies: + svelte: ^5.0.0 + '@futo-org/restic-wrapper@1.2.0': resolution: {integrity: sha512-NdPi6F8pcCotqLMvqBr69u9Dt0Vxs3A+/JpJkcbJcCLdp9a/tElgau//BNIHej7SZ4MCl37haPhk+g5bCJGo9w==} engines: {node: '>=20'} @@ -9845,14 +9856,6 @@ packages: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} - orchestration-api@0.1.69: - resolution: {integrity: sha512-e178p+yfWV26RHNIKrGY8cnl0LgtbEal0BJhTdRTDrJy+bLjDw+MqzaVMYzMjCkAECML37dwAZjTR/qIwRfSwA==} - - orchestration-ui@0.1.69: - resolution: {integrity: sha512-l7e8Xgf24rD1KblsdtcODBIk2UY1b/hSwry1tHEB/mpkZ+MUu4feXswa1+aSztP6WIP5RXk8CH4PHS/z5MFJmg==} - peerDependencies: - svelte: ^5.0.0 - p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -12853,9 +12856,6 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - yucca-api-client@0.1.69: - resolution: {integrity: sha512-GXRnvpTi7p8X+6R3E0ypBY+j7q5MrQQgH6bSi4ppB/h729VD6aAkwXLSK64i29Ge4jfyrQ4HymgQSwFd7avc8g==} - yup@1.7.1: resolution: {integrity: sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==} @@ -15369,6 +15369,80 @@ snapshots: dependencies: '@fortawesome/fontawesome-common-types': 7.2.0 + '@futo-org/backups-api-client@0.1.71': + dependencies: + '@oazapfts/runtime': 1.2.0 + + '@futo-org/backups-orchestrator-api@0.1.71(@nestjs/platform-express@11.1.19)(class-transformer@0.5.1)(reflect-metadata@0.2.2)': + dependencies: + '@futo-org/backups-api-client': 0.1.71 + '@futo-org/restic-wrapper': 1.2.0 + '@nestjs/common': 11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.19(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.19)(@nestjs/websockets@11.1.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/event-emitter': 3.1.0(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19) + '@nestjs/platform-socket.io': 11.1.19(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.19)(rxjs@7.8.2) + '@nestjs/schedule': 6.1.3(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19) + '@nestjs/websockets': 11.1.19(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(@nestjs/platform-socket.io@11.1.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) + better-sqlite3: 12.9.0 + class-validator: 0.14.4 + cookie: 1.1.1 + cron: 4.4.0 + event-iterator: 2.0.0 + eventsource-client: 1.2.0 + express: 5.2.1 + kysely: 0.28.2 + nestjs-kysely: 3.1.2(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(kysely@0.28.2)(reflect-metadata@0.2.2) + openid-client: 6.8.3 + rxjs: 7.8.2 + socket.io: 4.8.3 + tail: 2.2.6 + transitivePeerDependencies: + - '@nestjs/microservices' + - '@nestjs/platform-express' + - bufferutil + - class-transformer + - reflect-metadata + - supports-color + - utf-8-validate + + '@futo-org/backups-orchestrator-ui@0.1.71(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)': + dependencies: + '@futo-org/backups-api-client': 0.1.71 + '@immich/ui': 0.59.0(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) + '@mdi/js': 7.4.47 + '@oazapfts/runtime': 1.2.0 + '@tanstack/svelte-query': 6.1.28(svelte@5.55.2) + cron-validate: 1.5.3 + cronstrue: 3.14.0 + lodash.debounce: 4.0.8 + luxon: 3.7.2 + socket.io-client: 4.8.3 + svelte: 5.55.2 + transitivePeerDependencies: + - '@sveltejs/kit' + - bufferutil + - supports-color + - utf-8-validate + + '@futo-org/backups-orchestrator-ui@0.1.71(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)': + dependencies: + '@futo-org/backups-api-client': 0.1.71 + '@immich/ui': 0.59.0(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) + '@mdi/js': 7.4.47 + '@oazapfts/runtime': 1.2.0 + '@tanstack/svelte-query': 6.1.28(svelte@5.55.2) + cron-validate: 1.5.3 + cronstrue: 3.14.0 + lodash.debounce: 4.0.8 + luxon: 3.7.2 + socket.io-client: 4.8.3 + svelte: 5.55.2 + transitivePeerDependencies: + - '@sveltejs/kit' + - bufferutil + - supports-color + - utf-8-validate + '@futo-org/restic-wrapper@1.2.0': dependencies: zod: 4.3.6 @@ -15986,6 +16060,22 @@ snapshots: '@mapbox/mapbox-gl-rtl-text@0.4.0': {} + '@mapbox/node-pre-gyp@1.0.11': + dependencies: + detect-libc: 2.1.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.7.4 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': dependencies: detect-libc: 2.1.2 @@ -17449,7 +17539,7 @@ snapshots: svelte: 5.55.2 optionalDependencies: vite: 8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: @@ -18165,7 +18255,7 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -18180,7 +18270,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.2 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -18196,7 +18286,7 @@ snapshots: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/expect@3.2.4': dependencies: @@ -18985,6 +19075,16 @@ snapshots: caniuse-lite@1.0.30001790: {} + canvas@2.11.2: + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + nan: 2.26.2 + simple-get: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + canvas@2.11.2(encoding@0.1.13): dependencies: '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) @@ -20665,10 +20765,10 @@ snapshots: extend@3.0.2: {} - fabric@7.3.1(encoding@0.1.13): + fabric@7.3.1: optionalDependencies: - canvas: 2.11.2(encoding@0.1.13) - jsdom: 26.1.0(canvas@2.11.2(encoding@0.1.13)) + canvas: 2.11.2 + jsdom: 26.1.0(canvas@2.11.2) transitivePeerDependencies: - bufferutil - encoding @@ -21822,6 +21922,36 @@ snapshots: - utf-8-validate optional: true + jsdom@26.1.0(canvas@2.11.2): + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.23 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.20.0 + xml-name-validator: 5.0.0 + optionalDependencies: + canvas: 2.11.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + optional: true + jsep@1.4.0: {} jsesc@3.1.0: {} @@ -23086,6 +23216,11 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + optional: true + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -23292,76 +23427,6 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.2.0 - orchestration-api@0.1.69(@nestjs/platform-express@11.1.19)(class-transformer@0.5.1)(reflect-metadata@0.2.2): - dependencies: - '@futo-org/restic-wrapper': 1.2.0 - '@nestjs/common': 11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.19(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.19)(@nestjs/websockets@11.1.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/event-emitter': 3.1.0(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19) - '@nestjs/platform-socket.io': 11.1.19(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.19)(rxjs@7.8.2) - '@nestjs/schedule': 6.1.3(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19) - '@nestjs/websockets': 11.1.19(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(@nestjs/platform-socket.io@11.1.19)(reflect-metadata@0.2.2)(rxjs@7.8.2) - better-sqlite3: 12.9.0 - class-validator: 0.14.4 - cookie: 1.1.1 - cron: 4.4.0 - event-iterator: 2.0.0 - eventsource-client: 1.2.0 - express: 5.2.1 - kysely: 0.28.2 - nestjs-kysely: 3.1.2(@nestjs/common@11.1.19(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.19)(kysely@0.28.2)(reflect-metadata@0.2.2) - openid-client: 6.8.3 - rxjs: 7.8.2 - socket.io: 4.8.3 - tail: 2.2.6 - yucca-api-client: 0.1.69 - transitivePeerDependencies: - - '@nestjs/microservices' - - '@nestjs/platform-express' - - bufferutil - - class-transformer - - reflect-metadata - - supports-color - - utf-8-validate - - orchestration-ui@0.1.69(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2): - dependencies: - '@immich/ui': 0.59.0(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) - '@mdi/js': 7.4.47 - '@oazapfts/runtime': 1.2.0 - '@tanstack/svelte-query': 6.1.28(svelte@5.55.2) - cron-validate: 1.5.3 - cronstrue: 3.14.0 - lodash.debounce: 4.0.8 - luxon: 3.7.2 - socket.io-client: 4.8.3 - svelte: 5.55.2 - yucca-api-client: 0.1.69 - transitivePeerDependencies: - - '@sveltejs/kit' - - bufferutil - - supports-color - - utf-8-validate - - orchestration-ui@0.1.69(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2): - dependencies: - '@immich/ui': 0.59.0(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2) - '@mdi/js': 7.4.47 - '@oazapfts/runtime': 1.2.0 - '@tanstack/svelte-query': 6.1.28(svelte@5.55.2) - cron-validate: 1.5.3 - cronstrue: 3.14.0 - lodash.debounce: 4.0.8 - luxon: 3.7.2 - socket.io-client: 4.8.3 - svelte: 5.55.2 - yucca-api-client: 0.1.69 - transitivePeerDependencies: - - '@sveltejs/kit' - - bufferutil - - supports-color - - utf-8-validate - p-cancelable@3.0.0: {} p-finally@1.0.0: {} @@ -26353,9 +26418,9 @@ snapshots: vitest-fetch-mock@0.4.5(vitest@4.1.5): dependencies: - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.2)(happy-dom@20.9.0)(jiti@2.6.1)(jsdom@26.1.0(canvas@2.11.2))(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -26384,7 +26449,7 @@ snapshots: '@types/debug': 4.1.12 '@types/node': 24.12.2 happy-dom: 20.9.0 - jsdom: 26.1.0(canvas@2.11.2(encoding@0.1.13)) + jsdom: 26.1.0(canvas@2.11.2) transitivePeerDependencies: - jiti - less @@ -26430,7 +26495,38 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2(encoding@0.1.13)))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2))(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@24.12.2)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/node': 24.12.2 + '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) + happy-dom: 20.9.0 + jsdom: 26.1.0(canvas@2.11.2) + transitivePeerDependencies: + - msw + + vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(happy-dom@20.9.0)(jsdom@26.1.0(canvas@2.11.2))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.5 '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) @@ -26457,7 +26553,7 @@ snapshots: '@types/node': 25.6.0 '@vitest/coverage-v8': 4.1.5(vitest@4.1.5) happy-dom: 20.9.0 - jsdom: 26.1.0(canvas@2.11.2(encoding@0.1.13)) + jsdom: 26.1.0(canvas@2.11.2) transitivePeerDependencies: - msw @@ -26859,10 +26955,6 @@ snapshots: yoctocolors@2.1.2: {} - yucca-api-client@0.1.69: - dependencies: - '@oazapfts/runtime': 1.2.0 - yup@1.7.1: dependencies: property-expr: 2.0.6 diff --git a/server/package.json b/server/package.json index ca9bc19a84..895be65aa2 100644 --- a/server/package.json +++ b/server/package.json @@ -39,6 +39,7 @@ }, "dependencies": { "@extism/extism": "2.0.0-rc13", + "@futo-org/backups-orchestrator-api": "0.1.71", "@immich/sql-tools": "^0.5.1", "@nestjs/bullmq": "^11.0.1", "@nestjs/common": "^11.0.4", @@ -97,7 +98,6 @@ "nestjs-zod": "^5.3.0", "nodemailer": "^8.0.0", "openid-client": "^6.3.3", - "orchestration-api": "0.1.69", "pg": "^8.11.3", "picomatch": "^4.0.2", "postgres": "3.4.9", diff --git a/server/src/app.module.ts b/server/src/app.module.ts index 719650bcaa..e570307f5b 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -5,8 +5,8 @@ import { ScheduleModule, SchedulerRegistry } from '@nestjs/schedule'; import { ClsModule } from 'nestjs-cls'; import { KyselyModule } from 'nestjs-kysely'; import { OpenTelemetryModule } from 'nestjs-otel'; +import { OrchestrationApiModule } from '@futo-org/backups-orchestrator-api/dist'; import { ZodSerializerInterceptor, ZodValidationPipe } from 'nestjs-zod'; -import { OrchestrationApiModule } from 'orchestration-api/dist'; import { commandsAndQuestions } from 'src/commands'; import { IWorker } from 'src/constants'; import { controllers } from 'src/controllers'; diff --git a/server/src/maintenance/maintenance-worker.service.ts b/server/src/maintenance/maintenance-worker.service.ts index 9b2dbd7077..583d866554 100644 --- a/server/src/maintenance/maintenance-worker.service.ts +++ b/server/src/maintenance/maintenance-worker.service.ts @@ -1,10 +1,10 @@ +import { EventsGateway } from '@futo-org/backups-orchestrator-api/dist'; import { Injectable, UnauthorizedException } from '@nestjs/common'; import { parse } from 'cookie'; import { NextFunction, Request, Response } from 'express'; import { jwtVerify } from 'jose'; import { readFileSync } from 'node:fs'; import { IncomingHttpHeaders } from 'node:http'; -import { EventsGateway } from 'orchestration-api/dist'; import { serverVersion } from 'src/constants'; import { StorageCore } from 'src/cores/storage.core'; import { diff --git a/server/src/repositories/event.repository.ts b/server/src/repositories/event.repository.ts index 596cb9ccc7..8cff1cbbb8 100644 --- a/server/src/repositories/event.repository.ts +++ b/server/src/repositories/event.repository.ts @@ -1,7 +1,7 @@ +import { GatewayEvent as YuccaGatewayEvent } from '@futo-org/backups-orchestrator-api/dist/events/events.gateway'; import { Injectable } from '@nestjs/common'; import { ModuleRef, Reflector } from '@nestjs/core'; import _ from 'lodash'; -import { GatewayEvent as YuccaGatewayEvent } from 'orchestration-api/dist/events/events.gateway'; import { Socket } from 'socket.io'; import { SystemConfig } from 'src/config'; import { Asset } from 'src/database'; diff --git a/server/src/services/yucca.service.ts b/server/src/services/yucca.service.ts index c8dd646731..9b589c6eb2 100644 --- a/server/src/services/yucca.service.ts +++ b/server/src/services/yucca.service.ts @@ -1,6 +1,6 @@ +import { EventsGateway, ModuleConfigRepository } from '@futo-org/backups-orchestrator-api/dist'; +import { GatewayEvent } from '@futo-org/backups-orchestrator-api/dist/events/events.gateway'; import { Injectable, OnModuleDestroy, OnModuleInit, Optional } from '@nestjs/common'; -import { EventsGateway, ModuleConfigRepository } from 'orchestration-api/dist'; -import { GatewayEvent } from 'orchestration-api/dist/events/events.gateway'; import { SystemConfig } from 'src/config'; import { StorageCore } from 'src/cores/storage.core'; import { OnEvent } from 'src/decorators'; diff --git a/web/package.json b/web/package.json index 3a90b901ed..c47151fa9a 100644 --- a/web/package.json +++ b/web/package.json @@ -25,6 +25,7 @@ }, "dependencies": { "@formatjs/icu-messageformat-parser": "^3.0.0", + "@futo-org/backups-orchestrator-ui": "0.1.71", "@immich/justified-layout-wasm": "^0.4.3", "@immich/sdk": "workspace:*", "@immich/ui": "^0.76.0", @@ -52,7 +53,6 @@ "luxon": "^3.4.4", "maplibre-gl": "^5.6.2", "media-chrome": "^4.19.0", - "orchestration-ui": "0.1.69", "pmtiles": "^4.3.0", "qrcode": "^1.5.4", "simple-icons": "^16.0.0", diff --git a/web/src/lib/components/shared-components/navigation-bar/NavigationBar.svelte b/web/src/lib/components/shared-components/navigation-bar/NavigationBar.svelte index c6cc69407d..e191d31a92 100644 --- a/web/src/lib/components/shared-components/navigation-bar/NavigationBar.svelte +++ b/web/src/lib/components/shared-components/navigation-bar/NavigationBar.svelte @@ -27,7 +27,7 @@ mdiProgressWrench, mdiTrayArrowUp, } from '@mdi/js'; - import { sdk } from 'orchestration-ui'; + import { sdk } from '@futo-org/backups-orchestrator-ui'; import { onMount } from 'svelte'; import { t } from 'svelte-i18n'; import ThemeButton from '../ThemeButton.svelte'; diff --git a/web/src/routes/(user)/backups/+page.svelte b/web/src/routes/(user)/backups/+page.svelte index 7d9410683b..9512b54354 100644 --- a/web/src/routes/(user)/backups/+page.svelte +++ b/web/src/routes/(user)/backups/+page.svelte @@ -1,6 +1,6 @@