commit
5f0a1d5797
11
CHANGELOG.md
11
CHANGELOG.md
@ -2,11 +2,20 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
## [v1.0.0-beta.14] - Unreleased
|
## [v1.0.1] - Unreleased
|
||||||
### Added
|
### Added
|
||||||
- **History**: History section to list all changes
|
- **History**: History section to list all changes
|
||||||
- **Security**: Optional Two-Factor Authentication (2FA) protection
|
- **Security**: Optional Two-Factor Authentication (2FA) protection
|
||||||
|
|
||||||
|
## [v1.0.0] - Unreleased
|
||||||
|
### Changed
|
||||||
|
- **Misc**: Switch to Yarn for npm dependencies installation
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- **Misc**: JS/CSS is now loading properly in Safari (macOS/iOS)
|
||||||
|
- **Misc**: Process termination handling
|
||||||
|
- **Search**: siteRoot is now properly parsed in search results href
|
||||||
|
|
||||||
## [v1.0.0-beta.13] - 2017-07-09
|
## [v1.0.0-beta.13] - 2017-07-09
|
||||||
### Added
|
### Added
|
||||||
- **Admin**: Added Host Information section to System Info page
|
- **Admin**: Added Host Information section to System Info page
|
||||||
|
@ -58,7 +58,11 @@ Current and upcoming milestones *(major features only, see the [changelog](https
|
|||||||
- [x] Render line breaks by default (GitHub style)
|
- [x] Render line breaks by default (GitHub style)
|
||||||
- [x] New Localization: German
|
- [x] New Localization: German
|
||||||
|
|
||||||
### Beta 14
|
### 1.0.0
|
||||||
|
|
||||||
|
- [x] Bug fixes release
|
||||||
|
|
||||||
|
### 1.1.0
|
||||||
> *Planned for August release*
|
> *Planned for August release*
|
||||||
![Progress](http://progressed.io/bar/20)
|
![Progress](http://progressed.io/bar/20)
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
li(v-if='searchres.length === 0')
|
li(v-if='searchres.length === 0')
|
||||||
a: em {{ $t('search.nomatch') }}
|
a: em {{ $t('search.nomatch') }}
|
||||||
li(v-for='sres in searchres', v-bind:class='{ "is-active": searchmovekey === "res." + sres.entryPath }')
|
li(v-for='sres in searchres', v-bind:class='{ "is-active": searchmovekey === "res." + sres.entryPath }')
|
||||||
a(v-bind:href='siteRoot + "/" + sres.entryPath') {{ sres.title }}
|
a(v-bind:href='sres.entryPath') {{ sres.title }}
|
||||||
p.searchresults-label(v-if='searchsuggest.length > 0') {{ $t('search.didyoumean') }}
|
p.searchresults-label(v-if='searchsuggest.length > 0') {{ $t('search.didyoumean') }}
|
||||||
ul.searchresults-list(v-if='searchsuggest.length > 0')
|
ul.searchresults-list(v-if='searchsuggest.length > 0')
|
||||||
li(v-for='sug in searchsuggest', v-bind:class='{ "is-active": searchmovekey === "sug." + sug }')
|
li(v-for='sug in searchsuggest', v-bind:class='{ "is-active": searchmovekey === "sug." + sug }')
|
||||||
@ -39,7 +39,10 @@ export default {
|
|||||||
self.searchactive = true
|
self.searchactive = true
|
||||||
self.searchload++
|
self.searchload++
|
||||||
socket.emit('search', { terms: val }, (data) => {
|
socket.emit('search', { terms: val }, (data) => {
|
||||||
self.searchres = data.match
|
self.searchres = self._.map(data.match, m => {
|
||||||
|
m.entryPath = `${siteRoot}/${m.entryPath}`
|
||||||
|
return m
|
||||||
|
})
|
||||||
self.searchsuggest = data.suggest
|
self.searchsuggest = data.suggest
|
||||||
self.searchmovearr = self._.concat([], self.searchres, self.searchsuggest)
|
self.searchmovearr = self._.concat([], self.searchres, self.searchsuggest)
|
||||||
if (self.searchload > 0) { self.searchload-- }
|
if (self.searchload > 0) { self.searchload-- }
|
||||||
@ -74,7 +77,7 @@ export default {
|
|||||||
let i = this.searchmoveidx - 1
|
let i = this.searchmoveidx - 1
|
||||||
|
|
||||||
if (this.searchmovearr[i]) {
|
if (this.searchmovearr[i]) {
|
||||||
window.location.assign(siteRoot + '/' + this.searchmovearr[i].entryPath)
|
window.location.assign(this.searchmovearr[i].entryPath)
|
||||||
} else {
|
} else {
|
||||||
this.searchq = this.searchmovearr[i]
|
this.searchq = this.searchmovearr[i]
|
||||||
}
|
}
|
||||||
|
47
fuse.js
47
fuse.js
@ -9,6 +9,9 @@
|
|||||||
const colors = require('colors/safe')
|
const colors = require('colors/safe')
|
||||||
const fsbx = require('fuse-box')
|
const fsbx = require('fuse-box')
|
||||||
const nodemon = require('nodemon')
|
const nodemon = require('nodemon')
|
||||||
|
const babel = require('babel-core')
|
||||||
|
const uglify = require('uglify-es')
|
||||||
|
const fs = require('fs-extra')
|
||||||
|
|
||||||
// ======================================================
|
// ======================================================
|
||||||
// Parse cmd arguments
|
// Parse cmd arguments
|
||||||
@ -90,7 +93,7 @@ globalTasks.then(() => {
|
|||||||
fsbx.VuePlugin(),
|
fsbx.VuePlugin(),
|
||||||
['.scss', fsbx.SassPlugin({ outputStyle: (dev) ? 'nested' : 'compressed' }), fsbx.CSSPlugin()],
|
['.scss', fsbx.SassPlugin({ outputStyle: (dev) ? 'nested' : 'compressed' }), fsbx.CSSPlugin()],
|
||||||
fsbx.BabelPlugin({ comments: false, presets: ['es2015'] }),
|
fsbx.BabelPlugin({ comments: false, presets: ['es2015'] }),
|
||||||
fsbx.JSONPlugin(),
|
fsbx.JSONPlugin()
|
||||||
/* !dev && fsbx.QuantumPlugin({
|
/* !dev && fsbx.QuantumPlugin({
|
||||||
target: 'browser',
|
target: 'browser',
|
||||||
uglify: true,
|
uglify: true,
|
||||||
@ -109,7 +112,7 @@ globalTasks.then(() => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}) */
|
}) */
|
||||||
!dev && fsbx.UglifyESPlugin()
|
// !dev && fsbx.UglifyESPlugin()
|
||||||
],
|
],
|
||||||
debug: false,
|
debug: false,
|
||||||
log: true
|
log: true
|
||||||
@ -140,6 +143,46 @@ globalTasks.then(() => {
|
|||||||
watch: (args.d) ? ['server'] : ['server/configure.js'],
|
watch: (args.d) ? ['server'] : ['server/configure.js'],
|
||||||
env: { 'NODE_ENV': 'development' }
|
env: { 'NODE_ENV': 'development' }
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
console.info(colors.yellow.bold('\nTranspiling vendor bundle...'))
|
||||||
|
let appCode = babel.transform(fs.readFileSync('./assets/js/app.js', 'utf8'), {
|
||||||
|
babelrc: false,
|
||||||
|
compact: false,
|
||||||
|
filename: 'app.js',
|
||||||
|
plugins: ['transform-object-assign']
|
||||||
|
}).code
|
||||||
|
let vendorCode = babel.transform(fs.readFileSync('./assets/js/vendor.js', 'utf8'), {
|
||||||
|
babelrc: false,
|
||||||
|
comments: false,
|
||||||
|
compact: false,
|
||||||
|
filename: 'vendor.js',
|
||||||
|
plugins: [
|
||||||
|
'transform-es2015-arrow-functions',
|
||||||
|
'transform-es2015-block-scoped-functions',
|
||||||
|
'transform-es2015-block-scoping',
|
||||||
|
'transform-es2015-classes',
|
||||||
|
'transform-es2015-computed-properties',
|
||||||
|
'transform-es2015-destructuring',
|
||||||
|
'transform-es2015-duplicate-keys',
|
||||||
|
'transform-es2015-for-of',
|
||||||
|
'transform-es2015-function-name',
|
||||||
|
'transform-es2015-literals',
|
||||||
|
'transform-es2015-object-super',
|
||||||
|
'transform-es2015-parameters',
|
||||||
|
'transform-es2015-shorthand-properties',
|
||||||
|
'transform-es2015-spread',
|
||||||
|
'transform-es2015-sticky-regex',
|
||||||
|
'transform-es2015-template-literals',
|
||||||
|
'transform-es2015-typeof-symbol',
|
||||||
|
'transform-es2015-unicode-regex'
|
||||||
|
]
|
||||||
|
}).code
|
||||||
|
console.info(colors.yellow.bold('Minifing bundles...'))
|
||||||
|
fs.writeFileSync('./assets/js/vendor.js', uglify.minify(vendorCode).code, 'utf8')
|
||||||
|
fs.writeFileSync('./assets/js/app.js', uglify.minify(appCode).code, 'utf8')
|
||||||
|
fs.writeFileSync('./assets/js/configure.js', uglify.minify(fs.readFileSync('./assets/js/configure.js', 'utf8')).code, 'utf8')
|
||||||
|
console.info(colors.green.bold('\nBUILD SUCCEEDED.'))
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.error(colors.red(' X Bundle compilation failed! ' + err.message))
|
console.error(colors.red(' X Bundle compilation failed! ' + err.message))
|
||||||
|
@ -138,12 +138,24 @@ const tasks = {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* Install Yarn
|
||||||
|
*/
|
||||||
|
installYarn() {
|
||||||
|
ora.text = 'Installing Yarn...'
|
||||||
|
return exec.stdout('npm', ['install', '-g', 'yarn'], {
|
||||||
|
cwd: installDir
|
||||||
|
}).then(results => {
|
||||||
|
ora.text = 'Yarn installed successfully.'
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* Install npm dependencies
|
* Install npm dependencies
|
||||||
*/
|
*/
|
||||||
installDependencies() {
|
installDependencies() {
|
||||||
ora.text = 'Installing Wiki.js npm dependencies...'
|
ora.text = 'Installing Wiki.js npm dependencies...'
|
||||||
return exec.stdout('npm', ['install', '--only=production', '--no-optional'], {
|
return exec.stdout('yarn', ['install', '--production', '--ignore-optional'], {
|
||||||
cwd: installDir
|
cwd: installDir
|
||||||
}).then(results => {
|
}).then(results => {
|
||||||
ora.text = 'Wiki.js npm dependencies installed successfully.'
|
ora.text = 'Wiki.js npm dependencies installed successfully.'
|
||||||
@ -247,6 +259,9 @@ Promise.join(
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
isContainerBased && console.info('>> Creating config file...')
|
isContainerBased && console.info('>> Creating config file...')
|
||||||
return tasks.ensureConfigFile()
|
return tasks.ensureConfigFile()
|
||||||
|
}).then(() => {
|
||||||
|
isContainerBased && console.info('>> Installing Yarn...')
|
||||||
|
return tasks.installYarn()
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
isContainerBased && console.info('>> Installing dependencies...')
|
isContainerBased && console.info('>> Installing dependencies...')
|
||||||
return tasks.installDependencies()
|
return tasks.installDependencies()
|
||||||
|
2
npm/package-lock.json
generated
2
npm/package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "wiki.js",
|
"name": "wiki.js",
|
||||||
"version": "1.0.0-beta.13.1",
|
"version": "1.0.1",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"amp": {
|
"amp": {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "wiki.js",
|
"name": "wiki.js",
|
||||||
"version": "1.0.0-beta.13.2",
|
"version": "1.0.1",
|
||||||
"description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown",
|
"description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown",
|
||||||
"main": "install.js",
|
"main": "install.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
27
package.json
27
package.json
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "wiki",
|
"name": "wiki",
|
||||||
"version": "1.0.0-beta.13",
|
"version": "1.0.1",
|
||||||
"description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown",
|
"description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown",
|
||||||
"main": "server.js",
|
"main": "wiki.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node wiki start",
|
"start": "node wiki start",
|
||||||
"stop": "node wiki stop",
|
"stop": "node wiki stop",
|
||||||
@ -37,7 +37,7 @@
|
|||||||
"node": ">=4.6"
|
"node": ">=4.6"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"auto-load": "~2.1.0",
|
"auto-load": "~3.0.0",
|
||||||
"axios": "~0.16.2",
|
"axios": "~0.16.2",
|
||||||
"bcryptjs-then": "~1.0.1",
|
"bcryptjs-then": "~1.0.1",
|
||||||
"bluebird": "~3.5.0",
|
"bluebird": "~3.5.0",
|
||||||
@ -46,7 +46,7 @@
|
|||||||
"cheerio": "~1.0.0-rc.2",
|
"cheerio": "~1.0.0-rc.2",
|
||||||
"child-process-promise": "~2.2.1",
|
"child-process-promise": "~2.2.1",
|
||||||
"chokidar": "~1.7.0",
|
"chokidar": "~1.7.0",
|
||||||
"compression": "~1.6.2",
|
"compression": "~1.7.0",
|
||||||
"connect-flash": "~0.1.1",
|
"connect-flash": "~0.1.1",
|
||||||
"connect-mongo": "~1.3.2",
|
"connect-mongo": "~1.3.2",
|
||||||
"cookie-parser": "~1.4.3",
|
"cookie-parser": "~1.4.3",
|
||||||
@ -60,7 +60,7 @@
|
|||||||
"file-type": "~5.2.0",
|
"file-type": "~5.2.0",
|
||||||
"filesize.js": "~1.0.2",
|
"filesize.js": "~1.0.2",
|
||||||
"follow-redirects": "~1.2.4",
|
"follow-redirects": "~1.2.4",
|
||||||
"fs-extra": "~3.0.1",
|
"fs-extra": "~4.0.0",
|
||||||
"git-wrapper2-promise": "~0.2.9",
|
"git-wrapper2-promise": "~0.2.9",
|
||||||
"highlight.js": "~9.12.0",
|
"highlight.js": "~9.12.0",
|
||||||
"i18next": "~8.4.3",
|
"i18next": "~8.4.3",
|
||||||
@ -89,7 +89,7 @@
|
|||||||
"moment": "~2.18.1",
|
"moment": "~2.18.1",
|
||||||
"moment-timezone": "~0.5.13",
|
"moment-timezone": "~0.5.13",
|
||||||
"mongodb": "~2.2.30",
|
"mongodb": "~2.2.30",
|
||||||
"mongoose": "^4.11.1",
|
"mongoose": "~4.11.1",
|
||||||
"multer": "~1.3.0",
|
"multer": "~1.3.0",
|
||||||
"node-2fa": "~1.1.2",
|
"node-2fa": "~1.1.2",
|
||||||
"node-graceful": "~0.2.3",
|
"node-graceful": "~0.2.3",
|
||||||
@ -104,13 +104,13 @@
|
|||||||
"passport-slack": "0.0.7",
|
"passport-slack": "0.0.7",
|
||||||
"passport-windowslive": "~1.0.2",
|
"passport-windowslive": "~1.0.2",
|
||||||
"passport.socketio": "~3.7.0",
|
"passport.socketio": "~3.7.0",
|
||||||
"pm2": "~2.5.0",
|
"pm2": "~2.6.1",
|
||||||
"pug": "~2.0.0-rc.2",
|
"pug": "~2.0.0-rc.2",
|
||||||
"read-chunk": "~2.0.0",
|
"read-chunk": "~2.0.0",
|
||||||
"remove-markdown": "~0.2.0",
|
"remove-markdown": "~0.2.0",
|
||||||
"request": "~2.81.0",
|
"request": "~2.81.0",
|
||||||
"search-index-adder": "~0.3.9",
|
"search-index-adder": "~0.3.9",
|
||||||
"search-index-searcher": "~0.2.8",
|
"search-index-searcher": "~0.2.10",
|
||||||
"semver": "~5.3.0",
|
"semver": "~5.3.0",
|
||||||
"serve-favicon": "~2.4.3",
|
"serve-favicon": "~2.4.3",
|
||||||
"simplemde": "~1.11.2",
|
"simplemde": "~1.11.2",
|
||||||
@ -125,21 +125,22 @@
|
|||||||
"yargs": "~8.0.1"
|
"yargs": "~8.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@glimpse/glimpse": "~0.21.5",
|
"@glimpse/glimpse": "~0.22.13",
|
||||||
"@panter/vue-i18next": "~0.5.0",
|
"@panter/vue-i18next": "~0.5.0",
|
||||||
"babel-cli": "~6.24.1",
|
"babel-cli": "~6.24.1",
|
||||||
"babel-jest": "~20.0.3",
|
"babel-jest": "~20.0.3",
|
||||||
|
"babel-plugin-transform-object-assign": "~6.22.0",
|
||||||
"babel-preset-es2015": "~6.24.1",
|
"babel-preset-es2015": "~6.24.1",
|
||||||
"brace": "~0.10.0",
|
"brace": "~0.10.0",
|
||||||
"colors": "~1.1.2",
|
"colors": "~1.1.2",
|
||||||
"consolidate": "~0.14.5",
|
"consolidate": "~0.14.5",
|
||||||
"eslint": "~4.1.1",
|
"eslint": "~4.3.0",
|
||||||
"eslint-config-standard": "~10.2.1",
|
"eslint-config-standard": "~10.2.1",
|
||||||
"eslint-plugin-import": "~2.7.0",
|
"eslint-plugin-import": "~2.7.0",
|
||||||
"eslint-plugin-node": "~5.1.0",
|
"eslint-plugin-node": "~5.1.0",
|
||||||
"eslint-plugin-promise": "~3.5.0",
|
"eslint-plugin-promise": "~3.5.0",
|
||||||
"eslint-plugin-standard": "~3.0.1",
|
"eslint-plugin-standard": "~3.0.1",
|
||||||
"fuse-box": "~2.2.0",
|
"fuse-box": "~2.2.1",
|
||||||
"i18next-xhr-backend": "~1.4.2",
|
"i18next-xhr-backend": "~1.4.2",
|
||||||
"jest": "~20.0.4",
|
"jest": "~20.0.4",
|
||||||
"jquery": "~3.2.1",
|
"jquery": "~3.2.1",
|
||||||
@ -156,11 +157,11 @@
|
|||||||
"typescript": "~2.4.1",
|
"typescript": "~2.4.1",
|
||||||
"uglify-es": "~3.0.24",
|
"uglify-es": "~3.0.24",
|
||||||
"vee-validate": "~2.0.0-rc.6",
|
"vee-validate": "~2.0.0-rc.6",
|
||||||
"vue": "~2.3.4",
|
"vue": "~2.4.2",
|
||||||
"vue-clipboards": "~1.0.2",
|
"vue-clipboards": "~1.0.2",
|
||||||
"vue-lodash": "~1.0.3",
|
"vue-lodash": "~1.0.3",
|
||||||
"vue-resource": "~1.3.4",
|
"vue-resource": "~1.3.4",
|
||||||
"vue-template-compiler": "~2.3.4",
|
"vue-template-compiler": "~2.4.2",
|
||||||
"vue-template-es2015-compiler": "~1.5.3",
|
"vue-template-es2015-compiler": "~1.5.3",
|
||||||
"vuex": "~2.3.1"
|
"vuex": "~2.3.1"
|
||||||
},
|
},
|
||||||
|
@ -11,5 +11,11 @@
|
|||||||
"strictNullChecks": true,
|
"strictNullChecks": true,
|
||||||
"suppressImplicitAnyIndexErrors": true,
|
"suppressImplicitAnyIndexErrors": true,
|
||||||
"target": "es5"
|
"target": "es5"
|
||||||
}
|
},
|
||||||
|
"exclude": [
|
||||||
|
".fusebox",
|
||||||
|
"data",
|
||||||
|
"node_modules",
|
||||||
|
"repo"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user