/**
 * Minified by jsDelivr using Terser v5.37.0.
 * Original file: /npm/@chengaoyuan/cache@2.0.3/dist/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const argnames_1=require("@chengaoyuan/argnames");class Cache{constructor(n){this.protocol=n}Cacheable(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(",");o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    var $key$ = ${n.key?n.key:""};\n                    return new Promise(function(resolve, reject){\n                        var $protocol$ = $info$.protocol;\n                        $protocol$.get($cache$, $key$, function($cacheValue$) {\n                            if ($cacheValue$ !== undefined) {\n                                resolve($cacheValue$);\n                            } else {\n                                $function$.call($self$${c?", "+c:""})\n                                        .then(function($retValue$){\n                                            if ($retValue$ !== undefined) {\n                                                if(${!n.condition||n.condition}) {\n                                                    $protocol$.set($cache$, $key$, ${n.expire}, $retValue$);\n                                                }\n                                            }\n                                            resolve($retValue$);\n                                        }, reject);\n                            }\n                        });\n                    })\n                }\n            `)(o.value,this,n.cache)}}CachePut(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(",");o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    var $key$ = ${n.key?n.key:""};\n                    return new Promise(function(resolve, reject){\n                        var $protocol$ = $info$.protocol;\n                        $function$.call($self$${c?", "+c:""})\n                                .then(function($retValue$){\n                                    if ($retValue$ !== undefined) {\n                                        if(${!n.condition||n.condition}) {\n                                            $protocol$.set($cache$, $key$, ${n.expire}, $retValue$);\n                                        }\n                                    }\n                                    resolve($retValue$);\n                                }, reject);\n                    })\n                }\n            `)(o.value,this,n.cache)}}CacheEvict(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(",");o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    var $key$ = ${n.key?n.key:""};\n                    return new Promise(function(resolve, reject){\n                        var $protocol$ = $info$.protocol;\n                        $function$.call($self$${c?", "+c:""})\n                                .then(function($retValue$){\n                                    resolve($retValue$);\n                                    if(${!n.condition||n.condition}) {\n                                        $protocol$.del($cache$, $key$);\n                                    }\n                                }, reject);\n                    })\n                }\n            `)(o.value,this,n.cache)}}CacheEvictMulti(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(",");o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    return new Promise(function(resolve, reject){\n                        var $protocol$ = $info$.protocol;\n                        $function$.call($self$${c?", "+c:""})\n                                .then(function($retValue$){\n                                    resolve($retValue$);\n                                    for(var ${n.foreach}) {\n                                        if(${!n.condition||n.condition}) {\n                                            var $key$ = ${n.key?n.key:""};\n                                            $protocol$.del($cache$, $key$);\n                                        }\n                                    }\n                                }, reject);\n                    })\n                }\n            `)(o.value,this,n.cache)}}CacheEvictAll(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(",");o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    return new Promise(function(resolve, reject){\n                        var $protocol$ = $info$.protocol;\n                        $function$.call($self$${c?", "+c:""})\n                                .then(function($retValue$){\n                                    resolve($retValue$);\n                                    if(${!n.condition||n.condition}) {\n                                        $protocol$.clear($cache$);\n                                    }\n                                }, reject);\n                    })\n                }\n            `)(o.value,this,n.cache)}}CacheableLock(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(","),t=n.lockTime?n.lockTime:3;o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    var $key$ = ${n.key?n.key:""};\n                    return new Promise(function(resolve, reject) {\n                        var $protocol$ = $info$.protocol;\n                        var $locker$ = $protocol$.create_locker($cache$, $key$);\n                        $locker$.lock(${t}, function($getLockResult$) {\n                            if($getLockResult$) {\n                                $protocol$.get($cache$, $key$, function($cacheValue$) {\n                                    if ($cacheValue$ !== undefined) {\n                                        $locker$.unlock();\n                                        resolve($cacheValue$);\n                                    } else {\n                                        if(!(${!n.condition||n.condition})) {\n                                            $locker$.unlock();\n                                        }\n                                        $function$.call($self$${c?", "+c:""})\n                                                .then(function($retValue$){\n                                                    if ($retValue$ !== undefined) {\n                                                        if(${!n.condition||n.condition}) {\n                                                            $protocol$.set($cache$, $key$, ${n.expire}, $retValue$);\n                                                        }\n                                                    }\n                                                    $locker$.unlock();\n                                                    resolve($retValue$);\n                                                }, function($callerr$){\n                                                    $locker$.unlock();\n                                                    reject($callerr$);\n                                                });\n                                    }\n                                });\n                            } else {\n                                $function$.call($self$${c?", "+c:""})\n                                    .then(resolve, reject);\n                            }\n                            \n                        });\n                    });\n                };\n            `)(o.value,this,n.cache)}}CacheEvictLock(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(","),t=n.lockTime?n.lockTime:3;o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    var $key$ = ${n.key?n.key:""};\n                    return new Promise(function(resolve, reject){\n                        var $protocol$ = $info$.protocol;\n                        $function$.call($self$${c?", "+c:""})\n                                .then(function($retValue$){\n                                    resolve($retValue$);\n                                    if(${!n.condition||n.condition}) {\n                                        var $locker$ = $protocol$.create_locker($cache$, $key$);\n                                        $locker$.lock(${t}, function($delLockResult$) {\n                                            if($delLockResult$) {\n                                                $protocol$.del($cache$, $key$);\n                                                $locker$.unlock();\n                                            }\n                                        });\n                                    }\n                                }, reject);\n                    })\n                }\n            `)(o.value,this,n.cache)}}CacheEvictMultiLock(n){return(e,$,o)=>{const c=argnames_1.default(o.value).join(","),t=n.lockTime?n.lockTime:3;o.value=new Function("$function$","$info$","$cache$",`\n                return function(${c}) {\n                    var $self$ = this;\n                    return new Promise(function(resolve, reject){\n                        var $protocol$ = $info$.protocol;\n                        $function$.call($self$${c?", "+c:""})\n                                .then(function($retValue$){\n                                    resolve($retValue$);\n                                    var $record$ = {};\n                                    var $delfunc$ = function($key$) {\n                                        if($record$[$key$]) {\n                                            return;\n                                        }\n                                        $record$[$key$] = true;\n                                        var $locker$ = $protocol$.create_locker($cache$, $key$);\n                                        $locker$.lock(${t}, function($delLockResult$) {\n                                            if($delLockResult$) {\n                                                $protocol$.del($cache$, $key$);\n                                                $locker$.unlock();\n                                            }\n                                        });\n                                    };\n                                    \n                                    for(var ${n.foreach}) {\n                                        if(${!n.condition||n.condition}) {\n                                            $delfunc$(${n.key?n.key:""})\n                                        }\n                                    }\n                                }, reject);\n                    })\n                }\n            `)(o.value,this,n.cache)}}}exports.Cache=Cache;
//# sourceMappingURL=/sm/b8b72e5415f8808411185393a2c0a5f838616e0880aa6de14e2fe00681fba21b.map