dbgate-plugin-redis 7.1.0 → 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/backend.js CHANGED
@@ -1 +1 @@
1
- (()=>{var t={994:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.firebirdSplitterOptions=e.oracleSplitterOptions=e.redisSplitterOptions=e.noSplitSplitterOptions=e.mongoSplitterOptions=e.sqliteSplitterOptions=e.postgreSplitterOptions=e.mssqlSplitterOptions=e.mysqlSplitterOptions=e.defaultSplitterOptions=void 0,e.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,keepSemicolonInCommands:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},e.mysqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),e.mssqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,keepSemicolonInCommands:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),e.postgreSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.sqliteSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.mongoSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),e.noSplitSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{noSplit:!0}),e.redisSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{splitByLines:!0}),e.oracleSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.firebirdSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},688:t=>{const{DatabaseAnalyser:e}=global.DBGATE_PACKAGES["dbgate-tools"];t.exports=class extends e{constructor(t,e){super(t,e)}}},831:(t,e,s)=>{const a=s(825),i=s(588),n=s(203),r=s(534),l=s(688),c=s(659),o=s(107),{filterName:p}=global.DBGATE_PACKAGES["dbgate-tools"];let u;function d(t){let e,s=[],a="";for(let i=0;i<t.length;)if(/\s/.test(t[i])){for(;i<t.length&&/\s/.test(t[i]);)i++;s.push(a),a="",e=!1}else if('"'!==t[i])if("'"!==t[i])"\\"!==t[i]?(e=!0,a+=t[i++]):(i++,a+=t[i++]);else{for(i++;i<t.length;){if("'"===t[i]){e=!0;break}"\\"!==t[i]||i++,a+=t[i++]}i++}else{for(i++;i<t.length;){if('"'===t[i]){e=!0;break}"\\"!==t[i]||i++,a+=t[i++]}i++}return e&&s.push(a),s}const y={...r,analyserClass:l,async connect({server:t,port:e,user:s,password:i,database:n,useDatabaseUrl:r,databaseUrl:l,treeKeySeparator:o,ssl:p,skipSetName:d,authType:y,clusterNodes:g,autoDetectNatMap:h}){let m,f=0;if(r)m=new c(l),d||await m.client("SETNAME","dbgate");else if("cluster"===y&&u&&u()){const t={user:s,password:i};let e=[];try{e=JSON.parse(g)}catch{}if(!Array.isArray(e)||0===e.length)throw new Error("Cluster nodes must be a non-empty array of host:port or objects with host and port");const a=h?await async function(t,e){const s={};return await Promise.all(t.map((async t=>{const a=new c({host:"string"==typeof t?new URL(t).hostname:t.host,port:"string"==typeof t?Number(new URL(t).port||6379):t.port,...e,lazyConnect:!1,enableReadyCheck:!1,maxRetriesPerRequest:0});try{const e=(await a.cluster("nodes")).split(/\r?\n/).find((t=>/\bmyself\b/.test(t)));if(!e)return;const i=e.split(" ")[1].split("@")[0],[n,r]=i.split(":"),l=`${n}:${Number(r)}`,c="string"==typeof t?new URL(t).hostname:t.host,o="string"==typeof t?Number(new URL(t).port||6379):t.port;s[l]={host:c,port:o}}catch{}finally{a.disconnect()}}))),s}(e,t):void 0;m=new c.Cluster(e,{redisOptions:t,natMap:a})}else{a.isString(n)&&n.startsWith("db")&&(f=parseInt(n.substring(2))),a.isNumber(n)&&(f=n),p&&(p={...a.omit(p,["rejectUnauthorized","password"]),passphrase:p.password});const r={host:t,port:e,username:s,password:i,db:f,tls:p};d||(r.connectionName="dbgate"),m=new c(r)}return{client:m,treeKeySeparator:o||":"}},async query(t,e){const s=d(e);if(s.length>=1){const e=s[0].toLowerCase(),a=s.slice(1);await t.client.call(e,...a)}return{rows:[],columns:[]}},async stream(t,e,s){const a=d(e);if(a.length<1)return void s.done();const i=a[0].toLowerCase(),n=a.slice(1),r=await t.client.call(i,...n);s.info({message:JSON.stringify(r),time:new Date,severity:"info"}),s.done()},readQuery:async(t,e,s)=>new n.PassThrough({objectMode:!0,highWaterMark:100}),async writeTable(t,e,s){return createBulkInsertStreamBase(this,n,t,e,s)},async info(t){const e=await t.client.info();return a.fromPairs(e.split("\n").filter((t=>t.trim()&&!t.trim().startsWith("#"))).map((t=>t.split(":"))))},async getVersion(t){const e=await this.info(t);return{version:e.redis_version,versionText:`Redis ${e.redis_version}`}},async listDatabases(t){const e=await this.info(t);let s=16;try{const e=await t.client.config("GET","databases");Array.isArray(e)&&e.length>=2&&(s=parseInt(e[1],10)||16)}catch{}return a.range(s).map((t=>({name:`db${t}`,extInfo:e[`db${t}`],sortOrder:t})))},async scanKeys(t,e,s=0,a){const i=e?.match(/[\?\[\{]/)?e:e?`*${e}*`:"*",[n,r]=await t.client.scan(s,"MATCH",i,"COUNT",a??2**32),l=await t.client.dbsize(),c=r.map((t=>({key:t})));return await this.enrichKeyInfo(t,c),{nextCursor:n,keys:c,dbsize:l}},async loadKeys(t,e="",s=null,i=null){const n=(await this.getKeys(t,e?`${e}${t.treeKeySeparator}*`:"*")).filter((t=>p(s,t))),r=a.sortBy(n,"text"),l=this.extractKeysFromLevel(t,e,r),c=i?l.slice(0,i):l;return await this.enrichKeyInfo(t,c),c},async exportKeys(t,e){const s=new o({client:t.client});return new Promise(((t,a)=>{s.export({type:"redis",keyPrefix:e.keyPrefix,callback:(e,s)=>{e?a(e):t(s)}})}))},async getKeys(t,e="*"){const s=t.client.scanStream({match:e,count:1e3}),a=[];return s.on("data",(t=>{for(const e of t)a.push(e)})),new Promise(((t,e)=>{s.on("end",(()=>{t(a)})),s.on("error",(t=>{e(t)}))}))},extractKeysFromLevel(t,e,s){const a=e?`${e}${t.treeKeySeparator}`:"",i=""==e?[]:e.split(t.treeKeySeparator),n={};for(const e of s){if(!e.startsWith(a))continue;const s=e.split(t.treeKeySeparator);if(s.length>i.length){const a=s[i.length];if(s.length==i.length+1)n[a]={text:a,key:e};else{const e="::"+a;n[e]?n[e].count++:n[e]={text:a+t.treeKeySeparator+"*",type:"dir",root:s.slice(0,i.length+1).join(t.treeKeySeparator),count:1}}}}return Object.values(n)},async getKeyCardinality(t,e,s){switch(s){case"list":return t.client.llen(e);case"set":return t.client.scard(e);case"zset":return t.client.zcard(e);case"stream":return t.client.xlen(e);case"hash":return t.client.hlen(e)}},async enrichKeyInfo(t,e){const s=t.client.pipeline();for(const t of e)s.type(t.key);const a=await s.exec();for(let t=0;t<a.length;t++)null==a[t][0]&&(e[t].type=a[t][1]);const i=t.client.pipeline();for(const t of e)switch(t.type){case"list":i.llen(t.key);case"set":i.scard(t.key);case"zset":i.zcard(t.key);case"stream":i.xlen(t.key);case"hash":i.hlen(t.key)}const n=await i.exec();let r=0;for(const t of e)"list"!=t.type&&"set"!=t.type&&"zset"!=t.type&&"stream"!=t.type&&"hash"!=t.type||null==n[r][0]&&(t.count=n[r][1],r++)},async loadKeyInfo(t,e){const s={},a=await t.client.type(e);switch(s.key=e,s.type=a,s.ttl=await t.client.ttl(e),s.count=await this.getKeyCardinality(t,e,a),a){case"string":s.value=await t.client.get(e);break;case"ReJSON-RL":s.type="JSON";try{const a=await t.client.call("JSON.GET",e);s.value=JSON.stringify(JSON.parse(a),null,2)}catch(t){s.value=""}}return s},async deleteBranch(t,e){const s=await this.getKeys(t,e),n=a.chunk(s,10);await i.eachLimit(n,10,(async e=>await t.client.del(...e)))},async callMethod(t,e,s){return"mdel"===e?await this.deleteBranch(t,s[0]):await t.client[e](...s)},async loadKeyTableRange(t,e,s,i){switch(await t.client.type(e)){case"list":{const a=await t.client.lrange(e,s,s+i);return{cursor:a.length>i?s+i:0,items:a.map((t=>({value:t}))).slice(0,i)}}case"set":{const a=await t.client.sscan(e,s,"COUNT",i);return{cursor:parseInt(a[0]),items:a[1].map((t=>({value:t})))}}case"zset":{const n=await t.client.zscan(e,s,"COUNT",i);return{cursor:parseInt(n[0]),items:a.chunk(n[1],2).map((t=>({member:t[0],score:t[1]})))}}case"hash":{const n=await t.client.hscan(e,s,"COUNT",i),r=a.chunk(n[1],2),l=await Promise.all(r.map((async([s,a])=>{try{const i=await t.client.call("HTTL",e,"FIELDS",1,s);return{key:s,value:a,ttl:i&&void 0!==i[0]?i[0]:null}}catch(t){return{key:s,value:a}}})));return{cursor:parseInt(n[0]),items:l}}case"stream":{const n=await t.client.xrange(e,0==s?"-":s,"+","COUNT",i);let r=0;if(n.length>0){const t=n[n.length-1][0].split("-");r=`${t[0]}-${parseInt(t[1]+1)}`}return{cursor:r,items:n.map((([t,e])=>({id:t,value:JSON.stringify(a.fromPairs(a.chunk(e,2)),void 0,2)})))}}}return null},close:async t=>t.client.quit(),getAuthTypes:()=>u&&u()?[{name:"node",title:"Single Redis node"},{name:"cluster",title:"Redis Cluster"}]:null,async invokeMethodCallList(t,e){const s=t.client.pipeline();for(const t of e.calls)s.call(t.method,...t.args);await s.exec()}};y.initialize=t=>{u=t.isProApp},t.exports=y},237:(t,e,s)=>{const a=s(831);t.exports={packageName:"dbgate-plugin-redis",drivers:[a],initialize(t){a.initialize(t)}}},197:t=>{const{SqlDumper:e}=global.DBGATE_PACKAGES["dbgate-tools"];t.exports=class extends e{}},534:(t,e,s)=>{const{driverBase:a}=global.DBGATE_PACKAGES["dbgate-tools"],{redisChangeSetToRedisCommands:i}=global.DBGATE_PACKAGES["dbgate-datalib"],{redisSplitterOptions:n}=s(994),r={...a,dumperClass:s(197),dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar(max)",quoteIdentifier:t=>`[${t}]`},engine:"redis@dbgate-plugin-redis",title:"Redis",defaultPort:6379,editorMode:"text",authTypeFirst:!0,databaseEngineTypes:["keyvalue"],supportedCreateDatabase:!1,getQuerySplitterOptions:()=>n,databaseUrlPlaceholder:"e.g. redis://:authpassword@127.0.0.1:6380/4",authTypeLabel:"Connection mode",defaultAuthTypeName:"node",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#b71c1c" d="M45,29.316c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,29.316,3,29.832,3,30.469v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,32.882,45,32.83,45,32.775V29.316z"/><path fill="#e53935" d="M20.616,39.158c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,39.792,22.048,39.798,20.616,39.158z"/><path fill="#b71c1c" d="M45,21.675c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,21.675,3,22.192,3,22.829v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,25.242,45,25.19,45,25.135V21.675z"/><path fill="#e53935" d="M20.616,31.517c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,32.152,22.048,32.158,20.616,31.517z"/><path fill="#b71c1c" d="M45,14.035c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,14.035,3,14.551,3,15.188v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,17.601,45,17.549,45,17.494V14.035z"/><path fill="#e53935" d="M20.616,23.877c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,24.512,22.048,24.517,20.616,23.877z"/><path fill="#fff" d="M18.748,14.741c-0.002,1.042-2.762,2.057-5.093,2.086c-2.419,0.03-5.273-0.993-5.282-2.051\tc-0.009-1.061,2.842-2.161,5.311-2.135C16.017,12.665,18.751,13.703,18.748,14.741z"/><path fill="#fff" d="M17.038,18.471c2.393,1.022,4.785,2.045,7.178,3.067c1.054-1.56,2.108-3.12,3.162-4.68\tC23.931,17.396,20.485,17.934,17.038,18.471z"/><path fill="#fff" d="M21.86,9.775c-1.101,0.401-2.203,0.801-3.304,1.202c1.507,0.132,3.015,0.264,4.522,0.395\tc0.48,0.796,0.959,1.592,1.439,2.387c0.295-0.722,0.59-1.444,0.885-2.166c1.286-0.1,2.572-0.2,3.858-0.3\tc-0.997-0.419-1.994-0.839-2.991-1.259c0.254-0.608,0.508-1.216,0.762-1.825c-0.97,0.29-1.939,0.58-2.909,0.87\tc-1.07-0.422-2.14-0.843-3.21-1.265C21.228,8.468,21.544,9.122,21.86,9.775z"/><path fill="#b71c1c" d="M27.267,14.619c2.271-0.906,4.543-1.813,6.814-2.719c1.962,0.834,3.924,1.668,5.886,2.502\tc-2.202,0.876-4.403,1.752-6.605,2.629C31.331,16.226,29.299,15.423,27.267,14.619z"/><path fill="#a01c1c" d="M34.082,11.963c-0.005,1.596-0.01,3.191-0.015,4.787c1.967-0.783,3.934-1.565,5.901-2.348\tC38.006,13.589,36.044,12.776,34.082,11.963z"/></svg>',showConnectionField:(t,e)=>"useDatabaseUrl"==t?"cluster"!=e.authType:"authType"==t?!e.useDatabaseUrl:e.useDatabaseUrl?["databaseUrl","isReadOnly","treeKeySeparator"].includes(t):"cluster"==e.authType?["user","password","isReadOnly","treeKeySeparator","clusterNodes","autoDetectNatMap"].includes(t):["server","port","user","password","isReadOnly","treeKeySeparator"].includes(t),getAdvancedConnectionFields:()=>[{type:"checkbox",name:"skipSetName",label:"Skip SETNAME instruction"}],getKeyValueMethodCallList:t=>i(t)};t.exports=r},588:t=>{"use strict";t.exports=require("async")},659:t=>{"use strict";t.exports=require("ioredis")},825:t=>{"use strict";t.exports=require("lodash")},107:t=>{"use strict";t.exports=require("node-redis-dump2")},203:t=>{"use strict";t.exports=require("stream")}},e={},s=function s(a){var i=e[a];if(void 0!==i)return i.exports;var n=e[a]={exports:{}};return t[a](n,n.exports,s),n.exports}(237);module.exports=s})();
1
+ (()=>{var t={994:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.firebirdSplitterOptions=e.oracleSplitterOptions=e.redisSplitterOptions=e.noSplitSplitterOptions=e.mongoSplitterOptions=e.sqliteSplitterOptions=e.postgreSplitterOptions=e.mssqlSplitterOptions=e.mysqlSplitterOptions=e.defaultSplitterOptions=void 0,e.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowCustomSetTerm:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,keepSemicolonInCommands:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},e.mysqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),e.mssqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,keepSemicolonInCommands:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),e.postgreSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.sqliteSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.mongoSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),e.noSplitSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{noSplit:!0}),e.redisSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{splitByLines:!0}),e.oracleSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.firebirdSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomSetTerm:!0,skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},688:t=>{const{DatabaseAnalyser:e}=global.DBGATE_PACKAGES["dbgate-tools"];t.exports=class extends e{constructor(t,e){super(t,e)}}},831:(t,e,s)=>{const a=s(825),i=s(588),n=s(203),r=s(534),l=s(688),c=s(659),o=s(107),{filterName:p}=global.DBGATE_PACKAGES["dbgate-tools"];let u;function d(t){let e,s=[],a="";for(let i=0;i<t.length;)if(/\s/.test(t[i])){for(;i<t.length&&/\s/.test(t[i]);)i++;s.push(a),a="",e=!1}else if('"'!==t[i])if("'"!==t[i])"\\"!==t[i]?(e=!0,a+=t[i++]):(i++,a+=t[i++]);else{for(i++;i<t.length;){if("'"===t[i]){e=!0;break}"\\"!==t[i]||i++,a+=t[i++]}i++}else{for(i++;i<t.length;){if('"'===t[i]){e=!0;break}"\\"!==t[i]||i++,a+=t[i++]}i++}return e&&s.push(a),s}const y={...r,analyserClass:l,async connect({server:t,port:e,user:s,password:i,database:n,useDatabaseUrl:r,databaseUrl:l,treeKeySeparator:o,ssl:p,skipSetName:d,authType:y,clusterNodes:g,autoDetectNatMap:h}){let m,f=0;if(r)m=new c(l),d||await m.client("SETNAME","dbgate");else if("cluster"===y&&u&&u()){const t={user:s,password:i};let e=[];try{e=JSON.parse(g)}catch{}if(!Array.isArray(e)||0===e.length)throw new Error("Cluster nodes must be a non-empty array of host:port or objects with host and port");const a=h?await async function(t,e){const s={};return await Promise.all(t.map((async t=>{const a=new c({host:"string"==typeof t?new URL(t).hostname:t.host,port:"string"==typeof t?Number(new URL(t).port||6379):t.port,...e,lazyConnect:!1,enableReadyCheck:!1,maxRetriesPerRequest:0});try{const e=(await a.cluster("nodes")).split(/\r?\n/).find((t=>/\bmyself\b/.test(t)));if(!e)return;const i=e.split(" ")[1].split("@")[0],[n,r]=i.split(":"),l=`${n}:${Number(r)}`,c="string"==typeof t?new URL(t).hostname:t.host,o="string"==typeof t?Number(new URL(t).port||6379):t.port;s[l]={host:c,port:o}}catch{}finally{a.disconnect()}}))),s}(e,t):void 0;m=new c.Cluster(e,{redisOptions:t,natMap:a})}else{a.isString(n)&&n.startsWith("db")&&(f=parseInt(n.substring(2))),a.isNumber(n)&&(f=n),p&&(p={...a.omit(p,["rejectUnauthorized","password"]),passphrase:p.password});const r={host:t,port:e,username:s,password:i,db:f,tls:p};d||(r.connectionName="dbgate"),m=new c(r)}return{client:m,treeKeySeparator:o||":"}},async query(t,e){const s=d(e);if(s.length>=1){const e=s[0].toLowerCase(),a=s.slice(1);await t.client.call(e,...a)}return{rows:[],columns:[]}},async stream(t,e,s){const a=d(e);if(a.length<1)return void s.done();const i=a[0].toLowerCase(),n=a.slice(1),r=await t.client.call(i,...n);s.info({message:JSON.stringify(r),time:new Date,severity:"info"}),s.done()},readQuery:async(t,e,s)=>new n.PassThrough({objectMode:!0,highWaterMark:100}),async writeTable(t,e,s){return createBulkInsertStreamBase(this,n,t,e,s)},async info(t){const e=await t.client.info();return a.fromPairs(e.split("\n").filter((t=>t.trim()&&!t.trim().startsWith("#"))).map((t=>t.split(":"))))},async getVersion(t){const e=await this.info(t);return{version:e.redis_version,versionText:`Redis ${e.redis_version}`}},async listDatabases(t){const e=await this.info(t);let s=16;try{const e=await t.client.config("GET","databases");Array.isArray(e)&&e.length>=2&&(s=parseInt(e[1],10)||16)}catch{}return a.range(s).map((t=>({name:`db${t}`,extInfo:e[`db${t}`],sortOrder:t})))},async scanKeys(t,e,s=0,a){const i=e?.match(/[\?\[\{]/)?e:e?`*${e}*`:"*",[n,r]=await t.client.scan(s,"MATCH",i,"COUNT",a??2**32),l=await t.client.dbsize(),c=r.map((t=>({key:t})));return await this.enrichKeyInfo(t,c),{nextCursor:n,keys:c,dbsize:l}},async loadKeys(t,e="",s=null,i=null){const n=(await this.getKeys(t,e?`${e}${t.treeKeySeparator}*`:"*")).filter((t=>p(s,t))),r=a.sortBy(n,"text"),l=this.extractKeysFromLevel(t,e,r),c=i?l.slice(0,i):l;return await this.enrichKeyInfo(t,c),c},async exportKeys(t,e){const s=new o({client:t.client});return new Promise(((t,a)=>{s.export({type:"redis",keyPrefix:e.keyPrefix,callback:(e,s)=>{e?a(e):t(s)}})}))},async getKeys(t,e="*"){const s=t.client.scanStream({match:e,count:1e3}),a=[];return s.on("data",(t=>{for(const e of t)a.push(e)})),new Promise(((t,e)=>{s.on("end",(()=>{t(a)})),s.on("error",(t=>{e(t)}))}))},extractKeysFromLevel(t,e,s){const a=e?`${e}${t.treeKeySeparator}`:"",i=""==e?[]:e.split(t.treeKeySeparator),n={};for(const e of s){if(!e.startsWith(a))continue;const s=e.split(t.treeKeySeparator);if(s.length>i.length){const a=s[i.length];if(s.length==i.length+1)n[a]={text:a,key:e};else{const e="::"+a;n[e]?n[e].count++:n[e]={text:a+t.treeKeySeparator+"*",type:"dir",root:s.slice(0,i.length+1).join(t.treeKeySeparator),count:1}}}}return Object.values(n)},async getKeyCardinality(t,e,s){switch(s){case"list":return t.client.llen(e);case"set":return t.client.scard(e);case"zset":return t.client.zcard(e);case"stream":return t.client.xlen(e);case"hash":return t.client.hlen(e)}},async enrichKeyInfo(t,e){const s=t.client.pipeline();for(const t of e)s.type(t.key);const a=await s.exec();for(let t=0;t<a.length;t++)null==a[t][0]&&(e[t].type=a[t][1]);const i=t.client.pipeline();for(const t of e)switch(t.type){case"list":i.llen(t.key);case"set":i.scard(t.key);case"zset":i.zcard(t.key);case"stream":i.xlen(t.key);case"hash":i.hlen(t.key)}const n=await i.exec();let r=0;for(const t of e)"list"!=t.type&&"set"!=t.type&&"zset"!=t.type&&"stream"!=t.type&&"hash"!=t.type||null==n[r][0]&&(t.count=n[r][1],r++)},async loadKeyInfo(t,e){const s={},a=await t.client.type(e);switch(s.key=e,s.type=a,s.ttl=await t.client.ttl(e),s.count=await this.getKeyCardinality(t,e,a),a){case"string":s.value=await t.client.get(e);break;case"ReJSON-RL":s.type="JSON";try{const a=await t.client.call("JSON.GET",e);s.value=JSON.stringify(JSON.parse(a),null,2)}catch(t){s.value=""}}return s},async deleteBranch(t,e){const s=await this.getKeys(t,e),n=a.chunk(s,10);await i.eachLimit(n,10,(async e=>await t.client.del(...e)))},async callMethod(t,e,s){return"mdel"===e?await this.deleteBranch(t,s[0]):await t.client[e](...s)},async loadKeyTableRange(t,e,s,i){switch(await t.client.type(e)){case"list":{const a=await t.client.lrange(e,s,s+i);return{cursor:a.length>i?s+i:0,items:a.map((t=>({value:t}))).slice(0,i)}}case"set":{const a=await t.client.sscan(e,s,"COUNT",i);return{cursor:parseInt(a[0]),items:a[1].map((t=>({value:t})))}}case"zset":{const n=await t.client.zscan(e,s,"COUNT",i);return{cursor:parseInt(n[0]),items:a.chunk(n[1],2).map((t=>({member:t[0],score:t[1]})))}}case"hash":{const n=await t.client.hscan(e,s,"COUNT",i),r=a.chunk(n[1],2),l=await Promise.all(r.map((async([s,a])=>{try{const i=await t.client.call("HTTL",e,"FIELDS",1,s);return{key:s,value:a,ttl:i&&void 0!==i[0]?i[0]:null}}catch(t){return{key:s,value:a}}})));return{cursor:parseInt(n[0]),items:l}}case"stream":{const n=await t.client.xrange(e,0==s?"-":s,"+","COUNT",i);let r=0;if(n.length>0){const t=n[n.length-1][0].split("-");r=`${t[0]}-${parseInt(t[1]+1)}`}return{cursor:r,items:n.map((([t,e])=>({id:t,value:JSON.stringify(a.fromPairs(a.chunk(e,2)),void 0,2)})))}}}return null},close:async t=>t.client.quit(),getAuthTypes:()=>u&&u()?[{name:"node",title:"Single Redis node"},{name:"cluster",title:"Redis Cluster"}]:null,async invokeMethodCallList(t,e){const s=t.client.pipeline();for(const t of e.calls)s.call(t.method,...t.args);await s.exec()}};y.initialize=t=>{u=t.isProApp},t.exports=y},237:(t,e,s)=>{const a=s(831);t.exports={packageName:"dbgate-plugin-redis",drivers:[a],initialize(t){a.initialize(t)}}},197:t=>{const{SqlDumper:e}=global.DBGATE_PACKAGES["dbgate-tools"];t.exports=class extends e{}},534:(t,e,s)=>{const{driverBase:a}=global.DBGATE_PACKAGES["dbgate-tools"],{redisChangeSetToRedisCommands:i}=global.DBGATE_PACKAGES["dbgate-datalib"],{redisSplitterOptions:n}=s(994),r={...a,dumperClass:s(197),dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar(max)",quoteIdentifier:t=>`[${t}]`},engine:"redis@dbgate-plugin-redis",title:"Redis",defaultPort:6379,editorMode:"text",authTypeFirst:!0,databaseEngineTypes:["keyvalue"],supportedCreateDatabase:!1,getQuerySplitterOptions:()=>n,databaseUrlPlaceholder:"e.g. redis://:authpassword@127.0.0.1:6380/4",authTypeLabel:"Connection mode",defaultAuthTypeName:"node",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#b71c1c" d="M45,29.316c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,29.316,3,29.832,3,30.469v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,32.882,45,32.83,45,32.775V29.316z"/><path fill="#e53935" d="M20.616,39.158c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,39.792,22.048,39.798,20.616,39.158z"/><path fill="#b71c1c" d="M45,21.675c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,21.675,3,22.192,3,22.829v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,25.242,45,25.19,45,25.135V21.675z"/><path fill="#e53935" d="M20.616,31.517c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,32.152,22.048,32.158,20.616,31.517z"/><path fill="#b71c1c" d="M45,14.035c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,14.035,3,14.551,3,15.188v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,17.601,45,17.549,45,17.494V14.035z"/><path fill="#e53935" d="M20.616,23.877c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,24.512,22.048,24.517,20.616,23.877z"/><path fill="#fff" d="M18.748,14.741c-0.002,1.042-2.762,2.057-5.093,2.086c-2.419,0.03-5.273-0.993-5.282-2.051\tc-0.009-1.061,2.842-2.161,5.311-2.135C16.017,12.665,18.751,13.703,18.748,14.741z"/><path fill="#fff" d="M17.038,18.471c2.393,1.022,4.785,2.045,7.178,3.067c1.054-1.56,2.108-3.12,3.162-4.68\tC23.931,17.396,20.485,17.934,17.038,18.471z"/><path fill="#fff" d="M21.86,9.775c-1.101,0.401-2.203,0.801-3.304,1.202c1.507,0.132,3.015,0.264,4.522,0.395\tc0.48,0.796,0.959,1.592,1.439,2.387c0.295-0.722,0.59-1.444,0.885-2.166c1.286-0.1,2.572-0.2,3.858-0.3\tc-0.997-0.419-1.994-0.839-2.991-1.259c0.254-0.608,0.508-1.216,0.762-1.825c-0.97,0.29-1.939,0.58-2.909,0.87\tc-1.07-0.422-2.14-0.843-3.21-1.265C21.228,8.468,21.544,9.122,21.86,9.775z"/><path fill="#b71c1c" d="M27.267,14.619c2.271-0.906,4.543-1.813,6.814-2.719c1.962,0.834,3.924,1.668,5.886,2.502\tc-2.202,0.876-4.403,1.752-6.605,2.629C31.331,16.226,29.299,15.423,27.267,14.619z"/><path fill="#a01c1c" d="M34.082,11.963c-0.005,1.596-0.01,3.191-0.015,4.787c1.967-0.783,3.934-1.565,5.901-2.348\tC38.006,13.589,36.044,12.776,34.082,11.963z"/></svg>',showConnectionField:(t,e)=>"useDatabaseUrl"==t?"cluster"!=e.authType:"authType"==t?!e.useDatabaseUrl:e.useDatabaseUrl?["databaseUrl","isReadOnly","treeKeySeparator"].includes(t):"cluster"==e.authType?["user","password","isReadOnly","treeKeySeparator","clusterNodes","autoDetectNatMap"].includes(t):["server","port","user","password","isReadOnly","treeKeySeparator"].includes(t),getAdvancedConnectionFields:()=>[{type:"checkbox",name:"skipSetName",label:"Skip SETNAME instruction"}],getKeyValueMethodCallList:t=>i(t)};t.exports=r},588:t=>{"use strict";t.exports=require("async")},659:t=>{"use strict";t.exports=require("ioredis")},825:t=>{"use strict";t.exports=require("lodash")},107:t=>{"use strict";t.exports=require("node-redis-dump2")},203:t=>{"use strict";t.exports=require("stream")}},e={},s=function s(a){var i=e[a];if(void 0!==i)return i.exports;var n=e[a]={exports:{}};return t[a](n,n.exports,s),n.exports}(237);module.exports=s})();
package/dist/frontend.js CHANGED
@@ -1 +1 @@
1
- var plugin;(()=>{var t={994:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.firebirdSplitterOptions=e.oracleSplitterOptions=e.redisSplitterOptions=e.noSplitSplitterOptions=e.mongoSplitterOptions=e.sqliteSplitterOptions=e.postgreSplitterOptions=e.mssqlSplitterOptions=e.mysqlSplitterOptions=e.defaultSplitterOptions=void 0,e.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,keepSemicolonInCommands:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},e.mysqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),e.mssqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,keepSemicolonInCommands:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),e.postgreSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.sqliteSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.mongoSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),e.noSplitSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{noSplit:!0}),e.redisSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{splitByLines:!0}),e.oracleSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.firebirdSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},56:(t,e,s)=>{const{SqlDumper:i}=s.g.DBGATE_PACKAGES["dbgate-tools"];t.exports=class extends i{}},831:(t,e,s)=>{const{driverBase:i}=s.g.DBGATE_PACKAGES["dbgate-tools"],{redisChangeSetToRedisCommands:l}=s.g.DBGATE_PACKAGES["dbgate-datalib"],{redisSplitterOptions:r}=s(994),n={...i,dumperClass:s(56),dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar(max)",quoteIdentifier:t=>`[${t}]`},engine:"redis@dbgate-plugin-redis",title:"Redis",defaultPort:6379,editorMode:"text",authTypeFirst:!0,databaseEngineTypes:["keyvalue"],supportedCreateDatabase:!1,getQuerySplitterOptions:()=>r,databaseUrlPlaceholder:"e.g. redis://:authpassword@127.0.0.1:6380/4",authTypeLabel:"Connection mode",defaultAuthTypeName:"node",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#b71c1c" d="M45,29.316c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,29.316,3,29.832,3,30.469v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,32.882,45,32.83,45,32.775V29.316z"/><path fill="#e53935" d="M20.616,39.158c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,39.792,22.048,39.798,20.616,39.158z"/><path fill="#b71c1c" d="M45,21.675c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,21.675,3,22.192,3,22.829v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,25.242,45,25.19,45,25.135V21.675z"/><path fill="#e53935" d="M20.616,31.517c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,32.152,22.048,32.158,20.616,31.517z"/><path fill="#b71c1c" d="M45,14.035c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,14.035,3,14.551,3,15.188v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,17.601,45,17.549,45,17.494V14.035z"/><path fill="#e53935" d="M20.616,23.877c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,24.512,22.048,24.517,20.616,23.877z"/><path fill="#fff" d="M18.748,14.741c-0.002,1.042-2.762,2.057-5.093,2.086c-2.419,0.03-5.273-0.993-5.282-2.051\tc-0.009-1.061,2.842-2.161,5.311-2.135C16.017,12.665,18.751,13.703,18.748,14.741z"/><path fill="#fff" d="M17.038,18.471c2.393,1.022,4.785,2.045,7.178,3.067c1.054-1.56,2.108-3.12,3.162-4.68\tC23.931,17.396,20.485,17.934,17.038,18.471z"/><path fill="#fff" d="M21.86,9.775c-1.101,0.401-2.203,0.801-3.304,1.202c1.507,0.132,3.015,0.264,4.522,0.395\tc0.48,0.796,0.959,1.592,1.439,2.387c0.295-0.722,0.59-1.444,0.885-2.166c1.286-0.1,2.572-0.2,3.858-0.3\tc-0.997-0.419-1.994-0.839-2.991-1.259c0.254-0.608,0.508-1.216,0.762-1.825c-0.97,0.29-1.939,0.58-2.909,0.87\tc-1.07-0.422-2.14-0.843-3.21-1.265C21.228,8.468,21.544,9.122,21.86,9.775z"/><path fill="#b71c1c" d="M27.267,14.619c2.271-0.906,4.543-1.813,6.814-2.719c1.962,0.834,3.924,1.668,5.886,2.502\tc-2.202,0.876-4.403,1.752-6.605,2.629C31.331,16.226,29.299,15.423,27.267,14.619z"/><path fill="#a01c1c" d="M34.082,11.963c-0.005,1.596-0.01,3.191-0.015,4.787c1.967-0.783,3.934-1.565,5.901-2.348\tC38.006,13.589,36.044,12.776,34.082,11.963z"/></svg>',showConnectionField:(t,e)=>"useDatabaseUrl"==t?"cluster"!=e.authType:"authType"==t?!e.useDatabaseUrl:e.useDatabaseUrl?["databaseUrl","isReadOnly","treeKeySeparator"].includes(t):"cluster"==e.authType?["user","password","isReadOnly","treeKeySeparator","clusterNodes","autoDetectNatMap"].includes(t):["server","port","user","password","isReadOnly","treeKeySeparator"].includes(t),getAdvancedConnectionFields:()=>[{type:"checkbox",name:"skipSetName",label:"Skip SETNAME instruction"}],getKeyValueMethodCallList:t=>l(t)};t.exports=n}},e={};function s(i){var l=e[i];if(void 0!==l)return l.exports;var r=e[i]={exports:{}};return t[i](r,r.exports,s),r.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var i in e)s.o(e,i)&&!s.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};(()=>{"use strict";s.r(i),s.d(i,{default:()=>e});var t=s(831);const e={packageName:"dbgate-plugin-redis",drivers:[s.n(t)()]}})(),plugin=i})();
1
+ var plugin;(()=>{var t={994:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.firebirdSplitterOptions=e.oracleSplitterOptions=e.redisSplitterOptions=e.noSplitSplitterOptions=e.mongoSplitterOptions=e.sqliteSplitterOptions=e.postgreSplitterOptions=e.mssqlSplitterOptions=e.mysqlSplitterOptions=e.defaultSplitterOptions=void 0,e.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowCustomSetTerm:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,keepSemicolonInCommands:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},e.mysqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),e.mssqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,keepSemicolonInCommands:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),e.postgreSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.sqliteSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.mongoSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),e.noSplitSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{noSplit:!0}),e.redisSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{splitByLines:!0}),e.oracleSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.firebirdSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomSetTerm:!0,skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},56:(t,e,s)=>{const{SqlDumper:i}=s.g.DBGATE_PACKAGES["dbgate-tools"];t.exports=class extends i{}},831:(t,e,s)=>{const{driverBase:i}=s.g.DBGATE_PACKAGES["dbgate-tools"],{redisChangeSetToRedisCommands:l}=s.g.DBGATE_PACKAGES["dbgate-datalib"],{redisSplitterOptions:r}=s(994),n={...i,dumperClass:s(56),dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar(max)",quoteIdentifier:t=>`[${t}]`},engine:"redis@dbgate-plugin-redis",title:"Redis",defaultPort:6379,editorMode:"text",authTypeFirst:!0,databaseEngineTypes:["keyvalue"],supportedCreateDatabase:!1,getQuerySplitterOptions:()=>r,databaseUrlPlaceholder:"e.g. redis://:authpassword@127.0.0.1:6380/4",authTypeLabel:"Connection mode",defaultAuthTypeName:"node",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#b71c1c" d="M45,29.316c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,29.316,3,29.832,3,30.469v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,32.882,45,32.83,45,32.775V29.316z"/><path fill="#e53935" d="M20.616,39.158c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,39.792,22.048,39.798,20.616,39.158z"/><path fill="#b71c1c" d="M45,21.675c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,21.675,3,22.192,3,22.829v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,25.242,45,25.19,45,25.135V21.675z"/><path fill="#e53935" d="M20.616,31.517c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,32.152,22.048,32.158,20.616,31.517z"/><path fill="#b71c1c" d="M45,14.035c0-0.637-1.686-1.153-3.769-1.153c-1.812,0-3.32,0.391-3.683,0.911\tc-3.586-1.694-7.173-3.388-10.759-5.083c-1.248-0.59-2.673-0.584-3.918,0.014c-3.818,1.837-7.636,3.674-11.454,5.511\tc-0.864-0.126-1.907-0.201-3.032-0.201C5.408,14.035,3,14.551,3,15.188v3.46c0,0.033,0.033,0.064,0.045,0.096\tc-0.146,0.555,0.07,1.205,0.649,1.478c5.641,2.665,11.281,5.329,16.922,7.994c1.432,0.677,3.068,0.671,4.496-0.016\tc6.442-3.1,12.884-6.199,19.327-9.299c0.484-0.233,0.651-0.786,0.509-1.247C44.971,17.601,45,17.549,45,17.494V14.035z"/><path fill="#e53935" d="M20.616,23.877c-5.641-2.522-11.281-5.044-16.922-7.566c-0.922-0.412-0.926-1.727-0.007-2.146\tc6.395-2.912,12.789-5.824,19.184-8.736c1.244-0.567,2.67-0.572,3.918-0.014c5.881,2.63,11.763,5.259,17.644,7.889\tc0.754,0.337,0.758,1.414,0.006,1.756c-6.442,2.934-12.884,5.868-19.327,8.801C23.684,24.512,22.048,24.517,20.616,23.877z"/><path fill="#fff" d="M18.748,14.741c-0.002,1.042-2.762,2.057-5.093,2.086c-2.419,0.03-5.273-0.993-5.282-2.051\tc-0.009-1.061,2.842-2.161,5.311-2.135C16.017,12.665,18.751,13.703,18.748,14.741z"/><path fill="#fff" d="M17.038,18.471c2.393,1.022,4.785,2.045,7.178,3.067c1.054-1.56,2.108-3.12,3.162-4.68\tC23.931,17.396,20.485,17.934,17.038,18.471z"/><path fill="#fff" d="M21.86,9.775c-1.101,0.401-2.203,0.801-3.304,1.202c1.507,0.132,3.015,0.264,4.522,0.395\tc0.48,0.796,0.959,1.592,1.439,2.387c0.295-0.722,0.59-1.444,0.885-2.166c1.286-0.1,2.572-0.2,3.858-0.3\tc-0.997-0.419-1.994-0.839-2.991-1.259c0.254-0.608,0.508-1.216,0.762-1.825c-0.97,0.29-1.939,0.58-2.909,0.87\tc-1.07-0.422-2.14-0.843-3.21-1.265C21.228,8.468,21.544,9.122,21.86,9.775z"/><path fill="#b71c1c" d="M27.267,14.619c2.271-0.906,4.543-1.813,6.814-2.719c1.962,0.834,3.924,1.668,5.886,2.502\tc-2.202,0.876-4.403,1.752-6.605,2.629C31.331,16.226,29.299,15.423,27.267,14.619z"/><path fill="#a01c1c" d="M34.082,11.963c-0.005,1.596-0.01,3.191-0.015,4.787c1.967-0.783,3.934-1.565,5.901-2.348\tC38.006,13.589,36.044,12.776,34.082,11.963z"/></svg>',showConnectionField:(t,e)=>"useDatabaseUrl"==t?"cluster"!=e.authType:"authType"==t?!e.useDatabaseUrl:e.useDatabaseUrl?["databaseUrl","isReadOnly","treeKeySeparator"].includes(t):"cluster"==e.authType?["user","password","isReadOnly","treeKeySeparator","clusterNodes","autoDetectNatMap"].includes(t):["server","port","user","password","isReadOnly","treeKeySeparator"].includes(t),getAdvancedConnectionFields:()=>[{type:"checkbox",name:"skipSetName",label:"Skip SETNAME instruction"}],getKeyValueMethodCallList:t=>l(t)};t.exports=n}},e={};function s(i){var l=e[i];if(void 0!==l)return l.exports;var r=e[i]={exports:{}};return t[i](r,r.exports,s),r.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var i in e)s.o(e,i)&&!s.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};(()=>{"use strict";s.r(i),s.d(i,{default:()=>e});var t=s(831);const e={packageName:"dbgate-plugin-redis",drivers:[s.n(t)()]}})(),plugin=i})();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-plugin-redis",
3
3
  "main": "dist/backend.js",
4
- "version": "7.1.0",
4
+ "version": "7.1.1",
5
5
  "license": "GPL-3.0",
6
6
  "description": "Redis connector plugin for DbGate",
7
7
  "homepage": "https://www.dbgate.io",
@@ -34,8 +34,8 @@
34
34
  "webpack-cli": "^5.1.4"
35
35
  },
36
36
  "dependencies": {
37
- "dbgate-query-splitter": "^4.11.9",
38
- "dbgate-tools": "^7.1.0",
37
+ "dbgate-query-splitter": "^4.12.0",
38
+ "dbgate-tools": "^7.1.1",
39
39
  "lodash": "^4.17.21",
40
40
  "async": "^3.2.3",
41
41
  "ioredis": "^5.4.1",