UNPKG

twitch-emote

Version:

splice twitch emotes from a message string

96 lines 3.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadChannels = exports.saveChannelCache = exports.saveGlobalCache = exports.loadIdentifierCache = exports.loadChannelCache = exports.loadGlobalCache = exports.saveChannelList = exports.loadChannelList = exports.loadCache = exports.loadCacheRaw = exports.ensureCacheFolder = void 0; const promises_1 = require("fs/promises"); const path_1 = require("path"); const fs_json_1 = require("./fs_json"); const settings_1 = require("./settings"); const util_1 = require("./util"); const Dir = (fname) => (0, path_1.join)((0, settings_1.getSetting)('cacheDir'), fname || ''); async function ensureCacheFolder() { try { await (0, promises_1.access)(Dir()); } catch (e) { await (0, promises_1.mkdir)(Dir()); } } exports.ensureCacheFolder = ensureCacheFolder; async function loadCacheRaw(fileName) { await ensureCacheFolder(); try { await (0, promises_1.access)(Dir(fileName)); } catch (e) { return null; } return await (0, fs_json_1.readJson)(Dir(fileName)); } exports.loadCacheRaw = loadCacheRaw; async function loadCache(fileName, def) { let file = await loadCacheRaw(fileName); if (!file) { return { data: def, timestamp: 0 }; } return file; } exports.loadCache = loadCache; async function writeCache(fileName, data) { await ensureCacheFolder(); await (0, fs_json_1.writeJson)(Dir(fileName), { data, timestamp: Date.now() }); } async function loadChannelList() { const data = await loadCache(`channels`, []); return data.data; } exports.loadChannelList = loadChannelList; async function saveChannelList(channels) { return await writeCache('channels', (0, util_1.uniqueArr)(channels)); } exports.saveChannelList = saveChannelList; async function loadGlobalCache() { return loadCache(`global`, []); } exports.loadGlobalCache = loadGlobalCache; async function loadChannelCache(channel) { (0, util_1.isChannelThrow)(channel); return loadCache(`channel.${channel}`, []); } exports.loadChannelCache = loadChannelCache; async function loadIdentifierCache(channel) { return loadCache(`identifier.${channel}`, null); } exports.loadIdentifierCache = loadIdentifierCache; async function saveGlobalCache(cache) { await writeCache(`global`, cache); } exports.saveGlobalCache = saveGlobalCache; async function saveChannelCache(channel, emotes, identifier) { (0, util_1.isChannelThrow)(channel); await writeCache(`channel.${channel}`, emotes); await writeCache(`identifier.${channel}`, identifier); let channels = await loadChannelList(); if (!channels.includes(channel)) { channels.push(channel); await saveChannelList(channels); } } exports.saveChannelCache = saveChannelCache; async function loadChannels() { const channels = await loadChannelList(); let foundData = {}; if (!channels.length) { return null; } else { for (const chan of (0, util_1.uniqueArr)(channels)) { foundData[chan] = { emotes: await loadChannelCache(chan), identifier: await loadIdentifierCache(chan), }; } return foundData; } } exports.loadChannels = loadChannels; //# sourceMappingURL=cache_fs.js.map