UNPKG

@visulima/find-cache-dir

Version:

Finds the common standard cache directory

80 lines (75 loc) 3.23 kB
'use strict'; 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;