From 9f64e0b49a8272a9980d1ed31207377fd3c1c9e6 Mon Sep 17 00:00:00 2001 From: Tatjana Kaschperko Lindt Date: Mon, 16 Mar 2026 10:57:16 +0100 Subject: [PATCH 1/7] feat(files_external): convert to delegated settings Signed-off-by: Tatjana Kaschperko Lindt --- apps/files_external/lib/Settings/Admin.php | 15 ++++++++++++--- apps/files_external/tests/Settings/AdminTest.php | 9 ++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/apps/files_external/lib/Settings/Admin.php b/apps/files_external/lib/Settings/Admin.php index 9af0f3c61c16b..ce7631a7acc0a 100644 --- a/apps/files_external/lib/Settings/Admin.php +++ b/apps/files_external/lib/Settings/Admin.php @@ -12,15 +12,16 @@ use OCA\Files_External\Service\GlobalStoragesService; use OCP\AppFramework\Http\TemplateResponse; use OCP\Encryption\IManager; -use OCP\Settings\ISettings; - -class Admin implements ISettings { +use OCP\IL10N; +use OCP\Settings\IDelegatedSettings; +class Admin implements IDelegatedSettings { public function __construct( private IManager $encryptionManager, private GlobalStoragesService $globalStoragesService, private BackendService $backendService, private GlobalAuth $globalAuth, + private IL10N $l10n, ) { } @@ -60,4 +61,12 @@ public function getSection() { public function getPriority() { return 40; } + + public function getName(): string { + return $this->l10n->t('External storage'); + } + + public function getAuthorizedAppConfig(): array { + return []; + } } diff --git a/apps/files_external/tests/Settings/AdminTest.php b/apps/files_external/tests/Settings/AdminTest.php index fd4a1949760c0..92eb9b89f6b6b 100644 --- a/apps/files_external/tests/Settings/AdminTest.php +++ b/apps/files_external/tests/Settings/AdminTest.php @@ -14,6 +14,7 @@ use OCA\Files_External\Settings\Admin; use OCP\AppFramework\Http\TemplateResponse; use OCP\Encryption\IManager; +use OCP\IL10N; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -22,6 +23,7 @@ class AdminTest extends TestCase { private GlobalStoragesService&MockObject $globalStoragesService; private BackendService&MockObject $backendService; private GlobalAuth&MockObject $globalAuth; + private IL10N&MockObject $l10n; private Admin $admin; protected function setUp(): void { @@ -30,12 +32,17 @@ protected function setUp(): void { $this->globalStoragesService = $this->createMock(GlobalStoragesService::class); $this->backendService = $this->createMock(BackendService::class); $this->globalAuth = $this->createMock(GlobalAuth::class); + $this->l10n = $this->createMock(IL10N::class); + $this->l10n->method('t')->willReturnCallback(function ($text) { + return $text; + }); $this->admin = new Admin( $this->encryptionManager, $this->globalStoragesService, $this->backendService, - $this->globalAuth + $this->globalAuth, + $this->l10n ); } From 34c736e8c2a35ccf1049cc4f6b603339e80f6ec6 Mon Sep 17 00:00:00 2001 From: Tatjana Kaschperko Lindt Date: Mon, 30 Mar 2026 12:25:54 +0200 Subject: [PATCH 2/7] feat(files_external): add #[AuthorizedAdminSetting] to GlobalStoragesController Signed-off-by: Tatjana Kaschperko Lindt --- .../Controller/GlobalStoragesController.php | 20 +++++++++++++++++++ .../tests/Settings/AdminTest.php | 18 +++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php index e7274c9cfb64c..ebfc4e1d40933 100644 --- a/apps/files_external/lib/Controller/GlobalStoragesController.php +++ b/apps/files_external/lib/Controller/GlobalStoragesController.php @@ -9,7 +9,9 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; +use OCA\Files_External\Settings\Admin; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting; use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; use OCP\AppFramework\Http\DataResponse; use OCP\IConfig; @@ -71,6 +73,7 @@ public function __construct( * * @return DataResponse */ + #[AuthorizedAdminSetting(settings: Admin::class)] #[PasswordConfirmationRequired(strict: true)] public function create( $mountPoint, @@ -136,6 +139,7 @@ public function create( * * @return DataResponse */ + #[AuthorizedAdminSetting(settings: Admin::class)] #[PasswordConfirmationRequired(strict: true)] public function update( $id, @@ -186,4 +190,20 @@ public function update( Http::STATUS_OK ); } + + #[AuthorizedAdminSetting(settings: Admin::class)] + public function index() { + return parent::index(); + } + + #[AuthorizedAdminSetting(settings: Admin::class)] + public function show(int $id, $testOnly = true) { + return parent::show($id, $testOnly); + } + + #[AuthorizedAdminSetting(settings: Admin::class)] + #[PasswordConfirmationRequired(strict: true)] + public function destroy(int $id) { + return parent::destroy($id); + } } diff --git a/apps/files_external/tests/Settings/AdminTest.php b/apps/files_external/tests/Settings/AdminTest.php index 92eb9b89f6b6b..7abbb33d23d4a 100644 --- a/apps/files_external/tests/Settings/AdminTest.php +++ b/apps/files_external/tests/Settings/AdminTest.php @@ -98,4 +98,22 @@ public function testGetSection(): void { public function testGetPriority(): void { $this->assertSame(40, $this->admin->getPriority()); } + + public function testGetName(): void { + $this->l10n->expects($this->once()) + ->method('t') + ->with('External storage') + ->willReturn('External storage'); + + $this->assertSame('External storage', $this->admin->getName()); + } + + public function testGetAuthorizedAppConfig(): void { + $this->assertSame([], $this->admin->getAuthorizedAppConfig()); + } + + public function testImplementsIDelegatedSettings(): void { + $this->assertInstanceOf(\OCP\Settings\IDelegatedSettings::class, $this->admin); + $this->assertInstanceOf(\OCP\Settings\ISettings::class, $this->admin); + } } From e38652e64775b7b0c66287147238be5bede96a37 Mon Sep 17 00:00:00 2001 From: Tatjana Kaschperko Lindt Date: Mon, 30 Mar 2026 12:54:06 +0200 Subject: [PATCH 3/7] feat(files_external): allow delegated admins to save global credentials Signed-off-by: Tatjana Kaschperko Lindt --- .../lib/Controller/AjaxController.php | 6 +- .../tests/Controller/AjaxControllerTest.php | 72 +++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/apps/files_external/lib/Controller/AjaxController.php b/apps/files_external/lib/Controller/AjaxController.php index 5cee642253010..154c30b13653f 100644 --- a/apps/files_external/lib/Controller/AjaxController.php +++ b/apps/files_external/lib/Controller/AjaxController.php @@ -7,8 +7,10 @@ */ namespace OCA\Files_External\Controller; +use OC\Settings\AuthorizedGroupMapper; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; use OCA\Files_External\Lib\Auth\PublicKey\RSA; +use OCA\Files_External\Settings\Admin; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\Attribute\NoAdminRequired; @@ -36,6 +38,7 @@ public function __construct( private IUserSession $userSession, private IGroupManager $groupManager, private IL10N $l10n, + private AuthorizedGroupMapper $authorizedGroupMapper, ) { parent::__construct($appName, $request); } @@ -87,9 +90,10 @@ public function saveGlobalCredentials($uid, $user, $password): JSONResponse { } // Non-admins can only edit their own credentials - // Admin can edit global credentials + // Admin or delegated admin can edit global credentials $allowedToEdit = $uid === '' ? $this->groupManager->isAdmin($currentUser->getUID()) + || in_array(Admin::class, $this->authorizedGroupMapper->findAllClassesForUser($currentUser), true) : $currentUser->getUID() === $uid; if ($allowedToEdit) { diff --git a/apps/files_external/tests/Controller/AjaxControllerTest.php b/apps/files_external/tests/Controller/AjaxControllerTest.php index b1ea7a2b1b1b6..6c3a48740c884 100644 --- a/apps/files_external/tests/Controller/AjaxControllerTest.php +++ b/apps/files_external/tests/Controller/AjaxControllerTest.php @@ -7,9 +7,11 @@ */ namespace OCA\Files_External\Tests\Controller; +use OC\Settings\AuthorizedGroupMapper; use OCA\Files_External\Controller\AjaxController; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; use OCA\Files_External\Lib\Auth\PublicKey\RSA; +use OCA\Files_External\Settings\Admin; use OCP\AppFramework\Http\JSONResponse; use OCP\IGroupManager; use OCP\IL10N; @@ -26,6 +28,7 @@ class AjaxControllerTest extends TestCase { private IUserSession&MockObject $userSession; private IGroupManager&MockObject $groupManager; private IL10N&MockObject $l10n; + private AuthorizedGroupMapper&MockObject $authorizedGroupMapper; private AjaxController $ajaxController; protected function setUp(): void { @@ -35,6 +38,7 @@ protected function setUp(): void { $this->userSession = $this->createMock(IUserSession::class); $this->groupManager = $this->createMock(IGroupManager::class); $this->l10n = $this->createMock(IL10N::class); + $this->authorizedGroupMapper = $this->createMock(AuthorizedGroupMapper::class); $this->ajaxController = new AjaxController( 'files_external', @@ -44,6 +48,7 @@ protected function setUp(): void { $this->userSession, $this->groupManager, $this->l10n, + $this->authorizedGroupMapper, ); $this->l10n->expects($this->any()) @@ -149,4 +154,71 @@ public function testSaveGlobalCredentialsAsNormalUserForAnotherUser(): void { $this->assertSame($response->getStatus(), 403); $this->assertSame('Permission denied', $response->getData()['message']); } + + public function testSaveGlobalCredentialsAsAdminForGlobal(): void { + $user = $this->createMock(IUser::class); + $user->method('getUID')->willReturn('MyAdminUid'); + $this->userSession->method('getUser')->willReturn($user); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->with('MyAdminUid') + ->willReturn(true); + $this->authorizedGroupMapper + ->expects($this->never()) + ->method('findAllClassesForUser'); + $this->globalAuth + ->expects($this->once()) + ->method('saveAuth') + ->with('', 'test', 'password'); + + $response = $this->ajaxController->saveGlobalCredentials('', 'test', 'password'); + $this->assertSame(200, $response->getStatus()); + } + + public function testSaveGlobalCredentialsAsDelegatedAdminForGlobal(): void { + $user = $this->createMock(IUser::class); + $user->method('getUID')->willReturn('DelegatedUid'); + $this->userSession->method('getUser')->willReturn($user); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->with('DelegatedUid') + ->willReturn(false); + $this->authorizedGroupMapper + ->expects($this->once()) + ->method('findAllClassesForUser') + ->with($user) + ->willReturn([Admin::class]); + $this->globalAuth + ->expects($this->once()) + ->method('saveAuth') + ->with('', 'test', 'password'); + + $response = $this->ajaxController->saveGlobalCredentials('', 'test', 'password'); + $this->assertSame(200, $response->getStatus()); + } + + public function testSaveGlobalCredentialsAsNormalUserForGlobal(): void { + $user = $this->createMock(IUser::class); + $user->method('getUID')->willReturn('NormalUid'); + $this->userSession->method('getUser')->willReturn($user); + $this->groupManager + ->expects($this->once()) + ->method('isAdmin') + ->with('NormalUid') + ->willReturn(false); + $this->authorizedGroupMapper + ->expects($this->once()) + ->method('findAllClassesForUser') + ->with($user) + ->willReturn([]); + $this->globalAuth + ->expects($this->never()) + ->method('saveAuth'); + + $response = $this->ajaxController->saveGlobalCredentials('', 'test', 'password'); + $this->assertSame(403, $response->getStatus()); + $this->assertSame('Permission denied', $response->getData()['message']); + } } From c087c7cd4e9cabeb3f1b1a959e68ffce8ea20393 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sun, 28 Sep 2025 12:05:00 +0200 Subject: [PATCH 4/7] refactor(files_external): migrate Ajax with `OC_JSON` to proper controller Signed-off-by: Ferdinand Thiessen (cherry picked from commit 31571476d3f4b95049e5af4aa2a6dda1b4ffdb9f) --- apps/files_external/ajax/applicable.php | 42 ------------------- apps/files_external/ajax/oauth2.php | 13 ------ apps/files_external/appinfo/routes.php | 18 ++++---- .../lib/Controller/AjaxController.php | 35 ++++++++++++++++ apps/files_external/src/settings.js | 33 +++++++-------- .../tests/Controller/AjaxControllerTest.php | 4 ++ build/psalm-baseline.xml | 21 ---------- tests/lib/UrlGeneratorTest.php | 8 ++-- 8 files changed, 67 insertions(+), 107 deletions(-) delete mode 100644 apps/files_external/ajax/applicable.php delete mode 100644 apps/files_external/ajax/oauth2.php diff --git a/apps/files_external/ajax/applicable.php b/apps/files_external/ajax/applicable.php deleted file mode 100644 index ece913ffc068a..0000000000000 --- a/apps/files_external/ajax/applicable.php +++ /dev/null @@ -1,42 +0,0 @@ -search($pattern, $limit, $offset) as $group) { - $groups[$group->getGID()] = $group->getDisplayName(); -} - -$users = []; -foreach (Server::get(IUserManager::class)->searchDisplayName($pattern, $limit, $offset) as $user) { - $users[$user->getUID()] = $user->getDisplayName(); -} - -$results = ['groups' => $groups, 'users' => $users]; - -\OC_JSON::success($results); diff --git a/apps/files_external/ajax/oauth2.php b/apps/files_external/ajax/oauth2.php deleted file mode 100644 index d961d41ea6bcc..0000000000000 --- a/apps/files_external/ajax/oauth2.php +++ /dev/null @@ -1,13 +0,0 @@ -getL10N('files_external'); - -// TODO: implement redirect to which storage backend requested this diff --git a/apps/files_external/appinfo/routes.php b/apps/files_external/appinfo/routes.php index 5602e1c0d11ea..fb695eafefead 100644 --- a/apps/files_external/appinfo/routes.php +++ b/apps/files_external/appinfo/routes.php @@ -6,13 +6,6 @@ * SPDX-License-Identifier: AGPL-3.0-only */ - -$this->create('files_external_oauth2', 'apps/files_external/ajax/oauth2.php') - ->actionInclude('files_external/ajax/oauth2.php'); - -$this->create('files_external_list_applicable', '/apps/files_external/applicable') - ->actionInclude('files_external/ajax/applicable.php'); - return [ 'resources' => [ 'global_storages' => ['url' => '/globalstorages'], @@ -20,11 +13,20 @@ 'user_global_storages' => ['url' => '/userglobalstorages'], ], 'routes' => [ + [ + 'name' => 'Ajax#getApplicableEntities', + 'url' => '/ajax/applicable', + 'verb' => 'GET', + ], + [ + 'name' => 'Ajax#oauth2Callback', + 'url' => '/ajax/oauth2.php', + 'verb' => 'GET', + ], [ 'name' => 'Ajax#getSshKeys', 'url' => '/ajax/public_key.php', 'verb' => 'POST', - 'requirements' => [], ], [ 'name' => 'Ajax#saveGlobalCredentials', diff --git a/apps/files_external/lib/Controller/AjaxController.php b/apps/files_external/lib/Controller/AjaxController.php index 154c30b13653f..8f0015b0cc6ed 100644 --- a/apps/files_external/lib/Controller/AjaxController.php +++ b/apps/files_external/lib/Controller/AjaxController.php @@ -19,6 +19,7 @@ use OCP\IGroupManager; use OCP\IL10N; use OCP\IRequest; +use OCP\IUserManager; use OCP\IUserSession; class AjaxController extends Controller { @@ -37,12 +38,46 @@ public function __construct( private GlobalAuth $globalAuth, private IUserSession $userSession, private IGroupManager $groupManager, + private IUserManager $userManager, private IL10N $l10n, private AuthorizedGroupMapper $authorizedGroupMapper, ) { parent::__construct($appName, $request); } + + /** + * Legacy endpoint for oauth2 callback + */ + #[NoAdminRequired()] + public function oauth2Callback(): JSONResponse { + return new JSONResponse(['status' => 'success']); + } + + /** + * Returns a list of users and groups that match the given pattern. + * Used for user and group picker in the admin settings. + * + * @param string $pattern The search pattern + * @param int|null $limit The maximum number of results to return + * @param int|null $offset The offset from which to start returning results + * @return JSONResponse + */ + public function getApplicableEntities(string $pattern = '', ?int $limit = null, ?int $offset = null): JSONResponse { + $groups = []; + foreach ($this->groupManager->search($pattern, $limit, $offset) as $group) { + $groups[$group->getGID()] = $group->getDisplayName(); + } + + $users = []; + foreach ($this->userManager->searchDisplayName($pattern, $limit, $offset) as $user) { + $users[$user->getUID()] = $user->getDisplayName(); + } + + $results = ['groups' => $groups, 'users' => $users]; + return new JSONResponse($results); + } + /** * @param int $keyLength * @return array diff --git a/apps/files_external/src/settings.js b/apps/files_external/src/settings.js index 6b86245b9c9d2..223237da38b8e 100644 --- a/apps/files_external/src/settings.js +++ b/apps/files_external/src/settings.js @@ -120,7 +120,7 @@ function initApplicableUsersMultiselect($elements, userListLimit) { dropdownCssClass: 'files-external-select2', // minimumInputLength: 1, ajax: { - url: OC.generateUrl('apps/files_external/applicable'), + url: OC.generateUrl('apps/files_external/ajax/applicable'), dataType: 'json', quietMillis: 100, data(term, page) { // page is the one-based page number tracked by Select2 @@ -131,26 +131,21 @@ function initApplicableUsersMultiselect($elements, userListLimit) { } }, results(data) { - if (data.status === 'success') { - - const results = [] - let userCount = 0 // users is an object + const results = [] + let userCount = 0 // users is an object - // add groups - $.each(data.groups, function(gid, group) { - results.push({ name: gid + '(group)', displayname: group, type: 'group' }) - }) - // add users - $.each(data.users, function(id, user) { - userCount++ - results.push({ name: id, displayname: user, type: 'user' }) - }) + // add groups + $.each(data.groups, function(gid, group) { + results.push({ name: gid + '(group)', displayname: group, type: 'group' }) + }) + // add users + $.each(data.users, function(id, user) { + userCount++ + results.push({ name: id, displayname: user, type: 'user' }) + }) - const more = (userCount >= userListLimit) || (data.groups.length >= userListLimit) - return { results, more } - } else { - // FIXME add error handling - } + const more = (userCount >= userListLimit) || (data.groups.length >= userListLimit) + return { results, more } }, }, initSelection(element, callback) { diff --git a/apps/files_external/tests/Controller/AjaxControllerTest.php b/apps/files_external/tests/Controller/AjaxControllerTest.php index 6c3a48740c884..036e88788c203 100644 --- a/apps/files_external/tests/Controller/AjaxControllerTest.php +++ b/apps/files_external/tests/Controller/AjaxControllerTest.php @@ -17,6 +17,7 @@ use OCP\IL10N; use OCP\IRequest; use OCP\IUser; +use OCP\IUserManager; use OCP\IUserSession; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -27,6 +28,7 @@ class AjaxControllerTest extends TestCase { private GlobalAuth&MockObject $globalAuth; private IUserSession&MockObject $userSession; private IGroupManager&MockObject $groupManager; + private IUserManager&MockObject $userManager; private IL10N&MockObject $l10n; private AuthorizedGroupMapper&MockObject $authorizedGroupMapper; private AjaxController $ajaxController; @@ -37,6 +39,7 @@ protected function setUp(): void { $this->globalAuth = $this->createMock(GlobalAuth::class); $this->userSession = $this->createMock(IUserSession::class); $this->groupManager = $this->createMock(IGroupManager::class); + $this->userManager = $this->createMock(IUserManager::class); $this->l10n = $this->createMock(IL10N::class); $this->authorizedGroupMapper = $this->createMock(AuthorizedGroupMapper::class); @@ -47,6 +50,7 @@ protected function setUp(): void { $this->globalAuth, $this->userSession, $this->groupManager, + $this->userManager, $this->l10n, $this->authorizedGroupMapper, ); diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 24b8f823832f0..b5f2271284608 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -1404,27 +1404,6 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/lib/UrlGeneratorTest.php b/tests/lib/UrlGeneratorTest.php index 4320efc419083..e8f88d8f35b80 100644 --- a/tests/lib/UrlGeneratorTest.php +++ b/tests/lib/UrlGeneratorTest.php @@ -116,16 +116,16 @@ public static function provideRoutes(): array { public static function provideDocRootAppUrlParts(): array { return [ - ['files_external', 'ajax/oauth2.php', [], '/index.php/apps/files_external/ajax/oauth2.php'], - ['files_external', 'ajax/oauth2.php', ['trut' => 'trat', 'dut' => 'dat'], '/index.php/apps/files_external/ajax/oauth2.php?trut=trat&dut=dat'], + ['user_ldap', 'ajax/wizard.php', [], '/index.php/apps/user_ldap/ajax/wizard.php'], + ['user_ldap', 'ajax/wizard.php', ['trut' => 'trat', 'dut' => 'dat'], '/index.php/apps/user_ldap/ajax/wizard.php?trut=trat&dut=dat'], ['', 'index.php', ['trut' => 'trat', 'dut' => 'dat'], '/index.php?trut=trat&dut=dat'], ]; } public static function provideSubDirAppUrlParts(): array { return [ - ['files_external', 'ajax/oauth2.php', [], '/nextcloud/index.php/apps/files_external/ajax/oauth2.php'], - ['files_external', 'ajax/oauth2.php', ['trut' => 'trat', 'dut' => 'dat'], '/nextcloud/index.php/apps/files_external/ajax/oauth2.php?trut=trat&dut=dat'], + ['user_ldap', 'ajax/wizard.php', [], '/nextcloud/index.php/apps/user_ldap/ajax/wizard.php'], + ['user_ldap', 'ajax/wizard.php', ['trut' => 'trat', 'dut' => 'dat'], '/nextcloud/index.php/apps/user_ldap/ajax/wizard.php?trut=trat&dut=dat'], ['', 'index.php', ['trut' => 'trat', 'dut' => 'dat'], '/nextcloud/index.php?trut=trat&dut=dat'], ]; } From b457bbaa6c3cf47b5b6deee6ed0a1f209f8442a7 Mon Sep 17 00:00:00 2001 From: Tatjana Kaschperko Lindt Date: Tue, 19 May 2026 14:21:08 +0200 Subject: [PATCH 5/7] chore: compile assets Signed-off-by: Tatjana Kaschperko Lindt --- dist/files_external-init.js.map | 2 +- dist/files_external-settings.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/files_external-init.js.map b/dist/files_external-init.js.map index 667d5d958a66d..38249fd66fadb 100644 --- a/dist/files_external-init.js.map +++ b/dist/files_external-init.js.map @@ -1 +1 @@ -{"version":3,"file":"files_external-init.js?v=0c5e866467473adc3ba9","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/files_external/src/utils/credentialsUtils.ts","webpack:///nextcloud/apps/files_external/src/utils/externalStorageUtils.ts","webpack:///nextcloud/apps/files_external/src/actions/enterCredentialsAction.ts","webpack://nextcloud/./apps/files_external/src/css/fileEntryStatus.scss?3c5c","webpack:///nextcloud/apps/files_external/src/services/externalStorage.ts","webpack:///nextcloud/apps/files_external/src/actions/inlineStorageCheckAction.ts","webpack:///nextcloud/apps/files_external/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_external/src/init.ts","webpack:///nextcloud/apps/files_external/src/css/fileEntryStatus.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { o as logger, F as FileType } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { q, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t2.PRERELEASELOOSE] : re2[t2.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h2) => {\n try {\n ;\n h2(event[0]);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n if (hasRequiredSax) return sax$1;\n hasRequiredSax = 1;\n (function(exports) {\n (function(sax2) {\n sax2.parser = function(strict, opt) {\n return new SAXParser(strict, opt);\n };\n sax2.SAXParser = SAXParser;\n sax2.SAXStream = SAXStream;\n sax2.createStream = createStream;\n sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n var buffers = [\n \"comment\",\n \"sgmlDecl\",\n \"textNode\",\n \"tagName\",\n \"doctype\",\n \"procInstName\",\n \"procInstBody\",\n \"entity\",\n \"attribName\",\n \"attribValue\",\n \"cdata\",\n \"script\"\n ];\n sax2.EVENTS = [\n \"text\",\n \"processinginstruction\",\n \"sgmldeclaration\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"opencdata\",\n \"cdata\",\n \"closecdata\",\n \"error\",\n \"end\",\n \"ready\",\n \"script\",\n \"opennamespace\",\n \"closenamespace\"\n ];\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt);\n }\n var parser = this;\n clearBuffers(parser);\n parser.q = parser.c = \"\";\n parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n parser.opt = opt || {};\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n parser.tags = [];\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.strict = !!strict;\n parser.noscript = !!(strict || parser.opt.noscript);\n parser.state = S.BEGIN;\n parser.strictEntities = parser.opt.strictEntities;\n parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n parser.attribList = [];\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS);\n }\n if (parser.opt.unquotedAttributeValues === void 0) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n parser.trackPosition = parser.opt.position !== false;\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0;\n }\n emit2(parser, \"onready\");\n }\n if (!Object.create) {\n Object.create = function(o) {\n function F() {\n }\n F.prototype = o;\n var newf = new F();\n return newf;\n };\n }\n if (!Object.keys) {\n Object.keys = function(o) {\n var a2 = [];\n for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);\n return a2;\n };\n }\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n var maxActual = 0;\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n var len = parser[buffers[i2]].length;\n if (len > maxAllowed) {\n switch (buffers[i2]) {\n case \"textNode\":\n closeText(parser);\n break;\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n break;\n case \"script\":\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n break;\n default:\n error(parser, \"Max buffer length exceeded: \" + buffers[i2]);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n var m2 = sax2.MAX_BUFFER_LENGTH - maxActual;\n parser.bufferCheckPosition = m2 + parser.position;\n }\n function clearBuffers(parser) {\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n parser[buffers[i2]] = \"\";\n }\n }\n function flushBuffers(parser) {\n closeText(parser);\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n }\n }\n SAXParser.prototype = {\n end: function() {\n end(this);\n },\n write,\n resume: function() {\n this.error = null;\n return this;\n },\n close: function() {\n return this.write(null);\n },\n flush: function() {\n flushBuffers(this);\n }\n };\n var Stream;\n try {\n Stream = require(\"stream\").Stream;\n } catch (ex) {\n Stream = function() {\n };\n }\n if (!Stream) Stream = function() {\n };\n var streamWraps = sax2.EVENTS.filter(function(ev) {\n return ev !== \"error\" && ev !== \"end\";\n });\n function createStream(strict, opt) {\n return new SAXStream(strict, opt);\n }\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt);\n }\n Stream.apply(this);\n this._parser = new SAXParser(strict, opt);\n this.writable = true;\n this.readable = true;\n var me = this;\n this._parser.onend = function() {\n me.emit(\"end\");\n };\n this._parser.onerror = function(er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n this._decoder = null;\n streamWraps.forEach(function(ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function() {\n return me._parser[\"on\" + ev];\n },\n set: function(h2) {\n if (!h2) {\n me.removeAllListeners(ev);\n me._parser[\"on\" + ev] = h2;\n return h2;\n }\n me.on(ev, h2);\n },\n enumerable: true,\n configurable: false\n });\n });\n }\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n });\n SAXStream.prototype.write = function(data) {\n if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require$$1.StringDecoder;\n this._decoder = new SD(\"utf8\");\n }\n data = this._decoder.write(data);\n }\n this._parser.write(data.toString());\n this.emit(\"data\", data);\n return true;\n };\n SAXStream.prototype.end = function(chunk) {\n if (chunk && chunk.length) {\n this.write(chunk);\n }\n this._parser.end();\n return true;\n };\n SAXStream.prototype.on = function(ev, handler) {\n var me = this;\n if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\" + ev] = function() {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n var CDATA = \"[CDATA[\";\n var DOCTYPE = \"DOCTYPE\";\n var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n function isWhitespace(c2) {\n return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n }\n function isQuote(c2) {\n return c2 === '\"' || c2 === \"'\";\n }\n function isAttribEnd(c2) {\n return c2 === \">\" || isWhitespace(c2);\n }\n function isMatch(regex, c2) {\n return regex.test(c2);\n }\n function notMatch(regex, c2) {\n return !isMatch(regex, c2);\n }\n var S = 0;\n sax2.STATE = {\n BEGIN: S++,\n // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++,\n // leading whitespace\n TEXT: S++,\n // general stuff\n TEXT_ENTITY: S++,\n // & and such.\n OPEN_WAKA: S++,\n // <\n SGML_DECL: S++,\n // \n SCRIPT: S++,\n //