UNPKG

@shift-code/cli

Version:

Redeem Gearbox SHiFT codes automatically

82 lines 3.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CACHE_FILE = exports.SESSION_FILE = exports.META_FILE = exports.META_CACHE = exports.ACCOUNT_CACHE = void 0; exports.getStorePath = getStorePath; exports.storeExists = storeExists; exports.deleteStoreFile = deleteStoreFile; exports.storeContents = storeContents; exports.loadContents = loadContents; const fs_1 = require("fs"); const util_1 = require("util"); const path_1 = __importDefault(require("path")); const os_1 = __importDefault(require("os")); const mkdirp_1 = __importDefault(require("mkdirp")); const { name } = JSON.parse((0, fs_1.readFileSync)(path_1.default.join(__dirname, '../../package.json')).toString('utf-8')); const writeFileAsync = (0, util_1.promisify)(fs_1.writeFile); const readFileAsync = (0, util_1.promisify)(fs_1.readFile); const statAsync = (0, util_1.promisify)(fs_1.stat); const rmAsync = (0, util_1.promisify)(fs_1.rm); const homedir = os_1.default.homedir(); const { env } = process; exports.ACCOUNT_CACHE = 'account'; exports.META_CACHE = ''; exports.META_FILE = 'meta'; exports.SESSION_FILE = 'session'; exports.CACHE_FILE = 'cache'; function getStorePath() { // macos if (process.platform === 'darwin') { const library = path_1.default.join(homedir, 'Library'); return path_1.default.join(library, 'Application Support', name); } // windows if (process.platform === 'win32') { const localAppData = env.LOCALAPPDATA || path_1.default.join(homedir, 'AppData', 'Local'); return path_1.default.join(localAppData, name, 'Data'); } // linux return path_1.default.join(env.XDG_DATA_HOME || path_1.default.join(homedir, '.local', 'share'), name); } const getStoreFilePath = (cache, name) => path_1.default.join(getStorePath(), `${[cache, name].filter(Boolean).join('-')}.json`); async function storeExists(cache, id) { const filePath = getStoreFilePath(cache, id); try { const stat = await statAsync(filePath); return stat.isFile(); } catch { return false; } } async function deleteStoreFile(cache, id) { const filePath = getStoreFilePath(cache, id); try { await rmAsync(filePath); } finally { return true; } } async function storeContents(cache, id, contents) { const filePath = getStoreFilePath(cache, id); const storePath = getStorePath(); await (0, mkdirp_1.default)(storePath); await writeFileAsync(filePath, JSON.stringify(contents), { encoding: 'utf-8' }); return filePath; } async function loadContents(cache, id, defaultContent) { const filePath = getStoreFilePath(cache, id); try { const data = await readFileAsync(filePath, { encoding: 'utf-8' }); const json = JSON.parse(data); return json; } catch (err) { await storeContents(cache, id, defaultContent); return defaultContent; } } //# sourceMappingURL=store.js.map