diff --git a/package-lock.json b/package-lock.json index a5e0150d..6d61830f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,14 @@ "version": "1.0.1", "license": "agpl", "dependencies": { + "@nextcloud/auth": "^2.2.1", + "@nextcloud/axios": "^2.4.0", + "@nextcloud/dialogs": "^4.2.2", + "@nextcloud/event-bus": "^3.1.0", + "@nextcloud/initial-state": "^2.1.0", "@nextcloud/l10n": "^2.2.0", "@nextcloud/paths": "^2.1.0", + "@nextcloud/router": "^2.2.0", "@nextcloud/sharing": "^0.1.0", "@nextcloud/vue": "7.12.6", "filerobot-image-editor": "^4.5.2", @@ -41,6 +47,7 @@ "@types/url-parse": "^1.4.10", "@types/videojs-contrib-quality-levels": "^2.0.3", "css-loader": "^6.8.1", + "node-polyfill-webpack-plugin": "^2.0.1", "playwright": "^1.39.0", "prettier": "^3.0.3", "sass": "^1.69.5", @@ -1914,27 +1921,35 @@ "unist-util-is": "^3.0.0" } }, + "node_modules/@mdi/svg": { + "version": "7.3.67", + "resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-7.3.67.tgz", + "integrity": "sha512-KNr7D8jbu8DEprgRckVywVBkajsGGqocFjOzlekv35UedLjpkMDTkFO8VYnhnLySL0QaPBa568fe8BZsB0TBJQ==" + }, "node_modules/@nextcloud/auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.0.0.tgz", - "integrity": "sha512-v8K8tvjkOsGt1+gKydVeMiEwWLXlfPWSptXnMqP21Xd6pFAQxNuNNCY679XKU4MNaKzpZqLstCCxv/KrjeQv8A==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.2.1.tgz", + "integrity": "sha512-zYtgrg9NMZfN8kmL5JPCsh5jDhpTCEslhnZWMvbhTiQ7hrOnji/67ok6VMK0CTJ1a92Vr67Ow72lW7YRX69zEA==", "dependencies": { - "@nextcloud/event-bus": "^3.0.0" + "@nextcloud/event-bus": "^3.1.0" + }, + "engines": { + "node": "^20.0.0", + "npm": "^9.0.0" } }, "node_modules/@nextcloud/axios": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.1.0.tgz", - "integrity": "sha512-fUwRQeYfdX0sP+DJnQiqlJfB7ngNHWu6Gbi0nYapkB7IFiLECeL2SWzDOFj+M04j4ApsblEMBqGOJ38WEgdeyA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.4.0.tgz", + "integrity": "sha512-ARGzT9p45L0sjRIV3JZWGPtMbwgxd4eEMcMJNn58NA7UQIsMkTwHb5pXQjL+5elXY9zp/JMz7n/7SHTp0bkuXQ==", "dependencies": { - "@nextcloud/auth": "^2.0.0", - "@nextcloud/router": "^2.0.0", - "axios": "^0.27.2", - "tslib": "^2.4.0" + "@nextcloud/auth": "^2.1.0", + "@nextcloud/router": "^2.1.2", + "axios": "^1.4.0" }, "engines": { - "node": "^16.0.0", - "npm": "^7.0.0 || ^8.0.0" + "node": "^20.0.0", + "npm": "^9.0.0" } }, "node_modules/@nextcloud/browser-storage": { @@ -1977,35 +1992,124 @@ } }, "node_modules/@nextcloud/dialogs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-4.0.1.tgz", - "integrity": "sha512-jgIJdxTpc3suHkuZBRge6/dU6krG7x9emMGTxKY5qRQqFwn9r4rCqjV7Cys7VMn1QLlHmEDdqHcYZFRtN/XVNA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-4.2.2.tgz", + "integrity": "sha512-KC55NmEXxABt2aHDIZEvjEIOAmVuc9/tsqS2P2OmmkWzPT/IQH+y87vU1ZfkPNUblZQQ73nK1U4/JQpEk/FuuQ==", "dependencies": { - "@nextcloud/l10n": "^1.3.0", - "@nextcloud/typings": "^1.4.3", - "core-js": "^3.6.4", - "toastify-js": "^1.12.0" + "@mdi/svg": "^7.3.67", + "@nextcloud/files": "^3.0.0-beta.14", + "@nextcloud/l10n": "^2.2.0", + "@nextcloud/router": "^2.1.2", + "@nextcloud/typings": "^1.7.0", + "@nextcloud/vue": "^7.12.4", + "@types/toastify-js": "^1.12.2", + "@vueuse/core": "^10.4.1", + "toastify-js": "^1.12.0", + "vue-frag": "^1.4.3", + "webdav": "^5.2.3" }, "engines": { - "node": "^16.0.0", - "npm": "^7.0.0 || ^8.0.0" + "node": "^20.0.0", + "npm": "^9.0.0" + }, + "peerDependencies": { + "vue": "^2.7.14" } }, - "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/l10n": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", - "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", + "node_modules/@nextcloud/dialogs/node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" + }, + "node_modules/@nextcloud/dialogs/node_modules/@vueuse/core": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.6.1.tgz", + "integrity": "sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q==", "dependencies": { - "core-js": "^3.6.4", - "node-gettext": "^3.0.0" + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.6.1", + "@vueuse/shared": "10.6.1", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@nextcloud/dialogs/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@nextcloud/dialogs/node_modules/@vueuse/metadata": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.6.1.tgz", + "integrity": "sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@nextcloud/dialogs/node_modules/@vueuse/shared": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.6.1.tgz", + "integrity": "sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q==", + "dependencies": { + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@nextcloud/dialogs/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, "node_modules/@nextcloud/event-bus": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.0.2.tgz", - "integrity": "sha512-svXCZa4UkoZKsBiGzTi0cVcbPFUOhCm7pMKjGumRwBvHywX+8by478IQ8Grw75PFHxajMJZ0KrOTTM8WnzzEAw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.1.0.tgz", + "integrity": "sha512-purXQsXbhbmpcDsbDuR0i7vwUgOsqnIUa7QAD3lV/UZUkUT94SmxBM5LgQ8iV8TQBWWleEwQHy5kYfHeTGF9wg==", "dependencies": { - "semver": "^7.3.7" + "semver": "^7.5.1" }, "engines": { "node": "^16.0.0", @@ -2024,9 +2128,9 @@ } }, "node_modules/@nextcloud/event-bus/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2042,10 +2146,67 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/@nextcloud/files": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0.tgz", + "integrity": "sha512-zk5oIuVDyk2gWBKCJ+0B1HE3VjhuGnz2iLNbTcbRuTjMYb6aYCAEn1LY0dXbUQG93ehndYJCOdaYri/TaGrlXw==", + "dependencies": { + "@nextcloud/auth": "^2.2.1", + "@nextcloud/l10n": "^2.2.0", + "@nextcloud/logger": "^2.7.0", + "@nextcloud/paths": "^2.1.0", + "@nextcloud/router": "^2.2.0", + "is-svg": "^5.0.0", + "webdav": "^5.3.0" + }, + "engines": { + "node": "^20.0.0", + "npm": "^9.0.0" + } + }, + "node_modules/@nextcloud/files/node_modules/fast-xml-parser": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@nextcloud/files/node_modules/is-svg": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-5.0.0.tgz", + "integrity": "sha512-sRl7J0oX9yUNamSdc8cwgzh9KBLnQXNzGmW0RVHwg/jEYjGNYHC6UvnYD8+hAeut9WwxRvhG9biK7g/wDGxcMw==", + "dependencies": { + "fast-xml-parser": "^4.1.3" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@nextcloud/initial-state": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.0.0.tgz", - "integrity": "sha512-xmNP30v/RnkJ2z1HcuEo7YfcLJJa+FdWTwgNldXHOlMeMbl/ESpsGkWL2sULrhYurz64L0JpfwEdi/cHcmyuZQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.1.0.tgz", + "integrity": "sha512-b92X/GvUPGQJpUQwauyG3D3dHsWowViVLnTtFPSMUc0rXtvYR5CvhkqJRfPC7O7W4VC7+V3q+FWeA+mQWMxN2Q==", + "engines": { + "node": "^20.0.0", + "npm": "^9.0.0" + } }, "node_modules/@nextcloud/l10n": { "version": "2.2.0", @@ -2064,16 +2225,16 @@ } }, "node_modules/@nextcloud/logger": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-2.4.0.tgz", - "integrity": "sha512-OXNpa+GdA+mxSmpyFaf3PJjLdSYNJaBWfa1Ey4gF7Ap76Ndya8d43TX0sdfakCAjuZsTS/y5JfKuwHjpeipdhQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-2.7.0.tgz", + "integrity": "sha512-DSJg9H1jT2zfr7uoP4tL5hKncyY+LOuxJzLauj0M/f6gnpoXU5WG1Zw8EFPOrRWjkC0ZE+NCqrMnITgdRRpXJQ==", "dependencies": { "@nextcloud/auth": "^2.0.0", "core-js": "^3.6.4" }, "engines": { - "node": "^16.0.0", - "npm": "^7.0.0 || ^8.0.0" + "node": "^20.0.0", + "npm": "^9.0.0" } }, "node_modules/@nextcloud/paths": { @@ -2085,16 +2246,16 @@ } }, "node_modules/@nextcloud/router": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.1.2.tgz", - "integrity": "sha512-Jj5fgjeHT1vVIgOyUGOeHfwk2KgaO77QGfqZAT6GWXvpAsN0mkqwljkg4FkHrQRouYqCE4VnJ5o8/w0DAN89tA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.2.0.tgz", + "integrity": "sha512-M4AVGnB5tt3MYO5RpH/R2jq7z/nW05AmRhk4Lh68krVwRIYGo8pgNikKrPGogHd2Q3UgzF5Py1drHz3uuV99bQ==", "dependencies": { - "@nextcloud/typings": "^1.0.0", + "@nextcloud/typings": "^1.7.0", "core-js": "^3.6.4" }, "engines": { - "node": "^16.0.0", - "npm": "^7.0.0 || ^8.0.0" + "node": "^20.0.0", + "npm": "^9.0.0" } }, "node_modules/@nextcloud/sharing": { @@ -2547,6 +2708,11 @@ "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" }, + "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==" + }, "node_modules/@types/trusted-types": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", @@ -3319,12 +3485,13 @@ } }, "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { @@ -4738,9 +4905,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", @@ -7360,6 +7527,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -11553,23 +11725,27 @@ } } }, + "@mdi/svg": { + "version": "7.3.67", + "resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-7.3.67.tgz", + "integrity": "sha512-KNr7D8jbu8DEprgRckVywVBkajsGGqocFjOzlekv35UedLjpkMDTkFO8VYnhnLySL0QaPBa568fe8BZsB0TBJQ==" + }, "@nextcloud/auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.0.0.tgz", - "integrity": "sha512-v8K8tvjkOsGt1+gKydVeMiEwWLXlfPWSptXnMqP21Xd6pFAQxNuNNCY679XKU4MNaKzpZqLstCCxv/KrjeQv8A==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.2.1.tgz", + "integrity": "sha512-zYtgrg9NMZfN8kmL5JPCsh5jDhpTCEslhnZWMvbhTiQ7hrOnji/67ok6VMK0CTJ1a92Vr67Ow72lW7YRX69zEA==", "requires": { - "@nextcloud/event-bus": "^3.0.0" + "@nextcloud/event-bus": "^3.1.0" } }, "@nextcloud/axios": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.1.0.tgz", - "integrity": "sha512-fUwRQeYfdX0sP+DJnQiqlJfB7ngNHWu6Gbi0nYapkB7IFiLECeL2SWzDOFj+M04j4ApsblEMBqGOJ38WEgdeyA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.4.0.tgz", + "integrity": "sha512-ARGzT9p45L0sjRIV3JZWGPtMbwgxd4eEMcMJNn58NA7UQIsMkTwHb5pXQjL+5elXY9zp/JMz7n/7SHTp0bkuXQ==", "requires": { - "@nextcloud/auth": "^2.0.0", - "@nextcloud/router": "^2.0.0", - "axios": "^0.27.2", - "tslib": "^2.4.0" + "@nextcloud/auth": "^2.1.0", + "@nextcloud/router": "^2.1.2", + "axios": "^1.4.0" } }, "@nextcloud/browser-storage": { @@ -11607,33 +11783,76 @@ } }, "@nextcloud/dialogs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-4.0.1.tgz", - "integrity": "sha512-jgIJdxTpc3suHkuZBRge6/dU6krG7x9emMGTxKY5qRQqFwn9r4rCqjV7Cys7VMn1QLlHmEDdqHcYZFRtN/XVNA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-4.2.2.tgz", + "integrity": "sha512-KC55NmEXxABt2aHDIZEvjEIOAmVuc9/tsqS2P2OmmkWzPT/IQH+y87vU1ZfkPNUblZQQ73nK1U4/JQpEk/FuuQ==", "requires": { - "@nextcloud/l10n": "^1.3.0", - "@nextcloud/typings": "^1.4.3", - "core-js": "^3.6.4", - "toastify-js": "^1.12.0" + "@mdi/svg": "^7.3.67", + "@nextcloud/files": "^3.0.0-beta.14", + "@nextcloud/l10n": "^2.2.0", + "@nextcloud/router": "^2.1.2", + "@nextcloud/typings": "^1.7.0", + "@nextcloud/vue": "^7.12.4", + "@types/toastify-js": "^1.12.2", + "@vueuse/core": "^10.4.1", + "toastify-js": "^1.12.0", + "vue-frag": "^1.4.3", + "webdav": "^5.2.3" }, "dependencies": { - "@nextcloud/l10n": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", - "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", + "@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" + }, + "@vueuse/core": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.6.1.tgz", + "integrity": "sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q==", "requires": { - "core-js": "^3.6.4", - "node-gettext": "^3.0.0" + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.6.1", + "@vueuse/shared": "10.6.1", + "vue-demi": ">=0.14.6" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "requires": {} + } + } + }, + "@vueuse/metadata": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.6.1.tgz", + "integrity": "sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw==" + }, + "@vueuse/shared": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.6.1.tgz", + "integrity": "sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q==", + "requires": { + "vue-demi": ">=0.14.6" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "requires": {} + } } } } }, "@nextcloud/event-bus": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.0.2.tgz", - "integrity": "sha512-svXCZa4UkoZKsBiGzTi0cVcbPFUOhCm7pMKjGumRwBvHywX+8by478IQ8Grw75PFHxajMJZ0KrOTTM8WnzzEAw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.1.0.tgz", + "integrity": "sha512-purXQsXbhbmpcDsbDuR0i7vwUgOsqnIUa7QAD3lV/UZUkUT94SmxBM5LgQ8iV8TQBWWleEwQHy5kYfHeTGF9wg==", "requires": { - "semver": "^7.3.7" + "semver": "^7.5.1" }, "dependencies": { "lru-cache": { @@ -11645,9 +11864,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -11659,10 +11878,42 @@ } } }, + "@nextcloud/files": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0.tgz", + "integrity": "sha512-zk5oIuVDyk2gWBKCJ+0B1HE3VjhuGnz2iLNbTcbRuTjMYb6aYCAEn1LY0dXbUQG93ehndYJCOdaYri/TaGrlXw==", + "requires": { + "@nextcloud/auth": "^2.2.1", + "@nextcloud/l10n": "^2.2.0", + "@nextcloud/logger": "^2.7.0", + "@nextcloud/paths": "^2.1.0", + "@nextcloud/router": "^2.2.0", + "is-svg": "^5.0.0", + "webdav": "^5.3.0" + }, + "dependencies": { + "fast-xml-parser": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", + "requires": { + "strnum": "^1.0.5" + } + }, + "is-svg": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-5.0.0.tgz", + "integrity": "sha512-sRl7J0oX9yUNamSdc8cwgzh9KBLnQXNzGmW0RVHwg/jEYjGNYHC6UvnYD8+hAeut9WwxRvhG9biK7g/wDGxcMw==", + "requires": { + "fast-xml-parser": "^4.1.3" + } + } + } + }, "@nextcloud/initial-state": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.0.0.tgz", - "integrity": "sha512-xmNP30v/RnkJ2z1HcuEo7YfcLJJa+FdWTwgNldXHOlMeMbl/ESpsGkWL2sULrhYurz64L0JpfwEdi/cHcmyuZQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.1.0.tgz", + "integrity": "sha512-b92X/GvUPGQJpUQwauyG3D3dHsWowViVLnTtFPSMUc0rXtvYR5CvhkqJRfPC7O7W4VC7+V3q+FWeA+mQWMxN2Q==" }, "@nextcloud/l10n": { "version": "2.2.0", @@ -11677,9 +11928,9 @@ } }, "@nextcloud/logger": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-2.4.0.tgz", - "integrity": "sha512-OXNpa+GdA+mxSmpyFaf3PJjLdSYNJaBWfa1Ey4gF7Ap76Ndya8d43TX0sdfakCAjuZsTS/y5JfKuwHjpeipdhQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-2.7.0.tgz", + "integrity": "sha512-DSJg9H1jT2zfr7uoP4tL5hKncyY+LOuxJzLauj0M/f6gnpoXU5WG1Zw8EFPOrRWjkC0ZE+NCqrMnITgdRRpXJQ==", "requires": { "@nextcloud/auth": "^2.0.0", "core-js": "^3.6.4" @@ -11694,11 +11945,11 @@ } }, "@nextcloud/router": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.1.2.tgz", - "integrity": "sha512-Jj5fgjeHT1vVIgOyUGOeHfwk2KgaO77QGfqZAT6GWXvpAsN0mkqwljkg4FkHrQRouYqCE4VnJ5o8/w0DAN89tA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.2.0.tgz", + "integrity": "sha512-M4AVGnB5tt3MYO5RpH/R2jq7z/nW05AmRhk4Lh68krVwRIYGo8pgNikKrPGogHd2Q3UgzF5Py1drHz3uuV99bQ==", "requires": { - "@nextcloud/typings": "^1.0.0", + "@nextcloud/typings": "^1.7.0", "core-js": "^3.6.4" } }, @@ -12080,6 +12331,11 @@ "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" }, + "@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==" + }, "@types/trusted-types": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", @@ -12690,12 +12946,13 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "babel-plugin-polyfill-corejs2": { @@ -13744,9 +14001,9 @@ } }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" }, "for-each": { "version": "0.3.3", @@ -15558,6 +15815,11 @@ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==" }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", diff --git a/package.json b/package.json index 304716eb..90921742 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,14 @@ "e2e": "playwright test" }, "dependencies": { + "@nextcloud/auth": "^2.2.1", + "@nextcloud/axios": "^2.4.0", + "@nextcloud/dialogs": "^4.2.2", + "@nextcloud/event-bus": "^3.1.0", + "@nextcloud/initial-state": "^2.1.0", "@nextcloud/l10n": "^2.2.0", "@nextcloud/paths": "^2.1.0", + "@nextcloud/router": "^2.2.0", "@nextcloud/sharing": "^0.1.0", "@nextcloud/vue": "7.12.6", "filerobot-image-editor": "^4.5.2", @@ -66,6 +72,7 @@ "@types/url-parse": "^1.4.10", "@types/videojs-contrib-quality-levels": "^2.0.3", "css-loader": "^6.8.1", + "node-polyfill-webpack-plugin": "^2.0.1", "playwright": "^1.39.0", "prettier": "^3.0.3", "sass": "^1.69.5", diff --git a/src/main.ts b/src/main.ts index 8eb18138..ed41f11a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -10,6 +10,7 @@ import VueVirtualScroller from 'vue-virtual-scroller'; // CSS for components import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'; +import '@nextcloud/dialogs/style.css'; // Initialize global memories object globalThis._m = { diff --git a/src/services/utils/dialog.ts b/src/services/utils/dialog.ts index 16c877cc..7d8a8a13 100644 --- a/src/services/utils/dialog.ts +++ b/src/services/utils/dialog.ts @@ -111,10 +111,9 @@ export async function chooseNcFolder( title: string, initial: string = '/', type: FilePickerType = FilePickerType.Choose, -) { +): Promise { const picker = getFilePickerBuilder(title) .setMultiSelect(false) - .setModal(true) .setType(type) .addMimeTypeFilter('httpd/unix-directory') .allowDirectories() @@ -122,8 +121,13 @@ export async function chooseNcFolder( .build(); // Choose a folder - const promise = fragment.wrap(picker.pick(), fragment.types.dialog); - let folder = (await promise) || '/'; + let folder = await fragment.wrap(picker.pick(), fragment.types.dialog); + if (typeof folder !== 'string') { + throw new Error('File picker did not return a string'); + } + + // Blank is not a valid folder + folder = folder || '/'; // Remove double slashes folder = folder.replace(/\/+/g, '/'); diff --git a/webpack.config.ts b/webpack.config.ts index caa85fad..eaeb7bfd 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -4,6 +4,7 @@ const path = require('path'); const WorkboxPlugin = require('workbox-webpack-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const { VueLoaderPlugin } = require('vue-loader'); +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin'); const appName = process.env.npm_package_name!; const appVersion = process.env.npm_package_version!; @@ -76,6 +77,10 @@ module.exports = { test: /\.(png|jpe?g|gif|svg|woff2?|eot|ttf)$/, type: 'asset/inline', }, + { + resourceQuery: /raw/, + type: 'asset/source', + }, { test: /\.s?css$/, use: ['style-loader', 'css-loader', 'sass-loader'], @@ -102,6 +107,12 @@ module.exports = { plugins: [ new VueLoaderPlugin(), + // @nextcloud/dialogs depends on path + // This is really frustrating, but it's the only way + new NodePolyfillPlugin({ + includeAliases: ['path', 'process'], + }), + // Bundle service worker new WorkboxPlugin.InjectManifest({ swSrc: path.resolve(path.join('src', 'service-worker.ts')),