summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.eslintrc.js15
-rw-r--r--package-lock.json70
-rw-r--r--package.json3
-rw-r--r--src/components/ContactDetails/ContactDetailsAddNewProp.vue2
-rw-r--r--src/components/ContactDetails/ContactDetailsProperty.vue10
-rw-r--r--src/components/Settings/SettingsAddressbookShare.vue2
-rw-r--r--src/components/SettingsSection.vue8
-rw-r--r--src/router/index.js2
-rw-r--r--src/store/addressbooks.js6
-rw-r--r--src/store/index.js4
-rw-r--r--src/views/Contacts.vue14
-rw-r--r--tests/unit/specs/Contacts.spec.js2
-rw-r--r--webpack.common.js6
13 files changed, 107 insertions, 37 deletions
diff --git a/.eslintrc.js b/.eslintrc.js
index 6c62cc72..4df12943 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -16,15 +16,28 @@ module.exports = {
},
parserOptions: {
parser: 'babel-eslint',
- ecmaVersion: 6
+ ecmaVersion: 8
},
extends: [
'eslint:recommended',
+ 'plugin:import/errors',
+ 'plugin:import/warnings',
'plugin:node/recommended',
'plugin:vue/essential',
'plugin:vue/recommended',
'standard'
],
+ settings: {
+ 'import/resolver': {
+ webpack: {
+ config: 'webpack.common.js'
+ },
+ node: {
+ paths: ['src'],
+ extensions: ['.js', '.vue']
+ }
+ }
+ },
plugins: ['vue', 'node'],
rules: {
// space before function ()
diff --git a/package-lock.json b/package-lock.json
index d9b97aaf..eabbe7dd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2907,6 +2907,12 @@
"integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
"dev": true
},
+ "array-find": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz",
+ "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=",
+ "dev": true
+ },
"array-find-index": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
@@ -4983,6 +4989,49 @@
"resolve": "^1.5.0"
}
},
+ "eslint-import-resolver-webpack": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.10.1.tgz",
+ "integrity": "sha512-RN49nnyQpBCP3TqVhct+duJjH8kaVg08fFevWvA+4Cr1xeN7OFQRse4wMvzBto9/4VmOJWvqPfdmNTEG3jc8SQ==",
+ "dev": true,
+ "requires": {
+ "array-find": "^1.0.0",
+ "debug": "^2.6.8",
+ "enhanced-resolve": "~0.9.0",
+ "find-root": "^1.1.0",
+ "has": "^1.0.1",
+ "interpret": "^1.0.0",
+ "lodash": "^4.17.4",
+ "node-libs-browser": "^1.0.0 || ^2.0.0",
+ "resolve": "^1.4.0",
+ "semver": "^5.3.0"
+ },
+ "dependencies": {
+ "enhanced-resolve": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
+ "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.2.0",
+ "tapable": "^0.1.8"
+ }
+ },
+ "memory-fs": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz",
+ "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=",
+ "dev": true
+ },
+ "tapable": {
+ "version": "0.1.10",
+ "resolved": "http://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz",
+ "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=",
+ "dev": true
+ }
+ }
+ },
"eslint-loader": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.1.1.tgz",
@@ -5507,7 +5556,7 @@
},
"fecha": {
"version": "2.3.3",
- "resolved": "http://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
"integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
},
"figures": {
@@ -5622,6 +5671,12 @@
"pkg-dir": "^2.0.0"
}
},
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "dev": true
+ },
"find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
@@ -5766,8 +5821,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"aproba": {
"version": "1.2.0",
@@ -6182,8 +6236,7 @@
"safe-buffer": {
"version": "5.1.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -6239,7 +6292,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -6283,14 +6335,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"yallist": {
"version": "3.0.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
diff --git a/package.json b/package.json
index f61c0657..c56690ad 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
"ie >= 11"
],
"engines": {
- "node": ">=10.0.0"
+ "node": ">=11.0.0"
},
"devDependencies": {
"@babel/core": "^7.1.5",
@@ -72,6 +72,7 @@
"eslint": "^4.19.1",
"eslint-config-standard": "^11.0.0",
"eslint-friendly-formatter": "^4.0.1",
+ "eslint-import-resolver-webpack": "^0.10.1",
"eslint-loader": "^2.1.1",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.0",
diff --git a/src/components/ContactDetails/ContactDetailsAddNewProp.vue b/src/components/ContactDetails/ContactDetailsAddNewProp.vue
index 9e12ac99..c9d5404c 100644
--- a/src/components/ContactDetails/ContactDetailsAddNewProp.vue
+++ b/src/components/ContactDetails/ContactDetailsAddNewProp.vue
@@ -39,7 +39,7 @@
<script>
import rfcProps from '../../models/rfcProps.js'
import Contact from '../../models/contact'
-import PropertyTitle from '../Properties/PropertyTitle'
+import PropertyTitle from 'Components/Properties/PropertyTitle'
export default {
name: 'ContactDetailsAddNewProp',
diff --git a/src/components/ContactDetails/ContactDetailsProperty.vue b/src/components/ContactDetails/ContactDetailsProperty.vue
index 3a4df0c2..e2eee5b6 100644
--- a/src/components/ContactDetails/ContactDetailsProperty.vue
+++ b/src/components/ContactDetails/ContactDetailsProperty.vue
@@ -35,11 +35,11 @@ import { Property } from 'ical.js'
import rfcProps from '../../models/rfcProps.js'
import Contact from '../../models/contact'
-import PropertyText from '../Properties/PropertyText'
-import PropertyMultipleText from '../Properties/PropertyMultipleText'
-import PropertyDateTime from '../Properties/PropertyDateTime'
-import propertyGroups from '../Properties/PropertyGroups'
-import PropertySelect from '../Properties/PropertySelect'
+import PropertyText from 'Components/Properties/PropertyText'
+import PropertyMultipleText from 'Components/Properties/PropertyMultipleText'
+import PropertyDateTime from 'Components/Properties/PropertyDateTime'
+import propertyGroups from 'Components/Properties/PropertyGroups'
+import PropertySelect from 'Components/Properties/PropertySelect'
export default {
name: 'ContactDetailsProperty',
diff --git a/src/components/Settings/SettingsAddressbookShare.vue b/src/components/Settings/SettingsAddressbookShare.vue
index efea02b9..0c87d799 100644
--- a/src/components/Settings/SettingsAddressbookShare.vue
+++ b/src/components/Settings/SettingsAddressbookShare.vue
@@ -57,7 +57,7 @@
<script>
-import api from '../../services/api'
+import api from 'Services/api'
import addressBookSharee from './SettingsAddressbookSharee'
import debounce from 'debounce'
diff --git a/src/components/SettingsSection.vue b/src/components/SettingsSection.vue
index d54eab52..de3de5ad 100644
--- a/src/components/SettingsSection.vue
+++ b/src/components/SettingsSection.vue
@@ -33,10 +33,10 @@
</template>
<script>
-import addressBook from '../components/Settings/SettingsAddressbook'
-import addAddressBook from '../components/Settings/SettingsNewAddressbook'
-import importContacts from '../components/Settings/SettingsImportContacts'
-import sortContacts from '../components/Settings/SettingsSortContacts'
+import addressBook from 'Components/Settings/SettingsAddressbook'
+import addAddressBook from 'Components/Settings/SettingsNewAddressbook'
+import importContacts from 'Components/Settings/SettingsImportContacts'
+import sortContacts from 'Components/Settings/SettingsSortContacts'
export default {
name: 'SettingsSection',
diff --git a/src/router/index.js b/src/router/index.js
index 5272dd85..4fff3af6 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -22,7 +22,7 @@
import Vue from 'vue'
import Router from 'vue-router'
-import Contacts from '../views/Contacts'
+import Contacts from 'Views/Contacts'
Vue.use(Router)
diff --git a/src/store/addressbooks.js b/src/store/addressbooks.js
index c37a106e..7f28f5fb 100644
--- a/src/store/addressbooks.js
+++ b/src/store/addressbooks.js
@@ -23,9 +23,9 @@
import Vue from 'vue'
import ICAL from 'ical.js'
-import parseVcf from '../services/parseVcf'
-import client from '../services/cdav'
-import Contact from '../models/contact'
+import parseVcf from 'Services/parseVcf'
+import client from 'Services/cdav'
+import Contact from 'Models/contact'
import pLimit from 'p-limit'
const addressbookModel = {
diff --git a/src/store/index.js b/src/store/index.js
index 546cbedd..fcd59385 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -21,7 +21,7 @@
*/
import Vue from 'vue'
-import Vuex from 'vuex'
+import Vuex, { Store } from 'vuex'
import addressbooks from './addressbooks'
import contacts from './contacts'
import groups from './groups'
@@ -31,7 +31,7 @@ Vue.use(Vuex)
const mutations = {}
-export default new Vuex.Store({
+export default new Store({
modules: {
addressbooks,
contacts,
diff --git a/src/views/Contacts.vue b/src/views/Contacts.vue
index 56843b5e..f751470a 100644
--- a/src/views/Contacts.vue
+++ b/src/views/Contacts.vue
@@ -48,15 +48,15 @@
</template>
<script>
-import SettingsSection from '../components/SettingsSection'
-import ContentList from '../components/ContentList'
-import ContactDetails from '../components/ContactDetails'
-import ImportScreen from '../components/ImportScreen'
+import SettingsSection from 'Components/SettingsSection'
+import ContentList from 'Components/ContentList'
+import ContactDetails from 'Components/ContactDetails'
+import ImportScreen from 'Components/ImportScreen'
-import Contact from '../models/contact'
-import rfcProps from '../models/rfcProps.js'
+import Contact from 'Models/contact'
+import rfcProps from 'Models/rfcProps.js'
-import client from '../services/cdav.js'
+import client from 'Services/cdav.js'
export default {
name: 'Contacts',
diff --git a/tests/unit/specs/Contacts.spec.js b/tests/unit/specs/Contacts.spec.js
index 0dbcaee7..0f16ff1c 100644
--- a/tests/unit/specs/Contacts.spec.js
+++ b/tests/unit/specs/Contacts.spec.js
@@ -21,7 +21,7 @@
*/
import { mount } from '@vue/test-utils'
-import Contacts from '@/views/Contacts.vue'
+import Contacts from 'Views/Contacts.vue'
describe('Contacts.vue', () => {
it('Test contacts view', () => {
diff --git a/webpack.common.js b/webpack.common.js
index 9f8ea3cd..409625f8 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -50,6 +50,12 @@ module.exports = {
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
],
resolve: {
+ alias: {
+ Components: path.resolve(__dirname, 'src/components/'),
+ Models: path.resolve(__dirname, 'src/models/'),
+ Services: path.resolve(__dirname, 'src/services/'),
+ Views: path.resolve(__dirname, 'src/views/')
+ },
extensions: ['*', '.js', '.vue', '.json']
}
}