MCPcopy
hub / github.com/webpack/webpack / getProperty

Function getProperty

lib/dependencies/ExportsInfoDependency.js:38–90  ·  view source on GitHub ↗
(moduleGraph, module, exportName_, property, runtime)

Source from the content-addressed store, hash-verified

36 * @returns {undefined | null | boolean | ExportInfoName[]} value of the property
37 */
38const getProperty = (moduleGraph, module, exportName_, property, runtime) => {
39 if (!exportName_) {
40 switch (property) {
41 case "usedExports": {
42 const usedExports = moduleGraph
43 .getExportsInfo(module)
44 .getUsedExports(runtime);
45 if (
46 typeof usedExports === "boolean" ||
47 usedExports === undefined ||
48 usedExports === null
49 ) {
50 return usedExports;
51 }
52 return [...usedExports].sort();
53 }
54 }
55 }
56 const exportName = /** @type {ExportInfoName[]} */ (exportName_);
57 switch (property) {
58 case "canMangle": {
59 const exportsInfo = moduleGraph.getExportsInfo(module);
60 const exportInfo = exportsInfo.getReadOnlyExportInfoRecursive(exportName);
61 if (exportInfo) return exportInfo.canMangle;
62 return exportsInfo.otherExportsInfo.canMangle;
63 }
64 case "used":
65 return (
66 moduleGraph.getExportsInfo(module).getUsed(exportName, runtime) !==
67 UsageState.Unused
68 );
69 case "useInfo": {
70 const state = moduleGraph
71 .getExportsInfo(module)
72 .getUsed(exportName, runtime);
73 switch (state) {
74 case UsageState.Used:
75 case UsageState.OnlyPropertiesUsed:
76 return true;
77 case UsageState.Unused:
78 return false;
79 case UsageState.NoInfo:
80 return;
81 case UsageState.Unknown:
82 return null;
83 default:
84 throw new Error(`Unexpected UsageState ${state}`);
85 }
86 }
87 case "provideInfo":
88 return moduleGraph.getExportsInfo(module).isExportProvided(exportName);
89 }
90};
91
92class ExportsInfoDependency extends NullDependency {
93 /**

Callers 1

applyMethod · 0.85

Calls 6

getExportsInfoMethod · 0.80
sortMethod · 0.80
getUsedExportsMethod · 0.45
getUsedMethod · 0.45
isExportProvidedMethod · 0.45

Tested by

no test coverage detected