|
@ -156,7 +156,7 @@ module.exports = { |
|
|
// Cache to disk
|
|
|
// Cache to disk
|
|
|
|
|
|
|
|
|
if(options.cache) { |
|
|
if(options.cache) { |
|
|
let cacheData = BSON.serialize(pageData, false, false, false); |
|
|
let cacheData = BSON.serialize(_.pick(pageData, ['html', 'meta', 'tree', 'parent']), false, false, false); |
|
|
return fs.writeFileAsync(cpath, cacheData).catch((err) => { |
|
|
return fs.writeFileAsync(cpath, cacheData).catch((err) => { |
|
|
winston.error('Unable to write to cache! Performance may be affected.'); |
|
|
winston.error('Unable to write to cache! Performance may be affected.'); |
|
|
return true; |
|
|
return true; |
|
@ -177,34 +177,6 @@ module.exports = { |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Fetches a text version of a Markdown-formatted document |
|
|
|
|
|
* |
|
|
|
|
|
* @param {String} entryPath The entry path |
|
|
|
|
|
* @return {String} Text-only version |
|
|
|
|
|
*/ |
|
|
|
|
|
fetchIndexableVersion(entryPath) { |
|
|
|
|
|
|
|
|
|
|
|
let self = this; |
|
|
|
|
|
|
|
|
|
|
|
return self.fetchOriginal(entryPath, { |
|
|
|
|
|
parseMarkdown: false, |
|
|
|
|
|
parseMeta: true, |
|
|
|
|
|
parseTree: false, |
|
|
|
|
|
includeMarkdown: true, |
|
|
|
|
|
includeParentInfo: true, |
|
|
|
|
|
cache: false |
|
|
|
|
|
}).then((pageData) => { |
|
|
|
|
|
return { |
|
|
|
|
|
entryPath, |
|
|
|
|
|
meta: pageData.meta, |
|
|
|
|
|
parent: pageData.parent || {}, |
|
|
|
|
|
text: mark.removeMarkdown(pageData.markdown) |
|
|
|
|
|
}; |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Parse raw url path and make it safe |
|
|
* Parse raw url path and make it safe |
|
|
* |
|
|
* |
|
@ -314,13 +286,48 @@ module.exports = { |
|
|
return fs.statAsync(fpath).then((st) => { |
|
|
return fs.statAsync(fpath).then((st) => { |
|
|
if(st.isFile()) { |
|
|
if(st.isFile()) { |
|
|
return self.makePersistent(entryPath, contents).then(() => { |
|
|
return self.makePersistent(entryPath, contents).then(() => { |
|
|
return self.fetchOriginal(entryPath, {}); |
|
|
return self.updateCache(entryPath); |
|
|
}); |
|
|
}); |
|
|
} else { |
|
|
} else { |
|
|
return Promise.reject(new Error('Entry does not exist!')); |
|
|
return Promise.reject(new Error('Entry does not exist!')); |
|
|
} |
|
|
} |
|
|
}).catch((err) => { |
|
|
}).catch((err) => { |
|
|
return Promise.reject(new Error('Entry does not exist!')); |
|
|
winston.error(err); |
|
|
|
|
|
return Promise.reject(new Error('Failed to save document.')); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Update local cache and search index |
|
|
|
|
|
* |
|
|
|
|
|
* @param {String} entryPath The entry path |
|
|
|
|
|
* @return {Promise} Promise of the operation |
|
|
|
|
|
*/ |
|
|
|
|
|
updateCache(entryPath) { |
|
|
|
|
|
|
|
|
|
|
|
let self = this; |
|
|
|
|
|
|
|
|
|
|
|
return self.fetchOriginal(entryPath, { |
|
|
|
|
|
parseMarkdown: true, |
|
|
|
|
|
parseMeta: true, |
|
|
|
|
|
parseTree: true, |
|
|
|
|
|
includeMarkdown: true, |
|
|
|
|
|
includeParentInfo: true, |
|
|
|
|
|
cache: true |
|
|
|
|
|
}).then((pageData) => { |
|
|
|
|
|
return { |
|
|
|
|
|
entryPath, |
|
|
|
|
|
meta: pageData.meta, |
|
|
|
|
|
parent: pageData.parent || {}, |
|
|
|
|
|
text: mark.removeMarkdown(pageData.markdown) |
|
|
|
|
|
}; |
|
|
|
|
|
}).then((content) => { |
|
|
|
|
|
ws.emit('searchAdd', { |
|
|
|
|
|
auth: WSInternalKey, |
|
|
|
|
|
content |
|
|
|
|
|
}); |
|
|
|
|
|
return true; |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
@ -339,7 +346,7 @@ module.exports = { |
|
|
return self.exists(entryPath).then((docExists) => { |
|
|
return self.exists(entryPath).then((docExists) => { |
|
|
if(!docExists) { |
|
|
if(!docExists) { |
|
|
return self.makePersistent(entryPath, contents).then(() => { |
|
|
return self.makePersistent(entryPath, contents).then(() => { |
|
|
return self.fetchOriginal(entryPath, {}); |
|
|
return self.updateCache(entryPath); |
|
|
}); |
|
|
}); |
|
|
} else { |
|
|
} else { |
|
|
return Promise.reject(new Error('Entry already exists!')); |
|
|
return Promise.reject(new Error('Entry already exists!')); |
|
|
xxxxxxxxxx