@alwaysmeticulous/cli 2.303.1 → 2.305.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.
- package/dist/command-utils/common-options.d.ts +5 -0
- package/dist/command-utils/common-options.d.ts.map +1 -1
- package/dist/command-utils/common-options.js +7 -2
- package/dist/command-utils/common-options.js.map +1 -1
- package/dist/command-utils/json-args.d.ts +14 -0
- package/dist/command-utils/json-args.d.ts.map +1 -0
- package/dist/command-utils/json-args.js +40 -0
- package/dist/command-utils/json-args.js.map +1 -0
- package/dist/command-utils/json-args.spec.d.ts +2 -0
- package/dist/command-utils/json-args.spec.d.ts.map +1 -0
- package/dist/command-utils/json-args.spec.js +37 -0
- package/dist/command-utils/json-args.spec.js.map +1 -0
- package/dist/command-utils/print-json.d.ts +7 -0
- package/dist/command-utils/print-json.d.ts.map +1 -0
- package/dist/command-utils/print-json.js +16 -0
- package/dist/command-utils/print-json.js.map +1 -0
- package/dist/commands/agent/build-git-options.d.ts +25 -20
- package/dist/commands/agent/build-git-options.d.ts.map +1 -1
- package/dist/commands/agent/build-git-options.js +62 -54
- package/dist/commands/agent/build-git-options.js.map +1 -1
- package/dist/commands/agent/build-git-options.spec.js +96 -62
- package/dist/commands/agent/build-git-options.spec.js.map +1 -1
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +11 -4
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.d.ts +1 -1
- package/dist/commands/agent/js-coverage-diff.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.js +31 -38
- package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.d.ts +7 -4
- package/dist/commands/agent/js-coverage.command.d.ts.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +104 -66
- package/dist/commands/agent/js-coverage.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.spec.js +48 -2
- package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.d.ts +1 -0
- package/dist/commands/agent/screenshot-dom-diff.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.js +26 -18
- package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.d.ts +1 -0
- package/dist/commands/agent/screenshot-image-files.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.js +18 -5
- package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image.command.d.ts +1 -0
- package/dist/commands/agent/screenshot-image.command.d.ts.map +1 -1
- package/dist/commands/agent/screenshot-image.command.js +9 -4
- package/dist/commands/agent/screenshot-image.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.d.ts +1 -0
- package/dist/commands/agent/test-run-diffs.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +40 -24
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.d.ts +7 -0
- package/dist/commands/agent/test-run-diffs.utils.d.ts.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +48 -3
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +145 -2
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.d.ts.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.js +12 -14
- package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.d.ts +1 -0
- package/dist/commands/agent/timeline.command.d.ts.map +1 -1
- package/dist/commands/agent/timeline.command.js +21 -7
- package/dist/commands/agent/timeline.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.spec.d.ts +2 -0
- package/dist/commands/agent/timeline.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/timeline.command.spec.js +77 -0
- package/dist/commands/agent/timeline.command.spec.js.map +1 -0
- package/dist/commands/agent/trigger-test-run.command.d.ts +27 -1
- package/dist/commands/agent/trigger-test-run.command.d.ts.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.js +64 -53
- package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.spec.d.ts +2 -0
- package/dist/commands/agent/trigger-test-run.command.spec.d.ts.map +1 -0
- package/dist/commands/agent/trigger-test-run.command.spec.js +88 -0
- package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -0
- package/dist/commands/agent/upload-build.command.d.ts +0 -1
- package/dist/commands/agent/upload-build.command.d.ts.map +1 -1
- package/dist/commands/agent/upload-build.command.js +12 -17
- package/dist/commands/agent/upload-build.command.js.map +1 -1
- package/dist/commands/all-commands.d.ts +38 -0
- package/dist/commands/all-commands.d.ts.map +1 -0
- package/dist/commands/all-commands.js +65 -0
- package/dist/commands/all-commands.js.map +1 -0
- package/dist/commands/auth/__tests__/list-projects.command.spec.js +22 -12
- package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/login.command.spec.js +9 -7
- package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/logout.command.spec.js +4 -8
- package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/whoami.command.spec.js +71 -21
- package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
- package/dist/commands/auth/list-projects.command.d.ts.map +1 -1
- package/dist/commands/auth/list-projects.command.js +17 -14
- package/dist/commands/auth/list-projects.command.js.map +1 -1
- package/dist/commands/auth/login.command.d.ts.map +1 -1
- package/dist/commands/auth/login.command.js +4 -5
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/auth/logout.command.d.ts +1 -5
- package/dist/commands/auth/logout.command.d.ts.map +1 -1
- package/dist/commands/auth/logout.command.js +4 -9
- package/dist/commands/auth/logout.command.js.map +1 -1
- package/dist/commands/auth/set-project.command.d.ts.map +1 -1
- package/dist/commands/auth/set-project.command.js +7 -5
- package/dist/commands/auth/set-project.command.js.map +1 -1
- package/dist/commands/auth/unset-project.command.js +5 -5
- package/dist/commands/auth/unset-project.command.js.map +1 -1
- package/dist/commands/auth/whoami.command.d.ts +5 -1
- package/dist/commands/auth/whoami.command.d.ts.map +1 -1
- package/dist/commands/auth/whoami.command.js +75 -32
- package/dist/commands/auth/whoami.command.js.map +1 -1
- package/dist/commands/ci/prepare.command.d.ts.map +1 -1
- package/dist/commands/ci/prepare.command.js +3 -2
- package/dist/commands/ci/prepare.command.js.map +1 -1
- package/dist/commands/ci/run-local.command.d.ts.map +1 -1
- package/dist/commands/ci/run-local.command.js +6 -4
- package/dist/commands/ci/run-local.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.d.ts.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +6 -3
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/run.command.d.ts.map +1 -1
- package/dist/commands/ci/run.command.js +3 -2
- package/dist/commands/ci/run.command.js.map +1 -1
- package/dist/commands/ci/start-tunnel.command.d.ts.map +1 -1
- package/dist/commands/ci/start-tunnel.command.js +4 -2
- package/dist/commands/ci/start-tunnel.command.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.d.ts.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.js +6 -3
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/upload-assets.command.d.ts +1 -0
- package/dist/commands/ci/upload-assets.command.d.ts.map +1 -1
- package/dist/commands/ci/upload-assets.command.js +3 -2
- package/dist/commands/ci/upload-assets.command.js.map +1 -1
- package/dist/commands/ci/upload-container.command.d.ts +1 -0
- package/dist/commands/ci/upload-container.command.d.ts.map +1 -1
- package/dist/commands/ci/upload-container.command.js +3 -2
- package/dist/commands/ci/upload-container.command.js.map +1 -1
- package/dist/commands/debug/index.d.ts.map +1 -1
- package/dist/commands/debug/index.js +43 -36
- package/dist/commands/debug/index.js.map +1 -1
- package/dist/commands/local/relevant-sessions.command.d.ts.map +1 -1
- package/dist/commands/local/relevant-sessions.command.js +6 -3
- package/dist/commands/local/relevant-sessions.command.js.map +1 -1
- package/dist/commands/project/show.command.d.ts.map +1 -1
- package/dist/commands/project/show.command.js +6 -3
- package/dist/commands/project/show.command.js.map +1 -1
- package/dist/commands/record/__tests__/login.command.spec.d.ts +2 -0
- package/dist/commands/record/__tests__/login.command.spec.d.ts.map +1 -0
- package/dist/commands/record/__tests__/login.command.spec.js +72 -0
- package/dist/commands/record/__tests__/login.command.spec.js.map +1 -0
- package/dist/commands/record/__tests__/session.command.spec.d.ts +2 -0
- package/dist/commands/record/__tests__/session.command.spec.d.ts.map +1 -0
- package/dist/commands/record/__tests__/session.command.spec.js +86 -0
- package/dist/commands/record/__tests__/session.command.spec.js.map +1 -0
- package/dist/commands/record/login.command.d.ts.map +1 -1
- package/dist/commands/record/login.command.js +9 -3
- package/dist/commands/record/login.command.js.map +1 -1
- package/dist/commands/record/session.command.d.ts.map +1 -1
- package/dist/commands/record/session.command.js +9 -3
- package/dist/commands/record/session.command.js.map +1 -1
- package/dist/commands/replay.command.d.ts.map +1 -1
- package/dist/commands/replay.command.js +11 -15
- package/dist/commands/replay.command.js.map +1 -1
- package/dist/commands/schema.command.d.ts +53 -0
- package/dist/commands/schema.command.d.ts.map +1 -1
- package/dist/commands/schema.command.js +232 -106
- package/dist/commands/schema.command.js.map +1 -1
- package/dist/commands/schema.command.spec.d.ts +2 -0
- package/dist/commands/schema.command.spec.d.ts.map +1 -0
- package/dist/commands/schema.command.spec.js +198 -0
- package/dist/commands/schema.command.spec.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +60 -48
- package/dist/main.js.map +1 -1
- package/dist/utils/__tests__/select-project.spec.js +6 -12
- package/dist/utils/__tests__/select-project.spec.js.map +1 -1
- package/dist/utils/select-project.d.ts +1 -3
- package/dist/utils/select-project.d.ts.map +1 -1
- package/dist/utils/select-project.js +6 -5
- package/dist/utils/select-project.js.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="59faeee0-6d57-517e-9902-72cbe19e7656")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const schema_command_1 = require("./schema.command");
|
|
7
|
+
const asNode = (result) => {
|
|
8
|
+
if (Array.isArray(result)) {
|
|
9
|
+
throw new Error("Expected a single command node, got an array");
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
13
|
+
(0, vitest_1.describe)("generateSchema", () => {
|
|
14
|
+
(0, vitest_1.test)("top-level list includes the canonical commands without options", () => {
|
|
15
|
+
const result = (0, schema_command_1.generateSchema)();
|
|
16
|
+
(0, vitest_1.expect)(Array.isArray(result)).toBe(true);
|
|
17
|
+
const names = result.map((n) => n.command);
|
|
18
|
+
(0, vitest_1.expect)(names).toEqual(vitest_1.expect.arrayContaining(["agent", "auth", "record", "simulate"]));
|
|
19
|
+
// Groups/top-level nodes only expose the name tree, not options.
|
|
20
|
+
for (const node of result) {
|
|
21
|
+
(0, vitest_1.expect)(node.options).toBeUndefined();
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.test)("a leaf command reports global, inherited group, and own options", () => {
|
|
25
|
+
const node = asNode((0, schema_command_1.generateSchema)(["agent", "trigger-test-run"]));
|
|
26
|
+
const options = node.options ?? {};
|
|
27
|
+
// Own option.
|
|
28
|
+
(0, vitest_1.expect)(options).toHaveProperty("commitSha");
|
|
29
|
+
// Inherited from the agent group builder.
|
|
30
|
+
(0, vitest_1.expect)(options).toHaveProperty("verbose");
|
|
31
|
+
(0, vitest_1.expect)(options).toHaveProperty("json");
|
|
32
|
+
// Global options attached to the root yargs instance.
|
|
33
|
+
(0, vitest_1.expect)(options).toHaveProperty("jsonArgs");
|
|
34
|
+
(0, vitest_1.expect)(options).toHaveProperty("dataDir");
|
|
35
|
+
(0, vitest_1.expect)(options).toHaveProperty("logLevel");
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.test)("a leaf command with no builder still reports the global options", () => {
|
|
38
|
+
// Guards against auth logout (which has no builder) dropping its options.
|
|
39
|
+
const node = asNode((0, schema_command_1.generateSchema)(["auth", "logout"]));
|
|
40
|
+
const options = node.options ?? {};
|
|
41
|
+
(0, vitest_1.expect)(options).toHaveProperty("jsonArgs");
|
|
42
|
+
(0, vitest_1.expect)(options).toHaveProperty("dataDir");
|
|
43
|
+
(0, vitest_1.expect)(options).toHaveProperty("logLevel");
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.test)("--dryRun is per-command, not a global option", () => {
|
|
46
|
+
// It used to be accepted on every command; it's now declared only on the
|
|
47
|
+
// commands that act on it. auth logout (no builder) must not advertise it,
|
|
48
|
+
// and .strict() means passing it there is now rejected at runtime.
|
|
49
|
+
const logout = asNode((0, schema_command_1.generateSchema)(["auth", "logout"]));
|
|
50
|
+
(0, vitest_1.expect)(logout.options).not.toHaveProperty("dryRun");
|
|
51
|
+
// A command that does implement it still reports it.
|
|
52
|
+
const trigger = asNode((0, schema_command_1.generateSchema)(["agent", "trigger-test-run"]));
|
|
53
|
+
(0, vitest_1.expect)(trigger.options).toHaveProperty("dryRun");
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.test)("global logLevel keeps its string type in the schema", () => {
|
|
56
|
+
const node = asNode((0, schema_command_1.generateSchema)(["auth", "logout"]));
|
|
57
|
+
(0, vitest_1.expect)(node.options?.logLevel?.type).toBe("string");
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.test)("the deprecated --rawJson alias is flagged as deprecated", () => {
|
|
60
|
+
const node = asNode((0, schema_command_1.generateSchema)(["auth", "logout"]));
|
|
61
|
+
(0, vitest_1.expect)(node.options?.rawJson?.deprecated).toBeTruthy();
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.test)("resolves a command by its alias", () => {
|
|
64
|
+
// `simulate` is aliased as `replay`.
|
|
65
|
+
const node = asNode((0, schema_command_1.generateSchema)(["replay"]));
|
|
66
|
+
(0, vitest_1.expect)(node.command).toBe("simulate");
|
|
67
|
+
(0, vitest_1.expect)(node.aliases).toContain("replay");
|
|
68
|
+
(0, vitest_1.expect)(node.options).toBeDefined();
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.test)("throws a helpful error for an unknown command", () => {
|
|
71
|
+
(0, vitest_1.expect)(() => (0, schema_command_1.generateSchema)(["not-a-command"])).toThrow(/Command not found/);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
(0, vitest_1.describe)("resolveJsonArgsTarget", () => {
|
|
75
|
+
const leafKeys = (path) => {
|
|
76
|
+
const target = (0, schema_command_1.resolveJsonArgsTarget)(path);
|
|
77
|
+
if (target.kind !== "leaf") {
|
|
78
|
+
throw new Error(`Expected a leaf for ${path.join(" ")}, got ${target.kind}`);
|
|
79
|
+
}
|
|
80
|
+
return target.keys;
|
|
81
|
+
};
|
|
82
|
+
(0, vitest_1.test)("resolves a leaf command's own + inherited group + global options", () => {
|
|
83
|
+
const keys = leafKeys(["agent", "trigger-test-run"]);
|
|
84
|
+
(0, vitest_1.expect)(keys.has("commitSha")).toBe(true); // own
|
|
85
|
+
(0, vitest_1.expect)(keys.has("dryRun")).toBe(true); // own
|
|
86
|
+
(0, vitest_1.expect)(keys.has("verbose")).toBe(true); // inherited from the agent group
|
|
87
|
+
(0, vitest_1.expect)(keys.has("json")).toBe(true); // inherited from the agent group
|
|
88
|
+
(0, vitest_1.expect)(keys.has("jsonArgs")).toBe(true); // global
|
|
89
|
+
});
|
|
90
|
+
(0, vitest_1.test)("only accepts the invoked command's options, matching .strict()", () => {
|
|
91
|
+
// auth logout does not declare --dryRun, so --jsonArgs must reject it too
|
|
92
|
+
// (it used to slip through when validated against the union of all commands).
|
|
93
|
+
const logout = leafKeys(["auth", "logout"]);
|
|
94
|
+
(0, vitest_1.expect)(logout.has("dryRun")).toBe(false);
|
|
95
|
+
(0, vitest_1.expect)(logout.has("sessionId")).toBe(false);
|
|
96
|
+
// ...but the global flags are still accepted.
|
|
97
|
+
(0, vitest_1.expect)(logout.has("jsonArgs")).toBe(true);
|
|
98
|
+
(0, vitest_1.expect)(logout.has("logLevel")).toBe(true);
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.test)("includes hidden (describe:false) commands' options", () => {
|
|
101
|
+
// `ci start-tunnel` is super-user-gated (describe:false by default), but its
|
|
102
|
+
// flags must still be accepted via --jsonArgs.
|
|
103
|
+
const keys = leafKeys(["ci", "start-tunnel"]);
|
|
104
|
+
(0, vitest_1.expect)(keys.has("port")).toBe(true);
|
|
105
|
+
(0, vitest_1.expect)(keys.has("host")).toBe(true);
|
|
106
|
+
(0, vitest_1.expect)(keys.has("subdomain")).toBe(true);
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.test)("resolves a command by its alias", () => {
|
|
109
|
+
// `simulate` is aliased as `replay`.
|
|
110
|
+
(0, vitest_1.expect)(leafKeys(["replay"]).has("sessionId")).toBe(true);
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.test)("accepts only canonical option names, not their aliases", () => {
|
|
113
|
+
// Merging --jsonArgs sets exactly the key given and handlers read the
|
|
114
|
+
// canonical name, so an alias key would be silently dropped — it's rejected
|
|
115
|
+
// instead. (start-tunnel's `port`/alias `p`; simulate's `takeSnapshots`/
|
|
116
|
+
// alias `screenshot`.)
|
|
117
|
+
const tunnel = leafKeys(["ci", "start-tunnel"]);
|
|
118
|
+
(0, vitest_1.expect)(tunnel.has("port")).toBe(true);
|
|
119
|
+
(0, vitest_1.expect)(tunnel.has("p")).toBe(false);
|
|
120
|
+
const simulate = leafKeys(["simulate"]);
|
|
121
|
+
(0, vitest_1.expect)(simulate.has("takeSnapshots")).toBe(true);
|
|
122
|
+
(0, vitest_1.expect)(simulate.has("screenshot")).toBe(false);
|
|
123
|
+
});
|
|
124
|
+
(0, vitest_1.test)("resolves a leaf whose positional/options come from an object builder", () => {
|
|
125
|
+
// debug's subcommands were converted from function to object builders so the
|
|
126
|
+
// walker captures their options and positional (previously classified as an
|
|
127
|
+
// unresolvable command).
|
|
128
|
+
const keys = leafKeys(["debug", "replay-diff"]);
|
|
129
|
+
(0, vitest_1.expect)(keys.has("replayDiffId")).toBe(true); // positional
|
|
130
|
+
(0, vitest_1.expect)(keys.has("sessionId")).toBe(true); // own option
|
|
131
|
+
(0, vitest_1.expect)(keys.has("apiToken")).toBe(true); // shared option
|
|
132
|
+
});
|
|
133
|
+
(0, vitest_1.test)("resolves hidden deprecated top-level aliases to their target's options", () => {
|
|
134
|
+
// `run-all-tests-in-cloud` is a hidden alias of `ci run-with-tunnel`,
|
|
135
|
+
// registered outside CLI_COMMANDS. It must resolve to that command's options
|
|
136
|
+
// (not fall back to the permissive union), so --jsonArgs is as strict there.
|
|
137
|
+
const keys = leafKeys(["run-all-tests-in-cloud"]);
|
|
138
|
+
(0, vitest_1.expect)(keys.has("appUrl")).toBe(true); // real ci run-with-tunnel option
|
|
139
|
+
(0, vitest_1.expect)(keys.has("sessionId")).toBe(false); // not an option there
|
|
140
|
+
(0, vitest_1.expect)(keys.has("verbose")).toBe(false); // agent-group-only, not here
|
|
141
|
+
});
|
|
142
|
+
(0, vitest_1.test)("accepts a command's positional args as keys (e.g. schema's [command..])", () => {
|
|
143
|
+
// `schema [command..]` exposes the positional on argv as `command`, so
|
|
144
|
+
// `schema --jsonArgs '{"command":[...]}'` must be allowed even though
|
|
145
|
+
// `command` isn't a declared option.
|
|
146
|
+
const keys = leafKeys(["schema"]);
|
|
147
|
+
(0, vitest_1.expect)(keys.has("command")).toBe(true);
|
|
148
|
+
(0, vitest_1.expect)(keys.has("jsonArgs")).toBe(true); // global still present
|
|
149
|
+
});
|
|
150
|
+
(0, vitest_1.test)("classifies a command group (command space) as 'group', not a leaf", () => {
|
|
151
|
+
// --jsonArgs has no single command to apply to on a group, so the caller
|
|
152
|
+
// rejects it rather than validating/merging.
|
|
153
|
+
(0, vitest_1.expect)((0, schema_command_1.resolveJsonArgsTarget)(["agent"])).toEqual({
|
|
154
|
+
kind: "group",
|
|
155
|
+
name: "agent",
|
|
156
|
+
});
|
|
157
|
+
// A positional under a group stops at the group too.
|
|
158
|
+
(0, vitest_1.expect)((0, schema_command_1.resolveJsonArgsTarget)(["agent", "not-a-subcommand"])).toEqual({
|
|
159
|
+
kind: "group",
|
|
160
|
+
name: "agent",
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
(0, vitest_1.test)("classifies an unknown or empty command path as 'unknown' (no keys, caller rejects)", () => {
|
|
164
|
+
(0, vitest_1.expect)((0, schema_command_1.resolveJsonArgsTarget)(["not-a-command"])).toEqual({
|
|
165
|
+
kind: "unknown",
|
|
166
|
+
});
|
|
167
|
+
(0, vitest_1.expect)((0, schema_command_1.resolveJsonArgsTarget)([])).toEqual({ kind: "unknown" });
|
|
168
|
+
});
|
|
169
|
+
(0, vitest_1.test)("never surfaces a malformed or prototype-polluting key", () => {
|
|
170
|
+
// Exercises the walker across the tricky cases: a group-inheriting leaf,
|
|
171
|
+
// globals-only, a hidden command, a kebab-case option name, and a
|
|
172
|
+
// positional (from an object builder).
|
|
173
|
+
const paths = [
|
|
174
|
+
["agent", "trigger-test-run"],
|
|
175
|
+
["auth", "logout"],
|
|
176
|
+
["ci", "start-tunnel"],
|
|
177
|
+
["simulate"],
|
|
178
|
+
["local", "relevant-sessions"],
|
|
179
|
+
["debug", "replay-diff"],
|
|
180
|
+
];
|
|
181
|
+
for (const path of paths) {
|
|
182
|
+
for (const key of leafKeys(path)) {
|
|
183
|
+
(0, vitest_1.expect)(key).toMatch(/^[a-zA-Z][a-zA-Z0-9-]*$/);
|
|
184
|
+
}
|
|
185
|
+
for (const forbidden of [
|
|
186
|
+
"__proto__",
|
|
187
|
+
"constructor",
|
|
188
|
+
"prototype",
|
|
189
|
+
"_",
|
|
190
|
+
"$0",
|
|
191
|
+
]) {
|
|
192
|
+
(0, vitest_1.expect)(leafKeys(path).has(forbidden)).toBe(false);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=schema.command.spec.js.map
|
|
198
|
+
//# debugId=59faeee0-6d57-517e-9902-72cbe19e7656
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.command.spec.js","sources":["../../src/commands/schema.command.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"59faeee0-6d57-517e-9902-72cbe19e7656"}
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,IAAI,QAAa,OAAO,CAAC,IAAI,CA6FzC,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2bdd198d-b8de-5529-aca1-898e94712e3a")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -10,18 +10,12 @@ const path_1 = require("path");
|
|
|
10
10
|
const common_1 = require("@alwaysmeticulous/common");
|
|
11
11
|
const sentry_1 = require("@alwaysmeticulous/sentry");
|
|
12
12
|
const yargs_1 = __importDefault(require("yargs"));
|
|
13
|
+
const json_args_1 = require("./command-utils/json-args");
|
|
13
14
|
const sentry_utils_1 = require("./command-utils/sentry.utils");
|
|
14
|
-
const
|
|
15
|
-
const index_2 = require("./commands/auth/index");
|
|
16
|
-
const index_3 = require("./commands/ci/index");
|
|
17
|
-
const index_4 = require("./commands/debug/index");
|
|
15
|
+
const all_commands_1 = require("./commands/all-commands");
|
|
18
16
|
const deprecated_aliases_1 = require("./commands/deprecated-aliases");
|
|
19
|
-
const index_5 = require("./commands/download/index");
|
|
20
|
-
const local_1 = require("./commands/local");
|
|
21
|
-
const index_6 = require("./commands/project/index");
|
|
22
|
-
const index_7 = require("./commands/record/index");
|
|
23
|
-
const replay_command_1 = require("./commands/replay.command");
|
|
24
17
|
const schema_command_1 = require("./commands/schema.command");
|
|
18
|
+
const cli_user_error_1 = require("./utils/cli-user-error");
|
|
25
19
|
const handleDataDir = (dataDir) => {
|
|
26
20
|
(0, common_1.setMeticulousLocalDataDir)(dataDir);
|
|
27
21
|
};
|
|
@@ -30,51 +24,69 @@ const main = async () => {
|
|
|
30
24
|
const packageJsonPath = (0, path_1.normalize)((0, path_1.join)(__dirname, "../package.json"));
|
|
31
25
|
const meticulousVersion = await (0, common_1.getMeticulousVersion)(packageJsonPath);
|
|
32
26
|
await (0, sentry_1.initSentry)(meticulousVersion);
|
|
33
|
-
const cli = yargs_1.default
|
|
34
|
-
.scriptName("meticulous")
|
|
35
|
-
.usage(`$0 <command>
|
|
27
|
+
const cli = yargs_1.default.scriptName("meticulous").usage(`$0 <command>
|
|
36
28
|
|
|
37
|
-
Meticulous CLI`)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
.
|
|
42
|
-
.
|
|
43
|
-
.
|
|
44
|
-
|
|
45
|
-
.command(
|
|
46
|
-
.command(replay_command_1.replayCommand)
|
|
47
|
-
.command(schema_command_1.schemaCommand);
|
|
48
|
-
for (const alias of deprecated_aliases_1.deprecatedAliases) {
|
|
49
|
-
cli.command(alias);
|
|
29
|
+
Meticulous CLI`);
|
|
30
|
+
// `schemaCommand` and the deprecated aliases are registered alongside the
|
|
31
|
+
// canonical `CLI_COMMANDS` (see all-commands.ts for why they live apart).
|
|
32
|
+
for (const command of [
|
|
33
|
+
...all_commands_1.CLI_COMMANDS,
|
|
34
|
+
schema_command_1.schemaCommand,
|
|
35
|
+
...deprecated_aliases_1.deprecatedAliases,
|
|
36
|
+
]) {
|
|
37
|
+
cli.command(command);
|
|
50
38
|
}
|
|
51
39
|
await cli
|
|
52
40
|
.help()
|
|
53
41
|
.strict()
|
|
54
42
|
.demandCommand()
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
default: false,
|
|
72
|
-
},
|
|
73
|
-
})
|
|
43
|
+
// yargs renders help groups in creation order, and the default "Options:"
|
|
44
|
+
// group (which holds each command's own options) is otherwise created last,
|
|
45
|
+
// at render time — so the global options below would float above a command's
|
|
46
|
+
// own. Seeding "Options:" with a hidden no-op option registers it first,
|
|
47
|
+
// pushing "Global Options:" beneath each command's own options.
|
|
48
|
+
//
|
|
49
|
+
// A hidden seed is used deliberately: re-grouping a *visible* key (e.g.
|
|
50
|
+
// `help`) into "Options:" and then into "Global Options:" makes yargs 17
|
|
51
|
+
// render it in both groups, so only a hidden phantom seeds the group
|
|
52
|
+
// cleanly. This relies on yargs creating groups lazily in call order; if a
|
|
53
|
+
// future yargs changes that timing the two groups could reorder (a cosmetic
|
|
54
|
+
// help-layout regression only — no behavioural impact).
|
|
55
|
+
.option("_globalOptionsSeed", { hidden: true, boolean: true })
|
|
56
|
+
.group(["_globalOptionsSeed"], "Options:")
|
|
57
|
+
.option(all_commands_1.GLOBAL_OPTIONS)
|
|
58
|
+
.group([...Object.keys(all_commands_1.GLOBAL_OPTIONS), "help", "version"], "Global Options:")
|
|
74
59
|
.middleware([
|
|
75
60
|
(argv) => {
|
|
76
|
-
if (argv.rawJson) {
|
|
77
|
-
|
|
61
|
+
if (argv.rawJson != null) {
|
|
62
|
+
(0, common_1.logNotice)("--rawJson is deprecated; use --jsonArgs instead.");
|
|
63
|
+
}
|
|
64
|
+
const jsonArgs = argv.jsonArgs ?? argv.rawJson;
|
|
65
|
+
if (jsonArgs) {
|
|
66
|
+
try {
|
|
67
|
+
// Validate against the invoked command's own options (argv._ is the
|
|
68
|
+
// command path here, before yargs strips it), so --jsonArgs is as
|
|
69
|
+
// strict as passing the flags directly.
|
|
70
|
+
const target = (0, schema_command_1.resolveJsonArgsTarget)(argv._.map(String));
|
|
71
|
+
if (target.kind !== "leaf") {
|
|
72
|
+
// --jsonArgs carries one command's options; a command group (or
|
|
73
|
+
// an unknown/missing command) has nothing to apply them to.
|
|
74
|
+
throw new cli_user_error_1.CliUserError(target.kind === "group"
|
|
75
|
+
? `--jsonArgs is only valid on a specific command, not the '${target.name}' command group. Specify a subcommand.`
|
|
76
|
+
: "--jsonArgs is only valid together with a specific command.");
|
|
77
|
+
}
|
|
78
|
+
Object.assign(argv, (0, json_args_1.parseJsonArgs)(jsonArgs, target.keys));
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
// Middleware runs before the handler, so `wrapHandler` can't format
|
|
82
|
+
// this — print the clean message and exit here instead of letting a
|
|
83
|
+
// raw parse error escape as an uncaught stack trace.
|
|
84
|
+
if (error instanceof cli_user_error_1.CliUserError) {
|
|
85
|
+
(0, common_1.initLogger)()[error.severity](error.message);
|
|
86
|
+
process.exit(error.exitCode);
|
|
87
|
+
}
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
78
90
|
}
|
|
79
91
|
},
|
|
80
92
|
], true)
|
|
@@ -89,4 +101,4 @@ const main = async () => {
|
|
|
89
101
|
exports.main = main;
|
|
90
102
|
void (0, exports.main)();
|
|
91
103
|
//# sourceMappingURL=main.js.map
|
|
92
|
-
//# debugId=
|
|
104
|
+
//# debugId=2bdd198d-b8de-5529-aca1-898e94712e3a
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/main.ts"],"sourceRoot":"","names":[],"mappings":";;;;;;;;AAAA,+BAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/main.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"2bdd198d-b8de-5529-aca1-898e94712e3a"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2f6f61e7-88f0-5d41-b52d-dc32a8fa8873")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
const vitest_1 = require("vitest");
|
|
@@ -13,12 +13,14 @@ vitest_1.vi.mock("@alwaysmeticulous/client", () => ({
|
|
|
13
13
|
getOAuthProjects: mocks.getOAuthProjects,
|
|
14
14
|
setStoredProject: mocks.setStoredProject,
|
|
15
15
|
}));
|
|
16
|
+
vitest_1.vi.mock("@alwaysmeticulous/common", () => ({
|
|
17
|
+
logNotice: vitest_1.vi.fn(),
|
|
18
|
+
}));
|
|
16
19
|
const project = (org, name, id) => ({
|
|
17
20
|
id,
|
|
18
21
|
name,
|
|
19
22
|
organization: { id: `${org}-id`, name: org },
|
|
20
23
|
});
|
|
21
|
-
const fakeLogger = { info: vitest_1.vi.fn() };
|
|
22
24
|
const fakeClient = {};
|
|
23
25
|
(0, vitest_1.describe)("selectAndStoreProject", () => {
|
|
24
26
|
(0, vitest_1.beforeEach)(() => {
|
|
@@ -31,7 +33,6 @@ const fakeClient = {};
|
|
|
31
33
|
]);
|
|
32
34
|
const result = await (0, select_project_1.selectAndStoreProject)({
|
|
33
35
|
client: fakeClient,
|
|
34
|
-
logger: fakeLogger,
|
|
35
36
|
project: "OrgB/App2",
|
|
36
37
|
});
|
|
37
38
|
(0, vitest_1.expect)(result).toBe("OrgB/App2");
|
|
@@ -44,7 +45,6 @@ const fakeClient = {};
|
|
|
44
45
|
mocks.getOAuthProjects.mockResolvedValue([project("OrgA", "App1", "id-1")]);
|
|
45
46
|
const result = await (0, select_project_1.selectAndStoreProject)({
|
|
46
47
|
client: fakeClient,
|
|
47
|
-
logger: fakeLogger,
|
|
48
48
|
project: " OrgA/App1 ",
|
|
49
49
|
});
|
|
50
50
|
(0, vitest_1.expect)(result).toBe("OrgA/App1");
|
|
@@ -53,7 +53,6 @@ const fakeClient = {};
|
|
|
53
53
|
mocks.getOAuthProjects.mockResolvedValue([project("OrgA", "App1", "id-1")]);
|
|
54
54
|
await (0, vitest_1.expect)((0, select_project_1.selectAndStoreProject)({
|
|
55
55
|
client: fakeClient,
|
|
56
|
-
logger: fakeLogger,
|
|
57
56
|
project: "orga/app1",
|
|
58
57
|
})).rejects.toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
59
58
|
(0, vitest_1.expect)(mocks.setStoredProject).not.toHaveBeenCalled();
|
|
@@ -62,7 +61,6 @@ const fakeClient = {};
|
|
|
62
61
|
mocks.getOAuthProjects.mockResolvedValue([project("OrgA", "App1", "id-1")]);
|
|
63
62
|
await (0, vitest_1.expect)((0, select_project_1.selectAndStoreProject)({
|
|
64
63
|
client: fakeClient,
|
|
65
|
-
logger: fakeLogger,
|
|
66
64
|
project: "OrgA/Missing",
|
|
67
65
|
})).rejects.toThrow(/Available projects/);
|
|
68
66
|
});
|
|
@@ -70,7 +68,6 @@ const fakeClient = {};
|
|
|
70
68
|
mocks.getOAuthProjects.mockResolvedValue([project("OrgA", "App1", "id-1")]);
|
|
71
69
|
const result = await (0, select_project_1.selectAndStoreProject)({
|
|
72
70
|
client: fakeClient,
|
|
73
|
-
logger: fakeLogger,
|
|
74
71
|
});
|
|
75
72
|
(0, vitest_1.expect)(result).toBe("OrgA/App1");
|
|
76
73
|
(0, vitest_1.expect)(mocks.setStoredProject).toHaveBeenCalledWith({
|
|
@@ -80,7 +77,7 @@ const fakeClient = {};
|
|
|
80
77
|
});
|
|
81
78
|
(0, vitest_1.it)("throws when no projects are accessible", async () => {
|
|
82
79
|
mocks.getOAuthProjects.mockResolvedValue([]);
|
|
83
|
-
await (0, vitest_1.expect)((0, select_project_1.selectAndStoreProject)({ client: fakeClient
|
|
80
|
+
await (0, vitest_1.expect)((0, select_project_1.selectAndStoreProject)({ client: fakeClient })).rejects.toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
84
81
|
});
|
|
85
82
|
(0, vitest_1.it)("throws without prompting when several projects exist and prompting is disabled", async () => {
|
|
86
83
|
mocks.getOAuthProjects.mockResolvedValue([
|
|
@@ -89,7 +86,6 @@ const fakeClient = {};
|
|
|
89
86
|
]);
|
|
90
87
|
const caught = await (0, select_project_1.selectAndStoreProject)({
|
|
91
88
|
client: fakeClient,
|
|
92
|
-
logger: fakeLogger,
|
|
93
89
|
allowInteractivePrompt: false,
|
|
94
90
|
}).catch((error) => error);
|
|
95
91
|
(0, vitest_1.expect)(caught).toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
@@ -104,7 +100,6 @@ const fakeClient = {};
|
|
|
104
100
|
]);
|
|
105
101
|
const result = await (0, select_project_1.selectAndStoreProject)({
|
|
106
102
|
client: fakeClient,
|
|
107
|
-
logger: fakeLogger,
|
|
108
103
|
allowInteractivePrompt: false,
|
|
109
104
|
fallbackToProject: "OrgB/App2",
|
|
110
105
|
});
|
|
@@ -121,7 +116,6 @@ const fakeClient = {};
|
|
|
121
116
|
]);
|
|
122
117
|
await (0, vitest_1.expect)((0, select_project_1.selectAndStoreProject)({
|
|
123
118
|
client: fakeClient,
|
|
124
|
-
logger: fakeLogger,
|
|
125
119
|
allowInteractivePrompt: false,
|
|
126
120
|
fallbackToProject: "OrgC/Gone",
|
|
127
121
|
})).rejects.toBeInstanceOf(cli_user_error_1.CliUserError);
|
|
@@ -129,4 +123,4 @@ const fakeClient = {};
|
|
|
129
123
|
});
|
|
130
124
|
});
|
|
131
125
|
//# sourceMappingURL=select-project.spec.js.map
|
|
132
|
-
//# debugId=
|
|
126
|
+
//# debugId=2f6f61e7-88f0-5d41-b52d-dc32a8fa8873
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-project.spec.js","sources":["../../../src/utils/__tests__/select-project.spec.ts"],"sourceRoot":"","names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"select-project.spec.js","sources":["../../../src/utils/__tests__/select-project.spec.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"2f6f61e7-88f0-5d41-b52d-dc32a8fa8873"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { MeticulousClient, OAuthProject } from "@alwaysmeticulous/client";
|
|
2
|
-
import type log from "loglevel";
|
|
3
2
|
/**
|
|
4
3
|
* Fetches the projects accessible to the OAuth caller, surfacing auth failures
|
|
5
4
|
* via `handleAuthFailure`. Shared by the project selection and listing flows.
|
|
@@ -21,9 +20,8 @@ export declare const fetchAccessibleProjects: (client: MeticulousClient) => Prom
|
|
|
21
20
|
* Throws `CliUserError` when the caller has no accessible projects, or when a
|
|
22
21
|
* project cannot be resolved without an interactive prompt.
|
|
23
22
|
*/
|
|
24
|
-
export declare const selectAndStoreProject: ({ client,
|
|
23
|
+
export declare const selectAndStoreProject: ({ client, project, allowInteractivePrompt, fallbackToProject, }: {
|
|
25
24
|
client: MeticulousClient;
|
|
26
|
-
logger: log.Logger;
|
|
27
25
|
project?: string | undefined;
|
|
28
26
|
allowInteractivePrompt?: boolean;
|
|
29
27
|
fallbackToProject?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-project.d.ts","sourceRoot":"","sources":["../../src/utils/select-project.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"select-project.d.ts","sourceRoot":"","sources":["../../src/utils/select-project.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM/E;;;GAGG;AACH,eAAO,MAAM,uBAAuB,WAC1B,gBAAgB,KACvB,OAAO,CAAC,YAAY,EAAE,CAOxB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,oEAK/B;IACD,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,KAAG,OAAO,CAAC,MAAM,CA0DjB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ebb174ae-4b88-5a86-9211-d9a54ec34440")}catch(e){}}();
|
|
3
3
|
|
|
4
4
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -7,6 +7,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.selectAndStoreProject = exports.fetchAccessibleProjects = void 0;
|
|
9
9
|
const client_1 = require("@alwaysmeticulous/client");
|
|
10
|
+
const common_1 = require("@alwaysmeticulous/common");
|
|
10
11
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
12
|
const cli_user_error_1 = require("./cli-user-error");
|
|
12
13
|
const handle_auth_failure_1 = require("./handle-auth-failure");
|
|
@@ -40,7 +41,7 @@ exports.fetchAccessibleProjects = fetchAccessibleProjects;
|
|
|
40
41
|
* Throws `CliUserError` when the caller has no accessible projects, or when a
|
|
41
42
|
* project cannot be resolved without an interactive prompt.
|
|
42
43
|
*/
|
|
43
|
-
const selectAndStoreProject = async ({ client,
|
|
44
|
+
const selectAndStoreProject = async ({ client, project, allowInteractivePrompt = true, fallbackToProject, }) => {
|
|
44
45
|
const projects = await (0, exports.fetchAccessibleProjects)(client);
|
|
45
46
|
if (projects.length === 0) {
|
|
46
47
|
throw new cli_user_error_1.CliUserError("No projects are accessible to your account. Ask an organization " +
|
|
@@ -75,7 +76,7 @@ const selectAndStoreProject = async ({ client, logger, project, allowInteractive
|
|
|
75
76
|
if (fallback) {
|
|
76
77
|
const fallbackSlug = `${fallback.organization.name}/${fallback.name}`;
|
|
77
78
|
(0, client_1.setStoredProject)({ project: fallbackSlug, projectId: fallback.id });
|
|
78
|
-
|
|
79
|
+
(0, common_1.logNotice)(`Kept previously selected project: ${fallbackSlug}`);
|
|
79
80
|
return fallbackSlug;
|
|
80
81
|
}
|
|
81
82
|
throw new cli_user_error_1.CliUserError("Multiple projects are accessible but none was selected (no interactive " +
|
|
@@ -84,7 +85,7 @@ const selectAndStoreProject = async ({ client, logger, project, allowInteractive
|
|
|
84
85
|
}
|
|
85
86
|
const projectSlug = `${selected.organization.name}/${selected.name}`;
|
|
86
87
|
(0, client_1.setStoredProject)({ project: projectSlug, projectId: selected.id });
|
|
87
|
-
|
|
88
|
+
(0, common_1.logNotice)(`Selected project: ${projectSlug}`);
|
|
88
89
|
return projectSlug;
|
|
89
90
|
};
|
|
90
91
|
exports.selectAndStoreProject = selectAndStoreProject;
|
|
@@ -108,4 +109,4 @@ const promptForProject = async (projects) => {
|
|
|
108
109
|
};
|
|
109
110
|
const formatProjectList = (projects) => projects.map((p) => ` - ${p.organization.name}/${p.name}`).join("\n");
|
|
110
111
|
//# sourceMappingURL=select-project.js.map
|
|
111
|
-
//# debugId=
|
|
112
|
+
//# debugId=ebb174ae-4b88-5a86-9211-d9a54ec34440
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-project.js","sources":["../../src/utils/select-project.ts"],"sourceRoot":"","names":[],"mappings":";;;;;;;;AAAA,qDAA8E;AAE9E,wDAAgC;
|
|
1
|
+
{"version":3,"file":"select-project.js","sources":["../../src/utils/select-project.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"ebb174ae-4b88-5a86-9211-d9a54ec34440"}
|