@memlab/core 1.1.22 → 1.1.24

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 (119) hide show
  1. package/dist/__tests__/lib/TestUtils.d.ts +13 -0
  2. package/dist/__tests__/lib/TestUtils.d.ts.map +1 -0
  3. package/dist/__tests__/lib/TestUtils.js +39 -0
  4. package/dist/__tests__/parser/HeapParser.test.d.ts.map +1 -0
  5. package/dist/__tests__/parser/NodeHeap.test.d.ts.map +1 -0
  6. package/dist/__tests__/parser/StringNode.test.d.ts.map +1 -0
  7. package/dist/__tests__/parser/traverse/HeapNodeTraverse.test.d.ts.map +1 -0
  8. package/dist/__tests__/utils/utils.test.d.ts.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +4 -1
  12. package/dist/lib/BaseOption.d.ts.map +1 -0
  13. package/dist/lib/BrowserInfo.d.ts +1 -1
  14. package/dist/lib/BrowserInfo.d.ts.map +1 -0
  15. package/dist/lib/Config.d.ts +2 -2
  16. package/dist/lib/Config.d.ts.map +1 -0
  17. package/dist/lib/Config.js +4 -1
  18. package/dist/lib/Console.d.ts.map +1 -0
  19. package/dist/lib/Constant.d.ts +1 -1
  20. package/dist/lib/Constant.d.ts.map +1 -0
  21. package/dist/lib/FileManager.d.ts +6 -1
  22. package/dist/lib/FileManager.d.ts.map +1 -0
  23. package/dist/lib/FileManager.js +24 -1
  24. package/dist/lib/HeapAnalyzer.d.ts +3 -3
  25. package/dist/lib/HeapAnalyzer.d.ts.map +1 -0
  26. package/dist/lib/HeapAnalyzer.js +26 -14
  27. package/dist/lib/HeapParser.d.ts.map +1 -0
  28. package/dist/lib/InternalValueSetter.d.ts.map +1 -0
  29. package/dist/lib/NodeHeap.d.ts.map +1 -0
  30. package/dist/lib/PackageInfoLoader.d.ts.map +1 -0
  31. package/dist/lib/ProcessManager.d.ts +1 -1
  32. package/dist/lib/ProcessManager.d.ts.map +1 -0
  33. package/dist/lib/RunInfoUtils.d.ts +1 -0
  34. package/dist/lib/RunInfoUtils.d.ts.map +1 -0
  35. package/dist/lib/RunInfoUtils.js +8 -4
  36. package/dist/lib/SerializationHelper.d.ts +18 -0
  37. package/dist/lib/SerializationHelper.d.ts.map +1 -0
  38. package/dist/lib/SerializationHelper.js +36 -0
  39. package/dist/lib/Serializer.d.ts +4 -8
  40. package/dist/lib/Serializer.d.ts.map +1 -0
  41. package/dist/lib/Serializer.js +12 -3
  42. package/dist/lib/StringLoader.d.ts +2 -2
  43. package/dist/lib/StringLoader.d.ts.map +1 -0
  44. package/dist/lib/TraceSampler.d.ts +1 -1
  45. package/dist/lib/TraceSampler.d.ts.map +1 -0
  46. package/dist/lib/Types.d.ts +81 -63
  47. package/dist/lib/Types.d.ts.map +1 -0
  48. package/dist/lib/Utils.d.ts +6 -2
  49. package/dist/lib/Utils.d.ts.map +1 -0
  50. package/dist/lib/Utils.js +45 -4
  51. package/dist/lib/charts/MemoryBarChart.d.ts.map +1 -0
  52. package/dist/lib/charts/MemoryBarChart.js +2 -2
  53. package/dist/lib/heap-data/HeapEdge.d.ts.map +1 -0
  54. package/dist/lib/heap-data/HeapLocation.d.ts.map +1 -0
  55. package/dist/lib/heap-data/HeapNode.d.ts.map +1 -0
  56. package/dist/lib/heap-data/HeapSnapshot.d.ts.map +1 -0
  57. package/dist/lib/heap-data/HeapStringNode.d.ts.map +1 -0
  58. package/dist/lib/heap-data/HeapUtils.d.ts.map +1 -0
  59. package/dist/lib/heap-data/MemLabTagStore.d.ts +1 -1
  60. package/dist/lib/heap-data/MemLabTagStore.d.ts.map +1 -0
  61. package/dist/lib/leak-filters/BaseLeakFilter.rule.d.ts.map +1 -0
  62. package/dist/lib/leak-filters/LeakFilterRuleList.d.ts.map +1 -0
  63. package/dist/lib/leak-filters/LeakFilterRuleList.js +2 -0
  64. package/dist/lib/leak-filters/LeakObjectFilter.d.ts.map +1 -0
  65. package/dist/lib/leak-filters/rules/FilterByExternalFilter.rule.d.ts.map +1 -0
  66. package/dist/lib/leak-filters/rules/FilterDetachedDOMElement.rule.d.ts +0 -1
  67. package/dist/lib/leak-filters/rules/FilterDetachedDOMElement.rule.d.ts.map +1 -0
  68. package/dist/lib/leak-filters/rules/FilterDetachedDOMElement.rule.js +22 -9
  69. package/dist/lib/leak-filters/rules/FilterHermesNode.rule.d.ts.map +1 -0
  70. package/dist/lib/leak-filters/rules/FilterOverSizedNodeAsLeak.rule.d.ts.map +1 -0
  71. package/dist/lib/leak-filters/rules/FilterStackTraceFrame.rule.d.ts.map +1 -0
  72. package/dist/lib/leak-filters/rules/FilterTrivialNode.rule.d.ts.map +1 -0
  73. package/dist/lib/leak-filters/rules/FilterUnmountedFiberNode.rule.d.ts.map +1 -0
  74. package/dist/lib/leak-filters/rules/FilterUnmountedFiberNode.rule.js +4 -3
  75. package/dist/lib/leak-filters/rules/FilterXMLHTTPRequest.rule.d.ts +20 -0
  76. package/dist/lib/leak-filters/rules/FilterXMLHTTPRequest.rule.d.ts.map +1 -0
  77. package/dist/lib/leak-filters/rules/FilterXMLHTTPRequest.rule.js +30 -0
  78. package/dist/lib/trace-filters/BaseTraceFilter.rule.d.ts +1 -1
  79. package/dist/lib/trace-filters/BaseTraceFilter.rule.d.ts.map +1 -0
  80. package/dist/lib/trace-filters/LeakTraceFilter.d.ts.map +1 -0
  81. package/dist/lib/trace-filters/TraceFilterRuleList.d.ts.map +1 -0
  82. package/dist/lib/trace-filters/rules/FilterAttachedDOMToDetachedDOMTrace.rule.d.ts.map +1 -0
  83. package/dist/lib/trace-filters/rules/FilterCppRootsToDetachedDOMTrace.rule.d.ts.map +1 -0
  84. package/dist/lib/trace-filters/rules/FilterDOMNodeChainTrace.rule.d.ts.map +1 -0
  85. package/dist/lib/trace-filters/rules/FilterHermesTrace.rule.d.ts.map +1 -0
  86. package/dist/lib/trace-filters/rules/FilterInternalNodeTrace.rule.d.ts.map +1 -0
  87. package/dist/lib/trace-filters/rules/FilterPendingActivitiesTrace.rule.d.ts.map +1 -0
  88. package/dist/lib/trace-filters/rules/FilterShadowRootTrace.rule.d.ts.map +1 -0
  89. package/dist/lib/trace-filters/rules/FilterStyleEngineTrace.rule.d.ts.map +1 -0
  90. package/dist/logger/LeakClusterLogger.d.ts.map +1 -0
  91. package/dist/logger/LeakTraceDetailsLogger.d.ts.map +1 -0
  92. package/dist/modes/BaseMode.d.ts.map +1 -0
  93. package/dist/modes/InteractionTestMode.d.ts.map +1 -0
  94. package/dist/modes/MeasureMode.d.ts.map +1 -0
  95. package/dist/modes/RunningModes.d.ts.map +1 -0
  96. package/dist/paths/TraceFinder.d.ts.map +1 -0
  97. package/dist/trace-cluster/ClusterUtils.d.ts.map +1 -0
  98. package/dist/trace-cluster/ClusterUtilsHelper.d.ts +2 -2
  99. package/dist/trace-cluster/ClusterUtilsHelper.d.ts.map +1 -0
  100. package/dist/trace-cluster/ClusteringHeuristics.d.ts.map +1 -0
  101. package/dist/trace-cluster/EvalutationMetric.d.ts +1 -1
  102. package/dist/trace-cluster/EvalutationMetric.d.ts.map +1 -0
  103. package/dist/trace-cluster/MultiIterationSeqClustering.d.ts +1 -1
  104. package/dist/trace-cluster/MultiIterationSeqClustering.d.ts.map +1 -0
  105. package/dist/trace-cluster/SequentialClustering.d.ts.map +1 -0
  106. package/dist/trace-cluster/TraceBucket.d.ts +2 -2
  107. package/dist/trace-cluster/TraceBucket.d.ts.map +1 -0
  108. package/dist/trace-cluster/TraceBucket.js +41 -11
  109. package/dist/trace-cluster/TraceElement.d.ts +1 -1
  110. package/dist/trace-cluster/TraceElement.d.ts.map +1 -0
  111. package/dist/trace-cluster/TraceElement.js +15 -15
  112. package/dist/trace-cluster/strategies/MLTraceSimilarityStrategy.d.ts.map +1 -0
  113. package/dist/trace-cluster/strategies/TraceAsClusterStrategy.d.ts.map +1 -0
  114. package/dist/trace-cluster/strategies/TraceSimilarityStrategy.d.ts.map +1 -0
  115. package/dist/trace-cluster/strategies/machine-learning/DistanceMatrix.d.ts.map +1 -0
  116. package/dist/trace-cluster/strategies/machine-learning/HAC.d.ts.map +1 -0
  117. package/dist/trace-cluster/strategies/machine-learning/Ngram.d.ts.map +1 -0
  118. package/dist/trace-cluster/strategies/machine-learning/TfidfVectorizer.d.ts.map +1 -0
  119. package/package.json +5 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeapUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/heap-data/HeapUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAK9C"}
@@ -8,7 +8,7 @@
8
8
  * @oncall web_perf_infra
9
9
  */
10
10
  import type { AnyValue, IHeapSnapshot } from '../Types';
11
- declare type AnyObject = Record<AnyValue, AnyValue>;
11
+ type AnyObject = Record<AnyValue, AnyValue>;
12
12
  /** @internal */
13
13
  export default class MemLabTaggedStore {
14
14
  taggedObjects: Record<string, WeakSet<AnyObject>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemLabTagStore.d.ts","sourceRoot":"","sources":["../../../src/lib/heap-data/MemLabTagStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,QAAQ,EAGR,aAAa,EAGd,MAAM,UAAU,CAAC;AAElB,KAAK,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAQ5C,gBAAgB;AAChB,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAC7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzD,OAAO;IAIP,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IACrD,SAAgB,EAAE,SAAiB;WAGrB,WAAW,IAAI,iBAAiB;WAQhC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;WAUpD,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;CAgF1E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseLeakFilter.rule.d.ts","sourceRoot":"","sources":["../../../src/lib/leak-filters/BaseLeakFilter.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAEtE;;;GAGG;AACH,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CACJ,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,aAAa,GAC3B,YAAY,CAAC;CACjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeakFilterRuleList.d.ts","sourceRoot":"","sources":["../../../src/lib/leak-filters/LeakFilterRuleList.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;;AAqB5D,wBAAwE"}
@@ -21,6 +21,7 @@ const FilterOverSizedNodeAsLeak_rule_1 = require("./rules/FilterOverSizedNodeAsL
21
21
  const FilterStackTraceFrame_rule_1 = require("./rules/FilterStackTraceFrame.rule");
22
22
  const FilterTrivialNode_rule_1 = require("./rules/FilterTrivialNode.rule");
23
23
  const FilterUnmountedFiberNode_rule_1 = require("./rules/FilterUnmountedFiberNode.rule");
24
+ const FilterXMLHTTPRequest_rule_1 = require("./rules/FilterXMLHTTPRequest.rule");
24
25
  const list = [
25
26
  new FilterByExternalFilter_rule_1.FilterByExternalFilterRule(),
26
27
  new FilterTrivialNode_rule_1.FilterTrivialNodeRule(),
@@ -29,5 +30,6 @@ const list = [
29
30
  new FilterUnmountedFiberNode_rule_1.FilterUnmountedFiberNodeRule(),
30
31
  new FilterDetachedDOMElement_rule_1.FilterDetachedDOMElementRule(),
31
32
  new FilterStackTraceFrame_rule_1.FilterStackTraceFrameRule(),
33
+ new FilterXMLHTTPRequest_rule_1.FilterXMLHTTPRequestRule(),
32
34
  ];
33
35
  exports.default = (0, InternalValueSetter_1.setInternalValue)(list, __filename, Constant_1.default.internalDir);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeakObjectFilter.d.ts","sourceRoot":"","sources":["../../../src/lib/leak-filters/LeakObjectFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAItE;;;GAGG;AACH,qBAAa,gBAAgB;IACpB,MAAM,CACX,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,aAAa,GAC3B,OAAO;CAYX"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterByExternalFilter.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterByExternalFilter.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAE3E;;GAEG;AACH,qBAAa,0BAA2B,YAAW,qBAAqB;IACtE,MAAM,CACJ,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,aAAa,GAC3B,YAAY;CAQhB"}
@@ -15,6 +15,5 @@ import { ILeakObjectFilterRule, LeakDecision } from '../BaseLeakFilter.rule';
15
15
  */
16
16
  export declare class FilterDetachedDOMElementRule implements ILeakObjectFilterRule {
17
17
  filter(_config: MemLabConfig, node: IHeapNode): LeakDecision;
18
- protected checkDetachedFiberNode(config: MemLabConfig, node: IHeapNode): boolean;
19
18
  }
20
19
  //# sourceMappingURL=FilterDetachedDOMElement.rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterDetachedDOMElement.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterDetachedDOMElement.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAG3E;;GAEG;AACH,qBAAa,4BAA6B,YAAW,qBAAqB;IACxE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;CAa7D"}
@@ -23,18 +23,31 @@ class FilterDetachedDOMElementRule {
23
23
  const isDetached = Utils_1.default.isDetachedDOMNode(node, {
24
24
  ignoreInternalNode: true,
25
25
  });
26
- if (isDetached) {
26
+ if (isDetached &&
27
+ !isDominatedByEdgeName(node, 'stateNode') &&
28
+ !isDetachedDOMNodeDominatedByDehydratedMemoizedState(node)) {
27
29
  return BaseLeakFilter_rule_1.LeakDecision.LEAK;
28
30
  }
29
31
  return BaseLeakFilter_rule_1.LeakDecision.MAYBE_LEAK;
30
32
  }
31
- checkDetachedFiberNode(config, node) {
32
- if (!config.detectFiberNodeLeak ||
33
- !Utils_1.default.isFiberNode(node) ||
34
- Utils_1.default.hasHostRoot(node)) {
35
- return false;
36
- }
37
- return !Utils_1.default.isNodeDominatedByDeletionsArray(node);
38
- }
39
33
  }
40
34
  exports.FilterDetachedDOMElementRule = FilterDetachedDOMElementRule;
35
+ function isDominatedByEdgeName(node, edgeNameOrIndex) {
36
+ var _a;
37
+ const referrerNode = node.getAnyReferrerNode(edgeNameOrIndex);
38
+ if (referrerNode == null) {
39
+ return false;
40
+ }
41
+ return referrerNode.id === ((_a = node.dominatorNode) === null || _a === void 0 ? void 0 : _a.id);
42
+ }
43
+ // check if the input is a detached DOM node dominated by a 'dehydrated'
44
+ // edge from a memoizedState. In this case, the node is not a memory leak
45
+ function isDetachedDOMNodeDominatedByDehydratedMemoizedState(node) {
46
+ var _a;
47
+ const referrerNode = node.getAnyReferrerNode('dehydrated', 'property');
48
+ if (referrerNode == null) {
49
+ return false;
50
+ }
51
+ return (referrerNode.id === ((_a = node.dominatorNode) === null || _a === void 0 ? void 0 : _a.id) &&
52
+ isDominatedByEdgeName(referrerNode, 'memoizedState'));
53
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterHermesNode.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterHermesNode.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAG3E,qBAAa,oBAAqB,YAAW,qBAAqB;IACzD,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;CAOnE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterOverSizedNodeAsLeak.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterOverSizedNodeAsLeak.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAE3E;;GAEG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;IACzE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;CAY5D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterStackTraceFrame.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterStackTraceFrame.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAG3E;;GAEG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;IACrE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;CAK7D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterTrivialNode.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterTrivialNode.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAG3E;;GAEG;AACH,qBAAa,qBAAsB,YAAW,qBAAqB;IACjE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;IAM3D,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;CAOlD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterUnmountedFiberNode.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterUnmountedFiberNode.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAG3E;;GAEG;AACH,qBAAa,4BAA6B,YAAW,qBAAqB;IACxE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;IAO3D,SAAS,CAAC,sBAAsB,CAC9B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,SAAS,GACd,OAAO;CASX"}
@@ -26,9 +26,10 @@ class FilterUnmountedFiberNodeRule {
26
26
  return BaseLeakFilter_rule_1.LeakDecision.MAYBE_LEAK;
27
27
  }
28
28
  checkDetachedFiberNode(config, node) {
29
- if (!config.detectFiberNodeLeak ||
30
- !Utils_1.default.isFiberNode(node) ||
31
- Utils_1.default.hasHostRoot(node)) {
29
+ if (!config.detectFiberNodeLeak || !Utils_1.default.isFiberNode(node)) {
30
+ return false;
31
+ }
32
+ if (!Utils_1.default.isDetachedFiberNode(node)) {
32
33
  return false;
33
34
  }
34
35
  return !Utils_1.default.isNodeDominatedByDeletionsArray(node);
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @format
8
+ * @oncall web_perf_infra
9
+ */
10
+ import type { MemLabConfig } from '../../Config';
11
+ import type { IHeapNode } from '../../Types';
12
+ import { ILeakObjectFilterRule, LeakDecision } from '../BaseLeakFilter.rule';
13
+ /**
14
+ * mark XMLHTTPRequest with status ok as memory leaks
15
+ */
16
+ export declare class FilterXMLHTTPRequestRule implements ILeakObjectFilterRule {
17
+ filter(_config: MemLabConfig, node: IHeapNode): LeakDecision;
18
+ protected checkFinishedXMLHTTPRequest(node: IHeapNode): boolean;
19
+ }
20
+ //# sourceMappingURL=FilterXMLHTTPRequest.rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterXMLHTTPRequest.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/leak-filters/rules/FilterXMLHTTPRequest.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAY,SAAS,EAAC,MAAM,aAAa,CAAC;AACtD,OAAO,EAAC,qBAAqB,EAAE,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAE3E;;GAEG;AACH,qBAAa,wBAAyB,YAAW,qBAAqB;IACpE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY;IAM5D,SAAS,CAAC,2BAA2B,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;CAUhE"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ *
8
+ * @format
9
+ * @oncall web_perf_infra
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FilterXMLHTTPRequestRule = void 0;
13
+ const BaseLeakFilter_rule_1 = require("../BaseLeakFilter.rule");
14
+ /**
15
+ * mark XMLHTTPRequest with status ok as memory leaks
16
+ */
17
+ class FilterXMLHTTPRequestRule {
18
+ filter(_config, node) {
19
+ return this.checkFinishedXMLHTTPRequest(node)
20
+ ? BaseLeakFilter_rule_1.LeakDecision.LEAK
21
+ : BaseLeakFilter_rule_1.LeakDecision.MAYBE_LEAK;
22
+ }
23
+ checkFinishedXMLHTTPRequest(node) {
24
+ if (node.name !== 'XMLHttpRequest' || node.type !== 'native') {
25
+ return false;
26
+ }
27
+ return (node.findAnyReference((edge) => edge.toNode.name === '{"status":"ok"}') != null);
28
+ }
29
+ }
30
+ exports.FilterXMLHTTPRequestRule = FilterXMLHTTPRequestRule;
@@ -18,7 +18,7 @@ export declare enum TraceDecision {
18
18
  MAYBE_INSIGHTFUL = "maybe-insightful",
19
19
  NOT_INSIGHTFUL = "not-insightful"
20
20
  }
21
- export declare type LeakTraceFilterOptions = {
21
+ export type LeakTraceFilterOptions = {
22
22
  config?: MemLabConfig;
23
23
  snapshot?: IHeapSnapshot;
24
24
  leakedNodeIds?: HeapNodeIdSet;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTraceFilter.rule.d.ts","sourceRoot":"","sources":["../../../src/lib/trace-filters/BaseTraceFilter.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAE9E;;;GAGG;AACH,oBAAY,aAAa;IACvB,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;CAClC;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAAC;CAC9E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeakTraceFilter.d.ts","sourceRoot":"","sources":["../../../src/lib/trace-filters/LeakTraceFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,wBAAwB,CAAC;AAInE;;;;GAIG;AACH,qBAAa,eAAe;IACnB,MAAM,CACX,CAAC,EAAE,iBAAiB,EACpB,OAAO,EAAE,sBAAsB,GAC9B,OAAO;CAYX"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceFilterRuleList.d.ts","sourceRoot":"","sources":["../../../src/lib/trace-filters/TraceFilterRuleList.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;;AAqB5D,wBAAwE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterAttachedDOMToDetachedDOMTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterAttachedDOMToDetachedDOMTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAW,MAAM,aAAa,CAAC;AAK7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,uCACX,YAAW,oBAAoB;IAE/B,MAAM,CACJ,CAAC,EAAE,iBAAiB,EACpB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CASjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterCppRootsToDetachedDOMTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterCppRootsToDetachedDOMTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAW,MAAM,aAAa,CAAC;AAK7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,oCACX,YAAW,oBAAoB;IAE/B,MAAM,CACJ,CAAC,EAAE,iBAAiB,EACpB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CASjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterDOMNodeChainTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterDOMNodeChainTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAW,MAAM,aAAa,CAAC;AAK7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,2BAA4B,YAAW,oBAAoB;IACtE,MAAM,CACJ,CAAC,EAAE,iBAAiB,EACpB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CASjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterHermesTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterHermesTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAInD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,qBAAsB,YAAW,oBAAoB;IAChE,MAAM,CACJ,EAAE,EAAE,iBAAiB,EACrB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CAQjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterInternalNodeTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterInternalNodeTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAW,MAAM,aAAa,CAAC;AAK7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,2BAA4B,YAAW,oBAAoB;IACtE,MAAM,CACJ,CAAC,EAAE,iBAAiB,EACpB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CASjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterPendingActivitiesTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterPendingActivitiesTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAW,MAAM,aAAa,CAAC;AAK7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,gCAAiC,YAAW,oBAAoB;IAC3E,MAAM,CACJ,CAAC,EAAE,iBAAiB,EACpB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CAYjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterShadowRootTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterShadowRootTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAW,MAAM,aAAa,CAAC;AAK7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,yBAA0B,YAAW,oBAAoB;IACpE,MAAM,CACJ,CAAC,EAAE,iBAAiB,EACpB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CASjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterStyleEngineTrace.rule.d.ts","sourceRoot":"","sources":["../../../../src/lib/trace-filters/rules/FilterStyleEngineTrace.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAW,MAAM,aAAa,CAAC;AAK7D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,MAAM,CACJ,CAAC,EAAE,iBAAiB,EACpB,OAAO,GAAE,sBAA2B,GACnC,aAAa;CASjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeakClusterLogger.d.ts","sourceRoot":"","sources":["../../src/logger/LeakClusterLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAItB,cAAM,iBAAiB;IACrB,QAAQ,EAAE,MAAM,CAAC;;IAKX,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAW/D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAalD,mBAAmB,CAAC,OAAO,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAarE,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAKlE,uBAAuB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAcvD,WAAW,CACT,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE;QAAC,WAAW,CAAC,EAAE,gBAAgB,CAAA;KAAM,GAC7C,IAAI;IAoBP,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,IAAI;IAqBhD,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI;IAYnD,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAW7C,gBAAgB,CAAC,OAAO,EAAE,YAAY;IAWtC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE;IAyB5C,WAAW,CACT,SAAS,EAAE,WAAW,EAAE,EACxB,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAM;IAwBnC,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAKhD,6BAA6B,CAC3B,SAAS,EAAE,WAAW,EAAE,EACxB,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAM;IAwBnC,6BAA6B,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;CAI7D;;AAED,wBAAuC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeakTraceDetailsLogger.d.ts","sourceRoot":"","sources":["../../src/logger/LeakTraceDetailsLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACT,MAAM,cAAc,CAAC;AAOtB,cAAM,sBAAsB;IAC1B,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIlD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOzC,QAAQ,CACN,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACtC,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,GACf,QAAQ,CAAC,eAAe,CAAC;IAW5B,SAAS,CACP,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACtC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,MAAM,EAAE,MAAM,GACb,KAAK,CAAC,eAAe,CAAC;CAkB1B;;AAED,wBAA4C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseMode.d.ts","sourceRoot":"","sources":["../../src/modes/BaseMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,qBAAqB,EACrB,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAIpC,cAAM,QAAQ;IACZ,SAAS,CAAC,MAAM,EAAE,MAAM,CAAiB;IACzC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,aAAa,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;IAKrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAKzC,YAAY,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAK7C,gBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAKjD,uBAAuB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAKxD,oBAAoB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAKrD,sBAAsB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAKvD,wBAAwB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAQzD,uBAAuB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAQxD,8BAA8B,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO;IAOzD,oBAAoB,CAExB,KAAK,EAAE,IAAI,EAEX,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAKlC,eAAe,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;CAGzD;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractionTestMode.d.ts","sourceRoot":"","sources":["../../src/modes/InteractionTestMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAAM,mBAAoB,SAAQ,QAAQ;IACxC,QAAQ,IAAI,OAAO;IAInB,YAAY,IAAI,OAAO;IAIvB,gBAAgB,IAAI,OAAO;IAI3B,uBAAuB,IAAI,OAAO;IAIlC,oBAAoB,IAAI,OAAO;IAI/B,sBAAsB,IAAI,OAAO;IAIjC,wBAAwB,IAAI,OAAO;IAInC,uBAAuB,IAAI,OAAO;IAIlC,8BAA8B,IAAI,OAAO;CAG1C;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeasureMode.d.ts","sourceRoot":"","sources":["../../src/modes/MeasureMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAC,WAAW,EAAE,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAGrE,cAAM,WAAY,SAAQ,QAAQ;IAChC,oBAAoB,IAAI,OAAO;IAI/B,sBAAsB,IAAI,OAAO;IAIjC,wBAAwB,IAAI,OAAO;IAInC,uBAAuB,IAAI,OAAO;IAIlC,8BAA8B,IAAI,OAAO;IAInC,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAQvE,eAAe,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;CAMxD;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunningModes.d.ts","sourceRoot":"","sources":["../../src/modes/RunningModes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;;cAQ3C,MAAM,WAAW,MAAM,GAAG,YAAY;;AADlD,wBAqBE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceFinder.d.ts","sourceRoot":"","sources":["../../src/paths/TraceFinder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,SAAS,EAET,SAAS,EAET,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,cAAc,CAAC;AActB,cAAM,WAAW;IACf,eAAe,CACb,QAAQ,EAAE,aAAa,EACvB,GAAG,GAAE;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAM,GAC/B,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC;IA0B7B,wBAAwB,CACtB,QAAQ,EAAE,aAAa,EACvB,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAC7C,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAC5C,IAAI;IA6CP,4BAA4B,CAC1B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,GACX,IAAI;IA6CP,OAAO,CAAC,mBAAmB;IAuJ3B,OAAO,CAAC,oCAAoC;IA2J5C,OAAO,CAAC,wCAAwC;IA4BhD,8BAA8B,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAqBxD,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO;IAQtE,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAsB3C,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IA6B9C,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAK9C,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAMnC,8BAA8B,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAgC7D,qBAAqB,CACnB,QAAQ,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,aAAa,GAC5B,IAAI;IA6EP,gBAAgB,CACd,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,GACxB,QAAQ,CAAC,iBAAiB,CAAC;CAY/B;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterUtils.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/ClusterUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;;;;AAI5C,wBAA6D;AAE7D;;;;GAIG;AACH,eAAO,MAAM,YAAY,qBAAsB,MAAM,UAepD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM,qBAAsB,MAAM,UAU9C,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,iBAAiB,+DAAgD,CAAC"}
@@ -8,7 +8,7 @@
8
8
  * @oncall web_perf_infra
9
9
  */
10
10
  import type { AnyValue, LeakTraceElement, LeakTrace } from '../lib/Types';
11
- declare type NameWeightMapType = Map<string | RegExp | number, number>;
11
+ type NameWeightMapType = Map<string | RegExp | number, number>;
12
12
  interface ClusteringHeuristic {
13
13
  edgeNameStopWords: NameWeightMapType;
14
14
  nodeNameStopWords: NameWeightMapType;
@@ -28,7 +28,7 @@ interface DebugElementSimilarityStatsParams {
28
28
  totalSum: number;
29
29
  }
30
30
  export declare const debugTraceElementSimilarityStats: ({ elementA, elementB, matchedSum, totalSum, }: DebugElementSimilarityStatsParams) => void;
31
- declare type ClusteringUtilReturnType = {
31
+ type ClusteringUtilReturnType = {
32
32
  isSimilarTrace: (t1: LeakTrace, t2: LeakTrace) => boolean;
33
33
  };
34
34
  declare const _default: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterUtilsHelper.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/ClusterUtilsHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,cAAc,CAAC;AASxE,KAAK,iBAAiB,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;AAK/D,UAAU,mBAAmB;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,qBAAqB,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IACrE,8BAA8B,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACrD;AAED,wBAAgB,QAAQ,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAQlD;AAED,UAAU,iCAAiC;IACzC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,gCAAgC,kDAK1C,iCAAiC,KAAG,IAatC,CAAC;AAMF,KAAK,wBAAwB,GAAG;IAC9B,cAAc,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC;CAC3D,CAAC;;;;AAqcF,wBAEE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusteringHeuristics.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/ClusteringHeuristics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;;;;cAUqC,MAAM;cAAQ,MAAM;eAAS,MAAM;;;;AAL3E,wBAUE"}
@@ -7,7 +7,7 @@
7
7
  * @format
8
8
  * @oncall web_perf_infra
9
9
  */
10
- declare type ClusteredLeakTraces = Record<string, string>;
10
+ type ClusteredLeakTraces = Record<string, string>;
11
11
  declare const _default: {
12
12
  evaluateAdjustRandScore: (trueTraceIdLabelMap: ClusteredLeakTraces, predictedTraceIdLabelMap: ClusteredLeakTraces) => number;
13
13
  vMeasure: (trueLabels: number[], predictedLabels: number[], beta?: number) => number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvalutationMetric.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/EvalutationMetric.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqHH,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;AA+ElD,wBAME"}
@@ -8,7 +8,7 @@
8
8
  * @oncall web_perf_infra
9
9
  */
10
10
  import type { LeakTrace } from '../lib/Types';
11
- declare type ClusterOption = {
11
+ type ClusterOption = {
12
12
  numberOfIteration?: number;
13
13
  numberOfTraceToRetainInCluster?: number;
14
14
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiIterationSeqClustering.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/MultiIterationSeqClustering.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAA6B,SAAS,EAAC,MAAM,cAAc,CAAC;AASxE,KAAK,aAAa,GAAG;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAC9C,OAAO,CAAC,eAAe,CAAmB;;IAQnC,OAAO,CACZ,aAAa,EAAE,SAAS,EAAE,EAC1B,OAAO,GAAE,aAAkB,GAC1B,SAAS,EAAE,EAAE;CAoEjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequentialClustering.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/SequentialClustering.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAmB,SAAS,EAAC,MAAM,cAAc,CAAC;AAO9D,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,4BAA4B,CAAmB;IACvD,OAAO,CAAC,eAAe,CAAmB;;IAQnC,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,EAAE;CAwB1D"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import type { IHeapNode, IHeapSnapshot, LeakTrace, LeakTracePathItem, Optional, TraceCluster, TraceClusterDiff, IClusterStrategy, ControlTreatmentClusterResult } from '../lib/Types';
11
11
  import type { NormalizedTraceElement } from './TraceElement';
12
- declare type AggregateNodeCb = (ids: Set<number>, snapshot: IHeapSnapshot, checkCb: (node: IHeapNode) => boolean, calculateCb: (node: IHeapNode) => number) => number;
12
+ type AggregateNodeCb = (ids: Set<number>, snapshot: IHeapSnapshot, checkCb: (node: IHeapNode) => boolean, calculateCb: (node: IHeapNode) => number) => number;
13
13
  export default class NormalizedTrace {
14
14
  private trace;
15
15
  private traceSummary;
@@ -37,7 +37,7 @@ export default class NormalizedTrace {
37
37
  private static buildTraceToPathMap;
38
38
  private static pushLeakPathToCluster;
39
39
  private static initEmptyCluster;
40
- static clusterControlTreatmentPaths(leakPathsFromControlRuns: LeakTracePathItem[][], controlSnapshots: IHeapSnapshot[], treatmentPaths: LeakTracePathItem[], treatmentSnapshot: IHeapSnapshot, aggregateDominatorMetrics: AggregateNodeCb, option?: {
40
+ static clusterControlTreatmentPaths(leakPathsFromControlRuns: LeakTracePathItem[][], controlSnapshots: IHeapSnapshot[], leakPathsFromTreatmentRuns: LeakTracePathItem[][], treatmentSnapshots: IHeapSnapshot[], aggregateDominatorMetrics: AggregateNodeCb, option?: {
41
41
  strategy?: IClusterStrategy;
42
42
  }): ControlTreatmentClusterResult;
43
43
  static generateUnClassifiedClusters(paths: LeakTracePathItem[], snapshot: IHeapSnapshot, aggregateDominatorMetrics: AggregateNodeCb): TraceCluster[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceBucket.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/TraceBucket.ts"],"names":[],"mappings":"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"}
@@ -310,43 +310,64 @@ class NormalizedTrace {
310
310
  leakedNodeIds: new Set(),
311
311
  };
312
312
  }
313
- static clusterControlTreatmentPaths(leakPathsFromControlRuns, controlSnapshots, treatmentPaths, treatmentSnapshot, aggregateDominatorMetrics, option = {}) {
313
+ static clusterControlTreatmentPaths(leakPathsFromControlRuns, controlSnapshots, leakPathsFromTreatmentRuns, treatmentSnapshots, aggregateDominatorMetrics, option = {}) {
314
314
  const result = {
315
- controlOnlyClusters: [],
315
+ controlLikelyOrOnlyClusters: [],
316
316
  treatmentOnlyClusters: [],
317
+ treatmentLikelyClusters: [],
317
318
  hybridClusters: [],
318
319
  };
319
320
  Console_1.default.overwrite('Clustering leak traces');
320
321
  const totalControlPaths = leakPathsFromControlRuns.reduce((count, leakPaths) => count + leakPaths.length, 0);
321
- if (totalControlPaths === 0 && treatmentPaths.length === 0) {
322
+ const totalTreatmentPaths = leakPathsFromTreatmentRuns.reduce((count, leakPaths) => count + leakPaths.length, 0);
323
+ if (totalControlPaths === 0 && totalTreatmentPaths === 0) {
322
324
  Console_1.default.midLevel('No leaks found');
323
325
  return result;
324
326
  }
325
327
  // sample paths if there are too many
326
328
  const flattenedLeakPathsFromControlRuns = leakPathsFromControlRuns.reduce((arr, leakPaths) => [...arr, ...leakPaths], []);
327
329
  const controlPaths = this.samplePaths(flattenedLeakPathsFromControlRuns);
328
- treatmentPaths = this.samplePaths(treatmentPaths);
330
+ const pathsForEachTreatmentGroup = leakPathsFromTreatmentRuns.map((treatmentPaths) => this.samplePaths(treatmentPaths));
329
331
  // build control trace to control path map
330
332
  const controlTraceToPathMap = NormalizedTrace.buildTraceToPathMap(controlPaths);
331
333
  const controlTraces = Array.from(controlTraceToPathMap.keys());
332
- // build treatment trace to treatment path map
333
- const treatmentTraceToPathMap = NormalizedTrace.buildTraceToPathMap(treatmentPaths);
334
- const treatmentTraces = Array.from(treatmentTraceToPathMap.keys());
334
+ // build treatment trace to treatment path maps
335
+ // we need to know the mapping to each treatment group
336
+ // to figure out if a trace cluster contains traces from all treatment groups
337
+ const treatmentTraceToPathMaps = pathsForEachTreatmentGroup.map(treatmentPaths => NormalizedTrace.buildTraceToPathMap(treatmentPaths));
338
+ const treatmentTraceToPathMap = new Map();
339
+ const treatmentTraces = [];
340
+ for (const map of treatmentTraceToPathMaps) {
341
+ for (const [key, value] of map.entries()) {
342
+ treatmentTraceToPathMap.set(key, value);
343
+ treatmentTraces.push(key);
344
+ }
345
+ }
335
346
  // cluster traces from both the control group and the treatment group
336
347
  const { allClusters } = NormalizedTrace.diffTraces([...controlTraces, ...treatmentTraces], [], option);
337
- // pick one of the control heap snapshots
348
+ // pick one of the control and treatment heap snapshots
338
349
  const controlSnapshot = controlSnapshots[0];
350
+ const treatmentSnapshot = treatmentSnapshots[0];
339
351
  // construct TraceCluster from clustering result
340
352
  allClusters.forEach((traces) => {
341
353
  var _a, _b;
342
354
  const controlCluster = NormalizedTrace.initEmptyCluster(controlSnapshot);
343
355
  const treatmentCluster = NormalizedTrace.initEmptyCluster(treatmentSnapshot);
356
+ // a set containing each the treatment group that
357
+ // has at least one trace in this cluster
358
+ const treatmentSetWithClusterTrace = new Set();
344
359
  for (const trace of traces) {
345
360
  const normalizedTrace = trace;
346
361
  if (controlTraceToPathMap.has(normalizedTrace)) {
347
362
  NormalizedTrace.pushLeakPathToCluster(controlTraceToPathMap, normalizedTrace, controlCluster);
348
363
  }
349
364
  else {
365
+ for (let i = 0; i < treatmentTraceToPathMaps.length; ++i) {
366
+ if (treatmentTraceToPathMaps[i].has(normalizedTrace)) {
367
+ treatmentSetWithClusterTrace.add(i);
368
+ break;
369
+ }
370
+ }
350
371
  NormalizedTrace.pushLeakPathToCluster(treatmentTraceToPathMap, normalizedTrace, treatmentCluster);
351
372
  }
352
373
  }
@@ -360,11 +381,19 @@ class NormalizedTrace {
360
381
  if (treatmentClusterSize > 0) {
361
382
  this.calculateClusterRetainedSize(treatmentCluster, treatmentSnapshot, aggregateDominatorMetrics);
362
383
  }
363
- if (controlClusterSize === 0) {
384
+ if (controlClusterSize === 0 &&
385
+ treatmentSetWithClusterTrace.size === leakPathsFromTreatmentRuns.length) {
386
+ // only when the leak cluster consists of traces from all treatment groups
364
387
  result.treatmentOnlyClusters.push(treatmentCluster);
365
388
  }
389
+ else if (controlClusterSize === 0) {
390
+ // when the leak cluster consists of traces from
391
+ // some but not all of treatment groups
392
+ result.treatmentLikelyClusters.push(treatmentCluster);
393
+ }
366
394
  else if (treatmentClusterSize === 0) {
367
- result.controlOnlyClusters.push(controlCluster);
395
+ // when the leak cluster consists of traces from any of the control groups
396
+ result.controlLikelyOrOnlyClusters.push(controlCluster);
368
397
  }
369
398
  else {
370
399
  result.hybridClusters.push({
@@ -374,7 +403,8 @@ class NormalizedTrace {
374
403
  }
375
404
  });
376
405
  result.treatmentOnlyClusters.sort((c1, c2) => { var _a, _b; return ((_a = c2.retainedSize) !== null && _a !== void 0 ? _a : 0) - ((_b = c1.retainedSize) !== null && _b !== void 0 ? _b : 0); });
377
- result.controlOnlyClusters.sort((c1, c2) => { var _a, _b; return ((_a = c2.retainedSize) !== null && _a !== void 0 ? _a : 0) - ((_b = c1.retainedSize) !== null && _b !== void 0 ? _b : 0); });
406
+ result.treatmentLikelyClusters.sort((c1, c2) => { var _a, _b; return ((_a = c2.retainedSize) !== null && _a !== void 0 ? _a : 0) - ((_b = c1.retainedSize) !== null && _b !== void 0 ? _b : 0); });
407
+ result.controlLikelyOrOnlyClusters.sort((c1, c2) => { var _a, _b; return ((_a = c2.retainedSize) !== null && _a !== void 0 ? _a : 0) - ((_b = c1.retainedSize) !== null && _b !== void 0 ? _b : 0); });
378
408
  result.hybridClusters.sort((g1, g2) => {
379
409
  var _a, _b, _c, _d;
380
410
  return ((_a = g2.control.retainedSize) !== null && _a !== void 0 ? _a : 0) +
@@ -74,5 +74,5 @@ export declare class EdgeRecord implements IHeapEdge {
74
74
  set fromNode(s: IHeapNode);
75
75
  get fromNode(): IHeapNode;
76
76
  }
77
- export declare type NormalizedTraceElement = NodeRecord | EdgeRecord;
77
+ export type NormalizedTraceElement = NodeRecord | EdgeRecord;
78
78
  //# sourceMappingURL=TraceElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceElement.d.ts","sourceRoot":"","sources":["../../src/trace-cluster/TraceElement.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,qBAAqB,EACrB,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,EACb,eAAe,EACf,QAAQ,EACT,MAAM,cAAc,CAAC;AAItB,qBAAa,UAAW,YAAW,SAAS;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,cAAc,IAAI,IAAI;IAGtB,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAEtB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,aAAa,EAE5B;IACD,IAAI,QAAQ,IAAI,aAAa,CAE5B;IACD,IAAI,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,EAE5B;IACD,IAAI,UAAU,IAAI,SAAS,EAAE,CAE5B;IACD,gBAAgB,CAEd,SAAS,EAAE,qBAAqB,GAC/B,IAAI;IAGP,IAAI,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,EAE3B;IACD,IAAI,SAAS,IAAI,SAAS,EAAE,CAE3B;IACD,IAAI,cAAc,IAAI,MAAM,CAE3B;IACD,YAAY,IAAI,eAAe;IAG/B,eAAe,CAEb,SAAS,EAAE,qBAAqB,GAC/B,IAAI;IAGP,gBAAgB,IAAI,QAAQ,CAAC,SAAS,CAAC;IAGvC,eAAe,IAAI,QAAQ,CAAC,SAAS,CAAC;IAGtC,mBAAmB,IAAI,QAAQ,CAAC,SAAS,CAAC;IAG1C,aAAa,IAAI,SAAS,EAAE;IAG5B,iBAAiB,IAAI,SAAS,EAAE;IAGhC,IAAI,WAAW,CAAC,CAAC,EAAE,OAAO,EAEzB;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,SAAS,EAExB;IACD,IAAI,QAAQ,IAAI,SAAS,CAExB;IACD,IAAI,aAAa,CAAC,CAAC,EAAE,SAAS,EAE7B;IACD,IAAI,aAAa,IAAI,SAAS,CAE7B;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,aAAa,EAE5B;IACD,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,YAAY,CAEV,SAAS,EAAE,MAAM,GAAG,MAAM,EAE1B,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,CAAC,SAAS,CAAC;IAItB,gBAAgB,CAEd,SAAS,EAAE,MAAM,GAAG,MAAM,EAE1B,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,CAAC,SAAS,CAAC;IAItB,cAAc,CAEZ,SAAS,EAAE,MAAM,GAAG,MAAM,EAE1B,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,CAAC,SAAS,CAAC;IAItB,kBAAkB,CAEhB,SAAS,EAAE,MAAM,GAAG,MAAM,EAE1B,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,CAAC,SAAS,CAAC;IAItB,YAAY,CAEV,SAAS,EAAE,MAAM,GAAG,MAAM,EAE1B,SAAS,CAAC,EAAE,MAAM,GACjB,SAAS,EAAE;IAId,gBAAgB,CAEd,SAAS,EAAE,MAAM,GAAG,MAAM,EAE1B,SAAS,CAAC,EAAE,MAAM,GACjB,SAAS,EAAE;IAId,YAAY,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM;gBAgBlC,IAAI,EAAE,SAAS;IAgB3B,OAAO,CAAC,eAAe;CAOxB;AAED,qBAAa,UAAW,YAAW,SAAS;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;gBAEJ,IAAI,EAAE,SAAS;IAS3B,YAAY,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM;IAY9C,IAAI,QAAQ,CAAC,CAAC,EAAE,aAAa,EAE5B;IACD,IAAI,QAAQ,IAAI,aAAa,CAE5B;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,SAAS,EAEtB;IACD,IAAI,MAAM,IAAI,SAAS,CAEtB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,SAAS,EAExB;IACD,IAAI,QAAQ,IAAI,SAAS,CAExB;CACF;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,UAAU,CAAC"}
@@ -15,21 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.EdgeRecord = exports.NodeRecord = void 0;
16
16
  const Utils_1 = __importDefault(require("../lib/Utils"));
17
17
  class NodeRecord {
18
- constructor(node) {
19
- this.kind = 'node';
20
- this.name = this.extraceNodeName(node);
21
- this.type = node.type;
22
- this.id = node.id;
23
- this.is_detached = node.is_detached;
24
- this.detachState = node.detachState;
25
- this.attributes = node.attributes;
26
- this.self_size = node.self_size;
27
- this.edge_count = node.edge_count;
28
- this.trace_node_id = node.trace_node_id;
29
- this.nodeIndex = node.nodeIndex;
30
- this.retainedSize = node.retainedSize;
31
- this.highlight = node.highlight;
32
- }
33
18
  markAsDetached() {
34
19
  throw new Error('NodeRecord.markAsDetached not callable.');
35
20
  }
@@ -168,6 +153,21 @@ class NodeRecord {
168
153
  };
169
154
  return JSON.stringify(rep, ...args);
170
155
  }
156
+ constructor(node) {
157
+ this.kind = 'node';
158
+ this.name = this.extraceNodeName(node);
159
+ this.type = node.type;
160
+ this.id = node.id;
161
+ this.is_detached = node.is_detached;
162
+ this.detachState = node.detachState;
163
+ this.attributes = node.attributes;
164
+ this.self_size = node.self_size;
165
+ this.edge_count = node.edge_count;
166
+ this.trace_node_id = node.trace_node_id;
167
+ this.nodeIndex = node.nodeIndex;
168
+ this.retainedSize = node.retainedSize;
169
+ this.highlight = node.highlight;
170
+ }
171
171
  extraceNodeName(node) {
172
172
  // deserialized node may not have snapshot info
173
173
  if (!node.snapshot || !Utils_1.default.isFiberNode(node)) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MLTraceSimilarityStrategy.d.ts","sourceRoot":"","sources":["../../../src/trace-cluster/strategies/MLTraceSimilarityStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAK5E,MAAM,CAAC,OAAO,OAAO,yBAA0B,YAAW,gBAAgB;IACjE,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,SAAS;IA6BxD,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAkBrC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceAsClusterStrategy.d.ts","sourceRoot":"","sources":["../../../src/trace-cluster/strategies/TraceAsClusterStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAI5E,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,gBAAgB;IAC9D,UAAU,CACf,SAAS,EAAE,SAAS,EAAE,EACtB,cAAc,EAAE,SAAS,EAAE,GAC1B,SAAS;IAkBZ,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO;CAG7D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceSimilarityStrategy.d.ts","sourceRoot":"","sources":["../../../src/trace-cluster/strategies/TraceSimilarityStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAM5E,MAAM,CAAC,OAAO,OAAO,uBAAwB,YAAW,gBAAgB;IAC/D,UAAU,CACf,SAAS,EAAE,SAAS,EAAE,EACtB,cAAc,EAAE,SAAS,EAAE,GAC1B,SAAS;IAkDZ,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO;CAG7D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DistanceMatrix.d.ts","sourceRoot":"","sources":["../../../../src/trace-cluster/strategies/machine-learning/DistanceMatrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2BH,eAAO,MAAM,QAAQ,WAAY,OAAO,MAAM,EAAE,MAAM,CAAC,EAAE,iBA6BxD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HAC.d.ts","sourceRoot":"","sources":["../../../../src/trace-cluster/strategies/machine-learning/HAC.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH;;;;;GAKG;AACH,eAAO,MAAM,OAAO,UACX,MAAM,2BACY,YAAY,wBACf,MAAM,2BA4G7B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ngram.d.ts","sourceRoot":"","sources":["../../../../src/trace-cluster/strategies/machine-learning/Ngram.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAS/C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TfidfVectorizer.d.ts","sourceRoot":"","sources":["../../../../src/trace-cluster/strategies/machine-learning/TfidfVectorizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,UAAU,oBAAoB;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAuB;IACzD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAuB;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;gBAErB,EAAC,YAAY,EAAE,KAAK,EAAC,EAAE,oBAAoB;IAKvD,aAAa;IAUb,QAAQ,CAAC,IAAI,EAAE,MAAM;IAKrB,eAAe,CAAC,kBAAkB,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAcvE,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,EAAE,EAAE;IAoB/C,KAAK;IAiBL;;;;SAIK;IACL,MAAM;IAUN,WAAW;IAwCX,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAI9D,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAK9B"}