UNPKG

webpack-browser-extension-html

Version:
4 lines (3 loc) 3.5 kB
"use strict";var D=Object.create;var u=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var U=(n,s)=>{for(var r in s)u(n,r,{get:s[r],enumerable:!0})},b=(n,s,r,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of $(s))!w.call(n,t)&&t!==r&&u(n,t,{get:()=>s[t],enumerable:!(e=T(s,t))||e.enumerable});return n};var c=(n,s,r)=>(r=n!=null?D(M(n)):{},b(s||!n||!n.__esModule?u(r,"default",{value:n,enumerable:!0}):r,n)),q=n=>b(u({},"__esModule",{value:!0}),n);var J={};U(J,{default:()=>z});module.exports=q(J);var j=c(require("path")),P=c(require("fs")),k=require("loader-utils"),S=require("schema-utils"),C=c(require("browser-extension-manifest-fields"));var N=c(require("fs")),p=c(require("path")),x=c(require("parse5-utils"));var m=c(require("parse5-utils"));function l(n){try{return new URL(n),!0}catch{return!1}}function g(n,s){let{childNodes:r=[]}=n;for(let e of r)if(e.nodeName==="script"){let t=m.default.getAttribute(e,"src");if(!t||l(t))continue;s({filePath:t,childNode:e,assetType:"script"})}else if(e.nodeName==="link"){let t=m.default.getAttribute(e,"href"),i=m.default.getAttribute(e,"rel");if(!t||l(t))continue;s(i==="dns-prefetch"||i==="icon"||i==="manifest"||i==="modulepreload"||i==="preconnect"||i==="prefetch"||i==="preload"||i==="prerender"?{filePath:t,childNode:e,assetType:"staticHref"}:{filePath:t,childNode:e,assetType:"css"})}else if(e.nodeName==="a"||e.nodeName==="area"){let t=m.default.getAttribute(e,"href");if(!t||l(t))continue;s({filePath:t,childNode:e,assetType:"staticHref"})}else if(e.nodeName==="audio"||e.nodeName==="embed"||e.nodeName==="iframe"||e.nodeName==="img"||e.nodeName==="input"||e.nodeName==="source"||e.nodeName==="track"||e.nodeName==="video"){let t=m.default.getAttribute(e,"src");if(!t||l(t))continue;s({filePath:t,childNode:e,assetType:"staticSrc"})}else g(e,s)}function y(n,s){let r=s||N.default.readFileSync(n,{encoding:"utf8"}),e=x.default.parse(r),t={css:[],js:[],static:[]},i=(a,o)=>p.default.join(p.default.dirname(a),o.startsWith("/")?p.default.relative(p.default.dirname(a),o):o);for(let a of e.childNodes)if(a.nodeName==="html"){for(let o of a.childNodes)(o.nodeName==="head"||o.nodeName==="body")&&g(o,({filePath:d,assetType:h})=>{let f=i(n,d);switch(h){case"script":t.js?.push(f);break;case"css":t.css?.push(f);break;case"staticSrc":case"staticHref":if(d.startsWith("#"))break;t.static?.push(f);break;default:break}});return{css:t.css,js:t.js,static:t.static}}}var A=c(require("path")),H=c(require("fs"));function v(n){let s=A.default.join(n,"package.json");if(!H.default.existsSync(s))return!1;let r=require(s),e=r.devDependencies&&r.devDependencies.react,t=r.dependencies&&r.dependencies.react;return!!(e||t)}var E={type:"object",properties:{test:{type:"string"},manifestPath:{type:"string"},includeList:{type:"object"},exclude:{type:"array"}}};function z(n){let s=this.getOptions(),r=s.manifestPath,e=s.includeList,t=j.default.dirname(r),i=require(r);(0,S.validate)(E,s,{name:"Inject HMR (<script> tags) Accept",baseDataPath:"options"});let a=(0,k.urlToRequest)(this.resourcePath),o=` if (import.meta.webpackHot) { import.meta.webpackHot.accept() }; `;if(v(t))return n;let d={...(0,C.default)(r,i).html,...e};for(let h of Object.entries(d)){let[,f]=h;if(f?.html){if(!P.default.existsSync(f?.html))return;let I=y(f?.html)?.js||[];for(let L of I){let O=j.default.resolve(t,L);if(a.includes(O))return`${o}${n}`}}}return n}