/**
 * Minified by jsDelivr using Terser v5.37.0.
 * Original file: /npm/broccoli-funnel@3.0.8/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const path=require("path").posix,Minimatch=require("minimatch").Minimatch,arrayEqual=require("array-equal"),Plugin=require("broccoli-plugin"),debug=require("debug"),FSTree=require("fs-tree-diff"),heimdall=require("heimdalljs"),fs=require("fs");function ApplyPatchesSchema(){this.mkdir=0,this.rmdir=0,this.unlink=0,this.change=0,this.create=0,this.other=0,this.processed=0,this.linked=0}function isNotAPattern(t){let i=new Minimatch(t).set;if(i.length>1)return!1;for(let t=0;t<i[0].length;t++)if("string"!=typeof i[0][t])return!1;return!0}function existsSync(t){let i={};try{fs.accessSync(t),fs.statSync(t)}catch(t){i=t}return!i.errno||0===i.errno}class Funnel extends Plugin{constructor(t,i={}){super(Array.isArray(t)?t:[t],{annotation:i.annotation,persistentOutput:!0,needsCache:!1}),this._includeFileCache=Object.create(null),this._destinationPathCache=Object.create(null),this._currentTree=new FSTree,this._isRebuild=!1;let e=Object.keys(i||{});for(let t=0,s=e.length;t<s;t++){let s=e[t];this[s]=i[s]}if(this.destDir=this.destDir||"./",this.count=0,this.files&&"function"==typeof this.files)this._dynamicFilesFunc=this.files,delete this.files;else if(this.files&&!Array.isArray(this.files))throw new Error("Invalid files option, it must be an array or function (that returns an array).");if((this.files||this._dynamicFilesFunc)&&(this.include||this.exclude))throw new Error("Cannot pass files option (array or function) and a include/exlude filter. You can have one or the other");this.files&&this.files.filter(isNotAPattern).length!==this.files.length&&(console.warn("broccoli-funnel does not support `files:` option with globs, please use `include:` instead"),this.include=this.files,this.files=void 0),this._setupFilter("include"),this._setupFilter("exclude"),this._matchedWalk=this.canMatchWalk(),this._buildStart=void 0}canMatchWalk(){let t=this.include,i=this.exclude;if(!t&&!i)return!1;let e=!0;t&&(e=t.filter(isMinimatch).length===t.length);let s=!0;return i&&(s=i.filter(isMinimatch).length===i.length),e&&s}_debugName(){return this.description||this._annotation||this.name||this.constructor.name}_debug(){debug(`broccoli-funnel:${this._debugName()}`).apply(null,arguments)}_setupFilter(t){if(!this[t])return;if(!Array.isArray(this[t]))throw new Error(`Invalid ${t} option, it must be an array. You specified \`${typeof this[t]}\`.`);let i=this[t]=this[t].slice(0);for(let t=0,e=i.length;t<e;t++)i[t]=this._processPattern(i[t])}_processPattern(t){if(t instanceof RegExp)return t;let i=typeof t;if("string"===i)return new Minimatch(t);if("function"===i)return t;throw new Error(`include/exclude patterns can be a RegExp, glob string, or function. You supplied \`${typeof t}\`.`)}shouldLinkRoots(){return!(this.files||this.include||this.exclude||this.getDestinationPath)}build(){this._buildStart=new Date,this.destPath=path.join(this.outputPath,this.destDir),"/"===this.destPath[this.destPath.length-1]&&(this.destPath=this.destPath.slice(0,-1));let t=this.inputPaths[0];this.srcDir&&(this.srcDir=ensureRelative(this.srcDir),t=path.join(t,this.srcDir)),this._dynamicFilesFunc&&(this.lastFiles=this.files,this.files=this._dynamicFilesFunc()||[],void 0===this.lastFiles||arrayEqual(this.lastFiles,this.files)||(this._includeFileCache=Object.create(null)));let i=this.input.at(0).fs.existsSync(this.srcDir||"./"),e=!1;if(this.shouldLinkRoots()){e=!0;let s=this.output.existsSync("./");if("win32"===process.platform&&(s=existsSync(this.outputPath)),this._isRebuild=this._isRebuild&&s,this._isRebuild)i||(!i&&this.allowEmpty?(this.output.rmdirSync("./",{recursive:!0}),this.output.mkdirSync(this.destDir,{recursive:!0})):this.output.rmdirSync("./",{recursive:!0}));else if(i)this.output.rmdirSync("./",{recursive:!0}),this._copy(t,this.destPath,"./");else{if(i||!this.allowEmpty)throw new Error(`You specified a \`"srcDir": ${this.srcDir}\` which does not exist and did not specify \`"allowEmpty": true\`.`);this.output.mkdirSync(this.destDir,{recursive:!0})}this._isRebuild=!0}else if(i)this.processFilters(t);else{if(!this.allowEmpty)throw new Error(`You specified a \`"srcDir": ${this.srcDir}\` which does not exist and did not specify \`"allowEmpty": true\`.`);this.output.mkdirSync(this.destDir,{recursive:!0})}this._debug("build, %o",{in:new Date-this._buildStart+"ms",linkedRoots:e,inputPath:t,destPath:this.destPath})}_processEntries(t){return t.filter((function(t){return this.includeFile(t.relativePath)}),this).map((function(t){let i=t.relativePath;return t.relativePath=this.lookupDestinationPath(i),this.outputToInputMappings[t.relativePath]=i,t}),this)}_processPaths(t){return t.slice(0).filter(this.includeFile,this).map((function(t){let i=this.lookupDestinationPath(t);return this.outputToInputMappings[i]=t,i}),this)}processFilters(t){let i,e,s=heimdall.start("derivePatches");this.outputToInputMappings={},!this.files||this.exclude||this.include?(e=this._matchedWalk?this.input.at(0).entries(this.srcDir||"./",{globs:this.include,ignore:this.exclude}):this.input.at(0).entries(this.srcDir||"./"),e=this._processEntries(e),i=FSTree.fromEntries(e,{sortAndExpand:!0})):(e=this._processPaths(this.files),i=FSTree.fromPaths(e,{sortAndExpand:!0}));let r=this._currentTree.calculatePatch(i);this._currentTree=i,s.stats.patches=r.length,s.stats.entries=e.length;let n=this.outputPath;s.stop(),s=heimdall.start("applyPatch",ApplyPatchesSchema),r.forEach((function(i){this._applyPatch(i,t,n,s.stats)}),this),s.stop()}_applyPatch(t,i,e,s){let r=this.outputToInputMappings,n=t[0],h=t[1];if(!h)return;let a=`${e}/${h}`;switch(this._debug("%s %s",n,a),n){case"unlink":s.unlink++,this.output.unlinkSync(h);break;case"rmdir":s.rmdir++,this.output.rmdirSync(h);break;case"mkdir":s.mkdir++,this.output.mkdirSync(h);break;case"change":s.change++;case"create":{"create"===n&&s.create++;let t=r[h];void 0===t&&(t=r[`/${h}`]),this.processFile(`${i}/${t}`,a,t);break}default:throw new Error(`Unknown operation: ${n}`)}}lookupDestinationPath(t){return void 0!==this._destinationPathCache[t]?this._destinationPathCache[t]:this.getDestinationPath?this._destinationPathCache[t]=ensureRelative(path.join(this.destDir,this.getDestinationPath(t))):this._destinationPathCache[t]=ensureRelative(path.join(this.destDir,t))}includeFile(t){let i,e,s,r=this._includeFileCache;if(void 0!==r[t])return r[t];if("/"===t[t.length-1])return r[t]=!1;if(this.files)return r[t]=this.files.indexOf(t)>-1;if(this._matchedWalk)return!0;if(this.exclude)for(i=0,e=this.exclude.length;i<e;i++)if(s=this.exclude[i],this._matchesPattern(s,t))return r[t]=!1;if(this.include&&this.include.length>0){for(i=0,e=this.include.length;i<e;i++)if(s=this.include[i],this._matchesPattern(s,t))return r[t]=!0;return r[t]=!1}return r[t]=!0}_matchesPattern(t,i){if(t instanceof RegExp)return t.test(i);if(t instanceof Minimatch)return t.match(i);if("function"==typeof t)return t(i);throw new Error(`Pattern \`${t}\` was not a RegExp, Glob, or Function.`)}processFile(t,i,e){this._copy(t,i,e)}_copy(t,i,e){e=this.lookupDestinationPath(e);let s=path.dirname(e);try{this.output.symlinkOrCopySync(t,e)}catch(i){this.output.mkdirSync(s,{recursive:!0});try{this.output.unlinkSync(e)}catch(t){}this.output.symlinkOrCopySync(t,e)}}}function isMinimatch(t){return t instanceof Minimatch}function ensureRelative(t){return"/"===t.charAt(0)?t.substring(1):t}module.exports=function(...t){return new Funnel(...t)},module.exports.Funnel=Funnel;
//# sourceMappingURL=/sm/c571438afe12d214e76b079493ec6f7fce1caa45fb1c2b9b8945d20cc10e6c2d.map