Path: blob/master/node_modules/@adiwajshing/baileys/lib/Store/make-ordered-dictionary.js
1129 views
"use strict";1Object.defineProperty(exports, "__esModule", { value: true });2function makeOrderedDictionary(idGetter) {3const array = [];4const dict = {};5const get = (id) => dict[id];6const update = (item) => {7const id = idGetter(item);8const idx = array.findIndex(i => idGetter(i) === id);9if (idx >= 0) {10array[idx] = item;11dict[id] = item;12}13return false;14};15const upsert = (item, mode) => {16const id = idGetter(item);17if (get(id)) {18update(item);19}20else {21if (mode === 'append') {22array.push(item);23}24else {25array.splice(0, 0, item);26}27dict[id] = item;28}29};30const remove = (item) => {31const id = idGetter(item);32const idx = array.findIndex(i => idGetter(i) === id);33if (idx >= 0) {34array.splice(idx, 1);35delete dict[id];36return true;37}38return false;39};40return {41array,42get,43upsert,44update,45remove,46updateAssign: (id, update) => {47const item = get(id);48if (item) {49Object.assign(item, update);50delete dict[id];51dict[idGetter(item)] = item;52return true;53}54return false;55},56clear: () => {57array.splice(0, array.length);58Object.keys(dict).forEach(key => {59delete dict[key];60});61},62filter: (contain) => {63let i = 0;64while (i < array.length) {65if (!contain(array[i])) {66delete dict[idGetter(array[i])];67array.splice(i, 1);68}69else {70i += 1;71}72}73},74toJSON: () => array,75fromJSON: (newItems) => {76array.splice(0, array.length, ...newItems);77}78};79}80exports.default = makeOrderedDictionary;818283