@expo/cli
Version:
63 lines (62 loc) • 2.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
createDebuggerTelemetryMiddleware: ()=>createDebuggerTelemetryMiddleware,
findDebugTool: ()=>findDebugTool
});
const _getMetroDebugProperties = require("./getMetroDebugProperties");
const _env = require("../env");
const _telemetry = require("../telemetry");
function createDebuggerTelemetryMiddleware(projectRoot, exp) {
let hasReported = false;
// This only works for Hermes apps, disable when telemetry is turned off
if (_env.env.EXPO_NO_TELEMETRY || exp.jsEngine !== "hermes") {
return (req, res, next)=>{
if (typeof next === "function") {
next(undefined);
}
};
}
return (req, res, next)=>{
// Only report once
if (hasReported && typeof next === "function") {
return next(undefined);
}
const debugTool = findDebugTool(req);
if (debugTool) {
hasReported = true;
(0, _telemetry.logEventAsync)("metro debug", (0, _getMetroDebugProperties.getMetroDebugProperties)(projectRoot, exp, debugTool));
}
if (typeof next === "function") {
return next(undefined);
}
};
}
function findDebugTool(req) {
var ref, ref1;
if ((ref = req.headers["origin"]) == null ? void 0 : ref.includes("chrome-devtools")) {
return {
name: "chrome"
};
}
if ((ref1 = req.url) == null ? void 0 : ref1.startsWith("/json")) {
var ref2;
const flipperUserAgent = (ref2 = req.headers["user-agent"]) == null ? void 0 : ref2.match(/(Flipper)\/([^\s]+)/);
if (flipperUserAgent) {
return {
name: flipperUserAgent[1].toLowerCase(),
version: flipperUserAgent[2]
};
}
}
return null;
}
//# sourceMappingURL=metroDebuggerMiddleware.js.map
;