MCPcopy Create free account
hub / github.com/doesdev/rollup-plugin-analyzer / analyzer

Function analyzer

index.js:93–156  ·  view source on GitHub ↗
(bundle, opts = {})

Source from the content-addressed store, hash-verified

91};
92
93const analyzer = (bundle, opts = {}) => {
94 const { limit, filter, transformModuleId, filterSummary } = opts;
95 const root = opts.root || (process && process.cwd ? process.cwd() : null);
96 const idMod = typeof transformModuleId === 'function' && transformModuleId;
97 const filterType = Array.isArray(filter) ? 'array' : typeof filter;
98 const applyFilter = filterByType[filterType];
99 const bundleModules = bundle.modules || (bundle.cache || {}).modules || [];
100 const deps = {};
101
102 let tmpBdlSize = 0;
103 let bundleSize = 0;
104 let bundleOrigSize = 0;
105
106 let modules = bundleModules.map((m, i) => {
107 const id = idMod ? idMod(m.id.replace(root, '')) : m.id.replace(root, '');
108 const {
109 originalLength,
110 renderedLength,
111 renderedExports,
112 removedExports,
113 originalCode,
114 code
115 } = m;
116
117 const size = sizeOrCodeSize(renderedLength, code);
118 const origSize = sizeOrCodeSize(originalLength, originalCode);
119
120 tmpBdlSize += size;
121
122 m.dependencies.forEach((d) => {
123 d = idMod ? idMod(d.replace(root, '')) : d.replace(root, '');
124 deps[d] = deps[d] || [];
125 deps[d].push(id);
126 });
127
128 return { id, size, origSize, renderedExports, removedExports }
129 }).filter((m) => m).sort((a, b) => b.size - a.size);
130
131 modules = modules.map((m, i) => {
132 m.dependents = deps[m.id] || [];
133 m.percent = Math.min(((m.size / tmpBdlSize) * 100).toFixed(2), 100);
134 m.reduction = shakenPct(m.size, m.origSize);
135
136 const filtered = applyFilter && !applyFilter(filter, m);
137 const limited = !Number.isNaN(+limit) && i >= limit;
138 if ((limited || filtered) && filterSummary) return null
139
140 bundleSize += m.size;
141 bundleOrigSize += m.origSize;
142
143 return (limited || filtered) ? null : m
144 }).filter((m) => m);
145
146 if (filterSummary) {
147 modules.forEach((m) => {
148 m.percent = Math.min(((m.size / bundleSize) * 100).toFixed(2), 100);
149 });
150 }

Callers 4

rollup.config.jsFile · 0.70
analyzeFunction · 0.70
formattedFunction · 0.70
rollup.config.jsFile · 0.50

Calls 2

sizeOrCodeSizeFunction · 0.70
shakenPctFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…