/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/webpack-cdn-replace-plugin@0.1.3/lib/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.UploadPlugin=void 0;const path_1=require("path"),utils_1=require("./utils"),ora_1=__importDefault(require("ora"));class UploadPlugin{cache;options;constructor(e={}){this.options={cache:!0,uploadFn:(e,t)=>t,...e,types:{img:[".png",".jpg",".jpeg",".svg"],font:[".ttf",".otf",".woff",".woff2",".eot"],css:[".css"],js:[".js"],html:[".html"],...e.types}},this.cache=this.options.cache?new utils_1.Cache:{cacheCDN:{},cacheFile:{}}}apply(e){e.hooks.done.tapAsync("UploadPlugin",(async(t,a)=>{a();const{assetsInfo:s}=t.compilation,{types:c,cache:o}=this.options,i=[],n=[],l=[],h=[],p=[],u={},r={},d={},f={},{output:_}=e.options,{path:m,publicPath:g}=_;if("/"!==g)return void(0,utils_1.log)("error",`publicPath must be /, now is ${g}`);const{img:j,font:C,css:P,js:w,html:x}=c;for(const e of s){const[t]=e,a=(0,path_1.extname)(t),s=(0,path_1.join)(m,t);j.includes(a)?(i.push(s),u[t]=s):C.includes(a)?(n.push(s),r[t]=s):P.includes(a)?(l.push(s),d[t]=s):w.includes(a)?(h.push(s),f[t]=s,o?this.cache.addFile(s,t):this.cache.cacheFile[s]=t):x.includes(a)&&p.push(s)}const y=(0,ora_1.default)("uploading img and font").start();await this.uploadAndCacheHandle({...u,...r}),y.text="upload img and font is completed",y.succeed();const b=(0,ora_1.default)("update css").start(),D=(0,utils_1.cdnReplaceContentHandle)(g);try{D(l,{...u,...r},{...this.cache.cacheCDN})}catch(e){console.error(e)}b.text="uploading css",await this.uploadAndCacheHandle({...d}),b.text="upload css is completed",b.succeed();const N=(0,ora_1.default)("update js").start();D(h,{...u,...r,...d},{...this.cache.cacheCDN}),N.text="uploading js",await this.uploadAndCacheHandle({...f}),N.text="upload js is completed",N.succeed();const k=(0,ora_1.default)("update HTML").start(),H={};Object.entries(this.cache.cacheFile).forEach((([e,t])=>{o?H[t.fileName]=e:H[t]=e})),D(p,{...d,...H},{...this.cache.cacheCDN}),k.text="update HTML is completed",k.succeed(),o&&this.cache.persistence()})),e.hooks.compilation.tap("test",(e=>{e.mainTemplate.hooks.requireExtensions.tap("test",((e,t,a)=>{const s=t.getChunkMaps(!0);if(Object.keys(s.hash).length){const t=[e];return t.push("\n\n// rewrite __webpack_public_path__"),t.push('__webpack_require__.p = "/";'),t.join("\n")||""}return e}))}))}async uploadAndCacheHandle(e){const{cache:t,options:a}=this,s=Object.entries(e).map((([e,t])=>({filename:e,filePath:t})));for(const e of s)if(!a.cache||!t.hasCDN(e.filePath))try{const s=await a.uploadFn(e.filePath,e.filename);a.cache&&s?t.addCDN(e.filePath,s):t.cacheCDN[e.filePath]=s}catch(t){(0,utils_1.log)("error",`upload error, filename: ${e.filename},path: ${e.filePath}`),console.error(t)}}}exports.UploadPlugin=UploadPlugin;
//# sourceMappingURL=/sm/554d547680f1593bb9dde42475516107bc0e6cfb9b52ca5e854b7b1ffb04a111.map