All files / lib/reader utils.ts

86.84% Statements 33/38
57.14% Branches 4/7
100% Functions 11/11
91.43% Lines 32/35

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 691x 1x 1x 1x   1x 1x 1x 1x 1x         1x   1x           1x 1x   1x 1x   1x   1x                 1x 1x           1x 2x 2x 2x 2x         1x 2x 2x     1x 2x 2x 2x 2x        
import fs from "fs";
import path from "path";
import zlib from "zlib";
import fileType from "file-type";
 
export function copyFileAsync(src: string, dst: string): Promise<any> {
	return new Promise((resolve, reject) => {
		fs.copyFile(src, dst, (err) => {
			Iif (err) reject(err);
			resolve();
		});
	});
}
 
export function extractGz(src: string, dst: string): Promise<any> {
	// check if src file exists
	Iif (!fileExists(src)) {
		throw new Error(
			'Invalid File Doesnt Exist'
		);
	}
 
	return new Promise((resolve, reject) => {
		try {
			// prepare streams
			var source = fs.createReadStream(src);
			var destination = fs.createWriteStream(dst);
			// extract the archive
			source.pipe(zlib.createGunzip()).pipe(destination);
			// callback on extract completion
			destination.on('close', resolve);
		} catch (err) {
			reject(err);
		}
	});
}
 
// checks whether a file exists
function fileExists(file: string): boolean {
	try {
		return fs.statSync(file).isFile();
	} catch (err) {
		return false;
	}
}
 
export function readFileAsync(file: string): Promise<any> {
	return new Promise((resolve, reject) => {
		fs.readFile(file, function(err, data) {
			Iif (err) reject(err);
			resolve(data);
		});
	});
}
 
export async function getType(file: string) {
	var stream = await fileType.stream(fs.createReadStream(file));
	return stream.fileType;
}
 
export function changeExt(file: string, newExt: string) {
	var parsePath = path.parse(file);
	parsePath.ext = newExt;
	parsePath.base = parsePath.base.substring(0, parsePath.base.lastIndexOf(".")) + newExt;
	return path.format(parsePath);
}