Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'hexo-fs' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
it('write file if not exist', () => {
const src = pathFn.join(hexo.source_dir, 'test.txt');
const dest = pathFn.join(hexo.public_dir, 'test.txt');
const content = 'test';
// Add some source files
return fs.writeFile(src, content).then(() => // First generation
generate()).then(() => // Delete generated files
fs.unlink(dest)).then(() => // Second generation
generate()).then(() => fs.readFile(dest)).then(result => {
result.should.eql(content);
// Remove source files and generated files
return Promise.all([
fs.unlink(src),
fs.unlink(dest)
]);
});
});
it('write multiconfig to specified path', () => {
const outputPath = osFn.tmpdir();
const combinedPath = pathFn.join(outputPath, '_multiconfig.yml');
mcp(base, 'test1.yml', outputPath).should.not.eql(combinedPath);
mcp(base, 'test1.yml,test2.yml', outputPath).should.eql(combinedPath);
mcp(base, 'test1.yml,test1.json', outputPath).should.eql(combinedPath);
mcp(base, 'test1.json,test2.json', outputPath).should.eql(combinedPath);
mcp(base, 'notafile.yml,test1.json', outputPath).should.eql(combinedPath);
mcp(base, 'notafile.yml,alsonotafile.json', outputPath).should.not.eql(combinedPath);
// delete /tmp/_multiconfig.yml
fs.unlinkSync(combinedPath);
hexo.log.reader[1].type.should.eql('debug');
hexo.log.reader[1].msg.should.eql(`Writing _multiconfig.yml to ${combinedPath}`);
hexo.log.reader[2].type.should.eql('info');
hexo.log.reader[2].msg.should.eql('Config based on 2 files');
hexo.log.reader[6].type.should.eql('warning');
hexo.log.reader[6].msg.should.eql('Config file notafile.yml not found.');
hexo.log.reader[7].type.should.eql('info');
hexo.log.reader[7].msg.should.eql('Config based on 1 files');
hexo.log.reader[11].type.should.eql('error');
hexo.log.reader[11].msg.should.eql('No config files found.'
+ ' Using _config.yml.');
});
});
generate()).then(() => // Change the generated file
fs.writeFile(dest, newContent)).then(() => // Second generation
generate()).then(() => // Read the generated file
return spawn('git', ['clone', fakeRemote, validateDir, '--branch', branch]).then(() => {
// Check the branch name
return fs.readFile(pathFn.join(validateDir, '.git', 'HEAD'));
}).then(content => {
content.trim().should.eql('ref: refs/heads/' + branch);
}
let title = '';
let path = '';
if (rCaptionTitleFile.test(arg)) {
const match = arg.match(rCaptionTitleFile);
title = match[1];
path = match[3];
}
// Exit if path is not defined
if (!path) return;
const src = join(ctx.source_dir, codeDir, path);
return fs.exists(src).then(exist => {
if (exist) return fs.readFile(src);
}).then(code => {
if (!code) return;
code = stripIndent(code).trim();
if (!config.enable) {
return `<pre><code>${code}</code></pre>`;
}
// If the title is not defined, use file name instead
title = title || basename(path);
// If the language is not defined, use file extension instead
lang = lang || extname(path).substring(1);
fs.writeFile(full_source, raw, function(err){
if (err) return callback(err);
if (full_source !== prev_full) {
fs.unlinkSync(prev_full)
// move asset dir
var assetPrev = removeExtname(prev_full);
var assetDest = removeExtname(full_source);
fs.exists(assetPrev).then(function(exist) {
if (exist) {
fs.copyDir(assetPrev, assetDest).then(function() {
fs.rmdir(assetPrev);
});
}
});
}
hexo.source.process([post.source]).then(function () {
// console.log(post.full_source, post.source)
callback(null, hexo.model(model).get(id));
});
});
});
function lazyProcess(htmlContent) {
let defaultImagePath = __dirname + '/default-image.json';
let loadingImage = this.config.lazyload.loadingImg;
if (!loadingImage) {
loadingImage = JSON.parse(fs.readFileSync(defaultImagePath)).default;
}
return htmlContent.replace(//gi, function (str, p1, p2) {
// might be duplicate
if(/data-original/gi.test(str)){
return str;
}
if(/src="data:image(.*?)/gi.test(str)) {
return str;
}
if(/no-lazy/gi.test(str)) {
return str;
}
return str.replace(p2, loadingImage + '" data-original="' + p2);
});
}
if (data.layout === 'draft') data.layout = 'post';
const ctx = this.context;
const { config } = ctx;
const draftDir = join(ctx.source_dir, '_drafts');
const slug = slugize(data.slug.toString(), {transform: config.filename_case});
data.slug = slug;
const regex = new RegExp(`^${escapeRegExp(slug)}(?:[^\\/\\\\]+)`);
let src = '';
const result = {};
data.layout = (data.layout || config.default_layout).toLowerCase();
// Find the draft
return fs.listDir(draftDir).then(list => {
return list.find(item => regex.test(item));
}).then(item => {
if (!item) throw new Error(`Draft "${slug}" does not exist.`);
// Read the content
src = join(draftDir, item);
return fs.readFile(src);
}).then(content => {
// Create post
Object.assign(data, yfm(content));
data.content = data._content;
delete data._content;
return this.create(data, replace).then(post => {
result.path = post.path;
result.content = post.content;
entry.should.have.property('imageurl');
entry.should.have.property('slug');
entry.should.not.have.property('localimage');
// TODO: deal with urls that do not parse
const imageUrl = url.parse(entry.imageurl);
const imageFilename = imageUrl.pathname.split('/').pop();
// TODO: figure out if this is the safest way to construct local image paths
// Construct the local image path
const localPath = `${hexo.config.source_dir}/images/${entry.slug}_${imageFilename}`;
const relativeUrl = `/images/${entry.slug}_${imageFilename}`;
// stat each image as a jpg, then as png, see if it exists
try {
fs.statSync(localPath);
// if exists, add localimage to entry
entry['localimage'] = relativeUrl;
} catch (error) {
// Do nothing! Pass the entry through
}
});
resolve(entries);
fs.writeFile(full_source, raw, function(err){
if (err) return callback(err);
if (full_source !== prev_full) {
fs.unlinkSync(prev_full)
// move asset dir
var assetPrev = removeExtname(prev_full);
var assetDest = removeExtname(full_source);
fs.exists(assetPrev).then(function(exist) {
if (exist) {
fs.copyDir(assetPrev, assetDest).then(function() {
fs.rmdir(assetPrev);
});
}
});
}
hexo.source.process([post.source]).then(function () {
// console.log(post.full_source, post.source)
callback(null, hexo.model(model).get(id));
});
});