Merge pull request #172 from Requarks/dev

1.0.1 Release
pull/175/head
Nicolas Giard 7 years ago committed by GitHub
commit 5f0a1d5797

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

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

@ -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": {

@ -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"
]
} }

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save