UNPKG

@azure/monitor-opentelemetry

Version:
76 lines 2.48 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import * as fs from "node:fs"; import * as path from "node:path"; import { promisify } from "node:util"; export const statAsync = promisify(fs.stat); export const lstatAsync = promisify(fs.lstat); export const mkdirAsync = promisify(fs.mkdir); export const accessAsync = promisify(fs.access); export const appendFileAsync = promisify(fs.appendFile); export const writeFileAsync = promisify(fs.writeFile); export const readFileAsync = promisify(fs.readFile); export const readdirAsync = promisify(fs.readdir); export const unlinkAsync = promisify(fs.unlink); /** * Validate directory exists. */ export const confirmDirExists = async (directory) => { try { const stats = await lstatAsync(directory); if (!stats.isDirectory()) { throw new Error("Path existed but was not a directory"); } } catch (err) { if (err && err.code === "ENOENT") { try { await mkdirAsync(directory); } catch (mkdirErr) { if (mkdirErr && mkdirErr.code !== "EEXIST") { // Handle race condition by ignoring EEXIST throw mkdirErr; } } } } }; /** * Computes the size (in bytes) of all files in a directory at the root level. Asynchronously. */ export const getShallowDirectorySize = async (directory) => { // Get the directory listing const files = await readdirAsync(directory); let totalSize = 0; // Query all file sizes for (const file of files) { const fileStats = await statAsync(path.join(directory, file)); if (fileStats.isFile()) { totalSize += fileStats.size; } } return totalSize; }; /** * Computes the size (in bytes) of all files in a directory at the root level. Synchronously. */ export const getShallowDirectorySizeSync = (directory) => { const files = fs.readdirSync(directory); let totalSize = 0; for (let i = 0; i < files.length; i++) { totalSize += fs.statSync(path.join(directory, files[i])).size; } return totalSize; }; /** * Computes the size (in bytes) of a file asynchronously. */ export const getShallowFileSize = async (filePath) => { const fileStats = await statAsync(filePath); if (fileStats.isFile()) { return fileStats.size; } return null; }; //# sourceMappingURL=fileSystem.js.map