p3x-redis-ui-material
Version:
💿 P3X Redis UI triple frontend — Angular + React/MUI + Vue/Vuetify with 54 languages, 7 themes, Socket.IO, desktop notifications, and full feature parity
1 lines • 4.21 kB
JavaScript
import{a as e,n as t}from"./i18n.store-fGbhAfs-.js";import{i as n,r}from"./redis-state.store-DtknZjXV.js";import{a as i,r as a}from"./common.store-BMIRIqfN.js";import{t as o}from"./overlay.store-C7FKsVB0.js";import{r as s}from"./socket.service-Bvd4M0Ji.js";var c=null;function l(e){c=e}function u(e,t){let n={info:`/info`,settings:`/settings`,monitoring:`/monitoring`,search:`/search`,"database.statistics":`/database/statistics`,"main.statistics":`/database/statistics`,database:`/database`},r;e===`database.key`||e===`main.key`?r=`/database/key/${encodeURIComponent(t?.key??``)}`:(r=n[e],r||=(console.warn(`[navigation] Unknown state: ${e}`),`/settings`)),c&&c(r)}var d={};function f(e,t){return d[e]||(d[e]=new Set),d[e].add(t),()=>{d[e].delete(t)}}function p(e,t){d[e]?.forEach(e=>e(t))}var m=0,h=e(()=>({connect:async e=>{let i=structuredClone(e),c=n.getState(),l=o.getState();try{let e=c.getStorageKeyCurrentDatabase(i.id),n;try{n=localStorage.getItem(e)??void 0}catch{}if(i.askAuth===!0)try{let e=await a.getState().askAuth();i.username=e.username||void 0,i.password=e.password||void 0}catch{return}let o=t.getState().strings;l.show({message:o?.title?.connectingRedis}),r.setState({connectionState:`connecting`});let u=await s({action:`connection/connect`,payload:{connection:i,db:n}}),d=[],f=0;for(;f<u.databases;)d.push(f++);let p=[];Object.keys(u.commands??{}).forEach(e=>p.push(u.commands[e][0])),p.sort();let m=Array.isArray(u.modules)?u.modules:[];r.setState({page:1,monitor:!1,dbsize:u.dbsize,databaseIndexes:d,connection:i,commands:p,commandsMeta:u.commandsMeta??{},modules:m,hasReJSON:m.some(e=>e.name===`ReJSON`),hasRediSearch:m.some(e=>e.name===`search`),hasTimeSeries:m.some(e=>e.name===`timeseries`||e.name===`Timeseries`),hasBloom:m.some(e=>e.name===`bf`),connectionState:`connected`}),a.getState().loadRedisInfoResponse({response:u});try{localStorage.setItem(c.connectInfoStorageKey,JSON.stringify(i))}catch{}}catch(e){try{localStorage.removeItem(c.connectInfoStorageKey)}catch{}r.setState({connection:void 0,connectionState:`none`}),a.getState().generalHandleError(e)}finally{l.hide()}},selectDatabase:async e=>{let i=r.getState(),o=n.getState();r.setState({currentDatabase:e,page:1,redisChanged:!0});try{await s({action:`redis/console`,payload:{command:`select ${e}`}});let n=t.getState().strings?.status?.dbChanged,r=typeof n==`function`?n({db:e}):``;r&&a.getState().toast(r);let c=o.getStorageKeyCurrentDatabase(i.connection?.id);if(c)try{localStorage.setItem(c,String(e))}catch{}await h.getState().refresh({force:!0})}catch(e){a.getState().generalHandleError(e)}},save:async()=>{try{let e=i((await s({action:`redis/save`})).info);r.setState({info:e});let n=t.getState().strings;a.getState().toast(n?.status?.savedRedis)}catch(e){a.getState().generalHandleError(e)}},statistics:async()=>{try{u(`database.statistics`),await h.getState().refresh({force:!0})}catch(e){a.getState().generalHandleError(e)}},refresh:async(e={})=>{let t=Date.now();if(!(!e.force&&t-m<2e3)){m=t;try{let t=r.getState(),i=n.getState(),o={},c=t.search;!i.searchClientSide&&typeof c==`string`&&c.length>0&&(o.match=i.searchStartsWith?c+`*`:`*`+c+`*`);let l=await s({action:`redis/refresh`,payload:o});r.setState({dbsize:l.dbsize,redisChanged:!0}),a.getState().loadRedisInfoResponse({response:l}),p(`tree-refresh`),e.withoutParent||p(`refresh-key`)}catch(e){a.getState().generalHandleError(e)}}},disconnect:async()=>{let e=r.getState(),t=n.getState();try{localStorage.removeItem(t.connectInfoStorageKey)}catch{}r.setState({connection:void 0,connectionState:`none`,redisConnections:{},monitor:!1});try{await s({action:`connection/disconnect`,payload:{connectionId:e.connection?.id}})}catch{}u(`settings`)},addKey:e=>{e.event.stopPropagation(),p(`key-new`,e)},getCurrentDatabase:()=>{let e=r.getState(),t=n.getState(),i=e.currentDatabase;if(i===void 0){let n=t.getStorageKeyCurrentDatabase(e.connection?.id);if(n)try{i=localStorage.getItem(n)}catch{}}return Number(i??0)},setCurrentDatabase:e=>{let t=r.getState(),i=n.getState();r.setState({currentDatabase:e});let a=i.getStorageKeyCurrentDatabase(t.connection?.id);if(a)try{localStorage.setItem(a,String(e))}catch{}}}));export{l as a,u as i,f as n,h as r,p as t};