@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,13 @@
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 { IHeapSnapshot } from '../../lib/Types';
11
+ /** @internal */
12
+ export declare function getFullHeapFromFile(file: string): Promise<IHeapSnapshot>;
13
+ //# sourceMappingURL=TestUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestUtils.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/TestUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAa,aAAa,EAAW,MAAM,iBAAiB,CAAC;AAEpE,gBAAgB;AAChB,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,CAExB"}
@@ -0,0 +1,39 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.getFullHeapFromFile = void 0;
22
+ const __1 = require("../..");
23
+ /** @internal */
24
+ function getFullHeapFromFile(file) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ return yield loadProcessedSnapshot({ file });
27
+ });
28
+ }
29
+ exports.getFullHeapFromFile = getFullHeapFromFile;
30
+ function loadProcessedSnapshot(options = {}) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const opt = { buildNodeIdIndex: true, verbose: true };
33
+ const file = options.file || __1.utils.getSnapshotFilePathWithTabType(/.*/);
34
+ const snapshot = yield __1.utils.getSnapshotFromFile(file, opt);
35
+ __1.analysis.preparePathFinder(snapshot);
36
+ __1.info.flush();
37
+ return snapshot;
38
+ });
39
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeapParser.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/parser/HeapParser.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeHeap.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/parser/NodeHeap.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringNode.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/parser/StringNode.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeapNodeTraverse.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/parser/traverse/HeapNodeTraverse.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAA2B,MAAM,oBAAoB,CAAC;AAI3E,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,EAAE,QAAQ,CAAC;KACpB;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/utils.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
package/dist/index.d.ts CHANGED
@@ -50,6 +50,8 @@ export { default as NormalizedTrace } from './trace-cluster/TraceBucket';
50
50
  /** @internal */
51
51
  export { default as EvaluationMetric } from './trace-cluster/EvalutationMetric';
52
52
  /** @internal */
53
+ export { RunMetaInfoManager } from './lib/RunInfoUtils';
54
+ /** @internal */
53
55
  export * from './lib/PackageInfoLoader';
54
56
  /** @internal */
55
57
  export { default as SequentialClustering } from './trace-cluster/SequentialClustering';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAE/B,gBAAgB;AAChB,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AACD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,cAAc,CAAC;AAC/C,gBAAgB;AAChB,cAAc,2BAA2B,CAAC;AAC1C,gBAAgB;AAChB,cAAc,cAAc,CAAC;AAC7B,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,eAAe,CAAC;AAC9C,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACvD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,aAAa,CAAC;AAC7C,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACzD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAC3D,gBAAgB;AAChB,cAAc,mBAAmB,CAAC;AAClC,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACvD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACzD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AACvD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACnD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,6BAA6B,CAAC;AACtE,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,sBAAsB,CAAC;AACtD,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAC/D,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AACxE,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,6BAA6B,CAAC;AACvE,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AAC9E,gBAAgB;AAChB,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AACtD,gBAAgB;AAChB,cAAc,yBAAyB,CAAC;AACxC,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,sCAAsC,CAAC;AACrF,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,2BAA2B,EAAC,MAAM,6CAA6C,CAAC;AACnG,gBAAgB;AAChB,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAC3D,gBAAgB;AAChB,cAAc,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -35,7 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.TraceFinder = exports.MultiIterationSeqClustering = exports.SequentialClustering = exports.EvaluationMetric = exports.NormalizedTrace = exports.leakClusterLogger = exports.ProcessManager = exports.modes = exports.memoryBarChart = exports.constant = exports.analysis = exports.browserInfo = exports.serializer = exports.runInfoUtils = exports.fileManager = exports.utils = exports.BaseOption = exports.info = exports.config = exports.registerPackage = void 0;
38
+ exports.TraceFinder = exports.MultiIterationSeqClustering = exports.SequentialClustering = exports.RunMetaInfoManager = exports.EvaluationMetric = exports.NormalizedTrace = exports.leakClusterLogger = exports.ProcessManager = exports.modes = exports.memoryBarChart = exports.constant = exports.analysis = exports.browserInfo = exports.serializer = exports.runInfoUtils = exports.fileManager = exports.utils = exports.BaseOption = exports.info = exports.config = exports.registerPackage = void 0;
39
39
  const path_1 = __importDefault(require("path"));
40
40
  const PackageInfoLoader_1 = require("./lib/PackageInfoLoader");
41
41
  __exportStar(require("./lib/Types"), exports);
@@ -102,6 +102,9 @@ Object.defineProperty(exports, "NormalizedTrace", { enumerable: true, get: funct
102
102
  var EvalutationMetric_1 = require("./trace-cluster/EvalutationMetric");
103
103
  Object.defineProperty(exports, "EvaluationMetric", { enumerable: true, get: function () { return __importDefault(EvalutationMetric_1).default; } });
104
104
  /** @internal */
105
+ var RunInfoUtils_2 = require("./lib/RunInfoUtils");
106
+ Object.defineProperty(exports, "RunMetaInfoManager", { enumerable: true, get: function () { return RunInfoUtils_2.RunMetaInfoManager; } });
107
+ /** @internal */
105
108
  __exportStar(require("./lib/PackageInfoLoader"), exports);
106
109
  /** @internal */
107
110
  var SequentialClustering_1 = require("./trace-cluster/SequentialClustering");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseOption.d.ts","sourceRoot":"","sources":["../../src/lib/BaseOption.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAEtC,uBAAe,MAAM;IACnB,OAAO,CAAC,YAAY,CAAQ;IAG5B,aAAa,IAAI,MAAM;IAMvB,iBAAiB,IAAI,MAAM,GAAG,IAAI;cAKlB,KAAK,CAEnB,OAAO,EAAE,YAAY,EAErB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAMtB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAgB5E,QAAQ,IAAI,UAAU;IAKtB,QAAQ,IAAI,UAAU;IAKtB,UAAU,IAAI,OAAO;CAGtB;AAED,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,MAAM;IAE5C,aAAa,IAAI,MAAM;IAMvB,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAMlC,gBAAgB,IAAI,MAAM,EAAE;IAK5B,cAAc,IAAI,MAAM;cAMR,KAAK,CAEnB,OAAO,EAAE,YAAY,EAErB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;CAI7B"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import type { ConsoleMessage, Dialog, LaunchOptions, Page } from 'puppeteer';
11
11
  import type { IBrowserInfo } from './Types';
12
- declare type Options = {
12
+ type Options = {
13
13
  color?: boolean;
14
14
  };
15
15
  declare class BrowserInfo {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserInfo.d.ts","sourceRoot":"","sources":["../../src/lib/BrowserInfo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAC1C,KAAK,OAAO,GAAG;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC,CAAC;AAQjC,cAAM,WAAW;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,aAAa,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;;IAQ3B,KAAK;IAIL,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC,kBAAkB,CAAC,eAAe,EAAE,aAAa,GAAG,IAAI;IAIxD,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI;IAMrC,oBAAoB,CAClB,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,OAAY,GACpB,MAAM,EAAE;IAqBX,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,MAAM;IASlE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,uBAAuB,IAAI,MAAM;IAIjC,IAAI,IAAI,IAAI;IAOZ,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CA8BpC;;AAED,wBAAiC"}
@@ -34,7 +34,7 @@ interface Device {
34
34
  isLandscape: boolean;
35
35
  };
36
36
  }
37
- declare type ConfigOption = {
37
+ type ConfigOption = {
38
38
  workDir?: string;
39
39
  };
40
40
  /** @internal */
@@ -114,7 +114,7 @@ export declare class MemLabConfig {
114
114
  qes: QuickExperiment[];
115
115
  isOndemand: boolean;
116
116
  useExternalSnapshot: boolean;
117
- externalRunMetaFile: string;
117
+ externalRunMetaTemplateFile: string;
118
118
  externalSnapshotVisitOrderFile: string;
119
119
  externalSnapshotDir: Nullable<string>;
120
120
  externalSnapshotFilePaths: string[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/lib/Config.ts"],"names":[],"mappings":"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"}
@@ -321,7 +321,10 @@ class MemLabConfig {
321
321
  // node names excluded from the trace finding
322
322
  this.nodeNameBlockList = new Set(['system / PropertyCell']);
323
323
  // edge names excluded from the trace finding
324
- this.edgeNameBlockList = new Set(['feedback_cell']);
324
+ this.edgeNameBlockList = new Set([
325
+ 'feedback_cell',
326
+ 'part of key -> value pair in ephemeron table',
327
+ ]);
325
328
  // node names less preferable in trace finding
326
329
  this.nodeNameGreyList = new Set([
327
330
  'InternalNode',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/lib/Console.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAc,EAAC,KAAK,EAAC,MAAM,OAAO,CAAC;AAKnC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAqB,MAAM,SAAS,CAAC;AA4ErD,UAAU,mBAAmB;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7B,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,KAAK,CAAC;IACX,GAAG,EAAE,KAAK,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,MAAM,CAQZ;IAEF,OAAO,CAAC,MAAM,CAAC,SAAS,CAAgB;IAExC,SAAS;WAQK,WAAW,IAAI,aAAa;IAsB1C,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,QAAQ;IAUT,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKtC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKxC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAahC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc9B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIrC,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI;IAiBhC,KAAK,IAAI,IAAI;IAOb,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ5B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAS1B,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMhC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK1B,QAAQ,IAAI,IAAI;IAQhB,SAAS,CACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,MAAM,mBAAmB,CAAA;KAAM,GAChD,IAAI;IAcA,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc9C,QAAQ,CACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAM,GAC/B,IAAI;IAqBA,KAAK,IAAI,IAAI;CAGrB;;AAED,wBAA2C"}
@@ -20,7 +20,7 @@ declare const constants: {
20
20
  namePrefixForScenarioFromFile: string;
21
21
  unset: string;
22
22
  };
23
- export declare type Constants = typeof constants;
23
+ export type Constants = typeof constants;
24
24
  declare const _default: {
25
25
  isFB: boolean;
26
26
  isFRL: boolean;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constant.d.ts","sourceRoot":"","sources":["../../src/lib/Constant.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,QAAA,MAAM,SAAS;;;;;;;;;;;;CAwCd,CAAC;AAOF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;;;;;;;;;;;;;;AACzC,wBAA8E"}
@@ -8,7 +8,7 @@
8
8
  * @oncall web_perf_infra
9
9
  */
10
10
  import type { MemLabConfig } from './Config';
11
- import type { AnyValue, FileOption } from './Types';
11
+ import type { AnyValue, E2EStepInfo, FileOption } from './Types';
12
12
  /** @internal */
13
13
  export declare function joinAndProcessDir(options: FileOption, ...args: AnyValue[]): string;
14
14
  /** @internal */
@@ -78,6 +78,11 @@ export declare class FileManager {
78
78
  isWithinInternalDirectory(filePath: string): boolean;
79
79
  createDefaultVisitOrderMetaFile(options?: FileOption): void;
80
80
  createDefaultVisitOrderMetaFileWithSingleSnapshot(options: FileOption | undefined, snapshotFile: string): void;
81
+ /**
82
+ * create visit order data structure based on specified
83
+ * baseline, target, and final heap snapshots
84
+ */
85
+ createVisitOrderWithSnapshots(baselineSnapshot: string, targetSnapshot: string, finalSnapshot: string): E2EStepInfo[];
81
86
  initDirs(config: MemLabConfig, options?: FileOption): void;
82
87
  }
83
88
  declare const _default: FileManager;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["../../src/lib/FileManager.ts"],"names":[],"mappings":"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"}
@@ -377,6 +377,29 @@ class FileManager {
377
377
  // save the snapshot meta file
378
378
  fs_extra_1.default.writeFileSync(snapshotSeqMetaFile, JSON.stringify(visitOrder, null, 2), 'UTF-8');
379
379
  }
380
+ /**
381
+ * create visit order data structure based on specified
382
+ * baseline, target, and final heap snapshots
383
+ */
384
+ createVisitOrderWithSnapshots(baselineSnapshot, targetSnapshot, finalSnapshot) {
385
+ const snapshotTemplateFile = this.getSnapshotSequenceExternalTemplateFile();
386
+ const visitOrder = JSON.parse(fs_extra_1.default.readFileSync(snapshotTemplateFile, 'UTF-8'));
387
+ // fill in snapshot file name for each entry with snapshot: true
388
+ visitOrder.forEach(step => {
389
+ switch (step.name) {
390
+ case 'baseline':
391
+ step.snapshotFile = baselineSnapshot;
392
+ break;
393
+ case 'target':
394
+ step.snapshotFile = targetSnapshot;
395
+ break;
396
+ case 'final':
397
+ step.snapshotFile = finalSnapshot;
398
+ break;
399
+ }
400
+ });
401
+ return visitOrder;
402
+ }
380
403
  initDirs(config, options = FileManager.defaultFileOption) {
381
404
  // cache the last processed memlab config instance
382
405
  // the instance should be a singleton
@@ -427,7 +450,7 @@ class FileManager {
427
450
  config.heapAnalysisLogDir = joinAndProcessDir(options, this.getHeapAnalysisLogDir(options));
428
451
  config.metricsOutDir = joinAndProcessDir(options, loggerOutDir, 'metrics');
429
452
  config.reportScreenshotFile = path_1.default.join(outDir, 'report.png');
430
- config.externalRunMetaFile = this.getRunMetaExternalTemplateFile();
453
+ config.externalRunMetaTemplateFile = this.getRunMetaExternalTemplateFile();
431
454
  config.externalSnapshotVisitOrderFile =
432
455
  this.getSnapshotSequenceExternalTemplateFile();
433
456
  joinAndProcessDir(options, this.getUniqueTraceClusterDir(options));
@@ -9,14 +9,14 @@
9
9
  */
10
10
  import type { E2EStepInfo, HeapNodeIdSet, IHeapSnapshot, IMemoryAnalystSnapshotDiff, IOveralHeapInfo, LeakTracePathItem, Optional, IOveralLeakInfo, TraceCluster, ISerializedInfo, DiffLeakOptions } from './Types';
11
11
  import TraceFinder from '../paths/TraceFinder';
12
- declare type DiffSnapshotsOptions = {
12
+ type DiffSnapshotsOptions = {
13
13
  loadAllSnapshots?: boolean;
14
14
  workDir?: string;
15
15
  };
16
- declare type WorkDirOptions = {
16
+ type WorkDirOptions = {
17
17
  workDir?: string;
18
18
  };
19
- declare type GetTraceOptions = {
19
+ type GetTraceOptions = {
20
20
  workDir?: string;
21
21
  printConsoleOnly?: boolean;
22
22
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeapAnalyzer.d.ts","sourceRoot":"","sources":["../../src/lib/HeapAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,0BAA0B,EAE1B,eAAe,EACf,iBAAiB,EAEjB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EAChB,MAAM,SAAS,CAAC;AAWjB,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAO/C,KAAK,oBAAoB,GAAG;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,cAAM,aAAa;IACX,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAMvC,iBAAiB,CACrB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC;IA0BvB,oBAAoB,CACxB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC;IAiFvB,iBAAiB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAgB/C,KAAK,CAAC,OAAO,GAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAM;IAuCzC,0BAA0B,CACxB,SAAS,EAAE,WAAW,EAAE,EACxB,GAAG,EAAE,WAAW,GACf,OAAO;IAUJ,aAAa,CACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,0BAA0B,CAAC;IAwGtC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW;IAiBvD,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,wBAAwB;IA6ChC,OAAO,CAAC,mBAAmB;IAmBpB,kBAAkB,CACvB,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAM,GAC9B,QAAQ,CAAC,eAAe,CAAC;IAyC5B,kBAAkB,CAChB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,aAAa,GACtB,QAAQ,CAAC,eAAe,CAAC;IA4BrB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAWrD,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,mBAAmB;IAkB3B,eAAe,CACb,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,cAAmB,GAC3B,iBAAiB,EAAE;IAuDhB,cAAc,CAClB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA6B/B;;;;;;OAMG;IACH,kBAAkB,CAChB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,aAAa,GACtB,YAAY,EAAE;IAqCX,sBAAsB,CAC1B,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAM;IAqBzC,gBAAgB,CACd,WAAW,EAAE,aAAa,EAC1B,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE,KAAK,CAAC,aAAa,CAAC,EACxC,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB;CA2ChC;;AAED,wBAAmC"}
@@ -49,13 +49,13 @@ class MemoryAnalyst {
49
49
  const controlSnapshotDirs = options.controlWorkDirs.map(controlWorkDir => FileManager_1.default.getCurDataDir({
50
50
  workDir: controlWorkDir,
51
51
  }));
52
- const treatmentSnapshotDir = FileManager_1.default.getCurDataDir({
53
- workDir: options.treatmentWorkDir,
54
- });
52
+ const treatmentSnapshotDirs = options.treatmentWorkDirs.map(treatmentWorkDir => FileManager_1.default.getCurDataDir({
53
+ workDir: treatmentWorkDir,
54
+ }));
55
55
  // check control working dir
56
56
  controlSnapshotDirs.forEach(controlSnapshotDir => Utils_1.default.checkSnapshots({ snapshotDir: controlSnapshotDir }));
57
57
  // check treatment working dir
58
- Utils_1.default.checkSnapshots({ snapshotDir: treatmentSnapshotDir });
58
+ treatmentSnapshotDirs.forEach(treatmentSnapshotDir => Utils_1.default.checkSnapshots({ snapshotDir: treatmentSnapshotDir }));
59
59
  // display control and treatment memory
60
60
  MemoryBarChart_1.default.plotMemoryBarChart(options);
61
61
  return this.diffMemoryLeakTraces(options);
@@ -76,17 +76,26 @@ class MemoryAnalyst {
76
76
  leakPathsFromControlRuns.push(this.filterLeakPaths(snapshotDiff.leakedHeapNodeIdSet, snapshotDiff.snapshot, { workDir: controlWorkDir }));
77
77
  controlSnapshots.push(snapshotDiff.snapshot);
78
78
  }
79
- // diff snapshots and get treatment raw paths
80
- const snapshotDiff = yield this.diffSnapshots({
81
- loadAllSnapshots: true,
82
- workDir: options.treatmentWorkDir,
83
- });
84
- const treatmentLeakPaths = this.filterLeakPaths(snapshotDiff.leakedHeapNodeIdSet, snapshotDiff.snapshot, { workDir: options.treatmentWorkDir });
85
- const treatmentSnapshot = snapshotDiff.snapshot;
79
+ // diff snapshots from treatment dirs and get treatment raw paths array
80
+ const treatmentSnapshots = [];
81
+ const leakPathsFromTreatmentRuns = [];
82
+ let firstTreatmentSnapshotDiff = null;
83
+ for (const treatmentWorkDir of options.treatmentWorkDirs) {
84
+ const snapshotDiff = yield this.diffSnapshots({
85
+ loadAllSnapshots: true,
86
+ workDir: treatmentWorkDir,
87
+ });
88
+ if (firstTreatmentSnapshotDiff == null) {
89
+ firstTreatmentSnapshotDiff = snapshotDiff;
90
+ }
91
+ leakPathsFromTreatmentRuns.push(this.filterLeakPaths(snapshotDiff.leakedHeapNodeIdSet, snapshotDiff.snapshot, { workDir: treatmentWorkDir }));
92
+ treatmentSnapshots.push(snapshotDiff.snapshot);
93
+ }
86
94
  const controlPathCounts = JSON.stringify(leakPathsFromControlRuns.map(leakPaths => leakPaths.length));
95
+ const treatmentPathCounts = JSON.stringify(leakPathsFromTreatmentRuns.map(leakPaths => leakPaths.length));
87
96
  Console_1.default.topLevel(`${controlPathCounts} traces from control group`);
88
- Console_1.default.topLevel(`${treatmentLeakPaths.length} traces from treatment group`);
89
- const result = TraceBucket_1.default.clusterControlTreatmentPaths(leakPathsFromControlRuns, controlSnapshots, treatmentLeakPaths, treatmentSnapshot, Utils_1.default.aggregateDominatorMetrics, {
97
+ Console_1.default.topLevel(`${treatmentPathCounts} traces from treatment group`);
98
+ const result = TraceBucket_1.default.clusterControlTreatmentPaths(leakPathsFromControlRuns, controlSnapshots, leakPathsFromTreatmentRuns, treatmentSnapshots, Utils_1.default.aggregateDominatorMetrics, {
90
99
  strategy: Config_1.default.isMLClustering
91
100
  ? new MLTraceSimilarityStrategy_1.default()
92
101
  : undefined,
@@ -95,7 +104,10 @@ class MemoryAnalyst {
95
104
  yield this.serializeClusterUpdate(result.treatmentOnlyClusters);
96
105
  // serialize JSON file with detailed leak trace information
97
106
  const treatmentOnlyPaths = result.treatmentOnlyClusters.map(c => c.path);
98
- return LeakTraceDetailsLogger_1.default.logTraces(snapshotDiff.leakedHeapNodeIdSet, snapshotDiff.snapshot, snapshotDiff.listOfLeakedHeapNodeIdSet, treatmentOnlyPaths, Config_1.default.traceJsonOutDir);
107
+ if (firstTreatmentSnapshotDiff == null) {
108
+ throw Utils_1.default.haltOrThrow('treatemnt snapshot diff result not found');
109
+ }
110
+ return LeakTraceDetailsLogger_1.default.logTraces(firstTreatmentSnapshotDiff.leakedHeapNodeIdSet, firstTreatmentSnapshotDiff.snapshot, firstTreatmentSnapshotDiff.listOfLeakedHeapNodeIdSet, treatmentOnlyPaths, Config_1.default.traceJsonOutDir);
99
111
  });
100
112
  }
101
113
  // find all unique pattern of leaks
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeapParser.d.ts","sourceRoot":"","sources":["../../src/lib/HeapParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAEV,aAAa,EAGd,MAAM,SAAS,CAAC;AAyCjB,iBAAe,kBAAkB,CAC/B,IAAI,EAAE,MAAM,EAEZ,QAAQ,KAAK,GACZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAatB;AA+CD,iBAAe,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,CAKvE;;;;;AAED,wBAGE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalValueSetter.d.ts","sourceRoot":"","sources":["../../src/lib/InternalValueSetter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,gBAAgB;AAChB,8BAAsB,mBAAmB,CAAC,CAAC;IAEzC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC;CAGtB;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,CAAC,EACR,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,GACzB,CAAC,CAmBH"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeHeap.d.ts","sourceRoot":"","sources":["../../src/lib/NodeHeap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAS3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAGhE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAW7C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CASlE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,CAAC,CASlE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageInfoLoader.d.ts","sourceRoot":"","sources":["../../src/lib/PackageInfoLoader.ts"],"names":[],"mappings":"AAeA,gBAAgB;AAChB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA0B;mBAEtC,QAAQ;WA0BT,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO7E"}
@@ -8,7 +8,7 @@
8
8
  * @oncall web_perf_infra
9
9
  */
10
10
  import type { Command, Optional } from './Types';
11
- declare type Options = {
11
+ type Options = {
12
12
  msg?: string;
13
13
  processLimit?: number;
14
14
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessManager.d.ts","sourceRoot":"","sources":["../../src/lib/ProcessManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAM/C,KAAK,OAAO,GAAG;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,cAAM,cAAc;IAClB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,KAAK,CAAK;IAGX,KAAK,CACV,WAAW,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,EACpC,OAAO,GAAE,OAAY,GACpB,IAAI;IAeP,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;CAmBrB;AAED,eAAe,cAAc,CAAC"}
@@ -11,6 +11,7 @@ import type { Nullable, Optional, RunMetaInfo } from './Types';
11
11
  export declare class RunMetaInfoManager {
12
12
  getRunMetaFilePath(options?: {
13
13
  workDir?: Optional<string>;
14
+ readonly?: Optional<boolean>;
14
15
  }): string;
15
16
  saveRunMetaInfo(runMetaInfo: RunMetaInfo, options?: {
16
17
  workDir?: Optional<string>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunInfoUtils.d.ts","sourceRoot":"","sources":["../../src/lib/RunInfoUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAU7D,qBAAa,kBAAkB;IAC7B,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC9B,GAAG,MAAM;IAeV,eAAe,CACb,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE;QAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAC,GACzE,MAAM;IAiBT,OAAO,CAAC,uBAAuB;IAS/B,eAAe,CAAC,OAAO,CAAC,EAAE;QACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC5B,GAAG,WAAW;IAaf,yBAAyB,CAAC,OAAO,CAAC,EAAE;QAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC5B,GAAG,QAAQ,CAAC,WAAW,CAAC;IAWzB,2BAA2B,IAAI,WAAW;IAO1C,oBAAoB,CAClB,OAAO,GAAE;QAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAM,GAC/D,IAAI;CAiBR;AAED,QAAA,MAAM,YAAY;;CAAiD,CAAC;AAGpE,gBAAgB;AAChB,eAAe,YAAY,CAAC"}
@@ -16,8 +16,10 @@ class RunMetaInfoManager {
16
16
  if ((options === null || options === void 0 ? void 0 : options.workDir) != null) {
17
17
  return FileManager_1.default.getRunMetaFile({ workDir: options.workDir });
18
18
  }
19
- if (Config_1.default.useExternalSnapshot) {
20
- return Config_1.default.externalRunMetaFile;
19
+ if ((options === null || options === void 0 ? void 0 : options.readonly) && Config_1.default.useExternalSnapshot) {
20
+ // only returns the template file if the
21
+ // run meta file is used for readonly purpose
22
+ return Config_1.default.externalRunMetaTemplateFile;
21
23
  }
22
24
  if (Config_1.default.runMetaFile != null) {
23
25
  return Config_1.default.runMetaFile;
@@ -40,7 +42,8 @@ class RunMetaInfoManager {
40
42
  return runMetaInfo;
41
43
  }
42
44
  loadRunMetaInfo(options) {
43
- const file = (options === null || options === void 0 ? void 0 : options.metaFile) || this.getRunMetaFilePath(options);
45
+ const file = (options === null || options === void 0 ? void 0 : options.metaFile) ||
46
+ this.getRunMetaFilePath(Object.assign({ readonly: true }, options));
44
47
  try {
45
48
  return this.loadRunMetaInfoFromFile(file);
46
49
  }
@@ -49,7 +52,8 @@ class RunMetaInfoManager {
49
52
  }
50
53
  }
51
54
  loadRunMetaInfoSilentFail(options) {
52
- const file = (options === null || options === void 0 ? void 0 : options.metaFile) || this.getRunMetaFilePath(options);
55
+ const file = (options === null || options === void 0 ? void 0 : options.metaFile) ||
56
+ this.getRunMetaFilePath(Object.assign({ readonly: true }, options));
53
57
  try {
54
58
  return this.loadRunMetaInfoFromFile(file);
55
59
  }
@@ -0,0 +1,18 @@
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 { IHeapNode, IHeapSnapshot, ISerializationHelper, ISerializedInfo, JSONifyArgs, JSONifyOptions, Nullable } from './Types';
11
+ export declare class SerializationHelper implements ISerializationHelper {
12
+ protected snapshot: Nullable<IHeapSnapshot>;
13
+ setSnapshot(snapshot: IHeapSnapshot): void;
14
+ createOrMergeWrapper(info: ISerializedInfo, _node: IHeapNode, _args: JSONifyArgs, _options: JSONifyOptions): ISerializedInfo;
15
+ }
16
+ declare const _default: typeof SerializationHelper;
17
+ export default _default;
18
+ //# sourceMappingURL=SerializationHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerializationHelper.d.ts","sourceRoot":"","sources":["../../src/lib/SerializationHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,cAAc,EACd,QAAQ,EACT,MAAM,SAAS,CAAC;AAKjB,qBAAa,mBAAoB,YAAW,oBAAoB;IAC9D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAQ;IAEnD,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI1C,oBAAoB,CAClB,IAAI,EAAE,eAAe,EAErB,KAAK,EAAE,SAAS,EAEhB,KAAK,EAAE,WAAW,EAElB,QAAQ,EAAE,cAAc,GACvB,eAAe;CAGnB;;AAED,wBAIE"}
@@ -0,0 +1,36 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SerializationHelper = void 0;
16
+ const InternalValueSetter_1 = require("./InternalValueSetter");
17
+ const Constant_1 = __importDefault(require("./Constant"));
18
+ class SerializationHelper {
19
+ constructor() {
20
+ this.snapshot = null;
21
+ }
22
+ setSnapshot(snapshot) {
23
+ this.snapshot = snapshot;
24
+ }
25
+ createOrMergeWrapper(info,
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
+ _node,
28
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
+ _args,
30
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
+ _options) {
32
+ return info;
33
+ }
34
+ }
35
+ exports.SerializationHelper = SerializationHelper;
36
+ exports.default = (0, InternalValueSetter_1.setInternalValue)(SerializationHelper, __filename, Constant_1.default.internalDir);
@@ -7,13 +7,9 @@
7
7
  * @format
8
8
  * @oncall web_perf_infra
9
9
  */
10
- import { E2EStepInfo, HeapNodeIdSet, IHeapEdge, IHeapNode, IHeapSnapshot, ISerializedInfo, LeakTracePathItem, Nullable } from './Types';
11
- declare type JSONifyArgs = {
12
- leakedIdSet?: Set<number>;
13
- nodeIdsInSnapshots?: Array<Set<number>>;
14
- };
15
- declare function JSONifyPath(path: LeakTracePathItem, _snapshot: IHeapSnapshot, args: JSONifyArgs): Nullable<ISerializedInfo>;
16
- declare type SummarizeOptions = {
10
+ import { E2EStepInfo, HeapNodeIdSet, IHeapEdge, IHeapNode, IHeapSnapshot, ISerializedInfo, JSONifyArgs, LeakTracePathItem, Nullable } from './Types';
11
+ declare function JSONifyPath(path: LeakTracePathItem, snapshot: IHeapSnapshot, args: JSONifyArgs): Nullable<ISerializedInfo>;
12
+ type SummarizeOptions = {
17
13
  compact?: boolean;
18
14
  color?: boolean;
19
15
  progress?: number;
@@ -22,7 +18,7 @@ declare type SummarizeOptions = {
22
18
  excludeKeySet?: HeapNodeIdSet;
23
19
  };
24
20
  declare function summarizeNodeShape(node: IHeapNode, options?: SummarizeOptions): string;
25
- declare type UnboundedObjectInfo = {
21
+ type UnboundedObjectInfo = {
26
22
  id: number;
27
23
  name: string;
28
24
  node: IHeapNode;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../src/lib/Serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EACL,WAAW,EACX,aAAa,EACb,SAAS,EACT,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EAEX,iBAAiB,EACjB,QAAQ,EAET,MAAM,SAAS,CAAC;AAycjB,iBAAS,WAAW,CAClB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,WAAW,GAChB,QAAQ,CAAC,eAAe,CAAC,CA6C3B;AA+ID,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AA6BF,iBAAS,kBAAkB,CACzB,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CASR;AAED,KAAK,mBAAmB,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAChD,CAAC;AAEF,iBAAS,yBAAyB,CAChC,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAgBR;AAED,iBAAS,8BAA8B,CACrC,gBAAgB,EAAE,mBAAmB,EAAE,GACtC,MAAM,CAMR;AAiBD,iBAAS,kBAAkB,CACzB,SAAS,EAAE,WAAW,EAAE,EACxB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAuBR;AAED,iBAAS,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAI7E;AAoBD,iBAAS,iBAAiB,CACxB,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAeR;AAkBD,iBAAS,aAAa,CACpB,OAAO,EAAE,iBAAiB,EAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CA2ER;;;;;;;;;;;AAED,wBASE"}
@@ -18,6 +18,7 @@ const Config_1 = __importDefault(require("./Config"));
18
18
  const Utils_1 = __importDefault(require("./Utils"));
19
19
  const Console_1 = __importDefault(require("./Console"));
20
20
  const TraceFinder_1 = __importDefault(require("../paths/TraceFinder"));
21
+ const SerializationHelper_1 = __importDefault(require("./SerializationHelper"));
21
22
  const REGEXP_NAME_CLEANUP = /[[]\(\)]/g;
22
23
  const EMPTY_JSONIFY_OPTIONS = {
23
24
  fiberNodeReturnTrace: {},
@@ -374,7 +375,12 @@ function JSONifyNode(node, args, options) {
374
375
  if (node.dominatorNode) {
375
376
  info['dominator id (extra)'] = `@${node.dominatorNode.id}`;
376
377
  }
377
- return info;
378
+ // use serialization helper to wrap around
379
+ // the JSON node with additional tagging information
380
+ const { serializationHelper } = options;
381
+ return serializationHelper
382
+ ? serializationHelper.createOrMergeWrapper(info, node, args, options)
383
+ : info;
378
384
  }
379
385
  function JSONifyTabsOrder() {
380
386
  const file = Utils_1.default.getSnapshotSequenceFilePath();
@@ -383,7 +389,7 @@ function JSONifyTabsOrder() {
383
389
  function shouldHighlight(node) {
384
390
  return Utils_1.default.isDetachedDOMNode(node) || Utils_1.default.isDetachedFiberNode(node);
385
391
  }
386
- function JSONifyPath(path, _snapshot, args) {
392
+ function JSONifyPath(path, snapshot, args) {
387
393
  if (!path.node) {
388
394
  return null;
389
395
  }
@@ -393,6 +399,9 @@ function JSONifyPath(path, _snapshot, args) {
393
399
  ret['$tabsOrder:' + JSONifyTabsOrder()] = '';
394
400
  ret[`${idx++}: ${getNodeNameInJSON(path.node, args)}`] = JSONifyNode(path.node, args, Object.assign(Object.assign({}, EMPTY_JSONIFY_OPTIONS), { processedNodeId: new Set() }));
395
401
  let pathItem = path;
402
+ // initialize serialization helper
403
+ const serializationHelper = new SerializationHelper_1.default();
404
+ serializationHelper.setSnapshot(snapshot);
396
405
  while (pathItem === null || pathItem === void 0 ? void 0 : pathItem.edge) {
397
406
  const edge = pathItem.edge;
398
407
  const nextNode = edge.toNode;
@@ -401,7 +410,7 @@ function JSONifyPath(path, _snapshot, args) {
401
410
  nextNode.highlight = true;
402
411
  }
403
412
  const edgeRetainSize = pathItem.edgeRetainSize;
404
- ret[`${idx++}: ${getEdgeNameInJSON(edge, edgeRetainSize)}${getNodeNameInJSON(nextNode, args)}`] = JSONifyNode(nextNode, args, Object.assign(Object.assign({}, EMPTY_JSONIFY_OPTIONS), { processedNodeId: new Set() }));
413
+ ret[`${idx++}: ${getEdgeNameInJSON(edge, edgeRetainSize)}${getNodeNameInJSON(nextNode, args)}`] = JSONifyNode(nextNode, args, Object.assign(Object.assign({}, EMPTY_JSONIFY_OPTIONS), { processedNodeId: new Set(), serializationHelper }));
405
414
  pathItem = pathItem.next;
406
415
  }
407
416
  return ret;
@@ -9,12 +9,12 @@
9
9
  * @oncall web_perf_infra
10
10
  */
11
11
  /// <reference types="node" />
12
- declare type ReadFileOptions = {
12
+ type ReadFileOptions = {
13
13
  startSignature?: string;
14
14
  endSignature?: string;
15
15
  inclusive?: boolean;
16
16
  };
17
- declare type NodeFSError = NodeJS.ErrnoException | null;
17
+ type NodeFSError = NodeJS.ErrnoException | null;
18
18
  declare class StringLoader {
19
19
  processErrorIfNotNull(err: NodeFSError): void;
20
20
  readFile(file: string, options?: ReadFileOptions): Promise<string>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringLoader.d.ts","sourceRoot":"","sources":["../../src/lib/StringLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;AAYH,KAAK,eAAe,GAAG;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;AAIhD,cAAM,YAAY;IAChB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAY7C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkFtE,4BAA4B,CAC1B,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,MAAM,CAAC;IA8FlB,4BAA4B,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC;CAmHxB;;AAED,wBAAkC"}