fix: eslint for vue components

This commit is contained in:
NGPixel 2017-10-29 21:36:05 -04:00
parent 72e3bacc2e
commit 98d311145b
45 changed files with 953 additions and 1253 deletions

View File

@ -1,14 +0,0 @@
{
"extends": "requarks",
"env": {
"node": true,
"es6": true,
"jest": true
},
"globals": {
"document": false,
"navigator": false,
"window": false,
"FuseBox": false
}
}

12
.eslintrc.yml Normal file
View File

@ -0,0 +1,12 @@
extends:
- requarks
- plugin:vue/recommended
env:
node: true
es6: true
jest: true
globals:
document: false
navigator: false
window: false
FuseBox: false

View File

@ -4,5 +4,9 @@
"puglint.enable": true,
"standard.enable": false,
"editor.formatOnSave": false,
"editor.tabSize": 2
"editor.tabSize": 2,
"eslint.validate": [
"javascript",
"vue"
]
}

View File

@ -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>

View File

@ -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: '',
gitAuthPass: '',
gitAuthSSL: true,
gitShowUserEmail: true,
gitServerEmail: '',
mongo: 'mongodb://',
adminEmail: '',
adminPassword: '',
adminPasswordConfirm: ''
adminPasswordConfirm: '',
gitAuthPass: '',
gitAuthSSHKey: '',
gitAuthSSL: true,
gitAuthType: 'ssh',
gitAuthUser: '',
gitBranch: 'master',
gitServerEmail: '',
gitShowUserEmail: true,
gitUrl: '',
gitUseRemote: (siteConfig.git !== false),
lang: siteConfig.lang || 'en',
mongo: 'mongodb://',
path: siteConfig.path || '/',
pathRepo: './repo',
port: siteConfig.port || 80,
public: (siteConfig.public === true),
telemetry: true,
title: siteConfig.title || 'Wiki',
upgrade: false
},
considerations: {
https: false,

View File

@ -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)

View File

@ -128,6 +128,8 @@
</template>
<script>
/* global $, socket */
export default {
name: 'editor-file',
data () {

View File

@ -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 => {

View File

@ -24,6 +24,8 @@
</template>
<script>
/* global CONSTANTS, graphQL, siteConfig */
export default {
name: 'login',
data() {
@ -67,4 +69,3 @@ export default {
}
}
</script>

View File

@ -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)

View File

@ -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)

View File

@ -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 = ''
}

View File

@ -15,6 +15,8 @@
</template>
<script>
/* global socket, siteRoot */
export default {
name: 'tree',
data () {

View File

@ -1,310 +0,0 @@
'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)
}
}
})
})

View File

@ -1,4 +1,4 @@
'use strict'
/* global wikijs */
export default {
namespaced: true,

View File

@ -1,4 +1,4 @@
'use strict'
/* global wikijs */
export default {
namespaced: true,

View File

@ -1,4 +1,4 @@
'use strict'
/* global wikijs */
export default {
namespaced: true,

View File

@ -1,4 +1,4 @@
'use strict'
/* global wikijs */
export default {
namespaced: true,

View File

@ -1,5 +1,3 @@
'use strict'
export default {
namespaced: true,
state: {

View File

@ -1,4 +1,4 @@
'use strict'
/* global wikijs */
export default {
namespaced: true,

View File

@ -1,5 +1,3 @@
'use strict'
export default {
namespaced: true,
state: {

View File

@ -1,5 +1,3 @@
'use strict'
export default {
namespaced: true,
state: {

View File

@ -1,5 +1,3 @@
'use strict'
export default {
namespaced: true,
state: {

View File

@ -1,5 +1,3 @@
'use strict'
export default {
namespaced: true,
state: {

View File

@ -1,5 +1,3 @@
'use strict'
export default {
namespaced: true,
state: {

View File

@ -1,5 +1,3 @@
'use strict'
export default {
namespaced: true,
state: {

View File

@ -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",

View File

@ -1,4 +1,4 @@
'use strict'
/* global appdata, ROOTPATH */
const crypto = require('crypto')
const path = require('path')

View File

@ -1,6 +1,6 @@
'use strict'
/* global appdata, rights */
/* global rights */
/**
* Authentication middleware

View File

@ -1,4 +1,4 @@
/* global wiki */
/* global wiki, appconfig */
const Promise = require('bluebird')
const bcrypt = require('bcryptjs-then')

View File

@ -1,5 +1,3 @@
'use strict'
/* global wiki */
const Promise = require('bluebird')
@ -78,7 +76,7 @@ module.exports = {
return fs.readFileAsync(cpath).then((contents) => {
return JSON.parse(contents)
}).catch((err) => { // eslint-disable-line handle-callback-err
winston.error('Corrupted cache file. Deleting it...')
wiki.logger.error('Corrupted cache file. Deleting it...')
fs.unlinkSync(cpath)
return false
})
@ -115,7 +113,7 @@ module.exports = {
return fs.statAsync(fpath).then((st) => {
if (st.isFile()) {
return fs.readFileAsync(fpath, 'utf8').then((contents) => {
let htmlProcessor = (options.parseMarkdown) ? mark.parseContent(contents) : Promise.resolve('')
let htmlProcessor = (options.parseMarkdown) ? wiki.mark.parseContent(contents) : Promise.resolve('')
// Parse contents
@ -123,8 +121,8 @@ module.exports = {
let pageData = {
markdown: (options.includeMarkdown) ? contents : '',
html,
meta: (options.parseMeta) ? mark.parseMeta(contents) : {},
tree: (options.parseTree) ? mark.parseTree(contents) : []
meta: (options.parseMeta) ? wiki.mark.parseMeta(contents) : {},
tree: (options.parseTree) ? wiki.mark.parseTree(contents) : []
}
if (!pageData.meta.title) {
@ -147,8 +145,8 @@ module.exports = {
if (options.cache) {
let cacheData = JSON.stringify(_.pick(pageData, ['html', 'meta', 'tree', 'parent']), false, false, false)
return fs.writeFileAsync(cpath, cacheData).catch((err) => {
winston.error('Unable to write to cache! Performance may be affected.')
winston.error(err)
wiki.logger.error('Unable to write to cache! Performance may be affected.')
wiki.logger.error(err)
return true
})
} else {
@ -161,7 +159,7 @@ module.exports = {
return false
}
}).catch((err) => { // eslint-disable-line handle-callback-err
throw new Promise.OperationalError(lang.t('errors:notexist', { path: entryPath }))
throw new Promise.OperationalError(wiki.lang.t('errors:notexist', { path: entryPath }))
})
},
@ -181,7 +179,7 @@ module.exports = {
return fs.statAsync(fpath).then((st) => {
if (st.isFile()) {
return fs.readFileAsync(fpath, 'utf8').then((contents) => {
let pageMeta = mark.parseMeta(contents)
let pageMeta = wiki.mark.parseMeta(contents)
return {
path: parentPath,
@ -190,11 +188,11 @@ module.exports = {
}
})
} else {
return Promise.reject(new Error(lang.t('errors:parentinvalid')))
return Promise.reject(new Error(wiki.lang.t('errors:parentinvalid')))
}
})
} else {
return Promise.reject(new Error(lang.t('errors:parentisroot')))
return Promise.reject(new Error(wiki.lang.t('errors:parentisroot')))
}
},
@ -214,15 +212,15 @@ module.exports = {
if (st.isFile()) {
return self.makePersistent(entryPath, contents, author).then(() => {
return self.updateCache(entryPath).then(entry => {
return search.add(entry)
return wiki.search.add(entry)
})
})
} else {
return Promise.reject(new Error(lang.t('errors:notexist', { path: entryPath })))
return Promise.reject(new Error(wiki.lang.t('errors:notexist', { path: entryPath })))
}
}).catch((err) => {
winston.error(err)
return Promise.reject(new Error(lang.t('errors:savefailed')))
wiki.logger.error(err)
return Promise.reject(new Error(wiki.lang.t('errors:savefailed')))
})
},
@ -243,21 +241,21 @@ module.exports = {
includeParentInfo: true,
cache: true
}).catch(err => {
winston.error(err)
wiki.logger.error(err)
return err
}).then((pageData) => {
return {
entryPath,
meta: pageData.meta,
parent: pageData.parent || {},
text: mark.removeMarkdown(pageData.markdown)
text: wiki.mark.removeMarkdown(pageData.markdown)
}
}).catch(err => {
winston.error(err)
wiki.logger.error(err)
return err
}).then((content) => {
let parentPath = _.chain(content.entryPath).split('/').initial().join('/').value()
return db.Entry.findOneAndUpdate({
return wiki.db.Entry.findOneAndUpdate({
_id: content.entryPath
}, {
_id: content.entryPath,
@ -280,7 +278,7 @@ module.exports = {
return result
})
}).catch(err => {
winston.error(err)
wiki.logger.error(err)
return err
})
},
@ -291,12 +289,12 @@ module.exports = {
* @returns {Promise<Boolean>} Promise of the operation
*/
updateTreeInfo() {
return db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => {
return wiki.db.Entry.distinct('parentPath', { parentPath: { $ne: '' } }).then(allPaths => {
if (allPaths.length > 0) {
return Promise.map(allPaths, pathItem => {
let parentPath = _.chain(pathItem).split('/').initial().join('/').value()
let guessedTitle = _.chain(pathItem).split('/').last().startCase().value()
return db.Entry.update({ _id: pathItem }, {
return wiki.db.Entry.update({ _id: pathItem }, {
$set: { isDirectory: true },
$setOnInsert: { isEntry: false, title: guessedTitle, parentPath }
}, { upsert: true })
@ -322,15 +320,15 @@ module.exports = {
if (!docExists) {
return self.makePersistent(entryPath, contents, author).then(() => {
return self.updateCache(entryPath).then(entry => {
return search.add(entry)
return wiki.search.add(entry)
})
})
} else {
return Promise.reject(new Error(lang.t('errors:alreadyexists')))
return Promise.reject(new Error(wiki.lang.t('errors:alreadyexists')))
}
}).catch((err) => {
winston.error(err)
return Promise.reject(new Error(lang.t('errors:generic')))
wiki.logger.error(err)
return Promise.reject(new Error(wiki.lang.t('errors:generic')))
})
},
@ -346,7 +344,7 @@ module.exports = {
let fpath = entryHelper.getFullPath(entryPath)
return fs.outputFileAsync(fpath, contents).then(() => {
return git.commitDocument(entryPath, author)
return wiki.git.commitDocument(entryPath, author)
})
},
@ -362,11 +360,11 @@ module.exports = {
let self = this
if (_.isEmpty(entryPath) || entryPath === 'home') {
return Promise.reject(new Error(lang.t('errors:invalidpath')))
return Promise.reject(new Error(wiki.lang.t('errors:invalidpath')))
}
return git.moveDocument(entryPath, newEntryPath).then(() => {
return git.commitDocument(newEntryPath, author).then(() => {
return wiki.git.moveDocument(entryPath, newEntryPath).then(() => {
return wiki.git.commitDocument(newEntryPath, author).then(() => {
// Delete old cache version
let oldEntryCachePath = entryHelper.getCachePath(entryPath)
@ -374,14 +372,14 @@ module.exports = {
// Delete old index entry
search.delete(entryPath)
wiki.search.delete(entryPath)
// Create cache for new entry
return Promise.join(
db.Entry.deleteOne({ _id: entryPath }),
wiki.db.Entry.deleteOne({ _id: entryPath }),
self.updateCache(newEntryPath).then(entry => {
return search.add(entry)
return wiki.search.add(entry)
})
)
})
@ -397,20 +395,20 @@ module.exports = {
*/
remove(entryPath, author) {
if (_.isEmpty(entryPath) || entryPath === 'home') {
return Promise.reject(new Error(lang.t('errors:invalidpath')))
return Promise.reject(new Error(wiki.lang.t('errors:invalidpath')))
}
return git.deleteDocument(entryPath, author).then(() => {
return wiki.git.deleteDocument(entryPath, author).then(() => {
// Delete old cache version
let oldEntryCachePath = entryHelper.getCachePath(entryPath)
fs.unlinkAsync(oldEntryCachePath).catch((err) => { return true }) // eslint-disable-line handle-callback-err
// Delete old index entry
search.delete(entryPath)
wiki.search.delete(entryPath)
// Delete entry
return db.Entry.deleteOne({ _id: entryPath })
return wiki.db.Entry.deleteOne({ _id: entryPath })
})
},
@ -423,7 +421,7 @@ module.exports = {
getStarter(entryPath) {
let formattedTitle = _.startCase(_.last(_.split(entryPath, '/')))
return fs.readFileAsync(path.join(SERVERPATH, 'app/content/create.md'), 'utf8').then((contents) => {
return fs.readFileAsync(path.join(wiki.SERVERPATH, 'app/content/create.md'), 'utf8').then((contents) => {
return _.replace(contents, new RegExp('{TITLE}', 'g'), formattedTitle)
})
},
@ -436,17 +434,17 @@ module.exports = {
* @return {Promise<Array>} List of entries
*/
getFromTree(basePath, usr) {
return db.Entry.find({ parentPath: basePath }, 'title parentPath isDirectory isEntry').sort({ title: 'asc' }).then(results => {
return wiki.db.Entry.find({ parentPath: basePath }, 'title parentPath isDirectory isEntry').sort({ title: 'asc' }).then(results => {
return _.filter(results, r => {
return rights.checkRole('/' + r._id, usr.rights, 'read')
return wiki.rights.checkRole('/' + r._id, usr.rights, 'read')
})
})
},
getHistory(entryPath) {
return db.Entry.findOne({ _id: entryPath, isEntry: true }).then(entry => {
return wiki.db.Entry.findOne({ _id: entryPath, isEntry: true }).then(entry => {
if (!entry) { return false }
return git.getHistory(entryPath).then(history => {
return wiki.git.getHistory(entryPath).then(history => {
return {
meta: entry,
history

View File

@ -1,5 +1,3 @@
'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)
}

View File

@ -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')

View File

@ -1,6 +1,6 @@
'use strict'
/* global winston */
/* global winston, ROOTPATH, appconfig */
const Promise = require('bluebird')
const crypto = require('crypto')

View File

@ -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

View File

@ -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')

View File

@ -1,6 +1,3 @@
'use strict'
const _ = require('lodash')
const Promise = require('bluebird')
const colors = require('colors/safe')
const fs = Promise.promisifyAll(require('fs-extra'))

View File

@ -2575,6 +2575,13 @@ eslint-plugin-standard@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2"
eslint-plugin-vue@3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-3.13.1.tgz#875dc47a90c2e4034013b6ce1b915e5a5c6e9bf9"
dependencies:
requireindex "^1.1.0"
vue-eslint-parser "^2.0.1-beta.1"
eslint-scope@^3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
@ -2624,7 +2631,7 @@ eslint@4.10.0:
table "^4.0.1"
text-table "~0.2.0"
espree@^3.5.1:
espree@^3.3.2, espree@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e"
dependencies:
@ -6727,6 +6734,10 @@ require_optional@~1.0.0:
resolve-from "^2.0.0"
semver "^5.1.0"
requireindex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162"
resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
@ -7799,6 +7810,16 @@ vue-clipboards@1.1.0:
dependencies:
clipboard "^1.7.1"
vue-eslint-parser@^2.0.1-beta.1:
version "2.0.1-beta.1"
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.1-beta.1.tgz#7e1b3c0865905264605169497fe9e42d27c1ae60"
dependencies:
debug "^3.0.0"
eslint-scope "^3.7.1"
espree "^3.3.2"
esquery "^1.0.0"
lodash "^4.17.4"
vue-hot-reload-api@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.2.0.tgz#9a21b35ced3634434a43ee80efb7350ea8fb206d"