MCPcopy Index your code
hub / github.com/doesdev/rollup-plugin-analyzer / analyzer

Function analyzer

module.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 2

analyzeFunction · 0.70
formattedFunction · 0.70

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…