@seamapi/cli 0.9.0 → 0.11.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/README.md +83 -6
- package/bin/cli.js +106 -31
- package/bin/cli.js.map +1 -1
- package/lib/get-response-key.d.ts +9 -0
- package/lib/get-response-key.js +21 -0
- package/lib/get-response-key.js.map +1 -0
- package/lib/interact-for-action-attempt-poll.js +4 -3
- package/lib/interact-for-action-attempt-poll.js.map +1 -1
- package/lib/interact-for-array.js +9 -7
- package/lib/interact-for-array.js.map +1 -1
- package/lib/interact-for-blueprint-object.js +21 -10
- package/lib/interact-for-blueprint-object.js.map +1 -1
- package/lib/interact-for-command-selection.js +17 -2
- package/lib/interact-for-command-selection.js.map +1 -1
- package/lib/interact-for-custom-metadata.js +10 -8
- package/lib/interact-for-custom-metadata.js.map +1 -1
- package/lib/interact-for-login.js +8 -6
- package/lib/interact-for-login.js.map +1 -1
- package/lib/interact-for-resource.js +2 -2
- package/lib/interact-for-resource.js.map +1 -1
- package/lib/interact-for-server-selection.js +7 -5
- package/lib/interact-for-server-selection.js.map +1 -1
- package/lib/interact-for-timestamp.js +2 -2
- package/lib/interact-for-timestamp.js.map +1 -1
- package/lib/interact-for-use-remote-api-defs.js +4 -3
- package/lib/interact-for-use-remote-api-defs.js.map +1 -1
- package/lib/interact-for-workspace-id.js +2 -2
- package/lib/interact-for-workspace-id.js.map +1 -1
- package/lib/output/create-memory-output.d.ts +13 -0
- package/lib/output/create-memory-output.js +22 -0
- package/lib/output/create-memory-output.js.map +1 -0
- package/lib/output/create-output.d.ts +50 -0
- package/lib/output/create-output.js +34 -0
- package/lib/output/create-output.js.map +1 -0
- package/lib/output/get-output.d.ts +12 -0
- package/lib/output/get-output.js +21 -0
- package/lib/output/get-output.js.map +1 -0
- package/lib/output/resolve-output-format.d.ts +16 -0
- package/lib/output/resolve-output-format.js +23 -0
- package/lib/output/resolve-output-format.js.map +1 -0
- package/lib/output/select-response-payload.d.ts +16 -0
- package/lib/output/select-response-payload.js +33 -0
- package/lib/output/select-response-payload.js.map +1 -0
- package/lib/types.d.ts +2 -1
- package/lib/util/cli-args.d.ts +45 -0
- package/lib/util/cli-args.js +58 -0
- package/lib/util/cli-args.js.map +1 -0
- package/lib/util/prompt.d.ts +17 -0
- package/lib/util/prompt.js +25 -0
- package/lib/util/prompt.js.map +1 -0
- package/lib/util/read-stdin-json.d.ts +22 -0
- package/lib/util/read-stdin-json.js +42 -0
- package/lib/util/read-stdin-json.js.map +1 -0
- package/lib/util/request-seam-api.d.ts +5 -2
- package/lib/util/request-seam-api.js +13 -15
- package/lib/util/request-seam-api.js.map +1 -1
- package/lib/util/with-loading.js +6 -1
- package/lib/util/with-loading.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/cli.ts +139 -33
- package/src/lib/get-response-key.ts +25 -0
- package/src/lib/interact-for-action-attempt-poll.ts +4 -3
- package/src/lib/interact-for-array.ts +9 -7
- package/src/lib/interact-for-blueprint-object.ts +27 -10
- package/src/lib/interact-for-command-selection.ts +23 -3
- package/src/lib/interact-for-custom-metadata.ts +10 -8
- package/src/lib/interact-for-login.ts +8 -6
- package/src/lib/interact-for-resource.ts +2 -3
- package/src/lib/interact-for-server-selection.ts +7 -6
- package/src/lib/interact-for-timestamp.ts +2 -2
- package/src/lib/interact-for-use-remote-api-defs.ts +4 -4
- package/src/lib/interact-for-workspace-id.ts +2 -2
- package/src/lib/output/create-memory-output.ts +39 -0
- package/src/lib/output/create-output.ts +104 -0
- package/src/lib/output/get-output.ts +24 -0
- package/src/lib/output/resolve-output-format.ts +33 -0
- package/src/lib/output/select-response-payload.ts +56 -0
- package/src/lib/types.ts +2 -1
- package/src/lib/util/cli-args.ts +92 -0
- package/src/lib/util/prompt.ts +38 -0
- package/src/lib/util/read-stdin-json.ts +59 -0
- package/src/lib/util/request-seam-api.ts +24 -20
- package/src/lib/util/with-loading.ts +9 -1
- package/src/lib/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-blueprint-object.js","sourceRoot":"","sources":["../src/lib/interact-for-blueprint-object.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interact-for-blueprint-object.js","sourceRoot":"","sources":["../src/lib/interact-for-blueprint-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isDeepStrictEqual as isEqual } from 'node:util';
|
|
2
|
-
import
|
|
2
|
+
import { NonInteractiveError } from './util/cli-args.js';
|
|
3
|
+
import { prompt } from './util/prompt.js';
|
|
3
4
|
const uniqBy = (items, keyOf) => {
|
|
4
5
|
const seen = new Set();
|
|
5
6
|
return items.filter((item) => {
|
|
@@ -43,13 +44,27 @@ export async function interactForCommandSelection(commandPath, helpers) {
|
|
|
43
44
|
possibleCommands[0]?.length === commandPath.length) {
|
|
44
45
|
return commandPath;
|
|
45
46
|
}
|
|
47
|
+
if (helpers.interactivity === 'non-interactive') {
|
|
48
|
+
// The command path is itself a command, so call it directly rather than
|
|
49
|
+
// prompting to select one of its sub-commands.
|
|
50
|
+
if (possibleCommands.some((cmd) => cmd.length === commandPath.length)) {
|
|
51
|
+
return commandPath;
|
|
52
|
+
}
|
|
53
|
+
const subcommands = possibleCommands
|
|
54
|
+
.map((cmd) => cmd[commandPath.length])
|
|
55
|
+
.filter((subcommand) => subcommand != null)
|
|
56
|
+
.sort(ergonomicSort);
|
|
57
|
+
throw new NonInteractiveError(`${commandPath.length === 0
|
|
58
|
+
? 'Missing command'
|
|
59
|
+
: `Incomplete command "seam ${commandPath.join(' ')}"`}: expected one of ${subcommands.join(', ')}`);
|
|
60
|
+
}
|
|
46
61
|
// Add dynamic 'back' command for sub-commands to allow returning
|
|
47
62
|
// to previous level.
|
|
48
63
|
if (commandPath.length > 0) {
|
|
49
64
|
possibleCommands.push([...commandPath, '[Back]']);
|
|
50
65
|
}
|
|
51
66
|
const commandPathStr = commandPath.join('/').replace(/-/g, '_');
|
|
52
|
-
const res = await
|
|
67
|
+
const res = await prompt({
|
|
53
68
|
name: 'Command',
|
|
54
69
|
type: 'autocomplete',
|
|
55
70
|
choices: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-command-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-command-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"interact-for-command-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-command-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getOutput } from './output/get-output.js';
|
|
2
|
+
import { prompt } from './util/prompt.js';
|
|
2
3
|
export const interactForCustomMetadata = async (custom_metadata) => {
|
|
3
4
|
const updated_custom_metadata = { ...custom_metadata };
|
|
5
|
+
const output = getOutput();
|
|
4
6
|
const displayCurrentCustomMetadata = () => {
|
|
5
|
-
|
|
7
|
+
output.info('custom_metadata:');
|
|
6
8
|
if (Object.keys(updated_custom_metadata).length > 0) {
|
|
7
9
|
Object.keys(updated_custom_metadata).forEach((key, index) => {
|
|
8
|
-
|
|
10
|
+
output.info(`${index + 1}: ${key}: ${updated_custom_metadata[key]}`);
|
|
9
11
|
});
|
|
10
12
|
}
|
|
11
13
|
else {
|
|
12
|
-
|
|
14
|
+
output.info('The custom metadata param is empty.');
|
|
13
15
|
}
|
|
14
16
|
};
|
|
15
17
|
let action;
|
|
16
18
|
do {
|
|
17
19
|
displayCurrentCustomMetadata();
|
|
18
|
-
const response = await
|
|
20
|
+
const response = await prompt({
|
|
19
21
|
type: 'select',
|
|
20
22
|
name: 'action',
|
|
21
23
|
message: 'Choose an action:',
|
|
@@ -27,12 +29,12 @@ export const interactForCustomMetadata = async (custom_metadata) => {
|
|
|
27
29
|
});
|
|
28
30
|
action = response.action;
|
|
29
31
|
if (action === 'add') {
|
|
30
|
-
const { newKey } = await
|
|
32
|
+
const { newKey } = await prompt({
|
|
31
33
|
type: 'text',
|
|
32
34
|
name: 'newKey',
|
|
33
35
|
message: 'Enter a key to add or edit:',
|
|
34
36
|
});
|
|
35
|
-
let { newValue } = await
|
|
37
|
+
let { newValue } = await prompt({
|
|
36
38
|
type: 'text',
|
|
37
39
|
name: 'newValue',
|
|
38
40
|
message: 'Enter the new value to add or edit (or null to delete):',
|
|
@@ -50,7 +52,7 @@ export const interactForCustomMetadata = async (custom_metadata) => {
|
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
else if (action === 'remove') {
|
|
53
|
-
const { custom_key_to_remove } = await
|
|
55
|
+
const { custom_key_to_remove } = await prompt({
|
|
54
56
|
type: 'select',
|
|
55
57
|
name: 'custom_key_to_remove',
|
|
56
58
|
message: 'Choose a key-value pair to remove from params:',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-custom-metadata.js","sourceRoot":"","sources":["../src/lib/interact-for-custom-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"interact-for-custom-metadata.js","sourceRoot":"","sources":["../src/lib/interact-for-custom-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { isApiKey, isPersonalAccessToken } from '@seamapi/http/connect';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
-
import prompts from 'prompts';
|
|
4
3
|
import { getConfigStore } from './config/index.js';
|
|
5
4
|
import { getServer } from './get-server.js';
|
|
6
5
|
import { interactForWorkspaceId } from './interact-for-workspace-id.js';
|
|
6
|
+
import { getOutput } from './output/get-output.js';
|
|
7
|
+
import { prompt } from './util/prompt.js';
|
|
7
8
|
import { withLoading } from './util/with-loading.js';
|
|
8
9
|
import { validateToken } from './validate-token.js';
|
|
9
10
|
export const interactForLogin = async () => {
|
|
10
11
|
const config = await getConfigStore();
|
|
12
|
+
const output = getOutput();
|
|
11
13
|
if (getServer().includes('localhost')) {
|
|
12
|
-
|
|
14
|
+
output.info(`You're using a local Seam Connect instance, you can enter the API Key to your local user, you can create a new user from:\n\n${getServer()}/admin/create_user_with_api_key`);
|
|
13
15
|
}
|
|
14
16
|
else {
|
|
15
|
-
|
|
17
|
+
output.info(`To login, navigate to the URL below and create a new Personal Access Token (PAT) and paste the PAT in the provided box:\n\nhttps://console.seam.co/settings/access-tokens\n\n`);
|
|
16
18
|
}
|
|
17
|
-
|
|
18
|
-
const { pat } = await
|
|
19
|
+
output.info(chalk.gray('> Note: You can enter an API Key here for single-workspace access'));
|
|
20
|
+
const { pat } = await prompt({
|
|
19
21
|
name: 'pat',
|
|
20
22
|
type: 'text',
|
|
21
23
|
message: 'Personal Access Token:',
|
|
@@ -34,6 +36,6 @@ export const interactForLogin = async () => {
|
|
|
34
36
|
throw new Error('Invalid token: expected a Personal Access Token or API Key');
|
|
35
37
|
}
|
|
36
38
|
config.set(`${getServer()}.pat`, token);
|
|
37
|
-
|
|
39
|
+
output.info(`Token saved! You may begin using the CLI!`);
|
|
38
40
|
};
|
|
39
41
|
//# sourceMappingURL=interact-for-login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-login.js","sourceRoot":"","sources":["../src/lib/interact-for-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"interact-for-login.js","sourceRoot":"","sources":["../src/lib/interact-for-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;IACzC,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CACT,gIAAgI,SAAS,EAAE,iCAAiC,CAC7K,CAAA;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,+KAA+K,CAChL,CAAA;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,IAAI,CACR,mEAAmE,CACpE,CACF,CAAA;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC;QAC3B,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,wBAAwB;KAClC,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,CAAA;IAEzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;SAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAA;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;AAC1D,CAAC,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { prompt } from './util/prompt.js';
|
|
2
2
|
import { withLoading } from './util/with-loading.js';
|
|
3
3
|
export const interactForResource = async ({ resourceName, fetchResources, toChoice, message = `Select a ${resourceName}:`, }) => {
|
|
4
4
|
const resources = await withLoading(`Fetching ${resourceName.replace(/_/g, ' ')}s...`, fetchResources);
|
|
5
|
-
const { resourceId } = await
|
|
5
|
+
const { resourceId } = await prompt({
|
|
6
6
|
name: 'resourceId',
|
|
7
7
|
type: 'autocomplete',
|
|
8
8
|
message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-resource.js","sourceRoot":"","sources":["../src/lib/interact-for-resource.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"interact-for-resource.js","sourceRoot":"","sources":["../src/lib/interact-for-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAQpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAY,EAClD,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,OAAO,GAAG,YAAY,YAAY,GAAG,GAMtC,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,MAAM,WAAW,CACjC,YAAY,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EACjD,cAAc,CACf,CAAA;IACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC;QAClC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,cAAc;QACpB,OAAO;QACP,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;KACjC,CAAC,CAAA;IAEF,OAAO,UAAoB,CAAA;AAC7B,CAAC,CAAA"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
|
-
import prompts from 'prompts';
|
|
3
2
|
import { getConfigStore } from './config/index.js';
|
|
4
3
|
import { getServer } from './get-server.js';
|
|
4
|
+
import { getOutput } from './output/get-output.js';
|
|
5
|
+
import { prompt } from './util/prompt.js';
|
|
5
6
|
export async function interactForServerSelection() {
|
|
6
7
|
const servers = [
|
|
7
8
|
'http://localhost:3020',
|
|
8
9
|
'https://connect.getseam.com',
|
|
9
10
|
'https://fakeseamconnect.seam.vc',
|
|
10
11
|
];
|
|
11
|
-
const { server } = await
|
|
12
|
+
const { server } = await prompt([
|
|
12
13
|
{
|
|
13
14
|
type: 'select',
|
|
14
15
|
name: 'server',
|
|
@@ -17,8 +18,9 @@ export async function interactForServerSelection() {
|
|
|
17
18
|
},
|
|
18
19
|
]);
|
|
19
20
|
const config = getConfigStore();
|
|
21
|
+
const output = getOutput();
|
|
20
22
|
if (server === servers[2]) {
|
|
21
|
-
let { userUrlSeed } = await
|
|
23
|
+
let { userUrlSeed } = await prompt([
|
|
22
24
|
{
|
|
23
25
|
type: 'text',
|
|
24
26
|
name: 'userUrlSeed',
|
|
@@ -30,12 +32,12 @@ export async function interactForServerSelection() {
|
|
|
30
32
|
}
|
|
31
33
|
config.set('server', `https://${userUrlSeed}.fakeseamconnect.seam.vc`);
|
|
32
34
|
config.set(`${getServer()}.pat`, `seam_apikey1_token`);
|
|
33
|
-
|
|
35
|
+
output.info(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
|
|
34
36
|
}
|
|
35
37
|
else {
|
|
36
38
|
config.set('server', server);
|
|
37
39
|
}
|
|
38
40
|
config.delete('current_workspace_id');
|
|
39
|
-
|
|
41
|
+
output.info(`Server set to ${server}`);
|
|
40
42
|
}
|
|
41
43
|
//# sourceMappingURL=interact-for-server-selection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-server-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-server-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,
|
|
1
|
+
{"version":3,"file":"interact-for-server-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-server-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,MAAM,OAAO,GAAG;QACd,uBAAuB;QACvB,6BAA6B;QAC7B,iCAAiC;KAClC,CAAA;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC;QAC9B;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SACrE;KACF,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC;YACjC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa;gBACnB,OAAO,EACL,sFAAsF;aACzF;SACF,CAAC,CAAA;QAEF,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,WAAW,0BAA0B,CAAC,CAAA;QACtE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC9B,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IACrC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { prompt } from './util/prompt.js';
|
|
2
2
|
export const interactForTimestamp = async () => {
|
|
3
|
-
const { timestamp } = await
|
|
3
|
+
const { timestamp } = await prompt({
|
|
4
4
|
name: 'timestamp',
|
|
5
5
|
type: 'date',
|
|
6
6
|
message: 'Enter a timestamp:',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-timestamp.js","sourceRoot":"","sources":["../src/lib/interact-for-timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"interact-for-timestamp.js","sourceRoot":"","sources":["../src/lib/interact-for-timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAI,EAAE;IAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC;QACjC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,oBAAoB;KAC9B,CAAC,CAAA;IAEF,OAAO,SAAS,CAAC,WAAW,EAAE,CAAA;AAChC,CAAC,CAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import prompts from 'prompts';
|
|
2
1
|
import { getConfigStore } from './config/index.js';
|
|
2
|
+
import { getOutput } from './output/get-output.js';
|
|
3
|
+
import { prompt } from './util/prompt.js';
|
|
3
4
|
export async function interactForUseRemoteApiDefs() {
|
|
4
|
-
const { use_remote_api_defs } = await
|
|
5
|
+
const { use_remote_api_defs } = await prompt([
|
|
5
6
|
{
|
|
6
7
|
type: 'select',
|
|
7
8
|
name: 'use_remote_api_defs',
|
|
@@ -20,6 +21,6 @@ export async function interactForUseRemoteApiDefs() {
|
|
|
20
21
|
]);
|
|
21
22
|
const config = getConfigStore();
|
|
22
23
|
config.set('use_remote_api_defs', use_remote_api_defs);
|
|
23
|
-
|
|
24
|
+
getOutput().info(`Use remote API Definitions: ${use_remote_api_defs}`);
|
|
24
25
|
}
|
|
25
26
|
//# sourceMappingURL=interact-for-use-remote-api-defs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-use-remote-api-defs.js","sourceRoot":"","sources":["../src/lib/interact-for-use-remote-api-defs.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"interact-for-use-remote-api-defs.js","sourceRoot":"","sources":["../src/lib/interact-for-use-remote-api-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC;QAC3C;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,oCAAoC;YAC7C,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,KAAK;iBACb;aACF;SACF;KACF,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAC/B,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;IACtD,SAAS,EAAE,CAAC,IAAI,CAAC,+BAA+B,mBAAmB,EAAE,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SeamHttpWithoutWorkspace } from '@seamapi/http/connect';
|
|
2
|
-
import prompts from 'prompts';
|
|
3
2
|
import { getConfigStore } from './config/index.js';
|
|
4
3
|
import { getSeamMultiWorkspace } from './get-seam.js';
|
|
5
4
|
import { getServer } from './get-server.js';
|
|
5
|
+
import { prompt } from './util/prompt.js';
|
|
6
6
|
import { withLoading } from './util/with-loading.js';
|
|
7
7
|
export const interactForWorkspaceId = async (personalAccessToken) => {
|
|
8
8
|
const config = getConfigStore();
|
|
@@ -12,7 +12,7 @@ export const interactForWorkspaceId = async (personalAccessToken) => {
|
|
|
12
12
|
})
|
|
13
13
|
: await getSeamMultiWorkspace();
|
|
14
14
|
const workspaces = await withLoading('Fetching workspaces...', () => seam.workspaces.list());
|
|
15
|
-
const { workspaceId } = await
|
|
15
|
+
const { workspaceId } = await prompt({
|
|
16
16
|
name: 'workspaceId',
|
|
17
17
|
type: 'select',
|
|
18
18
|
message: 'Select a workspace:',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact-for-workspace-id.js","sourceRoot":"","sources":["../src/lib/interact-for-workspace-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"interact-for-workspace-id.js","sourceRoot":"","sources":["../src/lib/interact-for-workspace-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,mBAA4B,EAAE,EAAE;IAC3E,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,mBAAmB;QAC9B,CAAC,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACpE,QAAQ,EAAE,SAAS,EAAE;SACtB,CAAC;QACJ,CAAC,CAAC,MAAM,qBAAqB,EAAE,CAAA;IAEjC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAClE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CACvB,CAAA;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC;QACnC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,CAAC;YAC3C,KAAK,EAAE,SAAS,CAAC,IAAI;YACrB,KAAK,EAAE,SAAS,CAAC,YAAY;YAC7B,WAAW,EAAE,SAAS,CAAC,YAAY;SACpC,CAAC,CAAC;KACJ,CAAC,CAAA;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAA;QAC/C,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;AAC3B,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type CreateOutputOptions, type Output } from './create-output.js';
|
|
2
|
+
export interface MemoryOutput {
|
|
3
|
+
output: Output;
|
|
4
|
+
/** Everything written to stdout so far. */
|
|
5
|
+
stdout: () => string;
|
|
6
|
+
/** Everything written to stderr so far. */
|
|
7
|
+
stderr: () => string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* An {@link Output} that captures writes in memory instead of
|
|
11
|
+
* touching the process streams, for asserting on CLI output.
|
|
12
|
+
*/
|
|
13
|
+
export declare const createMemoryOutput: (options?: Omit<CreateOutputOptions, "stdout" | "stderr">) => MemoryOutput;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createOutput, } from './create-output.js';
|
|
2
|
+
const createMemoryStream = () => {
|
|
3
|
+
const chunks = [];
|
|
4
|
+
return {
|
|
5
|
+
write: (chunk) => chunks.push(chunk),
|
|
6
|
+
read: () => chunks.join(''),
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* An {@link Output} that captures writes in memory instead of
|
|
11
|
+
* touching the process streams, for asserting on CLI output.
|
|
12
|
+
*/
|
|
13
|
+
export const createMemoryOutput = (options = {}) => {
|
|
14
|
+
const stdout = createMemoryStream();
|
|
15
|
+
const stderr = createMemoryStream();
|
|
16
|
+
return {
|
|
17
|
+
output: createOutput({ ...options, stdout, stderr }),
|
|
18
|
+
stdout: stdout.read,
|
|
19
|
+
stderr: stderr.read,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=create-memory-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-memory-output.js","sourceRoot":"","sources":["../../src/lib/output/create-memory-output.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAIb,MAAM,oBAAoB,CAAA;AAU3B,MAAM,kBAAkB,GAAG,GAA0C,EAAE;IACrE,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,OAAO;QACL,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5C,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;KAC5B,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,UAA0D,EAAE,EAC9C,EAAE;IAChB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAA;IACnC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAA;IAEnC,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACpD,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal writable surface needed by {@link Output}.
|
|
3
|
+
*
|
|
4
|
+
* Both `process.stdout` and an in-memory buffer satisfy this,
|
|
5
|
+
* which is what makes output testable.
|
|
6
|
+
*/
|
|
7
|
+
export interface OutputStream {
|
|
8
|
+
write: (chunk: string) => unknown;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* `json` is machine readable: only {@link Output.data} produces output.
|
|
12
|
+
* `text` is human readable: data is pretty printed and may be colorized.
|
|
13
|
+
*/
|
|
14
|
+
export type OutputFormat = 'json' | 'text';
|
|
15
|
+
export interface Output {
|
|
16
|
+
readonly format: OutputFormat;
|
|
17
|
+
/**
|
|
18
|
+
* The result of a command, e.g., an API response.
|
|
19
|
+
*
|
|
20
|
+
* This is the only thing ever written to stdout,
|
|
21
|
+
* so it is safe to pipe into another program.
|
|
22
|
+
*/
|
|
23
|
+
data: (value: unknown) => void;
|
|
24
|
+
/**
|
|
25
|
+
* A plain text command result, e.g., the version or the help guide.
|
|
26
|
+
*
|
|
27
|
+
* Written to stdout verbatim in every format: these results are already
|
|
28
|
+
* a single value, so encoding them as JSON would only make them harder
|
|
29
|
+
* to consume from a pipe.
|
|
30
|
+
*/
|
|
31
|
+
text: (value: string) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Human facing progress, context, and confirmations.
|
|
34
|
+
*
|
|
35
|
+
* Written to stderr and suppressed entirely in the json format.
|
|
36
|
+
*/
|
|
37
|
+
info: (message?: string) => void;
|
|
38
|
+
/** Human facing warning. Written to stderr in every format. */
|
|
39
|
+
warn: (message: string) => void;
|
|
40
|
+
/** Human facing error. Written to stderr in every format. */
|
|
41
|
+
error: (message: string) => void;
|
|
42
|
+
}
|
|
43
|
+
export interface CreateOutputOptions {
|
|
44
|
+
format?: OutputFormat;
|
|
45
|
+
stdout?: OutputStream;
|
|
46
|
+
stderr?: OutputStream;
|
|
47
|
+
/** Colorize pretty printed data. Never applied to the json format. */
|
|
48
|
+
colors?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export declare const createOutput: ({ format, stdout, stderr, colors, }?: CreateOutputOptions) => Output;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { inspect } from 'node:util';
|
|
2
|
+
export const createOutput = ({ format = 'text', stdout = process.stdout, stderr = process.stderr, colors = false, } = {}) => {
|
|
3
|
+
const isJson = format === 'json';
|
|
4
|
+
return {
|
|
5
|
+
format,
|
|
6
|
+
data: (value) => {
|
|
7
|
+
if (value === undefined)
|
|
8
|
+
return;
|
|
9
|
+
stdout.write(`${formatData(value, format, colors)}\n`);
|
|
10
|
+
},
|
|
11
|
+
text: (value) => {
|
|
12
|
+
stdout.write(`${value}\n`);
|
|
13
|
+
},
|
|
14
|
+
info: (message = '') => {
|
|
15
|
+
if (isJson)
|
|
16
|
+
return;
|
|
17
|
+
stderr.write(`${message}\n`);
|
|
18
|
+
},
|
|
19
|
+
warn: (message) => {
|
|
20
|
+
stderr.write(`${message}\n`);
|
|
21
|
+
},
|
|
22
|
+
error: (message) => {
|
|
23
|
+
stderr.write(`${message}\n`);
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
const formatData = (value, format, colors) => {
|
|
28
|
+
if (format === 'json')
|
|
29
|
+
return JSON.stringify(value, null, 2);
|
|
30
|
+
if (typeof value === 'string')
|
|
31
|
+
return value;
|
|
32
|
+
return inspect(value, { depth: null, colors });
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=create-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-output.js","sourceRoot":"","sources":["../../src/lib/output/create-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4DnC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,MAAM,GAAG,MAAM,EACf,MAAM,GAAG,OAAO,CAAC,MAAM,EACvB,MAAM,GAAG,OAAO,CAAC,MAAM,EACvB,MAAM,GAAG,KAAK,MACS,EAAE,EAAU,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM,CAAA;IAEhC,OAAO;QACL,MAAM;QAEN,IAAI,EAAE,CAAC,KAAc,EAAQ,EAAE;YAC7B,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAM;YAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,EAAE,CAAC,KAAa,EAAQ,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,EAAE,CAAC,OAAO,GAAG,EAAE,EAAQ,EAAE;YAC3B,IAAI,MAAM;gBAAE,OAAM;YAClB,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;QAC9B,CAAC;QAED,IAAI,EAAE,CAAC,OAAe,EAAQ,EAAE;YAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;QAC9B,CAAC;QAED,KAAK,EAAE,CAAC,OAAe,EAAQ,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;QAC9B,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CACjB,KAAc,EACd,MAAoB,EACpB,MAAe,EACP,EAAE;IACV,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAChD,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Output } from './create-output.js';
|
|
2
|
+
/**
|
|
3
|
+
* The output used by the CLI.
|
|
4
|
+
*
|
|
5
|
+
* Defaults to a `text` output bound to the real process streams,
|
|
6
|
+
* so importing modules never write to stdout by accident.
|
|
7
|
+
*/
|
|
8
|
+
export declare const getOutput: () => Output;
|
|
9
|
+
/** Replace the output, e.g., once flags are parsed, or from a test. */
|
|
10
|
+
export declare const setOutput: (nextOutput: Output) => void;
|
|
11
|
+
/** Restore the default output. Intended for tests. */
|
|
12
|
+
export declare const resetOutput: () => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createOutput } from './create-output.js';
|
|
2
|
+
let output = null;
|
|
3
|
+
/**
|
|
4
|
+
* The output used by the CLI.
|
|
5
|
+
*
|
|
6
|
+
* Defaults to a `text` output bound to the real process streams,
|
|
7
|
+
* so importing modules never write to stdout by accident.
|
|
8
|
+
*/
|
|
9
|
+
export const getOutput = () => {
|
|
10
|
+
output ??= createOutput();
|
|
11
|
+
return output;
|
|
12
|
+
};
|
|
13
|
+
/** Replace the output, e.g., once flags are parsed, or from a test. */
|
|
14
|
+
export const setOutput = (nextOutput) => {
|
|
15
|
+
output = nextOutput;
|
|
16
|
+
};
|
|
17
|
+
/** Restore the default output. Intended for tests. */
|
|
18
|
+
export const resetOutput = () => {
|
|
19
|
+
output = null;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=get-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-output.js","sourceRoot":"","sources":["../../src/lib/output/get-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAE9D,IAAI,MAAM,GAAkB,IAAI,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE;IACpC,MAAM,KAAK,YAAY,EAAE,CAAA;IACzB,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAQ,EAAE;IACpD,MAAM,GAAG,UAAU,CAAA;AACrB,CAAC,CAAA;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAS,EAAE;IACpC,MAAM,GAAG,IAAI,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { OutputFormat } from './create-output.js';
|
|
2
|
+
export interface ResolveOutputFormatOptions {
|
|
3
|
+
/** Whether stdout is a terminal. */
|
|
4
|
+
isTty?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Whether to write machine readable output.
|
|
8
|
+
*
|
|
9
|
+
* An explicit `--json` or `--no-json` wins, otherwise the CLI writes JSON
|
|
10
|
+
* whenever stdout is piped or redirected, and pretty output at a terminal.
|
|
11
|
+
*
|
|
12
|
+
* This reads the arguments rather than the parsed args because `--json` is
|
|
13
|
+
* declared as a boolean flag, so that it never consumes the argument after
|
|
14
|
+
* it, and a boolean cannot tell `--no-json` apart from not passing anything.
|
|
15
|
+
*/
|
|
16
|
+
export declare const resolveOutputFormat: (argv: string[], { isTty }?: ResolveOutputFormatOptions) => OutputFormat;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether to write machine readable output.
|
|
3
|
+
*
|
|
4
|
+
* An explicit `--json` or `--no-json` wins, otherwise the CLI writes JSON
|
|
5
|
+
* whenever stdout is piped or redirected, and pretty output at a terminal.
|
|
6
|
+
*
|
|
7
|
+
* This reads the arguments rather than the parsed args because `--json` is
|
|
8
|
+
* declared as a boolean flag, so that it never consumes the argument after
|
|
9
|
+
* it, and a boolean cannot tell `--no-json` apart from not passing anything.
|
|
10
|
+
*/
|
|
11
|
+
export const resolveOutputFormat = (argv, { isTty = false } = {}) => {
|
|
12
|
+
const flag = argv.filter((arg) => arg === '--json' || arg === '--no-json');
|
|
13
|
+
// The last one wins, matching how the argument parser resolves repeats.
|
|
14
|
+
switch (flag[flag.length - 1]) {
|
|
15
|
+
case '--json':
|
|
16
|
+
return 'json';
|
|
17
|
+
case '--no-json':
|
|
18
|
+
return 'text';
|
|
19
|
+
default:
|
|
20
|
+
return isTty ? 'text' : 'json';
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=resolve-output-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-output-format.js","sourceRoot":"","sources":["../../src/lib/output/resolve-output-format.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAc,EACd,EAAE,KAAK,GAAG,KAAK,KAAiC,EAAE,EACpC,EAAE;IAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,WAAW,CAAC,CAAA;IAE1E,wEAAwE;IACxE,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAA;QACf,KAAK,WAAW;YACd,OAAO,MAAM,CAAA;QACf;YACE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAClC,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SelectResponsePayloadOptions {
|
|
2
|
+
/**
|
|
3
|
+
* The response key for the endpoint, e.g., `devices` for `/devices/list`,
|
|
4
|
+
* usually taken from the API blueprint.
|
|
5
|
+
*
|
|
6
|
+
* When omitted, every top level field except {@link metaKeys} is kept.
|
|
7
|
+
*/
|
|
8
|
+
responseKey?: string | null | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Reduce an API response body to the response key and pagination.
|
|
12
|
+
*
|
|
13
|
+
* The CLI never reports other top level fields: they are details of the
|
|
14
|
+
* transport, so including them would leak into anything parsing stdout.
|
|
15
|
+
*/
|
|
16
|
+
export declare const selectResponsePayload: (data: unknown, { responseKey }?: SelectResponsePayloadOptions) => unknown;
|