UNPKG

neroxbailx

Version:

baileys whatsapp-api

77 lines 2.1 kB
"use strict" var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod } } Object.defineProperty(exports, "__esModule", { value: true }) const WAProto_1 = require("../../WAProto") const Utils_1 = require("../Utils") const logger_1 = __importDefault(require("../Utils/logger")) const makeCacheManagerAuthState = async (store, sessionKey) => { const { createCache } = await import('cache-manager') const defaultKey = (file) => `${sessionKey}:${file}` const databaseConn = createCache() const writeData = async (file, data) => { let ttl = undefined if (file === 'creds') { ttl = 63115200 } await databaseConn.set(defaultKey(file), JSON.stringify(data, Utils_1.BufferJSON.replacer), ttl) } const readData = async (file) => { try { const data = await databaseConn.get(defaultKey(file)) return data ? JSON.parse(data, Utils_1.BufferJSON.reviver) : null } catch (error) { logger_1.default.error(error) return null } } const removeData = async (file) => { try { return await databaseConn.del(defaultKey(file)) } catch { logger_1.default.error(`Error removing ${file} from session ${sessionKey}`) } } const clearState = async () => { try { const result = await databaseConn.store.keys(`${sessionKey}*`) await Promise.all(result.map((key) => databaseConn.del(key))) } catch {} } const creds = (await readData('creds')) || (0, Utils_1.initAuthCreds)() return { clearState, saveCreds: () => writeData('creds', creds), state: { creds, keys: { get: async (type, ids) => { const data = {} await Promise.all(ids.map(async (id) => { let value = await readData(`${type}-${id}`) if (type === 'app-state-sync-key' && value) { value = WAProto_1.proto.Message.AppStateSyncKeyData.fromObject(value) } data[id] = value })) return data }, set: async (data) => { const tasks = [] for (const category in data) { for (const id in data[category]) { const value = data[category][id] const key = `${category}-${id}` tasks.push(value ? writeData(key, value) : removeData(key)) } } await Promise.all(tasks) } } } } } module.exports = { makeCacheManagerAuthState }