Commit 98d31114 authored by NGPixel's avatar NGPixel

fix: eslint for vue components

parent 72e3bacc
{
"extends": "requarks",
"env": {
"node": true,
"es6": true,
"jest": true
},
"globals": {
"document": false,
"navigator": false,
"window": false,
"FuseBox": false
}
}
extends:
- requarks
- plugin:vue/recommended
env:
node: true
es6: true
jest: true
globals:
document: false
navigator: false
window: false
FuseBox: false
\ No newline at end of file
......@@ -4,5 +4,9 @@
"puglint.enable": true,
"standard.enable": false,
"editor.formatOnSave": false,
"editor.tabSize": 2
"editor.tabSize": 2,
"eslint.validate": [
"javascript",
"vue"
]
}
......@@ -6,7 +6,7 @@
</template>
<script>
export default {
export default {
name: 'alert',
data () {
return {}
......@@ -15,7 +15,7 @@
shown() { return this.$store.state.alert.shown },
style() { return 'is-' + this.$store.state.alert.style },
icon() { return 'nc-icon-outline ' + this.$store.state.alert.icon },
msg() { return this.$store.state.alert.msg },
}
msg() { return this.$store.state.alert.msg }
}
}
</script>
......@@ -17,7 +17,7 @@
</template>
<script>
export default {
export default {
name: 'anchor',
data () {
return {}
......@@ -51,5 +51,5 @@
this.$refs.anchorURLinput.select()
}
}
}
}
</script>
......@@ -4,7 +4,7 @@
</template>
<script>
export default {
export default {
name: 'color-picker',
props: ['value'],
data () {
......@@ -37,5 +37,5 @@
this.$emit('input', color)
}
}
}
}
</script>
......@@ -27,29 +27,28 @@ export default {
results: []
},
conf: {
telemetry: true,
upgrade: false,
title: siteConfig.title || 'Wiki',
path: siteConfig.path || '/',
port: siteConfig.port || 80,
lang: siteConfig.lang || 'en',
public: (siteConfig.public === true),
pathData: './data',
pathRepo: './repo',
gitUseRemote: (siteConfig.git !== false),
gitUrl: '',
gitBranch: 'master',
gitAuthType: 'ssh',
gitAuthSSHKey: '',
gitAuthUser: '',
adminEmail: '',
adminPassword: '',
adminPasswordConfirm: '',
gitAuthPass: '',
gitAuthSSHKey: '',
gitAuthSSL: true,
gitShowUserEmail: true,
gitAuthType: 'ssh',
gitAuthUser: '',
gitBranch: 'master',
gitServerEmail: '',
gitShowUserEmail: true,
gitUrl: '',
gitUseRemote: (siteConfig.git !== false),
lang: siteConfig.lang || 'en',
mongo: 'mongodb://',
adminEmail: '',
adminPassword: '',
adminPasswordConfirm: ''
path: siteConfig.path || '/',
pathRepo: './repo',
port: siteConfig.port || 80,
public: (siteConfig.public === true),
telemetry: true,
title: siteConfig.title || 'Wiki',
upgrade: false
},
considerations: {
https: false,
......
......@@ -81,7 +81,7 @@ export default {
self.isLoading = true
self.$http.get('/js/ace/mode-' + m + '.js').then(resp => {
if (resp.ok) {
eval(resp.bodyText)
eval(resp.bodyText) // eslint-disable-line no-eval
self.modelistLoaded.push(m)
ace.acequire('ace/mode/' + m)
codeEditor.getSession().setMode('ace/mode/' + m)
......
......@@ -128,7 +128,9 @@
</template>
<script>
export default {
/* global $, socket */
export default {
name: 'editor-file',
data () {
return {
......@@ -599,5 +601,5 @@
mounted() {
this.$root.$on('editorFile/init', this.init)
}
}
}
</script>
......@@ -33,13 +33,13 @@
</template>
<script>
const videoRules = {
const videoRules = {
'youtube': new RegExp('/(?:(?:youtu\\.be\\/|v\\/|vi\\/|u\\/\\w\\/|embed\\/)|(?:(?:watch)?\\?v(?:i)?=|&v(?:i)?=))([^#&?]*).*/', 'i'),
'vimeo': new RegExp('/vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|)(\\d+)(?:$|\\/|\\?)/', 'i'),
'dailymotion': new RegExp('/(?:dailymotion\\.com(?:\\/embed)?(?:\\/video|\\/hub)|dai\\.ly)\\/([0-9a-z]+)(?:[-_0-9a-zA-Z]+(?:#video=)?([a-z0-9]+)?)?/', 'i')
}
}
export default {
export default {
name: 'editor-video',
data () {
return {
......@@ -90,5 +90,5 @@
mounted () {
this.$root.$on('editorVideo/init', this.init)
}
}
}
</script>
......@@ -44,6 +44,8 @@
</template>
<script>
/* global wiki, Diff2HtmlUI */
let diffui
let diffuiIsReady = false
export default {
......@@ -98,7 +100,7 @@ export default {
let self = this
diffuiIsReady = false
self.current = cm
self.$http.post(siteRoot + '/hist', {
self.$http.post(wiki.siteRoot + '/hist', {
path: self.currentPath,
commit: cm.commit
}).then(resp => {
......
......@@ -3,10 +3,10 @@
</template>
<script>
import { mapState } from 'vuex'
import { mapState } from 'vuex'
export default {
export default {
name: 'loading-spinner',
computed: mapState(['loading'])
}
}
</script>
......@@ -24,6 +24,8 @@
</template>
<script>
/* global CONSTANTS, graphQL, siteConfig */
export default {
name: 'login',
data() {
......@@ -67,4 +69,3 @@ export default {
}
}
</script>
......@@ -18,7 +18,7 @@
</template>
<script>
export default {
export default {
name: 'modal-create-page',
props: ['basepath'],
data () {
......@@ -31,7 +31,7 @@
},
computed: {
isShown () {
if(this.$store.state.modalCreatePage.shown) {
if (this.$store.state.modalCreatePage.shown) {
this.makeSelection()
}
return this.$store.state.modalCreatePage.shown
......@@ -39,7 +39,7 @@
},
methods: {
makeSelection: function () {
let self = this;
let self = this
self._.delay(() => {
let startPos = (self.currentPath.length > 0) ? self.currentPath.length + 1 : 0
self.$helpers.form.setInputSelection(self.$refs.createPageInput, startPos, self.userPath.length)
......@@ -63,5 +63,5 @@
this.currentPath = (this.basepath === 'home') ? '' : this.basepath
this.userPath = (this._.isEmpty(this.currentPath)) ? 'new-page' : this.currentPath + '/new-page'
}
}
}
</script>
......@@ -18,7 +18,7 @@
</template>
<script>
export default {
export default {
name: 'modal-delete-page',
props: ['currentPath'],
data () {
......@@ -62,5 +62,5 @@
})
}
}
}
}
</script>
......@@ -16,7 +16,7 @@
</template>
<script>
export default {
export default {
name: 'modal-discard-page',
props: ['mode', 'currentPath'],
data () {
......@@ -32,12 +32,12 @@
this.$store.dispatch('modalDiscardPage/close')
},
discard: function () {
if(this.mode === 'create') {
if (this.mode === 'create') {
window.location.assign('/')
} else {
window.location.assign('/' + this.currentPath)
}
}
}
}
}
</script>
......@@ -19,7 +19,7 @@
</template>
<script>
export default {
export default {
name: 'modal-move-page',
props: ['currentPath'],
data () {
......@@ -31,7 +31,7 @@
},
computed: {
isShown () {
if(this.$store.state.modalMovePage.shown) {
if (this.$store.state.modalMovePage.shown) {
this.movePath = this.currentPath
this.makeSelection()
}
......@@ -40,7 +40,7 @@
},
methods: {
makeSelection() {
let self = this;
let self = this
self._.delay(() => {
let startPos = (self._.includes(self.currentPath, '/')) ? self._.lastIndexOf(self.movePath, '/') + 1 : 0
self.$helpers.form.setInputSelection(self.$refs.movePageInput, startPos, self.movePath.length)
......@@ -82,5 +82,5 @@
}
}
}
}
}
</script>
......@@ -18,6 +18,8 @@
</template>
<script>
/* global siteRoot, socket, $ */
export default {
data() {
return {
......@@ -57,9 +59,9 @@ export default {
},
searchmoveidx: function (val, oldVal) {
if (val > 0) {
this.searchmovekey = (this.searchmovearr[val - 1])
? 'res.' + this.searchmovearr[val - 1].entryPath
: 'sug.' + this.searchmovearr[val - 1]
this.searchmovekey = (this.searchmovearr[val - 1]) ?
'res.' + this.searchmovearr[val - 1].entryPath :
'sug.' + this.searchmovearr[val - 1]
} else {
this.searchmovekey = ''
}
......
......@@ -6,7 +6,7 @@
</template>
<script>
export default {
export default {
name: 'toggle',
props: ['value', 'desc'],
data () {
......@@ -17,5 +17,5 @@
this.$emit('input', !this.value)
}
}
}
}
</script>
......@@ -15,7 +15,9 @@
</template>
<script>
export default {
/* global socket, siteRoot */
export default {
name: 'tree',
data () {
return {
......@@ -78,5 +80,5 @@
}
this.fetch(basePath)
}
}
}
</script>
'use strict'
/* global appconfig, runmode */
import jQuery from 'jquery'
import _ from 'lodash'
import Vue from 'vue'
import VeeValidate from 'vee-validate'
import axios from 'axios'
Vue.use(VeeValidate, {
enableAutoClasses: true,
classNames: {
touched: 'is-touched', // the control has been blurred
untouched: 'is-untouched', // the control hasn't been blurred
valid: 'is-valid', // model is valid
invalid: 'is-invalid', // model is invalid
pristine: 'is-pristine', // control has not been interacted with
dirty: 'is-dirty' // control has been interacted with
}
})
jQuery(document).ready(function ($) {
new Vue({ // eslint-disable-line no-new
el: 'main',
data: {
loading: false,
state: 'welcome',
syscheck: {
ok: false,
error: '',
results: []
},
dbcheck: {
ok: false,
error: ''
},
gitcheck: {
ok: false,
error: ''
},
final: {
ok: false,
error: '',
results: []
},
conf: {
title: appconfig.title || 'Wiki',
host: appconfig.host || 'http://',
port: appconfig.port || 80,
lang: appconfig.lang || 'en',
public: (appconfig.public === true),
db: appconfig.db || 'mongodb://localhost:27017/wiki',
pathData: './data',
pathRepo: './repo',
gitUseRemote: (appconfig.git !== false),
gitUrl: '',
gitBranch: 'master',
gitAuthType: 'ssh',
gitAuthSSHKey: '',
gitAuthUser: '',
gitAuthPass: '',
gitAuthSSL: true,
gitShowUserEmail: true,
gitServerEmail: '',
adminEmail: '',
adminPassword: '',
adminPasswordConfirm: ''
},
considerations: {
https: false,
port: false,
localhost: false
}
},
computed: {
currentProgress: function () {
let perc = '0%'
switch (this.state) {
case 'welcome':
perc = '0%'
break
case 'syscheck':
perc = (this.syscheck.ok) ? '15%' : '5%'
break
case 'general':
perc = '20%'
break
case 'considerations':
perc = '30%'
break
case 'db':
perc = '35%'
break
case 'dbcheck':
perc = (this.dbcheck.ok) ? '50%' : '40%'
break
case 'paths':
perc = '55%'
break
case 'git':
perc = '60%'
break
case 'gitcheck':
perc = (this.gitcheck.ok) ? '75%' : '65%'
break
case 'admin':
perc = '80%'
break
}
return perc
}
},
mounted: function () {
if (appconfig.paths) {
this.conf.pathData = appconfig.paths.data || './data'
this.conf.pathRepo = appconfig.paths.repo || './repo'
}
if (appconfig.git !== false && _.isPlainObject(appconfig.git)) {
this.conf.gitUrl = appconfig.git.url || ''
this.conf.gitBranch = appconfig.git.branch || 'master'
this.conf.gitShowUserEmail = (appconfig.git.showUserEmail !== false)
this.conf.gitServerEmail = appconfig.git.serverEmail || ''
if (_.isPlainObject(appconfig.git.auth)) {
this.conf.gitAuthType = appconfig.git.auth.type || 'ssh'
this.conf.gitAuthSSHKey = appconfig.git.auth.privateKey || ''
this.conf.gitAuthUser = appconfig.git.auth.username || ''
this.conf.gitAuthPass = appconfig.git.auth.password || ''
this.conf.gitAuthSSL = (appconfig.git.auth.sslVerify !== false)
}
}
},
methods: {
proceedToWelcome: function (ev) {
this.state = 'welcome'
this.loading = false
},
proceedToSyscheck: function (ev) {
let self = this
this.state = 'syscheck'
this.loading = true
self.syscheck = {
ok: false,
error: '',
results: []
}
_.delay(() => {
axios.post('/syscheck').then(resp => {
if (resp.data.ok === true) {
self.syscheck.ok = true
self.syscheck.results = resp.data.results
} else {
self.syscheck.ok = false
self.syscheck.error = resp.data.error
}
self.loading = false
self.$nextTick()
}).catch(err => {
window.alert(err.message)
})
}, 1000)
},
proceedToGeneral: function (ev) {
let self = this
self.state = 'general'
self.loading = false
self.$nextTick(() => {
self.$validator.validateAll('general')
})
},
proceedToConsiderations: function (ev) {
this.considerations = {
https: !_.startsWith(this.conf.host, 'https'),
port: false, // TODO
localhost: _.includes(this.conf.host, 'localhost')
}
this.state = 'considerations'
this.loading = false
},
proceedToDb: function (ev) {
let self = this
if (runmode.staticMongo) {
return self.proceedToDbcheck()
}
self.state = 'db'
self.loading = false
self.$nextTick(() => {
self.$validator.validateAll('db')
})
},
proceedToDbcheck: function (ev) {
let self = this
this.state = 'dbcheck'
this.loading = true
self.dbcheck = {
ok: false,
error: ''
}
_.delay(() => {
axios.post('/dbcheck', {
db: self.conf.db
}).then(resp => {
if (resp.data.ok === true) {
self.dbcheck.ok = true
} else {
self.dbcheck.ok = false
self.dbcheck.error = resp.data.error
}
self.loading = false
self.$nextTick()
}).catch(err => {
window.alert(err.message)
})
}, 1000)
},
proceedToPaths: function (ev) {
let self = this
self.state = 'paths'
self.loading = false
self.$nextTick(() => {
self.$validator.validateAll('paths')
})
},
proceedToGit: function (ev) {
let self = this
self.state = 'git'
self.loading = false
self.$nextTick(() => {
self.$validator.validateAll('git')
})
},
proceedToGitCheck: function (ev) {
let self = this
this.state = 'gitcheck'
this.loading = true
self.gitcheck = {
ok: false,
results: [],
error: ''
}
_.delay(() => {
axios.post('/gitcheck', self.conf).then(resp => {
if (resp.data.ok === true) {
self.gitcheck.ok = true
self.gitcheck.results = resp.data.results
} else {
self.gitcheck.ok = false
self.gitcheck.error = resp.data.error
}
self.loading = false
self.$nextTick()
}).catch(err => {
window.alert(err.message)
})
}, 1000)
},
proceedToAdmin: function (ev) {
let self = this
self.state = 'admin'
self.loading = false
self.$nextTick(() => {
self.$validator.validateAll('admin')
})
},
proceedToFinal: function (ev) {
let self = this
self.state = 'final'
self.loading = true
self.final = {
ok: false,
error: '',
results: []
}
_.delay(() => {
axios.post('/finalize', self.conf).then(resp => {
if (resp.data.ok === true) {
self.final.ok = true
self.final.results = resp.data.results
} else {
self.final.ok = false
self.final.error = resp.data.error
}
self.loading = false
self.$nextTick()
}).catch(err => {
window.alert(err.message)
})
}, 1000)
},
finish: function (ev) {
let self = this
self.state = 'restart'
_.delay(() => {
axios.post('/restart', {}).then(resp => {
_.delay(() => {
window.location.assign(self.conf.host)
}, 30000)
}).catch(err => {
window.alert(err.message)
})
}, 1000)
}
}
})
})
'use strict'
/* global wikijs */
export default {
namespaced: true,
......
'use strict'
/* global wikijs */
export default {
namespaced: true,
......
'use strict'
/* global wikijs */
export default {
namespaced: true,
......
'use strict'
/* global wikijs */
export default {
namespaced: true,
......
'use strict'
export default {
namespaced: true,
state: {
......
'use strict'
/* global wikijs */
export default {
namespaced: true,
......
'use strict'
export default {
namespaced: true,
state: {
......
'use strict'
export default {
namespaced: true,
state: {
......
'use strict'
export default {
namespaced: true,
state: {
......
'use strict'
export default {
namespaced: true,
state: {
......
'use strict'
export default {
namespaced: true,
state: {
......
'use strict'
export default {
namespaced: true,
state: {
......
......@@ -9,7 +9,7 @@
"restart": "node wiki restart",
"build": "node tools/fuse",
"dev": "node tools/fuse -d",
"test": "jest"
"test": "eslint --ext .js,.vue . && jest"
},
"bin": {
"wiki": "wiki.js"
......@@ -149,6 +149,7 @@
"eslint-plugin-node": "5.2.1",
"eslint-plugin-promise": "3.6.0",
"eslint-plugin-standard": "3.0.1",
"eslint-plugin-vue": "3.13.1",
"fuse-box": "2.4.0",
"graphql-tag": "^2.5.0",
"i18next-xhr-backend": "1.4.3",
......
'use strict'
/* global appdata, ROOTPATH */
const crypto = require('crypto')
const path = require('path')
......
'use strict'
/* global appdata, rights */
/* global rights */
/**
* Authentication middleware
......
/* global wiki */
/* global wiki, appconfig */
const Promise = require('bluebird')
const bcrypt = require('bcryptjs-then')
......
'use strict'
/* global wiki */
const Promise = require('bluebird')
......@@ -58,8 +56,7 @@ var mkdown = md({
})
.use(mdAttrs)
// if (wiki.config.features.mathjax) {
if (true) {
if (wiki.config.features.mathjax) {
mkdown.use(mdMathjax)
}
......
......@@ -5,7 +5,7 @@
const Promise = require('bluebird')
const _ = require('lodash')
// const searchIndex = require('./search-index')
const stopWord = require('stopword')
// const stopWord = require('stopword')
const streamToPromise = require('stream-to-promise')
const searchAllowedChars = new RegExp('[^a-z0-9' + wiki.data.regex.cjk + wiki.data.regex.arabic + ' ]', 'g')
......@@ -22,7 +22,7 @@ module.exports = {
init () {
let self = this
self._isReady = new Promise((resolve, reject) => {
/*searchIndex({
/* searchIndex({
deletable: true,
fieldedSearch: true,
indexPath: 'wiki',
......
'use strict'
/* global winston */
/* global winston, ROOTPATH, appconfig */
const Promise = require('bluebird')
const crypto = require('crypto')
......
......@@ -26,7 +26,7 @@ block body
.panel-content.form-sections
section
p
svg.icons.is-18.is-outlined.has-right-pad.is-text: use(xlink:href="#nc-cd-reader")
svg.icons.is-18.is-outlined.has-right-pad.is-text: use(xlink:href='#nc-cd-reader')
span You are about to install Wiki.js #[strong= packageObj.version].
section
p.control.is-fullwidth
......@@ -51,14 +51,14 @@ block body
span System Check
i(v-if='loading')
.panel-content.is-text
p(v-if='loading') #[svg.icons.is-24.is-text: use(xlink:href="#nc-ms-dots")] Checking your system for compatibility...
p(v-if='loading') #[svg.icons.is-24.is-text: use(xlink:href='#nc-ms-dots')] Checking your system for compatibility...
p(v-if='!loading && syscheck.ok')
ul
li(v-for='rs in syscheck.results') #[svg.icons.is-18.is-text: use(xlink:href="#nc-check-bold")] {{rs}}
li(v-for='rs in syscheck.results') #[svg.icons.is-18.is-text: use(xlink:href='#nc-check-bold')] {{rs}}
p(v-if='!loading && syscheck.ok')
svg.icons.is-18.is-text: use(xlink:href="#nc-check-bold")
svg.icons.is-18.is-text: use(xlink:href='#nc-check-bold')
strong Looks good! No issues so far.
p(v-if='!loading && !syscheck.ok') #[svg.icons.is-18.is-text: use(xlink:href="#nc-square-remove-12")] Error: {{ syscheck.error }}
p(v-if='!loading && !syscheck.ok') #[svg.icons.is-18.is-text: use(xlink:href='#nc-square-remove-12')] Error: {{ syscheck.error }}
.panel-footer
.progress-bar: div(v-bind:style='{width: currentProgress}')
button.button.is-small.is-light-blue.is-outlined(v-on:click='proceedToWelcome', v-bind:disabled='loading') Back
......@@ -218,14 +218,14 @@ block body
span Git Repository Check
i(v-if='loading')
.panel-content.is-text
p(v-if='loading') #[svg.icons.is-24.is-text: use(xlink:href="#nc-ms-dots")] Verifying Git repository settings...
p(v-if='loading') #[svg.icons.is-24.is-text: use(xlink:href='#nc-ms-dots')] Verifying Git repository settings...
p(v-if='!loading && gitcheck.ok')
ul
li(v-for='rs in gitcheck.results') #[svg.icons.is-18.is-text: use(xlink:href="#nc-check-bold")] {{rs}}
li(v-for='rs in gitcheck.results') #[svg.icons.is-18.is-text: use(xlink:href='#nc-check-bold')] {{rs}}
p(v-if='!loading && gitcheck.ok')
svg.icons.is-18.is-text: use(xlink:href="#nc-check-bold")
svg.icons.is-18.is-text: use(xlink:href='#nc-check-bold')
strong Git settings are correct!
p(v-if='!loading && !gitcheck.ok') #[svg.icons.is-18.is-text: use(xlink:href="#nc-square-remove-12")] Error: {{ gitcheck.error }}
p(v-if='!loading && !gitcheck.ok') #[svg.icons.is-18.is-text: use(xlink:href='#nc-square-remove-12')] Error: {{ gitcheck.error }}
.panel-footer
.progress-bar: div(v-bind:style='{width: currentProgress}')
button.button.is-small.is-light-blue.is-outlined(v-on:click='proceedToGit', v-bind:disabled='loading') Back
......@@ -280,11 +280,11 @@ block body
section
p.control.is-fullwidth
label.label Connection String to Wiki.js 1.x MongoDB database
input(type='text', placeholder='mongodb://', v-model='conf.mongo', data-vv-scope='mongo', name='ipt-mongo', v-validate='{ required: true, min: 2 }')
input(type='text', placeholder='mongodb://', v-model='conf.mongo', data-vv-scope='upgrade', name='ipt-mongo', v-validate='{ required: true, min: 2 }')
span.desc A MongoDB database connection string where a Wiki.js 1.x installation is located. #[strong No alterations will be made to this database. ]
section
p.control.is-fullwidth
input#ipt-public(type='checkbox', v-model='conf.public', data-vv-scope='general', name='ipt-public')
input#ipt-public(type='checkbox', v-model='conf.public', data-vv-scope='upgrade', name='ipt-public')
label.label(for='ipt-public') Create groups based on individual permissions
span.desc User groups will be created based on existing users permissions. If multiple users have the exact same permission rules, they will be put in the same user group.
.panel-footer
......
......@@ -59,12 +59,12 @@ expect.extend({
})
describe('Code Linting', () => {
it('should pass ESLint validation', () => {
const CLIEngine = require('eslint').CLIEngine
const cli = new CLIEngine()
let report = cli.executeOnFiles(['**/*.js'])
expect(report).toESLint()
})
// it('should pass ESLint validation', () => {
// const CLIEngine = require('eslint').CLIEngine
// const cli = new CLIEngine()
// let report = cli.executeOnFiles(['**/*.js', '**/*.vue'])
// expect(report).toESLint()
// })
it('should pass PugLint validation', () => {
const PugLint = require('pug-lint')
......
'use strict'
const _ = require('lodash')
const Promise = require('bluebird')
const colors = require('colors/safe')
const fs = Promise.promisifyAll(require('fs-extra'))
......
This diff was suppressed by a .gitattributes entry.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment