/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/fs-toolbox@3.1.11/src/fs-toolbox.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";import fs from"fs";import askForPromise from"ask-for-promise";const error_msg={"wrong argument numbers":"Error: Wrong numbers or type of arguments. Please, check the documentation.","wrong by":'Error: Option "by" is not defined or not correct. Please, check the documentation.',"no selection":"Error: No selection specified. Provide reduce criteria.","wrong deep level":"Error: Deep level is an array and size is different from folder array.","cache.files empty":'Error: File cache is empty. Please, fulfil files cache by using "set" or "scan" methods.',"cache.write empty":"Error: Cache.write is empty.","not empty":"Error: Folder is not empty: "};let cache={},writeLocation=[],writeCounter=0,del={prefix:"-",suffix:"-"};cache.folders=[],cache.files=[],cache.read=[],cache.write=[];var toolbox={model:function(){return{error:!1,errorList:[],list:[],set:{}}},scanner:function(){return{error:!1,errorList:[],list:[],set:{},scannedFolders:[],foldersDeep:[],deep:1e4,ignore_subfolders:[]}},scanFiles:function(){let e=toolbox.scanner();e.afterWalk=toolbox._triggerCallbacks,e.set=toolbox._argSetup.apply(this,arguments),toolbox._scanSetup.call(e),e.error?toolbox._walkFiles.call(e,[],[]):toolbox._walkFiles.call(e,e.set.list,e.foldersDeep)},scanFolders:function(){let e=toolbox.scanner();e.afterWalk=toolbox._triggerCallbacks,e.set=toolbox._argSetup.apply(this,arguments),toolbox._scanSetup.call(e),e.error?toolbox._walkFolders.call(e,[],[]):toolbox._walkFolders.call(e,e.set.list,e.foldersDeep)},get:function(e){var o;switch(e){case"file":case"files":o=JSON.stringify(cache.files);break;case"folder":case"folders":o=JSON.stringify(cache.folders);break;case"read":o=JSON.stringify(cache.read);break;case"write":o=JSON.stringify(cache.write);break;case"del":case"delimiters":o=JSON.stringify(del);break;default:return!1}return JSON.parse(o)},set:function(e,o){var t,r,l=!1;if(arguments.length<2)return!1;if(null==o)return!1;switch(o instanceof Array&&(r="array"),"string"==typeof o&&(r="string"),r){case"array":(o=JSON.parse(JSON.stringify(o))).every((e=>"string"==typeof e))||(l=!0);break;case"string":o=[o];break;default:o.prefix||(l=!0),o.suffix||(l=!0),o=JSON.parse(JSON.stringify(o))}if(l)return!1;switch(t=o,e){case"file":case"files":return cache.files=t,!0;case"folder":case"folders":return cache.folders=t,!0;case"del":case"delimiters":return del=t,!0;default:return!1}},resetCache:function(e){e?cache[e]=[]:(cache.files=[],cache.folders=[],cache.read=[],cache.write=[],writeCounter=0),"write"==e&&(writeCounter=0)},specifyCache:function(e){cache[e]=cache.files,cache.files=[],"write"==e&&(writeLocation=toolbox.get("write"),writeCounter=writeLocation.length)},_argSetup:function(){var e,o,t,r=arguments,l=Array.prototype;return e=l.pop.call(r),o=r.length>0?l.shift.call(r):[],t=r.length>0?l.pop.call(r):{},Buffer.isBuffer(o)&&(o=[o]),"string"==typeof o&&(o=[o]),"function"==typeof e&&(e=[e]),{list:o,options:t,callbackList:e}},_scanSetup:function(){var e=this.set;this.ignore_subfolders=!!e.options.hasOwnProperty("ignore")&&e.options.ignore,this.deep=e.options.hasOwnProperty("deep")?e.options.deep:this.deep,this.foldersDeep=this.deep instanceof Array?e.list.map(((e,o)=>e.split("/").length+this.deep[o])):e.list.map((e=>e.split("/").length+this.deep)),this.foldersDeep.every((e=>0==isNaN(e)))||(this.error=!0,this.errorList.push(error_msg["wrong deep level"]))},_triggerCallbacks:function(e){var o=this.error;o&&(o=this.errorList),this.set.callbackList.forEach((t=>t(o,cache[e])))},_walkFiles:function(e,o){var t,r,l,s=this;if(import("path").then((e=>l=e)),0==e.length)return toolbox.set("files",s.list),s.afterWalk("files");if(t=e.shift(),r=o.shift(),!s.scannedFolders.every((e=>e!=t)))return toolbox._walkFiles.call(s,e,o);s.scannedFolders.push(t),fs.readdir(t,((i,a)=>{i&&(s.error=!0,s.errorList.push("No such folder as ["+t+"]")),s.error||a.reduce(((i,a)=>{let n=t+l.sep+a;if(fs.lstatSync(n).isDirectory()){let t=!0;if(n.split("/").length-1>=r&&(t=!1),t&&s.ignore_subfolders){s.ignore_subfolders.every((e=>e!=a))||(t=!1)}if(t){s.scannedFolders.every((e=>e!=n))&&(e.push(n),o.push(r))}}else{"."!=a.slice(0,1)&&(i.push(n),s.list.push(n))}return i}),[]),toolbox._walkFiles.call(s,e,o)}))},_walkFolders:function(e,o){var t,r,l,s=this;if(import("path").then((e=>l=e)),0==e.length)return toolbox.set("folders",s.list),void s.afterWalk("folders");t=e.shift(),r=o.shift(),s.scannedFolders.every((e=>e!=t))?(s.scannedFolders.push(t),fs.readdir(t,((i,a)=>{i&&(s.error=!0,s.errorList.push("No such folder as ["+t+"]")),s.error||a.reduce(((i,a)=>{let n=t+l.sep+a;if(fs.lstatSync(n).isDirectory()){let t=!0;if(s.ignore_subfolders){s.ignore_subfolders.every((e=>e!=a))||(t=!1)}if(t){i.push(n),s.list.push(n),n.split("/").length-1>=r&&(t=!1)}if(t){s.scannedFolders.every((e=>e!=n))&&(e.push(n),o.push(r))}}return i}),[]),toolbox._walkFolders.call(s,e,o)}))):toolbox._walkFolders.call(s,e,o)},encode:function(e){return"object"==typeof e?Buffer.from(JSON.stringify(e,null,4),"utf8"):Buffer.from(e,"utf8")},decode:function(e){return Buffer.from(e,"binary").toString("utf8")},readFile:function(e){var o,t=toolbox.model();if(0==(o=this.get("read")).length&&(o=this.get("files")),0==o.length)return t.error=!0,t.errorList.push(error_msg["cache.files empty"]),!1;if(!e){let e=[];return e.length=o.length,o.forEach(((o,t)=>{try{e[t]=fs.readFileSync(o,encode)}catch(o){e[t]=!1}})),e}o.forEach(((o,t)=>{fs.readFile(o,((o,r)=>{e(!o&&r,t)}))}))},writeFile:function(){var e=toolbox.model(),o=null,t=toolbox._triggerCallbacks;if(e.set=toolbox._argSetup.apply(this,arguments),e.set.options.hasOwnProperty("number")&&(o=e.set.options.number),0==writeLocation.length)return e.error=!0,e.errorList.push(error_msg["cache.write is empty"]),t.call(e,"write");if(null!=o){if(void 0===writeLocation[o])return e.error=!0,e.errorList.push(error_msg["cache.write is empty"]),l();{let t=writeLocation[o].split("/");t.pop(),r(t,o,e.set.list[0]||"")}}else writeLocation.forEach(((o,t)=>{if(!1===o)return writeCounter--,void(0==writeCounter&&l());{let l=o.split("/");l.pop(),r(l,t,e.set.list[t]||"")}}));function r(e,o,t){toolbox.mkdir(e.join("/"),((e,r)=>{Buffer.isBuffer(t)||(t=Buffer.from(t,"binary")),fs.writeFile(writeLocation[o],t,((e,o)=>{writeCounter--,0==writeCounter&&l()}))}))}function l(){t.call(e,"write"),writeLocation=[],toolbox.resetCache("write")}},mkdir:function(){var e=toolbox.model();e.set=toolbox._argSetup.apply(this,arguments),e.afterMake=toolbox._triggerCallbacks,e.list=toolbox._arrangeAllPaths(e.set.list),toolbox._mk.call(e,e.list)},_mk:function(e){var o;0!=e.length?(o=e.shift(),fs.stat(o,((t,r)=>{r?toolbox._mk.call(this,e):fs.mkdir(o,(()=>toolbox._mk.call(this,e)))}))):this.set.callbackList.forEach((e=>e(!1,!0)))},_arrangeAllPaths:function(e){var o=[];return e.forEach((e=>{let t=e.split("/").reduce(((e,o,t)=>{var r;return r=t>0?e[t-1]+"/"+o:o,e.push(r),e}),[]);o=o.concat(t)})),o.reduce(((e,o)=>(e.every((e=>e!=o))&&e.push(o),e)),[])},keep:function(){var e,o,t=toolbox.model(),r=!1,l=toolbox._triggerCallbacks;switch(t.set=toolbox._argSetup.apply(this,arguments),e=t.set.options.by,o=t.set.list,3!=arguments.length&&(t.error=!0,t.errorList.push(error_msg["wrong argument numbers"])),0==o.length&&(t.error=!0,t.errorList.push(error_msg["no selection"])),e){case"ext":case"extension":r="ext";break;case"key":case"keys":case"prefix":r="prefix";break;case"filename":r="filename";break;case"name":r="name";break;case"suffix":r="suffix";break;case"path":r="path"}r||(t.errorList.push(error_msg["wrong by"]),t.error=!0),t.error||(t.list=cache.files.reduce(((e,t)=>{let l=toolbox._find[r](t);return o.every((e=>l!=e))||e.push(t),e}),[]),toolbox.set("files",t.list)),l.call(t,"files")},_find:{ext:e=>e.split("/").pop().split(".").pop(),prefix:e=>e.split("/").pop().split(".").shift().split(del.prefix).shift(),suffix:e=>e.split("/").pop().split(".").shift().split(del.suffix).pop(),name:e=>e.split("/").pop().split(".").shift(),filename:e=>e.split("/").pop(),path:e=>e},keepFolders:function(){var e,o,t=cache.folders,r=toolbox.model(),l=toolbox._triggerCallbacks;r.set=toolbox._argSetup.apply(this,arguments),o=r.set.options,e=o.hasOwnProperty("deep")?o.deep:9999,r.list=t.reduce(((o,t)=>{let l=t.split("/"),s=l.length;return l.forEach(((l,i)=>{let a=!1;if(!r.set.list.every((e=>e!=l))){i+1+e>=s&&(a=!0)}a&&o.push(t)})),o}),[]),toolbox.set("folders",r.list),l.call(r,"folders")},keepFoldersInSteps:function(){var e,o=toolbox.model(),t=toolbox._triggerCallbacks,r=!1;if(o.set=toolbox._argSetup.apply(this,arguments),(e=o.set.options).hasOwnProperty("deep")){(r="number"==typeof e.deep?o.set.list.map((()=>e.deep)):o.set.list.map(((o,t)=>e.deep[t]))).every((e=>null!=e))||(o.error=!0,o.errorList.push(error_msg["wrong deep level"]))}o.error||(r?o.set.list.forEach(((e,o)=>toolbox.keepFolders([e],{deep:r[o]},(()=>{})))):o.set.list.forEach((e=>toolbox.keepFolders([e],(()=>{}))))),t.call(o,"folders")},removeFiles:function(){var e,o,t=toolbox.model(),r=toolbox._triggerCallbacks;if(t.set=toolbox._argSetup.apply(this,arguments),e=t.set.options.by||!1,0==Object.getOwnPropertyNames(t.set.options).length&&t.errorList.push(error_msg["wrong argument numbers"]),e||t.errorList.push(error_msg["wrong by"]),t.errorList.length>0)return t.error=!0,r.call(t,"files");o=t.set.list,t.list=toolbox.get("files"),o.forEach((o=>{t.list=t.list.filter((t=>toolbox._find[e](t)!=o))})),toolbox.set("files",t.list),r.call(t,"files")},removeFolders:function(){var e=cache.folders,o=toolbox.model(),t=toolbox._triggerCallbacks;o.set=toolbox._argSetup.apply(this,arguments),o.list=e.reduce(((e,t)=>{let r=t.split("/"),l=!0,s=!1;return r.forEach(((e,t)=>{if(s)return;o.set.list.every((o=>o!=e))||(l=!1,s=!0)})),l&&e.push(t),e}),[]),toolbox.set("folders",o.list),t.call(o,"folders")},deleteFiles:function(){var e,o=toolbox.model(),t=toolbox._triggerCallbacks;o.set=toolbox._argSetup.apply(this,arguments),0==(e=toolbox.get("read")).length&&(e=toolbox.get("files"));let r=askForPromise();toolbox._deleteFiles.call(o,r.done,e),r.promise.then((()=>{toolbox.set("files",[]),t.call(o,"files")}))},deleteFolders:function(){var e,o=toolbox.model(),t=toolbox._triggerCallbacks;o.set=toolbox._argSetup.apply(this,arguments),e=toolbox.get("folders");let r=askForPromise();toolbox._deleteFolders.call(o,r.done,e),r.promise.then((()=>{toolbox.set("folders",o.list),t.call(o,"folders")}))},empty:function(){var e,o=toolbox.model(),t=toolbox._triggerCallbacks,r=toolbox._copy;o.set=toolbox._argSetup.apply(this,arguments),e=r(o.set.list);let l=askForPromise();toolbox._empty.call(o,l.done,e),l.promise.then((()=>{toolbox.set("files",[]),t.call(o,"files")}))},emptyFolders:function(){var e=toolbox.model(),o=toolbox._triggerCallbacks,t=toolbox._copy;e.set=toolbox._argSetup.apply(this,arguments);let r=toolbox._sort(t(e.set.list)),l=askForPromise(),s=askForPromise();toolbox._empty.call(e,l.done,t(r)),l.promise.then((()=>(toolbox._emptyFolders.call(e,s.done,r),s.promise))).then((()=>{toolbox.resetCache.call(e),o.call(e,"folders")}))},_empty:function(e,o){var t,r=this;if(0==o.length)return e();t=o.shift(),toolbox.scanFiles(t,((l,s)=>{if(0==s.length)return toolbox._empty.call(r,e,[]);let i=askForPromise();toolbox._deleteFiles.call(r,i.done,s),i.promise.then((()=>{r.list.push(t),toolbox._empty.call(r,e,o)}))}))},_emptyFolders:function(e,o){var t,r=this;if(0==o.length)return e();t=o.shift(),toolbox.scanFolders(t,((l,s)=>{if(0==s.length)return toolbox._emptyFolders.call(r,e,[]);let i=askForPromise();toolbox._deleteFolders.call(r,i.done,s),i.promise.then((()=>{r.list.push(t),toolbox._emptyFolders.call(r,e,o)}))}))},_deleteFiles:function(e,o){var t,r=this;if(0==o.length)return e();t=o.pop(),fs.unlink(t,(()=>toolbox._deleteFiles.call(r,e,o)))},_deleteFolders:function(e,o){var t,r=this;if(0==o.length)return e();t=o.pop(),fs.rmdir(t,((l,s)=>{l&&(r.error=!0,r.errorList.push(error_msg["not empty"]+t),r.list.push(t)),toolbox._deleteFolders.call(r,e,o)}))},_sort:function(e){var o=0,t=1e3,r=[];if(e.length<=1)return e;let l=e.map((e=>e.split("/").length));l.forEach((e=>{e<t&&(t=e),e>o&&(o=e)}));let s=l.map((e=>e-t));o=o-t+1;let i=new Array(o),a=o;for(;a--;)i[a]=a;return i.forEach((o=>{s.forEach(((t,l)=>{t==o&&r.push(e[l])}))})),r},_copy:function(e){return JSON.parse(JSON.stringify(e))}},api={set:toolbox.set,get:toolbox.get,fileCacheAs:toolbox.specifyCache,resetCache:toolbox.resetCache,clearCache:toolbox.resetCache,scan:toolbox.scanFiles,scanFolder:toolbox.scanFolders,scanFolders:toolbox.scanFolders,keep:toolbox.keep,keepFolder:toolbox.keepFolders,keepFolders:toolbox.keepFolders,keepFolderSteps:toolbox.keepFoldersInSteps,keepFoldersSteps:toolbox.keepFoldersInSteps,remove:toolbox.removeFiles,removeFolder:toolbox.removeFolders,removeFolders:toolbox.removeFolders,delete:toolbox.deleteFiles,deleteFolder:toolbox.deleteFolders,deleteFolders:toolbox.deleteFolders,empty:toolbox.empty,emptyFolder:toolbox.emptyFolders,emptyFolders:toolbox.emptyFolders,read:toolbox.readFile,write:toolbox.writeFile,makeFolder:toolbox.mkdir,decode:toolbox.decode,encode:toolbox.encode,sequence:["Compose sequence of library operations"],modifyPath:["Modify cache files paths. With replace?"],modifyPathFolders:["Modify cache folder paths"]};export default api;
//# sourceMappingURL=/sm/1a31729a6a457430c9174cef47bf595bdf08b05a4b111c031995f37daf9eaaba.map