@expo/cli
Version:
76 lines (75 loc) • 2.62 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, {
DevToolsPluginEndpoint: ()=>_devToolsPluginManager.DevToolsPluginEndpoint,
DevToolsPluginMiddleware: ()=>DevToolsPluginMiddleware
});
function _assert() {
const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
_assert = function() {
return data;
};
return data;
}
function _send() {
const data = /*#__PURE__*/ _interopRequireDefault(require("send"));
_send = function() {
return data;
};
return data;
}
const _expoMiddleware = require("./ExpoMiddleware");
const _devToolsPluginManager = require("../DevToolsPluginManager");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
class DevToolsPluginMiddleware extends _expoMiddleware.ExpoMiddleware {
constructor(projectRoot, pluginManager){
super(projectRoot, [
_devToolsPluginManager.DevToolsPluginEndpoint
]);
this.pluginManager = pluginManager;
}
shouldHandleRequest(req) {
var ref;
if (!((ref = req.url) == null ? void 0 : ref.startsWith(_devToolsPluginManager.DevToolsPluginEndpoint))) {
return false;
}
return true;
}
async handleRequestAsync(req, res) {
(0, _assert().default)(req.headers.host, "Request headers must include host");
var _url;
const { pathname } = new URL((_url = req.url) != null ? _url : "/", `http://${req.headers.host}`);
const pluginName = this.queryPossiblePluginName(pathname.substring(_devToolsPluginManager.DevToolsPluginEndpoint.length + 1));
const webpageRoot = await this.pluginManager.queryPluginWebpageRootAsync(pluginName);
if (!webpageRoot) {
res.statusCode = 404;
res.end();
return;
}
const pathInPluginRoot = pathname.substring(_devToolsPluginManager.DevToolsPluginEndpoint.length + pluginName.length + 1) || "/";
(0, _send().default)(req, pathInPluginRoot, {
root: webpageRoot
}).pipe(res);
}
queryPossiblePluginName(pathname) {
const parts = pathname.split("/");
if (parts[0][0] === "@" && parts.length > 1) {
// Scoped package name
return `${parts[0]}/${parts[1]}`;
}
return parts[0];
}
}
//# sourceMappingURL=DevToolsPluginMiddleware.js.map
;