37 lines
1.6 KiB
JavaScript
37 lines
1.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const resource_processor_base_1 = __importDefault(require("./resource-processor-base"));
|
|
const lru_cache_1 = __importDefault(require("lru-cache"));
|
|
const script_1 = require("../script");
|
|
const url_1 = require("../../utils/url");
|
|
const builtin_header_names_1 = __importDefault(require("../../request-pipeline/builtin-header-names"));
|
|
class ScriptResourceProcessor extends resource_processor_base_1.default {
|
|
constructor() {
|
|
super();
|
|
this.jsCache = new lru_cache_1.default({
|
|
max: 50 * 1024 * 1024,
|
|
length: n => n.length, // NOTE: 1 char ~ 1 byte.
|
|
});
|
|
}
|
|
processResource(script, ctx, _charset, urlReplacer) {
|
|
if (!script)
|
|
return script;
|
|
let processedScript = this.jsCache.get(script);
|
|
if (!processedScript) {
|
|
processedScript = (0, script_1.processScript)(script, true, false, urlReplacer, ctx.destRes.headers[builtin_header_names_1.default.serviceWorkerAllowed], ctx.proxyless);
|
|
this.jsCache.set(script, processedScript);
|
|
}
|
|
else
|
|
processedScript = (0, url_1.updateScriptImportUrls)(processedScript, ctx.serverInfo, ctx.session.id, ctx.windowId);
|
|
return processedScript;
|
|
}
|
|
shouldProcessResource(ctx) {
|
|
return ctx.contentInfo.isScript;
|
|
}
|
|
}
|
|
exports.default = new ScriptResourceProcessor();module.exports = exports.default;
|
|
|