@memlab/core 1.1.19 → 1.1.21

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 (55) hide show
  1. package/dist/__tests__/parser/StringNode.test.js +12 -1
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +4 -1
  4. package/dist/lib/Config.d.ts +4 -0
  5. package/dist/lib/Config.js +13 -0
  6. package/dist/lib/FileManager.d.ts +6 -0
  7. package/dist/lib/FileManager.js +56 -4
  8. package/dist/lib/HeapAnalyzer.d.ts +5 -1
  9. package/dist/lib/HeapAnalyzer.js +33 -21
  10. package/dist/lib/RunInfoUtils.d.ts +39 -0
  11. package/dist/lib/RunInfoUtils.js +86 -0
  12. package/dist/lib/Types.d.ts +80 -2
  13. package/dist/lib/Utils.d.ts +30 -20
  14. package/dist/lib/Utils.js +119 -151
  15. package/dist/lib/charts/MemoryBarChart.d.ts +1 -0
  16. package/dist/lib/charts/MemoryBarChart.js +23 -2
  17. package/dist/lib/heap-data/HeapEdge.d.ts +3 -1
  18. package/dist/lib/heap-data/HeapEdge.js +13 -0
  19. package/dist/lib/heap-data/HeapLocation.d.ts +3 -1
  20. package/dist/lib/heap-data/HeapLocation.js +14 -0
  21. package/dist/lib/heap-data/HeapNode.d.ts +6 -1
  22. package/dist/lib/heap-data/HeapNode.js +46 -0
  23. package/dist/lib/heap-data/HeapSnapshot.d.ts +3 -1
  24. package/dist/lib/heap-data/HeapSnapshot.js +7 -0
  25. package/dist/lib/heap-data/HeapStringNode.d.ts +2 -1
  26. package/dist/lib/heap-data/HeapStringNode.js +5 -0
  27. package/dist/lib/trace-filters/BaseTraceFilter.rule.d.ts +29 -0
  28. package/dist/lib/trace-filters/BaseTraceFilter.rule.js +22 -0
  29. package/dist/lib/trace-filters/LeakTraceFilter.d.ts +20 -0
  30. package/dist/lib/trace-filters/LeakTraceFilter.js +37 -0
  31. package/dist/lib/trace-filters/TraceFilterRuleList.d.ts +13 -0
  32. package/dist/lib/trace-filters/TraceFilterRuleList.js +33 -0
  33. package/dist/lib/trace-filters/rules/FilterAttachedDOMToDetachedDOMTrace.rule.d.ts +15 -0
  34. package/dist/lib/trace-filters/rules/FilterAttachedDOMToDetachedDOMTrace.rule.js +55 -0
  35. package/dist/lib/trace-filters/rules/FilterDOMNodeChainTrace.rule.d.ts +15 -0
  36. package/dist/lib/trace-filters/rules/FilterDOMNodeChainTrace.rule.js +41 -0
  37. package/dist/lib/trace-filters/rules/FilterHermesTrace.rule.d.ts +15 -0
  38. package/dist/lib/trace-filters/rules/FilterHermesTrace.rule.js +29 -0
  39. package/dist/lib/trace-filters/rules/FilterInternalNodeTrace.rule.d.ts +15 -0
  40. package/dist/lib/trace-filters/rules/FilterInternalNodeTrace.rule.js +57 -0
  41. package/dist/lib/trace-filters/rules/FilterPendingActivitiesTrace.rule.d.ts +15 -0
  42. package/dist/lib/trace-filters/rules/FilterPendingActivitiesTrace.rule.js +62 -0
  43. package/dist/lib/trace-filters/rules/FilterShadowRootTrace.rule.d.ts +15 -0
  44. package/dist/lib/trace-filters/rules/FilterShadowRootTrace.rule.js +44 -0
  45. package/dist/lib/trace-filters/rules/FilterStyleEngineTrace.rule.d.ts +15 -0
  46. package/dist/lib/trace-filters/rules/FilterStyleEngineTrace.rule.js +49 -0
  47. package/dist/logger/LeakClusterLogger.js +1 -0
  48. package/dist/paths/TraceFinder.js +16 -2
  49. package/dist/trace-cluster/TraceBucket.d.ts +2 -1
  50. package/dist/trace-cluster/TraceBucket.js +22 -4
  51. package/dist/trace-cluster/TraceElement.d.ts +6 -1
  52. package/dist/trace-cluster/TraceElement.js +33 -0
  53. package/dist/trace-cluster/strategies/TraceSimilarityStrategy.js +10 -0
  54. package/package.json +1 -1
  55. package/static/visit-order-single-snapshot.json +19 -0
@@ -23,6 +23,8 @@ export declare type Optional<T> = Nullable<T> | undefined;
23
23
  /** @internal */
24
24
  export declare type AnyRecord = Record<string, RecordValue>;
25
25
  /** @internal */
26
+ export declare type StringRecord = Record<string, string>;
27
+ /** @internal */
26
28
  export declare type AnyAyncFunction = (...args: AnyValue[]) => Promise<AnyValue>;
27
29
  /** @internal */
28
30
  export declare type AnyFunction = (...args: AnyValue[]) => AnyValue;
@@ -47,6 +49,7 @@ export declare type FileOption = {
47
49
  workDir?: Optional<string>;
48
50
  clear?: boolean;
49
51
  transient?: boolean;
52
+ errorWhenAbsent?: boolean;
50
53
  };
51
54
  /** @internal */
52
55
  export declare type CLIOptions = {
@@ -65,6 +68,7 @@ export declare type XvfbType = {
65
68
  export declare type ShellOptions = {
66
69
  dir?: Optional<string>;
67
70
  ignoreError?: Optional<boolean>;
71
+ throwError?: Optional<boolean>;
68
72
  disconnectStdio?: Optional<boolean>;
69
73
  };
70
74
  /** @internal */
@@ -897,6 +901,7 @@ export interface IE2EStepBasic {
897
901
  /** @internal */
898
902
  export declare type E2EStepInfo = IE2EStepBasic & {
899
903
  snapshot: boolean;
904
+ snapshotFile?: string;
900
905
  screenshot: boolean;
901
906
  idx: number;
902
907
  JSHeapUsedSize: number;
@@ -940,6 +945,8 @@ export declare type RunMetaInfo = {
940
945
  * output data from the browser
941
946
  */
942
947
  browserInfo: IBrowserInfo;
948
+ /** @internal */
949
+ extraInfo?: StringRecord;
943
950
  };
944
951
  /**
945
952
  * A heap snapshot is generally a graph where graph nodes are JS heap objects
@@ -1218,6 +1225,16 @@ export interface IHeapLocation {
1218
1225
  * get the column number
1219
1226
  */
1220
1227
  column: number;
1228
+ /**
1229
+ * convert to a concise readable string output
1230
+ * (like calling `JSON.stringify(node, ...args)`).
1231
+ * Note: calling `JSON.stringify(node, ...args)` will not work
1232
+ * since the string is too large and not readable.
1233
+ *
1234
+ * This API does not completely serialize all the information
1235
+ * captured by the hosting object.
1236
+ */
1237
+ toJSONString(...args: Array<AnyValue>): string;
1221
1238
  }
1222
1239
  /** @internal */
1223
1240
  export interface IHeapEdgeBasic {
@@ -1290,6 +1307,16 @@ export interface IHeapEdge extends IHeapEdgeBasic {
1290
1307
  * JS heap object where this reference starts
1291
1308
  */
1292
1309
  fromNode: IHeapNode;
1310
+ /**
1311
+ * convert to a concise readable string output
1312
+ * (like calling `JSON.stringify(node, ...args)`).
1313
+ * Note: calling `JSON.stringify(node, ...args)` will not work
1314
+ * since the string is too large and not readable.
1315
+ *
1316
+ * This API does not completely serialize all the information
1317
+ * captured by the hosting object.
1318
+ */
1319
+ toJSONString(...args: Array<AnyValue>): string;
1293
1320
  }
1294
1321
  /**
1295
1322
  * A pseudo array containing all heap graph edges (references to heap objects
@@ -1446,6 +1473,11 @@ export interface IHeapNode extends IHeapNodeBasic {
1446
1473
  * object (including engine-internal, native, and JS references).
1447
1474
  */
1448
1475
  referrers: IHeapEdge[];
1476
+ /**
1477
+ * Get the number of all incoming references pointing to this heap object
1478
+ * (including engine-internal, native, and JS references).
1479
+ */
1480
+ numOfReferrers: number;
1449
1481
  /**
1450
1482
  * returns true if the heap node has been set an incoming edge
1451
1483
  * which leads to the parent node on the shortest path to GC root.
@@ -1493,6 +1525,16 @@ export interface IHeapNode extends IHeapNodeBasic {
1493
1525
  * inside the string node.
1494
1526
  */
1495
1527
  toStringNode(): Nullable<IHeapStringNode>;
1528
+ /**
1529
+ * convert to a concise readable string output
1530
+ * (like calling `JSON.stringify(node, ...args)`).
1531
+ * Note: calling `JSON.stringify(node, ...args)` will not work
1532
+ * since the string is too large and not readable.
1533
+ *
1534
+ * This API does not completely serialize all the information
1535
+ * captured by the hosting object.
1536
+ */
1537
+ toJSONString(...args: Array<AnyValue>): string;
1496
1538
  /**
1497
1539
  * executes a provided callback once for each JavaScript reference in the
1498
1540
  * hosting node (or outgoing edges from the node)
@@ -1563,6 +1605,24 @@ export interface IHeapNode extends IHeapNodeBasic {
1563
1605
  * ```
1564
1606
  */
1565
1607
  findAnyReferrer: (predicate: Predicator<IHeapEdge>) => Nullable<IHeapEdge>;
1608
+ /**
1609
+ * executes a provided predicate callback once for each JavaScript heap
1610
+ * object (heap graph node) pointing to the hosting node
1611
+ * (or nodes having edges to the hosting node) until the predicate
1612
+ * returns `true`
1613
+ * @param predicate the callback for each incoming JavaScript heap object
1614
+ * @returns the first referring node for which the predicate returns `true`,
1615
+ * otherwise returns `null` if no such node is found.
1616
+ *
1617
+ * * **Examples**:
1618
+ * ```typescript
1619
+ * const referrer = node.findAnyReferrerNode((node: IHeapNode) => {
1620
+ * // find the referring node with name "Parent"
1621
+ * return node.name === 'Parent';
1622
+ * });
1623
+ * ```
1624
+ */
1625
+ findAnyReferrerNode(predicate: Predicator<IHeapNode>): Nullable<IHeapNode>;
1566
1626
  /**
1567
1627
  * executes a provided predicate callback once for each JavaScript reference
1568
1628
  * pointing to the hosting node (or incoming edges to the node)
@@ -1580,6 +1640,24 @@ export interface IHeapNode extends IHeapNodeBasic {
1580
1640
  * ```
1581
1641
  */
1582
1642
  findReferrers: (predicate: Predicator<IHeapEdge>) => IHeapEdge[];
1643
+ /**
1644
+ * executes a provided predicate callback once for each JavaScript heap
1645
+ * object (heap graph node) pointing to the hosting node
1646
+ * (or nodes having edges to the hosting node)
1647
+ * @param predicate the callback for each referrer nodes
1648
+ * @returns an array containing all the referrer nodes for which the
1649
+ * predicate returns `true`, otherwise returns an empty array if no such
1650
+ * node is found.
1651
+ *
1652
+ * * **Examples**:
1653
+ * ```typescript
1654
+ * const referrerNodes = node.findReferrerNodes((node: IHeapNode) => {
1655
+ * // find all the referring nodes with name "Parent"
1656
+ * return node.name === 'Parent';
1657
+ * });
1658
+ * ```
1659
+ */
1660
+ findReferrerNodes: (predicate: Predicator<IHeapNode>) => IHeapNode[];
1583
1661
  /**
1584
1662
  * Given a JS reference's name and type, this API finds an outgoing JS
1585
1663
  * reference from the hosting node.
@@ -1851,12 +1929,12 @@ export interface IOveralLeakInfo extends Partial<IOveralHeapInfo> {
1851
1929
  }
1852
1930
  /** @internal */
1853
1931
  export declare type DiffLeakOptions = {
1854
- controlWorkDir: string;
1932
+ controlWorkDirs: string[];
1855
1933
  treatmentWorkDir: string;
1856
1934
  };
1857
1935
  /** @internal */
1858
1936
  export declare type PlotMemoryOptions = {
1859
- controlWorkDir?: string;
1937
+ controlWorkDirs?: string[];
1860
1938
  treatmentWorkDir?: string;
1861
1939
  workDir?: string;
1862
1940
  } & IMemoryAnalystOptions;
@@ -7,13 +7,15 @@
7
7
  * @format
8
8
  * @oncall web_perf_infra
9
9
  */
10
- import type { HaltOrThrowOptions, HeapNodeIdSet, ShellOptions } from './Types';
10
+ import type { HaltOrThrowOptions, HeapNodeIdSet, ShellOptions, StringRecord } from './Types';
11
11
  import type { Browser, Page } from 'puppeteer';
12
- import type { AnyAyncFunction, AnyOptions, E2EStepInfo, IHeapSnapshot, IHeapNode, IHeapEdge, IScenario, ILeakFilter, LeakTracePathItem, RunMetaInfo, RawHeapSnapshot, Nullable, Optional } from './Types';
12
+ import type { AnyAyncFunction, AnyOptions, E2EStepInfo, IHeapSnapshot, IHeapNode, IHeapEdge, IScenario, ILeakFilter, LeakTracePathItem, RawHeapSnapshot, Nullable, Optional } from './Types';
13
13
  declare function isHermesInternalObject(node: IHeapNode): boolean;
14
14
  declare function isStackTraceFrame(node: IHeapNode): boolean;
15
15
  declare function isFiberNode(node: Optional<IHeapNode>): boolean;
16
16
  declare function isDetachedFiberNode(node: IHeapNode): boolean;
17
+ declare function isDOMInternalNode(node: Optional<IHeapNode>): boolean;
18
+ declare function isGlobalHandlesNode(node: Optional<IHeapNode>): boolean;
17
19
  declare function isDetachedDOMNode(node: Optional<IHeapNode>, args?: AnyOptions): boolean;
18
20
  declare function isWeakMapEdge(edge: IHeapEdge): boolean;
19
21
  declare function isWeakMapEdgeToKey(edge: IHeapEdge): boolean;
@@ -23,6 +25,9 @@ declare function isFiberNodeDeletionsEdge(edge: IHeapEdge): boolean;
23
25
  declare function isBlinkRootNode(node: IHeapNode): boolean;
24
26
  declare function isPendingActivityNode(node: IHeapNode): boolean;
25
27
  declare function isDOMNodeIncomplete(node: IHeapNode): boolean;
28
+ declare function isXMLDocumentNode(node: IHeapNode): boolean;
29
+ declare function isHTMLDocumentNode(node: IHeapNode): boolean;
30
+ declare function isDOMTextNode(node: IHeapNode): boolean;
26
31
  declare function isRootNode(node: IHeapNode, opt?: AnyOptions): boolean;
27
32
  declare function isDirectPropEdge(edge: IHeapEdge): boolean;
28
33
  declare function isReturnEdge(edge: IHeapEdge): boolean;
@@ -64,12 +69,8 @@ declare function getBooleanNodeValue(node: IHeapNode): Nullable<boolean>;
64
69
  declare function getToNodeByEdge(node: Nullable<IHeapNode>, propName: string, propType?: string): Nullable<IHeapNode>;
65
70
  declare function extractHTMLElementNodeInfo(node: IHeapNode): string;
66
71
  declare function hasOnlyWeakReferrers(node: IHeapNode): boolean;
67
- declare function getRunMetaFilePath(): string;
68
- declare function loadRunMetaInfo(metaFile?: Optional<string>): RunMetaInfo;
69
- declare function loadTargetInfoFromRunMeta(): void;
70
72
  declare function getSnapshotSequenceFilePath(): string;
71
73
  declare function loadTabsOrder(metaFile?: Optional<string>): E2EStepInfo[];
72
- declare function isInterestingPath(p: LeakTracePathItem): boolean;
73
74
  declare function isObjectNode(node: IHeapNode): boolean;
74
75
  declare function isPlainJSObjectNode(node: IHeapNode): boolean;
75
76
  declare function pathHasDetachedHTMLNode(path: LeakTracePathItem): boolean;
@@ -125,16 +126,20 @@ declare function isNodeDominatedByDeletionsArray(node: IHeapNode): boolean;
125
126
  declare function getUniqueID(): string;
126
127
  declare function getClosureSourceUrl(node: IHeapNode): Nullable<string>;
127
128
  export declare function runShell(command: string, options?: ShellOptions): Nullable<string>;
128
- export declare function getRetainedSize(node: IHeapNode): number;
129
- export declare function aggregateDominatorMetrics(ids: HeapNodeIdSet, snapshot: IHeapSnapshot, checkNodeCb: (node: IHeapNode) => boolean, nodeMetricsCb: (node: IHeapNode) => number): number;
129
+ declare function getRetainedSize(node: IHeapNode): number;
130
+ declare function aggregateDominatorMetrics(ids: HeapNodeIdSet, snapshot: IHeapSnapshot, checkNodeCb: (node: IHeapNode) => boolean, nodeMetricsCb: (node: IHeapNode) => number): number;
131
+ declare function getLeakTracePathLength(path: LeakTracePathItem): number;
132
+ declare function getNumberAtPercentile(arr: number[], percentile: number): number;
133
+ declare function mapToObject(map: Map<string, string>): StringRecord;
134
+ declare function objectToMap(object: StringRecord): Map<string, string>;
130
135
  declare const _default: {
131
136
  aggregateDominatorMetrics: typeof aggregateDominatorMetrics;
132
137
  applyToNodes: typeof applyToNodes;
133
138
  callAsync: typeof callAsync;
134
139
  camelCaseToReadableString: typeof camelCaseToReadableString;
140
+ checkIsChildOfParent: typeof checkIsChildOfParent;
135
141
  checkSnapshots: typeof checkSnapshots;
136
142
  checkUninstalledLibrary: typeof checkUninstalledLibrary;
137
- checkIsChildOfParent: typeof checkIsChildOfParent;
138
143
  closePuppeteer: typeof closePuppeteer;
139
144
  dumpSnapshot: typeof dumpSnapshot;
140
145
  equalOrMatch: typeof equalOrMatch;
@@ -143,29 +148,31 @@ declare const _default: {
143
148
  extractHTMLElementNodeInfo: typeof extractHTMLElementNodeInfo;
144
149
  filterNodesInPlace: typeof filterNodesInPlace;
145
150
  getAllDominators: typeof getAllDominators;
151
+ getBooleanNodeValue: typeof getBooleanNodeValue;
146
152
  getClosureSourceUrl: typeof getClosureSourceUrl;
147
153
  getConditionalDominatorIds: typeof getConditionalDominatorIds;
148
- getError: typeof getError;
149
154
  getEdgeByNameAndType: typeof getEdgeByNameAndType;
155
+ getError: typeof getError;
150
156
  getLastNodeId: typeof getLastNodeId;
157
+ getLeakTracePathLength: typeof getLeakTracePathLength;
151
158
  getLeakedNode: typeof getLeakedNode;
152
159
  getNodesIdSet: typeof getNodesIdSet;
160
+ getNumberAtPercentile: typeof getNumberAtPercentile;
153
161
  getNumberNodeValue: typeof getNumberNodeValue;
154
162
  getReadableBytes: typeof getReadableBytes;
155
163
  getReadablePercent: typeof getReadablePercent;
156
164
  getReadableTime: typeof getReadableTime;
157
165
  getRetainedSize: typeof getRetainedSize;
158
- getRunMetaFilePath: typeof getRunMetaFilePath;
159
166
  getScenarioName: typeof getScenarioName;
160
167
  getSingleSnapshotFileForAnalysis: typeof getSingleSnapshotFileForAnalysis;
161
168
  getSnapshotDirForAnalysis: typeof getSnapshotDirForAnalysis;
162
- getSnapshotFilesInDir: typeof getSnapshotFilesInDir;
169
+ getSnapshotFilePath: typeof getSnapshotFilePath;
170
+ getSnapshotFilePathWithTabType: typeof getSnapshotFilePathWithTabType;
163
171
  getSnapshotFilesFromTabsOrder: typeof getSnapshotFilesFromTabsOrder;
172
+ getSnapshotFilesInDir: typeof getSnapshotFilesInDir;
164
173
  getSnapshotFromFile: typeof getSnapshotFromFile;
165
174
  getSnapshotNodeIdsFromFile: typeof getSnapshotNodeIdsFromFile;
166
175
  getSnapshotSequenceFilePath: typeof getSnapshotSequenceFilePath;
167
- getSnapshotFilePath: typeof getSnapshotFilePath;
168
- getSnapshotFilePathWithTabType: typeof getSnapshotFilePathWithTabType;
169
176
  getStringNodeValue: typeof getStringNodeValue;
170
177
  getToNodeByEdge: typeof getToNodeByEdge;
171
178
  getUniqueID: typeof getUniqueID;
@@ -176,18 +183,21 @@ declare const _default: {
176
183
  hasReactEdges: typeof hasReactEdges;
177
184
  isAlternateNode: typeof isAlternateNode;
178
185
  isBlinkRootNode: typeof isBlinkRootNode;
186
+ isDOMInternalNode: typeof isDOMInternalNode;
187
+ isDOMNodeIncomplete: typeof isDOMNodeIncomplete;
188
+ isDOMTextNode: typeof isDOMTextNode;
179
189
  isDebuggableNode: typeof isDebuggableNode;
180
- isDetachedFiberNode: typeof isDetachedFiberNode;
181
190
  isDetachedDOMNode: typeof isDetachedDOMNode;
191
+ isDetachedFiberNode: typeof isDetachedFiberNode;
182
192
  isDirectPropEdge: typeof isDirectPropEdge;
183
193
  isDocumentDOMTreesRoot: typeof isDocumentDOMTreesRoot;
184
- isDOMNodeIncomplete: typeof isDOMNodeIncomplete;
185
194
  isEssentialEdge: typeof isEssentialEdge;
186
195
  isFiberNode: typeof isFiberNode;
187
196
  isFiberNodeDeletionsEdge: typeof isFiberNodeDeletionsEdge;
197
+ isGlobalHandlesNode: typeof isGlobalHandlesNode;
198
+ isHTMLDocumentNode: typeof isHTMLDocumentNode;
188
199
  isHermesInternalObject: typeof isHermesInternalObject;
189
200
  isHostRoot: typeof isHostRoot;
190
- isInterestingPath: typeof isInterestingPath;
191
201
  isMeaningfulEdge: typeof isMeaningfulEdge;
192
202
  isMeaningfulNode: typeof isMeaningfulNode;
193
203
  isNodeDominatedByDeletionsArray: typeof isNodeDominatedByDeletionsArray;
@@ -206,17 +216,18 @@ declare const _default: {
206
216
  isWeakMapEdge: typeof isWeakMapEdge;
207
217
  isWeakMapEdgeToKey: typeof isWeakMapEdgeToKey;
208
218
  isWeakMapEdgeToValue: typeof isWeakMapEdgeToValue;
219
+ isXMLDocumentNode: typeof isXMLDocumentNode;
209
220
  iterateChildFiberNodes: typeof iterateChildFiberNodes;
210
221
  iterateDescendantFiberNodes: typeof iterateDescendantFiberNodes;
211
- loadRunMetaInfo: typeof loadRunMetaInfo;
212
222
  loadLeakFilter: typeof loadLeakFilter;
213
223
  loadScenario: typeof loadScenario;
214
224
  loadTabsOrder: typeof loadTabsOrder;
215
- loadTargetInfoFromRunMeta: typeof loadTargetInfoFromRunMeta;
225
+ mapToObject: typeof mapToObject;
216
226
  markAllDetachedFiberNode: typeof markAllDetachedFiberNode;
217
227
  markAlternateFiberNode: typeof markAlternateFiberNode;
218
228
  memCache: Record<string, any>;
219
229
  normalizeBaseUrl: typeof normalizeBaseUrl;
230
+ objectToMap: typeof objectToMap;
220
231
  pathHasDetachedHTMLNode: typeof pathHasDetachedHTMLNode;
221
232
  pathHasEdgeWithIndex: typeof pathHasEdgeWithIndex;
222
233
  repeat: typeof repeat;
@@ -229,7 +240,6 @@ declare const _default: {
229
240
  shuffleArray: typeof shuffleArray;
230
241
  throwError: typeof throwError;
231
242
  upperCaseFirstCharacter: typeof upperCaseFirstCharacter;
232
- getBooleanNodeValue: typeof getBooleanNodeValue;
233
243
  };
234
244
  export default _default;
235
245
  //# sourceMappingURL=Utils.d.ts.map