马宇豪
2024-07-16 f591c27b57e2418c9495bc02ae8cfff84d35bc18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
    MIT License http://www.opensource.org/licenses/mit-license.php
    Author Tobias Koppers @sokra
*/
 
"use strict";
 
const RuntimeGlobals = require("../RuntimeGlobals");
 
/** @typedef {import("../Parser").ParserState} ParserState */
 
/** @type {WeakMap<ParserState, boolean>} */
const parserStateExportsState = new WeakMap();
 
/**
 * @param {ParserState} parserState parser state
 * @param {boolean} isStrictHarmony strict harmony mode should be enabled
 * @returns {void}
 */
exports.enable = (parserState, isStrictHarmony) => {
    const value = parserStateExportsState.get(parserState);
    if (value === false) return;
    parserStateExportsState.set(parserState, true);
    if (value !== true) {
        parserState.module.buildMeta.exportsType = "namespace";
        parserState.module.buildInfo.strict = true;
        parserState.module.buildInfo.exportsArgument = RuntimeGlobals.exports;
        if (isStrictHarmony) {
            parserState.module.buildMeta.strictHarmonyModule = true;
            parserState.module.buildInfo.moduleArgument = "__webpack_module__";
        }
    }
};
 
/**
 * @param {ParserState} parserState parser state
 * @returns {boolean} true, when enabled
 */
exports.isEnabled = parserState => {
    const value = parserStateExportsState.get(parserState);
    return value === true;
};