diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 6a68796..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - node: true - }, - extends: [ - 'plugin:quasar/standard', - 'digitalbazaar', - 'digitalbazaar/jsdoc', - 'digitalbazaar/vue3' - ], - rules: {}, - ignorePatterns: ['node_modules/'] -}; diff --git a/CHANGELOG.md b/CHANGELOG.md index 751e4c2..bfe6764 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # bedrock-vue-wallet ChangeLog +## 29.5.2 - 2025-08-xx + +### Changed +- Update to `eslint@9`. + +### Fixed +- Fix lint issues. + ## 29.5.1 - 2024-10-24 ### Fixed diff --git a/components/AccessManagement.vue b/components/AccessManagement.vue index 21d08d0..4ba7f72 100644 --- a/components/AccessManagement.vue +++ b/components/AccessManagement.vue @@ -143,7 +143,6 @@ export default { props: { profileId: { type: String, - default: '', required: true } }, diff --git a/components/AddProfileModal.vue b/components/AddProfileModal.vue index 6421a96..0286923 100644 --- a/components/AddProfileModal.vue +++ b/components/AddProfileModal.vue @@ -37,7 +37,6 @@ export default { }, profileOptions: { type: Array, - default: () => [], required: true } }, diff --git a/components/CapabilitiesList.vue b/components/CapabilitiesList.vue index 72ce50e..4535be0 100644 --- a/components/CapabilitiesList.vue +++ b/components/CapabilitiesList.vue @@ -40,7 +40,6 @@ export default { name: 'CapabilitiesList', props: { capabilities: { - default: () => [], type: Array, required: true } diff --git a/components/CredentialDashboard.vue b/components/CredentialDashboard.vue index 2c1e3d3..b5e87d7 100644 --- a/components/CredentialDashboard.vue +++ b/components/CredentialDashboard.vue @@ -63,7 +63,6 @@ export default { }, props: { credentials: { - default: () => [], type: Array, required: true }, @@ -77,7 +76,6 @@ export default { required: false }, errorText: { - default: '', type: String, required: true } @@ -139,7 +137,7 @@ export default { // Watchers watch(() => filteredProfiles, () => { - return emit('filtered-profiles', filteredProfiles); + return emit('filtered-profiles', filteredProfiles.value); }, {immediate: true}); // Get each credential title and subtitle overrides diff --git a/components/CredentialsList.vue b/components/CredentialsList.vue index 3bc554a..52a5e72 100644 --- a/components/CredentialsList.vue +++ b/components/CredentialsList.vue @@ -105,7 +105,6 @@ export default { }, props: { credentials: { - default: () => [], type: Array, required: true }, diff --git a/components/NfcShare.vue b/components/NfcShare.vue index 921c791..f2b7872 100644 --- a/components/NfcShare.vue +++ b/components/NfcShare.vue @@ -80,8 +80,8 @@ export default { // receives the VPR const dec = new TextDecoder(); try { - // eslint-disable-next-line max-len - if(event && event.message && event.message.records && event.message.records[0] && event.message.records[0].data) { + if(event && event.message && event.message.records && + event.message.records[0] && event.message.records[0].data) { const vpr = JSON.parse(dec.decode(event.message.records[0].data)); console.log('NFC read event:', event); console.log('VPR received:', vpr); diff --git a/components/ProblemCard.vue b/components/ProblemCard.vue index 3fe23ba..abae85b 100644 --- a/components/ProblemCard.vue +++ b/components/ProblemCard.vue @@ -70,18 +70,15 @@ export default { props: { account: { type: String, - required: true, - default: '' + required: true }, error: { type: Error, - required: true, - default: undefined + required: true }, loading: { type: Boolean, - required: true, - default: true + required: true } }, emits: ['cancel'], diff --git a/components/ProfileChooser.vue b/components/ProfileChooser.vue index 3cb77bf..7513dbf 100644 --- a/components/ProfileChooser.vue +++ b/components/ProfileChooser.vue @@ -54,12 +54,10 @@ export default { props: { loading: { type: Boolean, - default: true, required: true }, profiles: { type: Array, - default: () => [], required: true }, selected: { diff --git a/components/ProfileForm.vue b/components/ProfileForm.vue index a1d4863..523e248 100644 --- a/components/ProfileForm.vue +++ b/components/ProfileForm.vue @@ -103,7 +103,6 @@ export default { }, profileOptions: { type: Array, - default: () => [], required: true } }, diff --git a/components/RegisterForm.vue b/components/RegisterForm.vue index c7c2a22..f222d2c 100644 --- a/components/RegisterForm.vue +++ b/components/RegisterForm.vue @@ -275,7 +275,6 @@ export default { // registration now complete await this.$emitExtendable('register'); } catch(e) { - // eslint-disable-line no-console console.error('Register Error', e); const newError = `${e.name}: ${e.message || 'No Message'}`; this.error = newError; diff --git a/components/ShareCredentials.vue b/components/ShareCredentials.vue index 1cc9fda..3ade20e 100644 --- a/components/ShareCredentials.vue +++ b/components/ShareCredentials.vue @@ -100,13 +100,11 @@ export default { props: { requestOrigin: { type: String, - required: true, - default: '' + required: true }, verifiablePresentationRequest: { type: [Object, Array], - required: true, - default: () => ({}) + required: true } }, emits: ['share', 'cancel'], diff --git a/components/ShareReview.vue b/components/ShareReview.vue index 0157578..3aeaeb6 100644 --- a/components/ShareReview.vue +++ b/components/ShareReview.vue @@ -67,28 +67,23 @@ export default { props: { authentication: { type: Boolean, - required: true, - default: () => false + required: true }, capabilities: { type: Array, - required: true, - default: () => [] + required: true }, credentials: { type: Array, - required: true, - default: () => [] + required: true }, loading: { type: Boolean, - required: true, - default: true + required: true }, requestOrigin: { type: String, - required: true, - default: '' + required: true } } }; diff --git a/components/StoreCredentials.vue b/components/StoreCredentials.vue index 21753f0..0af52f2 100644 --- a/components/StoreCredentials.vue +++ b/components/StoreCredentials.vue @@ -82,18 +82,15 @@ export default { props: { account: { type: String, - required: true, - default: '' + required: true }, verifiableCredential: { type: Array, - default: () => [], required: true }, holder: { type: String, - required: true, - default: '' + required: true } }, emits: ['store', 'cancel'], diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..d1955df --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,38 @@ +import globals from 'globals'; + +import digitalbazaar from 'eslint-config-digitalbazaar'; +import digitalbazaarJsdoc from 'eslint-config-digitalbazaar/jsdoc'; +import digitalbazaarModule from 'eslint-config-digitalbazaar/module'; +import digitalbazaarVue3 from 'eslint-config-digitalbazaar/vue3'; + +export default [ + { + ignores: ['**/node_modules/'] + }, + // not yet supported + // 'plugin:quasar/standard' + ...digitalbazaar, + ...digitalbazaarJsdoc, + ...digitalbazaarModule, + ...digitalbazaarVue3, + { + files: [ + '**/*.js' + ], + languageOptions: { + globals: { + ...globals.browser + } + } + }, + { + files: [ + 'test/web/**/*.js' + ], + languageOptions: { + globals: { + ...globals.mocha + } + } + } +]; diff --git a/lib/cardDesigns.js b/lib/cardDesigns.js index 26996b1..4aa9052 100644 --- a/lib/cardDesigns.js +++ b/lib/cardDesigns.js @@ -21,7 +21,6 @@ export const cardDesigns = [ { matches: { - // eslint-disable-next-line max-len '/@context': 'https://contexts.vcplayground.org/examples/food-safety-certification/v1.json', '/type': 'FoodSafetyCertificationCredential' }, diff --git a/lib/helpers.js b/lib/helpers.js index 78d7ed7..485c323 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -30,7 +30,6 @@ export async function addWalletToChapi({} = {}) { } } catch(e) { if(e.message !== 'Permission denied.') { - // eslint-disable-line no-console console.error('CHAPI register error:', e); } Notify.create({ diff --git a/package.json b/package.json index 850ae36..c852646 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "routes/*" ], "scripts": { - "lint": "eslint --ext .cjs,.js,.vue ." + "lint": "eslint" }, "dependencies": { "@digitalbazaar/http-client": "^4.1.1", @@ -45,13 +45,13 @@ "vue-router": "^4.3.0" }, "devDependencies": { - "eslint": "^8.57.0", - "eslint-config-digitalbazaar": "^5.0.1", - "eslint-plugin-jsdoc": "^50.4.1", - "eslint-plugin-quasar": "^1.1.0", - "eslint-plugin-vue": "^9.23.0", - "jsdoc": "^4.0.2", - "jsdoc-to-markdown": "^9.0.2" + "eslint": "^9.33.0", + "eslint-config-digitalbazaar": "github:digitalbazaar/eslint-config-digitalbazaar#use-eslint-v9", + "eslint-plugin-jsdoc": "^52.0.4", + "eslint-plugin-unicorn": "^60.0.0", + "eslint-plugin-vue": "^10.4.0", + "globals": "^16.3.0", + "vue-eslint-parser": "^10.2.0" }, "engines": { "node": ">=18" diff --git a/routes/RegisterPage.vue b/routes/RegisterPage.vue index 2c7d548..79de986 100644 --- a/routes/RegisterPage.vue +++ b/routes/RegisterPage.vue @@ -45,7 +45,6 @@ export default { router.push({name: 'home'}); } catch(e) { const newError = `${e.name}: ${e.message || 'No Message'}`; - // eslint-disable-line no-console console.error('Register Error:', e); $q.notify({ type: 'negative', diff --git a/test/.eslintrc.cjs b/test/.eslintrc.cjs deleted file mode 100644 index 40e4663..0000000 --- a/test/.eslintrc.cjs +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - env: { - node: true - } -}; - diff --git a/test/web/.eslintrc.cjs b/test/web/.eslintrc.cjs deleted file mode 100644 index 7f0fc07..0000000 --- a/test/web/.eslintrc.cjs +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - env: { - mocha: true, - browser: true - }, - globals: { - assertNoError: true, - should: true - } -};