@memlab/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +11 -0
  2. package/bin/memlab +14 -0
  3. package/dist/BaseCommand.d.ts +37 -0
  4. package/dist/BaseCommand.d.ts.map +1 -0
  5. package/dist/BaseCommand.js +132 -0
  6. package/dist/Dispatcher.d.ts +35 -0
  7. package/dist/Dispatcher.d.ts.map +1 -0
  8. package/dist/Dispatcher.js +205 -0
  9. package/dist/TypesThirdParty.d.ts +17 -0
  10. package/dist/TypesThirdParty.d.ts.map +1 -0
  11. package/dist/TypesThirdParty.js +10 -0
  12. package/dist/commands/CleanLoggerDataCommand.d.ts +20 -0
  13. package/dist/commands/CleanLoggerDataCommand.d.ts.map +1 -0
  14. package/dist/commands/CleanLoggerDataCommand.js +50 -0
  15. package/dist/commands/CleanRunDataCommand.d.ts +20 -0
  16. package/dist/commands/CleanRunDataCommand.d.ts.map +1 -0
  17. package/dist/commands/CleanRunDataCommand.js +48 -0
  18. package/dist/commands/InitDirectoryCommand.d.ts +20 -0
  19. package/dist/commands/InitDirectoryCommand.d.ts.map +1 -0
  20. package/dist/commands/InitDirectoryCommand.js +48 -0
  21. package/dist/commands/ListScenariosCommand.d.ts +17 -0
  22. package/dist/commands/ListScenariosCommand.d.ts.map +1 -0
  23. package/dist/commands/ListScenariosCommand.js +51 -0
  24. package/dist/commands/MemLabRunCommand.d.ts +20 -0
  25. package/dist/commands/MemLabRunCommand.d.ts.map +1 -0
  26. package/dist/commands/MemLabRunCommand.js +66 -0
  27. package/dist/commands/PrintSummaryCommand.d.ts +20 -0
  28. package/dist/commands/PrintSummaryCommand.d.ts.map +1 -0
  29. package/dist/commands/PrintSummaryCommand.js +55 -0
  30. package/dist/commands/ResetDirectoryCommand.d.ts +19 -0
  31. package/dist/commands/ResetDirectoryCommand.d.ts.map +1 -0
  32. package/dist/commands/ResetDirectoryCommand.js +46 -0
  33. package/dist/commands/RunMeasureCommand.d.ts +20 -0
  34. package/dist/commands/RunMeasureCommand.d.ts.map +1 -0
  35. package/dist/commands/RunMeasureCommand.js +82 -0
  36. package/dist/commands/WarmupAppCommand.d.ts +20 -0
  37. package/dist/commands/WarmupAppCommand.d.ts.map +1 -0
  38. package/dist/commands/WarmupAppCommand.js +65 -0
  39. package/dist/commands/heap/CheckLeakCommand.d.ts +21 -0
  40. package/dist/commands/heap/CheckLeakCommand.d.ts.map +1 -0
  41. package/dist/commands/heap/CheckLeakCommand.js +94 -0
  42. package/dist/commands/heap/GetRetainerTraceCommand.d.ts +21 -0
  43. package/dist/commands/heap/GetRetainerTraceCommand.d.ts.map +1 -0
  44. package/dist/commands/heap/GetRetainerTraceCommand.js +92 -0
  45. package/dist/commands/heap/HeapAnalysisCommand.d.ts +21 -0
  46. package/dist/commands/heap/HeapAnalysisCommand.d.ts.map +1 -0
  47. package/dist/commands/heap/HeapAnalysisCommand.js +98 -0
  48. package/dist/commands/heap/HeapAnalysisSubCommandWrapper.d.ts +23 -0
  49. package/dist/commands/heap/HeapAnalysisSubCommandWrapper.d.ts.map +1 -0
  50. package/dist/commands/heap/HeapAnalysisSubCommandWrapper.js +68 -0
  51. package/dist/commands/helper/HelperCommand.d.ts +37 -0
  52. package/dist/commands/helper/HelperCommand.d.ts.map +1 -0
  53. package/dist/commands/helper/HelperCommand.js +262 -0
  54. package/dist/commands/helper/lib/CommandOrder.d.ts +13 -0
  55. package/dist/commands/helper/lib/CommandOrder.d.ts.map +1 -0
  56. package/dist/commands/helper/lib/CommandOrder.js +42 -0
  57. package/dist/commands/helper/lib/Types.d.ts +16 -0
  58. package/dist/commands/helper/lib/Types.d.ts.map +1 -0
  59. package/dist/commands/helper/lib/Types.js +11 -0
  60. package/dist/commands/query/QueryDefaultWorkDirCommand.d.ts +20 -0
  61. package/dist/commands/query/QueryDefaultWorkDirCommand.d.ts.map +1 -0
  62. package/dist/commands/query/QueryDefaultWorkDirCommand.js +67 -0
  63. package/dist/commands/snapshot/CheckXvfbSupportCommand.d.ts +18 -0
  64. package/dist/commands/snapshot/CheckXvfbSupportCommand.d.ts.map +1 -0
  65. package/dist/commands/snapshot/CheckXvfbSupportCommand.js +55 -0
  66. package/dist/commands/snapshot/Snapshot.d.ts +11 -0
  67. package/dist/commands/snapshot/Snapshot.d.ts.map +1 -0
  68. package/dist/commands/snapshot/Snapshot.js +47 -0
  69. package/dist/commands/snapshot/TakeSnapshotCommand.d.ts +20 -0
  70. package/dist/commands/snapshot/TakeSnapshotCommand.d.ts.map +1 -0
  71. package/dist/commands/snapshot/TakeSnapshotCommand.js +80 -0
  72. package/dist/commands/snapshot/WarmupAndSnapshotCommand.d.ts +18 -0
  73. package/dist/commands/snapshot/WarmupAndSnapshotCommand.d.ts.map +1 -0
  74. package/dist/commands/snapshot/WarmupAndSnapshotCommand.js +49 -0
  75. package/dist/commands/test/BrowserTest.d.ts +11 -0
  76. package/dist/commands/test/BrowserTest.d.ts.map +1 -0
  77. package/dist/commands/test/BrowserTest.js +41 -0
  78. package/dist/commands/test/RunAllInteractionTestsCommand.d.ts +19 -0
  79. package/dist/commands/test/RunAllInteractionTestsCommand.d.ts.map +1 -0
  80. package/dist/commands/test/RunAllInteractionTestsCommand.js +71 -0
  81. package/dist/commands/test/RunInteractionTestCommand.d.ts +19 -0
  82. package/dist/commands/test/RunInteractionTestCommand.d.ts.map +1 -0
  83. package/dist/commands/test/RunInteractionTestCommand.js +75 -0
  84. package/dist/index.d.ts +11 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +26 -0
  87. package/dist/options/AppOption.d.ts +19 -0
  88. package/dist/options/AppOption.d.ts.map +1 -0
  89. package/dist/options/AppOption.js +42 -0
  90. package/dist/options/DebugOption.d.ts +18 -0
  91. package/dist/options/DebugOption.d.ts.map +1 -0
  92. package/dist/options/DebugOption.js +37 -0
  93. package/dist/options/DisableXvfbOption.d.ts +18 -0
  94. package/dist/options/DisableXvfbOption.d.ts.map +1 -0
  95. package/dist/options/DisableXvfbOption.js +37 -0
  96. package/dist/options/FullExecutionOption.d.ts +18 -0
  97. package/dist/options/FullExecutionOption.d.ts.map +1 -0
  98. package/dist/options/FullExecutionOption.js +37 -0
  99. package/dist/options/HeapNodeIdOption.d.ts +19 -0
  100. package/dist/options/HeapNodeIdOption.d.ts.map +1 -0
  101. package/dist/options/HeapNodeIdOption.js +46 -0
  102. package/dist/options/HelperOption.d.ts +19 -0
  103. package/dist/options/HelperOption.d.ts.map +1 -0
  104. package/dist/options/HelperOption.js +39 -0
  105. package/dist/options/InteractionOption.d.ts +19 -0
  106. package/dist/options/InteractionOption.d.ts.map +1 -0
  107. package/dist/options/InteractionOption.js +42 -0
  108. package/dist/options/NumberOfRunsOption.d.ts +20 -0
  109. package/dist/options/NumberOfRunsOption.d.ts.map +1 -0
  110. package/dist/options/NumberOfRunsOption.js +44 -0
  111. package/dist/options/RemoteBrowserDebugOption.d.ts +18 -0
  112. package/dist/options/RemoteBrowserDebugOption.d.ts.map +1 -0
  113. package/dist/options/RemoteBrowserDebugOption.js +37 -0
  114. package/dist/options/RunningModeOption.d.ts +19 -0
  115. package/dist/options/RunningModeOption.d.ts.map +1 -0
  116. package/dist/options/RunningModeOption.js +40 -0
  117. package/dist/options/ScenarioFileOption.d.ts +19 -0
  118. package/dist/options/ScenarioFileOption.d.ts.map +1 -0
  119. package/dist/options/ScenarioFileOption.js +44 -0
  120. package/dist/options/SetContinuousTestOption.d.ts +18 -0
  121. package/dist/options/SetContinuousTestOption.d.ts.map +1 -0
  122. package/dist/options/SetContinuousTestOption.js +37 -0
  123. package/dist/options/SetDeviceOption.d.ts +19 -0
  124. package/dist/options/SetDeviceOption.d.ts.map +1 -0
  125. package/dist/options/SetDeviceOption.js +46 -0
  126. package/dist/options/SetWorkingDirectoryOption.d.ts +20 -0
  127. package/dist/options/SetWorkingDirectoryOption.d.ts.map +1 -0
  128. package/dist/options/SetWorkingDirectoryOption.js +40 -0
  129. package/dist/options/SilentOption.d.ts +19 -0
  130. package/dist/options/SilentOption.d.ts.map +1 -0
  131. package/dist/options/SilentOption.js +40 -0
  132. package/dist/options/SkipExtraOperationOption.d.ts +18 -0
  133. package/dist/options/SkipExtraOperationOption.d.ts.map +1 -0
  134. package/dist/options/SkipExtraOperationOption.js +37 -0
  135. package/dist/options/SkipGCOption.d.ts +18 -0
  136. package/dist/options/SkipGCOption.d.ts.map +1 -0
  137. package/dist/options/SkipGCOption.js +37 -0
  138. package/dist/options/SkipScreenshotOption.d.ts +18 -0
  139. package/dist/options/SkipScreenshotOption.d.ts.map +1 -0
  140. package/dist/options/SkipScreenshotOption.js +37 -0
  141. package/dist/options/SkipScrollOption.d.ts +18 -0
  142. package/dist/options/SkipScrollOption.d.ts.map +1 -0
  143. package/dist/options/SkipScrollOption.js +37 -0
  144. package/dist/options/SkipSnapshotOption.d.ts +18 -0
  145. package/dist/options/SkipSnapshotOption.d.ts.map +1 -0
  146. package/dist/options/SkipSnapshotOption.js +37 -0
  147. package/dist/options/SkipWarmupOption.d.ts +18 -0
  148. package/dist/options/SkipWarmupOption.d.ts.map +1 -0
  149. package/dist/options/SkipWarmupOption.js +37 -0
  150. package/dist/options/VerboseOption.d.ts +19 -0
  151. package/dist/options/VerboseOption.d.ts.map +1 -0
  152. package/dist/options/VerboseOption.js +40 -0
  153. package/dist/options/heap/BaselineFileOption.d.ts +18 -0
  154. package/dist/options/heap/BaselineFileOption.d.ts.map +1 -0
  155. package/dist/options/heap/BaselineFileOption.js +53 -0
  156. package/dist/options/heap/FinalFileOption.d.ts +18 -0
  157. package/dist/options/heap/FinalFileOption.d.ts.map +1 -0
  158. package/dist/options/heap/FinalFileOption.js +53 -0
  159. package/dist/options/heap/JSEngineOption.d.ts +18 -0
  160. package/dist/options/heap/JSEngineOption.d.ts.map +1 -0
  161. package/dist/options/heap/JSEngineOption.js +46 -0
  162. package/dist/options/heap/LogTraceAsClusterOption.d.ts +18 -0
  163. package/dist/options/heap/LogTraceAsClusterOption.d.ts.map +1 -0
  164. package/dist/options/heap/LogTraceAsClusterOption.js +37 -0
  165. package/dist/options/heap/OversizeThresholdOption.d.ts +19 -0
  166. package/dist/options/heap/OversizeThresholdOption.d.ts.map +1 -0
  167. package/dist/options/heap/OversizeThresholdOption.js +45 -0
  168. package/dist/options/heap/SnapshotDirectoryOption.d.ts +18 -0
  169. package/dist/options/heap/SnapshotDirectoryOption.d.ts.map +1 -0
  170. package/dist/options/heap/SnapshotDirectoryOption.js +50 -0
  171. package/dist/options/heap/SnapshotFileOption.d.ts +18 -0
  172. package/dist/options/heap/SnapshotFileOption.d.ts.map +1 -0
  173. package/dist/options/heap/SnapshotFileOption.js +50 -0
  174. package/dist/options/heap/TargetFileOption.d.ts +18 -0
  175. package/dist/options/heap/TargetFileOption.d.ts.map +1 -0
  176. package/dist/options/heap/TargetFileOption.js +53 -0
  177. package/dist/options/heap/TraceAllObjectsOption.d.ts +18 -0
  178. package/dist/options/heap/TraceAllObjectsOption.d.ts.map +1 -0
  179. package/dist/options/heap/TraceAllObjectsOption.js +38 -0
  180. package/dist/options/heap/leak-filter/LeakFilterFileOption.d.ts +19 -0
  181. package/dist/options/heap/leak-filter/LeakFilterFileOption.d.ts.map +1 -0
  182. package/dist/options/heap/leak-filter/LeakFilterFileOption.js +41 -0
  183. package/dist/options/heap/leak-filter/examples/FilterLib.d.ts +12 -0
  184. package/dist/options/heap/leak-filter/examples/FilterLib.d.ts.map +1 -0
  185. package/dist/options/heap/leak-filter/examples/FilterLib.js +30 -0
  186. package/dist/options/heap/leak-filter/examples/dup-string-as-leak.example-1.d.ts +13 -0
  187. package/dist/options/heap/leak-filter/examples/dup-string-as-leak.example-1.d.ts.map +1 -0
  188. package/dist/options/heap/leak-filter/examples/dup-string-as-leak.example-1.js +30 -0
  189. package/dist/options/heap/leak-filter/examples/dup-string-as-leak.example-2.d.ts +16 -0
  190. package/dist/options/heap/leak-filter/examples/dup-string-as-leak.example-2.d.ts.map +1 -0
  191. package/dist/options/heap/leak-filter/examples/dup-string-as-leak.example-2.js +28 -0
  192. package/dist/options/heap/leak-filter/examples/large-object-as-leak.example.d.ts +3 -0
  193. package/dist/options/heap/leak-filter/examples/large-object-as-leak.example.d.ts.map +1 -0
  194. package/dist/options/heap/leak-filter/examples/large-object-as-leak.example.js +13 -0
  195. package/dist/runner.d.ts +11 -0
  196. package/dist/runner.d.ts.map +1 -0
  197. package/dist/runner.js +38 -0
  198. package/package.json +59 -0
@@ -0,0 +1,48 @@
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
+ * @emails oncall+ws_labs
9
+ * @format
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const BaseCommand_1 = __importDefault(require("../BaseCommand"));
25
+ const core_1 = require("@memlab/core");
26
+ const SetWorkingDirectoryOption_1 = __importDefault(require("../options/SetWorkingDirectoryOption"));
27
+ class InitDirectoryCommand extends BaseCommand_1.default {
28
+ getCommandName() {
29
+ return 'init-dir';
30
+ }
31
+ getDescription() {
32
+ return 'initialize all directories';
33
+ }
34
+ isInternalCommand() {
35
+ return true;
36
+ }
37
+ getOptions() {
38
+ return [new SetWorkingDirectoryOption_1.default()];
39
+ }
40
+ run(options) {
41
+ var _a;
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ const workDir = (_a = options.configFromOptions) === null || _a === void 0 ? void 0 : _a.workDir;
44
+ core_1.fileManager.initDirs(core_1.config, { workDir });
45
+ });
46
+ }
47
+ }
48
+ exports.default = InitDirectoryCommand;
@@ -0,0 +1,17 @@
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
+ * @emails oncall+ws_labs
8
+ * @format
9
+ */
10
+ import type { CLIOptions } from '@memlab/core';
11
+ import BaseCommand from '../BaseCommand';
12
+ export default class ListScenariosCommand extends BaseCommand {
13
+ getCommandName(): string;
14
+ getDescription(): string;
15
+ run(_options: CLIOptions): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=ListScenariosCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListScenariosCommand.d.ts","sourceRoot":"","sources":["../../src/commands/ListScenariosCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAG7C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAIzC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,WAAW;IAC3D,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAKlB,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB/C"}
@@ -0,0 +1,51 @@
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
+ * @emails oncall+ws_labs
9
+ * @format
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const chalk_1 = __importDefault(require("chalk"));
25
+ const BaseCommand_1 = __importDefault(require("../BaseCommand"));
26
+ const e2e_1 = require("@memlab/e2e");
27
+ const core_1 = require("@memlab/core");
28
+ class ListScenariosCommand extends BaseCommand_1.default {
29
+ getCommandName() {
30
+ return 'list';
31
+ }
32
+ getDescription() {
33
+ return 'List all test scenarios';
34
+ }
35
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
36
+ run(_options) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const names = e2e_1.defaultTestPlanner.getAppNames();
39
+ core_1.info.topLevel(`All available ${chalk_1.default.yellow('apps')} and ${chalk_1.default.green('interactions')}:`);
40
+ for (const name of names) {
41
+ const targets = e2e_1.defaultTestPlanner
42
+ .getTargetNames(name)
43
+ .map(name => chalk_1.default.green(name))
44
+ .join(chalk_1.default.grey(', '));
45
+ core_1.info.topLevel(`\n${chalk_1.default.yellow(name)}: ${targets}`);
46
+ }
47
+ core_1.info.topLevel('');
48
+ });
49
+ }
50
+ }
51
+ exports.default = ListScenariosCommand;
@@ -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
+ * @emails oncall+ws_labs
8
+ * @format
9
+ */
10
+ import type { BaseOption, CLIOptions } from '@memlab/core';
11
+ import BaseCommand from '../BaseCommand';
12
+ export default class MemLabRunCommand extends BaseCommand {
13
+ getCommandName(): string;
14
+ getDescription(): string;
15
+ getExamples(): string[];
16
+ getPrerequisites(): BaseCommand[];
17
+ getOptions(): BaseOption[];
18
+ run(options: CLIOptions): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=MemLabRunCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemLabRunCommand.d.ts","sourceRoot":"","sources":["../../src/commands/MemLabRunCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAE,UAAU,EAAW,MAAM,cAAc,CAAC;AAKnE,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAMzC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM,EAAE;IAIvB,gBAAgB,IAAI,WAAW,EAAE;IAQjC,UAAU,IAAI,UAAU,EAAE;IAIpB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAU9C"}
@@ -0,0 +1,66 @@
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
+ * @emails oncall+ws_labs
9
+ * @format
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const fs_1 = __importDefault(require("fs"));
25
+ const path_1 = __importDefault(require("path"));
26
+ const core_1 = require("@memlab/core");
27
+ const BaseCommand_1 = __importDefault(require("../BaseCommand"));
28
+ const CheckLeakCommand_1 = __importDefault(require("./heap/CheckLeakCommand"));
29
+ const InitDirectoryCommand_1 = __importDefault(require("./InitDirectoryCommand"));
30
+ const TakeSnapshotCommand_1 = __importDefault(require("./snapshot/TakeSnapshotCommand"));
31
+ const SetWorkingDirectoryOption_1 = __importDefault(require("../options/SetWorkingDirectoryOption"));
32
+ class MemLabRunCommand extends BaseCommand_1.default {
33
+ getCommandName() {
34
+ return 'run';
35
+ }
36
+ getDescription() {
37
+ return 'find memory leaks in web apps';
38
+ }
39
+ getExamples() {
40
+ return ['--app=comet --interaction=watch'];
41
+ }
42
+ getPrerequisites() {
43
+ return [
44
+ new InitDirectoryCommand_1.default(),
45
+ new TakeSnapshotCommand_1.default(),
46
+ new CheckLeakCommand_1.default(),
47
+ ];
48
+ }
49
+ getOptions() {
50
+ return [new SetWorkingDirectoryOption_1.default()];
51
+ }
52
+ run(options) {
53
+ var _a;
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ // move leaks.txt file
56
+ const workDir = (_a = options.configFromOptions) === null || _a === void 0 ? void 0 : _a.workDir;
57
+ const outDir = core_1.fileManager.getDataOutDir({ workDir });
58
+ const leakSrcFile = path_1.default.join(outDir, 'leaks.txt');
59
+ const content = fs_1.default.readFileSync(leakSrcFile, 'UTF-8');
60
+ const curDataDir = core_1.fileManager.getCurDataDir({ workDir });
61
+ const leakDestFile = path_1.default.join(curDataDir, 'leaks.txt');
62
+ fs_1.default.writeFileSync(leakDestFile, content, 'UTF-8');
63
+ });
64
+ }
65
+ }
66
+ exports.default = MemLabRunCommand;
@@ -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
+ * @emails oncall+ws_labs
8
+ * @format
9
+ */
10
+ import type { CLIOptions } from '@memlab/core';
11
+ import BaseCommand from '../BaseCommand';
12
+ import { BaseOption } from '@memlab/core';
13
+ export default class PrintSummaryCommand extends BaseCommand {
14
+ getCommandName(): string;
15
+ getDescription(): string;
16
+ isInternalCommand(): boolean;
17
+ getOptions(): BaseOption[];
18
+ run(options: CLIOptions): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=PrintSummaryCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrintSummaryCommand.d.ts","sourceRoot":"","sources":["../../src/commands/PrintSummaryCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAW,MAAM,cAAc,CAAC;AAIvD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAoB,UAAU,EAAC,MAAM,cAAc,CAAC;AAG3D,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAW;IAC1D,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,iBAAiB,IAAI,OAAO;IAI5B,UAAU,IAAI,UAAU,EAAE;IAIpB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAW9C"}
@@ -0,0 +1,55 @@
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
+ * @emails oncall+ws_labs
9
+ * @format
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const fs_extra_1 = __importDefault(require("fs-extra"));
25
+ const core_1 = require("@memlab/core");
26
+ const BaseCommand_1 = __importDefault(require("../BaseCommand"));
27
+ const core_2 = require("@memlab/core");
28
+ const SetWorkingDirectoryOption_1 = __importDefault(require("../options/SetWorkingDirectoryOption"));
29
+ class PrintSummaryCommand extends BaseCommand_1.default {
30
+ getCommandName() {
31
+ return 'summary';
32
+ }
33
+ getDescription() {
34
+ return 'Print summary of the last check leak run';
35
+ }
36
+ isInternalCommand() {
37
+ return true;
38
+ }
39
+ getOptions() {
40
+ return [new SetWorkingDirectoryOption_1.default()];
41
+ }
42
+ run(options) {
43
+ var _a;
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const workDir = (_a = options.configFromOptions) === null || _a === void 0 ? void 0 : _a.workDir;
46
+ const summaryFile = core_2.fileManager.getLeakSummaryFile({ workDir });
47
+ if (!fs_extra_1.default.existsSync(summaryFile)) {
48
+ core_1.utils.haltOrThrow('No MemLab leak summary found. Please make sure "memlab explore" runs successfully first.');
49
+ }
50
+ const content = fs_extra_1.default.readFileSync(summaryFile, 'UTF-8');
51
+ core_2.info.topLevel(content);
52
+ });
53
+ }
54
+ }
55
+ exports.default = PrintSummaryCommand;
@@ -0,0 +1,19 @@
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
+ * @emails oncall+ws_labs
8
+ * @format
9
+ */
10
+ import type { CLIOptions } from '@memlab/core';
11
+ import BaseCommand from '../BaseCommand';
12
+ import { BaseOption } from '@memlab/core';
13
+ export default class ResetDirectoryCommand extends BaseCommand {
14
+ getCommandName(): string;
15
+ getDescription(): string;
16
+ getOptions(): BaseOption[];
17
+ run(options: CLIOptions): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=ResetDirectoryCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResetDirectoryCommand.d.ts","sourceRoot":"","sources":["../../src/commands/ResetDirectoryCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAW,MAAM,cAAc,CAAC;AAEvD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAsB,UAAU,EAAC,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,WAAW;IAC5D,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,UAAU,EAAE;IAIpB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9C"}
@@ -0,0 +1,46 @@
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
+ * @emails oncall+ws_labs
9
+ * @format
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const BaseCommand_1 = __importDefault(require("../BaseCommand"));
25
+ const core_1 = require("@memlab/core");
26
+ const SetWorkingDirectoryOption_1 = __importDefault(require("../options/SetWorkingDirectoryOption"));
27
+ class ResetDirectoryCommand extends BaseCommand_1.default {
28
+ getCommandName() {
29
+ return 'reset';
30
+ }
31
+ getDescription() {
32
+ return 'reset and initialize all directories';
33
+ }
34
+ getOptions() {
35
+ return [new SetWorkingDirectoryOption_1.default()];
36
+ }
37
+ run(options) {
38
+ var _a;
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const workDir = (_a = options.configFromOptions) === null || _a === void 0 ? void 0 : _a.workDir;
41
+ core_1.fileManager.rmWorkDir({ workDir });
42
+ core_1.fileManager.initDirs(core_1.config, { workDir });
43
+ });
44
+ }
45
+ }
46
+ exports.default = ResetDirectoryCommand;
@@ -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
+ * @emails oncall+ws_labs
8
+ * @format
9
+ */
10
+ import type { CLIOptions } from '@memlab/core';
11
+ import BaseCommand from '../BaseCommand';
12
+ import { BaseOption } from '@memlab/core';
13
+ export default class RunMeasureCommand extends BaseCommand {
14
+ getCommandName(): string;
15
+ getDescription(): string;
16
+ getPrerequisites(): BaseCommand[];
17
+ getOptions(): BaseOption[];
18
+ run(options: CLIOptions): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=RunMeasureCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunMeasureCommand.d.ts","sourceRoot":"","sources":["../../src/commands/RunMeasureCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAE7C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAgB,UAAU,EAAC,MAAM,cAAc,CAAC;AAkBvD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW;IACxD,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,gBAAgB,IAAI,WAAW,EAAE;IAIjC,UAAU,IAAI,UAAU,EAAE;IAmBpB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAS9C"}
@@ -0,0 +1,82 @@
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
+ * @emails oncall+ws_labs
9
+ * @format
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const BaseCommand_1 = __importDefault(require("../BaseCommand"));
25
+ const InitDirectoryCommand_1 = __importDefault(require("./InitDirectoryCommand"));
26
+ const core_1 = require("@memlab/core");
27
+ const CleanRunDataCommand_1 = __importDefault(require("./CleanRunDataCommand"));
28
+ const Snapshot_1 = require("./snapshot/Snapshot");
29
+ const AppOption_1 = __importDefault(require("../options/AppOption"));
30
+ const FullExecutionOption_1 = __importDefault(require("../options/FullExecutionOption"));
31
+ const InteractionOption_1 = __importDefault(require("../options/InteractionOption"));
32
+ const SkipScreenshotOption_1 = __importDefault(require("../options/SkipScreenshotOption"));
33
+ const SkipSnapshotOption_1 = __importDefault(require("../options/SkipSnapshotOption"));
34
+ const SkipGCOption_1 = __importDefault(require("../options/SkipGCOption"));
35
+ const SkipScrollOption_1 = __importDefault(require("../options/SkipScrollOption"));
36
+ const SkipExtraOperationOption_1 = __importDefault(require("../options/SkipExtraOperationOption"));
37
+ const RunningModeOption_1 = __importDefault(require("../options/RunningModeOption"));
38
+ const RemoteBrowserDebugOption_1 = __importDefault(require("../options/RemoteBrowserDebugOption"));
39
+ const ScenarioFileOption_1 = __importDefault(require("../options/ScenarioFileOption"));
40
+ const SetDeviceOption_1 = __importDefault(require("../options/SetDeviceOption"));
41
+ const DisableXvfbOption_1 = __importDefault(require("../options/DisableXvfbOption"));
42
+ const NumberOfRunsOption_1 = __importDefault(require("../options/NumberOfRunsOption"));
43
+ class RunMeasureCommand extends BaseCommand_1.default {
44
+ getCommandName() {
45
+ return 'measure';
46
+ }
47
+ getDescription() {
48
+ return 'Run test scenario in measure mode';
49
+ }
50
+ getPrerequisites() {
51
+ return [new CleanRunDataCommand_1.default(), new InitDirectoryCommand_1.default()];
52
+ }
53
+ getOptions() {
54
+ return [
55
+ new NumberOfRunsOption_1.default(),
56
+ new AppOption_1.default(),
57
+ new InteractionOption_1.default(),
58
+ new FullExecutionOption_1.default(),
59
+ new SkipSnapshotOption_1.default(),
60
+ new SkipScreenshotOption_1.default(),
61
+ new SkipGCOption_1.default(),
62
+ new SkipScrollOption_1.default(),
63
+ new SkipExtraOperationOption_1.default(),
64
+ new RunningModeOption_1.default(),
65
+ new RemoteBrowserDebugOption_1.default(),
66
+ new ScenarioFileOption_1.default(),
67
+ new SetDeviceOption_1.default(),
68
+ new DisableXvfbOption_1.default(),
69
+ ];
70
+ }
71
+ run(options) {
72
+ var _a, _b;
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ const numRuns = (_b = (_a = options.configFromOptions) === null || _a === void 0 ? void 0 : _a.numOfRuns) !== null && _b !== void 0 ? _b : NumberOfRunsOption_1.default.DEFAULT_NUM_RUNS;
75
+ core_1.config.runningMode = core_1.modes.get('measure', core_1.config);
76
+ for (let i = 0; i < numRuns; ++i) {
77
+ yield (0, Snapshot_1.runPageInteractionFromCLI)();
78
+ }
79
+ });
80
+ }
81
+ }
82
+ exports.default = RunMeasureCommand;
@@ -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
+ * @emails oncall+ws_labs
8
+ * @format
9
+ */
10
+ import type { CLIOptions } from '@memlab/core';
11
+ import { BaseOption } from '@memlab/core';
12
+ import BaseCommand from '../BaseCommand';
13
+ export default class FBWarmupAppCommand extends BaseCommand {
14
+ getCommandName(): string;
15
+ getDescription(): string;
16
+ getPrerequisites(): BaseCommand[];
17
+ getOptions(): BaseOption[];
18
+ run(_options: CLIOptions): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=WarmupAppCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WarmupAppCommand.d.ts","sourceRoot":"","sources":["../../src/commands/WarmupAppCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAazC,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,WAAW;IACzD,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,gBAAgB,IAAI,WAAW,EAAE;IAIjC,UAAU,IAAI,UAAU,EAAE;IAcpB,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C"}
@@ -0,0 +1,65 @@
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
+ * @emails oncall+ws_labs
9
+ * @format
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const BaseCommand_1 = __importDefault(require("../BaseCommand"));
25
+ const api_1 = require("@memlab/api");
26
+ const InitDirectoryCommand_1 = __importDefault(require("./InitDirectoryCommand"));
27
+ const AppOption_1 = __importDefault(require("../options/AppOption"));
28
+ const InteractionOption_1 = __importDefault(require("../options/InteractionOption"));
29
+ const RunningModeOption_1 = __importDefault(require("../options/RunningModeOption"));
30
+ const RemoteBrowserDebugOption_1 = __importDefault(require("../options/RemoteBrowserDebugOption"));
31
+ const ScenarioFileOption_1 = __importDefault(require("../options/ScenarioFileOption"));
32
+ const SetDeviceOption_1 = __importDefault(require("../options/SetDeviceOption"));
33
+ const DisableXvfbOption_1 = __importDefault(require("../options/DisableXvfbOption"));
34
+ const SkipWarmupOption_1 = __importDefault(require("../options/SkipWarmupOption"));
35
+ const CheckXvfbSupportCommand_1 = __importDefault(require("./snapshot/CheckXvfbSupportCommand"));
36
+ class FBWarmupAppCommand extends BaseCommand_1.default {
37
+ getCommandName() {
38
+ return 'warmup';
39
+ }
40
+ getDescription() {
41
+ return 'warm up the target app';
42
+ }
43
+ getPrerequisites() {
44
+ return [new InitDirectoryCommand_1.default(), new CheckXvfbSupportCommand_1.default()];
45
+ }
46
+ getOptions() {
47
+ return [
48
+ new AppOption_1.default(),
49
+ new InteractionOption_1.default(),
50
+ new RunningModeOption_1.default(),
51
+ new RemoteBrowserDebugOption_1.default(),
52
+ new ScenarioFileOption_1.default(),
53
+ new SetDeviceOption_1.default(),
54
+ new DisableXvfbOption_1.default(),
55
+ new SkipWarmupOption_1.default(),
56
+ ];
57
+ }
58
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
59
+ run(_options) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ yield (0, api_1.warmup)();
62
+ });
63
+ }
64
+ }
65
+ exports.default = FBWarmupAppCommand;
@@ -0,0 +1,21 @@
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
+ * @emails oncall+ws_labs
8
+ * @format
9
+ */
10
+ import type { CLIOptions } from '@memlab/core';
11
+ import BaseCommand, { CommandCategory } from '../../BaseCommand';
12
+ import { BaseOption } from '@memlab/core';
13
+ export default class CheckLeakCommand extends BaseCommand {
14
+ getCommandName(): string;
15
+ getDescription(): string;
16
+ getCategory(): CommandCategory;
17
+ getPrerequisites(): BaseCommand[];
18
+ getOptions(): BaseOption[];
19
+ run(_options: CLIOptions): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=CheckLeakCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckLeakCommand.d.ts","sourceRoot":"","sources":["../../../src/commands/heap/CheckLeakCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,WAAW,EAAE,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAC,UAAU,EAAmB,MAAM,cAAc,CAAC;AAa1D,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,eAAe;IAI9B,gBAAgB,IAAI,WAAW,EAAE;IAIjC,UAAU,IAAI,UAAU,EAAE;IAepB,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAI/C"}