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