UNPKG

laravel-mix-glob

Version:

Laravel mix extension that add support for globs usage with an extensive concise api. For a more natural boosted productivity and dynamic. Configure once and forget about adding the files each time.

3 lines (2 loc) 3.04 kB
"use strict";var s=require("lodash.uniq"),e=require("uuid"),i=require("../../Utils/Logger/index.js"),h=require("flat-cache"),t=require("../../Utils/helpers/index.js"),a=require("./MetaCache.js");exports.Cache=class{flatCache;metaCache;sessionId;_values={childPids:[]};constructor(s){this.metaCache=s?.metaCache||new a.MetaCache,s?.cache?this.flatCache=s.cache:(this.sessionId=this._getSessionCacheId(),this.syncWithCache())}get values(){return this._values}_getSessionCacheId(){if(i.LOGGER.debug("Get Session Cache Id >"),t.isChildProcess())return i.LOGGER.debug(`Already exist (child) > ${process.env.GLOB_MIX_SESSION_ID}`),process.env.GLOB_MIX_SESSION_ID;const s=`laravel-mix-glob:session-${e.v4()}`;return i.LOGGER.debug(`Master > Generate new one > ${s}`),this.metaCache.addSessions([{id:s,masterProcessId:process.pid}]),this.metaCache.save(),s}syncWithCache(){return this.flatCache=h.load(this.sessionId),this._values=this.flatCache.all(),this._values.childPids||(this._values.childPids=[]),this._values.childPids=this._values.childPids.map((s=>Number(s))),i.LOGGER.debug("Cache: sync (file read):"),i.LOGGER.debug(this._values),this}destroy(){this.flatCache.destroy()}save(){return i.LOGGER.debug("Cache: save()"),this.flatCache.save(),this}addChildPids(e){i.LOGGER.debug(`Cache: add child pids ${JSON.stringify(e)}`);const h=JSON.stringify(this._values.childPids);return this._values.childPids=s([...this._values.childPids,...e]),i.LOGGER.debug(`${h} => ${JSON.stringify(this._values.childPids)}`),this.flatCache.setKey("childPids",this._values.childPids),this}removeChildPids(s){i.LOGGER.debug(`Cache: removing child pids ${JSON.stringify(s)}`);const e=JSON.stringify(this._values.childPids);return this._values.childPids=this._values.childPids.filter((e=>!s.includes(e))),i.LOGGER.debug(`${e} => ${JSON.stringify(this._values.childPids)}`),this.flatCache.setKey("childPids",this._values.childPids),this}resetChildPids(){return this._values.childPids.length>0&&(this._values.childPids=[],this.flatCache.setKey("childPids",this._values.childPids)),this}set(s,e){return this._values[s]!==e&&(this._values[s]=e,this.flatCache.setKey(s,e)),this}cleanOrphans(){return i.LOGGER.debug("cleanOrphans >"),i.LOGGER.debug("Sessions:",this.metaCache.values.sessions),this.metaCache.values.sessions.length>0&&this.metaCache.values.sessions.forEach((s=>{i.LOGGER.debug(`session-${s.id} > schedule macro task`),t.runMacroTask((()=>{if(i.LOGGER.debug(`session-${s.id} > check if master process is running`),!t.isProcessRunning(s.masterProcessId)){i.LOGGER.debug(`session-${s.id} > process not running > clean orphans`),i.LOGGER.debug(`session-${s.id} > load cache`);const e=h.load(s.id),a=e.getKey("childPids")||[];i.LOGGER.debug(`session-${s.id} > childPids`,a),a.length>0&&a.forEach((s=>{t.killProcess(s)})),i.LOGGER.debug(`session-${s.id} > destroy cache document`),e.destroy(),i.LOGGER.debug(`session-${s.id} > remove session from meta cache`),this.metaCache.removeSessionsByIds([s.id]).save()}}))})),this}}; //# sourceMappingURL=index.js.map