@rsbuild/plugin-assets-retry 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs
CHANGED
|
@@ -173,7 +173,7 @@ var __webpack_exports__ = {};
|
|
|
173
173
|
setup (api) {
|
|
174
174
|
let { inlineScript = !0 } = userOptions, getScriptPath = (environment)=>{
|
|
175
175
|
let distDir = environment.config.output.distPath.js;
|
|
176
|
-
return external_node_path_default().posix.join(distDir, "assets-retry.1-0-
|
|
176
|
+
return external_node_path_default().posix.join(distDir, "assets-retry.1-0-7.js");
|
|
177
177
|
}, formatOptions = (config)=>{
|
|
178
178
|
let options = {
|
|
179
179
|
...userOptions
|
|
@@ -226,7 +226,7 @@ var __webpack_exports__ = {};
|
|
|
226
226
|
});
|
|
227
227
|
})();
|
|
228
228
|
var __webpack_export_target__ = exports;
|
|
229
|
-
for(var
|
|
229
|
+
for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
230
230
|
__webpack_exports__.__esModule && Object.defineProperty(__webpack_export_target__, '__esModule', {
|
|
231
231
|
value: !0
|
|
232
232
|
});
|
package/dist/index.js
CHANGED
|
@@ -156,7 +156,7 @@ let pluginAssetsRetry = (userOptions = {})=>({
|
|
|
156
156
|
setup (api) {
|
|
157
157
|
let { inlineScript = !0 } = userOptions, getScriptPath = (environment)=>{
|
|
158
158
|
let distDir = environment.config.output.distPath.js;
|
|
159
|
-
return __WEBPACK_EXTERNAL_MODULE_node_path__.default.posix.join(distDir, "assets-retry.1-0-
|
|
159
|
+
return __WEBPACK_EXTERNAL_MODULE_node_path__.default.posix.join(distDir, "assets-retry.1-0-7.js");
|
|
160
160
|
}, formatOptions = (config)=>{
|
|
161
161
|
let options = {
|
|
162
162
|
...userOptions
|
|
@@ -50,28 +50,8 @@ function getUrlRetryQuery(existRetryTimes, originalQuery) {
|
|
|
50
50
|
}
|
|
51
51
|
return '';
|
|
52
52
|
}
|
|
53
|
-
function
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// case /app/main/static/js/index.js
|
|
57
|
-
if (protocolStartIndex === -1 && url.startsWith('/')) {
|
|
58
|
-
return url;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// case "//cdn.com/app/main/static/js/index.js"
|
|
62
|
-
// case "http://cdn.com/app/main/static/js/index.js"
|
|
63
|
-
var protocolEndIndex = protocolStartIndex + 2;
|
|
64
|
-
var pathStartIndex = url.indexOf('/', protocolEndIndex);
|
|
65
|
-
return url.slice(pathStartIndex);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// "http://cdn.com/app/main/static/js/index.js?query=1#hash" -> "/app/main/static/js/index.js"
|
|
69
|
-
function getAbsolutePathFromUrl(url) {
|
|
70
|
-
return cleanUrl(removeDomainFromUrl(url));
|
|
71
|
-
}
|
|
72
|
-
function getNextRetryUrl(existRetryTimes, nextDomain, originalSrcUrl) {
|
|
73
|
-
var absolutePath = getAbsolutePathFromUrl(originalSrcUrl);
|
|
74
|
-
return nextDomain + absolutePath + getUrlRetryQuery(existRetryTimes, getQueryFromUrl(originalSrcUrl));
|
|
53
|
+
function getNextRetryUrl(currRetryUrl, domain, nextDomain, existRetryTimes, originalQuery) {
|
|
54
|
+
return cleanUrl(currRetryUrl.replace(domain, nextDomain)) + getUrlRetryQuery(existRetryTimes + 1, originalQuery);
|
|
75
55
|
}
|
|
76
56
|
|
|
77
57
|
// shared between ensureChunk and loadScript
|
|
@@ -83,14 +63,17 @@ function getCurrentRetry(chunkId, existRetryTimes) {
|
|
|
83
63
|
function initRetry(chunkId) {
|
|
84
64
|
var _config$domain$, _config$domain3;
|
|
85
65
|
var originalScriptFilename = originalGetChunkScriptFilename(chunkId);
|
|
86
|
-
var
|
|
87
|
-
var
|
|
66
|
+
var originalPublicPath = __RUNTIME_GLOBALS_PUBLIC_PATH__;
|
|
67
|
+
var originalSrcUrl = originalPublicPath.startsWith('/') ? window.origin + originalPublicPath + originalScriptFilename : originalPublicPath + originalScriptFilename;
|
|
68
|
+
var originalQuery = getQueryFromUrl(originalSrcUrl);
|
|
69
|
+
var existRetryTimes = 0;
|
|
88
70
|
var nextDomain = (_config$domain$ = (_config$domain3 = config.domain) === null || _config$domain3 === void 0 ? void 0 : _config$domain3[0]) !== null && _config$domain$ !== void 0 ? _config$domain$ : window.origin;
|
|
89
71
|
return {
|
|
90
72
|
nextDomain: nextDomain,
|
|
91
|
-
nextRetryUrl: getNextRetryUrl(
|
|
73
|
+
nextRetryUrl: getNextRetryUrl(originalSrcUrl, nextDomain, nextDomain, existRetryTimes, originalQuery),
|
|
92
74
|
originalScriptFilename: originalScriptFilename,
|
|
93
|
-
originalSrcUrl: originalSrcUrl
|
|
75
|
+
originalSrcUrl: originalSrcUrl,
|
|
76
|
+
originalQuery: originalQuery
|
|
94
77
|
};
|
|
95
78
|
}
|
|
96
79
|
function nextRetry(chunkId, existRetryTimes) {
|
|
@@ -102,13 +85,15 @@ function nextRetry(chunkId, existRetryTimes) {
|
|
|
102
85
|
retryCollector[chunkId] = [];
|
|
103
86
|
} else {
|
|
104
87
|
var originalScriptFilename = currRetry.originalScriptFilename,
|
|
105
|
-
originalSrcUrl = currRetry.originalSrcUrl
|
|
88
|
+
originalSrcUrl = currRetry.originalSrcUrl,
|
|
89
|
+
originalQuery = currRetry.originalQuery;
|
|
106
90
|
var nextDomain = findNextDomain(currRetry.nextDomain);
|
|
107
91
|
nextRetry = {
|
|
108
92
|
nextDomain: nextDomain,
|
|
109
|
-
nextRetryUrl: getNextRetryUrl(
|
|
93
|
+
nextRetryUrl: getNextRetryUrl(currRetry.nextRetryUrl, currRetry.nextDomain, nextDomain, existRetryTimes, originalQuery),
|
|
110
94
|
originalScriptFilename: originalScriptFilename,
|
|
111
|
-
originalSrcUrl: originalSrcUrl
|
|
95
|
+
originalSrcUrl: originalSrcUrl,
|
|
96
|
+
originalQuery: originalQuery
|
|
112
97
|
};
|
|
113
98
|
}
|
|
114
99
|
retryCollector[chunkId][nextExistRetryTimes] = nextRetry;
|
|
@@ -163,12 +148,12 @@ arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
|
|
|
163
148
|
// the first calling is not retry
|
|
164
149
|
// if the failed request is 4 in network panel, callingCounter.count === 4, the first one is the normal request, and existRetryTimes is 3, retried 3 times
|
|
165
150
|
var existRetryTimes = callingCounter.count - 1;
|
|
166
|
-
var
|
|
151
|
+
var originalScriptFilename;
|
|
167
152
|
var nextRetryUrl;
|
|
168
153
|
var nextDomain;
|
|
169
154
|
try {
|
|
170
155
|
var retryResult = nextRetry(chunkId, existRetryTimes);
|
|
171
|
-
|
|
156
|
+
originalScriptFilename = retryResult.originalScriptFilename;
|
|
172
157
|
nextRetryUrl = retryResult.nextRetryUrl;
|
|
173
158
|
nextDomain = retryResult.nextDomain;
|
|
174
159
|
} catch (e) {
|
|
@@ -192,7 +177,7 @@ arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
|
|
|
192
177
|
var context = createContext(existRetryTimes);
|
|
193
178
|
if (existRetryTimes >= maxRetries) {
|
|
194
179
|
var _error$message2;
|
|
195
|
-
error.message = (_error$message2 = error.message) !== null && _error$message2 !== void 0 && _error$message2.includes('retries:') ? error.message : "Loading chunk ".concat(chunkId, " from ").concat(
|
|
180
|
+
error.message = (_error$message2 = error.message) !== null && _error$message2 !== void 0 && _error$message2.includes('retries:') ? error.message : "Loading chunk ".concat(chunkId, " from \"").concat(originalScriptFilename, "\" failed after ").concat(maxRetries, " retries: \"").concat(error.message, "\"");
|
|
196
181
|
if (typeof config.onFail === 'function') {
|
|
197
182
|
config.onFail(context);
|
|
198
183
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _ref,_RUNTIME_GLOBALS_GET,config=__RETRY_OPTIONS__,maxRetries=config.max||3,retryCollector={};function findCurrentDomain(n){for(var r,e=null!==(r=config.domain)&&void 0!==r?r:[],i="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){i=e[t];break}return i||window.origin}function findNextDomain(n){var r,e=null!==(r=config.domain)&&void 0!==r?r:[],i=findCurrentDomain(n),t=e.indexOf(i);return e[(t+1)%e.length]||n}var postfixRE=/[?#].*$/;function cleanUrl(n){return n.replace(postfixRE,"")}function getQueryFromUrl(n){var r=n.split("?")[1];return r?"?".concat(r.split("#")[0]):""}function getUrlRetryQuery(n,r){return!0===config.addQuery?""!==r?"".concat(r,"&retry=").concat(n):"?retry=".concat(n):"function"==typeof config.addQuery?config.addQuery({times:n,originalQuery:r}):""}function
|
|
1
|
+
"use strict";var _ref,_RUNTIME_GLOBALS_GET,config=__RETRY_OPTIONS__,maxRetries=config.max||3,retryCollector={};function findCurrentDomain(n){for(var r,e=null!==(r=config.domain)&&void 0!==r?r:[],i="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){i=e[t];break}return i||window.origin}function findNextDomain(n){var r,e=null!==(r=config.domain)&&void 0!==r?r:[],i=findCurrentDomain(n),t=e.indexOf(i);return e[(t+1)%e.length]||n}var postfixRE=/[?#].*$/;function cleanUrl(n){return n.replace(postfixRE,"")}function getQueryFromUrl(n){var r=n.split("?")[1];return r?"?".concat(r.split("#")[0]):""}function getUrlRetryQuery(n,r){return!0===config.addQuery?""!==r?"".concat(r,"&retry=").concat(n):"?retry=".concat(n):"function"==typeof config.addQuery?config.addQuery({times:n,originalQuery:r}):""}function getNextRetryUrl(n,r,e,i,t){return cleanUrl(n.replace(r,e))+getUrlRetryQuery(i+1,t)}var globalCurrRetrying={};function getCurrentRetry(n,r){var e;return null===(e=retryCollector[n])||void 0===e?void 0:e[r]}function initRetry(n){var r,e,i=originalGetChunkScriptFilename(n),t=__RUNTIME_GLOBALS_PUBLIC_PATH__,o=t.startsWith("/")?window.origin+t+i:t+i,a=getQueryFromUrl(o),l=null!==(r=null===(e=config.domain)||void 0===e?void 0:e[0])&&void 0!==r?r:window.origin;return{nextDomain:l,nextRetryUrl:getNextRetryUrl(o,l,l,0,a),originalScriptFilename:i,originalSrcUrl:o,originalQuery:a}}function nextRetry(n,r){var e,i=getCurrentRetry(n,r),t=r+1;if(0===r||void 0===i)e=initRetry(n),retryCollector[n]=[];else{var o=i.originalScriptFilename,a=i.originalSrcUrl,l=i.originalQuery,c=findNextDomain(i.nextDomain);e={nextDomain:c,nextRetryUrl:getNextRetryUrl(i.nextRetryUrl,i.nextDomain,c,r,l),originalScriptFilename:o,originalSrcUrl:a,originalQuery:l}}return retryCollector[n][t]=e,globalCurrRetrying[n]=e,e}var originalEnsureChunk=__RUNTIME_GLOBALS_ENSURE_CHUNK__,originalGetChunkScriptFilename=__RUNTIME_GLOBALS_GET_CHUNK_SCRIPT_FILENAME__,originalGetCssFilename=null!==(_ref=null!==(_RUNTIME_GLOBALS_GET=__RUNTIME_GLOBALS_GET_MINI_CSS_EXTRACT_FILENAME__)&&void 0!==_RUNTIME_GLOBALS_GET?_RUNTIME_GLOBALS_GET:__RUNTIME_GLOBALS_GET_CSS_FILENAME__)&&void 0!==_ref?_ref:function(){return null},originalLoadScript=__RUNTIME_GLOBALS_LOAD_SCRIPT__,ERROR_PREFIX="[@rsbuild/plugin-assets-retry] ";function ensureChunk(n,r,e,i,t,o,a,l){for(var c=arguments.length>8&&void 0!==arguments[8]?arguments[8]:{count:0},_=arguments.length,u=new Array(_>9?_-9:0),f=9;f<_;f++)u[f-9]=arguments[f];var g=originalEnsureChunk.apply(void 0,[n,r,e,i,t,o,a,l,c].concat(u));try{var R=originalGetChunkScriptFilename(n),d=originalGetCssFilename(n);"undefined"!=typeof window&&(R&&(window.__RB_ASYNC_CHUNKS__[R]=!0),d&&(window.__RB_ASYNC_CHUNKS__[d]=!0))}catch(n){console.error(ERROR_PREFIX,"get original script or css filename error",n)}return"number"!=typeof(null==c?void 0:c.count)?g:(c.count+=1,g.catch((function(_){var f,g,R,d,y=c.count-1;try{var s=nextRetry(n,y);g=s.originalScriptFilename,R=s.nextRetryUrl,d=s.nextDomain}catch(n){throw console.error(ERROR_PREFIX,"failed to get nextRetryUrl",n),_}var S,E=Boolean(null==_||null===(f=_.message)||void 0===f?void 0:f.includes("CSS chunk")),m=function(n){return{times:n,domain:d,url:R,tagName:E?"link":"script",isAsyncChunk:!0}},C=m(y);if(y>=maxRetries)throw _.message=null!==(S=_.message)&&void 0!==S&&S.includes("retries:")?_.message:"Loading chunk ".concat(n,' from "').concat(g,'" failed after ').concat(maxRetries,' retries: "').concat(_.message,'"'),"function"==typeof config.onFail&&config.onFail(C),_;var U=config.test;if(U){if("string"==typeof U){var v=new RegExp(U);U=function(n){return v.test(n)}}if("function"!=typeof U||!U(R))throw _}if(config.domain&&config.domain.length>0&&-1===config.domain.indexOf(d))throw _;return"function"==typeof config.onRetry&&config.onRetry(C),ensureChunk.apply(void 0,[n,r,e,i,t,o,a,l,c].concat(u)).then((function(n){var r=(null==c?void 0:c.count)===y+2;if("function"==typeof config.onSuccess&&r){var e=m(y+1);config.onSuccess(e)}return n}))})))}function loadScript(n,r,e,i){for(var t=globalCurrRetrying[i],o=arguments.length,a=new Array(o>4?o-4:0),l=4;l<o;l++)a[l-4]=arguments[l];return originalLoadScript.apply(void 0,[t?t.nextRetryUrl:n,r,e,i].concat(a))}function registerAsyncChunkRetry(){if("undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={}),"undefined"!=typeof __RUNTIME_GLOBALS_REQUIRE__)try{__RUNTIME_GLOBALS_ENSURE_CHUNK__=ensureChunk,__RUNTIME_GLOBALS_LOAD_SCRIPT__=loadScript}catch(n){console.error(ERROR_PREFIX,"Register async chunk retry runtime failed",n)}}registerAsyncChunkRetry();
|
|
@@ -8,6 +8,7 @@ var TAG_TYPE = {
|
|
|
8
8
|
img: HTMLImageElement
|
|
9
9
|
};
|
|
10
10
|
var TYPES = Object.keys(TAG_TYPE);
|
|
11
|
+
// this function is the same as async chunk retry
|
|
11
12
|
function findCurrentDomain(url, domainList) {
|
|
12
13
|
var domain = '';
|
|
13
14
|
for (var i = 0; i < domainList.length; i++) {
|
|
@@ -18,6 +19,8 @@ function findCurrentDomain(url, domainList) {
|
|
|
18
19
|
}
|
|
19
20
|
return domain || window.origin;
|
|
20
21
|
}
|
|
22
|
+
|
|
23
|
+
// this function is the same as async chunk retry
|
|
21
24
|
function findNextDomain(url, domainList) {
|
|
22
25
|
var currentDomain = findCurrentDomain(url, domainList);
|
|
23
26
|
var index = domainList.indexOf(currentDomain);
|
|
@@ -184,6 +187,8 @@ function retry(config, e) {
|
|
|
184
187
|
|
|
185
188
|
// if the initial request is "/static/js/async/src_Hello_tsx.js?q=1", retry url would be "/static/js/async/src_Hello_tsx.js?q=1&retry=1"
|
|
186
189
|
var originalQuery = (_target$dataset$rsbui = target.dataset.rsbuildOriginalQuery) !== null && _target$dataset$rsbui !== void 0 ? _target$dataset$rsbui : getQueryFromUrl(url);
|
|
190
|
+
|
|
191
|
+
// this function is the same as async chunk retry
|
|
187
192
|
function getUrlRetryQuery(existRetryTimes) {
|
|
188
193
|
if (config.addQuery === true) {
|
|
189
194
|
return originalQuery !== '' ? "".concat(originalQuery, "&retry=").concat(existRetryTimes) : "?retry=".concat(existRetryTimes);
|
|
@@ -196,9 +201,14 @@ function retry(config, e) {
|
|
|
196
201
|
}
|
|
197
202
|
return '';
|
|
198
203
|
}
|
|
204
|
+
|
|
205
|
+
// this function is the same as async chunk retry
|
|
206
|
+
function getNextRetryUrl(currRetryUrl, domain, nextDomain, existRetryTimes) {
|
|
207
|
+
return cleanUrl(currRetryUrl.replace(domain, nextDomain)) + getUrlRetryQuery(existRetryTimes + 1);
|
|
208
|
+
}
|
|
199
209
|
var isAsync = Boolean(target.dataset.rsbuildAsync) || target.async || target.defer;
|
|
200
210
|
var attributes = {
|
|
201
|
-
url:
|
|
211
|
+
url: getNextRetryUrl(url, domain, nextDomain, existRetryTimes),
|
|
202
212
|
times: existRetryTimes + 1,
|
|
203
213
|
crossOrigin: config.crossOrigin,
|
|
204
214
|
isAsync: isAsync,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var TAG_TYPE={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement},TYPES=Object.keys(TAG_TYPE);function findCurrentDomain(e,n){for(var t="",r=0;r<n.length;r++)if(-1!==e.indexOf(n[r])){t=n[r];break}return t||window.origin}function findNextDomain(e,n){var t=findCurrentDomain(e,n),r=n.indexOf(t);return n[(r+1)%n.length]||e}function getRequestUrl(e){return e instanceof HTMLScriptElement||e instanceof HTMLImageElement?e.src:e instanceof HTMLLinkElement?e.href:null}var defaultConfig={max:3,type:TYPES,domain:[],crossOrigin:!1};function validateTargetInfo(e,n){var t,r=n.target,i=null===(t=r.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),a=e.type,o=getRequestUrl(r);return!!(i&&-1!==a.indexOf(i)&&TAG_TYPE[i]&&r instanceof TAG_TYPE[i]&&o)&&{target:r,tagName:i,url:o}}var postfixRE=/[?#].*$/;function cleanUrl(e){return e.replace(postfixRE,"")}function getQueryFromUrl(e){var n=e.split("?")[1];return n?"?".concat(n.split("#")[0]):""}function createElement(e,n){var t=!0===n.crossOrigin?"anonymous":n.crossOrigin,r=t?'crossorigin="'.concat(t,'"'):"",i=n.times?'data-rsbuild-retry-times="'.concat(n.times,'"'):"",a=n.originalQuery?'data-rsbuild-original-query="'.concat(n.originalQuery,'"'):"",o=n.isAsync?"data-rsbuild-async":"";if(e instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=n.url,t&&(c.crossOrigin=t),n.times&&(c.dataset.rsbuildRetryTimes=String(n.times)),n.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==n.originalQuery&&(c.dataset.rsbuildOriginalQuery=n.originalQuery),{element:c,str:'<script src="'.concat(n.url,'" ').concat(r," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(e instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=e.rel||"stylesheet",e.as&&(s.as=e.as),s.href=n.url,t&&(s.crossOrigin=t),n.times&&(s.dataset.rsbuildRetryTimes=String(n.times)),void 0!==n.originalQuery&&(s.dataset.rsbuildOriginalQuery=n.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(n.url,'" ').concat(r," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}function reloadElementResource(e,n,t){e instanceof HTMLScriptElement&&(t.isAsync?document.body.appendChild(n.element):document.write(n.str)),e instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(n.element),e instanceof HTMLImageElement&&(e.src=t.url,e.dataset.rsbuildRetryTimes=String(t.times),e.dataset.rsbuildOriginalQuery=String(t.originalQuery))}function retry(e,n){var t,r=validateTargetInfo(e,n);if(!1!==r){var i=r.target,a=r.tagName,o=r.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(e){return-1!==o.indexOf(e)}))){var c=e.test;if(c){if("string"==typeof c){var s=new RegExp(c);c=function(e){return s.test(e)}}if("function"!=typeof c||!c(o))return}var
|
|
1
|
+
"use strict";var TAG_TYPE={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement},TYPES=Object.keys(TAG_TYPE);function findCurrentDomain(e,n){for(var t="",r=0;r<n.length;r++)if(-1!==e.indexOf(n[r])){t=n[r];break}return t||window.origin}function findNextDomain(e,n){var t=findCurrentDomain(e,n),r=n.indexOf(t);return n[(r+1)%n.length]||e}function getRequestUrl(e){return e instanceof HTMLScriptElement||e instanceof HTMLImageElement?e.src:e instanceof HTMLLinkElement?e.href:null}var defaultConfig={max:3,type:TYPES,domain:[],crossOrigin:!1};function validateTargetInfo(e,n){var t,r=n.target,i=null===(t=r.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),a=e.type,o=getRequestUrl(r);return!!(i&&-1!==a.indexOf(i)&&TAG_TYPE[i]&&r instanceof TAG_TYPE[i]&&o)&&{target:r,tagName:i,url:o}}var postfixRE=/[?#].*$/;function cleanUrl(e){return e.replace(postfixRE,"")}function getQueryFromUrl(e){var n=e.split("?")[1];return n?"?".concat(n.split("#")[0]):""}function createElement(e,n){var t=!0===n.crossOrigin?"anonymous":n.crossOrigin,r=t?'crossorigin="'.concat(t,'"'):"",i=n.times?'data-rsbuild-retry-times="'.concat(n.times,'"'):"",a=n.originalQuery?'data-rsbuild-original-query="'.concat(n.originalQuery,'"'):"",o=n.isAsync?"data-rsbuild-async":"";if(e instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=n.url,t&&(c.crossOrigin=t),n.times&&(c.dataset.rsbuildRetryTimes=String(n.times)),n.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==n.originalQuery&&(c.dataset.rsbuildOriginalQuery=n.originalQuery),{element:c,str:'<script src="'.concat(n.url,'" ').concat(r," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(e instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=e.rel||"stylesheet",e.as&&(s.as=e.as),s.href=n.url,t&&(s.crossOrigin=t),n.times&&(s.dataset.rsbuildRetryTimes=String(n.times)),void 0!==n.originalQuery&&(s.dataset.rsbuildOriginalQuery=n.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(n.url,'" ').concat(r," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}function reloadElementResource(e,n,t){e instanceof HTMLScriptElement&&(t.isAsync?document.body.appendChild(n.element):document.write(n.str)),e instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(n.element),e instanceof HTMLImageElement&&(e.src=t.url,e.dataset.rsbuildRetryTimes=String(t.times),e.dataset.rsbuildOriginalQuery=String(t.originalQuery))}function retry(e,n){var t,r=validateTargetInfo(e,n);if(!1!==r){var i=r.target,a=r.tagName,o=r.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(e){return-1!==o.indexOf(e)}))){var c=e.test;if(c){if("string"==typeof c){var s=new RegExp(c);c=function(e){return s.test(e)}}if("function"!=typeof c||!c(o))return}var u=findCurrentDomain(o,e.domain);if(!(e.domain&&e.domain.length>0&&-1===e.domain.indexOf(u))){var l=Number(i.dataset.rsbuildRetryTimes)||0;if(l!==e.max){var d=findNextDomain(u,e.domain),f=null!==(t=i.dataset.rsbuildOriginalQuery)&&void 0!==t?t:getQueryFromUrl(o),m=Boolean(i.dataset.rsbuildAsync)||i.async||i.defer,y={url:function(n,t,r,i){return cleanUrl(n.replace(t,r))+function(n){return!0===e.addQuery?""!==f?"".concat(f,"&retry=").concat(n):"?retry=".concat(n):"function"==typeof e.addQuery?e.addQuery({times:n,originalQuery:f}):""}(i+1)}(o,u,d,l),times:l+1,crossOrigin:e.crossOrigin,isAsync:m,originalQuery:f},g=createElement(i,y);if(e.onRetry&&"function"==typeof e.onRetry){var p={times:l,domain:u,url:o,tagName:a,isAsyncChunk:!1};e.onRetry(p)}reloadElementResource(i,g,y)}else if("function"==typeof e.onFail){var v={times:l,domain:u,url:o,tagName:a,isAsyncChunk:!1};e.onFail(v)}}}}}function load(e,n){var t=validateTargetInfo(e,n);if(!1!==t){var r=t.target,i=t.tagName,a=t.url,o=findCurrentDomain(a,e.domain),c=Number(r.dataset.rsbuildRetryTimes)||0;if(0!==c&&"function"==typeof e.onSuccess){var s={times:c,domain:o,url:a,tagName:i,isAsyncChunk:!1};e.onSuccess(s)}}}function resourceMonitor(e,n){"undefined"!=typeof window&&void 0!==window.document&&(document.addEventListener("error",(function(n){n&&n.target instanceof Element&&e(n)}),!0),document.addEventListener("load",(function(e){e&&e.target instanceof Element&&n(e)}),!0))}function init(e){var n={};for(var t in defaultConfig)n[t]=defaultConfig[t];for(var r in e)n[r]=e[r];Array.isArray(n.type)&&0!==n.type.length||(n.type=defaultConfig.type),Array.isArray(n.domain)&&0!==n.domain.length||(n.domain=defaultConfig.domain),Array.isArray(n.domain)&&(n.domain=n.domain.filter(Boolean)),"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{resourceMonitor((function(e){try{retry(n,e)}catch(e){console.error("retry error captured",e)}}),(function(e){try{load(n,e)}catch(e){console.error("load error captured",e)}}))}catch(e){console.error("monitor error captured",e)}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsbuild/plugin-assets-retry",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "Assets retry plugin for Rsbuild",
|
|
5
5
|
"homepage": "https://rsbuild.dev",
|
|
6
6
|
"repository": {
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"@babel/core": "^7.26.0",
|
|
27
27
|
"@babel/preset-env": "^7.26.0",
|
|
28
28
|
"@babel/preset-typescript": "^7.26.0",
|
|
29
|
-
"@rslib/core": "0.1.
|
|
29
|
+
"@rslib/core": "0.1.3",
|
|
30
30
|
"@types/serialize-javascript": "^5.0.4",
|
|
31
31
|
"serialize-javascript": "^6.0.2",
|
|
32
|
-
"terser": "5.
|
|
32
|
+
"terser": "5.37.0",
|
|
33
33
|
"typescript": "^5.7.2",
|
|
34
|
-
"@rsbuild/core": "1.1.
|
|
34
|
+
"@rsbuild/core": "1.1.9"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@rsbuild/core": "1.x"
|