perfgraph 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +280 -0
  3. package/dist/causal/builder.d.ts +34 -0
  4. package/dist/causal/builder.d.ts.map +1 -0
  5. package/dist/causal/builder.js +132 -0
  6. package/dist/causal/builder.js.map +1 -0
  7. package/dist/causal/index.d.ts +11 -0
  8. package/dist/causal/index.d.ts.map +1 -0
  9. package/dist/causal/index.js +10 -0
  10. package/dist/causal/index.js.map +1 -0
  11. package/dist/causal/rules/js.d.ts +49 -0
  12. package/dist/causal/rules/js.d.ts.map +1 -0
  13. package/dist/causal/rules/js.js +209 -0
  14. package/dist/causal/rules/js.js.map +1 -0
  15. package/dist/causal/rules/layout.d.ts +39 -0
  16. package/dist/causal/rules/layout.d.ts.map +1 -0
  17. package/dist/causal/rules/layout.js +169 -0
  18. package/dist/causal/rules/layout.js.map +1 -0
  19. package/dist/causal/rules/lcp.d.ts +49 -0
  20. package/dist/causal/rules/lcp.d.ts.map +1 -0
  21. package/dist/causal/rules/lcp.js +250 -0
  22. package/dist/causal/rules/lcp.js.map +1 -0
  23. package/dist/causal/rules/network.d.ts +39 -0
  24. package/dist/causal/rules/network.d.ts.map +1 -0
  25. package/dist/causal/rules/network.js +140 -0
  26. package/dist/causal/rules/network.js.map +1 -0
  27. package/dist/causal/types.d.ts +142 -0
  28. package/dist/causal/types.d.ts.map +1 -0
  29. package/dist/causal/types.js +88 -0
  30. package/dist/causal/types.js.map +1 -0
  31. package/dist/cli/analyze.d.ts +33 -0
  32. package/dist/cli/analyze.d.ts.map +1 -0
  33. package/dist/cli/analyze.js +137 -0
  34. package/dist/cli/analyze.js.map +1 -0
  35. package/dist/cli/collect.d.ts +28 -0
  36. package/dist/cli/collect.d.ts.map +1 -0
  37. package/dist/cli/collect.js +125 -0
  38. package/dist/cli/collect.js.map +1 -0
  39. package/dist/cli/extract.d.ts +31 -0
  40. package/dist/cli/extract.d.ts.map +1 -0
  41. package/dist/cli/extract.js +135 -0
  42. package/dist/cli/extract.js.map +1 -0
  43. package/dist/cli/mcp.d.ts +14 -0
  44. package/dist/cli/mcp.d.ts.map +1 -0
  45. package/dist/cli/mcp.js +53 -0
  46. package/dist/cli/mcp.js.map +1 -0
  47. package/dist/cli/normalize.d.ts +58 -0
  48. package/dist/cli/normalize.d.ts.map +1 -0
  49. package/dist/cli/normalize.js +179 -0
  50. package/dist/cli/normalize.js.map +1 -0
  51. package/dist/cli/report.d.ts +33 -0
  52. package/dist/cli/report.d.ts.map +1 -0
  53. package/dist/cli/report.js +137 -0
  54. package/dist/cli/report.js.map +1 -0
  55. package/dist/cli/run.d.ts +49 -0
  56. package/dist/cli/run.d.ts.map +1 -0
  57. package/dist/cli/run.js +243 -0
  58. package/dist/cli/run.js.map +1 -0
  59. package/dist/collect/buffer-monitor.d.ts +25 -0
  60. package/dist/collect/buffer-monitor.d.ts.map +1 -0
  61. package/dist/collect/buffer-monitor.js +69 -0
  62. package/dist/collect/buffer-monitor.js.map +1 -0
  63. package/dist/collect/console.d.ts +25 -0
  64. package/dist/collect/console.d.ts.map +1 -0
  65. package/dist/collect/console.js +82 -0
  66. package/dist/collect/console.js.map +1 -0
  67. package/dist/collect/coverage.d.ts +26 -0
  68. package/dist/collect/coverage.d.ts.map +1 -0
  69. package/dist/collect/coverage.js +99 -0
  70. package/dist/collect/coverage.js.map +1 -0
  71. package/dist/collect/dom.d.ts +37 -0
  72. package/dist/collect/dom.d.ts.map +1 -0
  73. package/dist/collect/dom.js +118 -0
  74. package/dist/collect/dom.js.map +1 -0
  75. package/dist/collect/lighthouse.d.ts +41 -0
  76. package/dist/collect/lighthouse.d.ts.map +1 -0
  77. package/dist/collect/lighthouse.js +111 -0
  78. package/dist/collect/lighthouse.js.map +1 -0
  79. package/dist/collect/network.d.ts +32 -0
  80. package/dist/collect/network.d.ts.map +1 -0
  81. package/dist/collect/network.js +236 -0
  82. package/dist/collect/network.js.map +1 -0
  83. package/dist/collect/orchestrator.d.ts +23 -0
  84. package/dist/collect/orchestrator.d.ts.map +1 -0
  85. package/dist/collect/orchestrator.js +350 -0
  86. package/dist/collect/orchestrator.js.map +1 -0
  87. package/dist/collect/performance.d.ts +28 -0
  88. package/dist/collect/performance.d.ts.map +1 -0
  89. package/dist/collect/performance.js +108 -0
  90. package/dist/collect/performance.js.map +1 -0
  91. package/dist/collect/runtime.d.ts +26 -0
  92. package/dist/collect/runtime.d.ts.map +1 -0
  93. package/dist/collect/runtime.js +81 -0
  94. package/dist/collect/runtime.js.map +1 -0
  95. package/dist/collect/session.d.ts +58 -0
  96. package/dist/collect/session.d.ts.map +1 -0
  97. package/dist/collect/session.js +162 -0
  98. package/dist/collect/session.js.map +1 -0
  99. package/dist/collect/trace.d.ts +40 -0
  100. package/dist/collect/trace.d.ts.map +1 -0
  101. package/dist/collect/trace.js +127 -0
  102. package/dist/collect/trace.js.map +1 -0
  103. package/dist/collect/types.d.ts +317 -0
  104. package/dist/collect/types.d.ts.map +1 -0
  105. package/dist/collect/types.js +12 -0
  106. package/dist/collect/types.js.map +1 -0
  107. package/dist/distill/insights.d.ts +67 -0
  108. package/dist/distill/insights.d.ts.map +1 -0
  109. package/dist/distill/insights.js +317 -0
  110. package/dist/distill/insights.js.map +1 -0
  111. package/dist/distill/summaries.d.ts +71 -0
  112. package/dist/distill/summaries.d.ts.map +1 -0
  113. package/dist/distill/summaries.js +165 -0
  114. package/dist/distill/summaries.js.map +1 -0
  115. package/dist/extract/critical-path.d.ts +17 -0
  116. package/dist/extract/critical-path.d.ts.map +1 -0
  117. package/dist/extract/critical-path.js +95 -0
  118. package/dist/extract/critical-path.js.map +1 -0
  119. package/dist/extract/index.d.ts +16 -0
  120. package/dist/extract/index.d.ts.map +1 -0
  121. package/dist/extract/index.js +32 -0
  122. package/dist/extract/index.js.map +1 -0
  123. package/dist/extract/js-hotspots.d.ts +15 -0
  124. package/dist/extract/js-hotspots.d.ts.map +1 -0
  125. package/dist/extract/js-hotspots.js +22 -0
  126. package/dist/extract/js-hotspots.js.map +1 -0
  127. package/dist/extract/layout-shifts.d.ts +19 -0
  128. package/dist/extract/layout-shifts.d.ts.map +1 -0
  129. package/dist/extract/layout-shifts.js +47 -0
  130. package/dist/extract/layout-shifts.js.map +1 -0
  131. package/dist/extract/lcp-breakdown.d.ts +19 -0
  132. package/dist/extract/lcp-breakdown.d.ts.map +1 -0
  133. package/dist/extract/lcp-breakdown.js +110 -0
  134. package/dist/extract/lcp-breakdown.js.map +1 -0
  135. package/dist/extract/main-thread.d.ts +16 -0
  136. package/dist/extract/main-thread.d.ts.map +1 -0
  137. package/dist/extract/main-thread.js +41 -0
  138. package/dist/extract/main-thread.js.map +1 -0
  139. package/dist/extract/render-blocking.d.ts +16 -0
  140. package/dist/extract/render-blocking.d.ts.map +1 -0
  141. package/dist/extract/render-blocking.js +79 -0
  142. package/dist/extract/render-blocking.js.map +1 -0
  143. package/dist/extract/third-party.d.ts +15 -0
  144. package/dist/extract/third-party.d.ts.map +1 -0
  145. package/dist/extract/third-party.js +127 -0
  146. package/dist/extract/third-party.js.map +1 -0
  147. package/dist/extract/types.d.ts +183 -0
  148. package/dist/extract/types.d.ts.map +1 -0
  149. package/dist/extract/types.js +118 -0
  150. package/dist/extract/types.js.map +1 -0
  151. package/dist/index.d.ts +20 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +188 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/mcp/handlers.d.ts +72 -0
  156. package/dist/mcp/handlers.d.ts.map +1 -0
  157. package/dist/mcp/handlers.js +285 -0
  158. package/dist/mcp/handlers.js.map +1 -0
  159. package/dist/mcp/progress.d.ts +37 -0
  160. package/dist/mcp/progress.d.ts.map +1 -0
  161. package/dist/mcp/progress.js +51 -0
  162. package/dist/mcp/progress.js.map +1 -0
  163. package/dist/mcp/prompts.d.ts +57 -0
  164. package/dist/mcp/prompts.d.ts.map +1 -0
  165. package/dist/mcp/prompts.js +225 -0
  166. package/dist/mcp/prompts.js.map +1 -0
  167. package/dist/mcp/resources.d.ts +48 -0
  168. package/dist/mcp/resources.d.ts.map +1 -0
  169. package/dist/mcp/resources.js +149 -0
  170. package/dist/mcp/resources.js.map +1 -0
  171. package/dist/mcp/server.d.ts +34 -0
  172. package/dist/mcp/server.d.ts.map +1 -0
  173. package/dist/mcp/server.js +452 -0
  174. package/dist/mcp/server.js.map +1 -0
  175. package/dist/mcp/types.d.ts +47 -0
  176. package/dist/mcp/types.d.ts.map +1 -0
  177. package/dist/mcp/types.js +67 -0
  178. package/dist/mcp/types.js.map +1 -0
  179. package/dist/normalize/clock.d.ts +40 -0
  180. package/dist/normalize/clock.d.ts.map +1 -0
  181. package/dist/normalize/clock.js +96 -0
  182. package/dist/normalize/clock.js.map +1 -0
  183. package/dist/normalize/dom-ir.d.ts +16 -0
  184. package/dist/normalize/dom-ir.d.ts.map +1 -0
  185. package/dist/normalize/dom-ir.js +48 -0
  186. package/dist/normalize/dom-ir.js.map +1 -0
  187. package/dist/normalize/index.d.ts +23 -0
  188. package/dist/normalize/index.d.ts.map +1 -0
  189. package/dist/normalize/index.js +118 -0
  190. package/dist/normalize/index.js.map +1 -0
  191. package/dist/normalize/lighthouse-insights.d.ts +27 -0
  192. package/dist/normalize/lighthouse-insights.d.ts.map +1 -0
  193. package/dist/normalize/lighthouse-insights.js +318 -0
  194. package/dist/normalize/lighthouse-insights.js.map +1 -0
  195. package/dist/normalize/lighthouse-ir.d.ts +25 -0
  196. package/dist/normalize/lighthouse-ir.d.ts.map +1 -0
  197. package/dist/normalize/lighthouse-ir.js +151 -0
  198. package/dist/normalize/lighthouse-ir.js.map +1 -0
  199. package/dist/normalize/network-ir.d.ts +23 -0
  200. package/dist/normalize/network-ir.d.ts.map +1 -0
  201. package/dist/normalize/network-ir.js +180 -0
  202. package/dist/normalize/network-ir.js.map +1 -0
  203. package/dist/normalize/runtime-ir.d.ts +18 -0
  204. package/dist/normalize/runtime-ir.d.ts.map +1 -0
  205. package/dist/normalize/runtime-ir.js +114 -0
  206. package/dist/normalize/runtime-ir.js.map +1 -0
  207. package/dist/normalize/trace-ir.d.ts +20 -0
  208. package/dist/normalize/trace-ir.d.ts.map +1 -0
  209. package/dist/normalize/trace-ir.js +224 -0
  210. package/dist/normalize/trace-ir.js.map +1 -0
  211. package/dist/normalize/types.d.ts +536 -0
  212. package/dist/normalize/types.d.ts.map +1 -0
  213. package/dist/normalize/types.js +242 -0
  214. package/dist/normalize/types.js.map +1 -0
  215. package/dist/output/manifest.d.ts +44 -0
  216. package/dist/output/manifest.d.ts.map +1 -0
  217. package/dist/output/manifest.js +232 -0
  218. package/dist/output/manifest.js.map +1 -0
  219. package/dist/output/toon.d.ts +19 -0
  220. package/dist/output/toon.d.ts.map +1 -0
  221. package/dist/output/toon.js +22 -0
  222. package/dist/output/toon.js.map +1 -0
  223. package/dist/output/writer.d.ts +31 -0
  224. package/dist/output/writer.d.ts.map +1 -0
  225. package/dist/output/writer.js +51 -0
  226. package/dist/output/writer.js.map +1 -0
  227. package/dist/report/analyzer.d.ts +29 -0
  228. package/dist/report/analyzer.d.ts.map +1 -0
  229. package/dist/report/analyzer.js +330 -0
  230. package/dist/report/analyzer.js.map +1 -0
  231. package/dist/report/index.d.ts +13 -0
  232. package/dist/report/index.d.ts.map +1 -0
  233. package/dist/report/index.js +12 -0
  234. package/dist/report/index.js.map +1 -0
  235. package/dist/report/markdown.d.ts +21 -0
  236. package/dist/report/markdown.d.ts.map +1 -0
  237. package/dist/report/markdown.js +182 -0
  238. package/dist/report/markdown.js.map +1 -0
  239. package/dist/report/remediations.d.ts +42 -0
  240. package/dist/report/remediations.d.ts.map +1 -0
  241. package/dist/report/remediations.js +179 -0
  242. package/dist/report/remediations.js.map +1 -0
  243. package/dist/report/scorer.d.ts +35 -0
  244. package/dist/report/scorer.d.ts.map +1 -0
  245. package/dist/report/scorer.js +72 -0
  246. package/dist/report/scorer.js.map +1 -0
  247. package/dist/report/types.d.ts +201 -0
  248. package/dist/report/types.d.ts.map +1 -0
  249. package/dist/report/types.js +149 -0
  250. package/dist/report/types.js.map +1 -0
  251. package/dist/shared/fs-utils.d.ts +12 -0
  252. package/dist/shared/fs-utils.d.ts.map +1 -0
  253. package/dist/shared/fs-utils.js +44 -0
  254. package/dist/shared/fs-utils.js.map +1 -0
  255. package/dist/shared/types.d.ts +69 -0
  256. package/dist/shared/types.d.ts.map +1 -0
  257. package/dist/shared/types.js +18 -0
  258. package/dist/shared/types.js.map +1 -0
  259. package/dist/shared/utils.d.ts +6 -0
  260. package/dist/shared/utils.d.ts.map +1 -0
  261. package/dist/shared/utils.js +9 -0
  262. package/dist/shared/utils.js.map +1 -0
  263. package/package.json +67 -0
@@ -0,0 +1,224 @@
1
+ /**
2
+ * PerformanceIR builder from trace and performance raw data.
3
+ *
4
+ * Converts CDP trace events and performance metrics into a normalized
5
+ * PerformanceIR structure with all timestamps in ms relative to
6
+ * navigationStart.
7
+ */
8
+ import { toRelativeMs } from './clock.js';
9
+ // ---------------------------------------------------------------------------
10
+ // Helpers
11
+ // ---------------------------------------------------------------------------
12
+ /** Runtime type guard: check if value is a number */
13
+ function isNumber(value) {
14
+ return typeof value === 'number' && !Number.isNaN(value);
15
+ }
16
+ /** Safely access a nested property from trace event args */
17
+ function getArg(args, path) {
18
+ let current = args;
19
+ for (const key of path) {
20
+ if (current === null || current === undefined || typeof current !== 'object') {
21
+ return undefined;
22
+ }
23
+ current = current[key];
24
+ }
25
+ return current;
26
+ }
27
+ /** Trace event names the PerformanceIR builder cares about */
28
+ const EVENT_NAMES = new Set([
29
+ 'firstContentfulPaint',
30
+ 'LargestContentfulPaint::Candidate',
31
+ 'MarkDOMContent',
32
+ 'MarkLoad',
33
+ 'LayoutShift',
34
+ 'LongTask',
35
+ ]);
36
+ // ---------------------------------------------------------------------------
37
+ // Navigation builder
38
+ // ---------------------------------------------------------------------------
39
+ /**
40
+ * Build the PerformanceNavigation part from trace events.
41
+ *
42
+ * MarkDOMContent → domContentLoaded
43
+ * MarkLoad → loadEventStart
44
+ */
45
+ function buildNavigation(events, anchor) {
46
+ let domContentLoaded = 0;
47
+ let loadEventStart = 0;
48
+ for (const ev of events) {
49
+ if (ev.name === 'MarkDOMContent') {
50
+ domContentLoaded = toRelativeMs(ev.ts, 'cdp-monotonic-us', anchor);
51
+ }
52
+ if (ev.name === 'MarkLoad') {
53
+ loadEventStart = toRelativeMs(ev.ts, 'cdp-monotonic-us', anchor);
54
+ }
55
+ }
56
+ return {
57
+ url: '',
58
+ navigationStart: 0,
59
+ domContentLoaded,
60
+ domContentLoadedEventEnd: domContentLoaded,
61
+ loadEventStart,
62
+ loadEventEnd: loadEventStart,
63
+ domInteractive: domContentLoaded,
64
+ };
65
+ }
66
+ // ---------------------------------------------------------------------------
67
+ // Core Web Vitals builder
68
+ // ---------------------------------------------------------------------------
69
+ /**
70
+ * Build CoreWebVitals from trace events.
71
+ *
72
+ * - FCP: firstContentfulPaint trace event ts → relative ms
73
+ * - LCP: LargestContentfulPaint::Candidate trace event ts → relative ms
74
+ * - CLS: sum of LayoutShift events args.data.cumulative_score
75
+ * - TBT: sum of (LongTask event dur - 50) in ms
76
+ */
77
+ function buildCoreWebVitals(events, anchor) {
78
+ let fcp;
79
+ let lcp;
80
+ let cls = 0;
81
+ let tbt = 0;
82
+ for (const ev of events) {
83
+ switch (ev.name) {
84
+ case 'firstContentfulPaint': {
85
+ fcp = toRelativeMs(ev.ts, 'cdp-monotonic-us', anchor);
86
+ break;
87
+ }
88
+ case 'LargestContentfulPaint::Candidate': {
89
+ lcp = toRelativeMs(ev.ts, 'cdp-monotonic-us', anchor);
90
+ break;
91
+ }
92
+ case 'LayoutShift': {
93
+ const score = getArg(ev.args, ['data', 'cumulative_score']);
94
+ if (isNumber(score)) {
95
+ cls += score;
96
+ }
97
+ break;
98
+ }
99
+ case 'LongTask': {
100
+ const dur = ev.dur;
101
+ if (isNumber(dur)) {
102
+ const blocking = dur - 50; // tasks over 50ms are "long"
103
+ if (blocking > 0) {
104
+ tbt += blocking / 1000; // dur is in microseconds, convert to ms
105
+ }
106
+ }
107
+ break;
108
+ }
109
+ }
110
+ }
111
+ return {
112
+ fcp: fcp ?? undefined,
113
+ lcp: lcp ?? undefined,
114
+ cls: cls > 0 ? cls : undefined,
115
+ tbt: tbt > 0 ? tbt : undefined,
116
+ };
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // Trace summary builder
120
+ // ---------------------------------------------------------------------------
121
+ /**
122
+ * Build TraceSummary from all trace events.
123
+ *
124
+ * - totalDuration: difference between last and first event timestamps
125
+ * (converted to relative ms)
126
+ * - eventCount: total events
127
+ * - categories: count of events per top-level category
128
+ * (cat field split by "," — take the first segment)
129
+ * - threadActivity: per-tid duration sums + main thread identification
130
+ */
131
+ function buildTraceSummary(events, anchor) {
132
+ if (events.length === 0) {
133
+ return {
134
+ totalDuration: 0,
135
+ eventCount: 0,
136
+ categories: {},
137
+ threadActivity: { totalMs: 0, byCategory: {} },
138
+ };
139
+ }
140
+ const firstTs = events[0]?.ts ?? 0;
141
+ const lastTs = events[events.length - 1]?.ts ?? 0;
142
+ const totalDuration = toRelativeMs(lastTs, 'cdp-monotonic-us', anchor) - toRelativeMs(firstTs, 'cdp-monotonic-us', anchor);
143
+ // Count events per top-level category
144
+ const categories = {};
145
+ for (const ev of events) {
146
+ const topCat = ev.cat.split(',')[0] ?? 'unknown';
147
+ categories[topCat] = (categories[topCat] ?? 0) + 1;
148
+ }
149
+ // Group by thread ID, sum durations
150
+ const threadDurations = new Map();
151
+ for (const ev of events) {
152
+ if (isNumber(ev.dur)) {
153
+ const tid = ev.tid;
154
+ const currentDur = threadDurations.get(tid) ?? 0;
155
+ threadDurations.set(tid, currentDur + ev.dur);
156
+ }
157
+ }
158
+ // Identify main thread: the one with the most events
159
+ const threadCounts = new Map();
160
+ for (const ev of events) {
161
+ threadCounts.set(ev.tid, (threadCounts.get(ev.tid) ?? 0) + 1);
162
+ }
163
+ let mainTid = 0;
164
+ let maxCount = 0;
165
+ for (const [tid, count] of threadCounts) {
166
+ if (count > maxCount) {
167
+ mainTid = tid;
168
+ maxCount = count;
169
+ }
170
+ }
171
+ // Per-category thread activity (on main thread only)
172
+ const byCategory = {};
173
+ for (const ev of events) {
174
+ if (ev.tid === mainTid && isNumber(ev.dur)) {
175
+ const topCat = ev.cat.split(',')[0] ?? 'unknown';
176
+ byCategory[topCat] = (byCategory[topCat] ?? 0) + ev.dur / 1000;
177
+ }
178
+ }
179
+ const mainThreadTotalMs = (threadDurations.get(mainTid) ?? 0) / 1000;
180
+ return {
181
+ totalDuration: Math.max(0, totalDuration),
182
+ eventCount: events.length,
183
+ categories,
184
+ threadActivity: {
185
+ totalMs: mainThreadTotalMs,
186
+ byCategory,
187
+ },
188
+ };
189
+ }
190
+ // ---------------------------------------------------------------------------
191
+ // Main builder
192
+ // ---------------------------------------------------------------------------
193
+ /**
194
+ * Build a complete PerformanceIR from trace and performance raw data.
195
+ *
196
+ * @param trace - Raw trace events from the TraceCollector
197
+ * @param perf - Raw performance metrics from the PerformanceCollector
198
+ * @param anchor - ClockAnchor with navigationStart time
199
+ * @returns A fully-constructed PerformanceIR
200
+ */
201
+ export function buildPerformanceIR(trace, perf, anchor) {
202
+ const events = trace.events ?? [];
203
+ const eventCount = events.length;
204
+ // Extract performance metrics as a lookup map
205
+ const metrics = new Map();
206
+ for (const m of perf.metrics ?? []) {
207
+ metrics.set(m.name, m.value);
208
+ }
209
+ const navigation = buildNavigation(events, anchor);
210
+ const coreWebVitals = buildCoreWebVitals(events, anchor);
211
+ const traceSummary = buildTraceSummary(events, anchor);
212
+ // mainThreadBusyness = main thread activity / total trace duration
213
+ const mainThreadBusyness = traceSummary.totalDuration > 0 && traceSummary.threadActivity.totalMs > 0
214
+ ? Math.min(1, traceSummary.threadActivity.totalMs / traceSummary.totalDuration)
215
+ : 0;
216
+ const result = {
217
+ navigation,
218
+ coreWebVitals,
219
+ traceSummary,
220
+ mainThreadBusyness,
221
+ };
222
+ return result;
223
+ }
224
+ //# sourceMappingURL=trace-ir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-ir.js","sourceRoot":"","sources":["../../src/normalize/trace-ir.ts"],"names":[],"mappings":"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"}