@milkio/redis 1.0.0-alpha.103 → 1.0.0-alpha.104
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/chunk-a0gkrykm.js +8 -0
- package/chunk-sgjns701.js +5 -0
- package/index.js +4 -0
- package/package.json +1 -11
- package/.publish/publish.json +0 -7
- package/README.md +0 -15
- package/bun.lockb +0 -0
- package/index.ts +0 -110
- package/tsconfig.json +0 -21
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{createRequire as k}from"node:module";var g=Object.create;var{getPrototypeOf:h,defineProperty:f,getOwnPropertyNames:i}=Object;var j=Object.prototype.hasOwnProperty;var l=(a,b,c)=>{c=a!=null?g(h(a)):{};let d=b||!a||!a.__esModule?f(c,"default",{value:a,enumerable:!0}):c;for(let e of i(a))if(!j.call(d,e))f(d,e,{get:()=>a[e],enumerable:!0});return d};var m=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var o=k(import.meta.url);
|
|
2
|
+
export{l as a,m as b,o as c};
|
|
3
|
+
|
|
4
|
+
//# debugId=3445DDE2A02622FB64756E2164756E21
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICBdLAogICJtYXBwaW5ncyI6ICIiLAogICJkZWJ1Z0lkIjogIjM0NDVEREUyQTAyNjIyRkI2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
package/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as m,c as f}from"./chunk-sgjns701.js";var i={rules:{stringify:[{match:(t)=>typeof t=="bigint",handler:(t)=>`t!bigint:${t.toString()}`},{match:(t)=>t instanceof Date,handler:(t)=>`t!Date:${t.toISOString()}`},{match:(t)=>t instanceof URL,handler:(t)=>`t!URL:${t.toString()}`},{match:(t)=>t instanceof RegExp,handler:(t)=>`t!RegExp:${t.toString()}`},{match:(t)=>t instanceof Uint8Array,handler:(t)=>`t!Uint8Array:${new TextDecoder().decode(t)}`},{match:(t)=>t instanceof ArrayBuffer,handler:(t)=>`t!ArrayBuffer:${new TextDecoder().decode(t)}`}],parse:[{match:(t)=>t.startsWith("t!bigint:"),handler:(t)=>BigInt(t.slice(9))},{match:(t)=>t.startsWith("t!Date:"),handler:(t)=>new Date(t.slice(7))},{match:(t)=>t.startsWith("t!URL:"),handler:(t)=>new URL(t.slice(6))},{match:(t)=>t.startsWith("t!RegExp:"),handler:(t)=>new RegExp(t.slice(9))},{match:(t)=>t.startsWith("t!Uint8Array:"),handler:(t)=>new TextEncoder().encode(t.slice(13))},{match:(t)=>t.startsWith("t!ArrayBuffer:"),handler:(t)=>new TextEncoder().encode(t.slice(14)).buffer}]},stringify(t){return JSON.stringify(i.encode(t))},parse(t){return i.decode(JSON.parse(t))},encode(t){function c(r){if(!r||typeof r!="object"&&typeof r!="bigint")return r;if(r){if(Array.isArray(r)){let s=[];for(let n=0;n<r.length;n++)s[n]=c(r[n]);return s}}else return r;for(let s of i.rules.stringify)if(s.match(r))return s.handler(r);let o={};for(var e in r)o[e]=c(r[e]);return o}return c(t)},decode(t){function c(r){if(Array.isArray(r))return r.map(c);if(typeof r=="object"&&r!==null){let o={};for(let e in r)r.hasOwnProperty(e)&&(o[e]=c(r[e]));return o}else if(typeof r=="string"){for(let o of i.rules.parse)if(o.match(r)===!0)return o.handler(r);return r}return r}return c(t)}};async function E(t){let r=await(await import("./chunk-a0gkrykm.js")).default.createClient(t).connect();return{raw:r,useCache:(e,s=void 0)=>({set:async(n,a)=>{return await r.PSETEX(e,a,i.stringify(n)),n},get:async()=>{let n=await r.GET(e);if(n===null)return s;return i.parse(n)},pull:async()=>{let a=(await r.MULTI().GET(e).DEL(e).EXEC())[0];if(a===null)return s;return i.parse(a)},has:async()=>{return await r.GET(e)!==null},del:async()=>{await r.DEL(e)}}),useCount:(e)=>({get:async()=>{let s=await r.GET(e);return s?Number(s):0},add:async(s,n)=>{if(!n)return await r.INCRBY(e,s);else{let a=await r.MULTI().INCRBY(e,s).PEXPIRE(e,n).EXEC();return Number(a[0])}},sub:async(s,n)=>{return await r.DECRBY(s,n)}}),useResultCache:async(e,s,n,a)=>{let l=await r.get(e);if(l){let u=i.parse(l);if(u.T>new Date().getTime())return u.R;if(await r.GET(`${e}:lock`)==="1")return u.R;await r.PSETEX(`${e}:lock`,a?.lockInterval??6000,"1")}let d={R:await n(),T:new Date().getTime()+s};return await r.PSETEX(e,s+(a?.realExpireMs??s+Math.floor(s*Math.random()))+(a?.lockInterval??6000),i.stringify(d)),d.R},useClockIn:(e,s)=>({clockIn:async(n)=>{await r.MULTI().SETBIT(e,n,1).PEXPIREAT(e,s.getTime()).EXEC()},check:async(n)=>{return await r.GETBIT(e,n)===1},firstClockIn:async()=>{return await r.BITPOS(e,1)},lastClockIn:async()=>{return await r.BITPOS(e,1,-1)},toArray:async(n)=>{let a=await r.BITFIELD(e,[{operation:"GET",encoding:`u${n}`,offset:"#0"}]),l=Number.parseInt(`${a}`).toString(2).split(""),d=[];for(let u=0;u<n-l.length;u++)d.push("0");return[...d,...l].map((u)=>u==="1")},count:async()=>{return await r.BITCOUNT(e)},clean:async()=>{await r.DEL(e)}})}}export{E as createRedis};
|
|
2
|
+
|
|
3
|
+
//# debugId=F5F74FD7D52AAA7664756E2164756E21
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi5cXG5vZGVfbW9kdWxlc1xcQHNvdXRoZXJuLWF1cm9yYVxcdHNvblxcZGlzdFxcdHNvbi5qcyIsICIuLlxcaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiY29uc3QgYyA9IHtcbiAgcnVsZXM6IHtcbiAgICBzdHJpbmdpZnk6IFtcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6ICh0KSA9PiB0eXBlb2YgdCA9PSBcImJpZ2ludFwiLFxuICAgICAgICBoYW5kbGVyOiAodCkgPT4gYHQhYmlnaW50OiR7dC50b1N0cmluZygpfWBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiAodCkgPT4gdCBpbnN0YW5jZW9mIERhdGUsXG4gICAgICAgIGhhbmRsZXI6ICh0KSA9PiBgdCFEYXRlOiR7dC50b0lTT1N0cmluZygpfWBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiAodCkgPT4gdCBpbnN0YW5jZW9mIFVSTCxcbiAgICAgICAgaGFuZGxlcjogKHQpID0+IGB0IVVSTDoke3QudG9TdHJpbmcoKX1gXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBtYXRjaDogKHQpID0+IHQgaW5zdGFuY2VvZiBSZWdFeHAsXG4gICAgICAgIGhhbmRsZXI6ICh0KSA9PiBgdCFSZWdFeHA6JHt0LnRvU3RyaW5nKCl9YFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6ICh0KSA9PiB0IGluc3RhbmNlb2YgVWludDhBcnJheSxcbiAgICAgICAgaGFuZGxlcjogKHQpID0+IGB0IVVpbnQ4QXJyYXk6JHtuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodCl9YFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6ICh0KSA9PiB0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIsXG4gICAgICAgIGhhbmRsZXI6ICh0KSA9PiBgdCFBcnJheUJ1ZmZlcjoke25ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh0KX1gXG4gICAgICB9XG4gICAgXSxcbiAgICBwYXJzZTogW1xuICAgICAge1xuICAgICAgICBtYXRjaDogKHQpID0+IHQuc3RhcnRzV2l0aChcInQhYmlnaW50OlwiKSxcbiAgICAgICAgaGFuZGxlcjogKHQpID0+IEJpZ0ludCh0LnNsaWNlKDkpKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6ICh0KSA9PiB0LnN0YXJ0c1dpdGgoXCJ0IURhdGU6XCIpLFxuICAgICAgICBoYW5kbGVyOiAodCkgPT4gbmV3IERhdGUodC5zbGljZSg3KSlcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiAodCkgPT4gdC5zdGFydHNXaXRoKFwidCFVUkw6XCIpLFxuICAgICAgICBoYW5kbGVyOiAodCkgPT4gbmV3IFVSTCh0LnNsaWNlKDYpKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6ICh0KSA9PiB0LnN0YXJ0c1dpdGgoXCJ0IVJlZ0V4cDpcIiksXG4gICAgICAgIGhhbmRsZXI6ICh0KSA9PiBuZXcgUmVnRXhwKHQuc2xpY2UoOSkpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBtYXRjaDogKHQpID0+IHQuc3RhcnRzV2l0aChcInQhVWludDhBcnJheTpcIiksXG4gICAgICAgIGhhbmRsZXI6ICh0KSA9PiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodC5zbGljZSgxMykpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBtYXRjaDogKHQpID0+IHQuc3RhcnRzV2l0aChcInQhQXJyYXlCdWZmZXI6XCIpLFxuICAgICAgICBoYW5kbGVyOiAodCkgPT4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHQuc2xpY2UoMTQpKS5idWZmZXJcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIHN0cmluZ2lmeSh0KSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGMuZW5jb2RlKHQpKTtcbiAgfSxcbiAgcGFyc2UodCkge1xuICAgIHJldHVybiBjLmRlY29kZShKU09OLnBhcnNlKHQpKTtcbiAgfSxcbiAgZW5jb2RlKHQpIHtcbiAgICBmdW5jdGlvbiBuKGUpIHtcbiAgICAgIGlmICghZSB8fCB0eXBlb2YgZSAhPSBcIm9iamVjdFwiICYmIHR5cGVvZiBlICE9IFwiYmlnaW50XCIpXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHtcbiAgICAgICAgICBjb25zdCBzID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgc1tpXSA9IG4oZVtpXSk7XG4gICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIGZvciAoY29uc3QgcyBvZiBjLnJ1bGVzLnN0cmluZ2lmeSlcbiAgICAgICAgaWYgKHMubWF0Y2goZSkpXG4gICAgICAgICAgcmV0dXJuIHMuaGFuZGxlcihlKTtcbiAgICAgIGNvbnN0IHIgPSB7fTtcbiAgICAgIGZvciAodmFyIGEgaW4gZSlcbiAgICAgICAgclthXSA9IG4oZVthXSk7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gICAgcmV0dXJuIG4odCk7XG4gIH0sXG4gIGRlY29kZSh0KSB7XG4gICAgZnVuY3Rpb24gbihlKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSlcbiAgICAgICAgcmV0dXJuIGUubWFwKG4pO1xuICAgICAgaWYgKHR5cGVvZiBlID09IFwib2JqZWN0XCIgJiYgZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCByID0ge307XG4gICAgICAgIGZvciAoY29uc3QgYSBpbiBlKVxuICAgICAgICAgIGUuaGFzT3duUHJvcGVydHkoYSkgJiYgKHJbYV0gPSBuKGVbYV0pKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIGMucnVsZXMucGFyc2UpXG4gICAgICAgICAgaWYgKHIubWF0Y2goZSkgPT09ICEwKVxuICAgICAgICAgICAgcmV0dXJuIHIuaGFuZGxlcihlKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG4gICAgcmV0dXJuIG4odCk7XG4gIH1cbn07XG5leHBvcnQge1xuICBjIGFzIFRTT05cbn07XG4iLAogICAgImltcG9ydCB0eXBlIHsgUmVkaXNDbGllbnRPcHRpb25zIH0gZnJvbSBcInJlZGlzXCI7XG5pbXBvcnQgeyBUU09OIH0gZnJvbSBcIkBzb3V0aGVybi1hdXJvcmEvdHNvblwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVkaXM8T3B0aW9ucyBleHRlbmRzIFJlZGlzQ2xpZW50T3B0aW9ucz4ob3B0aW9uczogT3B0aW9ucykge1xuICBjb25zdCBOb2RlUmVkaXMgPSBhd2FpdCBpbXBvcnQoXCJyZWRpc1wiKTtcbiAgY29uc3QgcmVkaXMgPSBhd2FpdCBOb2RlUmVkaXMuZGVmYXVsdC5jcmVhdGVDbGllbnQob3B0aW9ucykuY29ubmVjdCgpO1xuXG4gIGNvbnN0IG1pbGtpb1JlZGlzID0ge1xuICAgIHJhdzogcmVkaXMsXG4gICAgdXNlQ2FjaGU6IDxUPihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiAoe1xuICAgICAgc2V0OiBhc3luYyAodmFsdWU6IFQsIGV4cGlyZU1zOiBudW1iZXIpOiBQcm9taXNlPFQ+ID0+IHtcbiAgICAgICAgYXdhaXQgcmVkaXMuUFNFVEVYKGtleSwgZXhwaXJlTXMsIFRTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXQ6IGFzeW5jICgpOiBQcm9taXNlPHVuZGVmaW5lZCB8IFQ+ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVkaXMuR0VUKGtleSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIHJldHVybiBUU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgICB9LFxuICAgICAgcHVsbDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHRSYXcgPSBhd2FpdCByZWRpcy5NVUxUSSgpLkdFVChrZXkpLkRFTChrZXkpLkVYRUMoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzdWx0UmF3WzBdO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICByZXR1cm4gVFNPTi5wYXJzZShyZXN1bHQgYXMgc3RyaW5nKTtcbiAgICAgIH0sXG4gICAgICBoYXM6IGFzeW5jICgpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVkaXMuR0VUKGtleSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgIT09IG51bGw7XG4gICAgICB9LFxuICAgICAgZGVsOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHJlZGlzLkRFTChrZXkpO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICB1c2VDb3VudDogKGtleTogc3RyaW5nKSA9PiAoe1xuICAgICAgZ2V0OiBhc3luYyAoKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVkaXMuR0VUKGtleSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgPyBOdW1iZXIocmVzdWx0KSA6IDA7XG4gICAgICB9LFxuICAgICAgYWRkOiBhc3luYyAoYW1vdW50OiBudW1iZXIsIGV4cGlyZU1zPzogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgICAgICAgaWYgKCFleHBpcmVNcykge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlZGlzLklOQ1JCWShrZXksIGFtb3VudCk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWRpcy5NVUxUSSgpLklOQ1JCWShrZXksIGFtb3VudCkuUEVYUElSRShrZXksIGV4cGlyZU1zKS5FWEVDKCk7XG4gICAgICAgICAgcmV0dXJuIE51bWJlcihyZXN1bHRbMF0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3ViOiBhc3luYyAoa2V5OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVkaXMuREVDUkJZKGtleSwgYW1vdW50KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgfSksXG4gICAgdXNlUmVzdWx0Q2FjaGU6IGFzeW5jIDxIYW5kbGVyIGV4dGVuZHMgKCkgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj4+KGtleTogc3RyaW5nLCBleHBpcmVNczogbnVtYmVyLCBoYW5kbGVyOiBIYW5kbGVyLCBvcHRpb25zPzogeyByZWFsRXhwaXJlTXM/OiBudW1iZXI7IGxvY2tJbnRlcnZhbD86IG51bWJlciB9KTogUHJvbWlzZTxBd2FpdGVkPFJldHVyblR5cGU8SGFuZGxlcj4+PiA9PiB7XG4gICAgICBjb25zdCByZXN1bHRSYXcgPSBhd2FpdCByZWRpcy5nZXQoa2V5KTtcbiAgICAgIGlmIChyZXN1bHRSYXcpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiB7IFQ6IG51bWJlcjsgUjogYW55IH0gPSBUU09OLnBhcnNlKHJlc3VsdFJhdyk7XG4gICAgICAgIGlmIChyZXN1bHQuVCA+IG5ldyBEYXRlKCkuZ2V0VGltZSgpKSByZXR1cm4gcmVzdWx0LlI7XG4gICAgICAgIGNvbnN0IGxvY2sgPSBhd2FpdCByZWRpcy5HRVQoYCR7a2V5fTpsb2NrYCk7XG4gICAgICAgIGlmIChsb2NrID09PSBcIjFcIikgcmV0dXJuIHJlc3VsdC5SO1xuICAgICAgICBhd2FpdCByZWRpcy5QU0VURVgoYCR7a2V5fTpsb2NrYCwgb3B0aW9ucz8ubG9ja0ludGVydmFsID8/IDYwMDAsIFwiMVwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgUjogKGF3YWl0IGhhbmRsZXIoKSkgYXMgQXdhaXRlZDxSZXR1cm5UeXBlPEhhbmRsZXI+PiwgVDogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBleHBpcmVNcyB9O1xuICAgICAgYXdhaXQgcmVkaXMuUFNFVEVYKGtleSwgZXhwaXJlTXMgKyAob3B0aW9ucz8ucmVhbEV4cGlyZU1zID8/IGV4cGlyZU1zICsgTWF0aC5mbG9vcihleHBpcmVNcyAqIE1hdGgucmFuZG9tKCkpKSArIChvcHRpb25zPy5sb2NrSW50ZXJ2YWwgPz8gNjAwMCksIFRTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0LlI7XG4gICAgfSxcbiAgICB1c2VDbG9ja0luOiAoa2V5OiBzdHJpbmcsIGNsZWFuRGF0ZTogRGF0ZSkgPT4gKHtcbiAgICAgIGNsb2NrSW46IGFzeW5jIChvZmZzZXQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBhd2FpdCByZWRpcy5NVUxUSSgpLlNFVEJJVChrZXksIG9mZnNldCwgMSkuUEVYUElSRUFUKGtleSwgY2xlYW5EYXRlLmdldFRpbWUoKSkuRVhFQygpO1xuICAgICAgfSxcbiAgICAgIGNoZWNrOiBhc3luYyAob2Zmc2V0OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVkaXMuR0VUQklUKGtleSwgb2Zmc2V0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gMTtcbiAgICAgIH0sXG4gICAgICBmaXJzdENsb2NrSW46IGFzeW5jICgpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWRpcy5CSVRQT1Moa2V5LCAxKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgICBsYXN0Q2xvY2tJbjogYXN5bmMgKCk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlZGlzLkJJVFBPUyhrZXksIDEsIC0xKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgICB0b0FycmF5OiBhc3luYyAobGVuZ3RoOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW5bXT4gPT4ge1xuICAgICAgICBjb25zdCByZXN1bHRSYXcgPSBhd2FpdCByZWRpcy5CSVRGSUVMRChrZXksIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvcGVyYXRpb246IFwiR0VUXCIsXG4gICAgICAgICAgICBlbmNvZGluZzogYHUke2xlbmd0aH1gLFxuICAgICAgICAgICAgb2Zmc2V0OiBcIiMwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE51bWJlci5wYXJzZUludChgJHtyZXN1bHRSYXd9YCkudG9TdHJpbmcoMikuc3BsaXQoXCJcIik7XG4gICAgICAgIGNvbnN0IGZpbGwgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGggLSByZXN1bHQubGVuZ3RoOyBpKyspIGZpbGwucHVzaChcIjBcIik7XG4gICAgICAgIHJldHVybiBbLi4uZmlsbCwgLi4ucmVzdWx0XS5tYXAoKHYpID0+IHYgPT09IFwiMVwiKTtcbiAgICAgIH0sXG4gICAgICBjb3VudDogYXN5bmMgKCk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlZGlzLkJJVENPVU5UKGtleSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICAgY2xlYW46IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgYXdhaXQgcmVkaXMuREVMKGtleSk7XG4gICAgICB9LFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBtaWxraW9SZWRpcztcbn1cblxuZXhwb3J0IHR5cGUgUmVkaXMgPSBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVJlZGlzPj47XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiK0NBQUEsSUFBTSxFQUFJLENBQ1IsTUFBTyxDQUNMLFVBQVcsQ0FDVCxDQUNFLE1BQU8sQ0FBQyxJQUFNLE9BQU8sR0FBSyxTQUMxQixRQUFTLENBQUMsSUFBTSxZQUFZLEVBQUUsU0FBUyxHQUN6QyxFQUNBLENBQ0UsTUFBTyxDQUFDLElBQU0sYUFBYSxLQUMzQixRQUFTLENBQUMsSUFBTSxVQUFVLEVBQUUsWUFBWSxHQUMxQyxFQUNBLENBQ0UsTUFBTyxDQUFDLElBQU0sYUFBYSxJQUMzQixRQUFTLENBQUMsSUFBTSxTQUFTLEVBQUUsU0FBUyxHQUN0QyxFQUNBLENBQ0UsTUFBTyxDQUFDLElBQU0sYUFBYSxPQUMzQixRQUFTLENBQUMsSUFBTSxZQUFZLEVBQUUsU0FBUyxHQUN6QyxFQUNBLENBQ0UsTUFBTyxDQUFDLElBQU0sYUFBYSxXQUMzQixRQUFTLENBQUMsSUFBTSxnQkFBZ0IsSUFBSSxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQzVELEVBQ0EsQ0FDRSxNQUFPLENBQUMsSUFBTSxhQUFhLFlBQzNCLFFBQVMsQ0FBQyxJQUFNLGlCQUFpQixJQUFJLFlBQVksRUFBRSxPQUFPLENBQUMsR0FDN0QsQ0FDRixFQUNBLE1BQU8sQ0FDTCxDQUNFLE1BQU8sQ0FBQyxJQUFNLEVBQUUsV0FBVyxXQUFXLEVBQ3RDLFFBQVMsQ0FBQyxJQUFNLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUNuQyxFQUNBLENBQ0UsTUFBTyxDQUFDLElBQU0sRUFBRSxXQUFXLFNBQVMsRUFDcEMsUUFBUyxDQUFDLElBQU0sSUFBSSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FDckMsRUFDQSxDQUNFLE1BQU8sQ0FBQyxJQUFNLEVBQUUsV0FBVyxRQUFRLEVBQ25DLFFBQVMsQ0FBQyxJQUFNLElBQUksSUFBSSxF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QUMsRUFFaEssRUFBTyxHQUVoQixXQUFZLENBQUMsRUFBYSxLQUFxQixDQUM3QyxRQUFTLE1BQU8sSUFBa0MsQ0FDaEQsTUFBTSxFQUFNLE1BQU0sRUFBRSxPQUFPLEVBQUssRUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFLLEVBQVUsUUFBUSxDQUFDLEVBQUUsS0FBSyxHQUV0RixNQUFPLE1BQU8sSUFBcUMsQ0FFakQsT0FEZSxNQUFNLEVBQU0sT0FBTyxFQUFLLENBQU0sSUFDM0IsR0FFcEIsYUFBYyxTQUE2QixDQUV6QyxPQURlLE1BQU0sRUFBTSxPQUFPLEVBQUssQ0FBQyxHQUcxQyxZQUFhLFNBQTZCLENBRXhDLE9BRGUsTUFBTSxFQUFNLE9BQU8sRUFBSyxFQUFHLEVBQUUsR0FHOUMsUUFBUyxNQUFPLElBQXVDLENBQ3JELElBQU0sRUFBWSxNQUFNLEVBQU0sU0FBUyxFQUFLLENBQzFDLENBQ0UsVUFBVyxNQUNYLFNBQVUsSUFBSSxJQUNkLE9BQVEsSUFDVixDQUNGLENBQUMsRUFDSyxFQUFTLE9BQU8sU0FBUyxHQUFHLEdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFDN0QsRUFBTyxDQUFDLEVBQ2QsUUFBUyxFQUFJLEVBQUcsRUFBSSxFQUFTLEVBQU8sT0FBUSxJQUFLLEVBQUssS0FBSyxHQUFHLEVBQzlELE1BQU8sQ0FBQyxHQUFHLEVBQU0sR0FBRyxDQUFNLEVBQUUsSUFBSSxDQUFDLElBQU0sSUFBTSxHQUFHLEdBRWxELE1BQU8sU0FBNkIsQ0FFbEMsT0FEZSxNQUFNLEVBQU0sU0FBUyxDQUFHLEdBR3pDLE1BQU8sU0FBMkIsQ0FDaEMsTUFBTSxFQUFNLElBQUksQ0FBRyxFQUV2QixFQUNGIiwKICAiZGVidWdJZCI6ICJGNUY3NEZEN0Q1MkFBQTc2NjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
package/package.json
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@milkio/redis",
|
|
3
|
-
"type": "module",
|
|
4
|
-
"version": "1.0.0-alpha.103",
|
|
5
|
-
"module": "index.ts",
|
|
6
|
-
"devDependencies": {
|
|
7
|
-
"@southern-aurora/tson": "*",
|
|
8
|
-
"@types/bun": "latest",
|
|
9
|
-
"redis": "^4.7.0"
|
|
10
|
-
}
|
|
11
|
-
}
|
|
1
|
+
{"name":"@milkio/redis","version":"1.0.0-alpha.104","type":"module","main":"./index.js","module":"./index.js","types":"./index.d.ts"}
|
package/.publish/publish.json
DELETED
package/README.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# milkio-redis
|
|
2
|
-
|
|
3
|
-
To install dependencies:
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
bun install
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
To run:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
bun run index.ts
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
This project was created using `bun init` in bun v1.1.30. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
|
package/bun.lockb
DELETED
|
Binary file
|
package/index.ts
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import type { RedisClientOptions } from 'redis'
|
|
2
|
-
import { TSON } from '@southern-aurora/tson'
|
|
3
|
-
|
|
4
|
-
export async function createRedis<Options extends RedisClientOptions>(options: Options) {
|
|
5
|
-
const NodeRedis = await import('redis')
|
|
6
|
-
const redis = await NodeRedis.default.createClient(options).connect()
|
|
7
|
-
|
|
8
|
-
const milkioRedis = {
|
|
9
|
-
raw: redis,
|
|
10
|
-
useCache: <T>(key: string, defaultValue: T | undefined = undefined) => ({
|
|
11
|
-
set: async (value: T, expireMs: number): Promise<T> => {
|
|
12
|
-
await redis.PSETEX(key, expireMs, TSON.stringify(value))
|
|
13
|
-
return value
|
|
14
|
-
},
|
|
15
|
-
get: async (): Promise<undefined | T> => {
|
|
16
|
-
const result = await redis.GET(key)
|
|
17
|
-
if (result === null) return defaultValue
|
|
18
|
-
return TSON.parse(result)
|
|
19
|
-
},
|
|
20
|
-
pull: async () => {
|
|
21
|
-
const resultRaw = await redis.MULTI().GET(key).DEL(key).EXEC()
|
|
22
|
-
const result = resultRaw[0]
|
|
23
|
-
if (result === null) return defaultValue
|
|
24
|
-
return TSON.parse(result as string)
|
|
25
|
-
},
|
|
26
|
-
has: async (): Promise<boolean> => {
|
|
27
|
-
const result = await redis.GET(key)
|
|
28
|
-
return result !== null
|
|
29
|
-
},
|
|
30
|
-
del: async () => {
|
|
31
|
-
await redis.DEL(key)
|
|
32
|
-
},
|
|
33
|
-
}),
|
|
34
|
-
useCount: (key: string) => ({
|
|
35
|
-
get: async (): Promise<number> => {
|
|
36
|
-
const result = await redis.GET(key)
|
|
37
|
-
return result ? Number(result) : 0
|
|
38
|
-
},
|
|
39
|
-
add: async (amount: number, expireMs?: number): Promise<number> => {
|
|
40
|
-
if (!expireMs) {
|
|
41
|
-
const result = await redis.INCRBY(key, amount)
|
|
42
|
-
return result
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
const result = await redis.MULTI().INCRBY(key, amount).PEXPIRE(key, expireMs).EXEC()
|
|
46
|
-
return Number(result[0])
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
sub: async (key: string, amount: number): Promise<number> => {
|
|
50
|
-
const result = await redis.DECRBY(key, amount)
|
|
51
|
-
return result
|
|
52
|
-
},
|
|
53
|
-
}),
|
|
54
|
-
useResultCache: async <Handler extends () => unknown | Promise<unknown>>(key: string, expireMs: number, handler: Handler, options?: { realExpireMs?: number, lockInterval?: number }): Promise<Awaited<ReturnType<Handler>>> => {
|
|
55
|
-
const resultRaw = await redis.get(key)
|
|
56
|
-
if (resultRaw) {
|
|
57
|
-
const result: { T: number, R: any } = TSON.parse(resultRaw)
|
|
58
|
-
if (result.T > new Date().getTime()) return result.R
|
|
59
|
-
const lock = await redis.GET(`${key}:lock`)
|
|
60
|
-
if (lock === '1') return result.R
|
|
61
|
-
await redis.PSETEX(`${key}:lock`, options?.lockInterval ?? 6000, '1')
|
|
62
|
-
}
|
|
63
|
-
const result = { R: (await handler()) as Awaited<ReturnType<Handler>>, T: new Date().getTime() + expireMs }
|
|
64
|
-
await redis.PSETEX(key, expireMs + (options?.realExpireMs ?? expireMs + Math.floor(expireMs * Math.random())) + (options?.lockInterval ?? 6000), TSON.stringify(result))
|
|
65
|
-
|
|
66
|
-
return result.R
|
|
67
|
-
},
|
|
68
|
-
useClockIn: (key: string, cleanDate: Date) => ({
|
|
69
|
-
clockIn: async (offset: number): Promise<void> => {
|
|
70
|
-
await redis.MULTI().SETBIT(key, offset, 1).PEXPIREAT(key, cleanDate.getTime()).EXEC()
|
|
71
|
-
},
|
|
72
|
-
check: async (offset: number): Promise<boolean> => {
|
|
73
|
-
const result = await redis.GETBIT(key, offset)
|
|
74
|
-
return result === 1
|
|
75
|
-
},
|
|
76
|
-
firstClockIn: async (): Promise<number> => {
|
|
77
|
-
const result = await redis.BITPOS(key, 1)
|
|
78
|
-
return result
|
|
79
|
-
},
|
|
80
|
-
lastClockIn: async (): Promise<number> => {
|
|
81
|
-
const result = await redis.BITPOS(key, 1, -1)
|
|
82
|
-
return result
|
|
83
|
-
},
|
|
84
|
-
toArray: async (length: number): Promise<boolean[]> => {
|
|
85
|
-
const resultRaw = await redis.BITFIELD(key, [
|
|
86
|
-
{
|
|
87
|
-
operation: 'GET',
|
|
88
|
-
encoding: `u${length}`,
|
|
89
|
-
offset: `#0`,
|
|
90
|
-
},
|
|
91
|
-
])
|
|
92
|
-
const result = Number.parseInt(`${resultRaw}`).toString(2).split('')
|
|
93
|
-
const fill = []
|
|
94
|
-
for (let i = 0; i < length - result.length; i++) fill.push('0')
|
|
95
|
-
return [...fill, ...result].map(v => (v === '1'))
|
|
96
|
-
},
|
|
97
|
-
count: async (): Promise<number> => {
|
|
98
|
-
const result = await redis.BITCOUNT(key)
|
|
99
|
-
return result
|
|
100
|
-
},
|
|
101
|
-
clean: async (): Promise<void> => {
|
|
102
|
-
await redis.DEL(key)
|
|
103
|
-
},
|
|
104
|
-
}),
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return milkioRedis
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export type Redis = Awaited<ReturnType<typeof createRedis>>
|
package/tsconfig.json
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ESNext",
|
|
4
|
-
"jsx": "react-jsx",
|
|
5
|
-
"erasableSyntaxOnly": true,
|
|
6
|
-
"lib": ["ESNext", "DOM"],
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"module": "nodenext",
|
|
9
|
-
"moduleResolution": "nodenext",
|
|
10
|
-
"allowImportingTsExtensions": true,
|
|
11
|
-
"allowJs": true,
|
|
12
|
-
"strict": true,
|
|
13
|
-
"noFallthroughCasesInSwitch": true,
|
|
14
|
-
"noPropertyAccessFromIndexSignature": false,
|
|
15
|
-
"noUnusedLocals": false,
|
|
16
|
-
"noUnusedParameters": false,
|
|
17
|
-
"noEmit": true,
|
|
18
|
-
"verbatimModuleSyntax": true,
|
|
19
|
-
"skipLibCheck": true
|
|
20
|
-
}
|
|
21
|
-
}
|