Skip to content

Commit f43b289

Browse files
authored
Merge pull request #11519 from owncloud/chore/bump-eslint-to-v9
chore: bump eslint to v9
2 parents a3efbb1 + bf5d2e2 commit f43b289

File tree

40 files changed

+464
-596
lines changed

40 files changed

+464
-596
lines changed

.eslintrc.json

-5
This file was deleted.

eslint.config.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import owncloudersConfig from '@ownclouders/eslint-config'
2+
3+
export default [...owncloudersConfig]

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
"core-js": "3.30.2",
6262
"cucumber-html-reporter": "7.1.1",
6363
"ejs": "3.1.10",
64-
"eslint": "8.56.0",
64+
"eslint": "9.9.1",
6565
"git-repo-info": "2.1.1",
6666
"glob": "11.0.0",
6767
"happy-dom": "13.3.1",

packages/design-system/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
"style-loader": "^4.0.0",
9090
"style-value-types": "^5.0.0",
9191
"stylelint": "16.2.1",
92-
"stylelint-config-sass-guidelines": "^11.0.0",
92+
"stylelint-config-sass-guidelines": "^12.0.0",
9393
"stylelint-config-standard": "^36.0.0",
9494
"tinycolor2": "^1.6.0",
9595
"ts-loader": "^9.5.1",

packages/design-system/src/components/OcApplicationIcon/OcApplicationIcon.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export default defineComponent({
5858
return !!props.colorSecondary
5959
})
6060
const generatedHashedPrimaryColor = computed((): string => {
61-
let hashedColor = generateHashedColorForString(props.icon)
61+
const hashedColor = generateHashedColorForString(props.icon)
6262
return rgbToHex(setDesiredContrastRatio(hexToRgb(hashedColor), hexToRgb('#ffffff'), 4))
6363
})
6464
const iconStyle = computed(() => {

packages/design-system/src/components/OcCheckbox/OcCheckbox.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export default defineComponent({
5050
*
5151
* Can be any type, but most common is boolean for singular checkbox use, or array when used in a group of checkboxes.
5252
**/
53-
// eslint-disable-next-line vue/require-prop-types
53+
5454
modelValue: {
5555
type: [Boolean, Array] as PropType<boolean | unknown[]>,
5656
required: false,

packages/design-system/src/components/OcGrid/OcGrid.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export default defineComponent({
3535
},
3636
computed: {
3737
classes() {
38-
let c = []
38+
const c = []
3939
4040
c.push('oc-grid-' + this.gutter)
4141

packages/design-system/src/components/OcRadio/OcRadio.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export default defineComponent({
5050
*
5151
* Can be any type.
5252
**/
53-
// eslint-disable-next-line vue/require-prop-types
53+
5454
modelValue: {
5555
type: [String, Number, Boolean, Object],
5656
required: false,

packages/design-system/src/components/OcTextInput/OcTextInput.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ export default defineComponent({
288288
additionalAttrs['has-error'] = !!this.errorMessage
289289
}
290290
// Exclude listeners for events which are handled via methods in this component
291-
// eslint-disable-next-line no-unused-vars
291+
292292
const { change, input, focus, class: classes, ...attrs } = this.$attrs
293293
294294
return { ...attrs, ...additionalAttrs }

packages/design-system/src/index.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ describe('Depending on what gets passed into the theming options', () => {
5050
)
5151
expect(document.documentElement.style.getPropertyValue('--oc-space-small')).toMatch('20px')
5252
})
53-
// eslint-disable-next-line
53+
5454
// it('Defaults to ODS colors where none are passed in theming options', () => {
5555
// expect(document.documentElement.style.getPropertyValue('--oc-color')).toMatch("green")
5656
// expect(document.documentElement.style.getPropertyValue('--oc-brand-primary-hover')).toMatch('#223959')

packages/design-system/src/utils/webFontLoader.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Web Font Loader takes care of ownCloud Design System’s font loading.
33
* For full documentation, see: https://github.com/typekit/webfontloader
44
*/
5-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
5+
66
// @ts-ignore
77
import WebFont from 'webfontloader'
88

packages/eslint-config/index.js

+55-56
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,59 @@
1-
module.exports = {
2-
env: {
3-
browser: true,
4-
es6: true,
5-
amd: true
6-
},
7-
extends: ['plugin:vue/vue3-recommended', 'plugin:prettier-vue/recommended'],
8-
parser: 'vue-eslint-parser',
9-
parserOptions: {
10-
parser: {
11-
js: '@babel/eslint-parser',
12-
ts: '@typescript-eslint/parser'
13-
},
14-
requireConfigFile: false,
15-
sourceType: 'module'
16-
},
17-
rules: {
18-
/**
19-
* TODO: fix project import issues and then enable it
20-
* 'sort-imports': 'warn',
21-
*/
22-
'require-await': 'warn',
23-
'no-new': 'off',
24-
'node/no-callback-literal': 'off',
25-
'unused-imports/no-unused-imports': 'error',
26-
'nonblock-statement-body-position': ['error', 'below'],
27-
curly: 'error',
1+
import unusedImports from 'eslint-plugin-unused-imports'
2+
import eslintConfigPrettier from 'eslint-plugin-prettier/recommended'
3+
import tseslint from 'typescript-eslint'
4+
import globals from 'globals'
5+
import pluginVue from 'eslint-plugin-vue'
6+
7+
export default [
8+
...tseslint.configs.recommended,
9+
...pluginVue.configs['flat/recommended'],
10+
eslintConfigPrettier,
2811

29-
// Vue 3 rules: (need to be fixed, but can be done incrementally)
30-
'vue/no-deprecated-events-api': 'warn'
31-
},
32-
globals: {
33-
require: false,
34-
requirejs: false
35-
},
36-
plugins: ['unused-imports'],
37-
overrides: [
38-
{
39-
files: ['**/*.vue'],
40-
extends: ['plugin:vue/recommended', 'plugin:prettier-vue/recommended'],
41-
rules: {
42-
'vue/multi-word-component-names': 'warn',
43-
'vue/no-multiple-template-root': 'off',
44-
'vue/no-v-model-argument': 'off',
45-
'vue/no-v-text-v-html-on-component': 'warn'
12+
{
13+
languageOptions: {
14+
ecmaVersion: 5,
15+
globals: {
16+
...globals.browser,
17+
...globals.amd,
18+
require: false,
19+
requirejs: false
20+
},
21+
parserOptions: {
22+
parser: {
23+
js: '@babel/eslint-parser',
24+
ts: '@typescript-eslint/parser',
25+
vue: 'vue-eslint-parser'
26+
},
27+
requireConfigFile: false,
28+
sourceType: 'module'
4629
}
4730
},
48-
{
49-
files: ['**/*.ts'],
50-
parser: '@typescript-eslint/parser',
51-
extends: ['plugin:@typescript-eslint/recommended'],
52-
rules: {
53-
'@typescript-eslint/no-extra-semi': 'off',
54-
'@typescript-eslint/no-explicit-any': 'off',
55-
'@typescript-eslint/no-unused-vars': 'warn',
56-
'prefer-const': 'warn'
57-
}
31+
32+
plugins: {
33+
'unused-imports': unusedImports
34+
},
35+
36+
rules: {
37+
'@typescript-eslint/ban-ts-comment': 'off',
38+
'@typescript-eslint/no-empty-object-type': 'off',
39+
'@typescript-eslint/no-explicit-any': 'off',
40+
'@typescript-eslint/no-extra-semi': 'off',
41+
'@typescript-eslint/no-require-imports': 'off',
42+
'@typescript-eslint/no-this-alias': 'warn',
43+
'@typescript-eslint/no-unused-expressions': 'off',
44+
'@typescript-eslint/no-unused-vars': 'warn',
45+
46+
'no-new': 'off',
47+
'node/no-callback-literal': 'off',
48+
'prefer-const': 'warn',
49+
'require-await': 'warn',
50+
// 'sort-imports': 'warn', TODO: fix project import issues and then enable it
51+
'unused-imports/no-unused-imports': 'error',
52+
53+
'vue/multi-word-component-names': 'warn',
54+
'vue/no-multiple-template-root': 'off',
55+
'vue/no-v-model-argument': 'off',
56+
'vue/no-v-text-v-html-on-component': 'warn'
5857
}
59-
]
60-
}
58+
}
59+
]

packages/eslint-config/package.json

+10-8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"private": false,
55
"version": "0.0.1",
66
"license": "AGPL-3.0",
7+
"type": "module",
78
"author": "ownCloud GmbH <[email protected]>",
89
"homepage": "https://github.com/owncloud/web/tree/master/packages/eslint-config",
910
"repository": {
@@ -16,18 +17,19 @@
1617
},
1718
"dependencies": {
1819
"@babel/eslint-parser": "^7.23.3",
19-
"@typescript-eslint/eslint-plugin": "^7.16.0",
20-
"@typescript-eslint/parser": "^7.16.0",
20+
"@typescript-eslint/parser": "^8.0.0",
2121
"eslint-config-prettier": "^9.1.0",
22-
"eslint-plugin-n": "^14.0.0",
23-
"eslint-plugin-prettier-vue": "^5.0.0",
24-
"eslint-plugin-promise": "^6.1.1",
25-
"eslint-plugin-unused-imports": "^3.2.0",
26-
"eslint-plugin-vue": "^9.19.2",
22+
"eslint-plugin-n": "^17.0.0",
23+
"eslint-plugin-prettier": "^5.0.0",
24+
"eslint-plugin-promise": "^7.0.0",
25+
"eslint-plugin-unused-imports": "^4.0.0",
26+
"eslint-plugin-vue": "^9.28.0",
2727
"eslint-plugin-vuejs-accessibility": "^2.2.0",
28+
"globals": "^15.0.0",
29+
"typescript-eslint": "^8.4.0",
2830
"typescript": "5.5.4"
2931
},
3032
"peerDependencies": {
31-
"eslint": "^8.56.0"
33+
"eslint": "^9.0.0"
3234
}
3335
}

packages/web-app-epub-reader/src/App.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ export default defineComponent({
140140
const localStorageData = useLocalStorage<{ fontSizePercentage?: number }>(`oc_epubReader`, {})
141141
const currentFontSizePercentage = ref(unref(localStorageData).fontSizePercentage || 100)
142142
const themeStore = useThemeStore()
143-
let book = ref<Book>()
144-
let rendition = ref<Rendition>()
143+
const book = ref<Book>()
144+
const rendition = ref<Rendition>()
145145
146146
const navigateLeft = () => {
147147
unref(rendition).prev()

packages/web-app-files/src/helpers/textUtils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function naturalSortCompare(a: string, b: string) {
3939
aNum = Number(aa[x])
4040
bNum = Number(bb[x])
4141
// note: == is correct here
42-
// eslint-disable-next-line eqeqeq
42+
4343
if (aNum == aa[x] && bNum == bb[x]) {
4444
return aNum - bNum
4545
} else {

packages/web-app-files/src/views/spaces/DriveResolver.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export default defineComponent({
155155
* find an easy way to do that.
156156
**/
157157
if (space.fileId === space.id) {
158-
let publicSpace = (await getSpaceResource()) as PublicSpaceResource
158+
const publicSpace = (await getSpaceResource()) as PublicSpaceResource
159159
160160
// FIXME: check for type once https://github.com/owncloud/ocis/issues/8740 is resolved
161161
if (publicSpace.publicLinkPermission === SharePermissionBit.Create) {

packages/web-app-importer/src/extensions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type { UppyService } from '@ownclouders/web-pkg'
1313
import '@uppy/dashboard/dist/style.min.css'
1414
import { Extension } from '@ownclouders/web-pkg'
1515
import { ApplicationSetupOptions } from '@ownclouders/web-pkg'
16-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
16+
1717
// @ts-ignore
1818
import { WebdavPublicLink } from '@uppy/webdav'
1919

packages/web-app-ocm/src/views/App.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export default defineComponent({
6565
}
6666
6767
const highlightNewConnections = async () => {
68-
let oldConnections = [...unref(connections)]
68+
const oldConnections = [...unref(connections)]
6969
await findAcceptedUsers()
7070
if (oldConnections.length < unref(connections).length) {
7171
highlightedConnections.value = unref(connections).filter(

packages/web-app-ocm/src/views/IncomingInvitations.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ export default defineComponent({
167167
}
168168
const providerDomainQuery = to.query.providerDomain
169169
if (providerDomainQuery) {
170-
let matchedProvider = unref(providers)?.find(
170+
const matchedProvider = unref(providers)?.find(
171171
(p) => p.domain === queryItemAsString(providerDomainQuery)
172172
)
173173
if (matchedProvider) {

packages/web-app-preview/src/App.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ export default defineComponent({
367367
},
368368
preloadImages() {
369369
const preloadFile = (preloadFileIndex: number) => {
370-
let cycleIndex =
370+
const cycleIndex =
371371
(((this.activeIndex + preloadFileIndex) % this.filteredFiles.length) +
372372
this.filteredFiles.length) %
373373
this.filteredFiles.length

packages/web-app-search/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import App from './App.vue'
22
import List from './views/List.vue'
3-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
3+
44
// @ts-ignore
55
import translations from '../l10n/translations.json'
66
import { ApplicationInformation, defineWebApplication } from '@ownclouders/web-pkg'

packages/web-client/src/ocs/capabilities.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { AxiosInstance } from 'axios'
22
import get from 'lodash-es/get'
33

4-
/* eslint-disable camelcase */
54
export interface AppProviderCapability {
65
apps_url?: string
76
enabled?: boolean
@@ -45,7 +44,7 @@ export interface ArchiverCapability {
4544
enabled?: boolean
4645
version?: string // version is just a major version, e.g. `v2`
4746
formats?: string[]
48-
// eslint-disable-next-line camelcase
47+
4948
archiver_url?: string
5049
max_num_files?: string
5150
max_size?: string
@@ -185,7 +184,6 @@ export interface Capabilities {
185184
string?: string
186185
}
187186
}
188-
/* eslint-enable camelcase */
189187

190188
export const GetCapabilitiesFactory = (baseURI: string, axios: AxiosInstance) => {
191189
const url = new URL(baseURI)

packages/web-pkg/src/components/CreateLinkModal.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ export default defineComponent({
246246
)
247247
}
248248
249-
let userFacingErrors: Error[] = []
249+
const userFacingErrors: Error[] = []
250250
const failed = result.filter(({ status }) => status === 'rejected')
251251
if (failed.length) {
252252
;(failed as PromiseRejectedResult[])

packages/web-pkg/src/components/CreateShortcutModal.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ export default defineComponent({
179179
let markInstance: Mark = null
180180
181181
const getInputUrlWithProtocol = (input: string) => {
182-
let url = input.trim()
182+
const url = input.trim()
183183
if (isMaybeUrl(url)) {
184184
return url
185185
}

packages/web-pkg/src/composables/sort/useSort.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export enum SortDir {
1515
export interface SortField {
1616
name: string
1717
prop?: string
18-
// eslint-disable-next-line @typescript-eslint/ban-types
18+
// eslint-disable-next-line
1919
sortable?: MaybeRef<boolean | Function | string>
2020
sortDir?: MaybeRef<SortDir>
2121
label?: string

packages/web-pkg/src/helpers/resource/conflictHandling/conflictDialog.ts

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ export interface FileConflict {
1212
}
1313

1414
export class ConflictDialog {
15-
/* eslint-disable no-useless-constructor */
1615
constructor(
1716
protected $gettext: Language['$gettext'],
1817
protected $ngettext: Language['$ngettext']

packages/web-pkg/src/services/archiver.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Workaround https://github.com/npm/node-semver/issues/381
2-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
2+
33
// @ts-ignore
44
import major from 'semver/functions/major'
5-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
5+
66
// @ts-ignore
77
import rcompare from 'semver/functions/rcompare'
88

packages/web-pkg/src/services/passwordPolicy/passwordPolicy.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
import { PasswordPolicyCapability } from '@ownclouders/web-client/ocs'
1111
import { GeneratePassword } from 'js-generate-password'
1212
import { CapabilityStore } from '../../composables'
13-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
13+
1414
// @ts-ignore
1515
import { PasswordPolicy } from 'password-sheriff'
1616

0 commit comments

Comments
 (0)