Best JavaScript code snippet using ava
fileController.js
Source: fileController.js
1const PATH = require('path');2const FS = require('fs');3const fse = require('fs-extra');4const catchAsync = require('../utils/catchAsync');5const AppError = require('../utils/AppError');6const readStat = require('../utils/readStat');7const { getAllItemsInDirectory } = require('./directoryController');8exports.createFile = catchAsync(async (req, res) => {9 const { path, name } = req.body;10 const content = req.body.content || '';11 if (!path) throw new AppError('Please provide a valid path.', 400);12 if (!name) throw new AppError('Please provide a valid file name.', 400);13 // Check if path exists14 await FS.promises.access(path);15 // Check if there is already file with the same name16 const stat = await readStat(PATH.join(path, name));17 if (stat)18 throw new AppError(19 `There is already a file with name '${name}' in this folder.`,20 40021 );22 await FS.promises.writeFile(PATH.join(path, name), content, 'utf-8');23 req.query = { path };24 getAllItemsInDirectory(req, res);25});26exports.renameFile = catchAsync(async (req, res) => {27 const { path, name, newName } = req.body;28 if (!path) throw new AppError('Please provide a valid path.', 400);29 if (!name) throw new AppError('Please provide a file name to rename.', 400);30 if (!newName)31 throw new AppError('Please provide a valid new file name.', 400);32 // Check if path exists33 await FS.promises.access(path);34 // Check if fullpath exists35 await FS.promises.access(PATH.join(path, name));36 // Check if there is already file with the same name37 const stat = await readStat(PATH.join(path, newName));38 if (stat)39 throw new AppError(`A file with name '${newName}' already exists.`, 400);40 await FS.promises.rename(PATH.join(path, name), PATH.join(path, newName));41 req.query = { path };42 getAllItemsInDirectory(req, res);43});44exports.deleteFile = catchAsync(async (req, res) => {45 const { path, name } = req.body;46 if (!path) throw new AppError('Please provide a valid path.', 400);47 if (!name) throw new AppError('Please provide a file name to delete.', 400);48 // Check if path exists49 await FS.promises.access(path);50 // Check if fullpath exists51 await FS.promises.access(PATH.join(path, name));52 // Check if user have permission to delete53 const stat = await readStat(PATH.join(path, name));54 if (!stat)55 throw new AppError(56 `You don't have permission to delete folder '${name}'.`,57 40058 );59 // Delete file60 await FS.promises.unlink(PATH.join(path, name));61 req.query = { path };62 getAllItemsInDirectory(req, res);63});64exports.getFileContent = catchAsync(async (req, res) => {65 const { path, name } = req.query;66 if (!path) throw new AppError('Please provide a valid path.', 400);67 if (!name)68 throw new AppError('Please provide a file name to read content.', 400);69 // Check if path exists70 await FS.promises.access(path);71 // Check if fullpath exists72 await FS.promises.access(PATH.join(path, name));73 // Check if user have permission to read content74 const stat = await readStat(PATH.join(path, name));75 if (!stat)76 throw new AppError(77 `You don't have permission to read file '${name}'.`,78 40079 );80 const supportedFiles = require('../utils/getSupportedFiles');81 const extension = PATH.extname(PATH.join(path, name)).toLowerCase();82 if (!supportedFiles.includes(extension))83 throw new AppError(84 `File with extension ${extension} do not support to view or edit.`,85 40086 );87 const content = await FS.promises.readFile(PATH.join(path, name), 'utf-8');88 res.status(200).json({89 status: 'success',90 data: {91 content,92 },93 });94});95exports.updateFileContent = catchAsync(async (req, res) => {96 const { path, name, content } = req.body;97 if (!path) throw new AppError('Please provide valid path.', 400);98 if (!name)99 throw new AppError('Please provide file name to update content.', 400);100 if (!content)101 throw new AppError('Please provide valid content to update.', 400);102 // Check if path exists103 await FS.promises.access(path);104 // Check if fullpath exists105 await FS.promises.access(PATH.join(path, name));106 const supportedFiles = require('../utils/getSupportedFiles');107 const extension = PATH.extname(PATH.join(path, name)).toLowerCase();108 if (!supportedFiles.includes(extension))109 throw new AppError(110 `File with extension ${extension} do not support to view or edit.`,111 400112 );113 // Check if user have permission to update content114 const stat = await readStat(PATH.join(path, name));115 if (!stat)116 throw new AppError(117 `You don't have permission to write file '${name}'.`,118 400119 );120 await FS.promises.writeFile(PATH.join(path, name), content, 'utf-8');121 res.status(200).json({122 status: 'success',123 data: {124 content,125 },126 });127});128exports.copyFile = catchAsync(async (req, res) => {129 const { src, name, dest } = req.body;130 if (!src) throw new AppError('Please provide valid source path.', 400);131 if (!dest) throw new AppError('Please provide valid destination path.', 400);132 if (!name) throw new AppError('Please provide valid file name.', 400);133 // Check if source path exists134 await FS.promises.access(src);135 // Check if destination path exists136 await FS.promises.access(dest);137 // Check if fullpath exists138 await FS.promises.access(PATH.join(src, name));139 // Check if user have permission to copy file140 let stat = await readStat(PATH.join(src, name));141 if (!stat)142 throw new AppError(143 `You don't have permission to copy file '${name}'.`,144 400145 );146 // Check if there is already file with the same name in destination directory147 stat = await readStat(PATH.join(dest, name));148 if (stat)149 throw new AppError(150 `There is already file with name '${name}' in the destination path.`,151 400152 );153 await FS.promises.copyFile(PATH.join(src, name), PATH.join(dest, name));154 req.query = { path: dest };155 getAllItemsInDirectory(req, res);156});157exports.moveFile = catchAsync(async (req, res) => {158 const { src, name, dest } = req.body;159 if (!src) throw new AppError('Please provide valid source path.', 400);160 if (!dest) throw new AppError('Please provide valid destination path.', 400);161 if (!name) throw new AppError('Please provide valid file name.', 400);162 // Check if source path exists163 await FS.promises.access(src);164 // Check if destination path exists165 await FS.promises.access(dest);166 // Check if fullpath exists167 await FS.promises.access(PATH.join(src, name));168 // Check if user have permission to move file169 let stat = await readStat(PATH.join(src, name));170 if (!stat)171 throw new AppError(172 `You don't have permission to move file.'${name}'.`,173 400174 );175 // Check if there is already file with the same name in destination directory176 stat = await readStat(PATH.join(dest, name));177 if (stat)178 throw new AppError(179 `There is already file with name '${name}' in the destination path.`,180 400181 );182 await fse.move(PATH.join(src, name), PATH.join(dest, name));183 req.query = { path: dest };184 getAllItemsInDirectory(req, res);...
index.js
Source: index.js
1const fsPromises = require('fs').promises;2const path = require('path');3const { exec } = require('child_process');4const db = require('../db/fileData');5const updateUserDrive = async function (username = 'truebase') {6 const stats = await getStats(path.join(ROOT_PATH, username));7 return db.update({ username }, { dirveStructure: stats });8};9const createFile = async function (filePath, fileName, username) {10 try {11 await fsPromises.access(filePath);12 try {13 await fsPromises.access(path.join(filePath, fileName));14 return Promise.reject('File with same name alredy exists');15 } catch {16 const newFile = await fsPromises.open(path.join(filePath, fileName), 'w');17 await updateUserDrive(username);18 return path.join(filePath, fileName);19 }20 } catch (err) {21 console.log(err);22 return Promise.reject('Not able to create file');23 }24};25const renameFile = async function (filePath, fileName, newFileName, username) {26 try {27 await fsPromises.access(path.join(filePath, fileName));28 try {29 await fsPromises.access(path.join(filePath, newFileName));30 return Promise.reject('File with same name alredy exists');31 } catch {32 await fsPromises.rename(path.join(filePath, fileName), path.join(filePath, newFileName));33 await updateUserDrive(username);34 return path.join(filePath, newFileName);35 }36 } catch {37 return Promise.reject('File does not exists');38 }39};40const removeFile = async function (filePath, fileName, username) {41 try {42 await fsPromises.access(path.join(filePath, fileName));43 const result = await fsPromises.unlink(path.join(filePath, fileName));44 await updateUserDrive(username);45 return path.join(filePath, fileName);46 } catch (err) {47 console.log(err);48 return Promise.reject('File does not exists');49 }50};51const createFolder = async function (folderPath, folderName, username) {52 try {53 await fsPromises.access(folderPath);54 try {55 await fsPromises.access(path.join(folderPath, folderName));56 return Promise.reject('Folder with same name alredy exists');57 } catch {58 await fsPromises.mkdir(path.join(folderPath, folderName));59 await updateUserDrive();60 return path.join(folderPath, folderName);61 }62 } catch (err) {63 console.log(err);64 return Promise.reject('Not able to create folder');65 }66};67const renameFolder = async function (filePath, folderName, newFolderName, username) {68 try {69 await fsPromises.access(path.join(filePath, folderName));70 try {71 await fsPromises.access(path.join(filePath, newFolderName));72 return Promise.reject('Folder with same name alredy exists');73 } catch {74 await fsPromises.rename(path.join(filePath, folderName), path.join(filePath, newFolderName));75 await updateUserDrive(username);76 return path.join(filePath, newFolderName);77 }78 } catch {79 return Promise.reject('Folder does not exists');80 }81};82const removeFolder = async function (filePath, folderName, username) {83 try {84 await fsPromises.access(path.join(filePath, folderName));85 await fsPromises.rmdir(path.join(filePath, folderName), { recursive: true });86 await updateUserDrive(username);87 return path.join(filePath, folderName);88 } catch (err) {89 return Promise.reject('Folder does not exists');90 }91};92const getStats = async function (folderPath) {93 try {94 await fsPromises.access(folderPath);95 const result = {96 fileCount: 0,97 folderName: path.basename(folderPath),98 folderPath,99 files: [],100 subFolders: [],101 };102 const fileList = await fsPromises.readdir(folderPath);103 for (const i in fileList) {104 try {105 const stats = await fsPromises.stat(path.join(folderPath, fileList[i]));106 if (stats && stats.isDirectory()) {107 const subFolder = await getStats(path.join(folderPath, fileList[i]));108 result.subFolders.push(subFolder);109 } else {110 result.fileCount++;111 result.files.push(fileList[i]);112 }113 } catch (err) {114 return Promise.reject('Some thing went wrong');115 }116 }117 return result;118 } catch {119 return Promise.reject('Path does not exists');120 }121};122const folderExists = async function (resorcePath) {123 try {124 await fsPromises.access(path.join(resorcePath));125 return Promise.resolve();126 } catch (err) {127 return Promise.reject();128 }129};130const serachFile = async function (obj, cb) {131 let command; let132 results = '';133 const {134 username, fileName, folderPath, patternMatch,135 } = obj;136 // if (!folderPath && !patternMatch) {137 // command = `find ${ROOT_PATH + '/' + username } -type f -name ${fileName}`138 // } else if(patternMatch) {139 // command = `find ${ROOT_PATH + '/' + username + '/' + folderPath } -type f -name "*${fileName}*"`140 // } else if (!patternMatch) {141 // }142 if (patternMatch) {143 command = `find ${`${ROOT_PATH}/${username}/${folderPath}`} -type f -name "*${fileName}*"`;144 } else if (!folderPath) {145 command = `find ${`${ROOT_PATH}/${username}`} -type f -name ${fileName}`;146 } else {147 command = `find ${`${ROOT_PATH}/${username}/${folderPath}`} -type f -name ${fileName}`;148 }149 const findCmd = exec(command);150 findCmd.stdout.on('data', (data) => {151 console.log(data);152 results += data;153 });154 findCmd.stderr.on('data', (data) => cb(1));155 findCmd.on('close', (code) => {156 if (!code) {157 return cb(null, results.split('\n').filter((x) => x));158 }159 return cb(1);160 });161};162module.exports = {163 createFile,164 renameFile,165 removeFile,166 createFolder,167 renameFolder,168 removeFolder,169 getStats,170 folderExists,171 serachFile,...
generator.js
Source: generator.js
...8const statPromise = util.promisify(fs.stat)9// verify content markdown files are as expected10const verifyContentFileStructure = async () => {11 console.log('ð§ Verifying build content...')12 await fs.promises.access('content/experience.md')13 await fs.promises.access('content/blogs.md')14 await fs.promises.access('content/projects.md')15}16// validate if generation was successful17const validateBuild = async () => {18 console.log('ðµï¸ââï¸ Validating built pages...')19 await fs.promises.access('src/index.html')20 await fs.promises.access('src/vault.html')21 await fs.promises.access('src/about.html')22 await fs.promises.access('src/demo.html')23 await fs.promises.access('src/blog.html')24 await fs.promises.access('src/projects.html')25}26// build the output file tree of the files that were generated27const generateFileTree = async () => {28 let tree = '.\n'29 for (let dir of ['src']) {30 tree += await buildTree(dir, '', dir === 'src' ? true : false, '')31 }32 console.log(tree)33}34// recursive function for pretty printing file trees35const buildTree = async (dir, indent, isTail, result) => {36 let stats = await statPromise(dir)37 let files = []38 if (stats.isDirectory()) {...
Using AI Code Generation
1const fs = require('fs').promises;2fs.access('test.txt', fs.constants.F_OK)3 .then(() => console.log('file exists'))4 .catch(() => console.log('file does not exist'));5const fs = require('fs');6fs.access('test.txt', fs.constants.F_OK, (err) => {7 if (err) {8 console.log('file does not exist');9 } else {10 console.log('file exists');11 }12});13const fs = require('fs');14fs.access('test.txt', fs.F_OK, (err) => {15 if (err) {16 console.log('file does not exist');17 } else {18 console.log('file exists');19 }20});21const fs = require('fs');22fs.access('test.txt', (err) => {23 if (err) {24 console.log('file does not exist');25 } else {26 console.log('file exists');27 }28});29const fs = require('fs');30try {31 fs.accessSync('test.txt');32 console.log('file exists');33} catch (err) {34 console.log('file does not exist');35}36const fs = require('fs');37fs.exists('test.txt', (exists) => {38 if (exists) {39 console.log('file exists');40 } else {41 console.log('file does not exist');42 }43});44const fs = require('fs');45fs.exists('test.txt', (exists) => {46 if (exists) {47 console.log('file exists');48 } else {49 console.log('file does not exist');50 }51});52const fs = require('fs');53fs.stat('test.txt', (err, stats) => {54 if (err) {55 console.log('file does not exist');
Using AI Code Generation
1const fs = require('fs').promises;2fs.access('test.txt', fs.constants.F_OK)3 .then(() => console.log('File exists'))4 .catch(err => console.error('File does not exist'));5const fs = require('fs');6fs.access('test.txt', fs.constants.F_OK, (err) => {7 if (err) {8 console.error('File does not exist');9 } else {10 console.log('File exists');11 }12});13const fs = require('fs');14try {15 fs.accessSync('test.txt', fs.constants.F_OK);16 console.log('File exists');17} catch (err) {18 console.error('File does not exist');19}20const fs = require('fs');21fs.access('test.txt', fs.F_OK, (err) => {22 if (err) {23 console.error('File does not exist');24 } else {25 console.log('File exists');26 }27});28const fs = require('fs');29try {30 fs.accessSync('test.txt', fs.F_OK);31 console.log('File exists');32} catch (err) {33 console.error('File does not exist');34}35const fs = require('fs');36fs.exists('test.txt', (exists) => {37 if (exists) {38 console.log('File exists');39 } else {40 console.error('File does not exist');41 }42});43const fs = require('fs');44if (fs.existsSync('test.txt')) {45 console.log('File exists');46} else {47 console.error('File does not exist');48}49const fs = require('fs');50fs.stat('test.txt', (err, stats) => {51 if (err) {52 console.error('File does not exist');53 } else {
Using AI Code Generation
1const fs = require('fs');2const {promisify} = require('util');3const access = promisify(fs.access);4const path = require('path');5async function checkFileAccess() {6 try {7 await access(path.join(__dirname, 'test.txt'), fs.constants.R_OK);8 console.log('File can be read');9 } catch (err) {10 console.error('File cannot be read');11 }12}13checkFileAccess();
Using AI Code Generation
1const fs = require('fs').promises;2const accessPromise = fs.access('test.txt', fs.constants.F_OK);3accessPromise.then(() => {4 console.log('file exists');5}).catch((err) => {6 console.log('file does not exist');7});8const fs = require('fs').promises;9const accessPromise = fs.access('test.txt', fs.constants.F_OK | fs.constants.R_OK | fs.constants.W_OK);10accessPromise.then(() => {11 console.log('file exists and has read/write permissions');12}).catch((err) => {13 console.log('file does not exist or does not have read/write permissions');14});15const fs = require('fs');16try {17 fs.accessSync('test.txt');18 console.log('file exists');19} catch (err) {20 console.log('file does not exist');21}
Check out the latest blogs from LambdaTest on this topic:
Screenshots! These handy snippets have become indispensable to our daily business as well as personal life. Considering how mandatory they are for everyone in these modern times, every OS and a well-designed game, make sure to deliver a built in feature where screenshots are facilitated. However, capturing a screen is one thing, but the ability of highlighting the content is another. There are many third party editing tools available to annotate our snippets each having their own uses in a business workflow. But when we have to take screenshots, we get confused which tool to use. Some tools are dedicated to taking best possible screenshots of whole desktop screen yet some are browser based capable of taking screenshots of the webpages opened in the browsers. Some have ability to integrate with your development process, where as some are so useful that there integration ability can be easily overlooked.
This article is a part of our Content Hub. For more in-depth resources, check out our content hub on Automation Testing Tutorial.
Working in IT, we have often heard the term Virtual Machines. Developers working on client machines have used VMs to do the necessary stuffs at the client machines. Virtual machines are an environment or an operating system which when installed on a workstation, simulates an actual hardware. The person using the virtual machine gets the same experience as they would have on that dedicated system. Before moving on to how to setup virtual machine in your system, let’s discuss why it is used.
There is no other automation framework in the market that is more used for automating web testing tasks than Selenium and one of the key functionalities is to take Screenshot in Selenium. However taking full page screenshots across different browsers using Selenium is a unique challenge that many selenium beginners struggle with. In this post we will help you out and dive a little deeper on how we can take full page screenshots of webpages across different browser especially to check for cross browser compatibility of layout.
Cross browser compatibility can simply be summed up as a war between testers and developers versus the world wide web. Sometimes I feel that to achieve browser compatibility, you may need to sell your soul to devil while performing a sacrificial ritual. Even then some API plugins won’t work.(XD)
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!