@seamapi/cli 0.22.0 → 0.24.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 +4 -4
- package/bin/cli.js +5 -5
- package/bin/cli.js.map +1 -1
- package/completions/seam.bash +1 -1
- package/completions/seam.fish +1 -1
- package/completions/seam.zsh +1 -1
- package/lib/args/parse.js +1 -1
- package/lib/args/parse.js.map +1 -1
- package/lib/auth/operations.d.ts +8 -8
- package/lib/auth/operations.js +16 -29
- package/lib/auth/operations.js.map +1 -1
- package/lib/blueprint/index.d.ts +3 -3
- package/lib/blueprint/index.js +4 -4
- package/lib/blueprint/index.js.map +1 -1
- package/lib/blueprint/source-npm.js +5 -5
- package/lib/blueprint/source-npm.js.map +1 -1
- package/lib/commands/api-command.js +1 -1
- package/lib/commands/local/completion.d.ts +3 -3
- package/lib/commands/local/completion.js +3 -3
- package/lib/commands/local/config-use-remote-schema.d.ts +2 -0
- package/lib/commands/local/config-use-remote-schema.js +20 -0
- package/lib/commands/local/config-use-remote-schema.js.map +1 -0
- package/lib/commands/local/wizard.d.ts +7 -0
- package/lib/commands/local/wizard.js +31 -0
- package/lib/commands/local/wizard.js.map +1 -1
- package/lib/commands/registry.js +2 -2
- package/lib/commands/registry.js.map +1 -1
- package/lib/commands/spec.d.ts +1 -1
- package/lib/commands/spec.js +6 -6
- package/lib/commands/spec.js.map +1 -1
- package/lib/config/cli-config.d.ts +19 -0
- package/lib/config/cli-config.js +54 -0
- package/lib/config/cli-config.js.map +1 -0
- package/lib/config/config-store.d.ts +8 -5
- package/lib/config/config-store.js +15 -13
- package/lib/config/config-store.js.map +1 -1
- package/lib/config/index.d.ts +3 -2
- package/lib/config/index.js +3 -2
- package/lib/config/index.js.map +1 -1
- package/lib/config/memory-config-store.d.ts +6 -0
- package/lib/config/memory-config-store.js +6 -0
- package/lib/config/memory-config-store.js.map +1 -1
- package/lib/context.d.ts +3 -3
- package/lib/context.js +6 -16
- package/lib/context.js.map +1 -1
- package/lib/interactions/endpoint-selection.js +2 -2
- package/lib/interactions/endpoint-selection.js.map +1 -1
- package/lib/interactions/index.d.ts +1 -1
- package/lib/interactions/index.js +1 -1
- package/lib/interactions/index.js.map +1 -1
- package/lib/interactions/login.js +2 -2
- package/lib/interactions/login.js.map +1 -1
- package/lib/interactions/use-remote-schema.d.ts +1 -0
- package/lib/interactions/use-remote-schema.js +21 -0
- package/lib/interactions/use-remote-schema.js.map +1 -0
- package/lib/interactions/workspace-id.js +2 -2
- package/lib/interactions/workspace-id.js.map +1 -1
- package/lib/render/completion/index.d.ts +1 -1
- package/lib/render/completion/index.js +2 -2
- package/lib/render/completion/render-bash.js +1 -1
- package/lib/render/completion/render-fish.js +1 -1
- package/lib/render/completion/render-zsh.js +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
- package/src/bin/cli.ts +5 -6
- package/src/lib/args/parse.ts +1 -1
- package/src/lib/auth/operations.ts +18 -32
- package/src/lib/blueprint/index.ts +6 -6
- package/src/lib/blueprint/source-npm.ts +5 -6
- package/src/lib/commands/api-command.ts +1 -1
- package/src/lib/commands/local/completion.ts +3 -3
- package/src/lib/commands/local/{config-use-remote-api-defs.ts → config-use-remote-schema.ts} +6 -6
- package/src/lib/commands/local/wizard.ts +48 -0
- package/src/lib/commands/registry.ts +2 -2
- package/src/lib/commands/spec.ts +6 -6
- package/src/lib/config/cli-config.ts +87 -0
- package/src/lib/config/config-store.ts +16 -13
- package/src/lib/config/index.ts +9 -4
- package/src/lib/config/memory-config-store.ts +9 -0
- package/src/lib/context.ts +7 -24
- package/src/lib/interactions/endpoint-selection.ts +2 -2
- package/src/lib/interactions/index.ts +1 -1
- package/src/lib/interactions/login.ts +2 -2
- package/src/lib/interactions/use-remote-schema.ts +22 -0
- package/src/lib/interactions/workspace-id.ts +2 -2
- package/src/lib/render/completion/index.ts +2 -2
- package/src/lib/render/completion/render-bash.ts +1 -1
- package/src/lib/render/completion/render-fish.ts +1 -1
- package/src/lib/render/completion/render-zsh.ts +1 -1
- package/src/lib/version.ts +1 -1
- package/lib/commands/local/config-use-remote-api-defs.d.ts +0 -2
- package/lib/commands/local/config-use-remote-api-defs.js +0 -20
- package/lib/commands/local/config-use-remote-api-defs.js.map +0 -1
- package/lib/interactions/use-remote-api-defs.d.ts +0 -1
- package/lib/interactions/use-remote-api-defs.js +0 -21
- package/lib/interactions/use-remote-api-defs.js.map +0 -1
- package/src/lib/interactions/use-remote-api-defs.ts +0 -22
package/lib/commands/spec.js
CHANGED
|
@@ -41,9 +41,9 @@ export const globalFlags = [
|
|
|
41
41
|
isRequired: false,
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
long: 'remote-
|
|
44
|
+
long: 'remote-schema',
|
|
45
45
|
short: null,
|
|
46
|
-
description: 'Use the
|
|
46
|
+
description: 'Use the schema served by the Seam API.',
|
|
47
47
|
values: [],
|
|
48
48
|
takesValue: false,
|
|
49
49
|
isRequired: false,
|
|
@@ -51,7 +51,7 @@ export const globalFlags = [
|
|
|
51
51
|
{
|
|
52
52
|
long: 'update',
|
|
53
53
|
short: null,
|
|
54
|
-
description: 'Force an update of the cached Seam API
|
|
54
|
+
description: 'Force an update of the cached Seam API schema.',
|
|
55
55
|
values: [],
|
|
56
56
|
takesValue: false,
|
|
57
57
|
isRequired: false,
|
|
@@ -82,7 +82,7 @@ export const flagTokens = (flag) => {
|
|
|
82
82
|
return tokens;
|
|
83
83
|
};
|
|
84
84
|
/**
|
|
85
|
-
* Derive the command spec from the API
|
|
85
|
+
* Derive the command spec from the API schema, merged with the commands
|
|
86
86
|
* the CLI declares itself (see `commands/registry.ts`, the single source of
|
|
87
87
|
* those declarations).
|
|
88
88
|
*/
|
|
@@ -152,7 +152,7 @@ const toFlagValues = (parameter) => {
|
|
|
152
152
|
};
|
|
153
153
|
/**
|
|
154
154
|
* Whether a word is safe to write into a shell script. Command, flag, and
|
|
155
|
-
* enum names come from the API
|
|
155
|
+
* enum names come from the API schema and are embedded unquoted or
|
|
156
156
|
* single-quoted in completion scripts, so never emit one that a shell could
|
|
157
157
|
* read as syntax.
|
|
158
158
|
*/
|
|
@@ -185,7 +185,7 @@ const toCommandGroups = (commands) => {
|
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
|
-
// Groups have no description of their own in the API
|
|
188
|
+
// Groups have no description of their own in the API schema, so name
|
|
189
189
|
// the commands they hold instead. Leave the list whole: help wraps it, and
|
|
190
190
|
// completion shortens it to fit a menu column.
|
|
191
191
|
const summarizeGroup = (key) => [...(groups.get(key)?.keys() ?? [])].join(', ');
|
package/lib/commands/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/lib/commands/spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAoE/D,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,IAAI;QACX,WAAW,EACT,iFAAiF;QACnF,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,KAAK;KAClB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,0BAA0B;QACvC,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;KAClB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,GAAG;QACV,WAAW,EACT,kFAAkF;QACpF,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;KAClB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAI;QACX,WAAW,EACT,oHAAoH;QACtH,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;KAClB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,GAAG;QACV,WAAW,EACT,sFAAsF;QACxF,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;KAClB;IACD;QACE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/lib/commands/spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ConfigStore } from './config-store.js';
|
|
2
|
+
/**
|
|
3
|
+
* The CLI's configuration, in the terms the CLI thinks in. Keys are named
|
|
4
|
+
* here alone: a caller says what it wants stored, not where it goes.
|
|
5
|
+
*/
|
|
6
|
+
export interface CliConfig {
|
|
7
|
+
readonly path: string;
|
|
8
|
+
getEndpoint: () => string | null;
|
|
9
|
+
setEndpoint: (endpoint: string) => void;
|
|
10
|
+
getToken: (endpoint: string) => string | null;
|
|
11
|
+
setToken: (endpoint: string, token: string) => void;
|
|
12
|
+
unsetToken: (endpoint: string) => void;
|
|
13
|
+
getWorkspace: () => string | null;
|
|
14
|
+
setWorkspace: (workspaceId: string) => void;
|
|
15
|
+
unsetWorkspace: () => void;
|
|
16
|
+
getUseRemoteSchema: () => boolean | null;
|
|
17
|
+
setUseRemoteSchema: (useRemoteSchema: boolean) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare const createCliConfig: (store: ConfigStore) => CliConfig;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Tokens are stored per endpoint, e.g. `https://connect.getseam.com.pat`. */
|
|
2
|
+
const tokenKey = (endpoint) => `${endpoint}.pat`;
|
|
3
|
+
export const createCliConfig = (store) => ({
|
|
4
|
+
get path() {
|
|
5
|
+
return store.path;
|
|
6
|
+
},
|
|
7
|
+
getEndpoint: () =>
|
|
8
|
+
// `server` is what an older CLI called the endpoint.
|
|
9
|
+
readString(store.get('endpoint')) ?? readString(store.get('server')),
|
|
10
|
+
/**
|
|
11
|
+
* Store the endpoint, dropping what belonged to the previous one: the
|
|
12
|
+
* workspace selection, and any value left under the legacy key that
|
|
13
|
+
* {@link CliConfig.getEndpoint} would otherwise still fall back to.
|
|
14
|
+
*/
|
|
15
|
+
setEndpoint: (endpoint) => {
|
|
16
|
+
store.set('endpoint', endpoint);
|
|
17
|
+
store.delete('server');
|
|
18
|
+
store.delete('current_workspace_id');
|
|
19
|
+
},
|
|
20
|
+
getToken: (endpoint) => readString(store.get(tokenKey(endpoint))),
|
|
21
|
+
setToken: (endpoint, token) => {
|
|
22
|
+
store.set(tokenKey(endpoint), token);
|
|
23
|
+
},
|
|
24
|
+
unsetToken: (endpoint) => {
|
|
25
|
+
store.delete(tokenKey(endpoint));
|
|
26
|
+
// Configs written before tokens were stored per endpoint may still hold
|
|
27
|
+
// an un-namespaced one.
|
|
28
|
+
store.delete('pat');
|
|
29
|
+
},
|
|
30
|
+
getWorkspace: () => readString(store.get('current_workspace_id')),
|
|
31
|
+
setWorkspace: (workspaceId) => {
|
|
32
|
+
store.set('current_workspace_id', workspaceId);
|
|
33
|
+
},
|
|
34
|
+
unsetWorkspace: () => {
|
|
35
|
+
store.delete('current_workspace_id');
|
|
36
|
+
},
|
|
37
|
+
getUseRemoteSchema: () => {
|
|
38
|
+
// `use_remote_api_defs` is what an older CLI called the same setting.
|
|
39
|
+
const useRemoteSchema = store.get('use_remote_schema') ?? store.get('use_remote_api_defs');
|
|
40
|
+
return typeof useRemoteSchema === 'boolean' ? useRemoteSchema : null;
|
|
41
|
+
},
|
|
42
|
+
/** Store the setting, dropping any value left under the legacy key. */
|
|
43
|
+
setUseRemoteSchema: (useRemoteSchema) => {
|
|
44
|
+
store.set('use_remote_schema', useRemoteSchema);
|
|
45
|
+
store.delete('use_remote_api_defs');
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
const readString = (value) => {
|
|
49
|
+
if (typeof value !== 'string')
|
|
50
|
+
return null;
|
|
51
|
+
const trimmedValue = value.trim();
|
|
52
|
+
return trimmedValue === '' ? null : trimmedValue;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=cli-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-config.js","sourceRoot":"","sources":["../../src/lib/config/cli-config.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAmB,EAAE,CAAC,GAAG,QAAQ,MAAM,CAAA;AAoBzE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAa,EAAE,CAAC,CAAC;IACjE,IAAI,IAAI;QACN,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,CAAC;IAED,WAAW,EAAE,GAAG,EAAE;IAChB,qDAAqD;IACrD,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtE;;;;OAIG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;QACxB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC/B,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACtB,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IACtC,CAAC;IAED,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjE,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC5B,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;QACvB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;QAChC,wEAAwE;QACxE,wBAAwB;QACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEjE,YAAY,EAAE,CAAC,WAAW,EAAE,EAAE;QAC5B,KAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAA;IAChD,CAAC;IAED,cAAc,EAAE,GAAG,EAAE;QACnB,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IACtC,CAAC;IAED,kBAAkB,EAAE,GAAG,EAAE;QACvB,sEAAsE;QACtE,MAAM,eAAe,GACnB,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;QACpE,OAAO,OAAO,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA;IACtE,CAAC;IAED,uEAAuE;IACvE,kBAAkB,EAAE,CAAC,eAAe,EAAE,EAAE;QACtC,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAA;QAC/C,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;IACrC,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,KAAc,EAAiB,EAAE;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAEjC,OAAO,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAA;AAClD,CAAC,CAAA"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import Configstore from 'configstore';
|
|
2
|
+
import { type CliConfig } from './cli-config.js';
|
|
3
|
+
/** Every directory the CLI keeps files in, and what it mounts keeps its own. */
|
|
4
|
+
export declare const rootPaths: import("env-paths").Paths;
|
|
2
5
|
/**
|
|
3
6
|
* What a config store can do, regardless of where it keeps the values.
|
|
4
7
|
*
|
|
@@ -16,11 +19,11 @@ export interface ConfigStore {
|
|
|
16
19
|
delete: (key: string) => void;
|
|
17
20
|
clear: () => void;
|
|
18
21
|
}
|
|
19
|
-
export declare const
|
|
20
|
-
/** Replace the
|
|
21
|
-
export declare const
|
|
22
|
-
/** Drop the current
|
|
23
|
-
export declare const
|
|
22
|
+
export declare const getConfig: () => CliConfig;
|
|
23
|
+
/** Replace the config, e.g., with an in-memory one for a test. */
|
|
24
|
+
export declare const setConfig: (nextConfig: CliConfig) => void;
|
|
25
|
+
/** Drop the current config so the next read builds the real one. */
|
|
26
|
+
export declare const resetConfig: () => void;
|
|
24
27
|
export declare class PersistentConfigStore implements ConfigStore {
|
|
25
28
|
private readonly settingsStore;
|
|
26
29
|
private readonly stateStore;
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
2
|
import Configstore from 'configstore';
|
|
3
3
|
import envPaths from 'env-paths';
|
|
4
|
+
import { createCliConfig } from './cli-config.js';
|
|
4
5
|
import { migrateConfigStore } from './migrate.js';
|
|
5
6
|
import { isStateKey, mergeConfig, splitConfig } from './values.js';
|
|
6
7
|
const configFileName = 'cli.json';
|
|
7
8
|
const legacyConfigStoreId = 'seam-cli';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
/** Every directory the CLI keeps files in, and what it mounts keeps its own. */
|
|
10
|
+
export const rootPaths = envPaths('seam', { suffix: '' });
|
|
11
|
+
let config = null;
|
|
12
|
+
export const getConfig = () => {
|
|
13
|
+
config ??= createCliConfig(createConfigStore());
|
|
14
|
+
return config;
|
|
13
15
|
};
|
|
14
|
-
/** Replace the
|
|
15
|
-
export const
|
|
16
|
-
|
|
16
|
+
/** Replace the config, e.g., with an in-memory one for a test. */
|
|
17
|
+
export const setConfig = (nextConfig) => {
|
|
18
|
+
config = nextConfig;
|
|
17
19
|
};
|
|
18
|
-
/** Drop the current
|
|
19
|
-
export const
|
|
20
|
-
|
|
20
|
+
/** Drop the current config so the next read builds the real one. */
|
|
21
|
+
export const resetConfig = () => {
|
|
22
|
+
config = null;
|
|
21
23
|
};
|
|
22
24
|
const createConfigStore = () => {
|
|
23
25
|
const settingsStore = new Configstore(legacyConfigStoreId, undefined, {
|
|
@@ -76,10 +78,10 @@ export class PersistentConfigStore {
|
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
const getConfigPath = () => {
|
|
79
|
-
return join(
|
|
81
|
+
return join(rootPaths.config, configFileName);
|
|
80
82
|
};
|
|
81
83
|
const getStateConfigPath = () => {
|
|
82
|
-
return join(
|
|
84
|
+
return join(rootPaths.log, configFileName);
|
|
83
85
|
};
|
|
84
86
|
const isRecord = (value) => {
|
|
85
87
|
return value != null && typeof value === 'object' && !Array.isArray(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/lib/config/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,WAAW,MAAM,aAAa,CAAA;AACrC,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAElE,MAAM,cAAc,GAAG,UAAU,CAAA;AACjC,MAAM,mBAAmB,GAAG,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/lib/config/config-store.ts"],"names":[],"mappings":"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"}
|
package/lib/config/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { type
|
|
2
|
-
export {
|
|
1
|
+
export { type CliConfig, createCliConfig } from './cli-config.js';
|
|
2
|
+
export { type ConfigStore, getConfig, type PersistentConfigStore, resetConfig, rootPaths, setConfig, } from './config-store.js';
|
|
3
|
+
export { createMemoryConfig, createMemoryConfigStore, } from './memory-config-store.js';
|
package/lib/config/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { createCliConfig } from './cli-config.js';
|
|
2
|
+
export { getConfig, resetConfig, rootPaths, setConfig, } from './config-store.js';
|
|
3
|
+
export { createMemoryConfig, createMemoryConfigStore, } from './memory-config-store.js';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
package/lib/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAEL,SAAS,EAET,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,0BAA0B,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CliConfig } from './cli-config.js';
|
|
1
2
|
import type { ConfigStore } from './config-store.js';
|
|
2
3
|
/**
|
|
3
4
|
* A real {@link ConfigStore} held in memory, for tests.
|
|
@@ -19,3 +20,8 @@ export declare class MemoryConfigStore implements ConfigStore {
|
|
|
19
20
|
clear(): void;
|
|
20
21
|
}
|
|
21
22
|
export declare const createMemoryConfigStore: (initialValues?: Record<string, unknown>) => ConfigStore;
|
|
23
|
+
/**
|
|
24
|
+
* A config held in memory, for tests. Values may be seeded by key, e.g., to
|
|
25
|
+
* stand for a config an older CLI wrote.
|
|
26
|
+
*/
|
|
27
|
+
export declare const createMemoryConfig: (initialValues?: Record<string, unknown>) => CliConfig;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createCliConfig } from './cli-config.js';
|
|
1
2
|
/**
|
|
2
3
|
* A real {@link ConfigStore} held in memory, for tests.
|
|
3
4
|
*
|
|
@@ -45,4 +46,9 @@ export class MemoryConfigStore {
|
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
export const createMemoryConfigStore = (initialValues = {}) => new MemoryConfigStore(initialValues);
|
|
49
|
+
/**
|
|
50
|
+
* A config held in memory, for tests. Values may be seeded by key, e.g., to
|
|
51
|
+
* stand for a config an older CLI wrote.
|
|
52
|
+
*/
|
|
53
|
+
export const createMemoryConfig = (initialValues = {}) => createCliConfig(createMemoryConfigStore(initialValues));
|
|
48
54
|
//# sourceMappingURL=memory-config-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-config-store.js","sourceRoot":"","sources":["../../src/lib/config/memory-config-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory-config-store.js","sourceRoot":"","sources":["../../src/lib/config/memory-config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjE;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,kBAAkB,CAAA;IAEjB,MAAM,CAAsB;IAE7C,YAAY,gBAAyC,EAAE;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,GAAG,CAAC,SAAkC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG,CAAC,GAAqC,EAAE,KAAe;QACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAC3B,OAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,gBAAyC,EAAE,EAC9B,EAAE,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAA;AAEtD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,gBAAyC,EAAE,EAChC,EAAE,CAAC,eAAe,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAA"}
|
package/lib/context.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Interactivity } from './args/parse.js';
|
|
2
2
|
import type { ApiBlueprint } from './blueprint/index.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type CliConfig } from './config/index.js';
|
|
4
4
|
import type { SeamApi } from './http/api.js';
|
|
5
5
|
import type { Output } from './output/output.js';
|
|
6
6
|
export declare const defaultEndpoint = "https://connect.getseam.com";
|
|
@@ -22,13 +22,13 @@ export interface AuthContext {
|
|
|
22
22
|
workspaceId: string | null;
|
|
23
23
|
workspaceIdSource: Exclude<ValueSource, 'default'> | null;
|
|
24
24
|
}
|
|
25
|
-
export declare const resolveAuth: (config?:
|
|
25
|
+
export declare const resolveAuth: (config?: CliConfig) => AuthContext;
|
|
26
26
|
/**
|
|
27
27
|
* Everything a command runs with: the stores and auth it reads, the API
|
|
28
28
|
* shape it acts on, and how it may interact with the user.
|
|
29
29
|
*/
|
|
30
30
|
export interface CliContext {
|
|
31
|
-
config:
|
|
31
|
+
config: CliConfig;
|
|
32
32
|
auth: AuthContext;
|
|
33
33
|
output: Output;
|
|
34
34
|
blueprint: ApiBlueprint;
|
package/lib/context.js
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getConfig } from './config/index.js';
|
|
2
2
|
import { getEndpointFromEnv, getTokenFromEnv, getWorkspaceIdFromEnv, } from './env.js';
|
|
3
3
|
import { getAuthOverrides } from './overrides.js';
|
|
4
4
|
export const defaultEndpoint = 'https://connect.getseam.com';
|
|
5
|
-
export const resolveAuth = (config =
|
|
5
|
+
export const resolveAuth = (config = getConfig()) => {
|
|
6
6
|
const { endpoint: flagEndpoint, workspaceId: flagWorkspaceId } = getAuthOverrides();
|
|
7
7
|
const envEndpoint = getEndpointFromEnv();
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const storedEndpoint = config.get('endpoint') ?? config.get('server');
|
|
11
|
-
const endpoint = flagEndpoint ??
|
|
12
|
-
envEndpoint ??
|
|
13
|
-
(typeof storedEndpoint === 'string' ? storedEndpoint : null);
|
|
8
|
+
const storedEndpoint = config.getEndpoint();
|
|
9
|
+
const endpoint = flagEndpoint ?? envEndpoint ?? storedEndpoint;
|
|
14
10
|
const envToken = getTokenFromEnv();
|
|
15
11
|
// The token is stored per endpoint, so an overridden endpoint is read with
|
|
16
12
|
// the token belonging to it rather than the one it replaced.
|
|
17
|
-
const storedToken =
|
|
13
|
+
const storedToken = config.getToken(endpoint ?? defaultEndpoint);
|
|
18
14
|
const envWorkspaceId = getWorkspaceIdFromEnv();
|
|
19
|
-
const storedWorkspaceId =
|
|
15
|
+
const storedWorkspaceId = config.getWorkspace();
|
|
20
16
|
const workspaceId = flagWorkspaceId ?? envWorkspaceId ?? storedWorkspaceId;
|
|
21
17
|
return {
|
|
22
18
|
endpoint: endpoint ?? defaultEndpoint,
|
|
@@ -39,10 +35,4 @@ export const resolveAuth = (config = getConfigStore()) => {
|
|
|
39
35
|
: null,
|
|
40
36
|
};
|
|
41
37
|
};
|
|
42
|
-
const readString = (value) => {
|
|
43
|
-
if (typeof value !== 'string')
|
|
44
|
-
return null;
|
|
45
|
-
const trimmedValue = value.trim();
|
|
46
|
-
return trimmedValue === '' ? null : trimmedValue;
|
|
47
|
-
};
|
|
48
38
|
//# sourceMappingURL=context.js.map
|
package/lib/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/lib/context.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/lib/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAA;AAsB5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAoB,SAAS,EAAE,EAAe,EAAE;IAC1E,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,GAC5D,gBAAgB,EAAE,CAAA;IAEpB,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;IACxC,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAC3C,MAAM,QAAQ,GAAG,YAAY,IAAI,WAAW,IAAI,cAAc,CAAA;IAE9D,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAClC,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,eAAe,CAAC,CAAA;IAEhE,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAA;IAC9C,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;IAC/C,MAAM,WAAW,GAAG,eAAe,IAAI,cAAc,IAAI,iBAAiB,CAAA;IAE1E,OAAO;QACL,QAAQ,EAAE,QAAQ,IAAI,eAAe;QACrC,cAAc,EACZ,YAAY,IAAI,IAAI;YAClB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,WAAW,IAAI,IAAI;gBACnB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,QAAQ,IAAI,IAAI;oBAChB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,SAAS;QACnB,KAAK,EAAE,QAAQ,IAAI,WAAW;QAC9B,WAAW,EACT,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QAClE,WAAW;QACX,iBAAiB,EACf,eAAe,IAAI,IAAI;YACrB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,cAAc,IAAI,IAAI;gBACtB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,iBAAiB,IAAI,IAAI;oBACzB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,IAAI;KACf,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { assertMutable, selectEndpoint } from '../auth/operations.js';
|
|
2
|
-
import {
|
|
2
|
+
import { getConfig } from '../config/index.js';
|
|
3
3
|
import { resolveAuth } from '../context.js';
|
|
4
4
|
import { getOutput } from '../output/get-output.js';
|
|
5
5
|
import { promptAutocomplete } from '../prompt.js';
|
|
6
6
|
export async function interactForEndpointSelection() {
|
|
7
|
-
const config =
|
|
7
|
+
const config = getConfig();
|
|
8
8
|
assertMutable(resolveAuth(config), 'endpoint', 'select an endpoint');
|
|
9
9
|
const endpoints = ['http://localhost:3020', 'https://connect.getseam.com'];
|
|
10
10
|
// Searchable, as selecting a device or a command is.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint-selection.js","sourceRoot":"","sources":["../../src/lib/interactions/endpoint-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"endpoint-selection.js","sourceRoot":"","sources":["../../src/lib/interactions/endpoint-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAA;IAEpE,MAAM,SAAS,GAAG,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,CAAA;IAE1E,qDAAqD;IACrD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;QACxC,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACpC,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;KACJ,CAAC,CAAA;IAEF,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChC,SAAS,EAAE,CAAC,IAAI,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAA;AACjD,CAAC"}
|
|
@@ -14,6 +14,6 @@ export * from './endpoint-selection.js';
|
|
|
14
14
|
export * from './login.js';
|
|
15
15
|
export * from './resource.js';
|
|
16
16
|
export * from './timestamp.js';
|
|
17
|
-
export * from './use-remote-
|
|
17
|
+
export * from './use-remote-schema.js';
|
|
18
18
|
export * from './user-identity.js';
|
|
19
19
|
export * from './workspace-id.js';
|
|
@@ -14,7 +14,7 @@ export * from './endpoint-selection.js';
|
|
|
14
14
|
export * from './login.js';
|
|
15
15
|
export * from './resource.js';
|
|
16
16
|
export * from './timestamp.js';
|
|
17
|
-
export * from './use-remote-
|
|
17
|
+
export * from './use-remote-schema.js';
|
|
18
18
|
export * from './user-identity.js';
|
|
19
19
|
export * from './workspace-id.js';
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/interactions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/interactions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA"}
|
|
@@ -2,14 +2,14 @@ import { isApiKey, isPersonalAccessToken } from '@seamapi/http/connect';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { assertMutable, storeToken } from '../auth/operations.js';
|
|
4
4
|
import { validateToken } from '../auth/validate-token.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getConfig } from '../config/index.js';
|
|
6
6
|
import { resolveAuth } from '../context.js';
|
|
7
7
|
import { getOutput } from '../output/get-output.js';
|
|
8
8
|
import { withLoading } from '../output/with-loading.js';
|
|
9
9
|
import { promptText } from '../prompt.js';
|
|
10
10
|
import { interactForWorkspaceId } from './workspace-id.js';
|
|
11
11
|
export const interactForLogin = async () => {
|
|
12
|
-
const config =
|
|
12
|
+
const config = getConfig();
|
|
13
13
|
const output = getOutput();
|
|
14
14
|
const auth = resolveAuth(config);
|
|
15
15
|
// Refuse before prompting: nothing typed here could be stored.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/lib/interactions/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/lib/interactions/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;IACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAEhC,+DAA+D;IAC/D,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CACT,gIAAgI,IAAI,CAAC,QAAQ,iCAAiC,CAC/K,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,GAAG,GAAG,MAAM,UAAU,CAAC;QAC3B,OAAO,EAAE,wBAAwB;KAClC,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAExB,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,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACzB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;AAC1D,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function interactForUseRemoteSchema(): Promise<void>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { setUseRemoteSchema } from '../auth/operations.js';
|
|
2
|
+
import { getOutput } from '../output/get-output.js';
|
|
3
|
+
import { promptSelect } from '../prompt.js';
|
|
4
|
+
export async function interactForUseRemoteSchema() {
|
|
5
|
+
const useRemoteSchema = await promptSelect({
|
|
6
|
+
message: 'Always use the remote schema?',
|
|
7
|
+
choices: [
|
|
8
|
+
{
|
|
9
|
+
label: 'Yes',
|
|
10
|
+
value: true,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
label: 'No',
|
|
14
|
+
value: false,
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
});
|
|
18
|
+
setUseRemoteSchema(useRemoteSchema);
|
|
19
|
+
getOutput().info(`Use remote schema: ${useRemoteSchema}`);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=use-remote-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-remote-schema.js","sourceRoot":"","sources":["../../src/lib/interactions/use-remote-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC;QACzC,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI;aACZ;YACD;gBACE,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAA;IAEF,kBAAkB,CAAC,eAAe,CAAC,CAAA;IACnC,SAAS,EAAE,CAAC,IAAI,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { SeamHttpWithoutWorkspace } from '@seamapi/http/connect';
|
|
2
2
|
import { assertMutable, selectWorkspace } from '../auth/operations.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getConfig } from '../config/index.js';
|
|
4
4
|
import { resolveAuth } from '../context.js';
|
|
5
5
|
import { getSeamMultiWorkspace } from '../http/client.js';
|
|
6
6
|
import { withLoading } from '../output/with-loading.js';
|
|
7
7
|
import { promptAutocomplete } from '../prompt.js';
|
|
8
8
|
export const interactForWorkspaceId = async (personalAccessToken) => {
|
|
9
|
-
const config =
|
|
9
|
+
const config = getConfig();
|
|
10
10
|
// Refuse before prompting: nothing selected here could be stored.
|
|
11
11
|
assertMutable(resolveAuth(config), 'workspaceId', 'select a workspace');
|
|
12
12
|
const seam = personalAccessToken
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-id.js","sourceRoot":"","sources":["../../src/lib/interactions/workspace-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"workspace-id.js","sourceRoot":"","sources":["../../src/lib/interactions/workspace-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,mBAA4B,EAAE,EAAE;IAC3E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,kEAAkE;IAClE,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAA;IAEvE,MAAM,IAAI,GAAG,mBAAmB;QAC9B,CAAC,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACpE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ;SACvC,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,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAS;QACnD,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,IAAI,EAAE,SAAS,CAAC,YAAY;SAC7B,CAAC,CAAC;KACJ,CAAC,CAAA;IAEF,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACpC,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA"}
|
|
@@ -10,7 +10,7 @@ export declare const renderCompletion: (shell: CompletionShell, spec: CommandSpe
|
|
|
10
10
|
*
|
|
11
11
|
* The loader runs 'seam completion' the first time the shell completes a seam
|
|
12
12
|
* command, so installed completions always match the CLI's current Seam API
|
|
13
|
-
*
|
|
13
|
+
* schema instead of the schema packaged at release time. Each shell
|
|
14
14
|
* loads its completion file on demand, so the CLI runs once per shell session
|
|
15
15
|
* at first completion, never at shell startup.
|
|
16
16
|
*
|
|
@@ -20,7 +20,7 @@ export const renderCompletion = (shell, spec) => renderers[shell](spec);
|
|
|
20
20
|
*
|
|
21
21
|
* The loader runs 'seam completion' the first time the shell completes a seam
|
|
22
22
|
* command, so installed completions always match the CLI's current Seam API
|
|
23
|
-
*
|
|
23
|
+
* schema instead of the schema packaged at release time. Each shell
|
|
24
24
|
* loads its completion file on demand, so the CLI runs once per shell session
|
|
25
25
|
* at first completion, never at shell startup.
|
|
26
26
|
*
|
|
@@ -43,7 +43,7 @@ export const completionScriptSentinels = {
|
|
|
43
43
|
const stubHeader = (shell) => `# ${shell} completion loader for the seam command.
|
|
44
44
|
#
|
|
45
45
|
# Generated by @seamapi/cli. Loads completions from the CLI on first use, so
|
|
46
|
-
# they always match the CLI's current Seam API
|
|
46
|
+
# they always match the CLI's current Seam API schema. Requires the seam
|
|
47
47
|
# command on PATH. Print the underlying script with 'seam completion ${shell}'.`;
|
|
48
48
|
const stubs = {
|
|
49
49
|
bash: `${stubHeader('bash')}
|
|
@@ -18,7 +18,7 @@ export const renderBashCompletion = (spec) => {
|
|
|
18
18
|
};
|
|
19
19
|
const header = `# bash completion for the seam command.
|
|
20
20
|
#
|
|
21
|
-
# Generated by @seamapi/cli from the Seam API
|
|
21
|
+
# Generated by @seamapi/cli from the Seam API schema.
|
|
22
22
|
# Do not edit: regenerate with 'seam completion bash'.
|
|
23
23
|
#
|
|
24
24
|
# Load it for the current shell with
|
|
@@ -8,7 +8,7 @@ export const renderFishCompletion = (spec) => `${[
|
|
|
8
8
|
].join('\n\n')}\n`;
|
|
9
9
|
const header = `# fish completion for the seam command.
|
|
10
10
|
#
|
|
11
|
-
# Generated by @seamapi/cli from the Seam API
|
|
11
|
+
# Generated by @seamapi/cli from the Seam API schema.
|
|
12
12
|
# Do not edit: regenerate with 'seam completion fish'.
|
|
13
13
|
#
|
|
14
14
|
# Install it with
|
|
@@ -19,7 +19,7 @@ const header = `#compdef seam
|
|
|
19
19
|
|
|
20
20
|
# zsh completion for the seam command.
|
|
21
21
|
#
|
|
22
|
-
# Generated by @seamapi/cli from the Seam API
|
|
22
|
+
# Generated by @seamapi/cli from the Seam API schema.
|
|
23
23
|
# Do not edit: regenerate with 'seam completion zsh'.
|
|
24
24
|
#
|
|
25
25
|
# Load it for the current shell with
|
package/lib/version.d.ts
CHANGED
package/lib/version.js
CHANGED