@shift-code/cli
Version:
Redeem Gearbox SHiFT codes automatically
82 lines • 3.22 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadContents = exports.storeContents = exports.deleteStoreFile = exports.storeExists = exports.getStorePath = exports.CACHE_FILE = exports.SESSION_FILE = exports.META_FILE = exports.META_CACHE = exports.ACCOUNT_CACHE = void 0;
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);
}
exports.getStorePath = getStorePath;
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;
}
}
exports.storeExists = storeExists;
async function deleteStoreFile(cache, id) {
const filePath = getStoreFilePath(cache, id);
try {
await rmAsync(filePath);
}
finally {
return true;
}
}
exports.deleteStoreFile = deleteStoreFile;
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;
}
exports.storeContents = storeContents;
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;
}
}
exports.loadContents = loadContents;
//# sourceMappingURL=store.js.map