UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

237 lines (235 loc) • 7.52 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var diagnoseRouteLoadFailure_exports = {}; __export(diagnoseRouteLoadFailure_exports, { diagnoseRouteLoadFailure: () => diagnoseRouteLoadFailure, findRouteLoadFault: () => findRouteLoadFault }); module.exports = __toCommonJS(diagnoseRouteLoadFailure_exports); var MAX_MODULES = 500; var TIMEOUT_MS = 5e3; function collectImports(source, base) { var out = []; var add = function add2(spec) { if (!/^[./]|^https?:/.test(spec)) return; try { out.push(new URL(spec, base).href); } catch (unused) {} }; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = source.matchAll(/(?:^|[\s;}])(?:import|export)[^'"]{0,300}?from\s*["']([^"']+)["']/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var m = _step.value; add(m[1]); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0; try { for (var _iterator1 = source.matchAll(/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { var m1 = _step1.value; add(m1[1]); } } catch (err) { _didIteratorError1 = true; _iteratorError1 = err; } finally { try { if (!_iteratorNormalCompletion1 && _iterator1.return != null) { _iterator1.return(); } } finally { if (_didIteratorError1) { throw _iteratorError1; } } } var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0; try { for (var _iterator2 = source.matchAll(/(?:^|[\s;}])import\s*["']([^"']+)["']/g)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var m2 = _step2.value; add(m2[1]); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return != null) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } return out; } async function findRouteLoadFault(entryUrl) { var deadline = Date.now() + TIMEOUT_MS; var importers = /* @__PURE__ */ new Map(); var entry = new URL(entryUrl, window.location.href).href; importers.set(entry, null); var frontier = [entry]; var visited = 0; while (frontier.length && visited < MAX_MODULES && Date.now() < deadline) { var batch = frontier.slice(0, 32); frontier = frontier.slice(batch.length); visited += batch.length; var results = await Promise.all(batch.map(async function(url) { var _res_headers_get; var res; try { res = await fetch(url); } catch (unused) { return { url, fault: "unreachable", imports: [] }; } if (res.status === 404) return { url, fault: "missing", imports: [] }; if (!res.ok) return { url, fault: null, imports: [] }; var type = (_res_headers_get = res.headers.get("content-type")) !== null && _res_headers_get !== void 0 ? _res_headers_get : ""; if (!type.includes("javascript")) return { url, fault: null, imports: [] }; return { url, fault: null, imports: collectImports(await res.text(), url) }; })); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = results[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var result = _step.value; if (result.fault === "missing") { var _importers_get; var importer = (_importers_get = importers.get(result.url)) !== null && _importers_get !== void 0 ? _importers_get : null; if (importer === null || importer === void 0 ? void 0 : importer.includes("/node_modules/")) continue; return { kind: "missing", url: result.url, importer }; } if (result.fault === "unreachable") { var serverAnswers = await fetch(window.location.href, { method: "HEAD" }).then(function() { return true; }, function() { return false; }); return serverAnswers ? { kind: "blocked", url: result.url } : null; } var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0; try { for (var _iterator1 = result.imports[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { var next = _step1.value; if (importers.has(next)) continue; importers.set(next, result.url); frontier.push(next); } } catch (err) { _didIteratorError1 = true; _iteratorError1 = err; } finally { try { if (!_iteratorNormalCompletion1 && _iterator1.return != null) { _iterator1.return(); } } finally { if (_didIteratorError1) { throw _iteratorError1; } } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } return null; } async function diagnoseRouteLoadFailure(routeId, routeUrl) { var fault = await findRouteLoadFault(routeUrl); if (!fault) return null; var toPath = function toPath2(url) { return url.replace(window.location.origin, ""); }; var path = toPath(fault.url); if (fault.kind === "missing") { return [ `Route "${routeId}" failed to load because ${path} does not exist (the dev server answered 404).`, ``, fault.importer ? `${toPath(fault.importer)} imports it. Create the file or remove the import.` : `Create the file or remove the import.` ].join("\n"); } return [ `Route "${routeId}" failed to load because this browser refused to fetch ${path}`, ``, `That request never reached the dev server, so a content blocker or privacy`, `extension is blocking it. In dev the module URL is the source path, and a`, `path containing a word like "analytics", "pageview" or "track" matches the`, `tracking rules those blockers ship.`, ``, `Rename the file or the directory so its path no longer matches, or allow`, `${window.location.origin} in the blocker.` ].join("\n"); }