summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/asset/AssetSourceGenerator.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/asset/AssetSourceGenerator.js')
-rw-r--r--node_modules/webpack/lib/asset/AssetSourceGenerator.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/asset/AssetSourceGenerator.js b/node_modules/webpack/lib/asset/AssetSourceGenerator.js
new file mode 100644
index 00000000..6c0e51e9
--- /dev/null
+++ b/node_modules/webpack/lib/asset/AssetSourceGenerator.js
@@ -0,0 +1,96 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Sergey Melyukov @smelukov
+*/
+
+"use strict";
+
+const { RawSource } = require("webpack-sources");
+const ConcatenationScope = require("../ConcatenationScope");
+const Generator = require("../Generator");
+const RuntimeGlobals = require("../RuntimeGlobals");
+
+/** @typedef {import("webpack-sources").Source} Source */
+/** @typedef {import("../Generator").GenerateContext} GenerateContext */
+/** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
+/** @typedef {import("../NormalModule")} NormalModule */
+
+const TYPES = new Set(["javascript"]);
+
+class AssetSourceGenerator extends Generator {
+ /**
+ * @param {NormalModule} module module for which the code should be generated
+ * @param {GenerateContext} generateContext context for generate
+ * @returns {Source} generated code
+ */
+ generate(
+ module,
+ { concatenationScope, chunkGraph, runtimeTemplate, runtimeRequirements }
+ ) {
+ const originalSource = module.originalSource();
+
+ if (!originalSource) {
+ return new RawSource("");
+ }
+
+ const content = originalSource.source();
+
+ let encodedSource;
+ if (typeof content === "string") {
+ encodedSource = content;
+ } else {
+ encodedSource = content.toString("utf-8");
+ }
+
+ let sourceContent;
+ if (concatenationScope) {
+ concatenationScope.registerNamespaceExport(
+ ConcatenationScope.NAMESPACE_OBJECT_EXPORT
+ );
+ sourceContent = `${runtimeTemplate.supportsConst() ? "const" : "var"} ${
+ ConcatenationScope.NAMESPACE_OBJECT_EXPORT
+ } = ${JSON.stringify(encodedSource)};`;
+ } else {
+ runtimeRequirements.add(RuntimeGlobals.module);
+ sourceContent = `${RuntimeGlobals.module}.exports = ${JSON.stringify(
+ encodedSource
+ )};`;
+ }
+ return new RawSource(sourceContent);
+ }
+
+ /**
+ * @param {NormalModule} module module for which the bailout reason should be determined
+ * @param {ConcatenationBailoutReasonContext} context context
+ * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
+ */
+ getConcatenationBailoutReason(module, context) {
+ return undefined;
+ }
+
+ /**
+ * @param {NormalModule} module fresh module
+ * @returns {Set<string>} available types (do not mutate)
+ */
+ getTypes(module) {
+ return TYPES;
+ }
+
+ /**
+ * @param {NormalModule} module the module
+ * @param {string=} type source type
+ * @returns {number} estimate size of the module
+ */
+ getSize(module, type) {
+ const originalSource = module.originalSource();
+
+ if (!originalSource) {
+ return 0;
+ }
+
+ // Example: m.exports="abcd"
+ return originalSource.size() + 12;
+ }
+}
+
+module.exports = AssetSourceGenerator;