diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 362f0d57c..000000000
--- a/.eslintignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
-# SPDX-License-Identifier: AGPL-3.0-or-later
-dist/
-node_modules/
\ No newline at end of file
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index 8a95224bc..000000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "extends": [
- "@nextcloud/eslint-config/typescript"
- ],
- "overrides": [
- {
- "files": ["**.spec.*"],
- "rules": {
- "no-console": "off"
- }
- }
- ]
-}
diff --git a/__mocks__/@nextcloud/auth.js b/__mocks__/@nextcloud/auth.js
index 49a4c6d45..838e7b8cc 100644
--- a/__mocks__/@nextcloud/auth.js
+++ b/__mocks__/@nextcloud/auth.js
@@ -2,7 +2,7 @@
* SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-export const getCurrentUser = function() {
+export function getCurrentUser() {
return {
uid: 'test',
displayName: 'Test',
@@ -10,6 +10,6 @@ export const getCurrentUser = function() {
}
}
-export const getRequestToken = function() {
+export function getRequestToken() {
return 'some-token-string'
}
diff --git a/__tests__/actions/fileAction.spec.ts b/__tests__/actions/fileAction.spec.ts
index a3153b6dd..559b91c64 100644
--- a/__tests__/actions/fileAction.spec.ts
+++ b/__tests__/actions/fileAction.spec.ts
@@ -3,17 +3,17 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { Folder, Node } from '../../lib/node/index.ts'
+import type { FileActionData } from '../../lib/actions/index.ts'
import type { View } from '../../lib/navigation/view.ts'
+import type { Folder, Node } from '../../lib/node/index.ts'
import { beforeEach, describe, expect, test, vi } from 'vitest'
-import { getFileActions, registerFileAction, FileAction, DefaultType, FileActionData } from '../../lib/actions/index.ts'
+import { DefaultType, FileAction, getFileActions, registerFileAction } from '../../lib/actions/index.ts'
import logger from '../../lib/utils/logger.ts'
const folder = {} as Folder
const view = {} as View
describe('FileActions init', () => {
-
beforeEach(() => {
delete window._nc_fileactions
})
@@ -101,8 +101,7 @@ describe('Invalid FileAction creation', () => {
displayName: () => 'Test',
iconSvgInline: () => '',
exec: async () => true,
- } as unknown as FileAction),
- ).toThrowError('Invalid id')
+ } as unknown as FileAction)).toThrowError('Invalid id')
})
test('Invalid displayName', () => {
expect(() => new FileAction({
@@ -110,8 +109,7 @@ describe('Invalid FileAction creation', () => {
displayName: 'Test',
iconSvgInline: () => '',
exec: async () => true,
- } as unknown as FileAction),
- ).toThrowError('Invalid displayName function')
+ } as unknown as FileAction)).toThrowError('Invalid displayName function')
})
test('Invalid title', () => {
expect(() => new FileAction({
@@ -120,8 +118,7 @@ describe('Invalid FileAction creation', () => {
title: 'Test',
iconSvgInline: () => '',
exec: async () => true,
- } as unknown as FileAction),
- ).toThrowError('Invalid title function')
+ } as unknown as FileAction)).toThrowError('Invalid title function')
})
test('Invalid iconSvgInline', () => {
expect(() => new FileAction({
@@ -129,8 +126,7 @@ describe('Invalid FileAction creation', () => {
displayName: () => 'Test',
iconSvgInline: '',
exec: async () => true,
- } as unknown as FileAction),
- ).toThrowError('Invalid iconSvgInline function')
+ } as unknown as FileAction)).toThrowError('Invalid iconSvgInline function')
})
test('Invalid exec', () => {
expect(() => new FileAction({
@@ -138,8 +134,7 @@ describe('Invalid FileAction creation', () => {
displayName: () => 'Test',
iconSvgInline: () => '',
exec: false,
- } as unknown as FileAction),
- ).toThrowError('Invalid exec function')
+ } as unknown as FileAction)).toThrowError('Invalid exec function')
})
test('Invalid enabled', () => {
expect(() => new FileAction({
@@ -148,8 +143,7 @@ describe('Invalid FileAction creation', () => {
iconSvgInline: () => '',
exec: async () => true,
enabled: false,
- } as unknown as FileAction),
- ).toThrowError('Invalid enabled function')
+ } as unknown as FileAction)).toThrowError('Invalid enabled function')
})
test('Invalid execBatch', () => {
expect(() => new FileAction({
@@ -158,8 +152,7 @@ describe('Invalid FileAction creation', () => {
iconSvgInline: () => '',
exec: async () => true,
execBatch: false,
- } as unknown as FileAction),
- ).toThrowError('Invalid execBatch function')
+ } as unknown as FileAction)).toThrowError('Invalid execBatch function')
})
test('Invalid order', () => {
expect(() => new FileAction({
@@ -168,8 +161,7 @@ describe('Invalid FileAction creation', () => {
iconSvgInline: () => '',
exec: async () => true,
order: 'invalid',
- } as unknown as FileAction),
- ).toThrowError('Invalid order')
+ } as unknown as FileAction)).toThrowError('Invalid order')
})
test('Invalid parent', () => {
expect(() => new FileAction({
@@ -178,8 +170,7 @@ describe('Invalid FileAction creation', () => {
iconSvgInline: () => '',
exec: async () => true,
parent: true,
- } as unknown as FileAction),
- ).toThrowError('Invalid parent')
+ } as unknown as FileAction)).toThrowError('Invalid parent')
})
test('Invalid default', () => {
expect(() => new FileAction({
@@ -188,8 +179,7 @@ describe('Invalid FileAction creation', () => {
iconSvgInline: () => '',
exec: async () => true,
default: 'invalid',
- } as unknown as FileAction),
- ).toThrowError('Invalid default')
+ } as unknown as FileAction)).toThrowError('Invalid default')
})
test('Invalid destructives', () => {
expect(() => new FileAction({
@@ -198,8 +188,7 @@ describe('Invalid FileAction creation', () => {
iconSvgInline: () => '',
exec: async () => true,
destructive: 'false',
- } as unknown as FileActionData),
- ).toThrowError('Invalid destructive')
+ } as unknown as FileActionData)).toThrowError('Invalid destructive')
})
test('Invalid inline', () => {
expect(() => new FileAction({
@@ -208,8 +197,7 @@ describe('Invalid FileAction creation', () => {
iconSvgInline: () => '',
exec: async () => true,
inline: true,
- } as unknown as FileAction),
- ).toThrowError('Invalid inline function')
+ } as unknown as FileAction)).toThrowError('Invalid inline function')
expect(() => new FileAction({
id: 'test',
@@ -218,8 +206,7 @@ describe('Invalid FileAction creation', () => {
exec: async () => true,
inline: () => true,
renderInline: false,
- } as unknown as FileAction),
- ).toThrowError('Invalid renderInline function')
+ } as unknown as FileAction)).toThrowError('Invalid renderInline function')
})
})
diff --git a/__tests__/actions/fileListAction.spec.ts b/__tests__/actions/fileListAction.spec.ts
index 355ee6568..7ae8ec640 100644
--- a/__tests__/actions/fileListAction.spec.ts
+++ b/__tests__/actions/fileListAction.spec.ts
@@ -4,23 +4,25 @@
*/
import type { View } from '../../lib/navigation/view.ts'
+import type { Folder } from '../../lib/node/index.ts'
import { beforeEach, describe, expect, test, vi } from 'vitest'
-import { getFileListActions, registerFileListAction, FileListAction } from '../../lib/actions/fileListAction.ts'
-import { Folder } from '../../lib/node/index.ts'
+import { FileListAction, getFileListActions, registerFileListAction } from '../../lib/actions/fileListAction.ts'
import logger from '../../lib/utils/logger.ts'
const folder = {} as Folder
const view = {} as View
-const mockAction = (id: string) => new FileListAction({
- id,
- displayName: () => 'Test',
- iconSvgInline: () => '',
- order: 0,
- // @ts-expect-error mocking for tests
- exec: async () => {},
-})
+function mockAction(id: string) {
+ return new FileListAction({
+ id,
+ displayName: () => 'Test',
+ iconSvgInline: () => '',
+ order: 0,
+ // @ts-expect-error mocking for tests
+ exec: async () => {},
+ })
+}
describe('FileListActions init', () => {
beforeEach(() => {
@@ -61,9 +63,9 @@ describe('FileListActions init', () => {
registerFileListAction(bazAction)
expect(actions).toHaveLength(3)
- expect(actions.find(action => action.id === 'foo')).toStrictEqual(fooAction)
- expect(actions.find(action => action.id === 'bar')).toStrictEqual(barAction)
- expect(actions.find(action => action.id === 'baz')).toStrictEqual(bazAction)
+ expect(actions.find((action) => action.id === 'foo')).toStrictEqual(fooAction)
+ expect(actions.find((action) => action.id === 'bar')).toStrictEqual(barAction)
+ expect(actions.find((action) => action.id === 'baz')).toStrictEqual(bazAction)
})
test('Register an action with a duplicate id', () => {
@@ -91,8 +93,7 @@ describe('Invalid FileListAction creation', () => {
iconSvgInline: () => '',
order: 0,
exec: async () => {},
- } as unknown as FileListAction),
- ).toThrowError('Invalid id')
+ } as unknown as FileListAction)).toThrowError('Invalid id')
})
test('Invalid displayName', () => {
expect(() => new FileListAction({
@@ -100,8 +101,7 @@ describe('Invalid FileListAction creation', () => {
iconSvgInline: () => '',
order: 0,
exec: async () => {},
- } as unknown as FileListAction),
- ).toThrowError('Invalid displayName function')
+ } as unknown as FileListAction)).toThrowError('Invalid displayName function')
})
test('Invalid iconSvgInline', () => {
expect(() => new FileListAction({
@@ -110,8 +110,7 @@ describe('Invalid FileListAction creation', () => {
displayName: () => 'Test',
order: 0,
exec: async () => {},
- } as unknown as FileListAction),
- ).toThrowError('Invalid iconSvgInline function')
+ } as unknown as FileListAction)).toThrowError('Invalid iconSvgInline function')
})
test('Invalid order', () => {
expect(() => new FileListAction({
@@ -120,8 +119,7 @@ describe('Invalid FileListAction creation', () => {
iconSvgInline: () => '',
order: null,
exec: async () => {},
- } as unknown as FileListAction),
- ).toThrowError('Invalid order')
+ } as unknown as FileListAction)).toThrowError('Invalid order')
})
test('Invalid enabled', () => {
expect(() => new FileListAction({
@@ -131,8 +129,7 @@ describe('Invalid FileListAction creation', () => {
order: 0,
enabled: null,
exec: async () => {},
- } as unknown as FileListAction),
- ).toThrowError('Invalid enabled function')
+ } as unknown as FileListAction)).toThrowError('Invalid enabled function')
})
test('Invalid exec', () => {
expect(() => new FileListAction({
@@ -140,8 +137,7 @@ describe('Invalid FileListAction creation', () => {
displayName: () => 'Test',
iconSvgInline: () => '',
exec: null,
- } as unknown as FileListAction),
- ).toThrowError('Invalid exec function')
+ } as unknown as FileListAction)).toThrowError('Invalid exec function')
})
})
diff --git a/__tests__/dav/dav.spec.ts b/__tests__/dav/dav.spec.ts
index 07284bf52..962b7561e 100644
--- a/__tests__/dav/dav.spec.ts
+++ b/__tests__/dav/dav.spec.ts
@@ -2,22 +2,22 @@
* SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
-import { readFile } from 'node:fs/promises'
+import type { FileStat, WebDAVClient } from 'webdav'
+
+import * as auth from '@nextcloud/auth'
+import { readFile } from 'node:fs/promises'
+// required as default URL will be the DOM URL class which will use the window.location
+import { URL as FileURL } from 'node:url'
+import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
import {
defaultRemoteURL,
defaultRootPath,
- getFavoritesReport,
getFavoriteNodes,
+ getFavoritesReport,
resultToNode,
-} from '../../lib/dav/index'
-import { File, Folder, NodeStatus } from '../../lib'
-import { FileStat, WebDAVClient } from 'webdav'
-import * as auth from '@nextcloud/auth'
-
-// required as default URL will be the DOM URL class which will use the window.location
-import { URL as FileURL } from 'node:url'
+} from '../../lib/dav/index.ts'
+import { File, Folder, NodeStatus } from '../../lib/index.ts'
vi.mock('@nextcloud/auth')
vi.mock('@nextcloud/router')
@@ -185,7 +185,7 @@ describe('DAV requests', () => {
// Mock the WebDAV client
const client = {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
+
getDirectoryContents: vi.fn((path: string, options: any) => {
if (options?.details) {
return {
@@ -218,7 +218,7 @@ describe('DAV requests', () => {
// Mock the WebDAV client
const client = {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
+
getDirectoryContents: vi.fn((path: string, options: any) => {
if (options?.details) {
return {
diff --git a/__tests__/dav/davPermissions.spec.ts b/__tests__/dav/davPermissions.spec.ts
index a48be6e5e..5629abf14 100644
--- a/__tests__/dav/davPermissions.spec.ts
+++ b/__tests__/dav/davPermissions.spec.ts
@@ -2,10 +2,9 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { describe, it, expect } from 'vitest'
-
-import { parsePermissions } from '../../lib/dav/davPermissions'
-import { Permission } from '../../lib/permissions'
+import { describe, expect, it } from 'vitest'
+import { parsePermissions } from '../../lib/dav/davPermissions.ts'
+import { Permission } from '../../lib/permissions.ts'
const dataSet = [
{ input: undefined, permissions: Permission.NONE },
@@ -29,7 +28,6 @@ const dataSet = [
describe('davParsePermissions', () => {
dataSet.forEach(({ input, permissions }) => {
it(`expect ${input} to be ${permissions}`, () => {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
expect(parsePermissions(input as any as string)).toBe(permissions)
})
})
diff --git a/__tests__/dav/davProperties.spec.ts b/__tests__/dav/davProperties.spec.ts
index 0be6449ca..0297ac16d 100644
--- a/__tests__/dav/davProperties.spec.ts
+++ b/__tests__/dav/davProperties.spec.ts
@@ -2,9 +2,9 @@
* SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { beforeEach, describe, expect, test, vi } from 'vitest'
-import { XMLValidator } from 'fast-xml-parser'
+import { XMLValidator } from 'fast-xml-parser'
+import { beforeEach, describe, expect, test, vi } from 'vitest'
import {
defaultDavNamespaces,
defaultDavProperties,
@@ -14,19 +14,10 @@ import {
getFavoritesReport,
getRecentSearch,
registerDavProperty,
-} from '../../lib/dav/davProperties'
-
-import logger from '../../lib/utils/logger'
-
-declare global {
- interface Window {
- _nc_dav_namespaces?: string[]
- _nc_dav_properties?: string[]
- }
-}
+} from '../../lib/dav/davProperties.ts'
+import logger from '../../lib/utils/logger.ts'
describe('DAV Properties', () => {
-
beforeEach(() => {
delete window._nc_dav_properties
delete window._nc_dav_namespaces
@@ -39,14 +30,14 @@ describe('DAV Properties', () => {
expect(window._nc_dav_namespaces).toBeUndefined()
const namespace = getDavNameSpaces()
expect(namespace).toBeTruthy()
- Object.keys(defaultDavNamespaces).forEach(n => expect(namespace.includes(n) && namespace.includes(defaultDavNamespaces[n])).toBe(true))
+ Object.keys(defaultDavNamespaces).forEach((n) => expect(namespace.includes(n) && namespace.includes(defaultDavNamespaces[n])).toBe(true))
})
test('getDavProperties fall back to defaults', () => {
expect(window._nc_dav_properties).toBeUndefined()
const props = getDavProperties()
expect(props).toBeTruthy()
- defaultDavProperties.forEach(p => expect(props.includes(p)).toBe(true))
+ defaultDavProperties.forEach((p) => expect(props.includes(p)).toBe(true))
})
test('getDefaultPropfind', () => {
diff --git a/__tests__/dav/public-shares.spec.ts b/__tests__/dav/public-shares.spec.ts
index 959f1afd0..e11a21c9a 100644
--- a/__tests__/dav/public-shares.spec.ts
+++ b/__tests__/dav/public-shares.spec.ts
@@ -3,9 +3,9 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { ArgumentsType } from 'vitest'
import type { FileStat } from 'webdav'
-import type { resultToNode as IResultToNode } from '../../lib/dav/dav'
+import type { resultToNode as IResultToNode } from '../../lib/dav/dav.ts'
+
import { beforeEach, describe, expect, test, vi } from 'vitest'
const auth = vi.hoisted(() => ({ getCurrentUser: vi.fn() }))
@@ -16,19 +16,18 @@ vi.mock('@nextcloud/auth', () => auth)
vi.mock('@nextcloud/router', () => router)
vi.mock('@nextcloud/sharing/public', () => sharing)
-const restoreMocks = () => {
+function restoreMocks() {
vi.resetAllMocks()
router.generateRemoteUrl.mockImplementation((service) => `https://example.com/remote.php/${service}`)
}
-const mockPublicShare = () => {
+function mockPublicShare() {
auth.getCurrentUser.mockImplementationOnce(() => null)
sharing.isPublicShare.mockImplementation(() => true)
sharing.getSharingToken.mockImplementation(() => 'token-1234')
}
describe('DAV path functions', () => {
-
beforeEach(() => {
vi.resetModules()
restoreMocks()
@@ -37,14 +36,14 @@ describe('DAV path functions', () => {
test('root path is correct on public shares', async () => {
mockPublicShare()
- const { getRootPath } = await import('../../lib/dav/dav')
+ const { getRootPath } = await import('../../lib/dav/dav.ts')
expect(getRootPath()).toBe('/files/token-1234')
})
test('remote URL is correct on public shares', async () => {
mockPublicShare()
- const { getRemoteURL } = await import('../../lib/dav/dav')
+ const { getRemoteURL } = await import('../../lib/dav/dav.ts')
expect(getRemoteURL()).toBe('https://example.com/public.php/dav')
})
})
@@ -56,8 +55,8 @@ describe('on public shares', () => {
})
// Wrapper function as we can not static import the function to allow mocking the modules
- const resultToNode = async (...rest: ArgumentsType) => {
- const { resultToNode } = await import('../../lib/dav/dav')
+ const resultToNode = async (...rest: Parameters) => {
+ const { resultToNode } = await import('../../lib/dav/dav.ts')
return resultToNode(...rest)
}
diff --git a/__tests__/fileListFilter.spec.ts b/__tests__/fileListFilter.spec.ts
index b16917334..aa3811d43 100644
--- a/__tests__/fileListFilter.spec.ts
+++ b/__tests__/fileListFilter.spec.ts
@@ -2,12 +2,14 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { beforeEach, describe, expect, test, vi } from 'vitest'
-import { FileListFilter, getFileListFilters, IFileListFilterChip, registerFileListFilter, unregisterFileListFilter } from '../lib'
+
+import type { IFileListFilterChip } from '../lib/fileListFilters.ts'
+
import { subscribe } from '@nextcloud/event-bus'
+import { beforeEach, describe, expect, test, vi } from 'vitest'
+import { FileListFilter, getFileListFilters, registerFileListFilter, unregisterFileListFilter } from '../lib/fileListFilters.ts'
class TestFilter extends FileListFilter {
-
public testUpdated() {
this.filterUpdated()
}
@@ -15,7 +17,6 @@ class TestFilter extends FileListFilter {
public testUpdateChips(chips) {
this.updateChips(chips)
}
-
}
describe('File list filter class', () => {
diff --git a/__tests__/fileListHeaders.spec.ts b/__tests__/fileListHeaders.spec.ts
index b946f40ac..5eebb87df 100644
--- a/__tests__/fileListHeaders.spec.ts
+++ b/__tests__/fileListHeaders.spec.ts
@@ -2,17 +2,14 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-/* eslint-disable @typescript-eslint/no-explicit-any */
-/* eslint-disable @typescript-eslint/no-non-null-assertion */
-/* eslint-disable no-new */
-import { describe, expect, test, beforeEach, vi } from 'vitest'
-import { Header, getFileListHeaders, registerFileListHeaders } from '../lib/fileListHeaders.ts'
-import { Folder } from '../lib/node/index.ts'
+import type { Folder } from '../lib/node/index.ts'
+
+import { beforeEach, describe, expect, test, vi } from 'vitest'
+import { getFileListHeaders, Header, registerFileListHeaders } from '../lib/fileListHeaders.ts'
import logger from '../lib/utils/logger.ts'
describe('FileListHeader init', () => {
-
beforeEach(() => {
delete window._nc_filelistheader
})
@@ -164,7 +161,6 @@ describe('FileListHeader validate', () => {
})
describe('FileListHeader exec', () => {
-
test('Initializing FileListHeader', () => {
const enabled = vi.fn()
const render = vi.fn()
diff --git a/__tests__/files/cloning.spec.ts b/__tests__/files/cloning.spec.ts
index 14e2f0377..15c669917 100644
--- a/__tests__/files/cloning.spec.ts
+++ b/__tests__/files/cloning.spec.ts
@@ -3,8 +3,10 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+import type { NodeData } from '../../lib/node/index.ts'
+
import { describe, expect, test } from 'vitest'
-import { File, NodeData, NodeStatus } from '../../lib/node/index.ts'
+import { File, NodeStatus } from '../../lib/node/index.ts'
import { Permission } from '../../lib/permissions.ts'
describe('File cloning', () => {
diff --git a/__tests__/files/file.spec.ts b/__tests__/files/file.spec.ts
index 633aeb475..50d6c370d 100644
--- a/__tests__/files/file.spec.ts
+++ b/__tests__/files/file.spec.ts
@@ -256,7 +256,6 @@ describe('Altering attributes does NOT updates mtime', () => {
expect(file.mtime).toBeUndefined()
expect(file.permissions).toBe(Permission.ALL)
})
-
})
describe('Altering top-level properties updates mtime', () => {
@@ -295,5 +294,4 @@ describe('Altering top-level properties updates mtime', () => {
expect(file.mtime?.getDate()).toBe(new Date().getDate())
expect(file.size).toBe(200)
})
-
})
diff --git a/__tests__/files/folder.spec.ts b/__tests__/files/folder.spec.ts
index df58ea1b9..b8f05f4c1 100644
--- a/__tests__/files/folder.spec.ts
+++ b/__tests__/files/folder.spec.ts
@@ -4,7 +4,6 @@
*/
import { describe, expect, test } from 'vitest'
-
import { FileType, Folder } from '../../lib/node/index.ts'
import { Permission } from '../../lib/permissions.ts'
diff --git a/__tests__/files/node.spec.ts b/__tests__/files/node.spec.ts
index 136b7ce01..762ce7723 100644
--- a/__tests__/files/node.spec.ts
+++ b/__tests__/files/node.spec.ts
@@ -4,6 +4,7 @@
*/
import type { Attribute, NodeData } from '../../lib/node/index.ts'
+import type { TNodeStatus } from '../../lib/node/node.ts'
import { describe, expect, test } from 'vitest'
import { File, Folder, NodeStatus } from '../../lib/node/index.ts'
@@ -150,7 +151,7 @@ describe('Mtime attribute', () => {
expect(file.mtime?.toISOString()).toBe(mtime.toISOString())
// Wait for 10ms to ensure mtime is updated
- await new Promise(resolve => setTimeout(resolve, 10))
+ await new Promise((resolve) => setTimeout(resolve, 10))
// Update mtime
file.mtime = new Date()
@@ -172,7 +173,7 @@ describe('Mtime attribute', () => {
expect(file.mtime?.toISOString()).toBe(mtime.toISOString())
// Wait for 10ms to ensure mtime is updated
- await new Promise(resolve => setTimeout(resolve, 10))
+ await new Promise((resolve) => setTimeout(resolve, 10))
// Update mtime
file.updateMtime()
@@ -209,7 +210,7 @@ describe('Size attribute', () => {
expect(file.mtime?.toISOString()).toBe(mtime?.toISOString())
// Wait for 10ms to ensure mtime is updated
- await new Promise(resolve => setTimeout(resolve, 10))
+ await new Promise((resolve) => setTimeout(resolve, 10))
// Update size
file.size = 5678
@@ -247,7 +248,7 @@ describe('Permissions attribute', () => {
expect(file.mtime?.toISOString()).toBe(mtime?.toISOString())
// Wait for 10ms to ensure mtime is updated
- await new Promise(resolve => setTimeout(resolve, 10))
+ await new Promise((resolve) => setTimeout(resolve, 10))
// Update permissions
file.permissions = Permission.ALL
@@ -343,8 +344,10 @@ describe('Sanity checks', () => {
displayname: 'test',
owner: 'emma',
})
- // @ts-expect-error wrong type error check
- expect(() => { file.displayname = true }).toThrowError('Invalid displayname')
+ expect(() => {
+ // @ts-expect-error wrong type error check
+ file.displayname = true
+ }).toThrowError('Invalid displayname')
})
test('Invalid mtime', () => {
@@ -360,8 +363,10 @@ describe('Sanity checks', () => {
root: '/files/emma',
owner: 'emma',
})
- // @ts-expect-error wrong type error check
- expect(() => { file.mtime = 'invalid' }).toThrowError('Invalid mtime type')
+ expect(() => {
+ // @ts-expect-error wrong type error check
+ file.mtime = 'invalid'
+ }).toThrowError('Invalid mtime type')
})
test('Invalid crtime', () => {
@@ -388,9 +393,13 @@ describe('Sanity checks', () => {
mime: 'image/jpeg',
owner: 'emma',
})
- // @ts-expect-error wrong type error check
- expect(() => { file.mime = 1234 }).toThrowError('Missing or invalid mandatory mime')
- expect(() => { file.mime = 'image' }).toThrowError('Missing or invalid mandatory mime')
+ expect(() => {
+ // @ts-expect-error wrong type error check
+ file.mime = 1234
+ }).toThrowError('Missing or invalid mandatory mime')
+ expect(() => {
+ file.mime = 'image'
+ }).toThrowError('Missing or invalid mandatory mime')
})
test('Invalid attributes', () => {
@@ -428,8 +437,10 @@ describe('Sanity checks', () => {
mime: 'image/jpeg',
owner: 'emma',
})
- // @ts-expect-error wrong type error check
- expect(() => { file.size = 'test' }).toThrowError('Invalid size type')
+ expect(() => {
+ // @ts-expect-error wrong type error check
+ file.size = 'test'
+ }).toThrowError('Invalid size type')
})
test('Invalid owner', () => {
@@ -485,7 +496,7 @@ describe('Sanity checks', () => {
root: '/files/emma',
mime: 'image/jpeg',
owner: 'emma',
- status: 'invalid' as unknown as NodeStatus,
+ status: 'invalid' as unknown as TNodeStatus,
})).toThrowError('Status must be a valid NodeStatus')
const file = new File({
@@ -495,8 +506,10 @@ describe('Sanity checks', () => {
owner: 'emma',
status: NodeStatus.LOCKED,
})
- // @ts-expect-error wrong type error check
- expect(() => { file.status = 'invalid' }).toThrowError('Status must be a valid NodeStatus')
+ expect(() => {
+ // @ts-expect-error wrong type error check
+ file.status = 'invalid'
+ }).toThrowError('Status must be a valid NodeStatus')
})
})
@@ -899,10 +912,11 @@ describe('Attributes update', () => {
})
// We can not update the owner
- // @ts-expect-error owner is a read-only property
- expect(() => { file.owner = 'admin' }).toThrowError()
+ expect(() => {
+ // @ts-expect-error owner is a read-only property
+ file.owner = 'admin'
+ }).toThrowError()
// The owner is still the original one
expect(file?.owner).toBe('emma')
})
-
})
diff --git a/__tests__/index.spec.ts b/__tests__/index.spec.ts
index 0ac36dbb6..6a5797ac7 100644
--- a/__tests__/index.spec.ts
+++ b/__tests__/index.spec.ts
@@ -6,18 +6,18 @@
import type { NewMenuEntry } from '../lib/newMenu/NewMenu.ts'
import { describe, expect, test } from 'vitest'
+import { FileAction, getFileActions, registerFileAction } from '../lib/actions/fileAction.ts'
import {
- formatFileSize,
addNewFileMenuEntry,
- removeNewFileMenuEntry,
- getNewFileMenuEntries,
- FileType,
File,
+ FileType,
Folder,
+ formatFileSize,
+ getNewFileMenuEntries,
Node,
Permission,
+ removeNewFileMenuEntry,
} from '../lib/index.ts'
-import { FileAction, registerFileAction, getFileActions } from '../lib/actions/fileAction.ts'
import { NewMenu } from '../lib/newMenu/NewMenu.ts'
describe('Exports checks', () => {
diff --git a/__tests__/navigation.spec.ts b/__tests__/navigation.spec.ts
index 1b40eec4c..fe356ccdd 100644
--- a/__tests__/navigation.spec.ts
+++ b/__tests__/navigation.spec.ts
@@ -3,10 +3,10 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { describe, it, expect, vi } from 'vitest'
-import { Navigation, getNavigation } from '../lib/navigation/navigation'
-import { mockView } from './fixtures/view.ts'
+import { describe, expect, it, vi } from 'vitest'
import { View } from '../lib/index.ts'
+import { getNavigation, Navigation } from '../lib/navigation/navigation.ts'
+import { mockView } from './fixtures/view.ts'
describe('getNavigation', () => {
it('creates a new navigation if needed', () => {
diff --git a/__tests__/newFileMenu.spec.ts b/__tests__/newFileMenu.spec.ts
index 3e10066a8..294b0d85a 100644
--- a/__tests__/newFileMenu.spec.ts
+++ b/__tests__/newFileMenu.spec.ts
@@ -5,12 +5,12 @@
import type { NewMenuEntry } from '../lib/newMenu/index.ts'
-import { describe, expect, test, vi, afterEach } from 'vitest'
+import { afterEach, describe, expect, test, vi } from 'vitest'
import { addNewFileMenuEntry, getNewFileMenu, getNewFileMenuEntries } from '../lib/newMenu/index.ts'
import { NewMenu, NewMenuEntryCategory } from '../lib/newMenu/NewMenu.ts'
import { Folder } from '../lib/node/index.ts'
import { Permission } from '../lib/permissions.ts'
-import logger from '../lib/utils/logger'
+import logger from '../lib/utils/logger.ts'
describe('NewFileMenu init', () => {
test('Initializing NewFileMenu', () => {
@@ -296,7 +296,7 @@ describe('NewMenu getEntries filter', () => {
displayName: 'Create empty file',
templateName: 'New file',
iconSvgInline: '',
- enabled: folder => (folder.permissions & Permission.CREATE) !== 0,
+ enabled: (folder) => (folder.permissions & Permission.CREATE) !== 0,
handler: () => {},
}
newFileMenu.registerEntry(entry1)
@@ -306,7 +306,7 @@ describe('NewMenu getEntries filter', () => {
displayName: 'Create new markdown file',
templateName: 'New text.md',
iconSvgInline: '',
- enabled: folder => (folder.permissions & Permission.CREATE) !== 0,
+ enabled: (folder) => (folder.permissions & Permission.CREATE) !== 0,
handler: () => {},
}
newFileMenu.registerEntry(entry2)
@@ -333,7 +333,7 @@ describe('NewMenu getEntries filter', () => {
displayName: 'Create empty file',
templateName: 'New file',
iconSvgInline: '',
- enabled: folder => (folder.permissions & Permission.CREATE) !== 0,
+ enabled: (folder) => (folder.permissions & Permission.CREATE) !== 0,
handler: () => {},
}
newFileMenu.registerEntry(entry1)
@@ -343,7 +343,7 @@ describe('NewMenu getEntries filter', () => {
displayName: 'Create new markdown file',
templateName: 'New text.md',
iconSvgInline: '',
- enabled: folder => (folder.permissions & Permission.CREATE) !== 0,
+ enabled: (folder) => (folder.permissions & Permission.CREATE) !== 0,
handler: () => {},
}
newFileMenu.registerEntry(entry2)
@@ -377,7 +377,7 @@ describe('NewMenu getEntries filter', () => {
displayName: 'Create new markdown file',
templateName: 'New text.md',
iconSvgInline: '',
- enabled: folder => (folder.permissions & Permission.CREATE) !== 0,
+ enabled: (folder) => (folder.permissions & Permission.CREATE) !== 0,
handler: () => {},
}
newFileMenu.registerEntry(entry2)
diff --git a/__tests__/sidebar/sidebarTab.spec.ts b/__tests__/sidebar/sidebarTab.spec.ts
index 2da93b15f..47ed3cbfa 100644
--- a/__tests__/sidebar/sidebarTab.spec.ts
+++ b/__tests__/sidebar/sidebarTab.spec.ts
@@ -3,13 +3,15 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+import type { ISidebarTab } from '../../lib/sidebar/SidebarTab.ts'
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
-import { getSidebarTabs, ISidebarTab, registerSidebarTab } from '../../lib/sidebar/SidebarTab.ts'
+import { getSidebarTabs, registerSidebarTab } from '../../lib/sidebar/SidebarTab.ts'
+
// missing in JSDom but supported by every browser!
import 'css.escape'
describe('Sidebar tabs', () => {
-
beforeEach(() => {
vi.restoreAllMocks()
delete window._nc_files_sidebar_tabs
@@ -49,30 +51,28 @@ describe('Sidebar tabs', () => {
describe('Tab validation', () => {
it('fails with an invalid parameter', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab(getExampleTab),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tab is not an object]')
+ registerSidebarTab(getExampleTab)
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tab is not an object]')
})
it('fails with missing id', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), id: undefined }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an id conforming to the HTML id attribute specifications]')
+ registerSidebarTab({ ...getExampleTab(), id: undefined })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an id conforming to the HTML id attribute specifications]')
})
it('fails with non conforming id', () => {
- expect(
- () => registerSidebarTab({ ...getExampleTab(), id: 'this is invalid' }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an id conforming to the HTML id attribute specifications]')
+ expect(() => registerSidebarTab({ ...getExampleTab(), id: 'this is invalid' })).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an id conforming to the HTML id attribute specifications]')
})
it('fails with missing tagName name', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), tagName: undefined }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have the tagName name set]')
+ registerSidebarTab({ ...getExampleTab(), tagName: undefined })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have the tagName name set]')
})
it('fails with invalid tagName name', () => {
@@ -81,51 +81,49 @@ describe('Sidebar tabs', () => {
})
it('fails with missing name', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), displayName: undefined }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a name set]')
+ registerSidebarTab({ ...getExampleTab(), displayName: undefined })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a name set]')
})
it('fails with invalid name', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), displayName: 1234 }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a name set]')
+ registerSidebarTab({ ...getExampleTab(), displayName: 1234 })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a name set]')
})
it('fails with missing icon', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), iconSvgInline: undefined }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an valid SVG icon]')
+ registerSidebarTab({ ...getExampleTab(), iconSvgInline: undefined })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an valid SVG icon]')
})
it('fails with invalid SVG icon', () => {
- expect(
- () => registerSidebarTab({ ...getExampleTab(), iconSvgInline: 'icon-group' }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an valid SVG icon]')
+ expect(() => registerSidebarTab({ ...getExampleTab(), iconSvgInline: 'icon-group' })).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an valid SVG icon]')
})
it('fails with missing order', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), order: undefined }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a numeric order set]')
+ registerSidebarTab({ ...getExampleTab(), order: undefined })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a numeric order set]')
})
it('fails with invalid order', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), order: '3' }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a numeric order set]')
+ registerSidebarTab({ ...getExampleTab(), order: '3' })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have a numeric order set]')
})
it('fails with missing "enabled" method', () => {
- expect(
+ expect(() => {
// @ts-expect-error mocking for testing
- () => registerSidebarTab({ ...getExampleTab(), enabled: undefined }),
- ).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an "enabled" method]')
+ registerSidebarTab({ ...getExampleTab(), enabled: undefined })
+ }).toThrowErrorMatchingInlineSnapshot('[Error: Sidebar tabs need to have an "enabled" method]')
})
})
})
diff --git a/__tests__/test-global-setup.ts b/__tests__/test-global-setup.ts
index d7e7e3f25..e28c43163 100644
--- a/__tests__/test-global-setup.ts
+++ b/__tests__/test-global-setup.ts
@@ -3,6 +3,6 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-export const setup = () => {
+export function setup() {
process.env.TZ = 'UTC'
}
diff --git a/__tests__/utils/fileSize.spec.ts b/__tests__/utils/fileSize.spec.ts
index cb802cb54..cc73f221e 100644
--- a/__tests__/utils/fileSize.spec.ts
+++ b/__tests__/utils/fileSize.spec.ts
@@ -2,10 +2,10 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { beforeEach, describe, expect, it } from 'vitest'
-import { formatFileSize, parseFileSize } from '../../lib/index'
import { setLocale } from '@nextcloud/l10n'
+import { beforeEach, describe, expect, it } from 'vitest'
+import { formatFileSize, parseFileSize } from '../../lib/index.ts'
describe('humanFileSize', () => {
beforeEach(() => setLocale('en'))
diff --git a/__tests__/utils/fileSorting.spec.ts b/__tests__/utils/fileSorting.spec.ts
index c546384ff..6dc4e9d52 100644
--- a/__tests__/utils/fileSorting.spec.ts
+++ b/__tests__/utils/fileSorting.spec.ts
@@ -2,37 +2,42 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
import type { Attribute } from '../../lib/node/index.ts'
import { describe, expect, test } from 'vitest'
-import { File, FilesSortingMode, Folder, sortNodes as originalSortNodes } from '../../lib'
-
-const file = (name: string, size?: number, modified?: number, favorite = false, attributes: Attribute = {}) => new File({
- source: `https://cloud.domain.com/remote.php/dav/files/emma/${name}`,
- root: '/files/emma',
- mime: 'text/plain',
- owner: 'jdoe',
- mtime: new Date(modified ?? Date.now()),
- size,
- attributes: favorite
- ? {
- favorite: 1,
- }
- : attributes,
-})
-
-const folder = (name: string, size?: number, modified?: number, favorite = false) => new Folder({
- source: `https://cloud.domain.com/remote.php/dav/files/emma/${name}`,
- root: '/files/emma',
- owner: 'jdoe',
- mtime: new Date(modified ?? Date.now()),
- size,
- attributes: favorite
- ? {
- favorite: 1,
- }
- : undefined,
-})
+import { File, FilesSortingMode, Folder, sortNodes as originalSortNodes } from '../../lib/index.ts'
+
+function file(name: string, size?: number, modified?: number, favorite = false, attributes: Attribute = {}) {
+ return new File({
+ source: `https://cloud.domain.com/remote.php/dav/files/emma/${name}`,
+ root: '/files/emma',
+ mime: 'text/plain',
+ owner: 'jdoe',
+ mtime: new Date(modified ?? Date.now()),
+ size,
+ attributes: favorite
+ ? {
+ favorite: 1,
+ }
+ : attributes,
+ })
+}
+
+function folder(name: string, size?: number, modified?: number, favorite = false) {
+ return new Folder({
+ source: `https://cloud.domain.com/remote.php/dav/files/emma/${name}`,
+ root: '/files/emma',
+ owner: 'jdoe',
+ mtime: new Date(modified ?? Date.now()),
+ size,
+ attributes: favorite
+ ? {
+ favorite: 1,
+ }
+ : undefined,
+ })
+}
const sortNodes = (...args: Parameters) => originalSortNodes(...args).map((node) => node.basename)
@@ -254,15 +259,13 @@ describe('sortNodes', () => {
file('file_2.txt'),
] as const
- expect(
- sortNodes(
- array,
- {
- sortingMode: FilesSortingMode.Name,
- sortingOrder: 'asc',
- },
- ),
- ).toEqual(['file.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt'])
+ expect(sortNodes(
+ array,
+ {
+ sortingMode: FilesSortingMode.Name,
+ sortingOrder: 'asc',
+ },
+ )).toEqual(['file.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt'])
})
/**
@@ -277,15 +280,13 @@ describe('sortNodes', () => {
file('file_2'),
] as const
- expect(
- sortNodes(
- array,
- {
- sortingMode: FilesSortingMode.Name,
- sortingOrder: 'asc',
- },
- ),
- ).toEqual(['file', 'file_1', 'file_2', 'file_3'])
+ expect(sortNodes(
+ array,
+ {
+ sortingMode: FilesSortingMode.Name,
+ sortingOrder: 'asc',
+ },
+ )).toEqual(['file', 'file_1', 'file_2', 'file_3'])
})
/**
@@ -299,15 +300,13 @@ describe('sortNodes', () => {
file('file.d'),
] as const
- expect(
- sortNodes(
- array,
- {
- sortingMode: FilesSortingMode.Name,
- sortingOrder: 'asc',
- },
- ),
- ).toEqual(['file.a', 'file.b', 'file.c', 'file.d'])
+ expect(sortNodes(
+ array,
+ {
+ sortingMode: FilesSortingMode.Name,
+ sortingOrder: 'asc',
+ },
+ )).toEqual(['file.a', 'file.b', 'file.c', 'file.d'])
})
test('Can sort by random attribute', () => {
diff --git a/__tests__/utils/filename-validation.spec.ts b/__tests__/utils/filename-validation.spec.ts
index ca1f5024e..67af802ef 100644
--- a/__tests__/utils/filename-validation.spec.ts
+++ b/__tests__/utils/filename-validation.spec.ts
@@ -2,8 +2,9 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later or LGPL-3.0-or-later
*/
-import { describe, it, expect, vi, beforeEach } from 'vitest'
-import { InvalidFilenameError, InvalidFilenameErrorReason, isFilenameValid, validateFilename } from '../../lib/index'
+
+import { beforeEach, describe, expect, it, vi } from 'vitest'
+import { InvalidFilenameError, InvalidFilenameErrorReason, isFilenameValid, validateFilename } from '../../lib/index.ts'
const nextcloudCapabilities = vi.hoisted(() => ({ getCapabilities: vi.fn(() => ({ files: {} })) }))
vi.mock('@nextcloud/capabilities', () => nextcloudCapabilities)
@@ -30,7 +31,6 @@ describe('isFilenameValid', () => {
})
describe('validateFilename', () => {
-
beforeEach(() => {
vi.resetAllMocks()
delete window._oc_config
@@ -163,7 +163,6 @@ describe('validateFilename', () => {
})
describe('InvalidFilenameError', () => {
-
it('sets the filename', () => {
const error = new InvalidFilenameError({ filename: 'file', segment: 'fi', reason: InvalidFilenameErrorReason.Extension })
expect(error.filename).toBe('file')
diff --git a/__tests__/utils/filename.spec.ts b/__tests__/utils/filename.spec.ts
index 27cedc775..8fd8f20ac 100644
--- a/__tests__/utils/filename.spec.ts
+++ b/__tests__/utils/filename.spec.ts
@@ -2,7 +2,7 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later or LGPL-3.0-or-later
*/
-import { describe, it, expect, vi } from 'vitest'
+import { describe, expect, it, vi } from 'vitest'
import { getUniqueName } from '../../lib/index.ts'
describe('getUniqueName', () => {
diff --git a/__tests__/utils/sorting.spec.ts b/__tests__/utils/sorting.spec.ts
index 1fe9798f3..51f3d33a2 100644
--- a/__tests__/utils/sorting.spec.ts
+++ b/__tests__/utils/sorting.spec.ts
@@ -2,8 +2,9 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
import { describe, expect, test } from 'vitest'
-import { orderBy } from '../../lib/utils/sorting'
+import { orderBy } from '../../lib/utils/sorting.ts'
describe('orderBy', () => {
test('By default the identify and ascending order is used', () => {
@@ -41,13 +42,11 @@ describe('orderBy', () => {
{ text: 'b', order: 2, secondOrder: 1 },
] as const
- expect(
- orderBy(
- array,
- [(v) => v.order, (v) => v.secondOrder],
- ['desc'],
- ).map((v) => v.text),
- ).toEqual(['b', 'a', 'z'])
+ expect(orderBy(
+ array,
+ [(v) => v.order, (v) => v.secondOrder],
+ ['desc'],
+ ).map((v) => v.text)).toEqual(['b', 'a', 'z'])
})
test('Can set order array', () => {
@@ -57,13 +56,11 @@ describe('orderBy', () => {
{ text: 'b', order: 2, secondOrder: 1 },
] as const
- expect(
- orderBy(
- array,
- [(v) => v.order, (v) => v.secondOrder],
- ['desc', 'desc'],
- ).map((v) => v.text),
- ).toEqual(['a', 'b', 'z'])
+ expect(orderBy(
+ array,
+ [(v) => v.order, (v) => v.secondOrder],
+ ['desc', 'desc'],
+ ).map((v) => v.text)).toEqual(['a', 'b', 'z'])
})
test('Numbers are handled correctly', () => {
@@ -74,12 +71,10 @@ describe('orderBy', () => {
{ text: '2.2' },
] as const
- expect(
- orderBy(
- array,
- [(v) => v.text],
- ).map((v) => v.text),
- ).toEqual(['2.0', '2.2', '2.3', '2.10'])
+ expect(orderBy(
+ array,
+ [(v) => v.text],
+ ).map((v) => v.text)).toEqual(['2.0', '2.2', '2.3', '2.10'])
})
test('Numbers with suffixes are handled correctly', () => {
@@ -90,12 +85,10 @@ describe('orderBy', () => {
{ text: '2024-01-05 Foo' },
] as const
- expect(
- orderBy(
- array,
- [(v) => v.text],
- ).map((v) => v.text),
- ).toEqual(['2024-01-05', '2024-01-05 Foo', '2024-01-10', '2024-05-01'])
+ expect(orderBy(
+ array,
+ [(v) => v.text],
+ ).map((v) => v.text)).toEqual(['2024-01-05', '2024-01-05 Foo', '2024-01-10', '2024-05-01'])
})
test('Numbers with multiple dots are handled correctly', () => {
@@ -105,12 +98,10 @@ describe('orderBy', () => {
{ text: '2.10.1' },
] as const
- expect(
- orderBy(
- array,
- [(v) => v.text],
- ).map((v) => v.text),
- ).toEqual(['2.10', '2.10.1', '2.11'])
+ expect(orderBy(
+ array,
+ [(v) => v.text],
+ ).map((v) => v.text)).toEqual(['2.10', '2.10.1', '2.11'])
})
test('Dates are handled correctly', () => {
@@ -120,12 +111,10 @@ describe('orderBy', () => {
{ text: 'tuesday', date: new Date(1716298766 * 1000) },
]
- expect(
- orderBy(
- array,
- [(v) => v.date],
- ).map((v) => v.text),
- ).toEqual(['monday', 'tuesday', 'wednesday'])
+ expect(orderBy(
+ array,
+ [(v) => v.date],
+ ).map((v) => v.text)).toEqual(['monday', 'tuesday', 'wednesday'])
})
test('sort with equal values', () => {
diff --git a/__tests__/view.spec.ts b/__tests__/view.spec.ts
index e9be9a50f..465055aa1 100644
--- a/__tests__/view.spec.ts
+++ b/__tests__/view.spec.ts
@@ -3,9 +3,10 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { describe, expect, test } from 'vitest'
+import type { IView } from '../lib/navigation/view.ts'
-import { IView, View } from '../lib/navigation/view.ts'
+import { describe, expect, test } from 'vitest'
+import { View } from '../lib/navigation/view.ts'
import { mockView } from './fixtures/view.ts'
describe('Invalid View creation', () => {
@@ -15,8 +16,7 @@ describe('Invalid View creation', () => {
order: 1,
icon: '',
getContents: () => Promise.reject(new Error()),
- } as unknown as View),
- ).toThrowError('View id is required and must be a string')
+ } as unknown as View)).toThrowError('View id is required and must be a string')
})
test('Invalid name', () => {
expect(() => new View({
@@ -24,8 +24,7 @@ describe('Invalid View creation', () => {
order: 1,
icon: '',
getContents: () => Promise.reject(new Error()),
- } as unknown as View),
- ).toThrowError('View name is required and must be a string')
+ } as unknown as View)).toThrowError('View name is required and must be a string')
})
test('Invalid caption', () => {
expect(() => new View({
@@ -35,8 +34,7 @@ describe('Invalid View creation', () => {
caption: null,
icon: '',
getContents: () => Promise.reject(new Error()),
- } as unknown as View),
- ).toThrowError('View caption must be a string')
+ } as unknown as View)).toThrowError('View caption must be a string')
})
test('Invalid getContents', () => {
expect(() => new View({
@@ -45,8 +43,7 @@ describe('Invalid View creation', () => {
order: 1,
icon: '',
getContents: null,
- } as unknown as View),
- ).toThrowError('View getContents is required and must be a function')
+ } as unknown as View)).toThrowError('View getContents is required and must be a function')
})
test('Invalid icon', () => {
expect(() => new View({
@@ -55,8 +52,7 @@ describe('Invalid View creation', () => {
order: 1,
icon: '',
getContents: () => Promise.reject(new Error()),
- } as unknown as View),
- ).toThrowError('View icon is required and must be a valid svg string')
+ } as unknown as View)).toThrowError('View icon is required and must be a valid svg string')
})
test('Invalid hidden', () => {
@@ -66,8 +62,7 @@ describe('Invalid View creation', () => {
hidden: 'yes',
icon: '',
getContents: () => Promise.reject(new Error()),
- } as unknown as IView),
- ).toThrowError('View hidden must be a boolean')
+ } as unknown as IView)).toThrowError('View hidden must be a boolean')
})
test('Invalid order', () => {
@@ -77,8 +72,7 @@ describe('Invalid View creation', () => {
order: null,
icon: '',
getContents: () => Promise.reject(new Error()),
- } as unknown as View),
- ).toThrowError('View order must be a number')
+ } as unknown as View)).toThrowError('View order must be a number')
})
test('Invalid columns', () => {
expect(() => new View({
@@ -88,8 +82,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
columns: [{}],
- } as unknown as View),
- ).toThrowError('A column id is required')
+ } as unknown as View)).toThrowError('A column id is required')
})
test('Invalid columns with null', () => {
expect(() => new View({
@@ -99,8 +92,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
columns: [null],
- } as unknown as View),
- ).toThrowError('View column must be an object')
+ } as unknown as View)).toThrowError('View column must be an object')
})
test('Invalid emptyView', () => {
expect(() => new View({
@@ -110,8 +102,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
emptyView: true,
- } as unknown as View),
- ).toThrowError('View emptyView must be a function')
+ } as unknown as View)).toThrowError('View emptyView must be a function')
})
test('Invalid parent', () => {
expect(() => new View({
@@ -121,8 +112,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
parent: 1,
- } as unknown as View),
- ).toThrowError('View parent must be a string')
+ } as unknown as View)).toThrowError('View parent must be a string')
})
test('Invalid sticky', () => {
expect(() => new View({
@@ -132,8 +122,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
sticky: null,
- } as unknown as View),
- ).toThrowError('View sticky must be a boolean')
+ } as unknown as View)).toThrowError('View sticky must be a boolean')
})
test('Invalid expanded', () => {
expect(() => new View({
@@ -143,8 +132,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
expanded: null,
- } as unknown as View),
- ).toThrowError('View expanded must be a boolean')
+ } as unknown as View)).toThrowError('View expanded must be a boolean')
})
test('Invalid defaultSortKey', () => {
expect(() => new View({
@@ -154,8 +142,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
defaultSortKey: 1,
- } as unknown as View),
- ).toThrowError('View defaultSortKey must be a string')
+ } as unknown as View)).toThrowError('View defaultSortKey must be a string')
})
test('Invalid loadChildViews', () => {
expect(() => new View({
@@ -165,8 +152,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
loadChildViews: true,
- } as unknown as View),
- ).toThrowError('View loadChildViews must be a function')
+ } as unknown as View)).toThrowError('View loadChildViews must be a function')
})
test('Invalid params', () => {
expect(() => new View({
@@ -176,8 +162,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
params: [],
- } as unknown as View),
- ).toThrowError('View params must be an object')
+ } as unknown as View)).toThrowError('View params must be an object')
})
test('Invalid params with null', () => {
expect(() => new View({
@@ -187,8 +172,7 @@ describe('Invalid View creation', () => {
icon: '',
getContents: () => Promise.reject(new Error()),
params: null,
- } as unknown as View),
- ).toThrowError('View params must be an object')
+ } as unknown as View)).toThrowError('View params must be an object')
})
})
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 000000000..d69d56fb4
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,11 @@
+/*!
+ * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: CC0-1.0
+ */
+
+import { recommendedLibrary } from '@nextcloud/eslint-config'
+import { defineConfig } from 'eslint/config'
+
+export default defineConfig([
+ ...recommendedLibrary,
+])
diff --git a/lib/actions/fileAction.ts b/lib/actions/fileAction.ts
index b2704f1bf..5babbfe06 100644
--- a/lib/actions/fileAction.ts
+++ b/lib/actions/fileAction.ts
@@ -2,6 +2,7 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
import type { ActionContext, ActionContextSingle } from '../types.ts'
import logger from '../utils/logger.ts'
@@ -22,6 +23,7 @@ export interface IHotkeyConfig {
/**
* The key to be pressed.
+ *
* @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
*/
key: string
@@ -58,18 +60,20 @@ export interface FileActionData {
/**
* Function executed on single file action
+ *
* @return true if the action was executed successfully,
* false otherwise and null if the action is silent/undefined.
- * @throws Error if the action failed
+ * @throws {Error} If the action failed
*/
- exec: (context: ActionContextSingle) => Promise,
+ exec: (context: ActionContextSingle) => Promise
/**
* Function executed on multiple files action
+ *
* @return true if the action was executed successfully,
* false otherwise and null if the action is silent/undefined.
- * @throws Error if the action failed
+ * @throws {Error} If the action failed
*/
- execBatch?: (context: ActionContext) => Promise<(boolean|null)[]>
+ execBatch?: (context: ActionContext) => Promise<(boolean | null)[]>
/** This action order in the list */
order?: number
@@ -89,7 +93,7 @@ export interface FileActionData {
* This action's parent id in the list.
* If none found, will be displayed as a top-level action.
*/
- parent?: string,
+ parent?: string
/**
* Make this action the default.
@@ -103,20 +107,19 @@ export interface FileActionData {
*
* @see DefaultType
*/
- default?: TDefaultType,
+ default?: TDefaultType
/**
* If true, the renderInline function will be called
*/
- inline?: (context: ActionContextSingle) => boolean,
+ inline?: (context: ActionContextSingle) => boolean
/**
* If defined, the returned html element will be
* appended before the actions menu.
*/
- renderInline?: (context: ActionContextSingle) => Promise,
+ renderInline?: (context: ActionContextSingle) => Promise
}
export class FileAction {
-
private _action: FileActionData
constructor(action: FileActionData) {
@@ -248,17 +251,21 @@ export class FileAction {
}
}
}
-
}
-export const registerFileAction = function(action: FileAction): void {
+/**
+ * Register a new file action.
+ *
+ * @param action - The file list action to register
+ */
+export function registerFileAction(action: FileAction): void {
if (typeof window._nc_fileactions === 'undefined') {
window._nc_fileactions = []
logger.debug('FileActions initialized')
}
// Check duplicates
- if (window._nc_fileactions.find(search => search.id === action.id)) {
+ if (window._nc_fileactions.find((search) => search.id === action.id)) {
logger.error(`FileAction ${action.id} already registered`, { action })
return
}
@@ -266,7 +273,10 @@ export const registerFileAction = function(action: FileAction): void {
window._nc_fileactions.push(action)
}
-export const getFileActions = function(): FileAction[] {
+/**
+ *
+ */
+export function getFileActions(): FileAction[] {
if (typeof window._nc_fileactions === 'undefined') {
window._nc_fileactions = []
logger.debug('FileActions initialized')
diff --git a/lib/actions/fileListAction.ts b/lib/actions/fileListAction.ts
index 7a0919f34..1b3e16a2a 100644
--- a/lib/actions/fileListAction.ts
+++ b/lib/actions/fileListAction.ts
@@ -2,6 +2,7 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
import type { ViewActionContext } from '../types.ts'
import logger from '../utils/logger.ts'
@@ -26,15 +27,15 @@ interface FileListActionData {
/**
* Function executed on single file action
+ *
* @return true if the action was executed successfully,
* false otherwise and null if the action is silent/undefined.
- * @throws Error if the action failed
+ * @throws {Error} If the action failed
*/
- exec: (context: ViewActionContext) => Promise,
+ exec: (context: ViewActionContext) => Promise
}
export class FileListAction {
-
private _action: FileListActionData
constructor(action: FileListActionData) {
@@ -91,15 +92,19 @@ export class FileListAction {
throw new Error('Invalid exec function')
}
}
-
}
-export const registerFileListAction = (action: FileListAction) => {
+/**
+ * Register a new file list action.
+ *
+ * @param action - The file list action to register
+ */
+export function registerFileListAction(action: FileListAction) {
if (typeof window._nc_filelistactions === 'undefined') {
window._nc_filelistactions = []
}
- if (window._nc_filelistactions.find(listAction => listAction.id === action.id)) {
+ if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {
logger.error(`FileListAction with id "${action.id}" is already registered`, { action })
return
}
@@ -107,7 +112,10 @@ export const registerFileListAction = (action: FileListAction) => {
window._nc_filelistactions.push(action)
}
-export const getFileListActions = (): FileListAction[] => {
+/**
+ * Get all currently registered file list actions.
+ */
+export function getFileListActions(): FileListAction[] {
if (typeof window._nc_filelistactions === 'undefined') {
window._nc_filelistactions = []
}
diff --git a/lib/actions/index.ts b/lib/actions/index.ts
index afd067404..0c4e2c54d 100644
--- a/lib/actions/index.ts
+++ b/lib/actions/index.ts
@@ -5,5 +5,5 @@
export type { FileActionData, IHotkeyConfig } from './fileAction.ts'
-export { FileAction, getFileActions, registerFileAction, DefaultType } from './fileAction.ts'
-export { getFileListActions, registerFileListAction, FileListAction } from './fileListAction.ts'
+export { DefaultType, FileAction, getFileActions, registerFileAction } from './fileAction.ts'
+export { FileListAction, getFileListActions, registerFileListAction } from './fileListAction.ts'
diff --git a/lib/dav/dav.ts b/lib/dav/dav.ts
index b3f664548..90de01536 100644
--- a/lib/dav/dav.ts
+++ b/lib/dav/dav.ts
@@ -7,12 +7,12 @@ import type { DAVResultResponseProps, FileStat, ResponseDataDetailed, WebDAVClie
import type { Node, NodeData } from '../node/index.ts'
import { getCurrentUser, getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'
-import { getSharingToken, isPublicShare } from '@nextcloud/sharing/public'
import { generateRemoteUrl } from '@nextcloud/router'
+import { getSharingToken, isPublicShare } from '@nextcloud/sharing/public'
import { createClient, getPatcher } from 'webdav'
+import { File, Folder, NodeStatus } from '../node/index.ts'
import { parsePermissions } from './davPermissions.ts'
import { getFavoritesReport } from './davProperties.ts'
-import { File, Folder, NodeStatus } from '../node/index.ts'
/**
* Nextcloud DAV result response
@@ -66,11 +66,12 @@ export const defaultRemoteURL = getRemoteURL()
* @param remoteURL The DAV server remote URL
* @param headers Optional additional headers to set for every request
*/
-export const getClient = function(remoteURL = defaultRemoteURL, headers: Record = {}) {
+export function getClient(remoteURL = defaultRemoteURL, headers: Record = {}) {
const client = createClient(remoteURL, { headers })
/**
* Set headers for DAV requests
+ *
* @param token CSRF token
*/
function setHeaders(token: string | null) {
@@ -155,7 +156,7 @@ export async function getFavoriteNodes(options: { client?: WebDAVClient, path?:
}) as ResponseDataDetailed
return contentsResponse.data
- .filter(node => node.filename !== path) // exclude current dir
+ .filter((node) => node.filename !== path) // exclude current dir
.map((result) => resultToNode(result, davRoot))
}
@@ -166,7 +167,7 @@ export async function getFavoriteNodes(options: { client?: WebDAVClient, path?:
* @param filesRoot The DAV files root path
* @param remoteURL The DAV server remote URL (same as on `getClient`)
*/
-export const resultToNode = function(node: FileStat, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL): Node {
+export function resultToNode(node: FileStat, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL): Node {
let userId = getCurrentUser()?.uid
if (isPublicShare()) {
userId = userId ?? 'anonymous'
diff --git a/lib/dav/davPermissions.ts b/lib/dav/davPermissions.ts
index a8ee95bb4..c59c46879 100644
--- a/lib/dav/davPermissions.ts
+++ b/lib/dav/davPermissions.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { Permission } from '../permissions'
+import { Permission } from '../permissions.ts'
/**
* Parse the WebDAV permission string to a permission enum
diff --git a/lib/dav/davProperties.ts b/lib/dav/davProperties.ts
index 6d97e40e0..3434468da 100644
--- a/lib/dav/davProperties.ts
+++ b/lib/dav/davProperties.ts
@@ -2,8 +2,9 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
import { getCurrentUser } from '@nextcloud/auth'
-import logger from '../utils/logger'
+import logger from '../utils/logger.ts'
export type DavProperty = { [key: string]: string }
@@ -43,7 +44,7 @@ export const defaultDavNamespaces = {
* @param prop The property
* @param namespace The namespace of the property
*/
-export const registerDavProperty = function(prop: string, namespace: DavProperty = { nc: 'http://nextcloud.org/ns' }): boolean {
+export function registerDavProperty(prop: string, namespace: DavProperty = { nc: 'http://nextcloud.org/ns' }): boolean {
if (typeof window._nc_dav_properties === 'undefined') {
window._nc_dav_properties = [...defaultDavProperties]
window._nc_dav_namespaces = { ...defaultDavNamespaces }
@@ -76,7 +77,7 @@ export const registerDavProperty = function(prop: string, namespace: DavProperty
/**
* Get the registered dav properties
*/
-export const getDavProperties = function(): string {
+export function getDavProperties(): string {
if (typeof window._nc_dav_properties === 'undefined') {
window._nc_dav_properties = [...defaultDavProperties]
}
@@ -87,7 +88,7 @@ export const getDavProperties = function(): string {
/**
* Get the registered dav namespaces
*/
-export const getDavNameSpaces = function(): string {
+export function getDavNameSpaces(): string {
if (typeof window._nc_dav_namespaces === 'undefined') {
window._nc_dav_namespaces = { ...defaultDavNamespaces }
}
@@ -100,7 +101,7 @@ export const getDavNameSpaces = function(): string {
/**
* Get the default PROPFIND request body
*/
-export const getDefaultPropfind = function(): string {
+export function getDefaultPropfind(): string {
return `
@@ -112,7 +113,7 @@ export const getDefaultPropfind = function(): string {
/**
* Get the REPORT body to filter for favorite nodes
*/
-export const getFavoritesReport = function(): string {
+export function getFavoritesReport(): string {
return `
@@ -145,7 +146,7 @@ export const getFavoritesReport = function(): string {
* }) as ResponseDataDetailed
* ```
*/
-export const getRecentSearch = function(lastModified: number): string {
+export function getRecentSearch(lastModified: number): string {
return `
diff --git a/lib/dav/index.ts b/lib/dav/index.ts
index 488731949..dfaf6a3ed 100644
--- a/lib/dav/index.ts
+++ b/lib/dav/index.ts
@@ -1,3 +1,4 @@
+/* eslint-disable jsdoc/check-tag-names */
/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -7,9 +8,10 @@
* This module provides utils to work with the Nextcloud WebDAV interface.
*
* The DAV functions are based on the [`webdav`](https://www.npmjs.com/package/webdav) package.
+ *
* @packageDocumentation
*/
-export * from './dav'
-export * from './davPermissions'
-export * from './davProperties'
+export * from './dav.ts'
+export * from './davPermissions.ts'
+export * from './davProperties.ts'
diff --git a/lib/fileListFilters.ts b/lib/fileListFilters.ts
index b0ec84416..a190f1477 100644
--- a/lib/fileListFilters.ts
+++ b/lib/fileListFilters.ts
@@ -49,9 +49,9 @@ export interface FilterUpdateChipsEvent extends CustomEvent {
@@ -78,6 +78,7 @@ export interface IFileListFilter extends TypedEventTarget
/**
* If the filter needs a visual element for settings it can provide a function to mount it.
+ *
* @param el The DOM element to mount to
*/
mount?(el: HTMLElement): void
@@ -93,7 +94,6 @@ export interface IFileListFilter extends TypedEventTarget
}
export class FileListFilter extends TypedEventTarget implements IFileListFilter {
-
public id: string
public order: number
@@ -116,7 +116,6 @@ export class FileListFilter extends TypedEventTarget impl
protected filterUpdated() {
this.dispatchTypedEvent('update:filter', new CustomEvent('update:filter') as FilterUpdateEvent)
}
-
}
/**
@@ -140,6 +139,7 @@ export function registerFileListFilter(filter: IFileListFilter): void {
/**
* Remove a registered filter from the file list
+ *
* @param filterId The unique ID of the filter to remove
*/
export function unregisterFileListFilter(filterId: string): void {
diff --git a/lib/fileListHeaders.ts b/lib/fileListHeaders.ts
index 7cd787958..de81cd614 100644
--- a/lib/fileListHeaders.ts
+++ b/lib/fileListHeaders.ts
@@ -3,8 +3,8 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { IFolder } from './node/folder.ts'
import type { IView } from './navigation/view.ts'
+import type { IFolder } from './node/folder.ts'
import logger from './utils/logger.ts'
@@ -22,7 +22,6 @@ export interface HeaderData {
}
export class Header {
-
private _header: HeaderData
constructor(header: HeaderData) {
@@ -71,17 +70,21 @@ export class Header {
throw new Error('Invalid updated property')
}
}
-
}
-export const registerFileListHeaders = function(header: Header): void {
+/**
+ * Register a new file list header.
+ *
+ * @param header - The header to register
+ */
+export function registerFileListHeaders(header: Header): void {
if (typeof window._nc_filelistheader === 'undefined') {
window._nc_filelistheader = []
logger.debug('FileListHeaders initialized')
}
// Check duplicates
- if (window._nc_filelistheader.find(search => search.id === header.id)) {
+ if (window._nc_filelistheader.find((search) => search.id === header.id)) {
logger.error(`Header ${header.id} already registered`, { header })
return
}
@@ -89,7 +92,10 @@ export const registerFileListHeaders = function(header: Header): void {
window._nc_filelistheader.push(header)
}
-export const getFileListHeaders = function(): Header[] {
+/**
+ * Get all currently registered file list headers.
+ */
+export function getFileListHeaders(): Header[] {
if (typeof window._nc_filelistheader === 'undefined') {
window._nc_filelistheader = []
logger.debug('FileListHeaders initialized')
diff --git a/lib/navigation/column.ts b/lib/navigation/column.ts
index 1ae245e34..64a0103c3 100644
--- a/lib/navigation/column.ts
+++ b/lib/navigation/column.ts
@@ -25,7 +25,6 @@ export interface IColumn {
}
export class Column implements IColumn {
-
private _column: IColumn
constructor(column: IColumn) {
@@ -52,7 +51,6 @@ export class Column implements IColumn {
get summary() {
return this._column.summary
}
-
}
/**
diff --git a/lib/navigation/index.ts b/lib/navigation/index.ts
index d08cee543..d1aba713c 100644
--- a/lib/navigation/index.ts
+++ b/lib/navigation/index.ts
@@ -3,6 +3,6 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-export * from './navigation'
-export * from './column'
-export * from './view'
+export * from './navigation.ts'
+export * from './column.ts'
+export * from './view.ts'
diff --git a/lib/navigation/navigation.ts b/lib/navigation/navigation.ts
index 722dce741..4b912c0d0 100644
--- a/lib/navigation/navigation.ts
+++ b/lib/navigation/navigation.ts
@@ -3,11 +3,11 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { IView } from './view'
+import type { IView } from './view.ts'
-import { validateView } from './view'
import { TypedEventTarget } from 'typescript-event-target'
-import logger from '../utils/logger'
+import logger from '../utils/logger.ts'
+import { validateView } from './view.ts'
/**
* The event is emitted when the navigation view was updated.
@@ -29,6 +29,7 @@ interface UpdateViewsEvent extends CustomEvent {
*
* Custom views for the files app can be registered (examples are the favorites views or the shared-with-you view).
* It is also possible to listen on changes of the registered views or when the current active view is changed.
+ *
* @example
* ```js
* const navigation = getNavigation()
@@ -46,18 +47,18 @@ interface UpdateViewsEvent extends CustomEvent {
* ```
*/
export class Navigation extends TypedEventTarget<{ updateActive: UpdateActiveViewEvent, update: UpdateViewsEvent }> {
-
private _views: IView[] = []
private _currentView: IView | null = null
/**
* Register a new view on the navigation
+ *
* @param view The view to register
* @throws {Error} if a view with the same id is already registered
* @throws {Error} if the registered view is invalid
*/
register(view: IView): void {
- if (this._views.find(search => search.id === view.id)) {
+ if (this._views.find((search) => search.id === view.id)) {
throw new Error(`IView id ${view.id} is already registered`)
}
@@ -69,10 +70,11 @@ export class Navigation extends TypedEventTarget<{ updateActive: UpdateActiveVie
/**
* Remove a registered view
+ *
* @param id The id of the view to remove
*/
remove(id: string): void {
- const index = this._views.findIndex(view => view.id === id)
+ const index = this._views.findIndex((view) => view.id === id)
if (index !== -1) {
this._views.splice(index, 1)
this.dispatchTypedEvent('update', new CustomEvent('update') as UpdateViewsEvent)
@@ -114,13 +116,12 @@ export class Navigation extends TypedEventTarget<{ updateActive: UpdateActiveVie
get views(): IView[] {
return this._views
}
-
}
/**
* Get the current files navigation
*/
-export const getNavigation = function(): Navigation {
+export function getNavigation(): Navigation {
if (typeof window._nc_navigation === 'undefined') {
window._nc_navigation = new Navigation()
logger.debug('Navigation service initialized')
diff --git a/lib/navigation/view.ts b/lib/navigation/view.ts
index 5bd9d7f8f..55939c1a5 100644
--- a/lib/navigation/view.ts
+++ b/lib/navigation/view.ts
@@ -7,11 +7,11 @@ import type { IFolder, INode } from '../node/index.ts'
import type { IColumn } from './column.ts'
import isSvg from 'is-svg'
-import { validateColumn } from './column.ts'
import { checkOptionalProperty } from '../utils/objectValidation.ts'
+import { validateColumn } from './column.ts'
export type ContentsWithRoot = {
- folder: IFolder,
+ folder: IFolder
contents: INode[]
}
@@ -52,9 +52,8 @@ export interface IView {
* This method _must_ also return the current directory
* information alongside with its content.
*
- * An abort signal is provided to be able to
- * cancel the request if the user change directory
- * {@see https://developer.mozilla.org/en-US/docs/Web/API/AbortController }.
+ * An [abort signal](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) is provided
+ * to be able to cancel the request if the user change directory.
*/
getContents(path: string, options: IGetContentsOptions): Promise
@@ -109,7 +108,6 @@ export interface IView {
}
export class View implements IView {
-
private _view: IView
constructor(view: IView) {
@@ -200,7 +198,6 @@ export class View implements IView {
get loadChildViews() {
return this._view.loadChildViews
}
-
}
/**
diff --git a/lib/newMenu/NewMenu.ts b/lib/newMenu/NewMenu.ts
index f3de6d5e2..dd0f13891 100644
--- a/lib/newMenu/NewMenu.ts
+++ b/lib/newMenu/NewMenu.ts
@@ -45,6 +45,7 @@ export interface NewMenuEntry {
/**
* Condition wether this entry is shown or not
+ *
* @param context the creation context. Usually the current folder
*/
enabled?: (context: IFolder) => boolean
@@ -60,6 +61,7 @@ export interface NewMenuEntry {
/**
* Function to be run after creation
+ *
* @param context - The creation context. Usually the current folder
* @param content - List of file/folders present in the context folder
*/
@@ -67,7 +69,6 @@ export interface NewMenuEntry {
}
export class NewMenu {
-
private _entries: Array = []
public registerEntry(entry: NewMenuEntry) {
@@ -97,13 +98,13 @@ export class NewMenu {
public getEntries(context?: IFolder): Array {
if (context) {
return this._entries
- .filter(entry => typeof entry.enabled === 'function' ? entry.enabled(context) : true)
+ .filter((entry) => typeof entry.enabled === 'function' ? entry.enabled(context) : true)
}
return this._entries
}
private getEntryIndex(id: string): number {
- return this._entries.findIndex(entry => entry.id === id)
+ return this._entries.findIndex((entry) => entry.id === id)
}
private validateEntry(entry: NewMenuEntry) {
@@ -136,5 +137,4 @@ export class NewMenu {
throw new Error('Duplicate entry')
}
}
-
}
diff --git a/lib/newMenu/functions.ts b/lib/newMenu/functions.ts
index 2a45a7f56..2a7077f2e 100644
--- a/lib/newMenu/functions.ts
+++ b/lib/newMenu/functions.ts
@@ -6,8 +6,8 @@
import type { IFolder } from '../node/index.ts'
import type { NewMenuEntry } from './NewMenu.ts'
-import { NewMenu } from './NewMenu.ts'
import logger from '../utils/logger.ts'
+import { NewMenu } from './NewMenu.ts'
/**
* Get the NewMenu instance used by the files app.
diff --git a/lib/node/file.ts b/lib/node/file.ts
index bca295d05..1292c46e0 100644
--- a/lib/node/file.ts
+++ b/lib/node/file.ts
@@ -3,13 +3,12 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { NodeConstructorData } from './node'
+import type { NodeConstructorData } from './node.ts'
-import { FileType } from './fileType'
-import { Node } from './node'
+import { FileType } from './fileType.ts'
+import { Node } from './node.ts'
export class File extends Node {
-
public constructor(...[data, davService]: NodeConstructorData) {
super(data, davService)
}
@@ -17,7 +16,6 @@ export class File extends Node {
get type(): typeof FileType.File {
return FileType.File
}
-
}
/**
diff --git a/lib/node/folder.ts b/lib/node/folder.ts
index f04a765ac..6711ca260 100644
--- a/lib/node/folder.ts
+++ b/lib/node/folder.ts
@@ -3,13 +3,12 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { NodeConstructorData } from './node'
+import type { NodeConstructorData } from './node.ts'
-import { FileType } from './fileType'
-import { Node } from './node'
+import { FileType } from './fileType.ts'
+import { Node } from './node.ts'
export class Folder extends Node {
-
constructor(...[data, davService]: NodeConstructorData) {
// enforcing mimes
super({
@@ -29,7 +28,6 @@ export class Folder extends Node {
get mime(): 'httpd/unix-directory' {
return 'httpd/unix-directory'
}
-
}
/**
diff --git a/lib/node/node.ts b/lib/node/node.ts
index dbc2cc65a..66a221bf2 100644
--- a/lib/node/node.ts
+++ b/lib/node/node.ts
@@ -4,10 +4,11 @@
*/
import type { TFileType } from './fileType.ts'
+import type { Attribute, NodeData } from './nodeData.ts'
import { basename, dirname, encodePath, extname } from '@nextcloud/paths'
-import { Permission } from '../permissions'
-import { Attribute, fixDates, fixRegExp, isDavResource, NodeData, validateData } from './nodeData'
+import { Permission } from '../permissions.ts'
+import { fixDates, fixRegExp, isDavResource, validateData } from './nodeData.ts'
export const NodeStatus = Object.freeze({
/** This is a new node and it doesn't exists on the filesystem yet */
@@ -25,15 +26,14 @@ export type TNodeStatus = typeof NodeStatus[keyof typeof NodeStatus]
export type NodeConstructorData = [NodeData, RegExp?]
export abstract class Node {
-
private _attributes: Attribute
protected _data: NodeData
protected _knownDavService = /(remote|public)\.php\/(web)?dav/i
private readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype))
- .filter(e => typeof e[1].get === 'function' && e[0] !== '__proto__')
- .map(e => e[0])
+ .filter((e) => typeof e[1].get === 'function' && e[0] !== '__proto__')
+ .map((e) => e[0])
private handler = {
set: (target: Attribute, prop: string, value: unknown): boolean => {
@@ -132,7 +132,7 @@ export abstract class Node {
* There is no setter as the source is not meant to be changed manually.
* You can use the rename or move method to change the source.
*/
- get extension(): string|null {
+ get extension(): string | null {
return extname(this.source)
}
@@ -163,7 +163,7 @@ export abstract class Node {
* Set the file mime
* Removing the mime type will set it to `application/octet-stream`
*/
- set mime(mime: string|undefined) {
+ set mime(mime: string | undefined) {
mime ??= 'application/octet-stream'
validateData({ ...this._data, mime }, this._knownDavService)
@@ -173,14 +173,14 @@ export abstract class Node {
/**
* Get the file modification time
*/
- get mtime(): Date|undefined {
+ get mtime(): Date | undefined {
return this._data.mtime
}
/**
* Set the file modification time
*/
- set mtime(mtime: Date|undefined) {
+ set mtime(mtime: Date | undefined) {
validateData({ ...this._data, mtime }, this._knownDavService)
this._data.mtime = mtime
}
@@ -189,21 +189,21 @@ export abstract class Node {
* Get the file creation time
* There is no setter as the creation time is not meant to be changed
*/
- get crtime(): Date|undefined {
+ get crtime(): Date | undefined {
return this._data.crtime
}
/**
* Get the file size
*/
- get size(): number|undefined {
+ get size(): number | undefined {
return this._data.size
}
/**
* Set the file size
*/
- set size(size: number|undefined) {
+ set size(size: number | undefined) {
validateData({ ...this._data, size }, this._knownDavService)
this.updateMtime()
this._data.size = size
@@ -245,7 +245,7 @@ export abstract class Node {
* Get the file owner
* There is no setter as the owner is not meant to be changed
*/
- get owner(): string|null {
+ get owner(): string | null {
// Remote resources have no owner
if (!this.isDavResource) {
return null
@@ -303,21 +303,21 @@ export abstract class Node {
* Get the node id if defined.
* There is no setter as the fileid is not meant to be changed
*/
- get fileid(): number|undefined {
+ get fileid(): number | undefined {
return this._data?.id
}
/**
* Get the node status.
*/
- get status(): TNodeStatus|undefined {
+ get status(): TNodeStatus | undefined {
return this._data?.status
}
/**
* Set the node status.
*/
- set status(status: TNodeStatus|undefined) {
+ set status(status: TNodeStatus | undefined) {
validateData({ ...this._data, status }, this._knownDavService)
this._data.status = status
}
@@ -325,7 +325,7 @@ export abstract class Node {
/**
* Move the node to a new destination
*
- * @param {string} destination the new source.
+ * @param destination the new source.
* e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg
*/
move(destination: string) {
@@ -404,7 +404,6 @@ export abstract class Node {
toJSON(): string {
return JSON.stringify([structuredClone(this._data), this._knownDavService.toString()])
}
-
}
/**
diff --git a/lib/node/nodeData.ts b/lib/node/nodeData.ts
index 8b0792e67..7d76d8f03 100644
--- a/lib/node/nodeData.ts
+++ b/lib/node/nodeData.ts
@@ -3,10 +3,11 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import { join } from '@nextcloud/paths'
+import type { TNodeStatus } from './node.ts'
-import { Permission } from '../permissions'
-import { NodeStatus, TNodeStatus } from './node'
+import { join } from '@nextcloud/paths'
+import { Permission } from '../permissions.ts'
+import { NodeStatus } from './node.ts'
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export interface Attribute { [key: string]: any }
@@ -45,12 +46,13 @@ export interface NodeData {
* The node permissions.
*
* A binary mask of `Permission` values.
+ *
* @see Permission
*/
permissions?: number
/** The owner UID of this node */
- owner: string|null
+ owner: string | null
/** Optional the displayname of this node */
displayname?: string
@@ -68,7 +70,7 @@ export interface NodeData {
* @param source The source to check
* @param davService Pattern to check if source is DAV resource
*/
-export const isDavResource = function(source: string, davService: RegExp): boolean {
+export function isDavResource(source: string, davService: RegExp): boolean {
return source.match(davService) !== null
}
@@ -88,9 +90,8 @@ export function validateData(data: NodeData, davService: RegExp) {
}
try {
- // eslint-disable-next-line no-new
new URL(data.source)
- } catch (e) {
+ } catch {
throw new Error('Invalid source format, source must be a valid URL')
}
@@ -174,7 +175,7 @@ export function validateData(data: NodeData, davService: RegExp) {
*
* @param data The internal node data
*/
-export const fixDates = (data: NodeData) => {
+export function fixDates(data: NodeData) {
if (data.mtime && typeof data.mtime === 'string') {
if (!isNaN(Date.parse(data.mtime))
&& JSON.stringify(new Date(data.mtime)) === JSON.stringify(data.mtime)) {
@@ -195,7 +196,7 @@ export const fixDates = (data: NodeData) => {
*
* @param pattern The pattern as string or RegExp
*/
-export const fixRegExp = (pattern: string | RegExp): RegExp => {
+export function fixRegExp(pattern: string | RegExp): RegExp {
if (pattern instanceof RegExp) {
return pattern
}
diff --git a/lib/sidebar/Sidebar.ts b/lib/sidebar/Sidebar.ts
index 27b06e5a6..e5714bde2 100644
--- a/lib/sidebar/Sidebar.ts
+++ b/lib/sidebar/Sidebar.ts
@@ -98,7 +98,6 @@ export interface ISidebar {
* If we decide to do a breaking change we can either add compatibility wrappers in the implementation in the files app.
*/
class SidebarProxy implements ISidebar {
-
get #impl(): Omit | undefined {
return window.OCA?.Files?._sidebar?.()
}
@@ -146,7 +145,6 @@ class SidebarProxy implements ISidebar {
registerAction(action: ISidebarAction): void {
registerSidebarAction(action)
}
-
}
/**
diff --git a/lib/sidebar/SidebarAction.ts b/lib/sidebar/SidebarAction.ts
index fe7bda9cb..2b29c523f 100644
--- a/lib/sidebar/SidebarAction.ts
+++ b/lib/sidebar/SidebarAction.ts
@@ -56,7 +56,7 @@ export interface ISidebarAction {
* Register a new sidebar action.
*
* @param action - The sidebar action to register
- * @throws If the provided action is not a valid sidebar action and thus cannot be registered.
+ * @throws {Error} If the provided action is not a valid sidebar action and thus cannot be registered.
*/
export function registerSidebarAction(action: ISidebarAction): void {
validateSidebarAction(action)
diff --git a/lib/sidebar/SidebarTab.ts b/lib/sidebar/SidebarTab.ts
index 2fd81c016..b2d54dc79 100644
--- a/lib/sidebar/SidebarTab.ts
+++ b/lib/sidebar/SidebarTab.ts
@@ -88,7 +88,7 @@ export interface ISidebarTab {
* Register a new sidebar tab for the files app.
*
* @param tab - The sidebar tab to register
- * @throws If the provided tab is not a valid sidebar tab and thus cannot be registered.
+ * @throws {Error} If the provided tab is not a valid sidebar tab and thus cannot be registered.
*/
export function registerSidebarTab(tab: ISidebarTab): void {
validateSidebarTab(tab)
@@ -116,6 +116,7 @@ export function getSidebarTabs(): ISidebarTab[] {
* Check if a given sidebar tab objects implements all necessary fields.
*
* @param tab - The sidebar tab to validate
+ * @throws {Error} If the provided tab is not valid
*/
function validateSidebarTab(tab: ISidebarTab): void {
if (typeof tab !== 'object') {
diff --git a/lib/types.ts b/lib/types.ts
index 861c9876e..8315a8c77 100644
--- a/lib/types.ts
+++ b/lib/types.ts
@@ -3,25 +3,25 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-import type { IFolder, INode } from './node/index.ts'
import type { IView } from './navigation/index.ts'
+import type { IFolder, INode } from './node/index.ts'
export type ActionContextSingle = {
- nodes: [INode],
- view: IView,
- folder: IFolder,
- contents: INode[],
+ nodes: [INode]
+ view: IView
+ folder: IFolder
+ contents: INode[]
}
export type ActionContext = {
- nodes: INode[],
- view: IView,
- folder: IFolder,
- contents: INode[],
+ nodes: INode[]
+ view: IView
+ folder: IFolder
+ contents: INode[]
}
export type ViewActionContext = {
- view: IView,
- folder: IFolder,
- contents: INode[],
+ view: IView
+ folder: IFolder
+ contents: INode[]
}
diff --git a/lib/utils/fileSize.ts b/lib/utils/fileSize.ts
index 6bdc441fc..2c7220395 100644
--- a/lib/utils/fileSize.ts
+++ b/lib/utils/fileSize.ts
@@ -19,7 +19,7 @@ const humanListBinary = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB']
* @param binaryPrefixes True if size binary prefixes like `KiB` should be used as per IEC 80000-13
* @param base1000 Set to true to use base 1000 as per SI or used by Apple (default is base 1024 like Linux or Windows)
*/
-export function formatFileSize(size: number|string, skipSmallSizes = false, binaryPrefixes = false, base1000 = false): string {
+export function formatFileSize(size: number | string, skipSmallSizes = false, binaryPrefixes = false, base1000 = false): string {
// Binary prefixes only work with base 1024
binaryPrefixes = binaryPrefixes && !base1000
@@ -53,14 +53,14 @@ export function formatFileSize(size: number|string, skipSmallSizes = false, bina
* Returns a file size in bytes from a humanly readable string
* Note: `b` and `B` are both parsed as bytes and not as bit or byte.
*
- * @param {string} value file size in human-readable format
- * @param {boolean} forceBinary for backwards compatibility this allows values to be base 2 (so 2KB means 2048 bytes instead of 2000 bytes)
- * @return {number} or null if string could not be parsed
+ * @param value file size in human-readable format
+ * @param forceBinary for backwards compatibility this allows values to be base 2 (so 2KB means 2048 bytes instead of 2000 bytes)
+ * @return or null if string could not be parsed
*/
export function parseFileSize(value: string, forceBinary = false) {
try {
value = `${value}`.toLocaleLowerCase().replaceAll(/\s+/g, '').replaceAll(',', '.')
- } catch (e) {
+ } catch {
return null
}
diff --git a/lib/utils/fileSorting.ts b/lib/utils/fileSorting.ts
index 91bcb566d..ddbb6004e 100644
--- a/lib/utils/fileSorting.ts
+++ b/lib/utils/fileSorting.ts
@@ -20,6 +20,7 @@ export type TFilesSortingMode = typeof FilesSortingMode[keyof typeof FilesSortin
export interface FilesSortingOptions {
/**
* They key to order the files by
+ *
* @default FilesSortingMode.Name
*/
sortingMode?: TFilesSortingMode | string
@@ -31,12 +32,14 @@ export interface FilesSortingOptions {
/**
* If set to true nodes marked as favorites are ordered on top of all other nodes
+ *
* @default false
*/
sortFavoritesFirst?: boolean
/**
* If set to true folders are ordered on top of files
+ *
* @default false
*/
sortFoldersFirst?: boolean
@@ -44,6 +47,7 @@ export interface FilesSortingOptions {
/**
* Sort files and folders according to the sorting options
+ *
* @param nodes Nodes to sort
* @param options Sorting options
*/
@@ -97,7 +101,7 @@ export function sortNodes(nodes: readonly INode[], options: FilesSortingOptions
sortingOptions.sortingOrder,
// for 5: use configured sorting direction
sortingOptions.sortingOrder,
- ] as ('asc'|'desc')[]
+ ] as ('asc' | 'desc')[]
return orderBy(nodes, identifiers, orders)
}
diff --git a/lib/utils/filename-validation.ts b/lib/utils/filename-validation.ts
index b18554ab4..de4a08730 100644
--- a/lib/utils/filename-validation.ts
+++ b/lib/utils/filename-validation.ts
@@ -7,12 +7,12 @@ import { getCapabilities } from '@nextcloud/capabilities'
interface NextcloudCapabilities extends Record {
files: {
- 'bigfilechunking': boolean
+ bigfilechunking: boolean
// those are new in Nextcloud 30
- 'forbidden_filenames'?: string[]
- 'forbidden_filename_basenames'?: string[]
- 'forbidden_filename_characters'?: string[]
- 'forbidden_filename_extensions'?: string[]
+ forbidden_filenames?: string[]
+ forbidden_filename_basenames?: string[]
+ forbidden_filename_characters?: string[]
+ forbidden_filename_extensions?: string[]
}
}
@@ -42,7 +42,6 @@ interface InvalidFilenameErrorOptions {
}
export class InvalidFilenameError extends Error {
-
public constructor(options: InvalidFilenameErrorOptions) {
super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options })
}
@@ -67,11 +66,11 @@ export class InvalidFilenameError extends Error {
public get segment() {
return (this.cause as InvalidFilenameErrorOptions).segment
}
-
}
/**
* Validate a given filename
+ *
* @param filename The filename to check
* @throws {InvalidFilenameError}
*/
@@ -115,6 +114,7 @@ export function validateFilename(filename: string): void {
/**
* Check the validity of a filename
* This is a convenient wrapper for `checkFilenameValidity` to only return a boolean for the valid
+ *
* @param filename Filename to check validity
*/
export function isFilenameValid(filename: string): boolean {
diff --git a/lib/utils/filename.ts b/lib/utils/filename.ts
index d33961679..19a1be29b 100644
--- a/lib/utils/filename.ts
+++ b/lib/utils/filename.ts
@@ -8,6 +8,7 @@ import { basename, extname } from '@nextcloud/paths'
interface UniqueNameOptions {
/**
* A function that takes an index and returns a suffix to add to the file name, defaults to '(index)'
+ *
* @param index The current index to add
*/
suffix?: (index: number) => string
@@ -19,10 +20,11 @@ interface UniqueNameOptions {
/**
* Create an unique file name
+ *
* @param name The initial name to use
* @param otherNames Other names that are already used
* @param options Optional parameters for tuning the behavior
- * @return {string} Either the initial name, if unique, or the name with the suffix so that the name is unique
+ * @return Either the initial name, if unique, or the name with the suffix so that the name is unique
*/
export function getUniqueName(
name: string,
diff --git a/lib/utils/index.ts b/lib/utils/index.ts
index 22bba8f8b..a50cade86 100644
--- a/lib/utils/index.ts
+++ b/lib/utils/index.ts
@@ -9,5 +9,5 @@ export type { FilesSortingOptions } from './fileSorting.ts'
export * from './filename-validation.ts'
export { getUniqueName } from './filename.ts'
export { formatFileSize, parseFileSize } from './fileSize.ts'
-export { sortNodes, FilesSortingMode } from './fileSorting.ts'
+export { FilesSortingMode, sortNodes } from './fileSorting.ts'
export { orderBy } from './sorting.ts'
diff --git a/lib/utils/objectValidation.ts b/lib/utils/objectValidation.ts
index 48f44bbb9..004c8d267 100644
--- a/lib/utils/objectValidation.ts
+++ b/lib/utils/objectValidation.ts
@@ -21,7 +21,6 @@ export function checkOptionalProperty(
if (!Array.isArray(obj[property])) {
throw new Error(`View ${property} must be an array`)
}
- // eslint-disable-next-line valid-typeof
} else if (typeof obj[property] !== type) {
throw new Error(`View ${property} must be a ${type}`)
} else if (type === 'object' && (obj[property] === null || Array.isArray(obj[property]))) {
diff --git a/lib/utils/sorting.ts b/lib/utils/sorting.ts
index 53298e808..e06f83823 100644
--- a/lib/utils/sorting.ts
+++ b/lib/utils/sorting.ts
@@ -2,13 +2,15 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
import { getCanonicalLocale, getLanguage } from '@nextcloud/l10n'
type IdentifierFn = (v: T) => unknown
-export type SortingOrder = 'asc'|'desc'
+export type SortingOrder = 'asc' | 'desc'
/**
* Helper to create string representation
+ *
* @param value Value to stringify
*/
function stringify(value: unknown) {
diff --git a/lib/window.d.ts b/lib/window.d.ts
index 4a4bd2c6d..a0abc0dd5 100644
--- a/lib/window.d.ts
+++ b/lib/window.d.ts
@@ -4,16 +4,15 @@
*/
///
+import type { DavProperty } from './dav/index.ts'
import type {
- IFileListFilter,
- Navigation,
FileAction,
FileListAction,
Header,
+ IFileListFilter,
+ Navigation,
NewMenu,
} from './index.ts'
-
-import type { DavProperty } from './dav/index.ts'
import type { ISidebarTab } from './sidebar/index.ts'
import type { ISidebarAction } from './sidebar/SidebarAction.ts'
diff --git a/package-lock.json b/package-lock.json
index 0db183d8a..f8466a01e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,7 +22,7 @@
},
"devDependencies": {
"@codecov/vite-plugin": "^1.9.1",
- "@nextcloud/eslint-config": "^8.4.2",
+ "@nextcloud/eslint-config": "^9.0.0-rc.5",
"@nextcloud/event-bus": "^3.3.3",
"@nextcloud/typings": "^1.10.0",
"@nextcloud/vite-config": "^2.5.2",
@@ -42,16 +42,6 @@
"node": "^24.0.0"
}
},
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@acemir/cssom": {
"version": "0.9.29",
"resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.29.tgz",
@@ -213,6 +203,7 @@
"integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.2",
@@ -238,25 +229,6 @@
"url": "https://opencollective.com/babel"
}
},
- "node_modules/@babel/eslint-parser": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.9.tgz",
- "integrity": "sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
- "eslint-visitor-keys": "^2.1.0",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
- },
- "peerDependencies": {
- "@babel/core": ">=7.11.0",
- "eslint": "^7.5.0 || ^8.0.0"
- }
- },
"node_modules/@babel/generator": {
"version": "7.26.9",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
@@ -575,6 +547,7 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
},
@@ -621,23 +594,36 @@
}
],
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@es-joy/jsdoccomment": {
- "version": "0.39.4",
- "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.39.4.tgz",
- "integrity": "sha512-Jvw915fjqQct445+yron7Dufix9A+m9j1fCJYlCo1FWlRvTxa3pjJelxdSTdaLWcTwRU6vbL+NYjO4YuNIS5Qg==",
+ "version": "0.78.0",
+ "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.78.0.tgz",
+ "integrity": "sha512-rQkU5u8hNAq2NVRzHnIUUvR6arbO0b6AOlvpTNS48CkiKSn/xtNfOzBK23JE4SiW89DgvU7GtxLVgV4Vn2HBAw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "comment-parser": "1.3.1",
- "esquery": "^1.5.0",
- "jsdoc-type-pratt-parser": "~4.0.0"
+ "@types/estree": "^1.0.8",
+ "@typescript-eslint/types": "^8.46.4",
+ "comment-parser": "1.4.1",
+ "esquery": "^1.6.0",
+ "jsdoc-type-pratt-parser": "~7.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=20.11.0"
+ }
+ },
+ "node_modules/@es-joy/resolve.exports": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz",
+ "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/@esbuild/aix-ppc64": {
@@ -1083,27 +1069,30 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
"node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -1112,63 +1101,196 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
+ "node_modules/@eslint/compat": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz",
+ "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.40 || 9"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
+ "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.7",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
+ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
+ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
+ "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
+ "js-yaml": "^4.1.1",
"minimatch": "^3.1.2",
"strip-json-comments": "^3.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "type-fest": "^0.20.2"
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": ">=8"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@eslint/js": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
+ "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/json": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@eslint/json/-/json-0.14.0.tgz",
+ "integrity": "sha512-rvR/EZtvUG3p9uqrSmcDJPYSH7atmWr0RnFWN6m917MAPx82+zQgPUmDu0whPFG6XTyM0vB/hR6c1Q63OaYtCQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0",
+ "@eslint/plugin-kit": "^0.4.1",
+ "@humanwhocodes/momoa": "^3.3.10",
+ "natural-compare": "^1.4.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
+ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
+ "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@exodus/bytes": {
@@ -1223,19 +1345,28 @@
"@shikijs/vscode-textmate": "^10.0.2"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
+ "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
+ "dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.4.0"
},
"engines": {
- "node": ">=10.10.0"
+ "node": ">=18.18.0"
}
},
"node_modules/@humanwhocodes/module-importer": {
@@ -1243,7 +1374,7 @@
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12.22"
},
@@ -1252,12 +1383,29 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "node_modules/@humanwhocodes/momoa": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-3.3.10.tgz",
+ "integrity": "sha512-KWiFQpSAqEIyrTXko3hFNLeQvSK8zXlJQzhhxsyVn58WFRYXST99b3Nqnu+ttOtjds2Pl2grUHGpe2NzhPynuQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
"dev": true,
- "peer": true
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@isaacs/balanced-match": {
"version": "4.0.1",
@@ -1520,77 +1668,51 @@
}
},
"node_modules/@nextcloud/eslint-config": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.2.tgz",
- "integrity": "sha512-zsDcBxvp2Vr/BgasK/vNYJ84LOXjl4RseJPrcp93zcnaB2WnygV50Sd0nQ5JN0ngTyPjiIlGd92MMzrMTofjRA==",
+ "version": "9.0.0-rc.6",
+ "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-9.0.0-rc.6.tgz",
+ "integrity": "sha512-XTdW7GQhISQgl10QbGDraYNNnSPdo7kOkewhIb6Bns/QN3ZuYwtbMTBdMuWgh+kzRpTQWd3F4I8nTFo8D2ppXQ==",
"dev": true,
"license": "AGPL-3.0-or-later",
- "engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.26.9",
- "@babel/eslint-parser": "^7.16.5",
- "@nextcloud/eslint-plugin": "^2.2.1",
- "@vue/eslint-config-typescript": "^13.0.0",
- "eslint": "^8.27.0",
- "eslint-config-standard": "^17.1.0",
- "eslint-import-resolver-exports": "^1.0.0-beta.5",
- "eslint-import-resolver-typescript": "^3.8.0",
- "eslint-plugin-import": "^2.26.0",
- "eslint-plugin-jsdoc": "^46.2.6",
- "eslint-plugin-n": "^16.0.0",
- "eslint-plugin-promise": "^6.6.0",
- "eslint-plugin-vue": "^9.7.0",
- "typescript": "^5.0.2"
- }
- },
- "node_modules/@nextcloud/eslint-plugin": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/eslint-plugin/-/eslint-plugin-2.2.1.tgz",
- "integrity": "sha512-RX+0FxpL1h2EzjNLeW0VSGTkbyWIq7WgV7QAjtyUmDbSGwf1ds9Zy5OcRkgXRHRIu/W0gB0DhS2iz9qXHphCzA==",
- "dev": true,
- "peer": true,
"dependencies": {
- "fast-xml-parser": "^4.2.5",
- "requireindex": "^1.2.0",
- "semver": "^7.5.3"
+ "@eslint/json": "^0.14.0",
+ "@stylistic/eslint-plugin": "^5.5.0",
+ "eslint-config-flat-gitignore": "^2.1.0",
+ "eslint-plugin-antfu": "^3.1.1",
+ "eslint-plugin-jsdoc": "^61.2.1",
+ "eslint-plugin-perfectionist": "^4.15.1",
+ "eslint-plugin-vue": "^10.5.1",
+ "fast-xml-parser": "^5.3.2",
+ "globals": "^16.5.0",
+ "semver": "^7.7.3",
+ "sort-package-json": "^3.4.0",
+ "typescript-eslint": "^8.46.4"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.19 || ^22 || ^24"
},
"peerDependencies": {
- "eslint": ">=7.0.0"
+ "eslint": ">=9"
}
},
- "node_modules/@nextcloud/eslint-plugin/node_modules/fast-xml-parser": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
- "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
+ "node_modules/@nextcloud/eslint-config/node_modules/globals": {
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz",
+ "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
"license": "MIT",
- "peer": true,
- "dependencies": {
- "strnum": "^1.1.1"
+ "engines": {
+ "node": ">=18"
},
- "bin": {
- "fxparser": "src/cli/cli.js"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@nextcloud/eslint-plugin/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "node_modules/@nextcloud/eslint-config/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -1598,20 +1720,6 @@
"node": ">=10"
}
},
- "node_modules/@nextcloud/eslint-plugin/node_modules/strnum": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
- "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT",
- "peer": true
- },
"node_modules/@nextcloud/event-bus": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-3.3.3.tgz",
@@ -1818,65 +1926,6 @@
"spdx-license-ids": "^3.0.0"
}
},
- "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
- "version": "5.1.1-v1",
- "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
- "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "eslint-scope": "5.1.1"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nolyfill/is-core-module": {
- "version": "1.0.39",
- "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
- "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=12.4.0"
- }
- },
"node_modules/@octokit/auth-token": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
@@ -1893,6 +1942,7 @@
"integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
@@ -2057,7 +2107,6 @@
"hasInstallScript": true,
"license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"detect-libc": "^1.0.3",
"is-glob": "^4.0.3",
@@ -2100,7 +2149,6 @@
"os": [
"android"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2122,7 +2170,6 @@
"os": [
"darwin"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2144,7 +2191,6 @@
"os": [
"darwin"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2166,7 +2212,6 @@
"os": [
"freebsd"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2188,7 +2233,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2210,7 +2254,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2232,7 +2275,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2254,7 +2296,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2276,7 +2317,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2298,7 +2338,6 @@
"os": [
"linux"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2320,7 +2359,6 @@
"os": [
"win32"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2342,7 +2380,6 @@
"os": [
"win32"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2364,7 +2401,6 @@
"os": [
"win32"
],
- "peer": true,
"engines": {
"node": ">= 10.0.0"
},
@@ -2797,6 +2833,7 @@
"integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"json-schema-traverse": "^1.0.0",
@@ -2968,6 +3005,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@sindresorhus/base62": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz",
+ "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@standard-schema/spec": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
@@ -2975,6 +3025,40 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@stylistic/eslint-plugin": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.7.0.tgz",
+ "integrity": "sha512-PsSugIf9ip1H/mWKj4bi/BlEoerxXAda9ByRFsYuwsmr6af9NxJL0AaiNXs8Le7R21QR5KMiD/KdxZZ71LjAxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/types": "^8.52.0",
+ "eslint-visitor-keys": "^5.0.0",
+ "espree": "^11.0.0",
+ "estraverse": "^5.3.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=9.0.0"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@tokenizer/token": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
@@ -3045,12 +3129,12 @@
"@types/sizzle": "*"
}
},
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/@types/node": {
"version": "25.0.5",
@@ -3058,6 +3142,7 @@
"integrity": "sha512-FuLxeLuSVOqHPxSN1fkcD8DLU21gAP7nCKqGRJ/FglbCUBs0NYN6TpHcdmyLeh8C0KwGIaZQJSv+OYG+KZz+Gw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"undici-types": "~7.16.0"
}
@@ -3088,122 +3173,160 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.9.0.tgz",
- "integrity": "sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.52.0.tgz",
+ "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "7.9.0",
- "@typescript-eslint/type-utils": "7.9.0",
- "@typescript-eslint/utils": "7.9.0",
- "@typescript-eslint/visitor-keys": "7.9.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.3.1",
+ "@eslint-community/regexpp": "^4.12.2",
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/type-utils": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
+ "ignore": "^7.0.5",
"natural-compare": "^1.4.0",
- "ts-api-utils": "^1.3.0"
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^7.0.0",
- "eslint": "^8.56.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "@typescript-eslint/parser": "^8.52.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.9.0.tgz",
- "integrity": "sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.52.0.tgz",
+ "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "7.9.0",
- "@typescript-eslint/types": "7.9.0",
- "@typescript-eslint/typescript-estree": "7.9.0",
- "@typescript-eslint/visitor-keys": "7.9.0",
- "debug": "^4.3.4"
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
+ "debug": "^4.4.3"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.56.0"
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.52.0.tgz",
+ "integrity": "sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.52.0",
+ "@typescript-eslint/types": "^8.52.0",
+ "debug": "^4.4.3"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.9.0.tgz",
- "integrity": "sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.52.0.tgz",
+ "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "7.9.0",
- "@typescript-eslint/visitor-keys": "7.9.0"
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.52.0.tgz",
+ "integrity": "sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.9.0.tgz",
- "integrity": "sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.52.0.tgz",
+ "integrity": "sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "7.9.0",
- "@typescript-eslint/utils": "7.9.0",
- "debug": "^4.3.4",
- "ts-api-utils": "^1.3.0"
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0",
+ "debug": "^4.4.3",
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.56.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/types": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.9.0.tgz",
- "integrity": "sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz",
+ "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -3211,32 +3334,31 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.9.0.tgz",
- "integrity": "sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.52.0.tgz",
+ "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "7.9.0",
- "@typescript-eslint/visitor-keys": "7.9.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
- "ts-api-utils": "^1.3.0"
+ "@typescript-eslint/project-service": "8.52.0",
+ "@typescript-eslint/tsconfig-utils": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
+ "debug": "^4.4.3",
+ "minimatch": "^9.0.5",
+ "semver": "^7.7.3",
+ "tinyglobby": "^0.2.15",
+ "ts-api-utils": "^2.4.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
@@ -3245,17 +3367,16 @@
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -3267,11 +3388,11 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -3280,40 +3401,41 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.9.0.tgz",
- "integrity": "sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.52.0.tgz",
+ "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "7.9.0",
- "@typescript-eslint/types": "7.9.0",
- "@typescript-eslint/typescript-estree": "7.9.0"
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^8.56.0"
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.9.0.tgz",
- "integrity": "sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.52.0.tgz",
+ "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "7.9.0",
- "eslint-visitor-keys": "^3.4.3"
+ "@typescript-eslint/types": "8.52.0",
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -3321,25 +3443,18 @@
}
},
"node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true,
- "peer": true
- },
"node_modules/@vitejs/plugin-vue": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.1.tgz",
@@ -3564,7 +3679,6 @@
"integrity": "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/parser": "^7.28.0",
"@vue/compiler-core": "3.5.18",
@@ -3583,7 +3697,6 @@
"integrity": "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.18",
"@vue/shared": "3.5.18"
@@ -3600,31 +3713,6 @@
"he": "^1.2.0"
}
},
- "node_modules/@vue/eslint-config-typescript": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz",
- "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@typescript-eslint/eslint-plugin": "^7.1.1",
- "@typescript-eslint/parser": "^7.1.1",
- "vue-eslint-parser": "^9.3.1"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "peerDependencies": {
- "eslint": "^8.56.0",
- "eslint-plugin-vue": "^9.0.0",
- "typescript": ">=4.7.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"node_modules/@vue/language-core": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.0.tgz",
@@ -3682,7 +3770,6 @@
"integrity": "sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/shared": "3.5.18"
}
@@ -3693,7 +3780,6 @@
"integrity": "sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/reactivity": "3.5.18",
"@vue/shared": "3.5.18"
@@ -3705,7 +3791,6 @@
"integrity": "sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/reactivity": "3.5.18",
"@vue/runtime-core": "3.5.18",
@@ -3719,7 +3804,6 @@
"integrity": "sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.5.18",
"@vue/shared": "3.5.18"
@@ -3736,10 +3820,12 @@
"license": "MIT"
},
"node_modules/acorn": {
- "version": "8.14.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
- "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
+ "license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -3752,7 +3838,7 @@
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
@@ -3771,7 +3857,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -3832,16 +3918,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -3863,7 +3939,7 @@
"resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
"integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
}
@@ -3874,20 +3950,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/array-find-index": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
@@ -3898,95 +3960,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/array-includes": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
- "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "get-intrinsic": "^1.1.3",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array.prototype.flat": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
- "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
- "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz",
- "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/asn1.js": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
@@ -4106,7 +4079,7 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
"dev": true,
- "peer": true
+ "license": "ISC"
},
"node_modules/brace-expansion": {
"version": "1.1.12",
@@ -4114,7 +4087,6 @@
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -4125,7 +4097,7 @@
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
- "peer": true,
+ "optional": true,
"dependencies": {
"fill-range": "^7.1.1"
},
@@ -4302,6 +4274,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001688",
"electron-to-chromium": "^1.5.73",
@@ -4365,19 +4338,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
@@ -4385,52 +4345,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/builtins": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "semver": "^7.0.0"
- }
- },
- "node_modules/builtins/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/builtins/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/builtins/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "peer": true
- },
"node_modules/byte-length": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz",
@@ -4491,7 +4405,7 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -4577,7 +4491,6 @@
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"readdirp": "^4.0.1"
},
@@ -4624,11 +4537,11 @@
"license": "MIT"
},
"node_modules/comment-parser": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz",
- "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
+ "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">= 12.0.0"
}
@@ -4652,7 +4565,7 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/confbox": {
"version": "0.2.2",
@@ -4760,7 +4673,6 @@
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -4831,7 +4743,7 @@
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"bin": {
"cssesc": "bin/cssesc"
},
@@ -4859,8 +4771,7 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/data-uri-to-buffer": {
"version": "4.0.1",
@@ -4921,7 +4832,7 @@
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/define-data-property": {
"version": "1.1.4",
@@ -4975,6 +4886,19 @@
"minimalistic-assert": "^1.0.0"
}
},
+ "node_modules/detect-indent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.2.tgz",
+ "integrity": "sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
@@ -4982,7 +4906,6 @@
"dev": true,
"license": "Apache-2.0",
"optional": true,
- "peer": true,
"bin": {
"detect-libc": "bin/detect-libc.js"
},
@@ -4990,6 +4913,19 @@
"node": ">=0.10"
}
},
+ "node_modules/detect-newline": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz",
+ "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@@ -5009,32 +4945,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/domain-browser": {
"version": "4.22.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz",
@@ -5101,21 +5011,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/enhanced-resolve": {
- "version": "5.18.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
- "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -5128,60 +5023,6 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/es-abstract": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz",
- "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.1",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.1",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.0",
- "safe-array-concat": "^1.0.0",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
@@ -5221,49 +5062,6 @@
"node": ">= 0.4"
}
},
- "node_modules/es-set-tostringtag": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-shim-unscopables": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
- "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has": "^1.0.3"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/esbuild": {
"version": "0.25.3",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
@@ -5319,462 +5117,218 @@
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/eslint": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
+ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.0",
- "@humanwhocodes/config-array": "^0.11.14",
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.1",
+ "@eslint/config-helpers": "^0.4.2",
+ "@eslint/core": "^0.17.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.39.2",
+ "@eslint/plugin-kit": "^0.4.1",
+ "@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
+ "cross-spawn": "^7.0.6",
"debug": "^4.3.2",
- "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
+ "file-entry-cache": "^8.0.0",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
+ "optionator": "^0.9.3"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-standard": {
- "version": "17.1.0",
- "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
- "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true,
- "engines": {
- "node": ">=12.0.0"
+ "url": "https://eslint.org/donate"
},
"peerDependencies": {
- "eslint": "^8.0.1",
- "eslint-plugin-import": "^2.25.2",
- "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
- "eslint-plugin-promise": "^6.0.0"
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-import-resolver-exports": {
- "version": "1.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.5.tgz",
- "integrity": "sha512-o6t0w7muUpXr7MkUVzD5igQoDfAQvTmcPp8HEAJdNF8eOuAO+yn6I/TTyMxz9ecCwzX7e02vzlkHURoScUuidg==",
+ "node_modules/eslint-config-flat-gitignore": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-flat-gitignore/-/eslint-config-flat-gitignore-2.1.0.tgz",
+ "integrity": "sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "resolve.exports": "^2.0.0"
+ "@eslint/compat": "^1.2.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
- "eslint": "*",
- "eslint-plugin-import": "*"
+ "eslint": "^9.5.0"
}
},
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
- "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.11.0",
- "resolve": "^1.22.1"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/eslint-plugin-antfu": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-3.1.3.tgz",
+ "integrity": "sha512-Az1QuqQJ/c2efWCxVxF249u3D4AcAu1Y3VCGAlJm+x4cgnn1ybUAnCT5DWVcogeaWduQKeVw07YFydVTOF4xDw==",
"dev": true,
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "eslint": "*"
}
},
- "node_modules/eslint-import-resolver-typescript": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.3.tgz",
- "integrity": "sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ==",
+ "node_modules/eslint-plugin-jsdoc": {
+ "version": "61.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.7.1.tgz",
+ "integrity": "sha512-36DpldF95MlTX//n3/naULFVt8d1cV4jmSkx7ZKrE9ikkKHAgMLesuWp1SmwpVwAs5ndIM6abKd6PeOYZUgdWg==",
"dev": true,
- "license": "ISC",
- "peer": true,
+ "license": "BSD-3-Clause",
"dependencies": {
- "@nolyfill/is-core-module": "1.0.39",
- "debug": "^4.3.7",
- "enhanced-resolve": "^5.15.0",
- "get-tsconfig": "^4.10.0",
- "is-bun-module": "^1.0.2",
- "stable-hash": "^0.0.4",
- "tinyglobby": "^0.2.12"
+ "@es-joy/jsdoccomment": "~0.78.0",
+ "@es-joy/resolve.exports": "1.2.0",
+ "are-docs-informative": "^0.0.2",
+ "comment-parser": "1.4.1",
+ "debug": "^4.4.3",
+ "escape-string-regexp": "^4.0.0",
+ "espree": "^11.0.0",
+ "esquery": "^1.7.0",
+ "html-entities": "^2.6.0",
+ "object-deep-merge": "^2.0.0",
+ "parse-imports-exports": "^0.2.4",
+ "semver": "^7.7.3",
+ "spdx-expression-parse": "^4.0.0",
+ "to-valid-identifier": "^1.0.0"
},
"engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ "node": ">=20.11.0"
},
"peerDependencies": {
- "eslint": "*",
- "eslint-plugin-import": "*",
- "eslint-plugin-import-x": "*"
- },
- "peerDependenciesMeta": {
- "eslint-plugin-import": {
- "optional": true
- },
- "eslint-plugin-import-x": {
- "optional": true
- }
+ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
- "node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "node_modules/eslint-plugin-jsdoc/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "peer": true,
- "dependencies": {
- "debug": "^3.2.7"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
+ "node": ">=10"
}
},
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
+ "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "ms": "^2.1.1"
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
}
},
- "node_modules/eslint-plugin-es-x": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.2.0.tgz",
- "integrity": "sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==",
+ "node_modules/eslint-plugin-perfectionist": {
+ "version": "4.15.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.15.1.tgz",
+ "integrity": "sha512-MHF0cBoOG0XyBf7G0EAFCuJJu4I18wy0zAoT1OHfx2o6EOx1EFTIzr2HGeuZa1kDcusoX0xJ9V7oZmaeFd773Q==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.1.2",
- "@eslint-community/regexpp": "^4.6.0"
+ "@typescript-eslint/types": "^8.38.0",
+ "@typescript-eslint/utils": "^8.38.0",
+ "natural-orderby": "^5.0.0"
},
"engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
+ "node": "^18.0.0 || >=20.0.0"
},
"peerDependencies": {
- "eslint": ">=8"
+ "eslint": ">=8.45.0"
}
},
- "node_modules/eslint-plugin-import": {
- "version": "2.27.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
- "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
+ "node_modules/eslint-plugin-vue": {
+ "version": "10.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.6.2.tgz",
+ "integrity": "sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "array.prototype.flatmap": "^1.3.1",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.7",
- "eslint-module-utils": "^2.7.4",
- "has": "^1.0.3",
- "is-core-module": "^2.11.0",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.values": "^1.1.6",
- "resolve": "^1.22.1",
- "semver": "^6.3.0",
- "tsconfig-paths": "^3.14.1"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^7.1.0",
+ "semver": "^7.6.3",
+ "xml-name-validator": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-jsdoc": {
- "version": "46.4.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.4.tgz",
- "integrity": "sha512-D8TGPOkq3bnzmYmA7Q6jdsW+Slx7CunhJk1tlouVq6wJjlP1p6eigZPvxFn7aufud/D66xBsNVMhkDQEuqumMg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@es-joy/jsdoccomment": "~0.39.4",
- "are-docs-informative": "^0.0.2",
- "comment-parser": "1.3.1",
- "debug": "^4.3.4",
- "escape-string-regexp": "^4.0.0",
- "esquery": "^1.5.0",
- "is-builtin-module": "^3.2.1",
- "semver": "^7.5.1",
- "spdx-expression-parse": "^3.0.1"
- },
- "engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-jsdoc/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "@stylistic/eslint-plugin": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
+ "@typescript-eslint/parser": "^7.0.0 || ^8.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "vue-eslint-parser": "^10.0.0"
},
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-jsdoc/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "peer": true
- },
- "node_modules/eslint-plugin-n": {
- "version": "16.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.1.tgz",
- "integrity": "sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "builtins": "^5.0.1",
- "eslint-plugin-es-x": "^7.1.0",
- "ignore": "^5.2.4",
- "is-core-module": "^2.12.1",
- "minimatch": "^3.1.2",
- "resolve": "^1.22.2",
- "semver": "^7.5.3"
- },
- "engines": {
- "node": ">=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-n/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-n/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-n/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "peer": true
- },
- "node_modules/eslint-plugin-promise": {
- "version": "6.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz",
- "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
- }
- },
- "node_modules/eslint-plugin-vue": {
- "version": "9.26.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.26.0.tgz",
- "integrity": "sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "globals": "^13.24.0",
- "natural-compare": "^1.4.0",
- "nth-check": "^2.1.1",
- "postcss-selector-parser": "^6.0.15",
- "semver": "^7.6.0",
- "vue-eslint-parser": "^9.4.2",
- "xml-name-validator": "^4.0.0"
- },
- "engines": {
- "node": "^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
- }
- },
- "node_modules/eslint-plugin-vue/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependenciesMeta": {
+ "@stylistic/eslint-plugin": {
+ "optional": true
+ },
+ "@typescript-eslint/parser": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-vue/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -5783,135 +5337,90 @@
}
},
"node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=10"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "node_modules/eslint-visitor-keys": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz",
+ "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==",
"dev": true,
- "peer": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint/node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "node_modules/eslint/node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "type-fest": "^0.20.2"
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": ">=8"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-11.0.0.tgz",
+ "integrity": "sha512-+gMeWRrIh/NsG+3NaLeWHuyeyk70p2tbvZIWBYcqQ4/7Xvars6GYTZNhF1sIeLcc6Wb11He5ffz3hsHyXFrw5A==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.9.0",
+ "acorn": "^8.15.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^5.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
"dev": true,
- "peer": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -5919,22 +5428,12 @@
"node": ">=0.10"
}
},
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -5942,22 +5441,12 @@
"node": ">=4.0"
}
},
- "node_modules/esrecurse/node_modules/estraverse": {
+ "node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
@@ -5983,7 +5472,7 @@
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -6032,49 +5521,19 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
- "node_modules/fast-glob": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/fast-uri": {
"version": "3.0.6",
@@ -6112,16 +5571,6 @@
"fxparser": "src/cli/cli.js"
}
},
- "node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
"node_modules/fetch-blob": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
@@ -6145,16 +5594,16 @@
}
},
"node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/fill-range": {
@@ -6162,7 +5611,7 @@
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
- "peer": true,
+ "optional": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -6187,25 +5636,25 @@
}
},
"node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16"
}
},
"node_modules/flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
"dev": true,
- "peer": true
+ "license": "ISC"
},
"node_modules/for-each": {
"version": "0.3.5",
@@ -6249,13 +5698,6 @@
"node": ">=14.14"
}
},
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true,
- "peer": true
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -6267,43 +5709,14 @@
"darwin"
],
"engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -6366,56 +5779,14 @@
"node": ">= 0.4"
}
},
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-tsconfig": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz",
- "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==",
+ "node_modules/git-hooks-list": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-4.1.1.tgz",
+ "integrity": "sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==",
"dev": true,
"license": "MIT",
- "peer": true,
- "dependencies": {
- "resolve-pkg-maps": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/fisker/git-hooks-list?sponsor=1"
}
},
"node_modules/glob-parent": {
@@ -6423,7 +5794,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -6441,43 +5812,6 @@
"node": ">=4"
}
},
- "node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
@@ -6497,13 +5831,6 @@
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true,
- "peer": true
- },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -6516,16 +5843,6 @@
"node": ">= 0.4.0"
}
},
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true,
- "peer": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -6548,19 +5865,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
@@ -6667,6 +5971,23 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}
},
+ "node_modules/html-entities": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz",
+ "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -6729,11 +6050,11 @@
"license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -6743,15 +6064,14 @@
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
"integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -6778,43 +6098,17 @@
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
- "node_modules/internal-slot": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/is-arguments": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
@@ -6832,97 +6126,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
- "node_modules/is-builtin-module": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "builtin-modules": "^3.3.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-bun-module": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz",
- "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "semver": "^7.6.3"
- }
- },
- "node_modules/is-bun-module/node_modules/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@@ -6947,28 +6155,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -6998,7 +6189,6 @@
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
- "peer": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -7023,53 +6213,27 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
- "peer": true,
+ "optional": true,
"engines": {
"node": ">=0.12.0"
}
},
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
"dev": true,
- "peer": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-potential-custom-element-name": {
@@ -7098,35 +6262,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-svg": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-6.1.0.tgz",
@@ -7139,23 +6274,7 @@
"node": ">=20"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-typed-array": {
@@ -7174,19 +6293,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
@@ -7198,7 +6304,7 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true,
- "peer": true
+ "license": "ISC"
},
"node_modules/isomorphic-timers-promises": {
"version": "1.0.1",
@@ -7323,7 +6429,6 @@
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"argparse": "^2.0.1"
},
@@ -7332,13 +6437,13 @@
}
},
"node_modules/jsdoc-type-pratt-parser": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
- "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.0.0.tgz",
+ "integrity": "sha512-c7YbokssPOSHmqTbSAmTtnVgAVa/7lumWNYqomgd5KOMyPrRve2anx6lonfOsXEQacqF9FKVUj7bLg4vRSvdYA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=12.0.0"
+ "node": ">=20.0.0"
}
},
"node_modules/jsdom": {
@@ -7403,19 +6508,26 @@
"node": ">=6"
}
},
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/json5": {
"version": "2.2.3",
@@ -7442,6 +6554,16 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/kolorist": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
@@ -7459,7 +6581,7 @@
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -7521,7 +6643,7 @@
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/lru-cache": {
"version": "5.1.1",
@@ -7664,23 +6786,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/micromatch": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT",
- "peer": true,
+ "optional": true,
"dependencies": {
"braces": "^3.0.3",
"picomatch": "^2.3.1"
@@ -7729,7 +6841,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -7737,16 +6849,6 @@
"node": "*"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "peer": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/mlly": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz",
@@ -7826,7 +6928,17 @@
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true,
- "peer": true
+ "license": "MIT"
+ },
+ "node_modules/natural-orderby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-5.0.0.tgz",
+ "integrity": "sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/nested-property": {
"version": "4.0.0",
@@ -7839,8 +6951,7 @@
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
"dev": true,
"license": "MIT",
- "optional": true,
- "peer": true
+ "optional": true
},
"node_modules/node-domexception": {
"version": "1.0.0",
@@ -7934,7 +7045,7 @@
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0"
},
@@ -7942,6 +7053,13 @@
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
+ "node_modules/object-deep-merge": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz",
+ "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/object-inspect": {
"version": "1.13.3",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
@@ -7999,24 +7117,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/object.values": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
- "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/obug": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
@@ -8038,18 +7138,18 @@
}
},
"node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
@@ -8117,7 +7217,7 @@
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
@@ -8142,6 +7242,23 @@
"node": ">= 0.10"
}
},
+ "node_modules/parse-imports-exports": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz",
+ "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse-statements": "1.0.11"
+ }
+ },
+ "node_modules/parse-statements": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz",
+ "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/parse5": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz",
@@ -8183,22 +7300,12 @@
"node": ">=8"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -8214,16 +7321,6 @@
"resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz",
"integrity": "sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA=="
},
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/pathe": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
@@ -8260,7 +7357,7 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
- "peer": true,
+ "optional": true,
"engines": {
"node": ">=8.6"
},
@@ -8323,6 +7420,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -8333,11 +7431,11 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.16",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
- "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -8351,7 +7449,7 @@
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
@@ -8460,27 +7558,6 @@
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
},
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true
- },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -8523,7 +7600,6 @@
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 14.18.0"
},
@@ -8532,24 +7608,6 @@
"url": "https://paulmillr.com/funding/"
}
},
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
- "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -8560,21 +7618,24 @@
"node": ">=0.10.0"
}
},
- "node_modules/requireindex": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz",
- "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.5"
- }
- },
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
+ "node_modules/reserved-identifiers": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz",
+ "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/resolve": {
"version": "1.22.2",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
@@ -8597,57 +7658,9 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve-pkg-maps": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
- "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
- "dev": true,
"license": "MIT",
- "peer": true,
- "funding": {
- "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
- }
- },
- "node_modules/resolve.exports": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "peer": true,
"engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=4"
}
},
"node_modules/ripemd160": {
@@ -8733,6 +7746,7 @@
"integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
@@ -8865,49 +7879,6 @@
"rollup": "^4.0.0"
}
},
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true,
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-array-concat": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz",
- "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -9046,7 +8017,7 @@
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -9059,7 +8030,7 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -9133,28 +8104,60 @@
"object-inspect": "^1.13.3",
"side-channel-map": "^1.0.1"
},
- "engines": {
- "node": ">= 0.4"
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/sort-object-keys": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-2.0.1.tgz",
+ "integrity": "sha512-R89fO+z3x7hiKPXX5P0qim+ge6Y60AjtlW+QQpRozrrNcR1lw9Pkpm5MLB56HoNvdcLHL4wbpq16OcvGpEDJIg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sort-package-json": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.0.tgz",
+ "integrity": "sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-indent": "^7.0.2",
+ "detect-newline": "^4.0.1",
+ "git-hooks-list": "^4.1.1",
+ "is-plain-obj": "^4.1.0",
+ "semver": "^7.7.3",
+ "sort-object-keys": "^2.0.1",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "sort-package-json": "cli.js"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=20"
}
},
- "node_modules/siginfo": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "node_modules/sort-package-json/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "peer": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
"node_modules/source-map": {
@@ -9246,14 +8249,6 @@
"dev": true,
"license": "BSD-3-Clause"
},
- "node_modules/stable-hash": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz",
- "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/stackback": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
@@ -9312,67 +8307,6 @@
"node": ">=0.6.19"
}
},
- "node_modules/string.prototype.trim": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
- "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -9448,24 +8382,6 @@
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true
},
- "node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true,
- "peer": true
- },
"node_modules/timers-browserify": {
"version": "2.0.12",
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
@@ -9537,6 +8453,7 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=12"
},
@@ -9594,7 +8511,7 @@
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
- "peer": true,
+ "optional": true,
"dependencies": {
"is-number": "^7.0.0"
},
@@ -9602,6 +8519,23 @@
"node": ">=8.0"
}
},
+ "node_modules/to-valid-identifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz",
+ "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/base62": "^1.0.0",
+ "reserved-identifiers": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/tough-cookie": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz",
@@ -9629,52 +8563,16 @@
}
},
"node_modules/ts-api-utils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
- "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz",
+ "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
- "node": ">=16"
+ "node": ">=18.12"
},
"peerDependencies": {
- "typescript": ">=4.2.0"
- }
- },
- "node_modules/tsconfig-paths": {
- "version": "3.14.2",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
- "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- }
- },
- "node_modules/tsconfig-paths/node_modules/json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/tsconfig-paths/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4"
+ "typescript": ">=4.8.4"
}
},
"node_modules/tslib": {
@@ -9705,7 +8603,7 @@
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -9713,19 +8611,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/typed-array-buffer": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
@@ -9741,60 +8626,6 @@
"node": ">= 0.4"
}
},
- "node_modules/typed-array-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
- "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
- "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/typedoc": {
"version": "0.28.15",
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.15.tgz",
@@ -9860,6 +8691,7 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -9868,6 +8700,30 @@
"node": ">=14.17"
}
},
+ "node_modules/typescript-eslint": {
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.52.0.tgz",
+ "integrity": "sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.52.0",
+ "@typescript-eslint/parser": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
"node_modules/typescript-event-target": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.2.tgz",
@@ -9887,22 +8743,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/undici": {
"version": "5.29.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
@@ -10057,6 +8897,7 @@
"integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"esbuild": "^0.27.0",
"fdir": "^6.5.0",
@@ -10670,6 +9511,7 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=12"
},
@@ -10683,6 +9525,7 @@
"integrity": "sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@vitest/expect": "4.0.16",
"@vitest/mocker": "4.0.16",
@@ -10806,76 +9649,66 @@
}
},
"node_modules/vue-eslint-parser": {
- "version": "9.4.2",
- "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
- "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz",
+ "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==",
"dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
- "debug": "^4.3.4",
- "eslint-scope": "^7.1.1",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.3.1",
- "esquery": "^1.4.0",
- "lodash": "^4.17.21",
- "semver": "^7.3.6"
+ "debug": "^4.4.0",
+ "eslint-scope": "^8.2.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.6.0",
+ "semver": "^7.6.3"
},
"engines": {
- "node": "^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
},
"peerDependencies": {
- "eslint": ">=6.0.0"
+ "eslint": "^8.57.0 || ^9.0.0"
}
},
- "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
- "peer": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "node_modules/vue-eslint-parser/node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
"dev": true,
- "peer": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/vue-eslint-parser/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/vue-eslint-parser/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -11048,7 +9881,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
- "peer": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -11059,23 +9892,6 @@
"node": ">= 8"
}
},
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/which-typed-array": {
"version": "1.1.19",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
@@ -11115,6 +9931,16 @@
"node": ">=8"
}
},
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -11148,7 +9974,7 @@
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
"integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
"dev": true,
- "peer": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12"
}
diff --git a/package.json b/package.json
index 1faab62f9..bd5fa504a 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,7 @@
},
"devDependencies": {
"@codecov/vite-plugin": "^1.9.1",
- "@nextcloud/eslint-config": "^8.4.2",
+ "@nextcloud/eslint-config": "^9.0.0-rc.5",
"@nextcloud/event-bus": "^3.3.3",
"@nextcloud/typings": "^1.10.0",
"@nextcloud/vite-config": "^2.5.2",