From 17f317bef2b567f73890c4201f37f09a740ada33 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 21 Jan 2022 15:52:51 +0100 Subject: [PATCH] store url as Buffer to avoid serialization warnings makes deserialization cheaper --- lib/RuntimeTemplate.js | 2 +- lib/asset/AssetGenerator.js | 2 +- lib/asset/RawDataUrlModule.js | 11 +++++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/RuntimeTemplate.js b/lib/RuntimeTemplate.js index e506299c15d..77859a08aa4 100644 --- a/lib/RuntimeTemplate.js +++ b/lib/RuntimeTemplate.js @@ -1031,7 +1031,7 @@ class RuntimeTemplate { const codeGen = codeGenerationResults.get(module, runtime); const { data } = codeGen; const url = data.get("url"); - if (url) return url; + if (url) return url.toString(); const filename = data.get("filename"); return publicPath + filename; } diff --git a/lib/asset/AssetGenerator.js b/lib/asset/AssetGenerator.js index 021fb9bc46d..83bca02f0c6 100644 --- a/lib/asset/AssetGenerator.js +++ b/lib/asset/AssetGenerator.js @@ -215,7 +215,7 @@ class AssetGenerator extends Generator { },${encodedContent}`; } const data = getData(); - data.set("url", encodedSource); + data.set("url", Buffer.from(encodedSource)); return new RawSource( `${RuntimeGlobals.module}.exports = ${JSON.stringify( encodedSource diff --git a/lib/asset/RawDataUrlModule.js b/lib/asset/RawDataUrlModule.js index 5d3ab32cecc..ffdd71ed20b 100644 --- a/lib/asset/RawDataUrlModule.js +++ b/lib/asset/RawDataUrlModule.js @@ -33,6 +33,7 @@ class RawDataUrlModule extends Module { constructor(url, identifier, readableIdentifier) { super("asset/raw-data-url", null); this.url = url; + this.urlBuffer = url ? Buffer.from(url) : undefined; this.identifierStr = identifier || this.url; this.readableIdentifierStr = readableIdentifier || this.identifierStr; } @@ -56,6 +57,7 @@ class RawDataUrlModule extends Module { * @returns {number} the estimated size of the module (must be non-zero) */ size(type) { + if (this.url === undefined) this.url = this.urlBuffer.toString(); return Math.max(1, this.url.length); } @@ -97,13 +99,14 @@ class RawDataUrlModule extends Module { * @returns {CodeGenerationResult} result */ codeGeneration(context) { + if (this.url === undefined) this.url = this.urlBuffer.toString(); const sources = new Map(); sources.set( "javascript", new RawSource(`module.exports = ${JSON.stringify(this.url)};`) ); const data = new Map(); - data.set("url", this.url); + data.set("url", this.urlBuffer); const runtimeRequirements = new Set(); runtimeRequirements.add(RuntimeGlobals.module); return { sources, runtimeRequirements, data }; @@ -115,14 +118,14 @@ class RawDataUrlModule extends Module { * @returns {void} */ updateHash(hash, context) { - hash.update(this.url); + hash.update(this.urlBuffer); super.updateHash(hash, context); } serialize(context) { const { write } = context; - write(this.url); + write(this.urlBuffer); write(this.identifierStr); write(this.readableIdentifierStr); @@ -132,7 +135,7 @@ class RawDataUrlModule extends Module { deserialize(context) { const { read } = context; - this.url = read(); + this.urlBuffer = read(); this.identifierStr = read(); this.readableIdentifierStr = read();