@visulima/find-cache-dir
Version:
Finds the common standard cache directory
80 lines (75 loc) • 3.23 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const node_fs = require('node:fs');
const node_process = require('node:process');
const fs = require('@visulima/fs');
const error = require('@visulima/fs/error');
const path = require('@visulima/path');
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
const useDirectory = /* @__PURE__ */ __name((directory, options) => {
if (options?.create) {
fs.ensureDirSync(directory);
}
return directory;
}, "useDirectory");
const findCacheDirectory = /* @__PURE__ */ __name(async (name, options) => {
if (node_process.env.CACHE_DIR && !["0", "1", "false", "true"].includes(node_process.env.CACHE_DIR)) {
return useDirectory(path.join(node_process.env.CACHE_DIR, name), options);
}
const rootDirectory = await fs.findUp("package.json", {
cwd: options?.cwd ?? node_process.cwd(),
type: "file"
});
if (!rootDirectory) {
if (options?.throwError) {
throw new error.NotFoundError("No such file or directory found.");
}
return void 0;
}
const nodeModulesDirectory = path.join(path.dirname(rootDirectory), "node_modules");
const cacheDirectory = path.join(nodeModulesDirectory, ".cache");
const cacheNameDirectory = path.join(cacheDirectory, name);
if (node_fs.existsSync(cacheNameDirectory) && !await fs.isAccessible(cacheNameDirectory, fs.W_OK)) {
return void 0;
}
if (node_fs.existsSync(cacheDirectory) && !await fs.isAccessible(cacheDirectory, fs.W_OK)) {
return void 0;
}
if (node_fs.existsSync(nodeModulesDirectory) && !await fs.isAccessible(nodeModulesDirectory, fs.W_OK)) {
return void 0;
}
return useDirectory(cacheNameDirectory, options);
}, "findCacheDirectory");
const findCacheDirectorySync = /* @__PURE__ */ __name((name, options) => {
if (node_process.env.CACHE_DIR && !["0", "1", "false", "true"].includes(node_process.env.CACHE_DIR)) {
return useDirectory(path.join(node_process.env.CACHE_DIR, name), options);
}
const rootDirectory = fs.findUpSync("package.json", {
cwd: options?.cwd ?? node_process.cwd(),
type: "file"
});
if (!rootDirectory) {
if (options?.throwError) {
throw new error.NotFoundError("No such file or directory found.");
}
return void 0;
}
const nodeModulesDirectory = path.join(path.dirname(rootDirectory), "node_modules");
const cacheDirectory = path.join(nodeModulesDirectory, ".cache");
const cacheNameDirectory = path.join(cacheDirectory, name);
if (node_fs.existsSync(cacheNameDirectory) && !fs.isAccessibleSync(cacheNameDirectory, fs.W_OK)) {
return void 0;
}
if (node_fs.existsSync(cacheDirectory) && !fs.isAccessibleSync(cacheDirectory, fs.W_OK)) {
return void 0;
}
if (node_fs.existsSync(nodeModulesDirectory) && !fs.isAccessibleSync(nodeModulesDirectory, fs.W_OK)) {
return void 0;
}
return useDirectory(cacheNameDirectory, options);
}, "findCacheDirectorySync");
const findCacheDir = findCacheDirectory;
const findCacheDirSync = findCacheDirectorySync;
exports.findCacheDir = findCacheDir;
exports.findCacheDirSync = findCacheDirSync;