@alwaysmeticulous/cli 2.259.0 → 2.260.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 (119) hide show
  1. package/dist/{utils → command-utils}/sentry.utils.d.ts +1 -1
  2. package/dist/command-utils/sentry.utils.js.map +1 -0
  3. package/dist/commands/auth/index.d.ts +2 -0
  4. package/dist/commands/auth/index.js +14 -0
  5. package/dist/commands/auth/index.js.map +1 -0
  6. package/dist/commands/auth/logout.command.d.ts +2 -0
  7. package/dist/commands/auth/logout.command.js +17 -0
  8. package/dist/commands/auth/logout.command.js.map +1 -0
  9. package/dist/commands/auth/whoami.command.d.ts +2 -0
  10. package/dist/commands/auth/whoami.command.js +41 -0
  11. package/dist/commands/auth/whoami.command.js.map +1 -0
  12. package/dist/commands/ci/index.d.ts +2 -0
  13. package/dist/commands/ci/index.js +26 -0
  14. package/dist/commands/ci/index.js.map +1 -0
  15. package/dist/commands/ci/prepare.command.d.ts +15 -0
  16. package/dist/commands/{prepare-for-meticulous-tests/prepare-for-meticulous-tests.command.js → ci/prepare.command.js} +22 -31
  17. package/dist/commands/ci/prepare.command.js.map +1 -0
  18. package/dist/commands/ci/run-local.command.d.ts +23 -0
  19. package/dist/commands/{run-all-tests/run-all-tests.command.js → ci/run-local.command.js} +64 -63
  20. package/dist/commands/ci/run-local.command.js.map +1 -0
  21. package/dist/commands/ci/run.command.d.ts +22 -0
  22. package/dist/commands/{run-all-tests-in-cloud/run-all-tests-in-cloud.command.js → ci/run.command.js} +97 -111
  23. package/dist/commands/ci/run.command.js.map +1 -0
  24. package/dist/commands/ci/start-tunnel.command.d.ts +21 -0
  25. package/dist/commands/ci/start-tunnel.command.js +142 -0
  26. package/dist/commands/ci/start-tunnel.command.js.map +1 -0
  27. package/dist/commands/ci/upload-assets.command.d.ts +14 -0
  28. package/dist/commands/{upload-assets-and-execute-test-run-in-cloud/upload-assets-and-execute-test-run-in-cloud.command.js → ci/upload-assets.command.js} +46 -54
  29. package/dist/commands/ci/upload-assets.command.js.map +1 -0
  30. package/dist/commands/ci/upload-container.command.d.ts +15 -0
  31. package/dist/commands/{upload-container-and-execute-test-run-in-cloud/upload-container-and-execute-test-run-in-cloud.command.js → ci/upload-container.command.js} +53 -62
  32. package/dist/commands/ci/upload-container.command.js.map +1 -0
  33. package/dist/commands/deprecated-aliases.d.ts +2 -0
  34. package/dist/commands/deprecated-aliases.js +27 -0
  35. package/dist/commands/deprecated-aliases.js.map +1 -0
  36. package/dist/commands/download/index.d.ts +2 -0
  37. package/dist/commands/download/index.js +20 -0
  38. package/dist/commands/download/index.js.map +1 -0
  39. package/dist/commands/download/replay.command.d.ts +7 -0
  40. package/dist/commands/{download-replay/download-replay.command.js → download/replay.command.js} +17 -23
  41. package/dist/commands/download/replay.command.js.map +1 -0
  42. package/dist/commands/download/session.command.d.ts +7 -0
  43. package/dist/commands/download/session.command.js +32 -0
  44. package/dist/commands/download/session.command.js.map +1 -0
  45. package/dist/commands/download/test-run.command.d.ts +8 -0
  46. package/dist/commands/{download-test-run/download-test-run.command.js → download/test-run.command.js} +21 -21
  47. package/dist/commands/download/test-run.command.js.map +1 -0
  48. package/dist/commands/project/index.d.ts +2 -0
  49. package/dist/commands/project/index.js +13 -0
  50. package/dist/commands/project/index.js.map +1 -0
  51. package/dist/commands/project/show.command.d.ts +6 -0
  52. package/dist/commands/project/show.command.js +26 -0
  53. package/dist/commands/project/show.command.js.map +1 -0
  54. package/dist/commands/record/index.d.ts +2 -0
  55. package/dist/commands/record/index.js +18 -0
  56. package/dist/commands/record/index.js.map +1 -0
  57. package/dist/commands/record/login.command.d.ts +14 -0
  58. package/dist/commands/{record-login/record-login.command.js → record/login.command.js} +16 -31
  59. package/dist/commands/record/login.command.js.map +1 -0
  60. package/dist/commands/record/session.command.d.ts +17 -0
  61. package/dist/commands/record/{record.command.js → session.command.js} +16 -37
  62. package/dist/commands/record/session.command.js.map +1 -0
  63. package/dist/commands/{replay/utils/replay-debugger.ui.js → replay-debugger.ui.js} +2 -7
  64. package/dist/commands/replay-debugger.ui.js.map +1 -0
  65. package/dist/commands/replay.command.d.ts +25 -0
  66. package/dist/commands/{replay/replay.command.js → replay.command.js} +77 -82
  67. package/dist/commands/replay.command.js.map +1 -0
  68. package/dist/index.d.ts +4 -7
  69. package/dist/index.js +8 -14
  70. package/dist/index.js.map +1 -1
  71. package/dist/main.d.ts +1 -1
  72. package/dist/main.js +20 -33
  73. package/dist/main.js.map +1 -1
  74. package/package.json +5 -5
  75. package/dist/command-utils/command-builder.d.ts +0 -10
  76. package/dist/command-utils/command-builder.js +0 -20
  77. package/dist/command-utils/command-builder.js.map +0 -1
  78. package/dist/commands/download-replay/download-replay.command.d.ts +0 -10
  79. package/dist/commands/download-replay/download-replay.command.js.map +0 -1
  80. package/dist/commands/download-session/download-session.command.d.ts +0 -10
  81. package/dist/commands/download-session/download-session.command.js +0 -33
  82. package/dist/commands/download-session/download-session.command.js.map +0 -1
  83. package/dist/commands/download-test-run/download-test-run.command.d.ts +0 -17
  84. package/dist/commands/download-test-run/download-test-run.command.js.map +0 -1
  85. package/dist/commands/logout/logout.command.d.ts +0 -2
  86. package/dist/commands/logout/logout.command.js +0 -18
  87. package/dist/commands/logout/logout.command.js.map +0 -1
  88. package/dist/commands/prepare-for-meticulous-tests/prepare-for-meticulous-tests.command.d.ts +0 -22
  89. package/dist/commands/prepare-for-meticulous-tests/prepare-for-meticulous-tests.command.js.map +0 -1
  90. package/dist/commands/record/record.command.d.ts +0 -67
  91. package/dist/commands/record/record.command.js.map +0 -1
  92. package/dist/commands/record-login/record-login.command.d.ts +0 -56
  93. package/dist/commands/record-login/record-login.command.js.map +0 -1
  94. package/dist/commands/replay/replay.command.d.ts +0 -161
  95. package/dist/commands/replay/replay.command.js.map +0 -1
  96. package/dist/commands/replay/utils/replay-debugger.ui.js.map +0 -1
  97. package/dist/commands/run-all-tests/run-all-tests.command.d.ts +0 -140
  98. package/dist/commands/run-all-tests/run-all-tests.command.js.map +0 -1
  99. package/dist/commands/run-all-tests-in-cloud/run-all-tests-in-cloud.command.d.ts +0 -87
  100. package/dist/commands/run-all-tests-in-cloud/run-all-tests-in-cloud.command.js.map +0 -1
  101. package/dist/commands/show-project/show-project.command.d.ts +0 -6
  102. package/dist/commands/show-project/show-project.command.js +0 -27
  103. package/dist/commands/show-project/show-project.command.js.map +0 -1
  104. package/dist/commands/start-local-tunnel/start-local-tunnel.command.d.ts +0 -81
  105. package/dist/commands/start-local-tunnel/start-local-tunnel.command.js +0 -144
  106. package/dist/commands/start-local-tunnel/start-local-tunnel.command.js.map +0 -1
  107. package/dist/commands/upload-assets-and-execute-test-run-in-cloud/upload-assets-and-execute-test-run-in-cloud.command.d.ts +0 -46
  108. package/dist/commands/upload-assets-and-execute-test-run-in-cloud/upload-assets-and-execute-test-run-in-cloud.command.js.map +0 -1
  109. package/dist/commands/upload-container-and-execute-test-run-in-cloud/upload-container-and-execute-test-run-in-cloud.command.d.ts +0 -50
  110. package/dist/commands/upload-container-and-execute-test-run-in-cloud/upload-container-and-execute-test-run-in-cloud.command.js.map +0 -1
  111. package/dist/commands/whoami/whoami.command.d.ts +0 -2
  112. package/dist/commands/whoami/whoami.command.js +0 -42
  113. package/dist/commands/whoami/whoami.command.js.map +0 -1
  114. package/dist/utils/npm-set-script.utils.d.ts +0 -4
  115. package/dist/utils/npm-set-script.utils.js +0 -17
  116. package/dist/utils/npm-set-script.utils.js.map +0 -1
  117. package/dist/utils/sentry.utils.js.map +0 -1
  118. /package/dist/{utils → command-utils}/sentry.utils.js +0 -0
  119. /package/dist/commands/{replay/utils/replay-debugger.ui.d.ts → replay-debugger.ui.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-assets.command.js","sourceRoot":"","sources":["../../../src/commands/ci/upload-assets.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ContainerEnvVariable } from "@alwaysmeticulous/client";
2
+ import { CommandModule } from "yargs";
3
+ interface Options {
4
+ apiToken?: string | undefined;
5
+ commitSha?: string | undefined;
6
+ baseSha?: string | undefined;
7
+ repoDirectory?: string | undefined;
8
+ localImageTag: string;
9
+ waitForBase: boolean;
10
+ waitForTestRunToComplete: boolean;
11
+ containerPort?: number | undefined;
12
+ containerEnv?: ContainerEnvVariable[] | undefined;
13
+ }
14
+ export declare const ciUploadContainerCommand: CommandModule<unknown, Options>;
15
+ export {};
@@ -23,13 +23,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.uploadContainerAndExecuteTestRunInCloudCommand = void 0;
26
+ exports.ciUploadContainerCommand = void 0;
27
27
  const client_1 = require("@alwaysmeticulous/client");
28
28
  const common_1 = require("@alwaysmeticulous/common");
29
29
  const remote_replay_launcher_1 = require("@alwaysmeticulous/remote-replay-launcher");
30
30
  const Sentry = __importStar(require("@sentry/node"));
31
- const command_builder_1 = require("../../command-utils/command-builder");
32
31
  const common_options_1 = require("../../command-utils/common-options");
32
+ const sentry_utils_1 = require("../../command-utils/sentry.utils");
33
33
  const out_of_date_client_error_1 = require("../../utils/out-of-date-client-error");
34
34
  const POLL_INTERVAL_MS = 10000;
35
35
  const handler = async ({ apiToken, commitSha: commitSha_, baseSha: baseSha_, repoDirectory, localImageTag, waitForBase, waitForTestRunToComplete, containerPort, containerEnv, }) => {
@@ -41,9 +41,9 @@ const handler = async ({ apiToken, commitSha: commitSha_, baseSha: baseSha_, rep
41
41
  logger.error("No commit sha found, you must be in a git repository or provide one with --commitSha");
42
42
  process.exit(1);
43
43
  }
44
- const baseSha = baseSha_ || (repoDirectory
45
- ? await (0, common_1.getLocalBaseSha)(gitOpts)
46
- : undefined) || undefined;
44
+ const baseSha = baseSha_ ||
45
+ (repoDirectory ? await (0, common_1.getLocalBaseSha)(gitOpts) : undefined) ||
46
+ undefined;
47
47
  if (baseSha && baseSha === commitSha) {
48
48
  logger.info("Base SHA equals head SHA — nothing to test.");
49
49
  return;
@@ -54,10 +54,7 @@ const handler = async ({ apiToken, commitSha: commitSha_, baseSha: baseSha_, rep
54
54
  }
55
55
  Sentry.captureMessage("Received upload container request", {
56
56
  level: "debug",
57
- extra: {
58
- commitSha,
59
- localImageTag,
60
- },
57
+ extra: { commitSha, localImageTag },
61
58
  });
62
59
  let testRunId = null;
63
60
  try {
@@ -101,58 +98,52 @@ const handler = async ({ apiToken, commitSha: commitSha_, baseSha: baseSha_, rep
101
98
  }
102
99
  logger.info(`Test run ${testRunId} finished with status: ${completedTestRun.status}`);
103
100
  };
104
- exports.uploadContainerAndExecuteTestRunInCloudCommand = (0, command_builder_1.buildCommand)("upload-container-and-execute-test-run-in-cloud")
105
- .details({
101
+ exports.ciUploadContainerCommand = {
102
+ command: "upload-container",
106
103
  describe: "Upload a Docker container to Meticulous and trigger a test run against it",
107
- })
108
- .options({
109
- apiToken: common_options_1.OPTIONS.apiToken,
110
- commitSha: common_options_1.OPTIONS.commitSha,
111
- baseSha: {
112
- demandOption: false,
113
- string: true,
114
- description: "The base commit SHA to compare against. If not provided, inferred from --repoDirectory via merge-base with origin/main.",
115
- },
116
- repoDirectory: {
117
- demandOption: false,
118
- string: true,
119
- description: "The path to the git repository to use for auto-detecting --commitSha and the base SHA.",
120
- },
121
- localImageTag: {
122
- demandOption: true,
123
- string: true,
124
- description: "The local Docker image tag to upload (e.g., 'myapp:latest' or image SHA)",
125
- },
126
- waitForBase: {
127
- demandOption: false,
128
- boolean: true,
129
- default: true,
130
- description: "If true, the launcher will try to wait for a base test run to be created before triggering a test run. If that is not found, it will trigger a test run without waiting for a base test run.",
131
- },
132
- waitForTestRunToComplete: {
133
- demandOption: false,
134
- boolean: true,
135
- default: false,
136
- description: "If true, block and wait until the triggered test run is complete, then report results. Implies --waitForBase.",
137
- },
138
- containerPort: {
139
- demandOption: false,
140
- number: true,
141
- description: "The port to expose the container on.",
142
- },
143
- containerEnv: {
144
- demandOption: false,
145
- array: true,
146
- coerce: (value) => value.map((v) => {
147
- const [name, ...rest] = v.split("=");
148
- const envValue = rest.join("=");
149
- if (!name || !envValue) {
150
- throw new Error(`Invalid environment variable: ${v}`);
151
- }
152
- return { name, value: envValue };
153
- }),
154
- description: "The environment variables to set in the container.",
104
+ builder: {
105
+ apiToken: common_options_1.OPTIONS.apiToken,
106
+ commitSha: common_options_1.OPTIONS.commitSha,
107
+ baseSha: {
108
+ string: true,
109
+ description: "The base commit SHA to compare against. If not provided, inferred from --repoDirectory via merge-base with origin/main.",
110
+ },
111
+ repoDirectory: {
112
+ string: true,
113
+ description: "The path to the git repository to use for auto-detecting --commitSha and the base SHA.",
114
+ },
115
+ localImageTag: {
116
+ demandOption: true,
117
+ string: true,
118
+ description: "The local Docker image tag to upload (e.g., 'myapp:latest' or image SHA)",
119
+ },
120
+ waitForBase: {
121
+ boolean: true,
122
+ default: true,
123
+ description: "If true, the launcher will try to wait for a base test run to be created before triggering a test run.",
124
+ },
125
+ waitForTestRunToComplete: {
126
+ boolean: true,
127
+ default: false,
128
+ description: "If true, block and wait until the triggered test run is complete, then report results. Implies --waitForBase.",
129
+ },
130
+ containerPort: {
131
+ number: true,
132
+ description: "The port to expose the container on.",
133
+ },
134
+ containerEnv: {
135
+ array: true,
136
+ coerce: (value) => value.map((v) => {
137
+ const [name, ...rest] = v.split("=");
138
+ const envValue = rest.join("=");
139
+ if (!name || !envValue) {
140
+ throw new Error(`Invalid environment variable: ${v}`);
141
+ }
142
+ return { name, value: envValue };
143
+ }),
144
+ description: "The environment variables to set in the container.",
145
+ },
155
146
  },
156
- })
157
- .handler(handler);
158
- //# sourceMappingURL=upload-container-and-execute-test-run-in-cloud.command.js.map
147
+ handler: (0, sentry_utils_1.wrapHandler)(handler),
148
+ };
149
+ //# sourceMappingURL=upload-container.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-container.command.js","sourceRoot":"","sources":["../../../src/commands/ci/upload-container.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CommandModule } from "yargs";
2
+ export declare const deprecatedAliases: CommandModule[];
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deprecatedAliases = void 0;
4
+ const prepare_command_1 = require("./ci/prepare.command");
5
+ const run_command_1 = require("./ci/run.command");
6
+ const upload_assets_command_1 = require("./ci/upload-assets.command");
7
+ const upload_container_command_1 = require("./ci/upload-container.command");
8
+ const createDeprecatedAlias = (oldName, newName, target) => {
9
+ var _a;
10
+ return ({
11
+ command: oldName,
12
+ describe: false,
13
+ builder: (_a = target.builder) !== null && _a !== void 0 ? _a : {},
14
+ handler: (args) => {
15
+ const separator = "=".repeat(72);
16
+ process.stderr.write(`\n${separator}\nDEPRECATION WARNING\n'${oldName}' has been renamed. Use 'meticulous ${newName}' instead.\nThis old name will be removed in a future version.\n${separator}\n\n`);
17
+ return target.handler(args);
18
+ },
19
+ });
20
+ };
21
+ exports.deprecatedAliases = [
22
+ createDeprecatedAlias("run-all-tests-in-cloud", "ci run-with-tunnel", run_command_1.ciRunCommand),
23
+ createDeprecatedAlias("prepare-for-meticulous-tests", "ci prepare", prepare_command_1.ciPrepareCommand),
24
+ createDeprecatedAlias("upload-assets-and-execute-test-run-in-cloud", "ci upload-assets", upload_assets_command_1.ciUploadAssetsCommand),
25
+ createDeprecatedAlias("upload-container-and-execute-test-run-in-cloud", "ci upload-container", upload_container_command_1.ciUploadContainerCommand),
26
+ ];
27
+ //# sourceMappingURL=deprecated-aliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated-aliases.js","sourceRoot":"","sources":["../../src/commands/deprecated-aliases.ts"],"names":[],"mappings":";;;AACA,0DAAwD;AACxD,kDAAgD;AAChD,sEAAmE;AACnE,4EAAyE;AAEzE,MAAM,qBAAqB,GAAG,CAC5B,OAAe,EACf,OAAe,EACf,MAA+B,EAChB,EAAE;;IAAC,OAAA,CAAC;QACnB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE;QAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,SAAS,2BAA2B,OAAO,uCAAuC,OAAO,mEAAmE,SAAS,MAAM,CACjL,CAAC;YACF,OAAQ,MAAM,CAAC,OAAmD,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC,CAAA;CAAA,CAAC;AAEU,QAAA,iBAAiB,GAAoB;IAChD,qBAAqB,CACnB,wBAAwB,EACxB,oBAAoB,EACpB,0BAAY,CACb;IACD,qBAAqB,CACnB,8BAA8B,EAC9B,YAAY,EACZ,kCAAgB,CACjB;IACD,qBAAqB,CACnB,6CAA6C,EAC7C,kBAAkB,EAClB,6CAAqB,CACtB;IACD,qBAAqB,CACnB,gDAAgD,EAChD,qBAAqB,EACrB,mDAAwB,CACzB;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { CommandModule } from "yargs";
2
+ export declare const downloadCommand: CommandModule;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadCommand = void 0;
4
+ const replay_command_1 = require("./replay.command");
5
+ const session_command_1 = require("./session.command");
6
+ const test_run_command_1 = require("./test-run.command");
7
+ exports.downloadCommand = {
8
+ command: "download",
9
+ describe: "Download commands",
10
+ builder: (yargs) => yargs
11
+ .command(session_command_1.downloadSessionCommand)
12
+ .command(replay_command_1.downloadReplayCommand)
13
+ .command(test_run_command_1.downloadTestRunCommand)
14
+ .demandCommand()
15
+ .help(),
16
+ handler: () => {
17
+ // subcommand handles this
18
+ },
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/download/index.ts"],"names":[],"mappings":";;;AACA,qDAAyD;AACzD,uDAA2D;AAC3D,yDAA4D;AAE/C,QAAA,eAAe,GAAkB;IAC5C,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,wCAAsB,CAAC;SAC/B,OAAO,CAAC,sCAAqB,CAAC;SAC9B,OAAO,CAAC,yCAAsB,CAAC;SAC/B,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { CommandModule } from "yargs";
2
+ interface Options {
3
+ apiToken?: string | null | undefined;
4
+ replayId: string;
5
+ }
6
+ export declare const downloadReplayCommand: CommandModule<unknown, Options>;
7
+ export {};
@@ -6,8 +6,8 @@ const path_1 = require("path");
6
6
  const client_1 = require("@alwaysmeticulous/client");
7
7
  const common_1 = require("@alwaysmeticulous/common");
8
8
  const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
9
- const command_builder_1 = require("../../command-utils/command-builder");
10
- const handler = async ({ apiToken, replayId, }) => {
9
+ const sentry_utils_1 = require("../../command-utils/sentry.utils");
10
+ const handler = async ({ apiToken, replayId }) => {
11
11
  const logger = (0, common_1.initLogger)();
12
12
  const client = await (0, client_1.createClientWithOAuth)({
13
13
  apiToken,
@@ -16,7 +16,6 @@ const handler = async ({ apiToken, replayId, }) => {
16
16
  const { fileName: replayMetadataFileName } = await (0, downloading_helpers_1.getOrFetchReplay)(client, replayId);
17
17
  logger.info(`Downloaded replay metadata to: ${replayMetadataFileName}`);
18
18
  const { fileName: replayFolderFilePath } = await (0, downloading_helpers_1.getOrFetchReplayArchive)(client, replayId, "everything", true);
19
- // Generate logs.concise.txt and logs.determinstic.txt files
20
19
  const logsFile = (0, path_1.join)(replayFolderFilePath, "logs.ndjson");
21
20
  const logsFileExists = await (0, promises_1.access)(logsFile)
22
21
  .then(() => true)
@@ -42,7 +41,6 @@ const handler = async ({ apiToken, replayId, }) => {
42
41
  }
43
42
  });
44
43
  await (0, promises_1.writeFile)((0, path_1.join)(replayFolderFilePath, "logs.concise.txt"), conciseLogs.join("\n"));
45
- // Useful for diffing one set of logs against another (excludes the real timestamps, which are non-deterministic)
46
44
  virtualTime = 0;
47
45
  const deterministicLogs = logs.flatMap((log) => {
48
46
  if (log.type === "virtual-time-change") {
@@ -52,15 +50,12 @@ const handler = async ({ apiToken, replayId, }) => {
52
50
  if (log.message.includes("[non-deterministic]")) {
53
51
  return [];
54
52
  }
55
- // Event ids are unstable (one difference at the start of a replay can affect all subsequent event ids) and so we
56
- // filter them out to minimize noise
53
+ // Event ids are unstable so filter them out to minimize noise
57
54
  const message = log.message.startsWith("Executing event")
58
55
  ? log.message.replace(/"id": ?\d+/g, '"id": "<non-deterministic>"')
59
56
  : log.message;
60
57
  const commonPostfix = `${log.repetitionCount ? " [x" + log.repetitionCount + "]" : ""} ${message}`;
61
58
  if (log.source === "application") {
62
- // Application logs are not guaranteed to be deterministic since code can get executed e.g. when a script loads,
63
- // but they are low volume and high signal so we include them anyway
64
59
  return [
65
60
  `[virtual: ${virtualTime}ms] [application]${commonPostfix}`,
66
61
  ];
@@ -77,19 +72,18 @@ const handler = async ({ apiToken, replayId, }) => {
77
72
  }
78
73
  logger.info(`Downloaded replay data to: ${replayFolderFilePath}`);
79
74
  };
80
- exports.downloadReplayCommand = (0, command_builder_1.buildCommand)("download-simulation")
81
- .details({
82
- aliases: ["download-replay"],
83
- describe: "Download a simulation from Meticulous",
84
- })
85
- .options({
86
- apiToken: {
87
- string: true,
75
+ exports.downloadReplayCommand = {
76
+ command: "replay",
77
+ describe: "Download a replay from Meticulous",
78
+ builder: {
79
+ apiToken: {
80
+ string: true,
81
+ },
82
+ replayId: {
83
+ string: true,
84
+ demandOption: true,
85
+ },
88
86
  },
89
- replayId: {
90
- string: true,
91
- demandOption: true,
92
- },
93
- })
94
- .handler(handler);
95
- //# sourceMappingURL=download-replay.command.js.map
87
+ handler: (0, sentry_utils_1.wrapHandler)(handler),
88
+ };
89
+ //# sourceMappingURL=replay.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.command.js","sourceRoot":"","sources":["../../../src/commands/download/replay.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { CommandModule } from "yargs";
2
+ interface Options {
3
+ apiToken?: string | null | undefined;
4
+ sessionId: string;
5
+ }
6
+ export declare const downloadSessionCommand: CommandModule<unknown, Options>;
7
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadSessionCommand = void 0;
4
+ const client_1 = require("@alwaysmeticulous/client");
5
+ const common_1 = require("@alwaysmeticulous/common");
6
+ const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
7
+ const sentry_utils_1 = require("../../command-utils/sentry.utils");
8
+ exports.downloadSessionCommand = {
9
+ command: "session",
10
+ describe: "Download a recorded session from Meticulous",
11
+ builder: {
12
+ apiToken: {
13
+ string: true,
14
+ },
15
+ sessionId: {
16
+ string: true,
17
+ demandOption: true,
18
+ },
19
+ },
20
+ handler: (0, sentry_utils_1.wrapHandler)(async ({ apiToken, sessionId }) => {
21
+ const logger = (0, common_1.initLogger)();
22
+ const client = await (0, client_1.createClientWithOAuth)({
23
+ apiToken,
24
+ enableOAuthLogin: true,
25
+ });
26
+ const { fileName: sessionMetadataFileName } = await (0, downloading_helpers_1.getOrFetchRecordedSession)(client, sessionId);
27
+ logger.info(`Downloaded session metadata to: ${sessionMetadataFileName}`);
28
+ const { fileName: sessionFileName } = await (0, downloading_helpers_1.getOrFetchRecordedSessionData)(client, sessionId);
29
+ logger.info(`Downloaded session data to: ${sessionFileName}`);
30
+ }),
31
+ };
32
+ //# sourceMappingURL=session.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.command.js","sourceRoot":"","sources":["../../../src/commands/download/session.command.ts"],"names":[],"mappings":";;;AAAA,qDAAiE;AACjE,qDAAsD;AACtD,+EAG+C;AAE/C,mEAA+D;AAOlD,QAAA,sBAAsB,GAAoC;IACrE,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,6CAA6C;IACvD,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;SACb;QACD,SAAS,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,IAAI;SACnB;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAqB,EAAC;YACzC,QAAQ;YACR,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QAEH,MAAM,EAAE,QAAQ,EAAE,uBAAuB,EAAE,GACzC,MAAM,IAAA,+CAAyB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,mCAAmC,uBAAuB,EAAE,CAAC,CAAC;QAC1E,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,IAAA,mDAA6B,EACvE,MAAM,EACN,SAAS,CACV,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,+BAA+B,eAAe,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC;CACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CommandModule } from "yargs";
2
+ interface Options {
3
+ apiToken?: string | null | undefined;
4
+ testRunId?: string | null | undefined;
5
+ scope?: string | null | undefined;
6
+ }
7
+ export declare const downloadTestRunCommand: CommandModule<unknown, Options>;
8
+ export {};
@@ -4,7 +4,7 @@ exports.downloadTestRunCommand = void 0;
4
4
  const client_1 = require("@alwaysmeticulous/client");
5
5
  const common_1 = require("@alwaysmeticulous/common");
6
6
  const downloading_helpers_1 = require("@alwaysmeticulous/downloading-helpers");
7
- const command_builder_1 = require("../../command-utils/command-builder");
7
+ const sentry_utils_1 = require("../../command-utils/sentry.utils");
8
8
  const ALLOWED_SCOPES = [
9
9
  "coverage-only",
10
10
  "app-container-logs",
@@ -24,25 +24,25 @@ const handler = async ({ apiToken, testRunId, scope: _scope, }) => {
24
24
  const { fileName: testRunDir } = await (0, downloading_helpers_1.getOrFetchTestRunData)(client, testRunId !== null && testRunId !== void 0 ? testRunId : "latest", scope);
25
25
  logger.info(`Downloaded test run data to: ${testRunDir}`);
26
26
  };
27
- exports.downloadTestRunCommand = (0, command_builder_1.buildCommand)("download-test-run")
28
- .details({
27
+ exports.downloadTestRunCommand = {
28
+ command: "test-run",
29
29
  describe: "Download a Meticulous test run",
30
- })
31
- .options({
32
- apiToken: {
33
- string: true,
30
+ builder: {
31
+ apiToken: {
32
+ string: true,
33
+ },
34
+ testRunId: {
35
+ string: true,
36
+ default: "latest",
37
+ },
38
+ scope: {
39
+ string: true,
40
+ demandOption: false,
41
+ choices: [...downloading_helpers_1.TEST_RUN_DOWNLOAD_SCOPES],
42
+ default: "coverage-only",
43
+ hidden: !common_1.IS_METICULOUS_SUPER_USER,
44
+ },
34
45
  },
35
- testRunId: {
36
- string: true,
37
- default: "latest",
38
- },
39
- scope: {
40
- string: true,
41
- demandOption: false,
42
- choices: [...downloading_helpers_1.TEST_RUN_DOWNLOAD_SCOPES],
43
- default: "coverage-only",
44
- hidden: !common_1.IS_METICULOUS_SUPER_USER,
45
- },
46
- })
47
- .handler(handler);
48
- //# sourceMappingURL=download-test-run.command.js.map
46
+ handler: (0, sentry_utils_1.wrapHandler)(handler),
47
+ };
48
+ //# sourceMappingURL=test-run.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run.command.js","sourceRoot":"","sources":["../../../src/commands/download/test-run.command.ts"],"names":[],"mappings":";;;AAAA,qDAAwD;AACxD,qDAAgF;AAChF,+EAI+C;AAE/C,mEAA+D;AAQ/D,MAAM,cAAc,GAA2B;IAC7C,eAAe;IACf,oBAAoB;CACrB,CAAC;AAEF,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,QAAQ,EACR,SAAS,EACT,KAAK,EAAE,MAAM,GACL,EAAiB,EAAE;;IAC3B,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAG,MAAC,MAA+B,mCAAI,eAAe,CAAC;IAElE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnC,IAAI,CAAC,iCAAwB,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,MAAM,CAAC,IAAI,CACT,uFAAuF,CACxF,CAAC;KACH;IAED,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,2CAAqB,EAC1D,MAAM,EACN,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,QAAQ,EACrB,KAAK,CACN,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEW,QAAA,sBAAsB,GAAoC;IACrE,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,gCAAgC;IAC1C,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;SACb;QACD,SAAS,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,QAAQ;SAClB;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,CAAC,GAAG,8CAAwB,CAAC;YACtC,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,CAAC,iCAAwB;SAClC;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,OAAO,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { CommandModule } from "yargs";
2
+ export declare const projectCommand: CommandModule;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.projectCommand = void 0;
4
+ const show_command_1 = require("./show.command");
5
+ exports.projectCommand = {
6
+ command: "project",
7
+ describe: "Project commands",
8
+ builder: (yargs) => yargs.command(show_command_1.showCommand).demandCommand().help(),
9
+ handler: () => {
10
+ // subcommand handles this
11
+ },
12
+ };
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/project/index.ts"],"names":[],"mappings":";;;AACA,iDAA6C;AAEhC,QAAA,cAAc,GAAkB;IAC3C,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,0BAAW,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE;IACrE,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { CommandModule } from "yargs";
2
+ interface Options {
3
+ apiToken?: string | null | undefined;
4
+ }
5
+ export declare const showCommand: CommandModule<unknown, Options>;
6
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.showCommand = void 0;
4
+ const client_1 = require("@alwaysmeticulous/client");
5
+ const common_1 = require("@alwaysmeticulous/common");
6
+ const sentry_utils_1 = require("../../command-utils/sentry.utils");
7
+ exports.showCommand = {
8
+ command: "show",
9
+ describe: "Show project linked with current API token",
10
+ builder: {
11
+ apiToken: {
12
+ string: true,
13
+ },
14
+ },
15
+ handler: (0, sentry_utils_1.wrapHandler)(async ({ apiToken }) => {
16
+ const logger = (0, common_1.initLogger)();
17
+ const client = (0, client_1.createClient)({ apiToken });
18
+ const project = await (0, client_1.getProject)(client);
19
+ if (!project) {
20
+ logger.error("Could not retrieve project data. Is the API token correct?");
21
+ process.exit(1);
22
+ }
23
+ logger.info(project);
24
+ }),
25
+ };
26
+ //# sourceMappingURL=show.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.command.js","sourceRoot":"","sources":["../../../src/commands/project/show.command.ts"],"names":[],"mappings":";;;AAAA,qDAAoE;AACpE,qDAAsD;AAEtD,mEAA+D;AAMlD,QAAA,WAAW,GAAoC;IAC1D,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;SACb;KACF;IACD,OAAO,EAAE,IAAA,0BAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC;CACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { CommandModule } from "yargs";
2
+ export declare const recordCommand: CommandModule;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordCommand = void 0;
4
+ const login_command_1 = require("./login.command");
5
+ const session_command_1 = require("./session.command");
6
+ exports.recordCommand = {
7
+ command: "record",
8
+ describe: "Record commands",
9
+ builder: (yargs) => yargs
10
+ .command(session_command_1.recordSessionCommand)
11
+ .command(login_command_1.recordLoginCommand)
12
+ .demandCommand()
13
+ .help(),
14
+ handler: () => {
15
+ // subcommand handles this
16
+ },
17
+ };
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/record/index.ts"],"names":[],"mappings":";;;AACA,mDAAqD;AACrD,uDAAyD;AAE5C,QAAA,aAAa,GAAkB;IAC1C,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,sCAAoB,CAAC;SAC7B,OAAO,CAAC,kCAAkB,CAAC;SAC3B,aAAa,EAAE;SACf,IAAI,EAAE;IACX,OAAO,EAAE,GAAG,EAAE;QACZ,0BAA0B;IAC5B,CAAC;CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { CommandModule } from "yargs";
2
+ interface Options {
3
+ apiToken: string | null | undefined;
4
+ devTools: boolean | null | undefined;
5
+ bypassCSP: boolean | null | undefined;
6
+ width: number | null | undefined;
7
+ height: number | null | undefined;
8
+ uploadIntervalMs: number | null | undefined;
9
+ trace: boolean | null | undefined;
10
+ captureHttpOnlyCookies: boolean;
11
+ appUrl: string | null | undefined;
12
+ }
13
+ export declare const recordLoginCommand: CommandModule<unknown, Options>;
14
+ export {};