OCA\Files_External_Ethswarm\Settings\Admin
diff --git a/cli/staging/deploy.sh b/cli/staging/deploy.sh
index 4a566a3..64f2755 100644
--- a/cli/staging/deploy.sh
+++ b/cli/staging/deploy.sh
@@ -64,7 +64,7 @@ action() {
deploy() {
local version=$1
- cd hejbit-"$version" || failed "hejbit-$version not found"
+ cd "/opt/hejbit/hejbit-$version" || failed "$version" "/opt/hejbit/hejbit-$version not found"
buffer "$(log_note "deploying hejbit-$version")"
@@ -85,6 +85,24 @@ sync_code() {
git pull 2>&1 || return 1
}
+setup_node() {
+ command -v npm > /dev/null 2>&1 && return 0
+
+ export NVM_DIR="$HOME/.nvm"
+ if [ -s "$NVM_DIR/nvm.sh" ]; then
+ . "$NVM_DIR/nvm.sh"
+
+ NODE_20_VERSION=$(nvm version 20 2> /dev/null)
+ if [ "$NODE_20_VERSION" != "N/A" ]; then
+ nvm use --silent "$NODE_20_VERSION" > /dev/null 2>&1 || return 1
+ else
+ nvm use --silent default > /dev/null 2>&1 || return 1
+ fi
+ fi
+
+ command -v npm > /dev/null 2>&1 || return 1
+}
+
build_app() {
result=$(npm install 2>&1)
status=$?
@@ -114,24 +132,19 @@ nextcloud_upgrade() {
}
cd /opt/hejbit || log_error "/opt/hejbit not found"
+
+if ! setup_node; then
+ log_error "npm not found for user $(whoami)"
+ log_error "install node/npm or configure nvm default"
+ exit 1
+fi
+
log_note "deploying hejbit to staging"
log_gap
-DEPLOYMENT=()
TIMESTAMP=$(date +%s)
-for version in {30..32}; do
- deploy "$version" &
- DEPLOYMENT+=($!)
-done
-
-statuses=0
-for pid in "${DEPLOYMENT[@]}"; do
- wait "$pid"
- statuses+=$?
+for version in {32..33}; do
+ deploy "$version"
done
-if [ $statuses -ne 0 ]; then
- log_error "failed to deploy hejbit to staging"
- exit 1
-fi
log_success "deployed hejbit to staging"
diff --git a/composer.lock b/composer.lock
index eb54f20..9e37ca0 100644
--- a/composer.lock
+++ b/composer.lock
@@ -216,5 +216,5 @@
"platform-dev": {
"ext-fileinfo": "*"
},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.9.0"
}
diff --git a/css/app.css b/css/app.css
index c1db97a..e7f3b26 100644
--- a/css/app.css
+++ b/css/app.css
@@ -1,13 +1,4 @@
.hejbit-overlay {
- position: absolute;
- top: 30px;
- left: 75px;
- width: 16px;
- height: 16px;
- pointer-events: none;
-}
-
-.hejbit-overlay-32 {
position: absolute;
top: 23px;
left: 60px;
@@ -21,11 +12,6 @@
height: 16px;
}
-.hejbit-overlay-32 svg {
- width: 16px;
- height: 16px;
-}
-
.hejbit-archive svg {
filter: grayscale(100%);
diff --git a/docker-compose.yml b/docker-compose.yml
index dceeecc..61b2c54 100755
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -105,7 +105,27 @@ services:
networks:
- backend
- adminer: # visit https://adminer.hejbit.local/?pgsql=postgres&username=swarmbox&db=swarmbox
+ rsync:
+ build:
+ context: ./docker/rsync
+ dockerfile: Dockerfile
+ restart: unless-stopped
+ cpu_shares: 512
+ mem_limit: 256m
+ volumes:
+ - nc-app:/app:ro
+ - ./dev-environment/nextcloud_source:/source
+ environment:
+ - RSYNC_CRONTAB=crontab
+ depends_on:
+ - nextcloud
+ networks:
+ - backend
+
+ adminer:
+ profiles:
+ - development
+ # visit https://adminer.hejbit.local/?pgsql=postgres&username=swarmbox&db=swarmbox
image: adminer:latest
restart: unless-stopped
# ports:
@@ -113,7 +133,6 @@ services:
networks:
- backend
- proxy
-
depends_on:
postgres:
condition: service_healthy
@@ -125,24 +144,9 @@ services:
environment:
ADMINER_DEFAULT_SERVER: postgres
- rsync:
- build:
- context: ./docker/rsync
- dockerfile: Dockerfile
- restart: unless-stopped
- cpu_shares: 512
- mem_limit: 256m
- volumes:
- - nc-app:/app:ro
- - ./dev-environment/nextcloud_source:/source
- environment:
- - RSYNC_CRONTAB=crontab
- depends_on:
- - nextcloud
- networks:
- - backend
-
flagd:
+ profiles:
+ - feature
image: ghcr.io/open-feature/flagd:latest
restart: unless-stopped
command: 'start --uri file:/etc/flagd/hejbit.flagd.json --cors-origin *'
@@ -158,10 +162,10 @@ services:
depends_on:
proxy:
condition: service_healthy
- profiles:
- - feature
onlyoffice:
+ profiles:
+ - onlyoffice
image: onlyoffice/documentserver
environment:
JWT_ENABLED: true
@@ -186,8 +190,6 @@ services:
depends_on:
proxy:
condition: service_healthy
- profiles:
- - onlyoffice
proxy:
image: lucaslorentz/caddy-docker-proxy:alpine
@@ -220,6 +222,7 @@ volumes:
onlyoffice_lib:
onlyoffice_logs:
+
networks:
frontend:
backend:
diff --git a/lib/Storage/BeeSwarm.php b/lib/Storage/BeeSwarm.php
index 88cbe46..e2a5901 100755
--- a/lib/Storage/BeeSwarm.php
+++ b/lib/Storage/BeeSwarm.php
@@ -26,7 +26,6 @@
use OC;
use OC\Files\Cache\Cache;
use OC\Files\Storage\Common;
-use OC_Helper;
use OCA\Files_External_Ethswarm\AppInfo\Application;
use OCA\Files_External_Ethswarm\Db\SwarmFile;
use OCA\Files_External_Ethswarm\Db\SwarmFileMapper;
@@ -515,7 +514,7 @@ protected function createTempFile($stream): string {
$extension = '';
$tmpFile = $this->tempManager->getTemporaryFile($extension);
$target = fopen($tmpFile, 'w');
- OC_Helper::streamCopy($stream, $target);
+ stream_copy_to_stream($stream, $target);
fclose($target);
return $tmpFile;
diff --git a/package-lock.json b/package-lock.json
index 5291f6c..325597a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,9 +12,9 @@
"@betahuhn/feedback-js": "^2.1.25",
"@material-design-icons/svg": "^0.14.15",
"@nextcloud/axios": "^2.5.1",
- "@nextcloud/dialogs": "^6.1.1",
+ "@nextcloud/dialogs": "^7.0.0",
"@nextcloud/event-bus": "^3.3.1",
- "@nextcloud/files": "^3.6.0",
+ "@nextcloud/files": "^4.0.0",
"@nextcloud/router": "^2.0.0",
"@nextcloud/vue": "^8.25.1",
"@openfeature/flagd-web-provider": "^0.7.3",
@@ -159,16 +159,15 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
- "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
- "dev": true,
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+ "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.27.0",
- "@babel/types": "^7.27.0",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
},
"engines": {
@@ -382,18 +381,18 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -439,12 +438,12 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
- "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
+ "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.0"
+ "@babel/types": "^7.29.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1613,13 +1612,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
- "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1755,6 +1754,15 @@
"postcss-selector-parser": "^6.0.13"
}
},
+ "node_modules/@ctrl/tinycolor": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+ "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -1970,29 +1978,39 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@file-type/xml": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@file-type/xml/-/xml-0.4.4.tgz",
+ "integrity": "sha512-NhCyXoHlVZ8TqM476hyzwGJ24+D5IPSaZhmrPj7qXnEVb3q6jrFzA3mM9TBpknKSI9EuQeGTKRg2DXGUwvBBoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "sax": "^1.4.1",
+ "strtok3": "^10.3.4"
+ }
+ },
"node_modules/@floating-ui/core": {
- "version": "1.6.9",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz",
- "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==",
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz",
+ "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==",
"license": "MIT",
"dependencies": {
- "@floating-ui/utils": "^0.2.9"
+ "@floating-ui/utils": "^0.2.11"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.6.13",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz",
- "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==",
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz",
+ "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==",
"license": "MIT",
"dependencies": {
- "@floating-ui/core": "^1.6.0",
- "@floating-ui/utils": "^0.2.9"
+ "@floating-ui/core": "^1.7.5",
+ "@floating-ui/utils": "^0.2.11"
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz",
- "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==",
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz",
+ "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==",
"license": "MIT"
},
"node_modules/@humanwhocodes/config-array": {
@@ -2089,35 +2107,29 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
- "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
- "dev": true,
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"license": "MIT",
"dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.0.0"
@@ -2135,17 +2147,15 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "dev": true,
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
@@ -2234,32 +2244,39 @@
}
},
"node_modules/@nextcloud/auth": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.4.0.tgz",
- "integrity": "sha512-T5OFltKd0O9Hfj47VrzE7TVjCwqOMHH9JLyjjLUR3pu2MaTY9WL6AjL79sHbFTXUaIkftZgJKu12lHYmqXnL2Q==",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.5.3.tgz",
+ "integrity": "sha512-KIhWLk0BKcP4hvypE4o11YqKOPeFMfEFjRrhUUF+h7Fry+dhTBIEIxuQPVCKXMIpjTDd8791y8V6UdRZ2feKAQ==",
"license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/browser-storage": "^0.4.0",
- "@nextcloud/event-bus": "^3.3.1"
+ "@nextcloud/browser-storage": "^0.5.0",
+ "@nextcloud/event-bus": "^3.3.2"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/auth/node_modules/@nextcloud/browser-storage": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.5.0.tgz",
+ "integrity": "sha512-usYr4GlJQlK3hgZURvklqWb9ivi7sgsSuFqXrs7s4hl1LTS4enzPrnkQumm6nRsQruf0ITS+OBsK+oELEbvYPA==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^24 || ^22 || ^20"
}
},
"node_modules/@nextcloud/axios": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.5.1.tgz",
- "integrity": "sha512-AA7BPF/rsOZWAiVxqlobGSdD67AEwjOnymZCKUIwEIBArKxYK7OQEqcILDjQwgj6G0e/Vg9Y8zTVsPZp+mlvwA==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.5.2.tgz",
+ "integrity": "sha512-8frJb77jNMbz00TjsSqs1PymY0nIEbNM4mVmwen2tXY7wNgRai6uXilIlXKOYB9jR/F/HKRj6B4vUwVwZbhdbw==",
"license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/auth": "^2.3.0",
+ "@nextcloud/auth": "^2.5.1",
"@nextcloud/router": "^3.0.1",
- "axios": "^1.6.8"
+ "axios": "^1.12.2"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/axios/node_modules/@nextcloud/router": {
@@ -2308,62 +2325,538 @@
"license": "GPL-3.0-or-later"
},
"node_modules/@nextcloud/capabilities": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.0.tgz",
- "integrity": "sha512-L1NQtOfHWzkfj0Ple1MEJt6HmOHWAi3y4qs+OnwSWexqJT0DtXTVPyRxi7ADyITwRxS5H9R/HMl6USAj4Nr1nQ==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.1.tgz",
+ "integrity": "sha512-snZ0/910zzwN6PDsIlx2Uvktr1S5x0ClhDUnfPlCj7ntNvECzuVHNY5wzby22LIkc+9ZjaDKtCwuCt2ye+9p/Q==",
"license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/initial-state": "^2.1.0"
+ "@nextcloud/initial-state": "^3.0.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/dialogs": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-6.1.1.tgz",
- "integrity": "sha512-RrvFPt8SgCkg8rC0PtMC0fvyEu77kKbY2cJ/j+6RLse3rFWcNGwgNZNuRkA/Nn4GgzQ7QNhKTqWknsy0ld6rNQ==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-7.3.0.tgz",
+ "integrity": "sha512-pFuM10Dkvip+wSBaElcbSAN7Jynp41HJUh5kndRYpJipYl0SpNfjIe32+uNfOI43/tln4ScTlrfjIX6cK+3uHg==",
"license": "AGPL-3.0-or-later",
"dependencies": {
"@mdi/js": "^7.4.47",
- "@nextcloud/auth": "^2.4.0",
- "@nextcloud/axios": "^2.5.1",
- "@nextcloud/event-bus": "^3.3.1",
- "@nextcloud/files": "^3.9.0",
- "@nextcloud/initial-state": "^2.2.0",
- "@nextcloud/l10n": "^3.1.0",
- "@nextcloud/router": "^3.0.1",
- "@nextcloud/sharing": "^0.2.4",
- "@nextcloud/typings": "^1.9.1",
- "@types/toastify-js": "^1.12.3",
- "@vueuse/core": "^11.2.0",
- "cancelable-promise": "^4.3.1",
- "p-queue": "^8.1.0",
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/axios": "^2.5.2",
+ "@nextcloud/browser-storage": "^0.5.0",
+ "@nextcloud/event-bus": "^3.3.3",
+ "@nextcloud/files": "^4.0.0",
+ "@nextcloud/initial-state": "^3.0.0",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.4.0",
+ "@nextcloud/vue": "^9.5.0",
+ "@types/toastify-js": "^1.12.4",
+ "@vueuse/core": "^14.2.1",
+ "p-queue": "^9.0.1",
"toastify-js": "^1.12.0",
- "vue-frag": "^1.4.3",
- "webdav": "^5.7.1"
+ "vue": "^3.5.28",
+ "webdav": "^5.8.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20 || ^22 || ^24"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@ckpack/vue-color": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@ckpack/vue-color/-/vue-color-1.6.0.tgz",
+ "integrity": "sha512-b9kFTKhYbNArfgP1lmnaVm0VNsWdZjqIbyHUYry7mZ+E7JeTQclbjq1+2xWn0SE3wzqRYlXmAVjECPOgteWmMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@ctrl/tinycolor": "^3.6.0",
+ "material-colors": "^1.2.6"
+ },
+ "engines": {
+ "node": ">=12"
},
"peerDependencies": {
- "@nextcloud/vue": "^8.16.0",
- "vue": "^2.7.16"
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/browser-storage": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.5.0.tgz",
+ "integrity": "sha512-usYr4GlJQlK3hgZURvklqWb9ivi7sgsSuFqXrs7s4hl1LTS4enzPrnkQumm6nRsQruf0ITS+OBsK+oELEbvYPA==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^24 || ^22 || ^20"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/dialogs/node_modules/@nextcloud/router": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.0.1.tgz",
- "integrity": "sha512-Ci/uD3x8OKHdxSqXL6gRJ+mGJOEXjeiHjj7hqsZqVTsT7kOrCjDf0/J8z5RyLlokKZ0IpSe+hGxgi3YB7Gpw3Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz",
+ "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==",
"license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/typings": "^1.7.0"
+ "@nextcloud/typings": "^1.10.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/sharing": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.4.0.tgz",
+ "integrity": "sha512-1hUNyc7uJdBpnimOnEshJjEtAPAjzDYVl6qmWqF5ZxoN9wOvbExw0QjX3xFIbHbX2dmvbRNLBj0RzLzipmZyeg==",
+ "license": "GPL-3.0-or-later",
+ "dependencies": {
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ },
+ "optionalDependencies": {
+ "@nextcloud/files": "^3.12.2 || ^4.0.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/vue": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-9.5.0.tgz",
+ "integrity": "sha512-CQxBfHhF+Q+2r7RXd+l/eSjttJU8A2JFUyq5VpvjfpIql355kejc8bbNnM1pKgGRGSBuW9qw5Ohx0puzHge10w==",
+ "license": "AGPL-3.0-or-later",
+ "dependencies": {
+ "@ckpack/vue-color": "^1.6.0",
+ "@floating-ui/dom": "^1.7.5",
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/axios": "^2.5.2",
+ "@nextcloud/browser-storage": "^0.5.0",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/event-bus": "^3.3.3",
+ "@nextcloud/initial-state": "^3.0.0",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "@vuepic/vue-datepicker": "^11.0.3",
+ "@vueuse/components": "^14.2.0",
+ "@vueuse/core": "^14.0.0",
+ "blurhash": "^2.0.5",
+ "clone": "^2.1.2",
+ "debounce": "^3.0.0",
+ "dompurify": "^3.3.1",
+ "emoji-mart-vue-fast": "^15.0.5",
+ "escape-html": "^1.0.3",
+ "floating-vue": "^5.2.2",
+ "focus-trap": "^8.0.0",
+ "linkifyjs": "^4.3.2",
+ "p-queue": "^9.1.0",
+ "rehype-external-links": "^3.0.0",
+ "rehype-highlight": "^7.0.2",
+ "rehype-react": "^8.0.0",
+ "remark-breaks": "^4.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.1.2",
+ "remark-unlink-protocols": "^1.0.0",
+ "splitpanes": "^4.0.4",
+ "striptags": "^3.2.0",
+ "tabbable": "^6.4.0",
+ "tributejs": "^5.1.3",
+ "ts-md5": "^2.0.1",
+ "unified": "^11.0.5",
+ "unist-builder": "^4.0.0",
+ "unist-util-visit": "^5.1.0",
+ "vue": "^3.5.18",
+ "vue-router": "^5.0.2",
+ "vue-select": "^4.0.0-beta.6"
+ },
+ "engines": {
+ "node": "^20.11.0 || ^22 || ^24"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/vue/node_modules/@nextcloud/files": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
+ "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
+ "license": "AGPL-3.0-or-later",
+ "optional": true,
+ "dependencies": {
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "cancelable-promise": "^4.3.1",
+ "is-svg": "^6.1.0",
+ "typescript-event-target": "^1.1.1",
+ "webdav": "^5.8.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/vue/node_modules/@nextcloud/sharing": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
+ "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
+ "license": "GPL-3.0-or-later",
+ "dependencies": {
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ },
+ "optionalDependencies": {
+ "@nextcloud/files": "^3.12.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@types/web-bluetooth": {
+ "version": "0.0.21",
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz",
+ "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==",
+ "license": "MIT"
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@vue/compiler-sfc": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz",
+ "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@vue/compiler-core": "3.5.29",
+ "@vue/compiler-dom": "3.5.29",
+ "@vue/compiler-ssr": "3.5.29",
+ "@vue/shared": "3.5.29",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.21",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@vue/server-renderer": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.29.tgz",
+ "integrity": "sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.29",
+ "@vue/shared": "3.5.29"
+ },
+ "peerDependencies": {
+ "vue": "3.5.29"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@vuepic/vue-datepicker": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-11.0.3.tgz",
+ "integrity": "sha512-sb2adwqwK2PizLQOpxCYps2SwhVT6/ic2HMIOqHJXuYa6iAJZWGL5YVlS7O4aW+sk6ZyxlDURLO7kDZPL4HB/w==",
+ "license": "MIT",
+ "dependencies": {
+ "date-fns": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ },
+ "peerDependencies": {
+ "vue": ">=3.3.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@vueuse/components": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-14.2.1.tgz",
+ "integrity": "sha512-wB0SvwJ22mNm1hWCMI1wTWz4x55nDTugT5RIg/KCwlWc1vITWL6ry5VTU3SQzsMD2XcazJK8Be1siIsrBb/Vcw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vueuse/core": "14.2.1",
+ "@vueuse/shared": "14.2.1"
+ },
+ "peerDependencies": {
+ "vue": "^3.5.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@vueuse/core": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.2.1.tgz",
+ "integrity": "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.21",
+ "@vueuse/metadata": "14.2.1",
+ "@vueuse/shared": "14.2.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vue": "^3.5.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@vueuse/metadata": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.2.1.tgz",
+ "integrity": "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@vueuse/shared": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.2.1.tgz",
+ "integrity": "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vue": "^3.5.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/chokidar": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/debounce": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-3.0.0.tgz",
+ "integrity": "sha512-64byRbF0/AirwbuHqB3/ZpMG9/nckDa6ZA0yd6UnaQNwbbemCOwvz2sL5sjXLHhZHADyiwLm0M5qMhltUUx+TA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/floating-vue": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-5.2.2.tgz",
+ "integrity": "sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/dom": "~1.1.1",
+ "vue-resize": "^2.0.0-alpha.1"
+ },
+ "peerDependencies": {
+ "@nuxt/kit": "^3.2.0",
+ "vue": "^3.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@nuxt/kit": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/floating-vue/node_modules/@floating-ui/dom": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz",
+ "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.1.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/focus-trap": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-8.0.0.tgz",
+ "integrity": "sha512-Aa84FOGHs99vVwufDMdq2qgOwXPC2e9U66GcqBhn1/jEHPDhJaP8PYhkIbqG9lhfL5Kddk/567lj46LLHYCRUw==",
+ "license": "MIT",
+ "dependencies": {
+ "tabbable": "^6.4.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/p-queue": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.1.0.tgz",
+ "integrity": "sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^5.0.1",
+ "p-timeout": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/p-timeout": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz",
+ "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/readdirp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
+ "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/rehype-react": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-react/-/rehype-react-8.0.0.tgz",
+ "integrity": "sha512-vzo0YxYbB2HE+36+9HWXVdxNoNDubx63r5LBzpxBGVWM8s9mdnMdbmuJBAX6TTyuGdZjZix6qU3GcSuKCIWivw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-to-jsx-runtime": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/splitpanes": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-4.0.4.tgz",
+ "integrity": "sha512-RbysugZhjbCw5fgplvk3hOXr41stahQDtZhHVkhnnJI6H4wlGDhM2kIpbehy7v92duy9GnMa8zIhHigIV1TWtg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antoniandre"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/vue": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.29.tgz",
+ "integrity": "sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.29",
+ "@vue/compiler-sfc": "3.5.29",
+ "@vue/runtime-dom": "3.5.29",
+ "@vue/server-renderer": "3.5.29",
+ "@vue/shared": "3.5.29"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/vue-resize": {
+ "version": "2.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz",
+ "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/vue-router": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.0.3.tgz",
+ "integrity": "sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/generator": "^7.28.6",
+ "@vue-macros/common": "^3.1.1",
+ "@vue/devtools-api": "^8.0.6",
+ "ast-walker-scope": "^0.8.3",
+ "chokidar": "^5.0.0",
+ "json5": "^2.2.3",
+ "local-pkg": "^1.1.2",
+ "magic-string": "^0.30.21",
+ "mlly": "^1.8.0",
+ "muggle-string": "^0.4.1",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3",
+ "scule": "^1.3.0",
+ "tinyglobby": "^0.2.15",
+ "unplugin": "^3.0.0",
+ "unplugin-utils": "^0.3.1",
+ "yaml": "^2.8.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@pinia/colada": ">=0.21.2",
+ "@vue/compiler-sfc": "^3.5.17",
+ "pinia": "^3.0.4",
+ "vue": "^3.5.0"
+ },
+ "peerDependenciesMeta": {
+ "@pinia/colada": {
+ "optional": true
+ },
+ "@vue/compiler-sfc": {
+ "optional": true
+ },
+ "pinia": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/vue-select": {
+ "version": "4.0.0-beta.6",
+ "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-4.0.0-beta.6.tgz",
+ "integrity": "sha512-K+zrNBSpwMPhAxYLTCl56gaMrWZGgayoWCLqe5rWwkB8aUbAUh7u6sXjIR7v4ckp2WKC7zEEUY27g6h1MRsIHw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "vue": "3.x"
}
},
"node_modules/@nextcloud/eslint-config": {
@@ -2426,23 +2919,22 @@
}
},
"node_modules/@nextcloud/event-bus": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.3.2.tgz",
- "integrity": "sha512-1Qfs6i7Tz2qd1A33NpBQOt810ydHIRjhyXMFwSEkYX2yUI80lAk/sWO8HIB2Fqp+iffhyviPPcQYoytMDRyDNw==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.3.3.tgz",
+ "integrity": "sha512-zIfvKmUGkXpVzRKoXrcO9hkoiKDm65fqNxy/XIbIxrQhZByPq3gDkjBpnu3V5Gs8JdYwa73R8DjzV9oH8HYhIg==",
"license": "GPL-3.0-or-later",
"dependencies": {
- "@types/semver": "^7.5.8",
- "semver": "^7.6.3"
+ "@types/semver": "^7.7.0",
+ "semver": "^7.7.2"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20 || ^22 || ^24"
}
},
"node_modules/@nextcloud/event-bus/node_modules/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -2452,39 +2944,84 @@
}
},
"node_modules/@nextcloud/files": {
- "version": "3.10.2",
- "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.10.2.tgz",
- "integrity": "sha512-8k6zN3nvGW8nEV5Db5DyfqcyK99RWw1iOSPIafi2RttiRQGpFzHlnF2EoM4buH5vWzI39WEvJnfuLZpkPX0cFw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-4.0.0.tgz",
+ "integrity": "sha512-TmecnZIS+PGWGtRh7RpGEboCT4K6iTbHULUcfR6hs3eEzjDVsCc1Ldf8popGY/70lbpdlfYle8xbXnPIo3qaXA==",
"license": "AGPL-3.0-or-later",
"dependencies": {
- "@nextcloud/auth": "^2.4.0",
- "@nextcloud/capabilities": "^1.2.0",
- "@nextcloud/l10n": "^3.1.0",
- "@nextcloud/logger": "^3.0.2",
- "@nextcloud/paths": "^2.2.1",
- "@nextcloud/router": "^3.0.1",
- "@nextcloud/sharing": "^0.2.4",
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "is-svg": "^6.1.0",
+ "typescript-event-target": "^1.1.2",
+ "webdav": "^5.9.0"
+ },
+ "engines": {
+ "node": "^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/files/node_modules/@nextcloud/files": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
+ "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
+ "license": "AGPL-3.0-or-later",
+ "optional": true,
+ "dependencies": {
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
"cancelable-promise": "^4.3.1",
- "is-svg": "^5.1.0",
+ "is-svg": "^6.1.0",
"typescript-event-target": "^1.1.1",
- "webdav": "^5.7.1"
+ "webdav": "^5.8.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/files/node_modules/@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/files/node_modules/@nextcloud/router": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.0.1.tgz",
- "integrity": "sha512-Ci/uD3x8OKHdxSqXL6gRJ+mGJOEXjeiHjj7hqsZqVTsT7kOrCjDf0/J8z5RyLlokKZ0IpSe+hGxgi3YB7Gpw3Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz",
+ "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==",
"license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/typings": "^1.7.0"
+ "@nextcloud/typings": "^1.10.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/files/node_modules/@nextcloud/sharing": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
+ "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
+ "license": "GPL-3.0-or-later",
+ "dependencies": {
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ },
+ "optionalDependencies": {
+ "@nextcloud/files": "^3.12.0"
}
},
"node_modules/@nextcloud/initial-state": {
@@ -2498,21 +3035,19 @@
}
},
"node_modules/@nextcloud/l10n": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.2.0.tgz",
- "integrity": "sha512-5TbIc415C0r8YUA0i4bOXKL0iInY8ka+t8PGHihqevzqf/LAkFatd+p6mCLJT3tQPxgkcIRCIuyOkiUM0Lyw5Q==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz",
+ "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==",
"license": "GPL-3.0-or-later",
"dependencies": {
"@nextcloud/router": "^3.0.1",
"@nextcloud/typings": "^1.9.1",
- "@types/dompurify": "^3.2.0",
"@types/escape-html": "^1.0.4",
- "dompurify": "^3.2.4",
+ "dompurify": "^3.2.6",
"escape-html": "^1.0.3"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20 || ^22 || ^24"
}
},
"node_modules/@nextcloud/l10n/node_modules/@nextcloud/router": {
@@ -2529,26 +3064,24 @@
}
},
"node_modules/@nextcloud/logger": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.2.tgz",
- "integrity": "sha512-wByt0R0/6QC44RBpaJr1MWghjjOxk/pRbACHo/ZWWKht1qYbJRHB4GtEi+35KEIHY07ZpqxiDk6dIRuN7sXYWQ==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.3.tgz",
+ "integrity": "sha512-TcbVRL4/O5ffI1RXFmQAFD3gwwT15AAdr1770x+RNqVvfBdoGVyhzOwCIyA5Vfc3fA1iJXFa+rE6buJZSoqlcw==",
"license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/auth": "^2.3.0"
+ "@nextcloud/auth": "^2.5.3"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.2.1.tgz",
- "integrity": "sha512-M3ShLjrxR7B48eKThLMoqbxTqTKyQXcwf9TgeXQGbCIhiHoXU6as5j8l5qNv/uZlANokVdowpuWHBi3b2+YNNA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-3.1.0.tgz",
+ "integrity": "sha512-vtFYA/kthaUDzu6KejTOL1OwnOy7/yynq5zdB/UBpYacAWjUX5Ddh4OMWx3rEavkBJ9/QGhrFryNJLjNfe8OQA==",
"license": "GPL-3.0-or-later",
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/router": {
@@ -2603,16 +3136,15 @@
}
},
"node_modules/@nextcloud/typings": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.9.1.tgz",
- "integrity": "sha512-i0l/L5gKW8EACbXHVxXM6wn3sUhY2qmnL2OijppzU4dENC7/hqySMQDer7/+cJbNSNG7uHF/Z+9JmHtDfRfuGg==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.10.0.tgz",
+ "integrity": "sha512-SMC42rDjOH3SspPTLMZRv76ZliHpj2JJkF8pGLP8l1QrVTZxE47Qz5qeKmbj2VL+dRv2e/NgixlAFmzVnxkhqg==",
"license": "GPL-3.0-or-later",
"dependencies": {
"@types/jquery": "3.5.16"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/vue": {
@@ -3188,6 +3720,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "license": "MIT"
+ },
"node_modules/@tybys/wasm-util": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz",
@@ -3251,16 +3789,6 @@
"@types/ms": "*"
}
},
- "node_modules/@types/dompurify": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.2.0.tgz",
- "integrity": "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==",
- "deprecated": "This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.",
- "license": "MIT",
- "dependencies": {
- "dompurify": "*"
- }
- },
"node_modules/@types/escape-html": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz",
@@ -3293,9 +3821,17 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
- "dev": true,
"license": "MIT"
},
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
+ "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
"node_modules/@types/express": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
@@ -3554,9 +4090,9 @@
}
},
"node_modules/@types/toastify-js": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/@types/toastify-js/-/toastify-js-1.12.3.tgz",
- "integrity": "sha512-9RjLlbAHMSaae/KZNHGv19VG4gcLIm3YjvacCXBtfMfYn26h76YP5oxXI8k26q4iKXCB9LNfv18lsoS0JnFPTg==",
+ "version": "1.12.4",
+ "resolved": "https://registry.npmjs.org/@types/toastify-js/-/toastify-js-1.12.4.tgz",
+ "integrity": "sha512-zfZHU4tKffPCnZRe7pjv/eFKzTVHozKewFCKaCjZ4gFinKgJRz/t0bkZiMCXJxPhv/ZoeDGNOeRD09R0kQZ/nw==",
"license": "MIT"
},
"node_modules/@types/trusted-types": {
@@ -4098,6 +4634,85 @@
],
"peer": true
},
+ "node_modules/@vue-macros/common": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.1.2.tgz",
+ "integrity": "sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-sfc": "^3.5.22",
+ "ast-kit": "^2.1.2",
+ "local-pkg": "^1.1.2",
+ "magic-string-ast": "^1.0.2",
+ "unplugin-utils": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/vue-macros"
+ },
+ "peerDependencies": {
+ "vue": "^2.7.0 || ^3.2.25"
+ },
+ "peerDependenciesMeta": {
+ "vue": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue-macros/common/node_modules/@vue/compiler-sfc": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz",
+ "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@vue/compiler-core": "3.5.29",
+ "@vue/compiler-dom": "3.5.29",
+ "@vue/compiler-ssr": "3.5.29",
+ "@vue/shared": "3.5.29",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.21",
+ "postcss": "^8.5.6",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz",
+ "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@vue/shared": "3.5.29",
+ "entities": "^7.0.1",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-core/node_modules/entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz",
+ "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.29",
+ "@vue/shared": "3.5.29"
+ }
+ },
"node_modules/@vue/compiler-sfc": {
"version": "2.7.16",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
@@ -4111,6 +4726,16 @@
"prettier": "^1.18.2 || ^2.0.0"
}
},
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.29.tgz",
+ "integrity": "sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.29",
+ "@vue/shared": "3.5.29"
+ }
+ },
"node_modules/@vue/component-compiler-utils": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz",
@@ -4174,6 +4799,33 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/@vue/devtools-api": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-8.0.7.tgz",
+ "integrity": "sha512-tc1TXAxclsn55JblLkFVcIRG7MeSJC4fWsPjfM7qu/IcmPUYnQ5Q8vzWwBpyDY24ZjmZTUCCwjRSNbx58IhlAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-kit": "^8.0.7"
+ }
+ },
+ "node_modules/@vue/devtools-kit": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.0.7.tgz",
+ "integrity": "sha512-H6esJGHGl5q0E9iV3m2EoBQHJ+V83WMW83A0/+Fn95eZ2iIvdsq4+UCS6yT/Fdd4cGZSchx/MdWDreM3WqMsDw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-shared": "^8.0.7",
+ "birpc": "^2.6.1",
+ "hookable": "^5.5.3",
+ "perfect-debounce": "^2.0.0"
+ }
+ },
+ "node_modules/@vue/devtools-shared": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.0.7.tgz",
+ "integrity": "sha512-CgAb9oJH5NUmbQRdYDj/1zMiaICYSLtm+B1kxcP72LBrifGAjUmt8bx52dDH1gWRPlQgxGPqpAMKavzVirAEhA==",
+ "license": "MIT"
+ },
"node_modules/@vue/eslint-config-typescript": {
"version": "13.0.0",
"resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz",
@@ -4200,6 +4852,43 @@
}
}
},
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.29.tgz",
+ "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.29"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.29.tgz",
+ "integrity": "sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.29",
+ "@vue/shared": "3.5.29"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.29.tgz",
+ "integrity": "sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.29",
+ "@vue/runtime-core": "3.5.29",
+ "@vue/shared": "3.5.29",
+ "csstype": "^3.2.3"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.29",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz",
+ "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==",
+ "license": "MIT"
+ },
"node_modules/@vueuse/components": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/@vueuse/components/-/components-11.3.0.tgz",
@@ -4585,10 +5274,9 @@
}
},
"node_modules/acorn": {
- "version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
- "dev": true,
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -4904,6 +5592,38 @@
"util": "^0.12.5"
}
},
+ "node_modules/ast-kit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz",
+ "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.5",
+ "pathe": "^2.0.3"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
+ "node_modules/ast-walker-scope": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.8.3.tgz",
+ "integrity": "sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.4",
+ "ast-kit": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
"node_modules/astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@@ -4947,13 +5667,13 @@
}
},
"node_modules/axios": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
- "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
+ "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
"license": "MIT",
"dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
+ "follow-redirects": "^1.15.11",
+ "form-data": "^4.0.5",
"proxy-from-env": "^1.1.0"
}
},
@@ -5090,6 +5810,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/birpc": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz",
+ "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@@ -5588,7 +6317,8 @@
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/cancelable-promise/-/cancelable-promise-4.3.1.tgz",
"integrity": "sha512-A/8PwLk/T7IJDfUdQ68NR24QHa8rIlnN/stiJEBo6dmVUkD4K14LswG0w3VwdeK/o7qOwRUR1k2MhK5Rpy2m7A==",
- "license": "MIT"
+ "license": "MIT",
+ "optional": true
},
"node_modules/caniuse-lite": {
"version": "1.0.30001715",
@@ -5611,6 +6341,16 @@
],
"license": "CC-BY-4.0"
},
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -5647,6 +6387,36 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
@@ -5891,6 +6661,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/confbox": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz",
+ "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==",
+ "license": "MIT"
+ },
"node_modules/connect-history-api-fallback": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
@@ -6219,9 +6995,9 @@
}
},
"node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"license": "MIT"
},
"node_modules/data-uri-to-buffer": {
@@ -6287,6 +7063,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/date-fns": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
"node_modules/date-format-parse": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.7.tgz",
@@ -6658,10 +7444,13 @@
}
},
"node_modules/dompurify": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz",
- "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.2.tgz",
+ "integrity": "sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==",
"license": "(MPL-2.0 OR Apache-2.0)",
+ "engines": {
+ "node": ">=20"
+ },
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
}
@@ -6733,9 +7522,9 @@
"license": "MIT"
},
"node_modules/emoji-mart-vue-fast": {
- "version": "15.0.4",
- "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.4.tgz",
- "integrity": "sha512-OjuxqoMJRTTG7Vevz0mR1ZnqY1DI8gGnmoskuuC8qL8VwwTjrGdwAO4WRWtAUN8P6Di7kxvY6cUgNETNFmbP4A==",
+ "version": "15.0.5",
+ "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-15.0.5.tgz",
+ "integrity": "sha512-wnxLor8ggpqshoOPwIc33MdOC3A1XFeDLgUwYLPtNPL8VeAtXJAVrnFq1CN5PeCYAFoLo4IufHQZ9CfHD4IZiw==",
"license": "BSD-3-Clause",
"dependencies": {
"@babel/runtime": "^7.18.6",
@@ -7890,6 +8679,22 @@
"node": ">=4.0"
}
},
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+ "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
@@ -8051,6 +8856,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/exsolve": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz",
+ "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==",
+ "license": "MIT"
+ },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -8123,10 +8934,23 @@
],
"license": "BSD-3-Clause"
},
+ "node_modules/fast-xml-builder": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz",
+ "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/fast-xml-parser": {
"version": "4.5.3",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
"integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -8373,9 +9197,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
"funding": [
{
"type": "individual",
@@ -8409,14 +9233,15 @@
}
},
"node_modules/form-data": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
- "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
+ "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
"mime-types": "^2.1.12"
},
"engines": {
@@ -8980,6 +9805,56 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hast-util-to-jsx-runtime": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
+ "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-js": "^1.0.0",
+ "unist-util-position": "^5.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-jsx-runtime/node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-jsx-runtime/node_modules/property-information": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+ "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/hast-util-to-text": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
@@ -9037,6 +9912,12 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
+ "node_modules/hookable": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
+ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
+ "license": "MIT"
+ },
"node_modules/hosted-git-info": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
@@ -9574,6 +10455,30 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/is-arguments": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
@@ -9793,6 +10698,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
@@ -9877,6 +10792,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/is-map": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
@@ -10043,15 +10968,15 @@
}
},
"node_modules/is-svg": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-5.1.0.tgz",
- "integrity": "sha512-uVg5yifaTxHoefNf5Jcx+i9RZe2OBYd/UStp1umx+EERa4xGRa3LLGXjoEph43qUORC0qkafUgrXZ6zzK89yGA==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-6.1.0.tgz",
+ "integrity": "sha512-i7YPdvYuSCYcaLQrKwt8cvKTlwHcdA6Hp8N9SO3Q5jIzo8x6kH3N47W0BvPP7NdxVBmIHx7X9DK36czYYW7lHg==",
"license": "MIT",
"dependencies": {
- "fast-xml-parser": "^4.4.1"
+ "@file-type/xml": "^0.4.3"
},
"engines": {
- "node": ">=14.16"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -10257,7 +11182,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
@@ -10306,7 +11230,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
"license": "MIT",
"bin": {
"json5": "lib/cli.js"
@@ -10390,11 +11313,10 @@
}
},
"node_modules/linkifyjs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.2.0.tgz",
- "integrity": "sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw==",
- "license": "MIT",
- "peer": true
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz",
+ "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==",
+ "license": "MIT"
},
"node_modules/loader-runner": {
"version": "4.3.0",
@@ -10434,6 +11356,23 @@
"json5": "lib/cli.js"
}
},
+ "node_modules/local-pkg": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz",
+ "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==",
+ "license": "MIT",
+ "dependencies": {
+ "mlly": "^1.7.4",
+ "pkg-types": "^2.3.0",
+ "quansync": "^0.2.11"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -10484,6 +11423,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/lowlight": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.3.0.tgz",
@@ -10509,6 +11458,30 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/magic-string-ast": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-1.0.3.tgz",
+ "integrity": "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==",
+ "license": "MIT",
+ "dependencies": {
+ "magic-string": "^0.30.19"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
"node_modules/map-obj": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
@@ -10571,6 +11544,20 @@
"safe-buffer": "^5.1.2"
}
},
+ "node_modules/mdast-squeeze-paragraphs": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-6.0.0.tgz",
+ "integrity": "sha512-6NDbJPTg0M0Ye+TlYwX1KJ1LFbp515P2immRJyJQhc9Na9cetHzSoHNYIQcXpANEAP1sm9yd/CTZU2uHqR5A+w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-find-and-replace": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
@@ -10587,36 +11574,96 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mdast-util-from-markdown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
- "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
+ "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
+ "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
+ "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+ "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
"license": "MIT",
"dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
"@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "decode-named-character-reference": "^1.0.0",
"devlop": "^1.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark": "^4.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0"
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
},
"funding": {
"type": "opencollective",
@@ -10637,6 +11684,20 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-to-hast": {
"version": "13.2.0",
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
@@ -10658,6 +11719,27 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-to-string": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
@@ -11373,12 +12455,47 @@
"node": ">= 6"
}
},
+ "node_modules/mlly": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.1.tgz",
+ "integrity": "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.16.0",
+ "pathe": "^2.0.3",
+ "pkg-types": "^1.3.1",
+ "ufo": "^1.6.3"
+ }
+ },
+ "node_modules/mlly/node_modules/confbox": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
+ "license": "MIT"
+ },
+ "node_modules/mlly/node_modules/pkg-types": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
+ "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.1"
+ }
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
+ "node_modules/muggle-string": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
+ "license": "MIT"
+ },
"node_modules/multicast-dns": {
"version": "7.2.5",
"resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
@@ -11988,6 +13105,31 @@
"node": ">= 0.10"
}
},
+ "node_modules/parse-entities": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
+ "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-entities/node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
+ "license": "MIT"
+ },
"node_modules/parse-json": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@@ -12084,6 +13226,12 @@
"node": ">=8"
}
},
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "license": "MIT"
+ },
"node_modules/pbkdf2": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
@@ -12101,6 +13249,12 @@
"node": ">=0.12"
}
},
+ "node_modules/perfect-debounce": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz",
+ "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==",
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -12224,6 +13378,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/pkg-types": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
+ "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.2.2",
+ "exsolve": "^1.0.7",
+ "pathe": "^2.0.3"
+ }
+ },
"node_modules/possible-typed-array-names": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
@@ -12235,9 +13400,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.3",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
- "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+ "version": "8.5.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
+ "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
"funding": [
{
"type": "opencollective",
@@ -12254,7 +13419,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.8",
+ "nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -12593,6 +13758,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/quansync": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz",
+ "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/antfu"
+ },
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/querystring-es3": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
@@ -13172,6 +14353,17 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remark-unlink-protocols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/remark-unlink-protocols/-/remark-unlink-protocols-1.0.0.tgz",
+ "integrity": "sha512-5j/F28jhFmxeyz8nuJYYIWdR4nNpKWZ8A+tVwnK/0pq7Rjue33CINEYSckSq2PZvedhKUwbn08qyiuGoPLBung==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-squeeze-paragraphs": "^6.0.0",
+ "unist-util-visit": "^5.0.0"
+ }
+ },
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -13487,6 +14679,15 @@
}
}
},
+ "node_modules/sax": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz",
+ "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
"node_modules/schema-utils": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
@@ -13507,6 +14708,12 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/scule": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
+ "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
+ "license": "MIT"
+ },
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -14289,6 +15496,20 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -14361,6 +15582,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
"integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -14369,6 +15591,22 @@
],
"license": "MIT"
},
+ "node_modules/strtok3": {
+ "version": "10.3.4",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz",
+ "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
"node_modules/style-loader": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz",
@@ -14393,6 +15631,30 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/style-to-js": {
+ "version": "1.1.21",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
+ "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "style-to-object": "1.0.14"
+ }
+ },
+ "node_modules/style-to-js/node_modules/inline-style-parser": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
+ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
+ "license": "MIT"
+ },
+ "node_modules/style-to-js/node_modules/style-to-object": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz",
+ "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.7"
+ }
+ },
"node_modules/style-to-object": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
@@ -14719,9 +15981,9 @@
"dev": true
},
"node_modules/tabbable": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
- "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz",
+ "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==",
"license": "MIT"
},
"node_modules/table": {
@@ -14870,15 +16132,13 @@
"license": "MIT"
},
"node_modules/tinyglobby": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
- "dev": true,
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
},
"engines": {
"node": ">=12.0.0"
@@ -14888,12 +16148,13 @@
}
},
"node_modules/tinyglobby/node_modules/fdir": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
- "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
- "dev": true,
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"license": "MIT",
- "peer": true,
+ "engines": {
+ "node": ">=12.0.0"
+ },
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -14904,12 +16165,10 @@
}
},
"node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -14999,6 +16258,15 @@
"typescript": ">=4.2.0"
}
},
+ "node_modules/ts-md5": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ts-md5/-/ts-md5-2.0.1.tgz",
+ "integrity": "sha512-yF35FCoEOFBzOclSkMNEUbFQZuv89KEQ+5Xz03HrMSGUGB1+r+El+JiGOFwsP4p9RFNzwlrydYoTLvPOuICl9w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/tsconfig-paths": {
"version": "3.15.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
@@ -15160,7 +16428,7 @@
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
- "dev": true,
+ "devOptional": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
@@ -15172,9 +16440,15 @@
}
},
"node_modules/typescript-event-target": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.1.tgz",
- "integrity": "sha512-dFSOFBKV6uwaloBCCUhxlD3Pr/P1a/tJdcmPrTXCHlEFD3faj0mztjcGn6VBAhQ0/Bdy8K3VWrrqwbt/ffsYsg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.2.tgz",
+ "integrity": "sha512-TvkrTUpv7gCPlcnSoEwUVUBwsdheKm+HF5u2tPAKubkIGMfovdSizCTaZRY/NhR8+Ijy8iZZUapbVQAsNrkFrw==",
+ "license": "MIT"
+ },
+ "node_modules/ufo": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz",
+ "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==",
"license": "MIT"
},
"node_modules/unbox-primitive": {
@@ -15345,9 +16619,9 @@
}
},
"node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz",
+ "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -15383,6 +16657,60 @@
"node": ">= 0.8"
}
},
+ "node_modules/unplugin": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.0.0.tgz",
+ "integrity": "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/remapping": "^2.3.5",
+ "picomatch": "^4.0.3",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/unplugin-utils": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz",
+ "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==",
+ "license": "MIT",
+ "dependencies": {
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
+ "node_modules/unplugin-utils/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/unplugin/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/unrs-resolver": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.7.0.tgz",
@@ -15858,16 +17186,16 @@
}
},
"node_modules/webdav": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.8.0.tgz",
- "integrity": "sha512-iuFG7NamJ41Oshg4930iQgfIpRrUiatPWIekeznYgEf2EOraTRcDPTjy7gIOMtkdpKTaqPk1E68NO5PAGtJahA==",
+ "version": "5.9.0",
+ "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.9.0.tgz",
+ "integrity": "sha512-OMJ6wtK1WvCO++aOLoQgE96S8KT4e5aaClWHmHXfFU369r4eyELN569B7EqT4OOUb99mmO58GkyuiCv/Ag6J0Q==",
"license": "MIT",
"dependencies": {
"@buttercup/fetch": "^0.2.1",
"base-64": "^1.0.0",
"byte-length": "^1.0.2",
- "entities": "^6.0.0",
- "fast-xml-parser": "^4.5.1",
+ "entities": "^6.0.1",
+ "fast-xml-parser": "^5.3.4",
"hot-patcher": "^2.0.1",
"layerr": "^3.0.0",
"md5": "^2.3.0",
@@ -15883,9 +17211,9 @@
}
},
"node_modules/webdav/node_modules/entities": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz",
- "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
@@ -15894,6 +17222,37 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/webdav/node_modules/fast-xml-parser": {
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.2.tgz",
+ "integrity": "sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "fast-xml-builder": "^1.0.0",
+ "strnum": "^2.1.2"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/webdav/node_modules/strnum": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz",
+ "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/webpack": {
"version": "5.99.6",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz",
@@ -16157,6 +17516,12 @@
"node": ">=10.13.0"
}
},
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
+ "license": "MIT"
+ },
"node_modules/websocket-driver": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
@@ -16387,6 +17752,21 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/yaml": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
+ "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
"node_modules/yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
@@ -16409,6 +17789,16 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
}
}
}
diff --git a/package.json b/package.json
index 91f34ea..c9ff928 100644
--- a/package.json
+++ b/package.json
@@ -27,9 +27,9 @@
"@betahuhn/feedback-js": "^2.1.25",
"@material-design-icons/svg": "^0.14.15",
"@nextcloud/axios": "^2.5.1",
- "@nextcloud/dialogs": "^6.1.1",
+ "@nextcloud/dialogs": "^7.0.0",
"@nextcloud/event-bus": "^3.3.1",
- "@nextcloud/files": "^3.6.0",
+ "@nextcloud/files": "^4.0.0",
"@nextcloud/router": "^2.0.0",
"@nextcloud/vue": "^8.25.1",
"@openfeature/flagd-web-provider": "^0.7.3",
diff --git a/src/app/dav.js b/src/app/dav.js
index fc42fda..0b2da88 100644
--- a/src/app/dav.js
+++ b/src/app/dav.js
@@ -1,13 +1,4 @@
-import { registerDavProperty } from "@nextcloud/files";
+import { registerDavPropertyCompat } from "@/util/FilesCompatibility";
-const registeredProperties = new Set();
-
-const registerDavPropertyIfNeeded = (property) => {
- if (!registeredProperties.has(property)) {
- registerDavProperty(property);
- registeredProperties.add(property);
- }
-};
-
-registerDavPropertyIfNeeded("nc:ethswarm-fileref");
-registerDavPropertyIfNeeded("nc:ethswarm-node");
+registerDavPropertyCompat("nc:ethswarm-fileref");
+registerDavPropertyCompat("nc:ethswarm-node");
diff --git a/src/app/files/actions/archive.js b/src/app/files/actions/archive.js
index 03e7638..6a29744 100644
--- a/src/app/files/actions/archive.js
+++ b/src/app/files/actions/archive.js
@@ -1,4 +1,3 @@
-import { FileAction, registerFileAction } from "@nextcloud/files";
import axios from "@nextcloud/axios";
import { showError, showSuccess } from "@nextcloud/dialogs";
import { emit } from "@nextcloud/event-bus";
@@ -6,81 +5,78 @@ import ArchiveSvg from "@material-design-icons/svg/filled/archive.svg";
import UnarchiveSvg from "@material-design-icons/svg/filled/unarchive.svg";
import FilesHelper from "@/util/FilesHelper";
import SvgHelper from "@/util/SvgHelper";
+import { registerFileActionCompat } from "@/util/FilesCompatibility";
-registerFileAction(
- new FileAction({
- id: "archiveAction",
- displayName(nodes) {
- return t(
- "files_external_ethswarm",
- FilesHelper.isArchive(nodes) ? "Restore" : "Archive"
+registerFileActionCompat({
+ id: "archiveAction",
+ displayName({ nodes }) {
+ return t(
+ "files_external_ethswarm",
+ FilesHelper.isArchive(nodes) ? "Restore" : "Archive"
+ );
+ },
+ iconSvgInline({ nodes }) {
+ const logo = FilesHelper.isArchive(nodes) ? UnarchiveSvg : ArchiveSvg;
+ return SvgHelper.convert(logo);
+ },
+ enabled({ nodes }) {
+ if (nodes[0].attributes["ethswarm-node"]) {
+ return !(
+ FilesHelper.isRoot(nodes) || FilesHelper.isArchiveFolder(nodes)
);
- },
- iconSvgInline(nodes) {
- const logo = FilesHelper.isArchive(nodes)
- ? UnarchiveSvg
- : ArchiveSvg;
- return SvgHelper.convert(logo);
- },
- enabled(files) {
- if (files[0].attributes["ethswarm-node"]) {
- return !(
- FilesHelper.isRoot(files) ||
- FilesHelper.isArchiveFolder(files)
- );
- }
- return false;
- },
- async exec(node) {
- const action = FilesHelper.isArchive(node)
- ? "unarchive"
- : "archive";
- if (action === "unarchive") {
- const path = await FilesHelper.locationPicker(
- node,
- "Restore",
- UnarchiveSvg
- );
- const destination = FilesHelper.getPathParts(path)
- .slice(1)
- .join("/");
- await axios({
- method: "post",
- url: node.encodedSource,
- headers: {
- "Hejbit-Action": action,
- Destination: destination,
- },
- }).then((response) => {
- if (response.data.status === true) {
- emit("files:node:deleted", node);
- showSuccess("Restored successfully");
- } else {
- console.error("Error while restoring file", response);
- showError(response.data.message);
- }
- });
- } else {
- await axios({
- method: "post",
- url: node.encodedSource,
- headers: { "Hejbit-Action": action },
- }).then((response) => {
- if (response.data.status === true) {
- emit("files:node:deleted", node);
- showSuccess("Archived successfully");
- if (FilesHelper.isRootLevel(node)) {
- emit('files:config:updated');
- }
- } else {
- console.error("Error while archiving file", response);
- showError(response.data.message);
+ }
+ return false;
+ },
+ async exec({ nodes }) {
+ const node = nodes[0];
+ const action = FilesHelper.isArchive(node) ? "unarchive" : "archive";
+ if (action === "unarchive") {
+ const path = await FilesHelper.locationPicker(
+ node,
+ "Restore",
+ UnarchiveSvg
+ );
+ const destination = FilesHelper.getPathParts(path)
+ .slice(1)
+ .join("/");
+ await axios({
+ method: "post",
+ url: node.encodedSource,
+ headers: {
+ "Hejbit-Action": action,
+ Destination: destination,
+ },
+ }).then((response) => {
+ if (response.data.status === true) {
+ emit("files:node:deleted", node);
+ showSuccess("Restored successfully");
+ } else {
+ console.error("Error while restoring file", response);
+ showError(response.data.message);
+ }
+ });
+ } else {
+ await axios({
+ method: "post",
+ url: node.encodedSource,
+ headers: { "Hejbit-Action": action },
+ }).then((response) => {
+ if (response.data.status === true) {
+ emit("files:node:deleted", node);
+ showSuccess("Archived successfully");
+ if (FilesHelper.isRootLevel(node)) {
+ emit("files:config:updated");
}
- });
- }
- },
- execBatch(nodes) {
- return Promise.all(nodes.map((node) => this.exec(node)));
- },
- })
-);
+ } else {
+ console.error("Error while archiving file", response);
+ showError(response.data.message);
+ }
+ });
+ }
+ },
+ execBatch({ nodes, view }) {
+ return Promise.all(
+ nodes.map((node) => this.exec({ nodes: [node], view }))
+ );
+ },
+});
diff --git a/src/app/files/actions/export.js b/src/app/files/actions/export.js
index 9123c6a..d598e69 100644
--- a/src/app/files/actions/export.js
+++ b/src/app/files/actions/export.js
@@ -1,48 +1,47 @@
-import { FileAction, registerFileAction } from "@nextcloud/files";
import axios from "@nextcloud/axios";
import { showError, showSuccess } from "@nextcloud/dialogs";
import { getDialogBuilder } from "@nextcloud/dialogs";
import DownloadSvg from "@material-design-icons/svg/filled/download.svg";
import FilesHelper from "@/util/FilesHelper";
import SvgHelper from "@/util/SvgHelper";
+import { registerFileActionCompat } from "@/util/FilesCompatibility";
-registerFileAction(
- new FileAction({
- id: "exportAction",
- displayName() {
- return t(
- "files_external_ethswarm",
- "Export"
- );
- },
- iconSvgInline() {
- return SvgHelper.convert(DownloadSvg);
- },
- enabled(files) {
- if (files[0].attributes["ethswarm-node"]) {
- return FilesHelper.isRoot(files);
- }
- return false;
- },
- async exec(node) {
- await getDialogBuilder("Export HejBit Storage Metadata")
- .setSeverity("warning")
- .setText(`
- This action will export your HejBit storage metadata such as Swarm references for this storage to a JSON file.
- You're responsible for keeping this file secure. Are you sure you want to export your HejBit storage metadata?
- `)
- .addButton({
- label: "Cancel",
- })
- .addButton({
- label: "Export",
- callback: async () => downloadMetadata(node),
- })
- .build()
- .show();
- },
- })
-);
+registerFileActionCompat({
+ id: "exportAction",
+ displayName() {
+ return t("files_external_ethswarm", "Export");
+ },
+ iconSvgInline() {
+ return SvgHelper.convert(DownloadSvg);
+ },
+ enabled({ nodes }) {
+ if (nodes[0].attributes["ethswarm-node"]) {
+ return FilesHelper.isRoot(nodes);
+ }
+ return false;
+ },
+ async exec({ nodes }) {
+ const node = nodes[0];
+ await getDialogBuilder("Export HejBit Storage Metadata")
+ .setSeverity("warning")
+ .setText(
+ `
+ This action will export your HejBit storage metadata such as Swarm references for this storage to a JSON file.
+ You're responsible for keeping this file secure. Are you sure you want to export your HejBit storage metadata?
+ `
+ )
+ .addButton({
+ label: "Cancel",
+ callback: () => {},
+ })
+ .addButton({
+ label: "Export",
+ callback: async () => downloadMetadata(node),
+ })
+ .build()
+ .show();
+ },
+});
const downloadMetadata = async (node) => {
await axios({
@@ -58,11 +57,17 @@ const downloadMetadata = async (node) => {
});
const storageName = FilesHelper.getStoragePath(node.path);
const date = new Date().toISOString().split("T")[0];
- FilesHelper.downloadFile(blob, `hejbit-export-${storageName}-${date}.json`);
+ FilesHelper.downloadFile(
+ blob,
+ `hejbit-export-${storageName}-${date}.json`
+ );
showSuccess("Exported storage metadata successfully");
} else {
- console.error("Error while exporting metadata of the storage", response);
+ console.error(
+ "Error while exporting metadata of the storage",
+ response
+ );
showError(response.data.message);
}
});
-}
+};
diff --git a/src/app/files/actions/hide.js b/src/app/files/actions/hide.js
index 1b4308c..4cb70a6 100644
--- a/src/app/files/actions/hide.js
+++ b/src/app/files/actions/hide.js
@@ -1,4 +1,4 @@
-import { FileAction, FileType, registerFileAction } from "@nextcloud/files";
+import { FileType } from "@nextcloud/files";
import { showError, showInfo } from "@nextcloud/dialogs";
import axios from "@nextcloud/axios";
import { emit } from "@nextcloud/event-bus";
@@ -8,191 +8,194 @@ import HideSource from "@material-design-icons/svg/filled/visibility_off.svg";
import UnhideSource from "@material-design-icons/svg/filled/settings_backup_restore.svg";
import FilesHelper from "@/util/FilesHelper";
import SvgHelper from "@/util/SvgHelper";
+import { registerFileActionCompat } from "@/util/FilesCompatibility";
-registerFileAction(
- new FileAction({
- id: "unhideAction",
- displayName(nodes, view) {
- /**
- * If we're only selecting files, use proper wording
- */
- if (FilesHelper.isAllFiles(nodes)) {
- if (nodes.length === 1) {
- return t("files_external_ethswarm", "Unhide");
- }
+registerFileActionCompat({
+ id: "unhideAction",
+ displayName({ nodes, view }) {
+ /**
+ * If we're only selecting files, use proper wording
+ */
+ if (FilesHelper.isAllFiles(nodes)) {
+ if (nodes.length === 1) {
return t("files_external_ethswarm", "Unhide");
}
- /**
- * If we're only selecting folders, use proper wording
- */
- if (FilesHelper.isAllFolders(nodes)) {
- if (nodes.length === 1) {
- return t("files_external_ethswarm", "Unhide");
- }
+ return t("files_external_ethswarm", "Unhide");
+ }
+ /**
+ * If we're only selecting folders, use proper wording
+ */
+ if (FilesHelper.isAllFolders(nodes)) {
+ if (nodes.length === 1) {
return t("files_external_ethswarm", "Unhide");
}
return t("files_external_ethswarm", "Unhide");
- },
- iconSvgInline: (nodes) => {
- return SvgHelper.convert(UnhideSource);
- },
- inline(file, view) {
- return true;
- },
+ }
+ return t("files_external_ethswarm", "Unhide");
+ },
+ iconSvgInline: ({ nodes }) => {
+ return SvgHelper.convert(UnhideSource);
+ },
+ inline({ nodes }) {
+ return true;
+ },
- enabled(files, view) {
- if (files.length !== 1)
- // We don't support batch actions
- return false;
- const attrs = files[0].attributes["ethswarm-node"];
- const hidden = files[0].attributes.hidden;
+ enabled({ nodes, view }) {
+ if (nodes.length !== 1)
+ // We don't support batch actions
+ return false;
+ const attrs = nodes[0].attributes["ethswarm-node"];
+ const hidden = nodes[0].attributes.hidden;
- if (attrs === undefined) return false;
- else if (attrs === "") return false;
- if (!hidden) return false;
+ if (attrs === undefined) return false;
+ else if (attrs === "") return false;
+ if (!hidden) return false;
- return attrs;
- },
- async exec(node, view, dir) {
- try {
- await axios({
- method: "post",
- url: node.encodedSource,
- headers: {
- "Hejbit-Action": "unhide",
- },
- });
+ return attrs;
+ },
+ async exec({ nodes, view }) {
+ const node = nodes[0];
+ try {
+ await axios({
+ method: "post",
+ url: node.encodedSource,
+ headers: {
+ "Hejbit-Action": "unhide",
+ },
+ });
- emit('files:config:updated');
+ emit("files:config:updated");
- return true;
- } catch (error) {
- showError("Error while unhidding file");
- console.log("Error while unhidding a file", {
- error,
- source: node.source,
- node,
- });
- return false;
- }
- },
- execBatch(nodes, view) {
- return Promise.all(nodes.map((node) => this.exec(node, view)));
- },
- order: 150,
- })
-);
+ return true;
+ } catch (error) {
+ showError("Error while unhidding file");
+ console.log("Error while unhidding a file", {
+ error,
+ source: node.source,
+ node,
+ });
+ return false;
+ }
+ },
+ execBatch({ nodes, view }) {
+ return Promise.all(
+ nodes.map((node) => this.exec({ nodes: [node], view }))
+ );
+ },
+ order: 150,
+});
-registerFileAction(
- new FileAction({
- id: "hideAction",
- displayName(nodes, view) {
- /**
- * If we're in the sharing view, we can only unshare
- */
- if (FilesHelper.isMixedUnshareAndDelete(nodes)) {
- return t("files_external_ethswarm", "Hide and unshare");
- }
- /**
- * If those nodes are all the root node of a
- * share, we can only unshare them.
- */
- if (FilesHelper.canUnshareOnly(nodes)) {
- if (nodes.length === 1) {
- return t("files_external_ethswarm", "Leave this share");
- }
- return t("files_external_ethswarm", "Leave these shares");
+registerFileActionCompat({
+ id: "hideAction",
+ displayName({ nodes, view }) {
+ /**
+ * If we're in the sharing view, we can only unshare
+ */
+ if (FilesHelper.isMixedUnshareAndDelete(nodes)) {
+ return t("files_external_ethswarm", "Hide and unshare");
+ }
+ /**
+ * If those nodes are all the root node of a
+ * share, we can only unshare them.
+ */
+ if (FilesHelper.canUnshareOnly(nodes)) {
+ if (nodes.length === 1) {
+ return t("files_external_ethswarm", "Leave this share");
}
- /**
- * If those nodes are all the root node of an
- * external storage, we can only disconnect it.
- */
- if (FilesHelper.canDisconnectOnly(nodes)) {
- if (nodes.length === 1) {
- return t("files_external_ethswarm", "Disconnect storage");
- }
- return t("files_external_ethswarm", "Disconnect storages");
+ return t("files_external_ethswarm", "Leave these shares");
+ }
+ /**
+ * If those nodes are all the root node of an
+ * external storage, we can only disconnect it.
+ */
+ if (FilesHelper.canDisconnectOnly(nodes)) {
+ if (nodes.length === 1) {
+ return t("files_external_ethswarm", "Disconnect storage");
}
- /**
- * If we're only selecting files, use proper wording
- */
- if (FilesHelper.isAllFiles(nodes)) {
- if (nodes.length === 1) {
- return t("files_external_ethswarm", "Hide file");
- }
- return t("files_external_ethswarm", "Hide files");
+ return t("files_external_ethswarm", "Disconnect storages");
+ }
+ /**
+ * If we're only selecting files, use proper wording
+ */
+ if (FilesHelper.isAllFiles(nodes)) {
+ if (nodes.length === 1) {
+ return t("files_external_ethswarm", "Hide file");
}
- /**
- * If we're only selecting folders, use proper wording
- */
- if (FilesHelper.isAllFolders(nodes)) {
- if (nodes.length === 1) {
- return t("files_external_ethswarm", "Hide folder");
- }
- return t("files_external_ethswarm", "Hide folders");
+ return t("files_external_ethswarm", "Hide files");
+ }
+ /**
+ * If we're only selecting folders, use proper wording
+ */
+ if (FilesHelper.isAllFolders(nodes)) {
+ if (nodes.length === 1) {
+ return t("files_external_ethswarm", "Hide folder");
}
- return t("files_external_ethswarm", "Hide");
- },
- iconSvgInline: (nodes) => {
- if (FilesHelper.canUnshareOnly(nodes)) {
- return SvgHelper.convert(Close);
- }
- if (FilesHelper.canDisconnectOnly(nodes)) {
- return SvgHelper.convert(CloudOff);
- }
- return SvgHelper.convert(HideSource);
- },
- enabled(files, view) {
- if (files.length !== 1)
- // We don't support batch actions
- return false;
- const attrs = files[0].attributes["ethswarm-node"];
- const hidden = files[0].attributes.hidden;
+ return t("files_external_ethswarm", "Hide folders");
+ }
+ return t("files_external_ethswarm", "Hide");
+ },
+ iconSvgInline: ({ nodes }) => {
+ if (FilesHelper.canUnshareOnly(nodes)) {
+ return SvgHelper.convert(Close);
+ }
+ if (FilesHelper.canDisconnectOnly(nodes)) {
+ return SvgHelper.convert(CloudOff);
+ }
+ return SvgHelper.convert(HideSource);
+ },
+ enabled({ nodes, view }) {
+ if (nodes.length !== 1)
+ // We don't support batch actions
+ return false;
+ const attrs = nodes[0].attributes["ethswarm-node"];
+ const hidden = nodes[0].attributes.hidden;
- if (attrs === undefined) return false;
- else if (attrs === "") return false;
- if (hidden) return false;
+ if (attrs === undefined) return false;
+ else if (attrs === "") return false;
+ if (hidden) return false;
- return attrs;
- },
- async exec(node, view, dir) {
- let message = "";
- if (node.type === FileType.File) {
- message = t(
- "files_external_ethswarm",
- "The file will be set to hide on the folder view. The file will continue to exist on the Swarm network."
- );
- } else if (node.type === FileType.Folder) {
- message = t(
- "files_external_ethswarm",
- "The folder will be set to hide on the folder view. All the files inside the folder will continue to exist on the Swarm network."
- );
- }
- showInfo(message);
- try {
- await axios({
- method: "post",
- url: node.encodedSource,
- headers: {
- "Hejbit-Action": "hide",
- },
- });
+ return attrs;
+ },
+ async exec({ nodes, view }) {
+ const node = nodes[0];
+ let message = "";
+ if (node.type === FileType.File) {
+ message = t(
+ "files_external_ethswarm",
+ "The file will be set to hide on the folder view. The file will continue to exist on the Swarm network."
+ );
+ } else if (node.type === FileType.Folder) {
+ message = t(
+ "files_external_ethswarm",
+ "The folder will be set to hide on the folder view. All the files inside the folder will continue to exist on the Swarm network."
+ );
+ }
+ showInfo(message);
+ try {
+ await axios({
+ method: "post",
+ url: node.encodedSource,
+ headers: {
+ "Hejbit-Action": "hide",
+ },
+ });
- emit('files:config:updated');
- return true;
- } catch (error) {
- showError("Error while hiding file");
- console.log("Error while hidding a file", {
- error,
- source: node.source,
- node,
- });
- return false;
- }
- },
- execBatch(nodes, view) {
- return Promise.all(nodes.map((node) => this.exec(node, view)));
- },
- order: 150,
- })
-);
+ emit("files:config:updated");
+ return true;
+ } catch (error) {
+ showError("Error while hiding file");
+ console.log("Error while hidding a file", {
+ error,
+ source: node.source,
+ node,
+ });
+ return false;
+ }
+ },
+ execBatch({ nodes, view }) {
+ return Promise.all(
+ nodes.map((node) => this.exec({ nodes: [node], view }))
+ );
+ },
+ order: 150,
+});
diff --git a/src/app/files/actions/move.js b/src/app/files/actions/move.js
index 50c2fed..24ce4d0 100644
--- a/src/app/files/actions/move.js
+++ b/src/app/files/actions/move.js
@@ -1,60 +1,49 @@
-import { FileAction, registerFileAction } from "@nextcloud/files";
import { emit } from "@nextcloud/event-bus";
import MoveSvg from "@material-design-icons/svg/filled/drive_file_move.svg";
import FilesHelper from "@/util/FilesHelper";
import SvgHelper from "@/util/SvgHelper";
import axios from "@nextcloud/axios";
import { showError, showSuccess } from "@nextcloud/dialogs";
+import { registerFileActionCompat } from "@/util/FilesCompatibility";
-registerFileAction(
- new FileAction({
- id: "moveAction",
- displayName(nodes) {
- return t(
- "files_external_ethswarm",
- "Move"
- );
- },
- iconSvgInline(nodes) {
- return SvgHelper.convert(MoveSvg);
- },
- enabled(files) {
- if (files[0].attributes["ethswarm-node"]) {
- return !(
- FilesHelper.isArchive(files) ||
- FilesHelper.isRoot(files)
- );
+registerFileActionCompat({
+ id: "moveAction",
+ displayName({ nodes }) {
+ return t("files_external_ethswarm", "Move");
+ },
+ iconSvgInline({ nodes }) {
+ return SvgHelper.convert(MoveSvg);
+ },
+ enabled({ nodes }) {
+ if (nodes[0].attributes["ethswarm-node"]) {
+ return !(FilesHelper.isArchive(nodes) || FilesHelper.isRoot(nodes));
+ }
+ return false;
+ },
+ async exec({ nodes }) {
+ const node = nodes[0];
+ const path = await FilesHelper.locationPicker(node, "Move", MoveSvg);
+ const destination = FilesHelper.getPathParts(path).slice(1).join("/");
+ await axios({
+ method: "post",
+ url: node.encodedSource,
+ headers: {
+ "Hejbit-Action": "move",
+ Destination: destination,
+ },
+ }).then((response) => {
+ if (response.data.status === true) {
+ emit("files:node:deleted", node);
+ showSuccess("Moved successfully");
+ } else {
+ console.error("Error while moving file", response);
+ showError(response.data.message);
}
- return false;
- },
- async exec(node) {
- const path = await FilesHelper.locationPicker(
- node,
- "Move",
- MoveSvg
- );
- const destination = FilesHelper.getPathParts(path)
- .slice(1)
- .join("/");
- await axios({
- method: "post",
- url: node.encodedSource,
- headers: {
- "Hejbit-Action": "move",
- Destination: destination,
- },
- }).then((response) => {
- if (response.data.status === true) {
- emit("files:node:deleted", node);
- showSuccess("Moved successfully");
- } else {
- console.error("Error while moving file", response);
- showError(response.data.message);
- }
- });
- },
- execBatch(nodes) {
- return Promise.all(nodes.map((node) => this.exec(node)));
- },
- })
-);
+ });
+ },
+ execBatch({ nodes, view }) {
+ return Promise.all(
+ nodes.map((node) => this.exec({ nodes: [node], view }))
+ );
+ },
+});
diff --git a/src/app/files/actions/overlay.js b/src/app/files/actions/overlay.js
index 4b21b00..178fc72 100644
--- a/src/app/files/actions/overlay.js
+++ b/src/app/files/actions/overlay.js
@@ -1,122 +1,102 @@
-import { FileAction, registerFileAction } from "@nextcloud/files";
import { showInfo } from "@nextcloud/dialogs";
import HejBitSvg from "@/../img/hejbit-logo.svg";
-import HejBitPaddedSvg from "@/../img/hejbit-logo-padded.svg";
+import HejBitSvgPadded from "@/../img/hejbit-logo-padded.svg";
import InfoSvg from "@material-design-icons/svg/filled/info.svg";
import FilesHelper from "@/util/FilesHelper";
import SvgHelper from "@/util/SvgHelper";
-import { loadState } from '@nextcloud/initial-state';
-
-
-
-registerFileAction(
- new FileAction({
- id: "overlayAction",
-
- displayName() {
- return "";
- },
-
- enabled(files, view) {
- if (files.length !== 1)
- // We don't support batch actions
- return false;
-
- // To fix fileaction navigation bug this action is now available for
- // files and folders on Swarm storage
- const attrs = files[0].attributes["ethswarm-node"];
-
- if (attrs === undefined) return false;
- else if (attrs === "") return false;
-
- return true;
- },
-
- iconSvgInline(files, view) {
- const config = loadState('core', 'config');
- const majorVersion = config?.version ? parseInt(config.version.split('.')[0]) : null;
- if (majorVersion === 32){
- return SvgHelper.convert(FilesHelper.isArchiveFolder(files) ? InfoSvg : HejBitPaddedSvg);
- }else{
- return SvgHelper.convert(FilesHelper.isArchiveFolder(files) ? InfoSvg : HejBitSvg);
- }
-
- },
-
- inline(file, view) {
- return true;
- },
-
- async renderInline(node, view) {
-
- const config = loadState('core', 'config');
- const majorVersion = config?.version ? parseInt(config.version.split('.')[0]) : null;
-
- // Create the overlay element
- const overlay = document.createElement("div");
-
- if (majorVersion === 32) {
- overlay.classList.add("hejbit-overlay-32");
- } else {
- overlay.classList.add("hejbit-overlay");
- }
-
- if (FilesHelper.isArchive(node)) {
- overlay.classList.add("hejbit-archive");
- }
-
-
- overlay.innerHTML = SvgHelper.convert(HejBitSvg);
-
- return overlay;
- },
-
- async exec(node, view) {
- if (FilesHelper.isArchiveFolder(node)) {
- showInfo(
- `
-
-
${t(
- "files_external_ethswarm",
- "Archive folder is for keeping your HejBit storage more organized."
- )}
-
${t(
- "files_external_ethswarm",
- "You can archive files and folder from menu action."
- )}
-
${t(
- "files_external_ethswarm",
- "You can restore archived files in the archive folder from menu action."
- )}
-
- `,
- {
- isHTML: true,
- },
- t("files_external_ethswarm", "Hejbit")
- );
- } else if (FilesHelper.isFolder(node)) {
- showInfo(
- t(
- "files_external_ethswarm",
- "Folder structure is not yet supported on Swarm. This folder is only available on Nextcloud, although all files within it are accessible on Swarm."
- ),
- t("files_external_ethswarm", "Hejbit")
- );
- } else {
- showInfo(
- t(
- "files_external_ethswarm",
- "This file is on Swarm Network by Hejbit!"
- ),
- t("files_external_ethswarm", "Hejbit")
- );
- }
- },
-
- execBatch(nodes, view) {
- return Promise.all(nodes.map((node) => this.exec(node, view)));
- },
- })
-);
-
+import { registerFileActionCompat } from "@/util/FilesCompatibility";
+
+registerFileActionCompat({
+ id: "overlayAction",
+
+ displayName() {
+ return "";
+ },
+
+ enabled({ nodes, view }) {
+ if (nodes.length !== 1)
+ // We don't support batch actions
+ return false;
+
+ // To fix fileaction navigation bug this action is now available for
+ // files and folders on Swarm storage
+ const attrs = nodes[0].attributes["ethswarm-node"];
+
+ if (attrs === undefined) return false;
+ else if (attrs === "") return false;
+
+ return true;
+ },
+
+ iconSvgInline({ nodes }) {
+ return SvgHelper.convert(
+ FilesHelper.isArchiveFolder(nodes) ? InfoSvg : HejBitSvgPadded
+ );
+ },
+
+ inline({ nodes }) {
+ return true;
+ },
+
+ async renderInline({ nodes, view }) {
+ const node = nodes[0];
+ // Create the overlay element
+ const overlay = document.createElement("div");
+ overlay.classList.add("hejbit-overlay");
+
+ if (FilesHelper.isArchive(node)) {
+ overlay.classList.add("hejbit-archive");
+ }
+
+ overlay.innerHTML = SvgHelper.convert(HejBitSvg);
+
+ return overlay;
+ },
+
+ async exec({ nodes, view }) {
+ const node = nodes[0];
+ if (FilesHelper.isArchiveFolder(node)) {
+ showInfo(
+ `
+
+
${t(
+ "files_external_ethswarm",
+ "Archive folder is for keeping your HejBit storage more organized."
+ )}
+
${t(
+ "files_external_ethswarm",
+ "You can archive files and folder from menu action."
+ )}
+
${t(
+ "files_external_ethswarm",
+ "You can restore archived files in the archive folder from menu action."
+ )}
+
+ `,
+ {
+ isHTML: true,
+ }
+ );
+ } else if (FilesHelper.isFolder(node)) {
+ showInfo(
+ t(
+ "files_external_ethswarm",
+ "Folder structure is not yet supported on Swarm. This folder is only available on Nextcloud, although all files within it are accessible on Swarm."
+ )
+ );
+ } else {
+ showInfo(
+ t(
+ "files_external_ethswarm",
+ "This file is on Swarm Network by Hejbit!"
+ )
+ );
+ }
+ },
+
+ execBatch({ nodes, view }) {
+ return Promise.all(
+ nodes.map((node) => this.exec({ nodes: [node], view }))
+ );
+ },
+});
diff --git a/src/app/files/actions/reference.js b/src/app/files/actions/reference.js
index 8bf89d4..ac4185e 100644
--- a/src/app/files/actions/reference.js
+++ b/src/app/files/actions/reference.js
@@ -1,82 +1,91 @@
-import { FileAction, registerFileAction } from "@nextcloud/files";
import { Dialog, showSuccess, showWarning } from "@nextcloud/dialogs";
import SwarmSvg from "@/../img/swarm-logo.svg";
import ClipboardSvg from "@material-design-icons/svg/filled/content_paste.svg";
+import OpenSvg from "@material-design-icons/svg/filled/open_in_new.svg";
import SvgHelper from "@/util/SvgHelper";
import FilesHelper from "@/util/FilesHelper";
+import { registerFileActionCompat } from "@/util/FilesCompatibility";
-registerFileAction(
- new FileAction({
- id: "EthswarmCopyRef",
+registerFileActionCompat({
+ id: "EthswarmCopyRef",
- displayName() {
- return t("files_external_ethswarm", "View Swarm Reference");
- },
+ displayName() {
+ return t("files_external_ethswarm", "Swarm Reference");
+ },
- altText() {
- return t("files_external_ethswarm", "Swarm Reference");
- },
+ altText() {
+ return t("files_external_ethswarm", "Swarm Reference");
+ },
- enabled(files) {
- return (
- FilesHelper.isSwarmNode(files) &&
- !FilesHelper.isRoot(files) &&
- !FilesHelper.isArchiveFolder(files)
- );
- },
+ enabled({ nodes }) {
+ return (
+ FilesHelper.isSwarmNode(nodes) &&
+ !FilesHelper.isRoot(nodes) &&
+ !FilesHelper.isArchiveFolder(nodes)
+ );
+ },
- inline() {
- return false;
- },
+ inline() {
+ return false;
+ },
- iconSvgInline() {
- return SvgHelper.convert(SwarmSvg);
- },
+ iconSvgInline() {
+ return SvgHelper.convert(SwarmSvg);
+ },
- async exec(node, view) {
- const swarmref = FilesHelper.getSwarmRef(node);
- if (FilesHelper.isFolder(node)) {
- showWarning(
- t(
- "files_external_ethswarm",
- "Folder structure is not yet supported on Swarm. This folder is only available on Nextcloud, although all files within it are accessible on Swarm."
- ),
- t("files_external_ethswarm", "Swarm Reference")
- );
- return;
- }
+ async exec({ nodes, view }) {
+ const node = nodes[0];
+ const swarmref = FilesHelper.getSwarmRef(node);
+ if (FilesHelper.isFolder(node)) {
+ showWarning(
+ t(
+ "files_external_ethswarm",
+ "Folder structure is not yet supported on Swarm. This folder is only available on Nextcloud, although all files within it are accessible on Swarm."
+ )
+ );
+ return;
+ }
- await new Dialog("View Swarm Reference", swarmref, [
- {
- label: t("files_external_ethswarm", "Copy to Clipboard"),
- type: "secondary",
- icon: SvgHelper.convert(ClipboardSvg),
- callback: () =>
- navigator.clipboard.writeText(swarmref).then(
- () =>
- showSuccess(
- t(
- "files_external_ethswarm",
- "The Swarm reference has been copied to your clipboard"
- )
- ),
- () =>
- showWarning(
- `
-
- ${t(
- "files_external_ethswarm",
- "Unable to write the Swarm Reference into your clipboard. Copy it manually"
- )}
-
- `,
- {
- isHTML: true,
- }
+ const gatewayUrl = `https://gateway.ethswarm.org/access/${swarmref}`;
+
+ await new Dialog("Swarm Reference", swarmref, [
+ {
+ label: t("files_external_ethswarm", "Copy to Clipboard"),
+ variant: "secondary",
+ icon: SvgHelper.convert(ClipboardSvg),
+ callback: () =>
+ navigator.clipboard.writeText(swarmref).then(
+ () =>
+ showSuccess(
+ t(
+ "files_external_ethswarm",
+ "The Swarm reference has been copied to your clipboard"
)
- ),
+ ),
+ () =>
+ showWarning(
+ `
+
+ ${t(
+ "files_external_ethswarm",
+ "Unable to write the Swarm Reference into your clipboard. Copy it manually"
+ )}
+
+ `,
+ {
+ isHTML: true,
+ }
+ )
+ ),
+ },
+ {
+ label: t("files_external_ethswarm", "Access on Swarm Gateway"),
+ variant: "secondary",
+ icon: SvgHelper.convert(OpenSvg),
+ callback: () => {
+ window.open(gatewayUrl, "_blank", "noopener,noreferrer");
},
- ]).show();
- },
- })
-);
+ },
+ ]).show();
+ },
+});
diff --git a/src/app/files/actions/rename.js b/src/app/files/actions/rename.js
index b1ad024..b2000b7 100644
--- a/src/app/files/actions/rename.js
+++ b/src/app/files/actions/rename.js
@@ -1,32 +1,24 @@
-import { FileAction, registerFileAction } from "@nextcloud/files";
import { emit } from "@nextcloud/event-bus";
import EditSvg from "@material-design-icons/svg/filled/edit.svg";
import FilesHelper from "@/util/FilesHelper";
import SvgHelper from "@/util/SvgHelper";
+import { registerFileActionCompat } from "@/util/FilesCompatibility";
-registerFileAction(
- new FileAction({
- id: "renameAction",
- displayName(nodes) {
- return t(
- "files_external_ethswarm",
- "Rename"
- );
- },
- iconSvgInline(nodes) {
- return SvgHelper.convert(EditSvg);
- },
- enabled(files) {
- if (files[0].attributes["ethswarm-node"]) {
- return !(
- FilesHelper.isArchive(files) ||
- FilesHelper.isRoot(files)
- );
- }
- return false;
- },
- async exec(node) {
- emit('files:node:rename', node);
- },
- })
-);
+registerFileActionCompat({
+ id: "renameAction",
+ displayName({ nodes }) {
+ return t("files_external_ethswarm", "Rename");
+ },
+ iconSvgInline({ nodes }) {
+ return SvgHelper.convert(EditSvg);
+ },
+ enabled({ nodes }) {
+ if (nodes[0].attributes["ethswarm-node"]) {
+ return !(FilesHelper.isArchive(nodes) || FilesHelper.isRoot(nodes));
+ }
+ return false;
+ },
+ async exec({ nodes }) {
+ emit("files:node:rename", nodes[0]);
+ },
+});
diff --git a/src/app/files/menu.js b/src/app/files/menu.js
index 0260848..c058d8a 100644
--- a/src/app/files/menu.js
+++ b/src/app/files/menu.js
@@ -1,9 +1,9 @@
-import {
- addNewFileMenuEntry,
- getNewFileMenuEntries,
- removeNewFileMenuEntry,
-} from "@nextcloud/files";
import { subscribe } from "@nextcloud/event-bus";
+import {
+ getNewFileMenuEntriesCompat,
+ addNewFileMenuEntryCompat,
+ removeNewFileMenuEntryCompat,
+} from "@/util/FilesCompatibility";
const filesMenu = {
originalMenu: [],
@@ -21,7 +21,7 @@ const filesMenu = {
},
backup() {
if (!this.originalMenu.length) {
- this.originalMenu = getNewFileMenuEntries().map((entry) => ({
+ this.originalMenu = getNewFileMenuEntriesCompat().map((entry) => ({
...entry,
}));
}
@@ -29,16 +29,16 @@ const filesMenu = {
cleanup() {
this.originalMenu.forEach(function (removeMenuEntry) {
if (removeMenuEntry.id !== "newFolder") {
- removeNewFileMenuEntry(removeMenuEntry);
+ removeNewFileMenuEntryCompat(removeMenuEntry);
}
});
},
restore() {
- const currentEntries = getNewFileMenuEntries();
+ const currentEntries = getNewFileMenuEntriesCompat();
this.originalMenu.forEach(function (backedUpMenuEntry) {
!currentEntries.some(
(entry) => entry.id === backedUpMenuEntry.id
- ) && addNewFileMenuEntry(backedUpMenuEntry);
+ ) && addNewFileMenuEntryCompat(backedUpMenuEntry);
});
this.originalMenu = [];
},
diff --git a/src/util/FilesCompatibility.js b/src/util/FilesCompatibility.js
new file mode 100644
index 0000000..f333563
--- /dev/null
+++ b/src/util/FilesCompatibility.js
@@ -0,0 +1,315 @@
+/**
+ * @copyright Copyright (c) 2024, MetaProvide Pty Ltd
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Compatibility layer for running the same plugin code on both
+ * Nextcloud 32 (@nextcloud/files v3) and Nextcloud 33+ (@nextcloud/files v4).
+ *
+ * The plugin is built with @nextcloud/files v4 which is bundled into the
+ * JS output. v3 and v4 use **different window-global registries**:
+ *
+ * v3 (NC 32): window._nc_fileactions (array)
+ * window._nc_dav_properties (array)
+ * window._nc_dav_namespaces (object)
+ * window._nc_newfilemenu (NewMenu instance)
+ *
+ * v4 (NC 33+): window._nc_files_scope.v4_0.* (scoped object)
+ *
+ * The bundled v4 functions always write to the v4 scope. On NC 32 we
+ * must also (or instead) write into the v3 globals so the NC 32 Files
+ * app picks the registrations up.
+ */
+
+import {
+ registerFileAction,
+ addNewFileMenuEntry,
+ getNewFileMenuEntries,
+ removeNewFileMenuEntry,
+} from "@nextcloud/files";
+import { registerDavProperty } from "@nextcloud/files/dav";
+
+/* ================================================================== */
+/* Version detection */
+/* ================================================================== */
+
+/**
+ * Get the Nextcloud major version number from the runtime environment.
+ * @returns {number} The major version (e.g. 32 or 33)
+ */
+function getNextcloudMajorVersion() {
+ if (window.OC?.config?.version) {
+ return parseInt(window.OC.config.version.split(".")[0], 10) || 0;
+ }
+ // Fallback: if the v4 scoped globals already exist, NC 33+ is running.
+ if (window._nc_files_scope?.v4_0) {
+ return 33;
+ }
+ console.warn(
+ "[FilesCompatibility] Could not detect Nextcloud version, defaulting to 32"
+ );
+ return 32;
+}
+
+/** True when running on Nextcloud 32 or lower (v3 API). */
+export function isNextcloud32OrLower() {
+ return getNextcloudMajorVersion() <= 32;
+}
+
+/** True when running on Nextcloud 33 or higher (v4 API). */
+export function isNextcloud33OrHigher() {
+ return !isNextcloud32OrLower();
+}
+
+/* ================================================================== */
+/* File Actions */
+/* ================================================================== */
+
+/**
+ * Register an action into the NC 32 / v3 global registry.
+ *
+ * v3 callback signatures (what the NC 32 Files app calls):
+ * displayName(nodes: Node[], view: View)
+ * iconSvgInline(nodes: Node[], view: View)
+ * enabled(nodes: Node[], view: View)
+ * exec(node: Node, view: View, dir: string)
+ * execBatch(nodes: Node[], view: View, dir: string)
+ * inline(node: Node, view: View)
+ * renderInline(node: Node, view: View)
+ *
+ * v4 callback signatures (what our action code uses):
+ * displayName({ nodes, view })
+ * iconSvgInline({ nodes, view })
+ * enabled({ nodes, view })
+ * exec({ nodes: [node], view })
+ * execBatch({ nodes, view })
+ * inline({ nodes: [node], view })
+ * renderInline({ nodes: [node], view })
+ */
+function registerFileActionV3(actionConfig) {
+ if (typeof window._nc_fileactions === "undefined") {
+ window._nc_fileactions = [];
+ }
+
+ if (window._nc_fileactions.find((a) => a.id === actionConfig.id)) {
+ console.error(
+ `[FilesCompatibility] FileAction ${actionConfig.id} already registered`
+ );
+ return;
+ }
+
+ const wrapped = {};
+
+ if (typeof actionConfig.displayName === "function") {
+ wrapped.displayName = function (nodes, view) {
+ return actionConfig.displayName.call(actionConfig, { nodes, view });
+ };
+ }
+
+ if (typeof actionConfig.iconSvgInline === "function") {
+ wrapped.iconSvgInline = function (nodes, view) {
+ return actionConfig.iconSvgInline.call(actionConfig, {
+ nodes,
+ view,
+ });
+ };
+ }
+
+ if (typeof actionConfig.enabled === "function") {
+ wrapped.enabled = function (nodes, view) {
+ return actionConfig.enabled.call(actionConfig, { nodes, view });
+ };
+ }
+
+ if (typeof actionConfig.exec === "function") {
+ wrapped.exec = function (node, view, dir) {
+ return actionConfig.exec.call(actionConfig, {
+ nodes: [node],
+ view,
+ });
+ };
+ }
+
+ if (typeof actionConfig.execBatch === "function") {
+ wrapped.execBatch = function (nodes, view, dir) {
+ return actionConfig.execBatch.call(actionConfig, { nodes, view });
+ };
+ }
+
+ if (typeof actionConfig.inline === "function") {
+ wrapped.inline = function (node, view) {
+ return actionConfig.inline.call(actionConfig, {
+ nodes: [node],
+ view,
+ });
+ };
+ }
+
+ if (typeof actionConfig.renderInline === "function") {
+ wrapped.renderInline = function (node, view) {
+ return actionConfig.renderInline.call(actionConfig, {
+ nodes: [node],
+ view,
+ });
+ };
+ }
+
+ const v3Action = {
+ get id() {
+ return actionConfig.id;
+ },
+ get displayName() {
+ return wrapped.displayName || actionConfig.displayName;
+ },
+ get title() {
+ return actionConfig.title;
+ },
+ get iconSvgInline() {
+ return wrapped.iconSvgInline || actionConfig.iconSvgInline;
+ },
+ get enabled() {
+ return wrapped.enabled || actionConfig.enabled;
+ },
+ get exec() {
+ return wrapped.exec || actionConfig.exec;
+ },
+ get execBatch() {
+ return wrapped.execBatch || actionConfig.execBatch;
+ },
+ get order() {
+ return actionConfig.order;
+ },
+ get parent() {
+ return actionConfig.parent;
+ },
+ get default() {
+ return actionConfig.default;
+ },
+ get destructive() {
+ return actionConfig.destructive;
+ },
+ get inline() {
+ return wrapped.inline || actionConfig.inline;
+ },
+ get renderInline() {
+ return wrapped.renderInline || actionConfig.renderInline;
+ },
+ get hotkey() {
+ return actionConfig.hotkey;
+ },
+ };
+
+ window._nc_fileactions.push(v3Action);
+}
+
+/**
+ * Register a file action compatible with both NC 32 and NC 33+.
+ *
+ * Action code should use the v4 context-object style for callbacks,
+ * e.g. `exec({ nodes, view }) { ... }`.
+ */
+export function registerFileActionCompat(actionConfig) {
+ if (isNextcloud32OrLower()) {
+ registerFileActionV3(actionConfig);
+ } else {
+ registerFileAction(actionConfig);
+ }
+}
+
+/* ================================================================== */
+/* DAV Properties */
+/* ================================================================== */
+
+const registeredDavProperties = new Set();
+
+/**
+ * Register a DAV property compatible with both NC 32 and NC 33+.
+ *
+ * v3 stores properties in `window._nc_dav_properties` and namespaces
+ * in `window._nc_dav_namespaces`. The bundled v4 `registerDavProperty`
+ * writes to the v4 scoped globals, so on NC 32 we additionally push
+ * into the v3 globals.
+ */
+export function registerDavPropertyCompat(property) {
+ if (registeredDavProperties.has(property)) {
+ return;
+ }
+
+ // Always call the bundled v4 function (works on NC 33+)
+ registerDavProperty(property);
+
+ // On NC 32 also write into the v3 globals
+ if (isNextcloud32OrLower()) {
+ const defaultDavNamespaces = {
+ d: "DAV:",
+ nc: "http://nextcloud.org/ns",
+ oc: "http://owncloud.org/ns",
+ ocs: "http://open-collaboration-services.org/ns",
+ };
+
+ if (typeof window._nc_dav_properties === "undefined") {
+ window._nc_dav_properties = [];
+ window._nc_dav_namespaces = { ...defaultDavNamespaces };
+ }
+
+ if (!window._nc_dav_properties.find((p) => p === property)) {
+ window._nc_dav_properties.push(property);
+ window._nc_dav_namespaces = {
+ ...window._nc_dav_namespaces,
+ nc: "http://nextcloud.org/ns",
+ };
+ }
+ }
+
+ registeredDavProperties.add(property);
+}
+
+/* ================================================================== */
+/* New-file menu */
+/* ================================================================== */
+
+/**
+ * Get new-file menu entries, compatible with both NC 32 and NC 33+.
+ */
+export function getNewFileMenuEntriesCompat(context) {
+ if (isNextcloud32OrLower() && window._nc_newfilemenu) {
+ return window._nc_newfilemenu.getEntries(context);
+ }
+ return getNewFileMenuEntries(context);
+}
+
+/**
+ * Add a new-file menu entry, compatible with both NC 32 and NC 33+.
+ */
+export function addNewFileMenuEntryCompat(entry) {
+ if (isNextcloud32OrLower() && window._nc_newfilemenu) {
+ return window._nc_newfilemenu.registerEntry(entry);
+ }
+ return addNewFileMenuEntry(entry);
+}
+
+/**
+ * Remove a new-file menu entry, compatible with both NC 32 and NC 33+.
+ */
+export function removeNewFileMenuEntryCompat(entry) {
+ if (isNextcloud32OrLower() && window._nc_newfilemenu) {
+ return window._nc_newfilemenu.unregisterEntry(entry);
+ }
+ return removeNewFileMenuEntry(entry);
+}
diff --git a/vendor-bin/sentry/composer.lock b/vendor-bin/sentry/composer.lock
index 2bd7697..bd5cc45 100644
--- a/vendor-bin/sentry/composer.lock
+++ b/vendor-bin/sentry/composer.lock
@@ -8,16 +8,16 @@
"packages": [
{
"name": "guzzlehttp/psr7",
- "version": "2.8.0",
+ "version": "2.9.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "21dc724a0583619cd1652f673303492272778051"
+ "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
- "reference": "21dc724a0583619cd1652f673303492272778051",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884",
+ "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884",
"shasum": ""
},
"require": {
@@ -33,6 +33,7 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0",
+ "jshttp/mime-db": "1.54.0.1",
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"suggest": {
@@ -104,7 +105,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.8.0"
+ "source": "https://github.com/guzzle/psr7/tree/2.9.0"
},
"funding": [
{
@@ -120,7 +121,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-23T21:21:41+00:00"
+ "time": "2026-03-10T16:41:02+00:00"
},
{
"name": "jean85/pretty-package-versions",
@@ -386,16 +387,16 @@
},
{
"name": "sentry/sentry",
- "version": "4.17.1",
+ "version": "4.21.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-php.git",
- "reference": "5c696b8de57e841a2bf3b6f6eecfd99acfdda80c"
+ "reference": "2bf405fc4d38f00073a7d023cf321e59f614d54c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/5c696b8de57e841a2bf3b6f6eecfd99acfdda80c",
- "reference": "5c696b8de57e841a2bf3b6f6eecfd99acfdda80c",
+ "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/2bf405fc4d38f00073a7d023cf321e59f614d54c",
+ "reference": "2bf405fc4d38f00073a7d023cf321e59f614d54c",
"shasum": ""
},
"require": {
@@ -406,7 +407,7 @@
"jean85/pretty-package-versions": "^1.5|^2.0.4",
"php": "^7.2|^8.0",
"psr/log": "^1.0|^2.0|^3.0",
- "symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0"
+ "symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0|^8.0"
},
"conflict": {
"raven/raven": "*"
@@ -416,9 +417,12 @@
"guzzlehttp/promises": "^2.0.3",
"guzzlehttp/psr7": "^1.8.4|^2.1.1",
"monolog/monolog": "^1.6|^2.0|^3.0",
+ "nyholm/psr7": "^1.8",
"phpbench/phpbench": "^1.0",
"phpstan/phpstan": "^1.3",
- "phpunit/phpunit": "^8.5|^9.6",
+ "phpunit/phpunit": "^8.5.52|^9.6.34",
+ "spiral/roadrunner-http": "^3.6",
+ "spiral/roadrunner-worker": "^3.6",
"vimeo/psalm": "^4.17"
},
"suggest": {
@@ -458,7 +462,7 @@
],
"support": {
"issues": "https://github.com/getsentry/sentry-php/issues",
- "source": "https://github.com/getsentry/sentry-php/tree/4.17.1"
+ "source": "https://github.com/getsentry/sentry-php/tree/4.21.0"
},
"funding": [
{
@@ -470,7 +474,7 @@
"type": "custom"
}
],
- "time": "2025-10-23T15:19:24+00:00"
+ "time": "2026-02-24T15:32:51+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -541,16 +545,16 @@
},
{
"name": "symfony/options-resolver",
- "version": "v7.3.3",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d"
+ "reference": "b38026df55197f9e39a44f3215788edf83187b80"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d",
- "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b38026df55197f9e39a44f3215788edf83187b80",
+ "reference": "b38026df55197f9e39a44f3215788edf83187b80",
"shasum": ""
},
"require": {
@@ -588,7 +592,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v7.3.3"
+ "source": "https://github.com/symfony/options-resolver/tree/v7.4.0"
},
"funding": [
{
@@ -608,7 +612,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-05T10:16:07+00:00"
+ "time": "2025-11-12T15:39:26+00:00"
}
],
"packages-dev": [],
@@ -619,5 +623,5 @@
"prefer-lowest": false,
"platform": {},
"platform-dev": {},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.9.0"
}
diff --git a/webpack.config.js b/webpack.config.js
index f513c06..a248f88 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,5 +1,12 @@
const path = require("path");
const webpackConfig = require("@nextcloud/webpack-vue-config");
+
+// Remove vue$ alias set by @nextcloud/webpack-vue-config
+// This is required for @nextcloud/dialogs v7+ which uses Vue 3 internally
+// and must not be forced to resolve to the project's Vue 2
+// See: https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/master/CHANGELOG.md#v700
+delete webpackConfig.resolve.alias["vue$"];
+
webpackConfig.resolve.alias = {
...webpackConfig.resolve.alias,
"@": path.resolve(__dirname, "src"),