123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- "use strict";
- var connectUtils = require("./connect-utils");
- var config = require("./config");
- var lrSnippet = require("resp-modifier");
- var path = require("path");
- var _ = require("./lodash.custom");
- var utils = require("./utils");
- var fs = require("fs");
- var path = require("path");
- /**
- * Utils for snippet injection
- */
- var snippetUtils = {
- /**
- * @param {String} url
- * @param {Array} excludeList
- * @returns {boolean}
- */
- isExcluded: function (url, excludeList) {
- var extension = path.extname(url);
- if (extension) {
- if (~url.indexOf("?")) {
- return true;
- }
- extension = extension.slice(1);
- return _.includes(excludeList, extension);
- }
- return false;
- },
- /**
- * @param {String} snippet
- * @param {Object} options
- * @returns {{match: RegExp, fn: Function}}
- */
- getRegex: function (snippet, options) {
- var fn = options.getIn(["rule", "fn"]);
- return {
- match: options.getIn(["rule", "match"]),
- fn: function (req, res, match) {
- return fn.apply(null, [snippet, match]);
- },
- once: true,
- id: "bs-snippet"
- };
- },
- getSnippetMiddleware: function (snippet, options, rewriteRules) {
- return lrSnippet.create(snippetUtils.getRules(snippet, options, rewriteRules));
- },
- getRules: function (snippet, options, rewriteRules) {
- var rules = [snippetUtils.getRegex(snippet, options)];
- if (rewriteRules) {
- rules = rules.concat(rewriteRules);
- }
- return {
- rules: rules,
- blacklist: utils.arrayify(options.get("blacklist")),
- whitelist: utils.arrayify(options.get("whitelist"))
- };
- },
- /**
- * @param {Object} req
- * @param {Array} [excludeList]
- * @returns {Object}
- */
- isOldIe: function (excludeList) {
- return function (req, res, next) {
- var ua = req.headers["user-agent"];
- var match = /MSIE (\d)\.\d/.exec(ua);
- if (match) {
- if (parseInt(match[1], 10) < 9) {
- if (!snippetUtils.isExcluded(req.url, excludeList)) {
- req.headers["accept"] = "text/html";
- }
- }
- }
- next();
- };
- },
- /**
- * @param {Number} port
- * @param {BrowserSync.options} options
- * @returns {String}
- */
- getClientJs: function (port, options) {
- return () => {
- const script = options.get("minify") ? "index.js" : "index.js";
- const client = fs.readFileSync(require.resolve("browser-sync-client/dist/" + script), "utf8");
- return [connectUtils.socketConnector(options), client].join(";\n");
- };
- }
- };
- module.exports.utils = snippetUtils;
- //# sourceMappingURL=snippet.js.map
|