UNPKG

webpack-s3-plugin

Version:
1 lines 18.2 kB
!function(t,i){"object"==typeof exports&&"object"==typeof module?module.exports=i(require("lodash"),require("progress"),require("cdnizer"),require("aws-sdk"),require("recursive-readdir")):"function"==typeof define&&define.amd?define(["lodash","progress","cdnizer","aws-sdk","recursive-readdir"],i):"object"==typeof exports?exports["webpack-s3-plugin"]=i(require("lodash"),require("progress"),require("cdnizer"),require("aws-sdk"),require("recursive-readdir")):t["webpack-s3-plugin"]=i(t.lodash,t.progress,t.cdnizer,t["aws-sdk"],t["recursive-readdir"])}(global,function(t,i,e,a,o){return function(t){var i={};function e(a){if(i[a])return i[a].exports;var o=i[a]={i:a,l:!1,exports:{}};return t[a].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=t,e.c=i,e.d=function(t,i,a){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:a})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(e.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&i&&"string"!=typeof t)for(var o in t)e.d(a,o,function(i){return t[i]}.bind(null,o));return a},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p="",e(e.s=2)}([function(t,i){t.exports=require("path")},function(i,e){i.exports=t},function(t,i,e){"use strict";var a=f(e(3)),o=f(e(4)),s=f(e(5)),p=f(e(0)),n=f(e(6)),l=f(e(7)),r=f(e(1)),c=f(e(8)),m=e(11),d=f(e(12)),u=e(13);function f(t){return t&&t.__esModule?t:{default:t}}a.default.globalAgent.maxSockets=o.default.globalAgent.maxSockets=50;const x=(t,i)=>{t.errors.push(new Error(i))};t.exports=class{constructor(t={}){var{include:i,exclude:e,progress:a,basePath:o,directory:s,htmlFiles:p,basePathTransform:n=u.DEFAULT_TRANSFORM,s3Options:l={},cdnizerOptions:c={},s3UploadOptions:m={},cloudfrontInvalidateOptions:d={},priority:f}=t;this.uploadOptions=m,this.cloudfrontInvalidateOptions=d,this.isConnected=!1,this.cdnizerOptions=c,this.urlMappings=[],this.uploadTotal=0,this.uploadProgress=0,this.basePathTransform=n,o=o?(0,u.addTrailingS3Sep)(o):"",this.options={directory:s,include:i,exclude:e,basePath:o,priority:f,htmlFiles:"string"==typeof p?[p]:p,progress:!r.default.isBoolean(a)||a},this.clientConfig={s3Options:l,maxAsyncS3:50},this.noCdnizer=!Object.keys(this.cdnizerOptions).length,this.noCdnizer||this.cdnizerOptions.files||(this.cdnizerOptions.files=[])}apply(t){this.connect();const i=!!this.options.directory,e=r.default.every(u.REQUIRED_S3_UP_OPTS,t=>this.uploadOptions[t]);this.options.directory=this.options.directory||t.options.output.path||t.options.output.context||".",t.hooks.done.tapPromise(d.default.name,async({compilation:t})=>{let a;if(e||(a=`S3Plugin-RequiredS3UploadOpts: ${u.REQUIRED_S3_UP_OPTS.join(", ")}`),a)return x(t,a);if(i){const i=(0,u.addSeperatorToPath)(this.options.directory);return this.getAllFilesRecursive(i).then(t=>this.handleFiles(t)).catch(i=>this.handleErrors(i,t))}return this.getAssetFiles(t).then(t=>this.handleFiles(t)).catch(i=>this.handleErrors(i,t))})}handleFiles(t){return this.changeUrls(t).then(t=>this.filterAllowedFiles(t)).then(t=>this.uploadFiles(t)).then(()=>this.invalidateCloudfront())}async handleErrors(t,i){throw x(i,`S3Plugin: ${t}`),t}getAllFilesRecursive(t){return(0,u.getDirectoryFilesRecursive)(t)}addPathToFiles(t,i){return t.map(t=>({name:t,path:p.default.resolve(i,t)}))}getFileName(t=""){return r.default.includes(t,u.PATH_SEP)?t.substring(r.default.lastIndexOf(t,u.PATH_SEP)+1):t}getAssetFiles({assets:t,outputOptions:i}){const e=r.default.map(t,(t,e)=>({name:e,path:`${i.path}/${e}`}));return Promise.resolve(e)}cdnizeHtml(t){return new Promise((i,e)=>{s.default.readFile(t.path,(a,o)=>{if(a)return e(a);s.default.writeFile(t.path,this.cdnizer(o.toString()),a=>{if(a)return e(a);i(t)})})})}changeUrls(t=[]){if(this.noCdnizer)return Promise.resolve(t);var i;const{directory:e,htmlFiles:a=[]}=this.options;i=a.length?this.addPathToFiles(a,e).concat(t):t,this.cdnizerOptions.files=i.map(({name:t})=>`{/,}*${t}*`),this.cdnizer=(0,l.default)(this.cdnizerOptions);const[o,s]=(0,r.default)(i).uniq("name").partition(t=>/\.(html|css)/.test(t.name)).value();return Promise.all(o.map(t=>this.cdnizeHtml(t)).concat(s))}filterAllowedFiles(t){return t.reduce((t,i)=>(this.isIncludeAndNotExclude(i.name)&&!this.isIgnoredFile(i.name)&&t.push(i),t),[])}isIgnoredFile(t){return r.default.some(u.UPLOAD_IGNORES,i=>new RegExp(i).test(t))}isIncludeAndNotExclude(t){var i,e,{include:a,exclude:o}=this.options;return e=!a||(0,u.testRule)(a,t),i=!!o&&(0,u.testRule)(o,t),e&&!i}connect(){this.isConnected||(this.client=new m.S3(this.clientConfig.s3Options),this.isConnected=!0)}transformBasePath(){return Promise.resolve(this.basePathTransform(this.options.basePath)).then(u.addTrailingS3Sep).then(t=>this.options.basePath=t)}setupProgressBar(t){const i=t.reduce((t,{upload:i})=>i.totalBytes+t,0),e=new n.default("Uploading [:bar] :percent :etas",{complete:">",incomplete:"∆",total:i});var a=0;t.forEach(({upload:t})=>{t.on("httpUploadProgress",({loaded:t})=>{a+=t,e.update(a)})})}prioritizeFiles(t){const i=[...t],e=this.options.priority.map(t=>r.default.remove(i,i=>t.test(i.name)));return[i,...e]}uploadPriorityChunk(t){const i=t.map(t=>this.uploadFile(t.name,t.path));return Promise.all(i.map(({promise:t})=>t))}uploadInPriorityOrder(t){return this.prioritizeFiles(t).map(t=>()=>this.uploadPriorityChunk(t)).reduce((t,i)=>t.then(i),Promise.resolve())}uploadFiles(t=[]){return this.transformBasePath().then(()=>{if(this.options.priority)return this.uploadInPriorityOrder(t);{const i=t.map(t=>this.uploadFile(t.name,t.path));return this.options.progress&&this.setupProgressBar(i),Promise.all(i.map(({promise:t})=>t))}})}uploadFile(t,i){let e=this.options.basePath+t;const a=r.default.mapValues(this.uploadOptions,e=>r.default.isFunction(e)?e(t,i):e);"/"===e[0]&&(e=e.substr(1)),void 0===a.ContentType&&(a.ContentType=c.default.getType(t));const o=s.default.createReadStream(i),p=this.client.upload(r.default.merge({Key:e,Body:o},u.DEFAULT_UPLOAD_OPTIONS,a));return this.noCdnizer||this.cdnizerOptions.files.push(`*${t}*`),{upload:p,promise:p.promise()}}invalidateCloudfront(){const{clientConfig:t,cloudfrontInvalidateOptions:i}=this;if(i.DistributionId){const{accessKeyId:e,secretAccessKey:a,sessionToken:o}=t.s3Options,s=new m.CloudFront({accessKeyId:e,secretAccessKey:a,sessionToken:o});r.default.isArray(i.DistributionId)||(i.DistributionId=[i.DistributionId]);const p=i.DistributionId.map(t=>new Promise((e,a)=>{s.createInvalidation({DistributionId:t,InvalidationBatch:{CallerReference:Date.now().toString(),Paths:{Quantity:i.Items.length,Items:i.Items}}},(t,i)=>{t?a(t):e(i.Id)})}));return Promise.all(p)}return Promise.resolve(null)}}},function(t,i){t.exports=require("http")},function(t,i){t.exports=require("https")},function(t,i){t.exports=require("fs")},function(t,e){t.exports=i},function(t,i){t.exports=e},function(t,i,e){"use strict";var a=e(9);t.exports=new a(e(10))},function(t,i,e){"use strict";function a(){this._types=Object.create(null),this._extensions=Object.create(null);for(var t=0;t<arguments.length;t++)this.define(arguments[t])}a.prototype.define=function(t,i){for(var e in t){for(var a=t[e],o=0;o<a.length;o++){if("*"!=(s=a[o])[0]){if(!i&&s in this._types)throw new Error('Attempt to change mapping for "'+s+'" extension from "'+this._types[s]+'" to "'+e+'". Pass `force=true` to allow this, otherwise remove "'+s+'" from the list of extensions for "'+e+'".');this._types[s]=e}}if(i||!this._extensions[e]){var s=a[0];this._extensions[e]="*"!=s[0]?s:s.substr(1)}}},a.prototype.getType=function(t){var i=(t=String(t)).replace(/^.*[/\\]/,"").toLowerCase(),e=i.replace(/^.*\./,"").toLowerCase(),a=i.length<t.length;return(e.length<i.length-1||!a)&&this._types[e]||null},a.prototype.getExtension=function(t){return(t=/^\s*([^;\s]*)/.test(t)&&RegExp.$1)&&this._extensions[t.toLowerCase()]||null},t.exports=a},function(t){t.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["*woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/webp":["webp"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]}},function(t,i){t.exports=a},function(t){t.exports={name:"webpack-s3-plugin",version:"1.2.0-rc.0",description:"Uploads compiled assets to s3 after build",main:"dist/s3_plugin.js",scripts:{build:"webpack --mode production",prepublishOnly:"npm run lint && npm run build",test:"NODE_ENV='test' mocha -t 10000 --require babel-register",lint:"eslint ./src ./test",watch:"webpack --watch --mode development","prep:major":"npm run build && npm version major","prep:minor":"npm run build && npm version minor","prep:patch":"npm run build && npm version patch"},repository:{type:"git",url:"git@github.com:webpack-contrib/s3-plugin-webpack.git"},keywords:["s3","webpack","node","upload","production"],author:"Mika Kalathil",license:"MIT",bugs:{url:"https://github.com/webpack-contrib/s3-plugin-webpack/issues"},homepage:"https://github.com/webpack-contrib/s3-plugin-webpack",dependencies:{"aws-sdk":"^2.784.0",cdnizer:"^3.2.1",lodash:"^4.17.20",mime:"^2.4.6",progress:"^2.0.3","recursive-readdir":"^2.2.2"},devDependencies:{"babel-core":"^6.26.3","babel-loader":"^8.1.0","babel-preset-env":"^1.6.1",chai:"^4.2.0","css-loader":"^5.0.0",dotenv:"^8.2.0",eslint:"^7.12.1","eslint-loader":"^4.0.2","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","mini-css-extract-plugin":"^1.2.1",mocha:"^8.2.1",sinon:"^9.2.1","style-loader":"^2.0.0",webpack:"^5.4.0","webpack-cli":"^4.1.0"},peerDependencies:{webpack:">=5.0.0"}}},function(t,i,e){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.testRule=i.getDirectoryFilesRecursive=i.translatePathFromFiles=i.addSeperatorToPath=i.addTrailingS3Sep=i.DEFAULT_TRANSFORM=i.S3_PATH_SEP=i.PATH_SEP=i.REQUIRED_S3_UP_OPTS=i.DEFAULT_UPLOAD_OPTIONS=i.UPLOAD_IGNORES=void 0;var a=p(e(1)),o=p(e(0)),s=p(e(14));function p(t){return t&&t.__esModule?t:{default:t}}i.UPLOAD_IGNORES=[".DS_Store"],i.DEFAULT_UPLOAD_OPTIONS={ACL:"public-read"},i.REQUIRED_S3_UP_OPTS=["Bucket"];const n=i.PATH_SEP=o.default.sep,l=i.S3_PATH_SEP="/",r=(i.DEFAULT_TRANSFORM=(t=>Promise.resolve(t)),i.addTrailingS3Sep=(t=>t?t.replace(/\/?(\?|#|$)/,"/$1"):t),i.addSeperatorToPath=(t=>t?a.default.endsWith(t,n)?t:t+n:t),i.translatePathFromFiles=(t=>i=>a.default.map(i,i=>({path:i,name:i.replace(t,"").split(n).join(l)})))),c=(i.getDirectoryFilesRecursive=((t,i=[])=>new Promise((e,a)=>{(0,s.default)(t,i,(t,i)=>t?a(t):e(i))}).then(r(t))),i.testRule=((t,i)=>{if(a.default.isRegExp(t))return t.test(i);if(a.default.isFunction(t))return!!t(i);if(a.default.isArray(t))return a.default.every(t,t=>c(t,i));if(a.default.isString(t))return new RegExp(t).test(i);throw new Error("Invalid include / exclude rule")}))},function(t,i){t.exports=o}])});