GSI - Employe Self Service Mobile
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

63 lines
2.4 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.initMiddleware = void 0;
const apiv2_1 = require("../apiv2");
const logger_1 = require("../logger");
const utils = require("../utils");
const SDK_PATH_REGEXP = /^\/__\/firebase\/([^/]+)\/([^/]+)$/;
function initMiddleware(init) {
return (req, res, next) => {
const parsedUrl = new URL(req.url || "", `http://${req.headers.host}`);
const match = RegExp(SDK_PATH_REGEXP).exec(parsedUrl.pathname);
if (match) {
const version = match[1];
const sdkName = match[2];
const u = new URL(`https://www.gstatic.com/firebasejs/${version}/${sdkName}`);
const c = new apiv2_1.Client({ urlPrefix: u.origin, auth: false });
const headers = {};
const acceptEncoding = req.headers["accept-encoding"];
if (typeof acceptEncoding === "string" && acceptEncoding) {
headers["accept-encoding"] = acceptEncoding;
}
c.request({
method: "GET",
path: u.pathname,
headers,
responseType: "stream",
resolveOnHTTPError: true,
compress: false,
})
.then((sdkRes) => {
if (sdkRes.status === 404) {
return next();
}
for (const [key, value] of Object.entries(sdkRes.response.headers.raw())) {
res.setHeader(key, value);
}
sdkRes.body.pipe(res);
})
.catch((e) => {
utils.logLabeledWarning("hosting", `Could not load Firebase SDK ${sdkName} v${version}, check your internet connection.`);
logger_1.logger.debug(e);
});
}
else if (parsedUrl.pathname === "/__/firebase/init.js") {
const query = parsedUrl.searchParams;
res.setHeader("Content-Type", "application/javascript");
if (query.get("useEmulator") === "true") {
res.end(init.emulatorsJs);
}
else {
res.end(init.js);
}
}
else if (parsedUrl.pathname === "/__/firebase/init.json") {
res.setHeader("Content-Type", "application/json");
res.end(init.json);
}
else {
next();
}
};
}
exports.initMiddleware = initMiddleware;