From 3087bdbd8caf5ba69d287428f8e711bd24bf49fb Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Fri, 12 Jul 2024 10:59:18 +0200 Subject: [PATCH] implemented reader mode --- app/assets/scripts/readability.min.js.gz | 1 + app/js/.gitignore | 25 + app/js/readability/dist/readability.min.js | 3 + app/js/readability/dist/readability.min.js.gz | Bin 0 -> 18947 bytes app/js/readability/dist/report.html | 39 + app/js/readability/dist/stats.json | 1362 +++++ app/js/readability/package-lock.json | 4537 +++++++++++++++++ app/js/readability/package.json | 27 + app/js/readability/src/index.js | 39 + app/js/readability/webpack.config.js | 54 + .../domain/services/app_initialization.dart | 5 + .../domain/services/app_initialization.g.dart | 2 +- .../presentation/screens/browser.dart | 110 +- .../features/web_view/domain/providers.dart | 15 + .../features/web_view/domain/providers.g.dart | 16 + .../controllers/readerability.dart | 33 + .../controllers/readerability.g.dart | 178 + .../services/readerability_script.dart | 55 + .../services/readerability_script.g.dart | 179 + .../presentation/widgets/web_view.dart | 53 +- .../widgets/animate_gradient_shader.dart | 219 + app/pubspec.yaml | 3 +- 22 files changed, 6935 insertions(+), 20 deletions(-) create mode 120000 app/assets/scripts/readability.min.js.gz create mode 100644 app/js/.gitignore create mode 100644 app/js/readability/dist/readability.min.js create mode 100644 app/js/readability/dist/readability.min.js.gz create mode 100644 app/js/readability/dist/report.html create mode 100644 app/js/readability/dist/stats.json create mode 100644 app/js/readability/package-lock.json create mode 100644 app/js/readability/package.json create mode 100644 app/js/readability/src/index.js create mode 100644 app/js/readability/webpack.config.js create mode 100644 app/lib/features/web_view/presentation/controllers/readerability.dart create mode 100644 app/lib/features/web_view/presentation/controllers/readerability.g.dart create mode 100644 app/lib/features/web_view/presentation/services/readerability_script.dart create mode 100644 app/lib/features/web_view/presentation/services/readerability_script.g.dart create mode 100644 app/lib/presentation/widgets/animate_gradient_shader.dart diff --git a/app/assets/scripts/readability.min.js.gz b/app/assets/scripts/readability.min.js.gz new file mode 120000 index 00000000..93576576 --- /dev/null +++ b/app/assets/scripts/readability.min.js.gz @@ -0,0 +1 @@ +../../js/readability/dist/readability.min.js.gz \ No newline at end of file diff --git a/app/js/.gitignore b/app/js/.gitignore new file mode 100644 index 00000000..2f297e50 --- /dev/null +++ b/app/js/.gitignore @@ -0,0 +1,25 @@ +# Node.js +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Logs +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Runtime data +pids/ +*.pid +*.seed +*.pid.lock + +# Compiled output +build/ + +# Optional npm cache directory +.npm/ diff --git a/app/js/readability/dist/readability.min.js b/app/js/readability/dist/readability.min.js new file mode 100644 index 00000000..669dad5f --- /dev/null +++ b/app/js/readability/dist/readability.min.js @@ -0,0 +1,3 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ReadabilityBundle=t():e.ReadabilityBundle=t()}(this,(()=>(()=>{var e={804:e=>{var t={unlikelyCandidates:/-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,okMaybeItsACandidate:/and|article|body|column|content|main|shadow/i};function i(e){return(!e.style||"none"!=e.style.display)&&!e.hasAttribute("hidden")&&(!e.hasAttribute("aria-hidden")||"true"!=e.getAttribute("aria-hidden")||e.className&&e.className.indexOf&&-1!==e.className.indexOf("fallback-image"))}e.exports=function(e,n={}){"function"==typeof n&&(n={visibilityChecker:n});var r={minScore:20,minContentLength:140,visibilityChecker:i};n=Object.assign(r,n);var a=e.querySelectorAll("p, pre, article"),o=e.querySelectorAll("div > br");if(o.length){var s=new Set(a);[].forEach.call(o,(function(e){s.add(e.parentNode)})),a=Array.from(s)}var l=0;return[].some.call(a,(function(e){if(!n.visibilityChecker(e))return!1;var i=e.className+" "+e.id;if(t.unlikelyCandidates.test(i)&&!t.okMaybeItsACandidate.test(i))return!1;if(e.matches("li p"))return!1;var r=e.textContent.trim().length;return!(rn.minScore}))}},238:e=>{function t(e,t){if(t&&t.documentElement)e=t,t=arguments[2];else if(!e||!e.documentElement)throw new Error("First argument to Readability constructor should be a document object.");if(t=t||{},this._doc=e,this._docJSDOMParser=this._doc.firstChild.__JSDOMParser__,this._articleTitle=null,this._articleByline=null,this._articleDir=null,this._articleSiteName=null,this._attempts=[],this._debug=!!t.debug,this._maxElemsToParse=t.maxElemsToParse||this.DEFAULT_MAX_ELEMS_TO_PARSE,this._nbTopCandidates=t.nbTopCandidates||this.DEFAULT_N_TOP_CANDIDATES,this._charThreshold=t.charThreshold||this.DEFAULT_CHAR_THRESHOLD,this._classesToPreserve=this.CLASSES_TO_PRESERVE.concat(t.classesToPreserve||[]),this._keepClasses=!!t.keepClasses,this._serializer=t.serializer||function(e){return e.innerHTML},this._disableJSONLD=!!t.disableJSONLD,this._allowedVideoRegex=t.allowedVideoRegex||this.REGEXPS.videos,this._flags=this.FLAG_STRIP_UNLIKELYS|this.FLAG_WEIGHT_CLASSES|this.FLAG_CLEAN_CONDITIONALLY,this._debug){let e=function(e){if(e.nodeType==e.TEXT_NODE)return`${e.nodeName} ("${e.textContent}")`;let t=Array.from(e.attributes||[],(function(e){return`${e.name}="${e.value}"`})).join(" ");return`<${e.localName} ${t}>`};this.log=function(){if("undefined"!=typeof console){let t=Array.from(arguments,(t=>t&&t.nodeType==this.ELEMENT_NODE?e(t):t));t.unshift("Reader: (Readability)"),console.log.apply(console,t)}else if("undefined"!=typeof dump){var t=Array.prototype.map.call(arguments,(function(t){return t&&t.nodeName?e(t):t})).join(" ");dump("Reader: (Readability) "+t+"\n")}}}else this.log=function(){}}t.prototype={FLAG_STRIP_UNLIKELYS:1,FLAG_WEIGHT_CLASSES:2,FLAG_CLEAN_CONDITIONALLY:4,ELEMENT_NODE:1,TEXT_NODE:3,DEFAULT_MAX_ELEMS_TO_PARSE:0,DEFAULT_N_TOP_CANDIDATES:5,DEFAULT_TAGS_TO_SCORE:"section,h2,h3,h4,h5,h6,p,td,pre".toUpperCase().split(","),DEFAULT_CHAR_THRESHOLD:500,REGEXPS:{unlikelyCandidates:/-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,okMaybeItsACandidate:/and|article|body|column|content|main|shadow/i,positive:/article|body|content|entry|hentry|h-entry|main|page|pagination|post|text|blog|story/i,negative:/-ad-|hidden|^hid$| hid$| hid |^hid |banner|combx|comment|com-|contact|foot|footer|footnote|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget/i,extraneous:/print|archive|comment|discuss|e[\-]?mail|share|reply|all|login|sign|single|utility/i,byline:/byline|author|dateline|writtenby|p-author/i,replaceFonts:/<(\/?)font[^>]*>/gi,normalize:/\s{2,}/g,videos:/\/\/(www\.)?((dailymotion|youtube|youtube-nocookie|player\.vimeo|v\.qq)\.com|(archive|upload\.wikimedia)\.org|player\.twitch\.tv)/i,shareElements:/(\b|_)(share|sharedaddy)(\b|_)/i,nextLink:/(next|weiter|continue|>([^\|]|$)|»([^\|]|$))/i,prevLink:/(prev|earl|old|new|<|«)/i,tokenize:/\W+/g,whitespace:/^\s*$/,hasContent:/\S$/,hashUrl:/^#.+/,srcsetUrl:/(\S+)(\s+[\d.]+[xw])?(\s*(?:,|$))/g,b64DataUrl:/^data:\s*([^\s;,]+)\s*;\s*base64\s*,/i,commas:/\u002C|\u060C|\uFE50|\uFE10|\uFE11|\u2E41|\u2E34|\u2E32|\uFF0C/g,jsonLdArticleTypes:/^Article|AdvertiserContentArticle|NewsArticle|AnalysisNewsArticle|AskPublicNewsArticle|BackgroundNewsArticle|OpinionNewsArticle|ReportageNewsArticle|ReviewNewsArticle|Report|SatiricalArticle|ScholarlyArticle|MedicalScholarlyArticle|SocialMediaPosting|BlogPosting|LiveBlogPosting|DiscussionForumPosting|TechArticle|APIReference$/},UNLIKELY_ROLES:["menu","menubar","complementary","navigation","alert","alertdialog","dialog"],DIV_TO_P_ELEMS:new Set(["BLOCKQUOTE","DL","DIV","IMG","OL","P","PRE","TABLE","UL"]),ALTER_TO_DIV_EXCEPTIONS:["DIV","ARTICLE","SECTION","P"],PRESENTATIONAL_ATTRIBUTES:["align","background","bgcolor","border","cellpadding","cellspacing","frame","hspace","rules","style","valign","vspace"],DEPRECATED_SIZE_ATTRIBUTE_ELEMS:["TABLE","TH","TD","HR","PRE"],PHRASING_ELEMS:["ABBR","AUDIO","B","BDO","BR","BUTTON","CITE","CODE","DATA","DATALIST","DFN","EM","EMBED","I","IMG","INPUT","KBD","LABEL","MARK","MATH","METER","NOSCRIPT","OBJECT","OUTPUT","PROGRESS","Q","RUBY","SAMP","SCRIPT","SELECT","SMALL","SPAN","STRONG","SUB","SUP","TEXTAREA","TIME","VAR","WBR"],CLASSES_TO_PRESERVE:["page"],HTML_ESCAPE_MAP:{lt:"<",gt:">",amp:"&",quot:'"',apos:"'"},_postProcessContent:function(e){this._fixRelativeUris(e),this._simplifyNestedElements(e),this._keepClasses||this._cleanClasses(e)},_removeNodes:function(e,t){if(this._docJSDOMParser&&e._isLiveNodeList)throw new Error("Do not pass live node lists to _removeNodes");for(var i=e.length-1;i>=0;i--){var n=e[i],r=n.parentNode;r&&(t&&!t.call(this,n,i,e)||r.removeChild(n))}},_replaceNodeTags:function(e,t){if(this._docJSDOMParser&&e._isLiveNodeList)throw new Error("Do not pass live node lists to _replaceNodeTags");for(const i of e)this._setNodeTag(i,t)},_forEachNode:function(e,t){Array.prototype.forEach.call(e,t,this)},_findNode:function(e,t){return Array.prototype.find.call(e,t,this)},_someNode:function(e,t){return Array.prototype.some.call(e,t,this)},_everyNode:function(e,t){return Array.prototype.every.call(e,t,this)},_concatNodeLists:function(){var e=Array.prototype.slice,t=e.call(arguments).map((function(t){return e.call(t)}));return Array.prototype.concat.apply([],t)},_getAllNodesWithTag:function(e,t){return e.querySelectorAll?e.querySelectorAll(t.join(",")):[].concat.apply([],t.map((function(t){var i=e.getElementsByTagName(t);return Array.isArray(i)?i:Array.from(i)})))},_cleanClasses:function(e){var t=this._classesToPreserve,i=(e.getAttribute("class")||"").split(/\s+/).filter((function(e){return-1!=t.indexOf(e)})).join(" ");for(i?e.setAttribute("class",i):e.removeAttribute("class"),e=e.firstElementChild;e;e=e.nextElementSibling)this._cleanClasses(e)},_fixRelativeUris:function(e){var t=this._doc.baseURI,i=this._doc.documentURI;function n(e){if(t==i&&"#"==e.charAt(0))return e;try{return new URL(e,t).href}catch(e){}return e}var r=this._getAllNodesWithTag(e,["a"]);this._forEachNode(r,(function(e){var t=e.getAttribute("href");if(t)if(0===t.indexOf("javascript:"))if(1===e.childNodes.length&&e.childNodes[0].nodeType===this.TEXT_NODE){var i=this._doc.createTextNode(e.textContent);e.parentNode.replaceChild(i,e)}else{for(var r=this._doc.createElement("span");e.firstChild;)r.appendChild(e.firstChild);e.parentNode.replaceChild(r,e)}else e.setAttribute("href",n(t))}));var a=this._getAllNodesWithTag(e,["img","picture","figure","video","audio","source"]);this._forEachNode(a,(function(e){var t=e.getAttribute("src"),i=e.getAttribute("poster"),r=e.getAttribute("srcset");if(t&&e.setAttribute("src",n(t)),i&&e.setAttribute("poster",n(i)),r){var a=r.replace(this.REGEXPS.srcsetUrl,(function(e,t,i,r){return n(t)+(i||"")+r}));e.setAttribute("srcset",a)}}))},_simplifyNestedElements:function(e){for(var t=e;t;){if(t.parentNode&&["DIV","SECTION"].includes(t.tagName)&&(!t.id||!t.id.startsWith("readability"))){if(this._isElementWithoutContent(t)){t=this._removeAndGetNext(t);continue}if(this._hasSingleTagInsideElement(t,"DIV")||this._hasSingleTagInsideElement(t,"SECTION")){for(var i=t.children[0],n=0;n»] /.test(t))n=/ [\\\/>»] /.test(t),r(t=i.replace(/(.*)[\|\-\\\/>»] .*/gi,"$1"))<3&&(t=i.replace(/[^\|\-\\\/>»]*[\|\-\\\/>»](.*)/gi,"$1"));else if(-1!==t.indexOf(": ")){var a=this._concatNodeLists(e.getElementsByTagName("h1"),e.getElementsByTagName("h2")),o=t.trim();this._someNode(a,(function(e){return e.textContent.trim()===o}))||(r(t=i.substring(i.lastIndexOf(":")+1))<3?t=i.substring(i.indexOf(":")+1):r(i.substr(0,i.indexOf(":")))>5&&(t=i))}else if(t.length>150||t.length<15){var s=e.getElementsByTagName("h1");1===s.length&&(t=this._getInnerText(s[0]))}var l=r(t=t.trim().replace(this.REGEXPS.normalize," "));return l<=4&&(!n||l!=r(i.replace(/[\|\-\\\/>»]+/g,""))-1)&&(t=i),t},_prepDocument:function(){var e=this._doc;this._removeNodes(this._getAllNodesWithTag(e,["style"])),e.body&&this._replaceBrs(e.body),this._replaceNodeTags(this._getAllNodesWithTag(e,["font"]),"SPAN")},_nextNode:function(e){for(var t=e;t&&t.nodeType!=this.ELEMENT_NODE&&this.REGEXPS.whitespace.test(t.textContent);)t=t.nextSibling;return t},_replaceBrs:function(e){this._forEachNode(this._getAllNodesWithTag(e,["br"]),(function(e){for(var t=e.nextSibling,i=!1;(t=this._nextNode(t))&&"BR"==t.tagName;){i=!0;var n=t.nextSibling;t.parentNode.removeChild(t),t=n}if(i){var r=this._doc.createElement("p");for(e.parentNode.replaceChild(r,e),t=r.nextSibling;t;){if("BR"==t.tagName){var a=this._nextNode(t.nextSibling);if(a&&"BR"==a.tagName)break}if(!this._isPhrasingContent(t))break;var o=t.nextSibling;r.appendChild(t),t=o}for(;r.lastChild&&this._isWhitespace(r.lastChild);)r.removeChild(r.lastChild);"P"===r.parentNode.tagName&&this._setNodeTag(r.parentNode,"DIV")}}))},_setNodeTag:function(e,t){if(this.log("_setNodeTag",e,t),this._docJSDOMParser)return e.localName=t.toLowerCase(),e.tagName=t.toUpperCase(),e;for(var i=e.ownerDocument.createElement(t);e.firstChild;)i.appendChild(e.firstChild);e.parentNode.replaceChild(i,e),e.readability&&(i.readability=e.readability);for(var n=0;n!i.includes(e))).join(" ").length/n.join(" ").length:0},_checkByline:function(e,t){if(this._articleByline)return!1;if(void 0!==e.getAttribute)var i=e.getAttribute("rel"),n=e.getAttribute("itemprop");return!(!("author"===i||n&&-1!==n.indexOf("author")||this.REGEXPS.byline.test(t))||!this._isValidByline(e.textContent))&&(this._articleByline=e.textContent.trim(),!0)},_getNodeAncestors:function(e,t){t=t||0;for(var i=0,n=[];e.parentNode&&(n.push(e.parentNode),!t||++i!==t);)e=e.parentNode;return n},_grabArticle:function(e){this.log("**** grabArticle ****");var t=this._doc,i=null!==e;if(!(e=e||this._doc.body))return this.log("No body found in document. Abort."),null;for(var n=e.innerHTML;;){this.log("Starting grabArticle loop");var r=this._flagIsActive(this.FLAG_STRIP_UNLIKELYS),a=[],o=this._doc.documentElement;let X=!0;for(;o;){"HTML"===o.tagName&&(this._articleLang=o.getAttribute("lang"));var s=o.className+" "+o.id;if(this._isProbablyVisible(o))if("true"!=o.getAttribute("aria-modal")||"dialog"!=o.getAttribute("role"))if(this._checkByline(o,s))o=this._removeAndGetNext(o);else if(X&&this._headerDuplicatesTitle(o))this.log("Removing header: ",o.textContent.trim(),this._articleTitle.trim()),X=!1,o=this._removeAndGetNext(o);else{if(r){if(this.REGEXPS.unlikelyCandidates.test(s)&&!this.REGEXPS.okMaybeItsACandidate.test(s)&&!this._hasAncestorTag(o,"table")&&!this._hasAncestorTag(o,"code")&&"BODY"!==o.tagName&&"A"!==o.tagName){this.log("Removing unlikely candidate - "+s),o=this._removeAndGetNext(o);continue}if(this.UNLIKELY_ROLES.includes(o.getAttribute("role"))){this.log("Removing content with role "+o.getAttribute("role")+" - "+s),o=this._removeAndGetNext(o);continue}}if("DIV"!==o.tagName&&"SECTION"!==o.tagName&&"HEADER"!==o.tagName&&"H1"!==o.tagName&&"H2"!==o.tagName&&"H3"!==o.tagName&&"H4"!==o.tagName&&"H5"!==o.tagName&&"H6"!==o.tagName||!this._isElementWithoutContent(o)){if(-1!==this.DEFAULT_TAGS_TO_SCORE.indexOf(o.tagName)&&a.push(o),"DIV"===o.tagName){for(var l=null,c=o.firstChild;c;){var h=c.nextSibling;if(this._isPhrasingContent(c))null!==l?l.appendChild(c):this._isWhitespace(c)||(l=t.createElement("p"),o.replaceChild(l,c),l.appendChild(c));else if(null!==l){for(;l.lastChild&&this._isWhitespace(l.lastChild);)l.removeChild(l.lastChild);l=null}c=h}if(this._hasSingleTagInsideElement(o,"P")&&this._getLinkDensity(o)<.25){var d=o.children[0];o.parentNode.replaceChild(d,o),o=d,a.push(o)}else this._hasChildBlockElement(o)||(o=this._setNodeTag(o,"P"),a.push(o))}o=this._getNextNode(o)}else o=this._removeAndGetNext(o)}else o=this._removeAndGetNext(o);else this.log("Removing hidden node - "+s),o=this._removeAndGetNext(o)}var u=[];this._forEachNode(a,(function(e){if(e.parentNode&&void 0!==e.parentNode.tagName){var t=this._getInnerText(e);if(!(t.length<25)){var i=this._getNodeAncestors(e,5);if(0!==i.length){var n=0;n+=1,n+=t.split(this.REGEXPS.commas).length,n+=Math.min(Math.floor(t.length/100),3),this._forEachNode(i,(function(e,t){if(e.tagName&&e.parentNode&&void 0!==e.parentNode.tagName){if(void 0===e.readability&&(this._initializeNode(e),u.push(e)),0===t)var i=1;else i=1===t?2:3*t;e.readability.contentScore+=n/i}}))}}}}));for(var m=[],g=0,p=u.length;gE.readability.contentScore){m.splice(N,0,f),m.length>this._nbTopCandidates&&m.pop();break}}}var T,b=m[0]||null,y=!1;if(null===b||"BODY"===b.tagName){for(b=t.createElement("DIV"),y=!0;e.firstChild;)this.log("Moving child out:",e.firstChild),b.appendChild(e.firstChild);e.appendChild(b),this._initializeNode(b)}else if(b){for(var A=[],v=1;v=.75&&A.push(this._getNodeAncestors(m[v]));if(A.length>=3)for(T=b.parentNode;"BODY"!==T.tagName;){for(var S=0,C=0;C=3){b=T;break}T=T.parentNode}b.readability||this._initializeNode(b),T=b.parentNode;for(var L=b.readability.contentScore,x=L/3;"BODY"!==T.tagName;)if(T.readability){var R=T.readability.contentScore;if(RL){b=T;break}L=T.readability.contentScore,T=T.parentNode}else T=T.parentNode;for(T=b.parentNode;"BODY"!=T.tagName&&1==T.children.length;)T=(b=T).parentNode;b.readability||this._initializeNode(b)}var D=t.createElement("DIV");i&&(D.id="readability-content");for(var I=Math.max(10,.2*b.readability.contentScore),O=(T=b.parentNode).children,w=0,P=O.length;w=I)k=!0;else if("P"===M.nodeName){var U=this._getLinkDensity(M),H=this._getInnerText(M),G=H.length;(G>80&&U<.25||G<80&&G>0&&0===U&&-1!==H.search(/\.( |$)/))&&(k=!0)}}k&&(this.log("Appending node:",M),-1===this.ALTER_TO_DIV_EXCEPTIONS.indexOf(M.nodeName)&&(this.log("Altering sibling:",M,"to div."),M=this._setNodeTag(M,"DIV")),D.appendChild(M),O=T.children,w-=1,P-=1)}if(this._debug&&this.log("Article content pre-prep: "+D.innerHTML),this._prepArticle(D),this._debug&&this.log("Article content post-prep: "+D.innerHTML),y)b.id="readability-page-1",b.className="page";else{var F=t.createElement("DIV");for(F.id="readability-page-1",F.className="page";D.firstChild;)F.appendChild(D.firstChild);D.appendChild(F)}this._debug&&this.log("Article content after paging: "+D.innerHTML);var W=!0,z=this._getInnerText(D,!0).length;if(z0&&e.length<100)},_unescapeHtmlEntities:function(e){if(!e)return e;var t=this.HTML_ESCAPE_MAP;return e.replace(/&(quot|amp|apos|lt|gt);/g,(function(e,i){return t[i]})).replace(/&#(?:x([0-9a-z]{1,4})|([0-9]{1,4}));/gi,(function(e,t,i){var n=parseInt(t||i,t?16:10);return String.fromCharCode(n)}))},_getJSONLD:function(e){var t,i=this._getAllNodesWithTag(e,["script"]);return this._forEachNode(i,(function(e){if(!t&&"application/ld+json"===e.getAttribute("type"))try{var i=e.textContent.replace(/^\s*\s*$/g,""),n=JSON.parse(i);if(!n["@context"]||!n["@context"].match(/^https?\:\/\/schema\.org$/))return;if(!n["@type"]&&Array.isArray(n["@graph"])&&(n=n["@graph"].find((function(e){return(e["@type"]||"").match(this.REGEXPS.jsonLdArticleTypes)}))),!n||!n["@type"]||!n["@type"].match(this.REGEXPS.jsonLdArticleTypes))return;if(t={},"string"==typeof n.name&&"string"==typeof n.headline&&n.name!==n.headline){var r=this._getArticleTitle(),a=this._textSimilarity(n.name,r)>.75,o=this._textSimilarity(n.headline,r)>.75;t.title=o&&!a?n.headline:n.name}else"string"==typeof n.name?t.title=n.name.trim():"string"==typeof n.headline&&(t.title=n.headline.trim());return n.author&&("string"==typeof n.author.name?t.byline=n.author.name.trim():Array.isArray(n.author)&&n.author[0]&&"string"==typeof n.author[0].name&&(t.byline=n.author.filter((function(e){return e&&"string"==typeof e.name})).map((function(e){return e.name.trim()})).join(", "))),"string"==typeof n.description&&(t.excerpt=n.description.trim()),n.publisher&&"string"==typeof n.publisher.name&&(t.siteName=n.publisher.name.trim()),void("string"==typeof n.datePublished&&(t.datePublished=n.datePublished.trim()))}catch(e){this.log(e.message)}})),t||{}},_getArticleMetadata:function(e){var t={},i={},n=this._doc.getElementsByTagName("meta"),r=/\s*(article|dc|dcterm|og|twitter)\s*:\s*(author|creator|description|published_time|title|site_name)\s*/gi,a=/^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|site_name)\s*$/i;return this._forEachNode(n,(function(e){var t=e.getAttribute("name"),n=e.getAttribute("property"),o=e.getAttribute("content");if(o){var s=null,l=null;n&&(s=n.match(r))&&(l=s[0].toLowerCase().replace(/\s/g,""),i[l]=o.trim()),!s&&t&&a.test(t)&&(l=t,o&&(l=l.toLowerCase().replace(/\s/g,"").replace(/\./g,":"),i[l]=o.trim()))}})),t.title=e.title||i["dc:title"]||i["dcterm:title"]||i["og:title"]||i["weibo:article:title"]||i["weibo:webpage:title"]||i.title||i["twitter:title"],t.title||(t.title=this._getArticleTitle()),t.byline=e.byline||i["dc:creator"]||i["dcterm:creator"]||i.author,t.excerpt=e.excerpt||i["dc:description"]||i["dcterm:description"]||i["og:description"]||i["weibo:article:description"]||i["weibo:webpage:description"]||i.description||i["twitter:description"],t.siteName=e.siteName||i["og:site_name"],t.publishedTime=e.datePublished||i["article:published_time"]||null,t.title=this._unescapeHtmlEntities(t.title),t.byline=this._unescapeHtmlEntities(t.byline),t.excerpt=this._unescapeHtmlEntities(t.excerpt),t.siteName=this._unescapeHtmlEntities(t.siteName),t.publishedTime=this._unescapeHtmlEntities(t.publishedTime),t},_isSingleImage:function(e){return"IMG"===e.tagName||1===e.children.length&&""===e.textContent.trim()&&this._isSingleImage(e.children[0])},_unwrapNoscriptImages:function(e){var t=Array.from(e.getElementsByTagName("img"));this._forEachNode(t,(function(e){for(var t=0;t0&&r>i)return!1;if(e.parentNode.tagName===t&&(!n||n(e.parentNode)))return!0;e=e.parentNode,r++}return!1},_getRowAndColumnCount:function(e){for(var t=0,i=0,n=e.getElementsByTagName("tr"),r=0;r0)n._readabilityDataTable=!0;else{if(["col","colgroup","tfoot","thead","th"].some((function(e){return!!n.getElementsByTagName(e)[0]})))this.log("Data table because found data-y descendant"),n._readabilityDataTable=!0;else if(n.getElementsByTagName("table")[0])n._readabilityDataTable=!1;else{var a=this._getRowAndColumnCount(n);a.rows>=10||a.columns>4?n._readabilityDataTable=!0:n._readabilityDataTable=a.rows*a.columns>10}}}else n._readabilityDataTable=!1;else n._readabilityDataTable=!1}},_fixLazyImages:function(e){this._forEachNode(this._getAllNodesWithTag(e,["img","picture","figure"]),(function(e){if(e.src&&this.REGEXPS.b64DataUrl.test(e.src)){if("image/svg+xml"===this.REGEXPS.b64DataUrl.exec(e.src)[1])return;for(var t=!1,i=0;in+=this._getInnerText(e,!0).length)),n/i},_cleanConditionally:function(e,t){this._flagIsActive(this.FLAG_CLEAN_CONDITIONALLY)&&this._removeNodes(this._getAllNodesWithTag(e,[t]),(function(e){var i=function(e){return e._readabilityDataTable},n="ul"===t||"ol"===t;if(!n){var r=0,a=this._getAllNodesWithTag(e,["ul","ol"]);this._forEachNode(a,(e=>r+=this._getInnerText(e).length)),n=r/this._getInnerText(e).length>.9}if("table"===t&&i(e))return!1;if(this._hasAncestorTag(e,"table",-1,i))return!1;if(this._hasAncestorTag(e,"code"))return!1;var o=this._getClassWeight(e);this.log("Cleaning Conditionally",e);if(o+0<0)return!0;if(this._getCharCount(e,",")<10){for(var s=e.getElementsByTagName("p").length,l=e.getElementsByTagName("img").length,c=e.getElementsByTagName("li").length-100,h=e.getElementsByTagName("input").length,d=this._getTextDensity(e,["h1","h2","h3","h4","h5","h6"]),u=0,m=this._getAllNodesWithTag(e,["object","embed","iframe"]),g=0;g1&&s/l<.5&&!this._hasAncestorTag(e,"figure")||!n&&c>s||h>Math.floor(s/3)||!n&&d<.9&&_<25&&(0===l||l>2)&&!this._hasAncestorTag(e,"figure")||!n&&o<25&&f>.2||o>=25&&f>.5||1===u&&_<75||u>1;if(n&&N){for(var E=0;E1)return N}if(l==e.getElementsByTagName("li").length)return!1}return N}return!1}))},_cleanMatchedNodes:function(e,t){for(var i=this._getNextNode(e,!0),n=this._getNextNode(e);n&&n!=i;)n=t.call(this,n,n.className+" "+n.id)?this._removeAndGetNext(n):this._getNextNode(n)},_cleanHeaders:function(e){let t=this._getAllNodesWithTag(e,["h1","h2"]);this._removeNodes(t,(function(e){let t=this._getClassWeight(e)<0;return t&&this.log("Removing header with low class weight:",e),t}))},_headerDuplicatesTitle:function(e){if("H1"!=e.tagName&&"H2"!=e.tagName)return!1;var t=this._getInnerText(e,!1);return this.log("Evaluating similarity of header:",t,this._articleTitle),this._textSimilarity(this._articleTitle,t)>.75},_flagIsActive:function(e){return(this._flags&e)>0},_removeFlag:function(e){this._flags=this._flags&~e},_isProbablyVisible:function(e){return(!e.style||"none"!=e.style.display)&&(!e.style||"hidden"!=e.style.visibility)&&!e.hasAttribute("hidden")&&(!e.hasAttribute("aria-hidden")||"true"!=e.getAttribute("aria-hidden")||e.className&&e.className.indexOf&&-1!==e.className.indexOf("fallback-image"))},parse:function(){if(this._maxElemsToParse>0){var e=this._doc.getElementsByTagName("*").length;if(e>this._maxElemsToParse)throw new Error("Aborting parsing document; "+e+" elements found")}this._unwrapNoscriptImages(this._doc);var t=this._disableJSONLD?{}:this._getJSONLD(this._doc);this._removeScripts(this._doc),this._prepDocument();var i=this._getArticleMetadata(t);this._articleTitle=i.title;var n=this._grabArticle();if(!n)return null;if(this.log("Grabbed: "+n.innerHTML),this._postProcessContent(n),!i.excerpt){var r=n.getElementsByTagName("p");r.length>0&&(i.excerpt=r[0].textContent.trim())}var a=n.textContent;return{title:this._articleTitle,byline:i.byline||this._articleByline,dir:this._articleDir,lang:this._articleLang,content:this._serializer(n),textContent:a,length:a.length,excerpt:i.excerpt,siteName:i.siteName||this._articleSiteName,publishedTime:i.publishedTime}}},e.exports=t},396:(e,t,i)=>{var n=i(238),r=i(804);e.exports={Readability:n,isProbablyReaderable:r}},838:function(e){ +/*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */ +e.exports=function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:i,getPrototypeOf:n,getOwnPropertyDescriptor:r}=Object;let{freeze:a,seal:o,create:s}=Object,{apply:l,construct:c}="undefined"!=typeof Reflect&&Reflect;a||(a=function(e){return e}),o||(o=function(e){return e}),l||(l=function(e,t,i){return e.apply(t,i)}),c||(c=function(e,t){return new e(...t)});const h=y(Array.prototype.forEach),d=y(Array.prototype.pop),u=y(Array.prototype.push),m=y(String.prototype.toLowerCase),g=y(String.prototype.toString),p=y(String.prototype.match),f=y(String.prototype.replace),_=y(String.prototype.indexOf),N=y(String.prototype.trim),E=y(Object.prototype.hasOwnProperty),T=y(RegExp.prototype.test),b=A(TypeError);function y(e){return function(t){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r2&&void 0!==arguments[2]?arguments[2]:m;t&&t(e,null);let a=n.length;for(;a--;){let t=n[a];if("string"==typeof t){const e=r(t);e!==t&&(i(n)||(n[a]=e),t=e)}e[t]=!0}return e}function S(e){for(let t=0;t/gm),F=o(/\${[\w\W]*}/gm),W=o(/^data-[\-\w.\u00B7-\uFFFF]/),z=o(/^aria-[\-\w]+$/),j=o(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),X=o(/^(?:\w+script|data):/i),Y=o(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),V=o(/^html$/i),$=o(/^[a-z][.\w]*(-[.\w]+)+$/i);var q=Object.freeze({__proto__:null,MUSTACHE_EXPR:H,ERB_EXPR:G,TMPLIT_EXPR:F,DATA_ATTR:W,ARIA_ATTR:z,IS_ALLOWED_URI:j,IS_SCRIPT_OR_DATA:X,ATTR_WHITESPACE:Y,DOCTYPE_NAME:V,CUSTOM_ELEMENT:$});const K={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},J=function(){return"undefined"==typeof window?null:window},Z=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let i=null;const n="data-tt-policy-suffix";t&&t.hasAttribute(n)&&(i=t.getAttribute(n));const r="dompurify"+(i?"#"+i:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}};function Q(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:J();const i=e=>Q(e);if(i.version="3.1.6",i.removed=[],!t||!t.document||t.document.nodeType!==K.document)return i.isSupported=!1,i;let{document:n}=t;const r=n,o=r.currentScript,{DocumentFragment:l,HTMLTemplateElement:c,Node:y,Element:A,NodeFilter:S,NamedNodeMap:H=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:G,DOMParser:F,trustedTypes:W}=t,z=A.prototype,X=L(z,"cloneNode"),Y=L(z,"remove"),$=L(z,"nextSibling"),ee=L(z,"childNodes"),te=L(z,"parentNode");if("function"==typeof c){const e=n.createElement("template");e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let ie,ne="";const{implementation:re,createNodeIterator:ae,createDocumentFragment:oe,getElementsByTagName:se}=n,{importNode:le}=r;let ce={};i.isSupported="function"==typeof e&&"function"==typeof te&&re&&void 0!==re.createHTMLDocument;const{MUSTACHE_EXPR:he,ERB_EXPR:de,TMPLIT_EXPR:ue,DATA_ATTR:me,ARIA_ATTR:ge,IS_SCRIPT_OR_DATA:pe,ATTR_WHITESPACE:fe,CUSTOM_ELEMENT:_e}=q;let{IS_ALLOWED_URI:Ne}=q,Ee=null;const Te=v({},[...x,...R,...D,...O,...P]);let be=null;const ye=v({},[...M,...k,...B,...U]);let Ae=Object.seal(s(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ve=null,Se=null,Ce=!0,Le=!0,xe=!1,Re=!0,De=!1,Ie=!0,Oe=!1,we=!1,Pe=!1,Me=!1,ke=!1,Be=!1,Ue=!0,He=!1;const Ge="user-content-";let Fe=!0,We=!1,ze={},je=null;const Xe=v({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ye=null;const Ve=v({},["audio","video","img","source","image","track"]);let $e=null;const qe=v({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ke="http://www.w3.org/1998/Math/MathML",Je="http://www.w3.org/2000/svg",Ze="http://www.w3.org/1999/xhtml";let Qe=Ze,et=!1,tt=null;const it=v({},[Ke,Je,Ze],g);let nt=null;const rt=["application/xhtml+xml","text/html"],at="text/html";let ot=null,st=null;const lt=n.createElement("form"),ct=function(e){return e instanceof RegExp||e instanceof Function},ht=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!st||st!==e){if(e&&"object"==typeof e||(e={}),e=C(e),nt=-1===rt.indexOf(e.PARSER_MEDIA_TYPE)?at:e.PARSER_MEDIA_TYPE,ot="application/xhtml+xml"===nt?g:m,Ee=E(e,"ALLOWED_TAGS")?v({},e.ALLOWED_TAGS,ot):Te,be=E(e,"ALLOWED_ATTR")?v({},e.ALLOWED_ATTR,ot):ye,tt=E(e,"ALLOWED_NAMESPACES")?v({},e.ALLOWED_NAMESPACES,g):it,$e=E(e,"ADD_URI_SAFE_ATTR")?v(C(qe),e.ADD_URI_SAFE_ATTR,ot):qe,Ye=E(e,"ADD_DATA_URI_TAGS")?v(C(Ve),e.ADD_DATA_URI_TAGS,ot):Ve,je=E(e,"FORBID_CONTENTS")?v({},e.FORBID_CONTENTS,ot):Xe,ve=E(e,"FORBID_TAGS")?v({},e.FORBID_TAGS,ot):{},Se=E(e,"FORBID_ATTR")?v({},e.FORBID_ATTR,ot):{},ze=!!E(e,"USE_PROFILES")&&e.USE_PROFILES,Ce=!1!==e.ALLOW_ARIA_ATTR,Le=!1!==e.ALLOW_DATA_ATTR,xe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Re=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,De=e.SAFE_FOR_TEMPLATES||!1,Ie=!1!==e.SAFE_FOR_XML,Oe=e.WHOLE_DOCUMENT||!1,Me=e.RETURN_DOM||!1,ke=e.RETURN_DOM_FRAGMENT||!1,Be=e.RETURN_TRUSTED_TYPE||!1,Pe=e.FORCE_BODY||!1,Ue=!1!==e.SANITIZE_DOM,He=e.SANITIZE_NAMED_PROPS||!1,Fe=!1!==e.KEEP_CONTENT,We=e.IN_PLACE||!1,Ne=e.ALLOWED_URI_REGEXP||j,Qe=e.NAMESPACE||Ze,Ae=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&ct(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ae.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&ct(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ae.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ae.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),De&&(Le=!1),ke&&(Me=!0),ze&&(Ee=v({},P),be=[],!0===ze.html&&(v(Ee,x),v(be,M)),!0===ze.svg&&(v(Ee,R),v(be,k),v(be,U)),!0===ze.svgFilters&&(v(Ee,D),v(be,k),v(be,U)),!0===ze.mathMl&&(v(Ee,O),v(be,B),v(be,U))),e.ADD_TAGS&&(Ee===Te&&(Ee=C(Ee)),v(Ee,e.ADD_TAGS,ot)),e.ADD_ATTR&&(be===ye&&(be=C(be)),v(be,e.ADD_ATTR,ot)),e.ADD_URI_SAFE_ATTR&&v($e,e.ADD_URI_SAFE_ATTR,ot),e.FORBID_CONTENTS&&(je===Xe&&(je=C(je)),v(je,e.FORBID_CONTENTS,ot)),Fe&&(Ee["#text"]=!0),Oe&&v(Ee,["html","head","body"]),Ee.table&&(v(Ee,["tbody"]),delete ve.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw b('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw b('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ie=e.TRUSTED_TYPES_POLICY,ne=ie.createHTML("")}else void 0===ie&&(ie=Z(W,o)),null!==ie&&"string"==typeof ne&&(ne=ie.createHTML(""));a&&a(e),st=e}},dt=v({},["mi","mo","mn","ms","mtext"]),ut=v({},["foreignobject","annotation-xml"]),mt=v({},["title","style","font","a","script"]),gt=v({},[...R,...D,...I]),pt=v({},[...O,...w]),ft=function(e){let t=te(e);t&&t.tagName||(t={namespaceURI:Qe,tagName:"template"});const i=m(e.tagName),n=m(t.tagName);return!!tt[e.namespaceURI]&&(e.namespaceURI===Je?t.namespaceURI===Ze?"svg"===i:t.namespaceURI===Ke?"svg"===i&&("annotation-xml"===n||dt[n]):Boolean(gt[i]):e.namespaceURI===Ke?t.namespaceURI===Ze?"math"===i:t.namespaceURI===Je?"math"===i&&ut[n]:Boolean(pt[i]):e.namespaceURI===Ze?!(t.namespaceURI===Je&&!ut[n])&&!(t.namespaceURI===Ke&&!dt[n])&&!pt[i]&&(mt[i]||!gt[i]):!("application/xhtml+xml"!==nt||!tt[e.namespaceURI]))},_t=function(e){u(i.removed,{element:e});try{te(e).removeChild(e)}catch(t){Y(e)}},Nt=function(e,t){try{u(i.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){u(i.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!be[e])if(Me||ke)try{_t(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},Et=function(e){let t=null,i=null;if(Pe)e=""+e;else{const t=p(e,/^[\r\n\t ]+/);i=t&&t[0]}"application/xhtml+xml"===nt&&Qe===Ze&&(e=''+e+"");const r=ie?ie.createHTML(e):e;if(Qe===Ze)try{t=(new F).parseFromString(r,nt)}catch(e){}if(!t||!t.documentElement){t=re.createDocument(Qe,"template",null);try{t.documentElement.innerHTML=et?ne:r}catch(e){}}const a=t.body||t.documentElement;return e&&i&&a.insertBefore(n.createTextNode(i),a.childNodes[0]||null),Qe===Ze?se.call(t,Oe?"html":"body")[0]:Oe?t.documentElement:a},Tt=function(e){return ae.call(e.ownerDocument||e,e,S.SHOW_ELEMENT|S.SHOW_COMMENT|S.SHOW_TEXT|S.SHOW_PROCESSING_INSTRUCTION|S.SHOW_CDATA_SECTION,null)},bt=function(e){return e instanceof G&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof H)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},yt=function(e){return"function"==typeof y&&e instanceof y},At=function(e,t,n){ce[e]&&h(ce[e],(e=>{e.call(i,t,n,st)}))},vt=function(e){let t=null;if(At("beforeSanitizeElements",e,null),bt(e))return _t(e),!0;const n=ot(e.nodeName);if(At("uponSanitizeElement",e,{tagName:n,allowedTags:Ee}),e.hasChildNodes()&&!yt(e.firstElementChild)&&T(/<[/\w]/g,e.innerHTML)&&T(/<[/\w]/g,e.textContent))return _t(e),!0;if(e.nodeType===K.progressingInstruction)return _t(e),!0;if(Ie&&e.nodeType===K.comment&&T(/<[/\w]/g,e.data))return _t(e),!0;if(!Ee[n]||ve[n]){if(!ve[n]&&Ct(n)){if(Ae.tagNameCheck instanceof RegExp&&T(Ae.tagNameCheck,n))return!1;if(Ae.tagNameCheck instanceof Function&&Ae.tagNameCheck(n))return!1}if(Fe&&!je[n]){const t=te(e)||e.parentNode,i=ee(e)||e.childNodes;if(i&&t)for(let n=i.length-1;n>=0;--n){const r=X(i[n],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,$(e))}}return _t(e),!0}return e instanceof A&&!ft(e)?(_t(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!T(/<\/no(script|embed|frames)/i,e.innerHTML)?(De&&e.nodeType===K.text&&(t=e.textContent,h([he,de,ue],(e=>{t=f(t,e," ")})),e.textContent!==t&&(u(i.removed,{element:e.cloneNode()}),e.textContent=t)),At("afterSanitizeElements",e,null),!1):(_t(e),!0)},St=function(e,t,i){if(Ue&&("id"===t||"name"===t)&&(i in n||i in lt))return!1;if(Le&&!Se[t]&&T(me,t));else if(Ce&&T(ge,t));else if(!be[t]||Se[t]){if(!(Ct(e)&&(Ae.tagNameCheck instanceof RegExp&&T(Ae.tagNameCheck,e)||Ae.tagNameCheck instanceof Function&&Ae.tagNameCheck(e))&&(Ae.attributeNameCheck instanceof RegExp&&T(Ae.attributeNameCheck,t)||Ae.attributeNameCheck instanceof Function&&Ae.attributeNameCheck(t))||"is"===t&&Ae.allowCustomizedBuiltInElements&&(Ae.tagNameCheck instanceof RegExp&&T(Ae.tagNameCheck,i)||Ae.tagNameCheck instanceof Function&&Ae.tagNameCheck(i))))return!1}else if($e[t]);else if(T(Ne,f(i,fe,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==_(i,"data:")||!Ye[e])if(xe&&!T(pe,f(i,fe,"")));else if(i)return!1;return!0},Ct=function(e){return"annotation-xml"!==e&&p(e,_e)},Lt=function(e){At("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be};let r=t.length;for(;r--;){const a=t[r],{name:o,namespaceURI:s,value:l}=a,c=ot(o);let u="value"===o?l:N(l);if(n.attrName=c,n.attrValue=u,n.keepAttr=!0,n.forceKeepAttr=void 0,At("uponSanitizeAttribute",e,n),u=n.attrValue,Ie&&T(/((--!?|])>)|<\/(style|title)/i,u)){Nt(o,e);continue}if(n.forceKeepAttr)continue;if(Nt(o,e),!n.keepAttr)continue;if(!Re&&T(/\/>/i,u)){Nt(o,e);continue}De&&h([he,de,ue],(e=>{u=f(u,e," ")}));const m=ot(e.nodeName);if(St(m,c,u)){if(!He||"id"!==c&&"name"!==c||(Nt(o,e),u=Ge+u),ie&&"object"==typeof W&&"function"==typeof W.getAttributeType)if(s);else switch(W.getAttributeType(m,c)){case"TrustedHTML":u=ie.createHTML(u);break;case"TrustedScriptURL":u=ie.createScriptURL(u)}try{s?e.setAttributeNS(s,o,u):e.setAttribute(o,u),bt(e)?_t(e):d(i.removed)}catch(e){}}}At("afterSanitizeAttributes",e,null)},xt=function e(t){let i=null;const n=Tt(t);for(At("beforeSanitizeShadowDOM",t,null);i=n.nextNode();)At("uponSanitizeShadowNode",i,null),vt(i)||(i.content instanceof l&&e(i.content),Lt(i));At("afterSanitizeShadowDOM",t,null)};return i.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,a=null,o=null,s=null;if(et=!e,et&&(e="\x3c!--\x3e"),"string"!=typeof e&&!yt(e)){if("function"!=typeof e.toString)throw b("toString is not a function");if("string"!=typeof(e=e.toString()))throw b("dirty is not a string, aborting")}if(!i.isSupported)return e;if(we||ht(t),i.removed=[],"string"==typeof e&&(We=!1),We){if(e.nodeName){const t=ot(e.nodeName);if(!Ee[t]||ve[t])throw b("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof y)n=Et("\x3c!----\x3e"),a=n.ownerDocument.importNode(e,!0),a.nodeType===K.element&&"BODY"===a.nodeName||"HTML"===a.nodeName?n=a:n.appendChild(a);else{if(!Me&&!De&&!Oe&&-1===e.indexOf("<"))return ie&&Be?ie.createHTML(e):e;if(n=Et(e),!n)return Me?null:Be?ne:""}n&&Pe&&_t(n.firstChild);const c=Tt(We?e:n);for(;o=c.nextNode();)vt(o)||(o.content instanceof l&&xt(o.content),Lt(o));if(We)return e;if(Me){if(ke)for(s=oe.call(n.ownerDocument);n.firstChild;)s.appendChild(n.firstChild);else s=n;return(be.shadowroot||be.shadowrootmode)&&(s=le.call(r,s,!0)),s}let d=Oe?n.outerHTML:n.innerHTML;return Oe&&Ee["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&T(V,n.ownerDocument.doctype.name)&&(d="\n"+d),De&&h([he,de,ue],(e=>{d=f(d,e," ")})),ie&&Be?ie.createHTML(d):d},i.setConfig=function(){ht(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),we=!0},i.clearConfig=function(){st=null,we=!1},i.isValidAttribute=function(e,t,i){st||ht({});const n=ot(e),r=ot(t);return St(n,r,i)},i.addHook=function(e,t){"function"==typeof t&&(ce[e]=ce[e]||[],u(ce[e],t))},i.removeHook=function(e){if(ce[e])return d(ce[e])},i.removeHooks=function(e){ce[e]&&(ce[e]=[])},i.removeAllHooks=function(){ce={}},i}return Q()}()}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";i.r(n),i.d(n,{applyReaderable:()=>o,isReaderable:()=>a});var e=i(396),t=i(838),r=i.n(t);function a(){return(0,e.isProbablyReaderable)(document)}function o(){var t,i=document.cloneNode(!0),n=(t=i,new e.Readability(t).parse()),a=r().sanitize(n.content);a&&(document.body.innerHTML='
'+a+"
")}window.isReaderable=a,window.applyReaderable=o})(),n})())); \ No newline at end of file diff --git a/app/js/readability/dist/readability.min.js.gz b/app/js/readability/dist/readability.min.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..477fe80e600eb95e32e1793a97f1abc4083511ee GIT binary patch literal 18947 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 i14~VPh(H7tp@rde!j)-2v+) + + + + + readability [9 Jul 2024 at 10:42] + + + + + + + + +
+ + + \ No newline at end of file diff --git a/app/js/readability/dist/stats.json b/app/js/readability/dist/stats.json new file mode 100644 index 00000000..3feaf288 --- /dev/null +++ b/app/js/readability/dist/stats.json @@ -0,0 +1,1362 @@ +{ + "hash": "8d23fa454595d8aa7895", + "version": "5.92.1", + "time": 1715, + "builtAt": 1720514525488, + "publicPath": "auto", + "outputPath": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/dist", + "assetsByChunkName": { + "main": [ + "readability.min.js" + ] + }, + "assets": [ + { + "type": "asset", + "name": "readability.min.js", + "size": 55954, + "emitted": true, + "comparedForEmit": false, + "cached": false, + "info": { + "javascriptModule": false, + "minimized": true, + "related": { + "gzipped": "readability.min.js.gz" + }, + "size": 55954 + }, + "chunkNames": [ + "main" + ], + "chunkIdHints": [], + "auxiliaryChunkNames": [], + "auxiliaryChunkIdHints": [], + "filteredRelated": 0, + "related": [ + { + "type": "gzipped", + "name": "readability.min.js.gz", + "size": 18947, + "emitted": true, + "comparedForEmit": false, + "cached": false, + "info": { + "compressed": true, + "size": 18947 + }, + "chunkNames": [], + "chunkIdHints": [], + "auxiliaryChunkNames": [], + "auxiliaryChunkIdHints": [], + "related": {}, + "chunks": [], + "auxiliaryChunks": [], + "isOverSizeLimit": false + } + ], + "chunks": [ + 792 + ], + "auxiliaryChunks": [], + "isOverSizeLimit": false + } + ], + "chunks": [ + { + "rendered": true, + "initial": true, + "entry": true, + "recorded": false, + "size": 157907, + "sizes": { + "javascript": 156970, + "runtime": 937 + }, + "names": [ + "main" + ], + "idHints": [], + "runtime": [ + "main" + ], + "files": [ + "readability.min.js" + ], + "auxiliaryFiles": [], + "hash": "55ea9d503085bb5260ad", + "childrenByOrder": {}, + "id": 792, + "siblings": [], + "parents": [], + "children": [], + "modules": [ + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 4162, + "sizes": { + "javascript": 4162 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "name": "./node_modules/@mozilla/readability/Readability-readerable.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "index": 3, + "preOrderIndex": 3, + "index2": 1, + "postOrderIndex": 1, + "cacheable": true, + "optional": false, + "orphan": false, + "dependent": true, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "issuerName": "./node_modules/@mozilla/readability/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + }, + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "name": "./node_modules/@mozilla/readability/index.js", + "id": 396 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 804, + "issuerId": 396, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "module": "./node_modules/@mozilla/readability/Readability-readerable.js", + "moduleName": "./node_modules/@mozilla/readability/Readability-readerable.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "resolvedModule": "./node_modules/@mozilla/readability/Readability-readerable.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "107:2-16", + "moduleId": 804, + "resolvedModuleId": 804 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "module": "./node_modules/@mozilla/readability/index.js", + "moduleName": "./node_modules/@mozilla/readability/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "resolvedModule": "./node_modules/@mozilla/readability/index.js", + "type": "cjs require", + "active": true, + "explanation": "", + "userRequest": "./Readability-readerable", + "loc": "3:27-62", + "moduleId": 396, + "resolvedModuleId": 396 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: module.exports is used directly at 107:2-16", + "Statement (VariableDeclaration) with side effects in source code at 22:0-27:2", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 2 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 84033, + "sizes": { + "javascript": 84033 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "name": "./node_modules/@mozilla/readability/Readability.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "index": 2, + "preOrderIndex": 2, + "index2": 0, + "postOrderIndex": 0, + "cacheable": true, + "optional": false, + "orphan": false, + "dependent": true, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "issuerName": "./node_modules/@mozilla/readability/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + }, + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "name": "./node_modules/@mozilla/readability/index.js", + "id": 396 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 238, + "issuerId": 396, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "module": "./node_modules/@mozilla/readability/Readability.js", + "moduleName": "./node_modules/@mozilla/readability/Readability.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "resolvedModule": "./node_modules/@mozilla/readability/Readability.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "2313:2-16", + "moduleId": 238, + "resolvedModuleId": 238 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "module": "./node_modules/@mozilla/readability/index.js", + "moduleName": "./node_modules/@mozilla/readability/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "resolvedModule": "./node_modules/@mozilla/readability/index.js", + "type": "cjs require", + "active": true, + "explanation": "", + "userRequest": "./Readability", + "loc": "2:18-42", + "moduleId": 396, + "resolvedModuleId": 396 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: module.exports is used directly at 2313:2-16", + "Statement (ExpressionStatement) with side effects in source code at 98:0-2309:2", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 2 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 226, + "sizes": { + "javascript": 226 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "name": "./node_modules/@mozilla/readability/index.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "index": 1, + "preOrderIndex": 1, + "index2": 2, + "postOrderIndex": 2, + "cacheable": true, + "optional": false, + "orphan": false, + "dependent": true, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "issuerName": "./src/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 396, + "issuerId": 954, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "module": "./node_modules/@mozilla/readability/index.js", + "moduleName": "./node_modules/@mozilla/readability/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "resolvedModule": "./node_modules/@mozilla/readability/index.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "5:0-14", + "moduleId": 396, + "resolvedModuleId": 396 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony side effect evaluation", + "active": true, + "explanation": "", + "userRequest": "@mozilla/readability", + "loc": "1:0-73", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony import specifier", + "active": true, + "explanation": "", + "userRequest": "@mozilla/readability", + "loc": "4:9-29", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony import specifier", + "active": true, + "explanation": "", + "userRequest": "@mozilla/readability", + "loc": "7:19-30", + "moduleId": 954, + "resolvedModuleId": 954 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: module.exports is used directly at 5:0-14", + "Statement (VariableDeclaration) with side effects in source code at 2:0-43", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 1 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 67137, + "sizes": { + "javascript": 67137 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "name": "./node_modules/dompurify/dist/purify.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "index": 4, + "preOrderIndex": 4, + "index2": 3, + "postOrderIndex": 3, + "cacheable": true, + "optional": false, + "orphan": false, + "dependent": true, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "issuerName": "./src/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 838, + "issuerId": 954, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony side effect evaluation", + "active": true, + "explanation": "", + "userRequest": "dompurify", + "loc": "2:0-34", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony import specifier", + "active": true, + "explanation": "", + "userRequest": "dompurify", + "loc": "14:15-33", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "module": "./node_modules/dompurify/dist/purify.js", + "moduleName": "./node_modules/dompurify/dist/purify.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "resolvedModule": "./node_modules/dompurify/dist/purify.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "4:65-79", + "moduleId": 838, + "resolvedModuleId": 838 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "module": "./node_modules/dompurify/dist/purify.js", + "moduleName": "./node_modules/dompurify/dist/purify.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "resolvedModule": "./node_modules/dompurify/dist/purify.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "7:3-7", + "moduleId": 838, + "resolvedModuleId": 838 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: this is used directly at 7:3-7", + "CommonJS bailout: module.exports is used directly at 4:65-79", + "Statement (ExpressionStatement) with side effects in source code at 3:0-1561:4", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 1 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 1412, + "sizes": { + "javascript": 1412 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "index": 0, + "preOrderIndex": 0, + "index2": 4, + "postOrderIndex": 4, + "cacheable": true, + "optional": false, + "orphan": false, + "dependent": false, + "issuer": null, + "issuerName": null, + "issuerPath": null, + "failed": false, + "errors": 0, + "warnings": 0, + "id": 954, + "issuerId": null, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": null, + "module": null, + "moduleName": null, + "resolvedModuleIdentifier": null, + "resolvedModule": null, + "type": "entry", + "active": true, + "explanation": "", + "userRequest": "./src/index.js", + "loc": "main", + "moduleId": null, + "resolvedModuleId": null + }, + { + "moduleIdentifier": null, + "module": null, + "moduleName": null, + "resolvedModuleIdentifier": null, + "resolvedModule": null, + "type": null, + "active": true, + "explanation": "used as library export", + "userRequest": null, + "moduleId": null, + "resolvedModuleId": null + } + ], + "usedExports": true, + "providedExports": [ + "applyReaderable", + "isReaderable" + ], + "optimizationBailout": [ + "Statement (ExpressionStatement) with side effects in source code at 33:0-35", + "ModuleConcatenation bailout: Cannot concat with ./node_modules/@mozilla/readability/index.js: Module is not an ECMAScript module", + "ModuleConcatenation bailout: Cannot concat with ./node_modules/dompurify/dist/purify.js: Module is not an ECMAScript module" + ], + "depth": 0 + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 267, + "sizes": { + "runtime": 267 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/compat get default export", + "name": "webpack/runtime/compat get default export", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "dependent": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 308, + "sizes": { + "runtime": 308 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/define property getters", + "name": "webpack/runtime/define property getters", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "dependent": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 88, + "sizes": { + "runtime": 88 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/hasOwnProperty shorthand", + "name": "webpack/runtime/hasOwnProperty shorthand", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "dependent": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 274, + "sizes": { + "runtime": 274 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/make namespace object", + "name": "webpack/runtime/make namespace object", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "dependent": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + } + ], + "origins": [ + { + "module": "", + "moduleIdentifier": "", + "moduleName": "", + "loc": "main", + "request": "./src/index.js" + } + ] + } + ], + "modules": [ + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 1412, + "sizes": { + "javascript": 1412 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "index": 0, + "preOrderIndex": 0, + "index2": 4, + "postOrderIndex": 4, + "cacheable": true, + "optional": false, + "orphan": false, + "issuer": null, + "issuerName": null, + "issuerPath": null, + "failed": false, + "errors": 0, + "warnings": 0, + "id": 954, + "issuerId": null, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": null, + "module": null, + "moduleName": null, + "resolvedModuleIdentifier": null, + "resolvedModule": null, + "type": "entry", + "active": true, + "explanation": "", + "userRequest": "./src/index.js", + "loc": "main", + "moduleId": null, + "resolvedModuleId": null + }, + { + "moduleIdentifier": null, + "module": null, + "moduleName": null, + "resolvedModuleIdentifier": null, + "resolvedModule": null, + "type": null, + "active": true, + "explanation": "used as library export", + "userRequest": null, + "moduleId": null, + "resolvedModuleId": null + } + ], + "usedExports": true, + "providedExports": [ + "applyReaderable", + "isReaderable" + ], + "optimizationBailout": [ + "Statement (ExpressionStatement) with side effects in source code at 33:0-35", + "ModuleConcatenation bailout: Cannot concat with ./node_modules/@mozilla/readability/index.js: Module is not an ECMAScript module", + "ModuleConcatenation bailout: Cannot concat with ./node_modules/dompurify/dist/purify.js: Module is not an ECMAScript module" + ], + "depth": 0 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 226, + "sizes": { + "javascript": 226 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "name": "./node_modules/@mozilla/readability/index.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "index": 1, + "preOrderIndex": 1, + "index2": 2, + "postOrderIndex": 2, + "cacheable": true, + "optional": false, + "orphan": false, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "issuerName": "./src/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 396, + "issuerId": 954, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "module": "./node_modules/@mozilla/readability/index.js", + "moduleName": "./node_modules/@mozilla/readability/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "resolvedModule": "./node_modules/@mozilla/readability/index.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "5:0-14", + "moduleId": 396, + "resolvedModuleId": 396 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony side effect evaluation", + "active": true, + "explanation": "", + "userRequest": "@mozilla/readability", + "loc": "1:0-73", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony import specifier", + "active": true, + "explanation": "", + "userRequest": "@mozilla/readability", + "loc": "4:9-29", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony import specifier", + "active": true, + "explanation": "", + "userRequest": "@mozilla/readability", + "loc": "7:19-30", + "moduleId": 954, + "resolvedModuleId": 954 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: module.exports is used directly at 5:0-14", + "Statement (VariableDeclaration) with side effects in source code at 2:0-43", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 1 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 67137, + "sizes": { + "javascript": 67137 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "name": "./node_modules/dompurify/dist/purify.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "index": 4, + "preOrderIndex": 4, + "index2": 3, + "postOrderIndex": 3, + "cacheable": true, + "optional": false, + "orphan": false, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "issuerName": "./src/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 838, + "issuerId": 954, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony side effect evaluation", + "active": true, + "explanation": "", + "userRequest": "dompurify", + "loc": "2:0-34", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "module": "./src/index.js", + "moduleName": "./src/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "resolvedModule": "./src/index.js", + "type": "harmony import specifier", + "active": true, + "explanation": "", + "userRequest": "dompurify", + "loc": "14:15-33", + "moduleId": 954, + "resolvedModuleId": 954 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "module": "./node_modules/dompurify/dist/purify.js", + "moduleName": "./node_modules/dompurify/dist/purify.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "resolvedModule": "./node_modules/dompurify/dist/purify.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "4:65-79", + "moduleId": 838, + "resolvedModuleId": 838 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "module": "./node_modules/dompurify/dist/purify.js", + "moduleName": "./node_modules/dompurify/dist/purify.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/dompurify/dist/purify.js", + "resolvedModule": "./node_modules/dompurify/dist/purify.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "7:3-7", + "moduleId": 838, + "resolvedModuleId": 838 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: this is used directly at 7:3-7", + "CommonJS bailout: module.exports is used directly at 4:65-79", + "Statement (ExpressionStatement) with side effects in source code at 3:0-1561:4", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 1 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 84033, + "sizes": { + "javascript": 84033 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "name": "./node_modules/@mozilla/readability/Readability.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "index": 2, + "preOrderIndex": 2, + "index2": 0, + "postOrderIndex": 0, + "cacheable": true, + "optional": false, + "orphan": false, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "issuerName": "./node_modules/@mozilla/readability/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + }, + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "name": "./node_modules/@mozilla/readability/index.js", + "id": 396 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 238, + "issuerId": 396, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "module": "./node_modules/@mozilla/readability/Readability.js", + "moduleName": "./node_modules/@mozilla/readability/Readability.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability.js", + "resolvedModule": "./node_modules/@mozilla/readability/Readability.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "2313:2-16", + "moduleId": 238, + "resolvedModuleId": 238 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "module": "./node_modules/@mozilla/readability/index.js", + "moduleName": "./node_modules/@mozilla/readability/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "resolvedModule": "./node_modules/@mozilla/readability/index.js", + "type": "cjs require", + "active": true, + "explanation": "", + "userRequest": "./Readability", + "loc": "2:18-42", + "moduleId": 396, + "resolvedModuleId": 396 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: module.exports is used directly at 2313:2-16", + "Statement (ExpressionStatement) with side effects in source code at 98:0-2309:2", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 2 + }, + { + "type": "module", + "moduleType": "javascript/auto", + "layer": null, + "size": 4162, + "sizes": { + "javascript": 4162 + }, + "built": true, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "name": "./node_modules/@mozilla/readability/Readability-readerable.js", + "nameForCondition": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "index": 3, + "preOrderIndex": 3, + "index2": 1, + "postOrderIndex": 1, + "cacheable": true, + "optional": false, + "orphan": false, + "issuer": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "issuerName": "./node_modules/@mozilla/readability/index.js", + "issuerPath": [ + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/babel-loader/lib/index.js??ruleSet[1].rules[0].use!/home/fafre/Repos/kagi_bang_bang/app/js/readability/src/index.js", + "name": "./src/index.js", + "id": 954 + }, + { + "identifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "name": "./node_modules/@mozilla/readability/index.js", + "id": 396 + } + ], + "failed": false, + "errors": 0, + "warnings": 0, + "id": 804, + "issuerId": 396, + "chunks": [ + 792 + ], + "assets": [], + "reasons": [ + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "module": "./node_modules/@mozilla/readability/Readability-readerable.js", + "moduleName": "./node_modules/@mozilla/readability/Readability-readerable.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/Readability-readerable.js", + "resolvedModule": "./node_modules/@mozilla/readability/Readability-readerable.js", + "type": "cjs self exports reference", + "active": true, + "explanation": "", + "userRequest": null, + "loc": "107:2-16", + "moduleId": 804, + "resolvedModuleId": 804 + }, + { + "moduleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "module": "./node_modules/@mozilla/readability/index.js", + "moduleName": "./node_modules/@mozilla/readability/index.js", + "resolvedModuleIdentifier": "/home/fafre/Repos/kagi_bang_bang/app/js/readability/node_modules/@mozilla/readability/index.js", + "resolvedModule": "./node_modules/@mozilla/readability/index.js", + "type": "cjs require", + "active": true, + "explanation": "", + "userRequest": "./Readability-readerable", + "loc": "3:27-62", + "moduleId": 396, + "resolvedModuleId": 396 + } + ], + "usedExports": null, + "providedExports": null, + "optimizationBailout": [ + "CommonJS bailout: module.exports is used directly at 107:2-16", + "Statement (VariableDeclaration) with side effects in source code at 22:0-27:2", + "ModuleConcatenation bailout: Module is not an ECMAScript module" + ], + "depth": 2 + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 267, + "sizes": { + "runtime": 267 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/compat get default export", + "name": "webpack/runtime/compat get default export", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 308, + "sizes": { + "runtime": 308 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/define property getters", + "name": "webpack/runtime/define property getters", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 88, + "sizes": { + "runtime": 88 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/hasOwnProperty shorthand", + "name": "webpack/runtime/hasOwnProperty shorthand", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + }, + { + "type": "module", + "moduleType": "runtime", + "layer": null, + "size": 274, + "sizes": { + "runtime": 274 + }, + "built": false, + "codeGenerated": true, + "buildTimeExecuted": false, + "cached": false, + "identifier": "webpack/runtime/make namespace object", + "name": "webpack/runtime/make namespace object", + "nameForCondition": null, + "index": null, + "preOrderIndex": null, + "index2": null, + "postOrderIndex": null, + "optional": false, + "orphan": false, + "failed": false, + "errors": 0, + "warnings": 0, + "id": "", + "chunks": [ + 792 + ], + "assets": [], + "reasons": [], + "usedExports": null, + "providedExports": [], + "optimizationBailout": [], + "depth": null + } + ], + "entrypoints": { + "main": { + "name": "main", + "chunks": [ + 792 + ], + "assets": [ + { + "name": "readability.min.js", + "size": 55954 + } + ], + "filteredAssets": 0, + "assetsSize": 55954, + "auxiliaryAssets": [], + "filteredAuxiliaryAssets": 0, + "auxiliaryAssetsSize": 0, + "children": {}, + "childAssets": {}, + "isOverSizeLimit": false + } + }, + "namedChunkGroups": { + "main": { + "name": "main", + "chunks": [ + 792 + ], + "assets": [ + { + "name": "readability.min.js", + "size": 55954 + } + ], + "filteredAssets": 0, + "assetsSize": 55954, + "auxiliaryAssets": [], + "filteredAuxiliaryAssets": 0, + "auxiliaryAssetsSize": 0, + "children": {}, + "childAssets": {}, + "isOverSizeLimit": false + } + }, + "errors": [], + "errorsCount": 0, + "warnings": [], + "warningsCount": 0, + "children": [] +} \ No newline at end of file diff --git a/app/js/readability/package-lock.json b/app/js/readability/package-lock.json new file mode 100644 index 00000000..b8cf6af2 --- /dev/null +++ b/app/js/readability/package-lock.json @@ -0,0 +1,4537 @@ +{ + "name": "readability", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "readability", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@mozilla/readability": "^0.5.0", + "dompurify": "^3.1.6" + }, + "devDependencies": { + "@babel/core": "^7.24.7", + "@babel/preset-env": "^7.24.7", + "babel-loader": "^9.1.3", + "clean-webpack-plugin": "^4.0.0", + "compression-webpack-plugin": "^11.1.0", + "terser-webpack-plugin": "^5.3.10", + "webpack": "^5.92.1", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-cli": "^5.1.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", + "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", + "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", + "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", + "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", + "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", + "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mozilla/readability": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@mozilla/readability/-/readability-0.5.0.tgz", + "integrity": "sha512-Z+CZ3QaosfFaTqvhQsIktyGrjFjSC0Fa4EMph4mqKnWhmyoGICsV/8QK+8HpXut6zV7zwfWwqDmEjtk1Qf6EgQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-loader/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/babel-loader/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001640", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", + "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "del": "^4.1.1" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.0 <6.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" + }, + "node_modules/compression-webpack-plugin": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz", + "integrity": "sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/compression-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dompurify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", + "license": "(MPL-2.0 OR Apache-2.0)" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.820", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.820.tgz", + "integrity": "sha512-kK/4O/YunacfboFEk/BDf7VO1HoPmDudLTJAU9NmXIOSjsV7qVIX3OrI4REZo0VmdqhcpUcncQc6N8Q3aEXlHg==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, + "license": "ISC" + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/app/js/readability/package.json b/app/js/readability/package.json new file mode 100644 index 00000000..690b71ac --- /dev/null +++ b/app/js/readability/package.json @@ -0,0 +1,27 @@ +{ + "name": "readability", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "@mozilla/readability": "^0.5.0", + "dompurify": "^3.1.6" + }, + "devDependencies": { + "@babel/core": "^7.24.7", + "@babel/preset-env": "^7.24.7", + "babel-loader": "^9.1.3", + "clean-webpack-plugin": "^4.0.0", + "compression-webpack-plugin": "^11.1.0", + "terser-webpack-plugin": "^5.3.10", + "webpack": "^5.92.1", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-cli": "^5.1.4" + } +} diff --git a/app/js/readability/src/index.js b/app/js/readability/src/index.js new file mode 100644 index 00000000..44d820dc --- /dev/null +++ b/app/js/readability/src/index.js @@ -0,0 +1,39 @@ +import { Readability, isProbablyReaderable } from '@mozilla/readability'; +import DOMPurify from 'dompurify'; + +function isReaderable() { + return isProbablyReaderable(document); +} + +function parseReaderable(doc) { + const reader = new Readability(doc); + const article = reader.parse(); + return article; +} + +function applyReaderable() { + const clonedDoc = document.cloneNode(true); + const article = parseReaderable(clonedDoc); + const markup = DOMPurify.sanitize(article.content); + + // console.log('article title: ', parsed.title); + // console.log('HTML string of processed article content: ', parsed.content); + // console.log('text content of the article, with all the HTML tags removed: ', parsed.textContent); + // console.log('length of an article, in characters: ', parsed.length); + // console.log('article description, or short excerpt from the content: ', parsed.excerpt); + // console.log('author metadata: ', parsed.byline); + // console.log('content direction: ', parsed.dir); + // console.log('name of the site: ', parsed.siteName); + // console.log('content language: ', parsed.lang); + // console.log('published time: ', parsed.publishedTime); + + if (markup) { + document.body.innerHTML = '
' + markup + '
'; + } +} + +// Attach functions to the window object +window.isReaderable = isReaderable; +window.applyReaderable = applyReaderable; + +export { isReaderable, applyReaderable }; diff --git a/app/js/readability/webpack.config.js b/app/js/readability/webpack.config.js new file mode 100644 index 00000000..73194482 --- /dev/null +++ b/app/js/readability/webpack.config.js @@ -0,0 +1,54 @@ +const path = require('path'); +const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); +const TerserPlugin = require('terser-webpack-plugin'); +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); +const CompressionPlugin = require('compression-webpack-plugin'); + +module.exports = { + entry: './src/index.js', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'readability.min.js', + library: 'ReadabilityBundle', + libraryTarget: 'umd', + globalObject: 'this' + }, + mode: 'production', + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'] + } + } + } + ] + }, + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + extractComments: false + }) + ], + usedExports: true, + sideEffects: true + }, + plugins: [ + new CleanWebpackPlugin(), + new BundleAnalyzerPlugin({ + analyzerMode: 'static', + openAnalyzer: false, + generateStatsFile: true, + statsOptions: { source: false } + }), + new CompressionPlugin({ + algorithm: 'gzip', + test: /\.js$/ + }) + ] +}; diff --git a/app/lib/domain/services/app_initialization.dart b/app/lib/domain/services/app_initialization.dart index d7f8b099..304df72e 100644 --- a/app/lib/domain/services/app_initialization.dart +++ b/app/lib/domain/services/app_initialization.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:bang_navigator/features/about/data/repositories/package_info_repository.dart'; import 'package:bang_navigator/features/bangs/data/models/bang.dart'; import 'package:bang_navigator/features/bangs/domain/repositories/sync.dart'; @@ -6,6 +8,7 @@ import 'package:bang_navigator/features/content_block/domain/repositories/sync.d import 'package:bang_navigator/features/search_browser/domain/services/session.dart'; import 'package:bang_navigator/features/settings/data/models/settings.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart'; +import 'package:bang_navigator/features/web_view/domain/providers.dart'; import 'package:exceptions/exceptions.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -90,6 +93,8 @@ class AppInitializationService extends _$AppInitializationService { final settings = await ref.read(settingsRepositoryProvider.future); final errors = []; + unawaited(ref.read(readerabilityScriptProvider.future)); + await _initPackageInfo(); final bangSyncResults = await _initBangs(); diff --git a/app/lib/domain/services/app_initialization.g.dart b/app/lib/domain/services/app_initialization.g.dart index ce6e90d5..970d3843 100644 --- a/app/lib/domain/services/app_initialization.g.dart +++ b/app/lib/domain/services/app_initialization.g.dart @@ -7,7 +7,7 @@ part of 'app_initialization.dart'; // ************************************************************************** String _$appInitializationServiceHash() => - r'33b432bd7a2f72f83d0b22771348ebf6e4934a92'; + r'55484697ec5aadc60a8d92b5b7cea9e39457c67a'; /// See also [AppInitializationService]. @ProviderFor(AppInitializationService) diff --git a/app/lib/features/search_browser/presentation/screens/browser.dart b/app/lib/features/search_browser/presentation/screens/browser.dart index b5ddab33..db381935 100644 --- a/app/lib/features/search_browser/presentation/screens/browser.dart +++ b/app/lib/features/search_browser/presentation/screens/browser.dart @@ -15,15 +15,15 @@ import 'package:bang_navigator/features/search_browser/presentation/widgets/tabs import 'package:bang_navigator/features/settings/data/models/settings.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/web_view/domain/repositories/web_view.dart'; +import 'package:bang_navigator/features/web_view/presentation/controllers/readerability.dart'; import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_page_dialog.dart'; -import 'package:bang_navigator/presentation/hooks/listenable_callback.dart'; import 'package:bang_navigator/presentation/hooks/overlay_portal_controller.dart'; +import 'package:bang_navigator/presentation/widgets/animate_gradient_shader.dart'; import 'package:bang_navigator/presentation/widgets/animated_indexed_stack.dart'; import 'package:bang_navigator/utils/ui_helper.dart' as ui_helper; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -68,7 +68,6 @@ class KagiScreen extends HookConsumerWidget { final menuController = useMemoized(() => MenuController()); final lastBackButtonPress = useRef(null); - final webViewController = useRef(null); final overlayController = useOverlayPortalController(); @@ -111,7 +110,7 @@ class KagiScreen extends HookConsumerWidget { ref.read(overlayDialogProvider.notifier).show( WebPageDialog( page: page, - webViewController: webViewController.value, + webViewController: page.controller, onDismiss: ref .read(overlayDialogProvider.notifier) .dismiss, @@ -181,6 +180,92 @@ class KagiScreen extends HookConsumerWidget { }, ), actions: [ + if (activeWebView != null) + HookConsumer( + builder: (context, ref, child) { + final colorScheme = Theme.of(context).colorScheme; + + final controller = + useListenable(activeWebView.page).value.controller; + final readerabilityState = ref.watch( + readerabilityControllerProvider(controller), + ); + + final isReaderable = useValueListenable( + activeWebView.isReaderable, + ); + + final readerableApplied = useValueListenable( + activeWebView.readerableApplied, + ); + + final icon = useMemoized( + () => readerableApplied + ? Icon( + MdiIcons.bookOpen, + color: Theme.of(context).colorScheme.primary, + ) + : const Icon( + MdiIcons.bookOpenOutline, + color: Colors.white, + ), + [readerableApplied], + ); + + return Visibility( + visible: isReaderable == true || readerableApplied, + child: InkWell( + onTap: readerabilityState.isLoading + ? null + : () async { + final controller = + activeWebView.currentController; + + if (controller != null) { + final readabilityNotifier = ref.read( + readerabilityControllerProvider( + controller, + ).notifier, + ); + + if (readerableApplied) { + await activeWebView + .updateReaderableApplied(false); + } else { + await readabilityNotifier.applyReaderable(); + await activeWebView + .updateReaderableApplied(true); + } + } + }, + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 15.0, + horizontal: 8.0, + ), + child: readerabilityState.when( + data: (_) => icon, + error: (error, stackTrace) => SizedBox.shrink(), + loading: () => AnimateGradientShader( + duration: const Duration(milliseconds: 500), + primaryEnd: Alignment.bottomLeft, + secondaryEnd: Alignment.topRight, + primaryColors: [ + colorScheme.primary, + colorScheme.primaryContainer, + ], + secondaryColors: [ + colorScheme.secondary, + colorScheme.secondaryContainer, + ], + child: icon, + ), + ), + ), + ), + ); + }, + ), if (activeWebView != null && quickAction != null) InkWell( onTap: () async { @@ -319,7 +404,8 @@ class KagiScreen extends HookConsumerWidget { const Divider(), MenuItemButton( onPressed: () async { - final url = await webViewController.value?.getUrl(); + final url = + await activeWebView?.currentController?.getUrl(); if (url != null) { // ignore: use_build_context_synchronously await ui_helper.launchUrlFeedback(context, url); @@ -330,7 +416,8 @@ class KagiScreen extends HookConsumerWidget { ), MenuItemButton( onPressed: () async { - final url = await webViewController.value?.getUrl(); + final url = + await activeWebView?.currentController?.getUrl(); if (url != null) { await Share.shareUri(url); } @@ -341,7 +428,7 @@ class KagiScreen extends HookConsumerWidget { const Divider(), MenuItemButton( onPressed: () async { - await webViewController.value?.reload(); + await activeWebView?.currentController?.reload(); }, leadingIcon: const Icon(Icons.refresh), child: const Text('Reload'), @@ -362,7 +449,8 @@ class KagiScreen extends HookConsumerWidget { child: IconButton( onPressed: (history.canGoBack) ? () async { - await webViewController.value?.goBack(); + await activeWebView?.currentController + ?.goBack(); menuController.close(); } : null, @@ -374,7 +462,8 @@ class KagiScreen extends HookConsumerWidget { child: IconButton( onPressed: (history.canGoForward) ? () async { - await webViewController.value?.goForward(); + await activeWebView?.currentController + ?.goForward(); menuController.close(); } : null, @@ -404,9 +493,6 @@ class KagiScreen extends HookConsumerWidget { child: HookConsumer( builder: (context, ref, child) { final webViews = ref.watch(webViewRepositoryProvider); - useListenableCallback(activeWebView?.page, () { - webViewController.value = activeWebView?.page.value.controller; - }); return BackButtonListener( onBackButtonPressed: () async { diff --git a/app/lib/features/web_view/domain/providers.dart b/app/lib/features/web_view/domain/providers.dart index 2c4397e2..319357e0 100644 --- a/app/lib/features/web_view/domain/providers.dart +++ b/app/lib/features/web_view/domain/providers.dart @@ -1,7 +1,12 @@ +import 'dart:convert'; + import 'package:bang_navigator/features/content_block/domain/repositories/host.dart'; import 'package:bang_navigator/features/settings/data/models/settings.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart' show rootBundle; import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:universal_io/io.dart'; part 'providers.g.dart'; @@ -28,3 +33,13 @@ Stream?> blockContentHosts(BlockContentHostsRef ref) { .watchHosts(sources: enableHostList) .map((hosts) => hosts.toSet()); } + +@Riverpod(keepAlive: true) +Future readerabilityScript(ReaderabilityScriptRef ref) { + return rootBundle.load('assets/scripts/readability.min.js.gz').then( + (value) => compute( + (message) => utf8.decode(gzip.decode(message)), + value.buffer.asUint8List(), + ), + ); +} diff --git a/app/lib/features/web_view/domain/providers.g.dart b/app/lib/features/web_view/domain/providers.g.dart index ee2c2a1f..40efcb69 100644 --- a/app/lib/features/web_view/domain/providers.g.dart +++ b/app/lib/features/web_view/domain/providers.g.dart @@ -21,5 +21,21 @@ final blockContentHostsProvider = StreamProvider?>.internal( ); typedef BlockContentHostsRef = StreamProviderRef?>; +String _$readerabilityScriptHash() => + r'6fdd1aa920bc58c35ef9888158e572e25793870a'; + +/// See also [readerabilityScript]. +@ProviderFor(readerabilityScript) +final readerabilityScriptProvider = FutureProvider.internal( + readerabilityScript, + name: r'readerabilityScriptProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$readerabilityScriptHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef ReaderabilityScriptRef = FutureProviderRef; // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/app/lib/features/web_view/presentation/controllers/readerability.dart b/app/lib/features/web_view/presentation/controllers/readerability.dart new file mode 100644 index 00000000..20653c1d --- /dev/null +++ b/app/lib/features/web_view/presentation/controllers/readerability.dart @@ -0,0 +1,33 @@ +import 'package:bang_navigator/features/web_view/presentation/services/readerability_script.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'readerability.g.dart'; + +@Riverpod() +class ReaderabilityController extends _$ReaderabilityController { + late ReaderabilityScriptService _service; + + @override + FutureOr build(InAppWebViewController? controller) async { + _service = + ref.watch(readerabilityScriptServiceProvider(controller).notifier); + } + + Future isReaderable() async { + state = const AsyncLoading(); + final result = await AsyncValue.guard(() async { + return await _service.isReaderable(); + }); + state = result; + + return result.valueOrNull ?? false; + } + + Future applyReaderable() async { + state = const AsyncLoading(); + state = await AsyncValue.guard(() async { + await _service.applyReaderable(); + }); + } +} diff --git a/app/lib/features/web_view/presentation/controllers/readerability.g.dart b/app/lib/features/web_view/presentation/controllers/readerability.g.dart new file mode 100644 index 00000000..08e77ac4 --- /dev/null +++ b/app/lib/features/web_view/presentation/controllers/readerability.g.dart @@ -0,0 +1,178 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'readerability.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$readerabilityControllerHash() => + r'1260623c58d23511c3e4f58f97e18663be354ced'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +abstract class _$ReaderabilityController + extends BuildlessAutoDisposeAsyncNotifier { + late final InAppWebViewController? controller; + + FutureOr build( + InAppWebViewController? controller, + ); +} + +/// See also [ReaderabilityController]. +@ProviderFor(ReaderabilityController) +const readerabilityControllerProvider = ReaderabilityControllerFamily(); + +/// See also [ReaderabilityController]. +class ReaderabilityControllerFamily extends Family> { + /// See also [ReaderabilityController]. + const ReaderabilityControllerFamily(); + + /// See also [ReaderabilityController]. + ReaderabilityControllerProvider call( + InAppWebViewController? controller, + ) { + return ReaderabilityControllerProvider( + controller, + ); + } + + @override + ReaderabilityControllerProvider getProviderOverride( + covariant ReaderabilityControllerProvider provider, + ) { + return call( + provider.controller, + ); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'readerabilityControllerProvider'; +} + +/// See also [ReaderabilityController]. +class ReaderabilityControllerProvider + extends AutoDisposeAsyncNotifierProviderImpl { + /// See also [ReaderabilityController]. + ReaderabilityControllerProvider( + InAppWebViewController? controller, + ) : this._internal( + () => ReaderabilityController()..controller = controller, + from: readerabilityControllerProvider, + name: r'readerabilityControllerProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') + ? null + : _$readerabilityControllerHash, + dependencies: ReaderabilityControllerFamily._dependencies, + allTransitiveDependencies: + ReaderabilityControllerFamily._allTransitiveDependencies, + controller: controller, + ); + + ReaderabilityControllerProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.controller, + }) : super.internal(); + + final InAppWebViewController? controller; + + @override + FutureOr runNotifierBuild( + covariant ReaderabilityController notifier, + ) { + return notifier.build( + controller, + ); + } + + @override + Override overrideWith(ReaderabilityController Function() create) { + return ProviderOverride( + origin: this, + override: ReaderabilityControllerProvider._internal( + () => create()..controller = controller, + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + controller: controller, + ), + ); + } + + @override + AutoDisposeAsyncNotifierProviderElement + createElement() { + return _ReaderabilityControllerProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is ReaderabilityControllerProvider && + other.controller == controller; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, controller.hashCode); + + return _SystemHash.finish(hash); + } +} + +mixin ReaderabilityControllerRef on AutoDisposeAsyncNotifierProviderRef { + /// The parameter `controller` of this provider. + InAppWebViewController? get controller; +} + +class _ReaderabilityControllerProviderElement + extends AutoDisposeAsyncNotifierProviderElement with ReaderabilityControllerRef { + _ReaderabilityControllerProviderElement(super.provider); + + @override + InAppWebViewController? get controller => + (origin as ReaderabilityControllerProvider).controller; +} +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/app/lib/features/web_view/presentation/services/readerability_script.dart b/app/lib/features/web_view/presentation/services/readerability_script.dart new file mode 100644 index 00000000..0695dd2c --- /dev/null +++ b/app/lib/features/web_view/presentation/services/readerability_script.dart @@ -0,0 +1,55 @@ +import 'package:bang_navigator/features/web_view/domain/providers.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'readerability_script.g.dart'; + +@Riverpod() +class ReaderabilityScriptService extends _$ReaderabilityScriptService { + late Future _readerabilityScript; + + @override + Future build(InAppWebViewController? controller) async { + _readerabilityScript = ref.watch(readerabilityScriptProvider.future); + } + + Future _injectScript() async { + if (controller != null) { + await _readerabilityScript + .then((script) => controller!.evaluateJavascript(source: script)); + } + } + + Future ensureScriptInjected() async { + if (controller != null) { + final injected = await controller!.evaluateJavascript( + source: + "(typeof window !== 'undefined' && typeof window.isReaderable === 'function')", + ) as bool; + + if (!injected) { + await _injectScript(); + } + } + } + + Future isReaderable() async { + await ensureScriptInjected(); + + if (controller != null) { + return await controller!.evaluateJavascript( + source: 'isReaderable();', + ) as bool; + } + + return false; + } + + Future applyReaderable() async { + await ensureScriptInjected(); + + if (controller != null) { + await controller!.evaluateJavascript(source: 'applyReaderable();'); + } + } +} diff --git a/app/lib/features/web_view/presentation/services/readerability_script.g.dart b/app/lib/features/web_view/presentation/services/readerability_script.g.dart new file mode 100644 index 00000000..6a7ca54b --- /dev/null +++ b/app/lib/features/web_view/presentation/services/readerability_script.g.dart @@ -0,0 +1,179 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'readerability_script.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$readerabilityScriptServiceHash() => + r'780980e6771d8d860e261fb4bc41236a60e0aaab'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +abstract class _$ReaderabilityScriptService + extends BuildlessAutoDisposeAsyncNotifier { + late final InAppWebViewController? controller; + + FutureOr build( + InAppWebViewController? controller, + ); +} + +/// See also [ReaderabilityScriptService]. +@ProviderFor(ReaderabilityScriptService) +const readerabilityScriptServiceProvider = ReaderabilityScriptServiceFamily(); + +/// See also [ReaderabilityScriptService]. +class ReaderabilityScriptServiceFamily extends Family> { + /// See also [ReaderabilityScriptService]. + const ReaderabilityScriptServiceFamily(); + + /// See also [ReaderabilityScriptService]. + ReaderabilityScriptServiceProvider call( + InAppWebViewController? controller, + ) { + return ReaderabilityScriptServiceProvider( + controller, + ); + } + + @override + ReaderabilityScriptServiceProvider getProviderOverride( + covariant ReaderabilityScriptServiceProvider provider, + ) { + return call( + provider.controller, + ); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'readerabilityScriptServiceProvider'; +} + +/// See also [ReaderabilityScriptService]. +class ReaderabilityScriptServiceProvider + extends AutoDisposeAsyncNotifierProviderImpl { + /// See also [ReaderabilityScriptService]. + ReaderabilityScriptServiceProvider( + InAppWebViewController? controller, + ) : this._internal( + () => ReaderabilityScriptService()..controller = controller, + from: readerabilityScriptServiceProvider, + name: r'readerabilityScriptServiceProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') + ? null + : _$readerabilityScriptServiceHash, + dependencies: ReaderabilityScriptServiceFamily._dependencies, + allTransitiveDependencies: + ReaderabilityScriptServiceFamily._allTransitiveDependencies, + controller: controller, + ); + + ReaderabilityScriptServiceProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.controller, + }) : super.internal(); + + final InAppWebViewController? controller; + + @override + FutureOr runNotifierBuild( + covariant ReaderabilityScriptService notifier, + ) { + return notifier.build( + controller, + ); + } + + @override + Override overrideWith(ReaderabilityScriptService Function() create) { + return ProviderOverride( + origin: this, + override: ReaderabilityScriptServiceProvider._internal( + () => create()..controller = controller, + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + controller: controller, + ), + ); + } + + @override + AutoDisposeAsyncNotifierProviderElement + createElement() { + return _ReaderabilityScriptServiceProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is ReaderabilityScriptServiceProvider && + other.controller == controller; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, controller.hashCode); + + return _SystemHash.finish(hash); + } +} + +mixin ReaderabilityScriptServiceRef + on AutoDisposeAsyncNotifierProviderRef { + /// The parameter `controller` of this provider. + InAppWebViewController? get controller; +} + +class _ReaderabilityScriptServiceProviderElement + extends AutoDisposeAsyncNotifierProviderElement with ReaderabilityScriptServiceRef { + _ReaderabilityScriptServiceProviderElement(super.provider); + + @override + InAppWebViewController? get controller => + (origin as ReaderabilityScriptServiceProvider).controller; +} +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/app/lib/features/web_view/presentation/widgets/web_view.dart b/app/lib/features/web_view/presentation/widgets/web_view.dart index 24745e99..584a52de 100644 --- a/app/lib/features/web_view/presentation/widgets/web_view.dart +++ b/app/lib/features/web_view/presentation/widgets/web_view.dart @@ -13,6 +13,7 @@ import 'package:bang_navigator/features/settings/data/models/settings.dart'; import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart'; import 'package:bang_navigator/features/web_view/domain/entities/web_view_page.dart'; import 'package:bang_navigator/features/web_view/domain/providers.dart'; +import 'package:bang_navigator/features/web_view/presentation/controllers/readerability.dart'; import 'package:bang_navigator/features/web_view/presentation/controllers/switch_new_tab.dart'; import 'package:bang_navigator/features/web_view/presentation/widgets/web_page_dialog.dart'; import 'package:bang_navigator/features/web_view/utils/download_helper.dart'; @@ -36,16 +37,45 @@ const _webViewSupportedSchemes = [ ]; class WebView extends StatefulHookConsumerWidget { - final ValueNotifier _valueNotifier; + final ValueNotifier _pageNotifier; - ValueListenable get page => _valueNotifier; + final ValueNotifier _isReaderable; + final ValueNotifier _readerableApplied; + + ValueListenable get page => _pageNotifier; + + /// Don't cache this value as it depends on current value of a ValueListenable + InAppWebViewController? get currentController => + _pageNotifier.value.controller; + + ValueListenable get isReaderable => _isReaderable; + ValueListenable get readerableApplied => _readerableApplied; void updatePage(WebViewPage Function(WebViewPage page) update) { - _valueNotifier.value = update(_valueNotifier.value); + _pageNotifier.value = update(_pageNotifier.value); + } + + void resetReaderable() { + _isReaderable.value = null; + _readerableApplied.value = false; + } + + Future updateReaderableApplied(bool value) async { + if (value == false) { + await _pageNotifier.value.controller?.reload(); + } + + _readerableApplied.value = value; + } + + void updateIsReaderable(bool value) { + _isReaderable.value = value; } WebView({required WebViewPage tab}) - : _valueNotifier = ValueNotifier(tab), + : _pageNotifier = ValueNotifier(tab), + _isReaderable = ValueNotifier(null), + _readerableApplied = ValueNotifier(false), super(key: tab.key); @override @@ -128,7 +158,10 @@ class _WebViewState extends ConsumerState { _onLoadStopDebounce?.cancel(); _periodicScreenshotUpdate?.cancel(); - widget._valueNotifier.dispose(); + widget._pageNotifier.dispose(); + widget._isReaderable.dispose(); + widget._readerableApplied.dispose(); + logger.i('Disposed ${widget.key} (${widget.page.value.title})'); } @@ -340,8 +373,10 @@ class _WebViewState extends ConsumerState { ), ); } + + widget.resetReaderable(); }, - onLoadStop: (controller, url) { + onLoadStop: (controller, url) async { if (url != null) { widget.updatePage((page) => page.copyWith.url(url)); } @@ -365,6 +400,12 @@ class _WebViewState extends ConsumerState { }); }); }); + + final readabilityNotifier = ref.read( + readerabilityControllerProvider(controller).notifier, + ); + + widget.updateIsReaderable(await readabilityNotifier.isReaderable()); }, onUpdateVisitedHistory: (controller, url, isReload) async { if (isReload != true) { diff --git a/app/lib/presentation/widgets/animate_gradient_shader.dart b/app/lib/presentation/widgets/animate_gradient_shader.dart new file mode 100644 index 00000000..08ea2362 --- /dev/null +++ b/app/lib/presentation/widgets/animate_gradient_shader.dart @@ -0,0 +1,219 @@ +import 'package:flutter/material.dart'; + +class AnimateGradientShader extends StatefulWidget { + const AnimateGradientShader({ + super.key, + required this.primaryColors, + required this.secondaryColors, + this.child, + this.primaryBegin = Alignment.topLeft, + this.primaryEnd = Alignment.topRight, + this.secondaryBegin = Alignment.bottomLeft, + this.secondaryEnd = Alignment.bottomRight, + this.primaryBeginGeometry, + this.primaryEndGeometry, + this.secondaryBeginGeometry, + this.secondaryEndGeometry, + this.textDirectionForGeometry = TextDirection.ltr, + this.controller, + this.duration = const Duration(seconds: 4), + this.animateAlignments = true, + this.reverse = true, + }) : assert(primaryColors.length >= 2), + assert(primaryColors.length == secondaryColors.length); + + /// [controller]: pass this to have a fine control over the [Animation] + final AnimationController? controller; + + /// [duration]: Time to switch between [Gradient]. + /// By default its value is [Duration(seconds:4)] + final Duration duration; + + /// [primaryColors]: These will be the starting colors of the [Animation]. + final List primaryColors; + + /// [secondaryColors]: These Colors are those in which the [primaryColors] will transition into. + final List secondaryColors; + + /// [primaryBegin]: This is begin [Alignment] for [primaryColors]. + /// By default its value is [Alignment.topLeft] + final Alignment primaryBegin; + + /// [primaryBegin]: This is end [Alignment] for [primaryColors]. + /// By default its value is [Alignment.topRight] + final Alignment primaryEnd; + + /// [secondaryBegin]: This is begin [Alignment] for [secondaryColors]. + /// By default its value is [Alignment.bottomLeft] + final Alignment secondaryBegin; + + /// [secondaryEnd]: This is end [Alignment] for [secondaryColors]. + /// By default its value is [Alignment.bottomRight] + final Alignment secondaryEnd; + + /// Alternatively you can use [primaryBeginGeometry] over [primaryBegin] for better control over alignments + /// These are really useful for when you are builing an [rtl] app. + /// [primaryBeginGeometry] will have higher priority than [primaryBegin] + final AlignmentGeometry? primaryBeginGeometry; + + /// Alternatively you can use [primaryEndGeometry] over [primaryEnd] for better control over alignments + /// These are really useful for when you are builing an [rtl] app. + /// [primaryEndGeometry] will have higher priority than [primaryEnd] + final AlignmentGeometry? primaryEndGeometry; + + /// Alternatively you can use [secondaryBeginGeometry] over [secondaryBegin] for better control over alignments + /// These are really useful for when you are builing an [rtl] app. + /// [secondaryBeginGeometry] will have higher priority than [secondaryBegin] + final AlignmentGeometry? secondaryBeginGeometry; + + /// Alternatively you can use [secondaryEndGeometry] over [secondaryEnd] for better control over alignments + /// These are really useful for when you are builing an [rtl] app. + /// [secondaryEndGeometry] will have higher priority than [secondaryEnd] + final AlignmentGeometry? secondaryEndGeometry; + + /// This is the [TextDirection] which is gonna be used to resolve [AlignmentGeometry] passed through + /// [primaryBeginGeometry], [primaryEndGeometry], [secondaryBeginGeometry], [secondaryEndGeometry] + final TextDirection textDirectionForGeometry; + + /// [animateAlignments]: set to false if you don't want to animate the alignments. + /// This can provide you way cooler animations + final bool animateAlignments; + + /// [reverse]: set it to false if you don't want to reverse the animation. + /// using that it will go into one direction only + final bool reverse; + + final Widget? child; + + @override + State createState() => _AnimateGradientShaderState(); +} + +class _AnimateGradientShaderState extends State + with TickerProviderStateMixin { + late Animation _animation; + late AnimationController _controller; + + late List _colorTween; + + late AlignmentTween begin; + late AlignmentTween end; + List primaryColors = []; + List secondaryColors = []; + + @override + void initState() { + _initialize(); + super.initState(); + } + + @override + void didUpdateWidget(AnimateGradientShader oldWidget) { + _initialize(); + super.didUpdateWidget(oldWidget); + } + + void _initialize() { + primaryColors = widget.primaryColors; + secondaryColors = widget.secondaryColors; + _colorTween = _getColorTweens(); + if (widget.animateAlignments) _setAlignmentTweens(); + _setAnimations(); + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: _animation, + builder: (BuildContext context, Widget? child) { + final gradient = LinearGradient( + begin: widget.animateAlignments + ? begin.evaluate(_animation) + : widget.primaryBegin, + end: widget.animateAlignments + ? end.evaluate(_animation) + : widget.primaryEnd, + colors: _evaluateColors(_animation), + ); + + return ShaderMask( + shaderCallback: (Rect bounds) { + return gradient + .createShader(Rect.fromLTWH(0, 0, bounds.width, bounds.height)); + }, + child: widget.child, + ); + }, + ); + } + + List _getColorTweens() { + if (widget.primaryColors.length != widget.secondaryColors.length) { + throw Exception('primaryColors.length != secondaryColors.length'); + } + + final List colorTweens = []; + + for (int i = 0; i < primaryColors.length; i++) { + colorTweens.add( + ColorTween( + begin: primaryColors[i], + end: secondaryColors[i], + ), + ); + } + + return colorTweens; + } + + List _evaluateColors(Animation animation) { + final List colors = []; + for (int i = 0; i < _colorTween.length; i++) { + colors.add(_colorTween[i].evaluate(animation)!); + } + return colors; + } + + void _setAlignmentTweens() { + final primaryBeginGeometry = widget.primaryBeginGeometry?.resolve( + widget.textDirectionForGeometry, + ); + final primaryEndGeometry = widget.primaryEndGeometry?.resolve( + widget.textDirectionForGeometry, + ); + final secondaryBeginGeometry = widget.secondaryBeginGeometry?.resolve( + widget.textDirectionForGeometry, + ); + final secondaryEndGeometry = widget.secondaryEndGeometry?.resolve( + widget.textDirectionForGeometry, + ); + + begin = AlignmentTween( + begin: primaryBeginGeometry ?? widget.primaryBegin, + end: primaryEndGeometry ?? widget.primaryEnd, + ); + end = AlignmentTween( + begin: secondaryBeginGeometry ?? widget.secondaryBegin, + end: secondaryEndGeometry ?? widget.secondaryEnd, + ); + } + + void _setAnimations() { + _controller = widget.controller ?? + AnimationController( + vsync: this, + duration: widget.duration, + ) + ..repeat(reverse: widget.reverse); + _animation = CurvedAnimation( + parent: _controller, + curve: Curves.easeInOut, + ); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } +} diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 9ca133db..f1c930b8 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -71,9 +71,10 @@ dev_dependencies: flutter: uses-material-design: true assets: - - assets/icon/icon.png + - assets/icon/ - assets/landing/ - assets/fonts/ + - assets/scripts/ flutter_launcher_icons: android: "launcher_icon"