one
Version:
One is a React framework for web, iOS, and Android apps.
239 lines (236 loc) • 7.58 kB
JavaScript
;
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");
}
//# sourceMappingURL=diagnoseRouteLoadFailure.native.js.map