diff --git a/package-lock.json b/package-lock.json index 3504d204..fe43539d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,12 @@ "version": "8.0.0-dev.0", "license": "AGPL-3.0-or-later", "dependencies": { + "@nextcloud/auth": "^2.5.2", "@nextcloud/initial-state": "^3.0.0", "@nextcloud/router": "^3.0.1", - "escape-html": "^1.0.3" + "backbone": "^1.6.1", + "escape-html": "^1.0.3", + "jquery": "^3.7.1" }, "devDependencies": { "@babel/core": "^7.28.4", @@ -1762,6 +1765,32 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@nextcloud/auth": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.5.2.tgz", + "integrity": "sha512-1dr+Xhvg2QtsFC23KFXJSkU524EVgI/+WFBGTZ8tFa+9hmcZ3CqZIHjtXm3KxUvezwAY5023Ml0n2vpdYkpBXQ==", + "license": "GPL-3.0-or-later", + "dependencies": { + "@nextcloud/browser-storage": "^0.4.0", + "@nextcloud/event-bus": "^3.3.2" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@nextcloud/browser-storage": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.4.0.tgz", + "integrity": "sha512-D6XxznxCYmJ3oBCC3p0JB6GZJ2RZ9dgbB1UqtTePXrIvHUMBAeF/YkiGKYxLAVZCZb+NSNZXgAYHm/3LnIUbDg==", + "license": "GPL-3.0-or-later", + "dependencies": { + "core-js": "3.37.0" + }, + "engines": { + "node": "^20.0.0", + "npm": "^10.0.0" + } + }, "node_modules/@nextcloud/browserslist-config": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.0.1.tgz", @@ -1832,6 +1861,32 @@ "node": ">=10" } }, + "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==", + "license": "GPL-3.0-or-later", + "dependencies": { + "@types/semver": "^7.5.8", + "semver": "^7.6.3" + }, + "engines": { + "node": "^20.0.0", + "npm": "^10.0.0" + } + }, + "node_modules/@nextcloud/event-bus/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@nextcloud/initial-state": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz", @@ -1981,6 +2036,12 @@ "undici-types": "~6.20.0" } }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "license": "MIT" + }, "node_modules/@types/sizzle": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.5.tgz", @@ -2805,6 +2866,15 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/backbone": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.6.1.tgz", + "integrity": "sha512-YQzWxOrIgL6BoFnZjThVN99smKYhyEXXFyJJ2lsF1wJLyo4t+QjmkLrH8/fN22FZ4ykF70Xq7PgTugJVR4zS9Q==", + "license": "MIT", + "dependencies": { + "underscore": ">=1.8.3" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3018,6 +3088,17 @@ "dev": true, "peer": true }, + "node_modules/core-js": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz", + "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-js-compat": { "version": "3.43.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", @@ -4892,6 +4973,12 @@ "node": ">= 10.13.0" } }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6415,6 +6502,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -7980,6 +8073,23 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@nextcloud/auth": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.5.2.tgz", + "integrity": "sha512-1dr+Xhvg2QtsFC23KFXJSkU524EVgI/+WFBGTZ8tFa+9hmcZ3CqZIHjtXm3KxUvezwAY5023Ml0n2vpdYkpBXQ==", + "requires": { + "@nextcloud/browser-storage": "^0.4.0", + "@nextcloud/event-bus": "^3.3.2" + } + }, + "@nextcloud/browser-storage": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.4.0.tgz", + "integrity": "sha512-D6XxznxCYmJ3oBCC3p0JB6GZJ2RZ9dgbB1UqtTePXrIvHUMBAeF/YkiGKYxLAVZCZb+NSNZXgAYHm/3LnIUbDg==", + "requires": { + "core-js": "3.37.0" + } + }, "@nextcloud/browserslist-config": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.0.1.tgz", @@ -8015,6 +8125,22 @@ } } }, + "@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==", + "requires": { + "@types/semver": "^7.5.8", + "semver": "^7.6.3" + }, + "dependencies": { + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==" + } + } + }, "@nextcloud/initial-state": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz", @@ -8138,6 +8264,11 @@ "undici-types": "~6.20.0" } }, + "@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==" + }, "@types/sizzle": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.5.tgz", @@ -8723,6 +8854,14 @@ "@babel/helper-define-polyfill-provider": "^0.6.5" } }, + "backbone": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.6.1.tgz", + "integrity": "sha512-YQzWxOrIgL6BoFnZjThVN99smKYhyEXXFyJJ2lsF1wJLyo4t+QjmkLrH8/fN22FZ4ykF70Xq7PgTugJVR4zS9Q==", + "requires": { + "underscore": ">=1.8.3" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -8872,6 +9011,11 @@ "dev": true, "peer": true }, + "core-js": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz", + "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==" + }, "core-js-compat": { "version": "3.43.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", @@ -10221,6 +10365,11 @@ "supports-color": "^8.0.0" } }, + "jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11305,6 +11454,11 @@ "which-boxed-primitive": "^1.0.2" } }, + "underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + }, "undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", diff --git a/package.json b/package.json index ebb8f378..a807d765 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,12 @@ "watch": "NODE_ENV=development webpack --progress --watch --config webpack.config.js" }, "dependencies": { + "@nextcloud/auth": "^2.5.2", "@nextcloud/initial-state": "^3.0.0", "@nextcloud/router": "^3.0.1", - "escape-html": "^1.0.3" + "backbone": "^1.6.1", + "escape-html": "^1.0.3", + "jquery": "^3.7.1" }, "devDependencies": { "@babel/core": "^7.28.4", diff --git a/src/admin.js b/src/admin.js index 1ba9bf35..50dd598d 100644 --- a/src/admin.js +++ b/src/admin.js @@ -9,10 +9,22 @@ */ import escapeHTML from 'escape-html' +import $ from 'jquery' import { generateUrl, imagePath, generateOcsUrl } from '@nextcloud/router'; +import { getRequestToken } from '@nextcloud/auth' +import Backbone from 'backbone'; + +Backbone.$ = $; + +/* global _, Handlebars */ +(function(OC, OCA, _) { + $(document).on('ajaxSend', function(elm, xhr, settings) { + if (settings.crossDomain === false) { + xhr.setRequestHeader('requesttoken', getRequestToken()) + xhr.setRequestHeader('OCS-APIREQUEST', 'true') + } + }) -/* global _, Handlebars, $ */ -(function(OC, OCA, _, Backbone) { if (!OCA.External) { /** * @namespace @@ -334,7 +346,7 @@ import { generateUrl, imagePath, generateOcsUrl } from '@nextcloud/router'; OC.Settings.Apps.rebuildNavigation() }, } -})(OC, OCA, _, OC.Backbone) +})(OC, OCA, _) window.addEventListener('DOMContentLoaded', function() { OCA.External.App.init()