Files
basilisk55/devtools/client/inspector/bin/dev-server.js
T

66 lines
2.2 KiB
JavaScript

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* global __dirname */
"use strict";
const toolbox = require("../node_modules/devtools-launchpad/index");
const feature = require("devtools-config");
const envConfig = require("../configs/development.json");
const fs = require("fs");
const path = require("path");
feature.setConfig(envConfig);
const webpackConfig = require("../webpack.config")(envConfig);
let {app} = toolbox.startDevServer(envConfig, webpackConfig);
function sendFile(res, src, encoding) {
const filePath = path.join(__dirname, src);
const file = encoding ? fs.readFileSync(filePath, encoding) : fs.readFileSync(filePath);
res.send(file);
}
function addFileRoute(from, to) {
app.get(from, function (req, res) {
sendFile(res, to, "utf-8");
});
}
// Routes
addFileRoute("/", "../inspector.xhtml");
addFileRoute("/markup/markup.xhtml", "../markup/markup.xhtml");
app.get("/devtools/skin/images/:file.png", function (req, res) {
res.contentType("image/png");
sendFile(res, "../../themes/images/" + req.params.file + ".png");
});
app.get("/devtools/skin/images/:file.svg", function (req, res) {
res.contentType("image/svg+xml");
sendFile(res, "../../themes/images/" + req.params.file + ".svg", "utf-8");
});
app.get("/images/:file.svg", function (req, res) {
res.contentType("image/svg+xml");
sendFile(res, "../../themes/images/" + req.params.file + ".svg", "utf-8");
});
// Redirect chrome:devtools/skin/file.css to ../../themes/file.css
app.get("/devtools/skin/:file.css", function (req, res) {
res.contentType("text/css; charset=utf-8");
sendFile(res, "../../themes/" + req.params.file + ".css", "utf-8");
});
// Redirect chrome:devtools/client/path/to/file.css to ../../path/to/file.css
// and chrome:devtools/content/path/to/file.css to ../../path/to/file.css
app.get(/^\/devtools\/(?:client|content)\/(.*)\.css$/, function (req, res) {
res.contentType("text/css; charset=utf-8");
sendFile(res, "../../" + req.params[0] + ".css");
});