"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;