(url, options = {})
| 1346 | } |
| 1347 | |
| 1348 | function isURLRequestable(url, options = {}) { |
| 1349 | // Protocol-relative URLs |
| 1350 | if (/^\/\//.test(url)) { |
| 1351 | return { requestable: false, needResolve: false }; |
| 1352 | } |
| 1353 | |
| 1354 | // `#` URLs |
| 1355 | if (/^#/.test(url)) { |
| 1356 | return { requestable: false, needResolve: false }; |
| 1357 | } |
| 1358 | |
| 1359 | // Data URI |
| 1360 | if (isDataUrl(url) && options.isSupportDataURL) { |
| 1361 | try { |
| 1362 | decodeURIComponent(url); |
| 1363 | } catch (ignoreError) { |
| 1364 | return { requestable: false, needResolve: false }; |
| 1365 | } |
| 1366 | |
| 1367 | return { requestable: true, needResolve: false }; |
| 1368 | } |
| 1369 | |
| 1370 | // `file:` protocol |
| 1371 | if (/^file:/i.test(url)) { |
| 1372 | return { requestable: true, needResolve: true }; |
| 1373 | } |
| 1374 | |
| 1375 | // Absolute URLs |
| 1376 | if (/^[a-z][a-z0-9+.-]*:/i.test(url) && !NATIVE_WIN32_PATH.test(url)) { |
| 1377 | if (options.isSupportAbsoluteURL && /^https?:/i.test(url)) { |
| 1378 | return { requestable: true, needResolve: false }; |
| 1379 | } |
| 1380 | |
| 1381 | return { requestable: false, needResolve: false }; |
| 1382 | } |
| 1383 | |
| 1384 | return { requestable: true, needResolve: true }; |
| 1385 | } |
| 1386 | |
| 1387 | function sort(a, b) { |
| 1388 | return a.index - b.index; |
no test coverage detected