You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
/* |
|
MIT License http://www.opensource.org/licenses/mit-license.php |
|
*/ |
|
|
|
"use strict"; |
|
|
|
const RuntimeGlobals = require("../RuntimeGlobals"); |
|
const RuntimeModule = require("../RuntimeModule"); |
|
const Template = require("../Template"); |
|
|
|
/** @typedef {import("../Compilation")} Compilation */ |
|
|
|
class GetMainFilenameRuntimeModule extends RuntimeModule { |
|
/** |
|
* @param {string} name readable name |
|
* @param {string} global global object binding |
|
* @param {string} filename main file name |
|
*/ |
|
constructor(name, global, filename) { |
|
super(`get ${name} filename`); |
|
this.global = global; |
|
this.filename = filename; |
|
} |
|
|
|
/** |
|
* @returns {string} runtime code |
|
*/ |
|
generate() { |
|
const { global, filename, compilation, chunk } = this; |
|
const { runtimeTemplate } = compilation; |
|
const url = compilation.getPath(JSON.stringify(filename), { |
|
hash: `" + ${RuntimeGlobals.getFullHash}() + "`, |
|
hashWithLength: length => |
|
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`, |
|
chunk, |
|
runtime: chunk.runtime |
|
}); |
|
return Template.asString([ |
|
`${global} = ${runtimeTemplate.returningFunction(url)};` |
|
]); |
|
} |
|
} |
|
|
|
module.exports = GetMainFilenameRuntimeModule;
|
|
|