@memlab/heap-analysis 1.0.0 → 1.0.3

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 (51) hide show
  1. package/README.md +5 -9
  2. package/dist/BaseAnalysis.d.ts +82 -5
  3. package/dist/BaseAnalysis.js +78 -12
  4. package/dist/PluginUtils.d.ts +267 -1
  5. package/dist/PluginUtils.js +269 -3
  6. package/dist/__tests__/package.test.d.ts +2 -0
  7. package/dist/__tests__/package.test.js +85 -0
  8. package/dist/index.d.ts +5 -1
  9. package/dist/index.js +9 -5
  10. package/dist/plugins/CollectionsHoldingStaleAnalysis.d.ts +5 -0
  11. package/dist/plugins/CollectionsHoldingStaleAnalysis.js +11 -0
  12. package/dist/plugins/DetachedDOMElementAnalysis.d.ts +5 -0
  13. package/dist/plugins/DetachedDOMElementAnalysis.js +11 -0
  14. package/dist/plugins/GlobalVariableAnalysis/GlobalVariableAnalysis.d.ts +6 -0
  15. package/dist/plugins/GlobalVariableAnalysis/GlobalVariableAnalysis.js +13 -0
  16. package/dist/plugins/ObjectFanoutAnalysis.d.ts +5 -0
  17. package/dist/plugins/ObjectFanoutAnalysis.js +12 -0
  18. package/dist/plugins/ObjectShallowAnalysis.d.ts +27 -1
  19. package/dist/plugins/ObjectShallowAnalysis.js +25 -0
  20. package/dist/plugins/ObjectShapeAnalysis.d.ts +5 -0
  21. package/dist/plugins/ObjectShapeAnalysis.js +11 -0
  22. package/dist/plugins/ObjectSizeAnalysis.d.ts +5 -0
  23. package/dist/plugins/ObjectSizeAnalysis.js +12 -0
  24. package/dist/plugins/ObjectUnboundGrowthAnalysis.d.ts +5 -0
  25. package/dist/plugins/ObjectUnboundGrowthAnalysis.js +11 -0
  26. package/dist/plugins/ShapeUnboundGrowthAnalysis.d.ts +11 -15
  27. package/dist/plugins/ShapeUnboundGrowthAnalysis.js +16 -1
  28. package/dist/plugins/StringAnalysis.d.ts +34 -2
  29. package/dist/plugins/StringAnalysis.js +32 -3
  30. package/dist/plugins/UnmountedReactFiberNodesAnalysis.d.ts +5 -0
  31. package/dist/plugins/UnmountedReactFiberNodesAnalysis.js +11 -0
  32. package/package.json +9 -5
  33. package/dist/BaseAnalysis.d.ts.map +0 -1
  34. package/dist/HeapAnalysisLoader.d.ts.map +0 -1
  35. package/dist/PluginUtils.d.ts.map +0 -1
  36. package/dist/__tests__/HeapAnalysis.test.d.ts.map +0 -1
  37. package/dist/index.d.ts.map +0 -1
  38. package/dist/options/HeapAnalysisSnapshotDirectoryOption.d.ts.map +0 -1
  39. package/dist/options/HeapAnalysisSnapshotFileOption.d.ts.map +0 -1
  40. package/dist/plugins/CollectionsHoldingStaleAnalysis.d.ts.map +0 -1
  41. package/dist/plugins/DetachedDOMElementAnalysis.d.ts.map +0 -1
  42. package/dist/plugins/GlobalVariableAnalysis/BuiltInGlobalVariables.d.ts.map +0 -1
  43. package/dist/plugins/GlobalVariableAnalysis/GlobalVariableAnalysis.d.ts.map +0 -1
  44. package/dist/plugins/ObjectFanoutAnalysis.d.ts.map +0 -1
  45. package/dist/plugins/ObjectShallowAnalysis.d.ts.map +0 -1
  46. package/dist/plugins/ObjectShapeAnalysis.d.ts.map +0 -1
  47. package/dist/plugins/ObjectSizeAnalysis.d.ts.map +0 -1
  48. package/dist/plugins/ObjectUnboundGrowthAnalysis.d.ts.map +0 -1
  49. package/dist/plugins/ShapeUnboundGrowthAnalysis.d.ts.map +0 -1
  50. package/dist/plugins/StringAnalysis.d.ts.map +0 -1
  51. package/dist/plugins/UnmountedReactFiberNodesAnalysis.d.ts.map +0 -1
@@ -10,10 +10,17 @@
10
10
  import type { HeapAnalysisOptions } from '../PluginUtils';
11
11
  import { BaseOption } from '@memlab/core';
12
12
  import BaseAnalysis from '../BaseAnalysis';
13
- declare type ObjectRecord = {
13
+ /**
14
+ * duplicated object pattern information
15
+ */
16
+ export declare type ObjectRecord = {
17
+ /** number of duplicated objects with this pattern */
14
18
  n: number;
19
+ /** aggregated retained sizes of all duplicated objects with this pattern */
15
20
  size: number;
21
+ /** heap object ids of the duplicated JS objects */
16
22
  ids: string[];
23
+ /** duplicated object pattern */
17
24
  obj: string;
18
25
  };
19
26
  declare class ObjectShallowAnalysis extends BaseAnalysis {
@@ -22,11 +29,30 @@ declare class ObjectShallowAnalysis extends BaseAnalysis {
22
29
  private topDupObjInSize;
23
30
  private topDupObjInSizeListSize;
24
31
  private objectPatternsStat;
32
+ /**
33
+ * get CLI command name for this memory analysis;
34
+ * use it with `memlab analyze <ANALYSIS_NAME>` in CLI
35
+ * @returns command name
36
+ */
25
37
  getCommandName(): string;
38
+ /**
39
+ * get a textual description of the memory analysis
40
+ * @returns textual description
41
+ * @internal
42
+ */
26
43
  getDescription(): string;
44
+ /** @internal */
27
45
  getOptions(): BaseOption[];
46
+ /** @internal */
47
+ analyzeSnapshotsInDirectory(directory: string): Promise<void>;
48
+ /** @internal */
28
49
  process(options: HeapAnalysisOptions): Promise<void>;
50
+ /**
51
+ * get the top duplicated object in terms of duplicated object count
52
+ * @returns an array of the top-duplicated objects' information
53
+ */
29
54
  getTopDuplicatedObjectInCount(): ObjectRecord[];
55
+ /** @ignore */
30
56
  private getPreprocessedObjectMap;
31
57
  private nodeToObject;
32
58
  private static objectPatternsToObserve;
@@ -35,15 +35,35 @@ class ObjectShallowAnalysis extends BaseAnalysis_1.default {
35
35
  this.topDupObjInSizeListSize = 10;
36
36
  this.objectPatternsStat = {};
37
37
  }
38
+ /**
39
+ * get CLI command name for this memory analysis;
40
+ * use it with `memlab analyze <ANALYSIS_NAME>` in CLI
41
+ * @returns command name
42
+ */
38
43
  getCommandName() {
39
44
  return 'object-shallow';
40
45
  }
46
+ /**
47
+ * get a textual description of the memory analysis
48
+ * @returns textual description
49
+ * @internal
50
+ */
41
51
  getDescription() {
42
52
  return 'Get objects by key and value, without recursing into sub-objects';
43
53
  }
54
+ /** @internal */
44
55
  getOptions() {
45
56
  return [new HeapAnalysisSnapshotFileOption_1.default()];
46
57
  }
58
+ /** @internal */
59
+ analyzeSnapshotsInDirectory(directory) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
62
+ const d = directory;
63
+ throw core_1.utils.haltOrThrow(`${this.constructor.name} does not support analyzeSnapshotsInDirectory`);
64
+ });
65
+ }
66
+ /** @internal */
47
67
  process(options) {
48
68
  return __awaiter(this, void 0, void 0, function* () {
49
69
  const snapshot = yield PluginUtils_1.default.loadHeapSnapshot(options);
@@ -54,9 +74,14 @@ class ObjectShallowAnalysis extends BaseAnalysis_1.default {
54
74
  this.print();
55
75
  });
56
76
  }
77
+ /**
78
+ * get the top duplicated object in terms of duplicated object count
79
+ * @returns an array of the top-duplicated objects' information
80
+ */
57
81
  getTopDuplicatedObjectInCount() {
58
82
  return this.topDupObjInCnt;
59
83
  }
84
+ /** @ignore */
60
85
  getPreprocessedObjectMap(snapshot) {
61
86
  core_1.info.overwrite('building object map...');
62
87
  const objectMap = Object.create(null);
@@ -12,8 +12,13 @@ import { BaseOption } from '@memlab/core';
12
12
  import BaseAnalysis from '../BaseAnalysis';
13
13
  declare class ObjectShapeAnalysis extends BaseAnalysis {
14
14
  getCommandName(): string;
15
+ /** @internal */
15
16
  getDescription(): string;
17
+ /** @internal */
16
18
  getOptions(): BaseOption[];
19
+ /** @internal */
20
+ analyzeSnapshotsInDirectory(directory: string): Promise<void>;
21
+ /** @internal */
17
22
  process(options: HeapAnalysisOptions): Promise<void>;
18
23
  }
19
24
  export default ObjectShapeAnalysis;
@@ -29,12 +29,23 @@ class ObjectShapeAnalysis extends BaseAnalysis_1.default {
29
29
  getCommandName() {
30
30
  return 'shape';
31
31
  }
32
+ /** @internal */
32
33
  getDescription() {
33
34
  return 'List the shapes that retained most memory';
34
35
  }
36
+ /** @internal */
35
37
  getOptions() {
36
38
  return [new HeapAnalysisSnapshotFileOption_1.default()];
37
39
  }
40
+ /** @internal */
41
+ analyzeSnapshotsInDirectory(directory) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
+ const d = directory;
45
+ throw core_1.utils.haltOrThrow(`${this.constructor.name} does not support analyzeSnapshotsInDirectory`);
46
+ });
47
+ }
48
+ /** @internal */
38
49
  process(options) {
39
50
  return __awaiter(this, void 0, void 0, function* () {
40
51
  const snapshotPath = PluginUtils_1.default.getSnapshotFileForAnalysis(options);
@@ -12,8 +12,13 @@ import { BaseOption } from '@memlab/core';
12
12
  import BaseAnalysis from '../BaseAnalysis';
13
13
  declare class ObjectSizeRankAnalysis extends BaseAnalysis {
14
14
  getCommandName(): string;
15
+ /** @internal */
15
16
  getDescription(): string;
17
+ /** @internal */
16
18
  getOptions(): BaseOption[];
19
+ /** @internal */
20
+ analyzeSnapshotsInDirectory(directory: string): Promise<void>;
21
+ /** @internal */
17
22
  process(options: HeapAnalysisOptions): Promise<void>;
18
23
  }
19
24
  export default ObjectSizeRankAnalysis;
@@ -21,6 +21,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
21
21
  return (mod && mod.__esModule) ? mod : { "default": mod };
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
+ const core_1 = require("@memlab/core");
24
25
  const BaseAnalysis_1 = __importDefault(require("../BaseAnalysis"));
25
26
  const PluginUtils_1 = __importDefault(require("../PluginUtils"));
26
27
  const HeapAnalysisSnapshotFileOption_1 = __importDefault(require("../options/HeapAnalysisSnapshotFileOption"));
@@ -28,12 +29,23 @@ class ObjectSizeRankAnalysis extends BaseAnalysis_1.default {
28
29
  getCommandName() {
29
30
  return 'object-size';
30
31
  }
32
+ /** @internal */
31
33
  getDescription() {
32
34
  return 'Get the largest objects in heap';
33
35
  }
36
+ /** @internal */
34
37
  getOptions() {
35
38
  return [new HeapAnalysisSnapshotFileOption_1.default()];
36
39
  }
40
+ /** @internal */
41
+ analyzeSnapshotsInDirectory(directory) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
+ const d = directory;
45
+ throw core_1.utils.haltOrThrow(`${this.constructor.name} does not support analyzeSnapshotsInDirectory`);
46
+ });
47
+ }
48
+ /** @internal */
37
49
  process(options) {
38
50
  return __awaiter(this, void 0, void 0, function* () {
39
51
  const snapshot = yield PluginUtils_1.default.loadHeapSnapshot(options);
@@ -12,8 +12,13 @@ import { BaseOption } from '@memlab/core';
12
12
  import BaseAnalysis from '../BaseAnalysis';
13
13
  declare class ObjectUnboundGrowthAnalysis extends BaseAnalysis {
14
14
  getCommandName(): string;
15
+ /** @internal */
15
16
  getDescription(): string;
17
+ /** @internal */
16
18
  getOptions(): BaseOption[];
19
+ /** @internal */
20
+ analyzeSnapshotFromFile(file: string): Promise<void>;
21
+ /** @internal */
17
22
  process(options: HeapAnalysisOptions): Promise<void>;
18
23
  }
19
24
  export default ObjectUnboundGrowthAnalysis;
@@ -29,12 +29,23 @@ class ObjectUnboundGrowthAnalysis extends BaseAnalysis_1.default {
29
29
  getCommandName() {
30
30
  return 'unbound-object';
31
31
  }
32
+ /** @internal */
32
33
  getDescription() {
33
34
  return 'Check unbound object growth';
34
35
  }
36
+ /** @internal */
35
37
  getOptions() {
36
38
  return [new HeapAnalysisSnapshotDirectoryOption_1.default()];
37
39
  }
40
+ /** @internal */
41
+ analyzeSnapshotFromFile(file) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
+ const f = file;
45
+ throw core_1.utils.haltOrThrow(`${this.constructor.name} does not support analyzeSnapshotFromFile`);
46
+ });
47
+ }
48
+ /** @internal */
38
49
  process(options) {
39
50
  return __awaiter(this, void 0, void 0, function* () {
40
51
  const snapshotDir = PluginUtils_1.default.getSnapshotDirForAnalysis(options);
@@ -7,20 +7,9 @@
7
7
  * @emails oncall+ws_labs
8
8
  * @format
9
9
  */
10
- import type { IHeapSnapshot } from '@memlab/core';
11
10
  import type { HeapAnalysisOptions } from '../PluginUtils';
12
11
  import { BaseOption } from '@memlab/core';
13
12
  import BaseAnalysis from '../BaseAnalysis';
14
- declare type ShapesInfo = {
15
- [shape: string]: ShapeInfo;
16
- };
17
- declare type ShapeInfo = {
18
- shape: string;
19
- n: number;
20
- examples: number[];
21
- size: number;
22
- ids: Set<number>;
23
- };
24
13
  declare type ShapeSummary = {
25
14
  shape: string;
26
15
  counts: number[];
@@ -28,14 +17,21 @@ declare type ShapeSummary = {
28
17
  examples: number[];
29
18
  };
30
19
  export default class ShapeUnboundGrowthAnalysis extends BaseAnalysis {
20
+ private shapesOfInterest;
21
+ private shapesWithUnboundGrowth;
31
22
  getCommandName(): string;
23
+ /** @internal */
32
24
  getDescription(): string;
25
+ /** @internal */
33
26
  getOptions(): BaseOption[];
34
- private shapesOfInterest;
35
- process(options: HeapAnalysisOptions): Promise<ShapeSummary[]>;
27
+ /** @internal */
28
+ analyzeSnapshotFromFile(file: string): Promise<void>;
29
+ getShapesWithUnboundGrowth(): ShapeSummary[];
30
+ /** @internal */
31
+ process(options: HeapAnalysisOptions): Promise<void>;
36
32
  private retrieveShapesOfInterest;
37
- getShapesInfo(snapshot: IHeapSnapshot): ShapesInfo;
38
- getSummary(ShapesInfoList: ShapesInfo[]): ShapeSummary[];
33
+ private getShapesInfo;
34
+ private getSummary;
39
35
  private print;
40
36
  }
41
37
  export {};
@@ -30,24 +30,39 @@ class ShapeUnboundGrowthAnalysis extends BaseAnalysis_1.default {
30
30
  constructor() {
31
31
  super(...arguments);
32
32
  this.shapesOfInterest = null;
33
+ this.shapesWithUnboundGrowth = [];
33
34
  }
34
35
  getCommandName() {
35
36
  return 'unbound-shape';
36
37
  }
38
+ /** @internal */
37
39
  getDescription() {
38
40
  return 'Get shapes with unbound growth';
39
41
  }
42
+ /** @internal */
40
43
  getOptions() {
41
44
  return [new HeapAnalysisSnapshotDirectoryOption_1.default()];
42
45
  }
46
+ /** @internal */
47
+ analyzeSnapshotFromFile(file) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
50
+ const f = file;
51
+ throw core_1.utils.haltOrThrow(`${this.constructor.name} does not support analyzeSnapshotFromFile`);
52
+ });
53
+ }
54
+ getShapesWithUnboundGrowth() {
55
+ return this.shapesWithUnboundGrowth;
56
+ }
57
+ /** @internal */
43
58
  process(options) {
44
59
  return __awaiter(this, void 0, void 0, function* () {
45
60
  let list = yield PluginUtils_1.default.snapshotMapReduce(this.getShapesInfo.bind(this), this.getSummary, options);
46
61
  this.retrieveShapesOfInterest(list);
47
62
  list = yield PluginUtils_1.default.snapshotMapReduce(this.getShapesInfo.bind(this), this.getSummary, options);
48
63
  this.shapesOfInterest = null;
64
+ this.shapesWithUnboundGrowth = list;
49
65
  this.print(list);
50
- return list;
51
66
  });
52
67
  }
53
68
  retrieveShapesOfInterest(list) {
@@ -10,24 +10,57 @@
10
10
  import type { HeapAnalysisOptions } from '../PluginUtils';
11
11
  import { BaseOption } from '@memlab/core';
12
12
  import BaseAnalysis from '../BaseAnalysis';
13
- declare type StringRecord = {
13
+ /**
14
+ * duplicated string pattern information
15
+ */
16
+ export declare type StringRecord = {
17
+ /** number of duplicated strings with this pattern */
14
18
  n: number;
19
+ /** aggregated retained sizes of all duplicated strings with this pattern */
15
20
  size: number;
21
+ /** heap object ids of the duplicated string */
16
22
  ids: string[];
23
+ /** duplicated string pattern */
17
24
  str?: string;
18
25
  };
26
+ /**
27
+ * This analysis finds duplicated string instance in JavaScript heap
28
+ * and rank them based on the duplicated string size and count.
29
+ */
19
30
  export default class StringAnalysis extends BaseAnalysis {
20
31
  private topDupStrInCnt;
21
32
  private topDupStrInCntListSize;
22
33
  private topDupStrInSize;
23
34
  private topDupStrInSizeListSize;
24
35
  private stringPatternsStat;
36
+ /**
37
+ * get the top duplicated string in terms of duplicated string count
38
+ * @returns an array of the top-duplicated strings' information
39
+ */
25
40
  getTopDuplicatedStringsInCount(): StringRecord[];
41
+ /**
42
+ * collect statistics for specified string patterns
43
+ * pattern name -> string pattern checker
44
+ */
26
45
  private static stringPatternsToObserve;
46
+ /**
47
+ * get CLI command name for this memory analysis;
48
+ * use it with `memlab analyze <ANALYSIS_NAME>` in CLI
49
+ * @returns command name
50
+ */
27
51
  getCommandName(): string;
52
+ /**
53
+ * get a textual description of the memory analysis
54
+ * @returns textual description
55
+ * @internal
56
+ */
28
57
  getDescription(): string;
58
+ /** @internal */
29
59
  getOptions(): BaseOption[];
60
+ /** @internal */
61
+ analyzeSnapshotsInDirectory(directory: string): Promise<void>;
30
62
  private static shouldIgnoreNode;
63
+ /** @internal */
31
64
  process(options: HeapAnalysisOptions): Promise<void>;
32
65
  private getPreprocessedStringMap;
33
66
  private rankRecords;
@@ -36,5 +69,4 @@ export default class StringAnalysis extends BaseAnalysis {
36
69
  private calculateStringPatternsStatistics;
37
70
  private print;
38
71
  }
39
- export {};
40
72
  //# sourceMappingURL=StringAnalysis.d.ts.map
@@ -26,6 +26,10 @@ const core_1 = require("@memlab/core");
26
26
  const BaseAnalysis_1 = __importDefault(require("../BaseAnalysis"));
27
27
  const PluginUtils_1 = __importDefault(require("../PluginUtils"));
28
28
  const HeapAnalysisSnapshotFileOption_1 = __importDefault(require("../options/HeapAnalysisSnapshotFileOption"));
29
+ /**
30
+ * This analysis finds duplicated string instance in JavaScript heap
31
+ * and rank them based on the duplicated string size and count.
32
+ */
29
33
  class StringAnalysis extends BaseAnalysis_1.default {
30
34
  constructor() {
31
35
  super(...arguments);
@@ -35,18 +39,41 @@ class StringAnalysis extends BaseAnalysis_1.default {
35
39
  this.topDupStrInSizeListSize = 10;
36
40
  this.stringPatternsStat = {};
37
41
  }
42
+ /**
43
+ * get the top duplicated string in terms of duplicated string count
44
+ * @returns an array of the top-duplicated strings' information
45
+ */
38
46
  getTopDuplicatedStringsInCount() {
39
47
  return this.topDupStrInCnt;
40
48
  }
49
+ /**
50
+ * get CLI command name for this memory analysis;
51
+ * use it with `memlab analyze <ANALYSIS_NAME>` in CLI
52
+ * @returns command name
53
+ */
41
54
  getCommandName() {
42
55
  return 'string';
43
56
  }
57
+ /**
58
+ * get a textual description of the memory analysis
59
+ * @returns textual description
60
+ * @internal
61
+ */
44
62
  getDescription() {
45
63
  return 'Analyze string in heap';
46
64
  }
65
+ /** @internal */
47
66
  getOptions() {
48
67
  return [new HeapAnalysisSnapshotFileOption_1.default()];
49
68
  }
69
+ /** @internal */
70
+ analyzeSnapshotsInDirectory(directory) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
73
+ const d = directory;
74
+ throw core_1.utils.haltOrThrow(`${this.constructor.name} does not support analyzeSnapshotsInDirectory`);
75
+ });
76
+ }
50
77
  static shouldIgnoreNode(node) {
51
78
  if (!core_1.utils.isStringNode(node) || core_1.utils.isSlicedStringNode(node)) {
52
79
  return true;
@@ -56,6 +83,7 @@ class StringAnalysis extends BaseAnalysis_1.default {
56
83
  const hasCodeDominator = dominators.reduce((prev, cur) => prev && cur.type !== 'code', true);
57
84
  return !hasCodeDominator;
58
85
  }
86
+ /** @internal */
59
87
  process(options) {
60
88
  return __awaiter(this, void 0, void 0, function* () {
61
89
  const snapshot = yield PluginUtils_1.default.loadHeapSnapshot(options);
@@ -66,7 +94,6 @@ class StringAnalysis extends BaseAnalysis_1.default {
66
94
  this.print();
67
95
  });
68
96
  }
69
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
70
97
  getPreprocessedStringMap(snapshot) {
71
98
  core_1.info.overwrite('building string map...');
72
99
  const stringMap = Object.create(null);
@@ -182,8 +209,10 @@ class StringAnalysis extends BaseAnalysis_1.default {
182
209
  }
183
210
  }
184
211
  exports.default = StringAnalysis;
185
- // collect statistics for specified string patterns
186
- // pattern name -> string pattern checker
212
+ /**
213
+ * collect statistics for specified string patterns
214
+ * pattern name -> string pattern checker
215
+ */
187
216
  StringAnalysis.stringPatternsToObserve = {
188
217
  // all strings (excluding sliced strings)
189
218
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -12,8 +12,13 @@ import { BaseOption } from '@memlab/core';
12
12
  import BaseAnalysis from '../BaseAnalysis';
13
13
  export default class UnmountedFiberNodeAnalysis extends BaseAnalysis {
14
14
  getCommandName(): string;
15
+ /** @internal */
15
16
  getDescription(): string;
17
+ /** @internal */
16
18
  getOptions(): BaseOption[];
19
+ /** @internal */
20
+ analyzeSnapshotsInDirectory(directory: string): Promise<void>;
21
+ /** @internal */
17
22
  process(options: HeapAnalysisOptions): Promise<void>;
18
23
  }
19
24
  //# sourceMappingURL=UnmountedReactFiberNodesAnalysis.d.ts.map
@@ -29,12 +29,23 @@ class UnmountedFiberNodeAnalysis extends BaseAnalysis_1.default {
29
29
  getCommandName() {
30
30
  return 'unmounted-fiber-node';
31
31
  }
32
+ /** @internal */
32
33
  getDescription() {
33
34
  return 'Get unmounted React Fiber nodes';
34
35
  }
36
+ /** @internal */
35
37
  getOptions() {
36
38
  return [new HeapAnalysisSnapshotFileOption_1.default()];
37
39
  }
40
+ /** @internal */
41
+ analyzeSnapshotsInDirectory(directory) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
+ const d = directory;
45
+ throw core_1.utils.haltOrThrow(`${this.constructor.name} does not support analyzeSnapshotsInDirectory`);
46
+ });
47
+ }
48
+ /** @internal */
38
49
  process(options) {
39
50
  return __awaiter(this, void 0, void 0, function* () {
40
51
  const snapshot = yield PluginUtils_1.default.loadHeapSnapshot(options);
package/package.json CHANGED
@@ -1,15 +1,18 @@
1
1
  {
2
2
  "name": "@memlab/heap-analysis",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
+ "license": "MIT",
4
5
  "description": "heap analysis plugins for memlab",
6
+ "author": "Liang Gong <lgong@fb.com>",
7
+ "contributors": [],
5
8
  "keywords": [
6
9
  "heap",
7
10
  "analysis",
8
- "plugin"
11
+ "plugin",
12
+ "memlab",
13
+ "memory",
14
+ "leak"
9
15
  ],
10
- "author": "Liang Gong <lgong@fb.com>",
11
- "contributors": [],
12
- "license": "MIT",
13
16
  "main": "dist/index.js",
14
17
  "types": "dist/index.d.ts",
15
18
  "files": [
@@ -46,6 +49,7 @@
46
49
  "scripts": {
47
50
  "build-pkg": "tsc",
48
51
  "test-pkg": "jest .",
52
+ "publish-patch": "npm version patch --force && npm publish",
49
53
  "clean-pkg": "rm -rf ./dist && rm -rf ./node_modules && rm -f ./tsconfig.tsbuildinfo"
50
54
  },
51
55
  "bugs": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseAnalysis.d.ts","sourceRoot":"","sources":["../src/BaseAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAC,UAAU,EAA0B,MAAM,cAAc,CAAC;AAuBjE,uBAAe,QAAQ;cAEL,OAAO,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM5D,GAAG,CACd,OAAO,GAAE,mBAAqD,GAC7D,OAAO,CAAC,QAAQ,CAAC;IAKP,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUxD,2BAA2B,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC;CASrB;AAED,cAAM,YAAa,SAAQ,QAAQ;IAGjC,cAAc,IAAI,MAAM;IAOxB,cAAc,IAAI,MAAM;cAUR,OAAO,CAErB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,QAAQ,CAAC;IAMpB,UAAU,IAAI,UAAU,EAAE;CAG3B;AAED,eAAe,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeapAnalysisLoader.d.ts","sourceRoot":"","sources":["../src/HeapAnalysisLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAE/C,cAAM,kBAAkB;IACtB,OAAO,CAAC,OAAO,CAAwC;IAEhD,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IASnD,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,uBAAuB;CA4BhC;;AAED,wBAAwC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginUtils.d.ts","sourceRoot":"","sources":["../src/PluginUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EAER,YAAY,EAEb,MAAM,cAAc,CAAC;AAKtB,oBAAY,mBAAmB,GAAG;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAmBF,iBAAS,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAYvD;AAiDD,aAAK,eAAe,GAAG;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AACF,iBAAS,uBAAuB,CAC9B,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,GAAE,UAAU,GAAG,eAAoB,GACzC,IAAI,CAgBN;AA4ED,iBAAS,yBAAyB,CAChC,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,GAAE,UAAU,GAAG,eAAoB,GACzC,IAAI,CAON;AAED,iBAAS,0BAA0B,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAS3D;AAED,iBAAS,0BAA0B,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAWxE;AAED,iBAAS,yBAAyB,CAChC,OAAO,EAAE,mBAAmB,GAC3B,QAAQ,CAAC,MAAM,CAAC,CASlB;AAED,iBAAe,gBAAgB,CAC7B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAGxB;AAYD,iBAAe,iBAAiB,CAAC,EAAE,EAAE,EAAE,EACrC,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,EAAE,EACrE,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EACrC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,EAAE,CAAC,CAqBb;AAED,iBAAS,yBAAyB,CAChC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAChB,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,EACzC,aAAa,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,GACzC,MAAM,CAWR;AAED,iBAAS,uBAAuB,CAC9B,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,EAC1C,QAAQ,SAAK,GACZ,SAAS,EAAE,CAoBb;;;;;;;;;;;;;;;;;;AAED,wBAYE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeapAnalysis.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/HeapAnalysis.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,0BAA0B,EAAC,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,yDAAyD,CAAC;AAC1G,OAAO,EAAC,OAAO,IAAI,+BAA+B,EAAC,MAAM,2CAA2C,CAAC;AACrG,OAAO,EAAC,OAAO,IAAI,qBAAqB,EAAC,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAC,OAAO,IAAI,0BAA0B,EAAC,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAC,OAAO,IAAI,2BAA2B,EAAC,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,eAAe,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeapAnalysisSnapshotDirectoryOption.d.ts","sourceRoot":"","sources":["../../src/options/HeapAnalysisSnapshotDirectoryOption.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAC,UAAU,EAAE,YAAY,EAAQ,MAAM,cAAc,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,mCAAoC,SAAQ,UAAU;IACzE,aAAa,IAAI,MAAM;IAIvB,cAAc,IAAI,MAAM;IAIxB,gBAAgB,IAAI,MAAM,EAAE;IAItB,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAWnE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeapAnalysisSnapshotFileOption.d.ts","sourceRoot":"","sources":["../../src/options/HeapAnalysisSnapshotFileOption.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAC,UAAU,EAAE,YAAY,EAAQ,MAAM,cAAc,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,8BAA+B,SAAQ,UAAU;IACpE,aAAa,IAAI,MAAM;IAIvB,cAAc,IAAI,MAAM;IAIxB,gBAAgB,IAAI,MAAM,EAAE;IAItB,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAWnE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CollectionsHoldingStaleAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/CollectionsHoldingStaleAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAc,UAAU,EAAC,MAAM,cAAc,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAgD3C,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,YAAY;IAChE,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAI/B,UAAU,IAAI,UAAU,EAAE;IAI1B,OAAO,CAAC,qBAAqB,CAO1B;IAEG,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,OAAO,CAAC,6BAA6B;IAoBrC,OAAO,CAAC,KAAK;CAgCd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DetachedDOMElementAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/DetachedDOMElementAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAQ,UAAU,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAI3C,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,YAAY;IAClE,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAI1B,OAAO,CAAC,gBAAgB,CAAmB;IAEpC,mBAAmB,IAAI,SAAS,EAAE;IAInC,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BuiltInGlobalVariables.d.ts","sourceRoot":"","sources":["../../../src/plugins/GlobalVariableAnalysis/BuiltInGlobalVariables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;AAEH,wBAoiCG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GlobalVariableAnalysis.d.ts","sourceRoot":"","sources":["../../../src/plugins/GlobalVariableAnalysis/GlobalVariableAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAI9C,cAAM,sBAAuB,SAAQ,YAAY;IAC/C,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,kBAAkB;CAoB3B;AAED,eAAe,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObjectFanoutAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/ObjectFanoutAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAIxD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAI3C,cAAM,oBAAqB,SAAQ,YAAY;IAC7C,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,OAAO,CAAC,wBAAwB;CA2BjC;AAED,eAAe,oBAAoB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObjectShallowAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/ObjectShallowAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAc,UAAU,EAAY,MAAM,cAAc,CAAC;AAChE,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAS3C,aAAK,YAAY,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAiBF,cAAM,qBAAsB,SAAQ,YAAY;IAC9C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,sBAAsB,CAAM;IACpC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,uBAAuB,CAAM;IACrC,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD,6BAA6B,IAAI,YAAY,EAAE;IAItD,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAGpC;IAEF,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,oCAAoC;IAS5C,OAAO,CAAC,mCAAmC;IAS3C,OAAO,CAAC,iCAAiC;IA6BzC,OAAO,CAAC,KAAK;CA8Cd;AAED,eAAe,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObjectShapeAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/ObjectShapeAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAW,UAAU,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAI3C,cAAM,mBAAoB,SAAQ,YAAY;IAC5C,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3D;AAED,eAAe,mBAAmB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObjectSizeAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/ObjectSizeAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAI3C,cAAM,sBAAuB,SAAQ,YAAY;IAC/C,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ3D;AAED,eAAe,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObjectUnboundGrowthAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/ObjectUnboundGrowthAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAmB,UAAU,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAI3C,cAAM,2BAA4B,SAAQ,YAAY;IACpD,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAM3D;AAED,eAAe,2BAA2B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShapeUnboundGrowthAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/ShapeUnboundGrowthAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAW,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAC,UAAU,EAAkC,MAAM,cAAc,CAAC;AAEzE,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAG3C,aAAK,UAAU,GAAG;IAChB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,aAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClB,CAAC;AAEF,aAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,YAAY;IAC3D,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAI/B,UAAU,IAAI,UAAU,EAAE;IAI1B,OAAO,CAAC,gBAAgB,CAA+B;IAE1C,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAoB3E,OAAO,CAAC,wBAAwB;IAOhC,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU;IAoDlD,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE;IAyDxD,OAAO,CAAC,KAAK;CAmBd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StringAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/StringAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAc,UAAU,EAAC,MAAM,cAAc,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAQ3C,aAAK,YAAY,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAiBF,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAY;IACtD,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,sBAAsB,CAAM;IACpC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,uBAAuB,CAAM;IACrC,OAAO,CAAC,kBAAkB,CAAyB;IAE5C,8BAA8B,IAAI,YAAY,EAAE;IAMvD,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAmCpC;IAEK,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAI/B,UAAU,IAAI,UAAU,EAAE;IAI1B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAczB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,oCAAoC;IAS5C,OAAO,CAAC,mCAAmC;IAS3C,OAAO,CAAC,iCAAiC;IA6BzC,OAAO,CAAC,KAAK;CA4Cd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UnmountedReactFiberNodesAnalysis.d.ts","sourceRoot":"","sources":["../../src/plugins/UnmountedReactFiberNodesAnalysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAQ,UAAU,EAAC,MAAM,cAAc,CAAC;AAE/C,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAG3C,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,YAAY;IAClE,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ3D"}