Path: blob/master/node_modules/@adiwajshing/baileys/lib/Utils/use-single-file-auth-state.js
1129 views
"use strict";1Object.defineProperty(exports, "__esModule", { value: true });2exports.useSingleFileAuthState = void 0;3const WAProto_1 = require("../../WAProto");4const auth_utils_1 = require("./auth-utils");5const generics_1 = require("./generics");6// useless key map only there to maintain backwards compatibility7// do not use in your own systems please8const KEY_MAP = {9'pre-key': 'preKeys',10'session': 'sessions',11'sender-key': 'senderKeys',12'app-state-sync-key': 'appStateSyncKeys',13'app-state-sync-version': 'appStateVersions',14'sender-key-memory': 'senderKeyMemory'15};16/**17* @deprecated use multi file auth state instead please18* stores the full authentication state in a single JSON file19*20* DO NOT USE IN A PROD ENVIRONMENT, only meant to serve as an example21* */22const useSingleFileAuthState = (filename, logger) => {23// require fs here so that in case "fs" is not available -- the app does not crash24const { readFileSync, writeFileSync, existsSync } = require('fs');25let creds;26let keys = {};27// save the authentication state to a file28const saveState = () => {29logger && logger.trace('saving auth state');30writeFileSync(filename,31// BufferJSON replacer utility saves buffers nicely32JSON.stringify({ creds, keys }, generics_1.BufferJSON.replacer, 2));33};34if (existsSync(filename)) {35const result = JSON.parse(readFileSync(filename, { encoding: 'utf-8' }), generics_1.BufferJSON.reviver);36creds = result.creds;37keys = result.keys;38}39else {40creds = (0, auth_utils_1.initAuthCreds)();41keys = {};42}43return {44state: {45creds,46keys: {47get: (type, ids) => {48const key = KEY_MAP[type];49return ids.reduce((dict, id) => {50var _a;51let value = (_a = keys[key]) === null || _a === void 0 ? void 0 : _a[id];52if (value) {53if (type === 'app-state-sync-key') {54value = WAProto_1.proto.Message.AppStateSyncKeyData.fromObject(value);55}56dict[id] = value;57}58return dict;59}, {});60},61set: (data) => {62for (const _key in data) {63const key = KEY_MAP[_key];64keys[key] = keys[key] || {};65Object.assign(keys[key], data[_key]);66}67saveState();68}69}70},71saveState72};73};74exports.useSingleFileAuthState = useSingleFileAuthState;757677