@seamapi/cli 0.19.0 → 0.20.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 +2 -2
- package/bin/cli.js.map +1 -1
- package/lib/auth/operations.d.ts +14 -14
- package/lib/auth/operations.js +39 -32
- package/lib/auth/operations.js.map +1 -1
- package/lib/auth/validate-token.js +1 -1
- package/lib/auth/validate-token.js.map +1 -1
- package/lib/blueprint/index.d.ts +1 -1
- package/lib/blueprint/index.js +2 -2
- package/lib/blueprint/index.js.map +1 -1
- package/lib/blueprint/source-remote.d.ts +2 -2
- package/lib/blueprint/source-remote.js +3 -3
- package/lib/blueprint/source-remote.js.map +1 -1
- package/lib/commands/local/login.js +3 -3
- package/lib/commands/local/login.js.map +1 -1
- package/lib/commands/local/{select-server.d.ts → select-endpoint.d.ts} +1 -1
- package/lib/commands/local/select-endpoint.js +27 -0
- package/lib/commands/local/select-endpoint.js.map +1 -0
- package/lib/commands/registry.js +2 -4
- package/lib/commands/registry.js.map +1 -1
- package/lib/context.d.ts +5 -5
- package/lib/context.js +9 -7
- package/lib/context.js.map +1 -1
- package/lib/env.d.ts +2 -2
- package/lib/env.js +2 -2
- package/lib/env.js.map +1 -1
- package/lib/http/client.js +2 -2
- package/lib/http/client.js.map +1 -1
- package/lib/interactions/endpoint-selection.d.ts +1 -0
- package/lib/interactions/endpoint-selection.js +39 -0
- package/lib/interactions/endpoint-selection.js.map +1 -0
- 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/workspace-id.js +1 -1
- package/lib/interactions/workspace-id.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/src/bin/cli.ts +2 -2
- package/src/lib/auth/operations.ts +43 -35
- package/src/lib/auth/validate-token.ts +1 -1
- package/src/lib/blueprint/index.ts +3 -3
- package/src/lib/blueprint/source-remote.ts +3 -3
- package/src/lib/commands/local/login.ts +3 -3
- package/src/lib/commands/local/select-endpoint.ts +30 -0
- package/src/lib/commands/registry.ts +2 -4
- package/src/lib/context.ts +17 -13
- package/src/lib/env.ts +2 -2
- package/src/lib/http/client.ts +2 -2
- package/src/lib/interactions/{server-selection.ts → endpoint-selection.ts} +16 -13
- package/src/lib/interactions/index.ts +1 -1
- package/src/lib/interactions/login.ts +2 -2
- package/src/lib/interactions/workspace-id.ts +1 -1
- package/src/lib/version.ts +1 -1
- package/lib/commands/local/config-set-fake-server.d.ts +0 -3
- package/lib/commands/local/config-set-fake-server.js +0 -20
- package/lib/commands/local/config-set-fake-server.js.map +0 -1
- package/lib/commands/local/select-server.js +0 -27
- package/lib/commands/local/select-server.js.map +0 -1
- package/lib/interactions/server-selection.d.ts +0 -1
- package/lib/interactions/server-selection.js +0 -36
- package/lib/interactions/server-selection.js.map +0 -1
- package/src/lib/commands/local/config-set-fake-server.ts +0 -21
- package/src/lib/commands/local/select-server.ts +0 -30
package/README.md
CHANGED
|
@@ -183,12 +183,12 @@ so it can be inspected from a pipe; anything else is written to stderr only.
|
|
|
183
183
|
|
|
184
184
|
### Environment variables
|
|
185
185
|
|
|
186
|
-
Everything `seam login`, `seam select workspace`, and `seam select
|
|
186
|
+
Everything `seam login`, `seam select workspace`, and `seam select endpoint`
|
|
187
187
|
store may be given in the environment instead:
|
|
188
188
|
|
|
189
189
|
- `SEAM_CLI_TOKEN`: a Personal Access Token or API Key,
|
|
190
190
|
- `SEAM_CLI_WORKSPACE_ID`: the workspace requests are made against,
|
|
191
|
-
- `SEAM_CLI_ENDPOINT`: the Seam API
|
|
191
|
+
- `SEAM_CLI_ENDPOINT`: the Seam API endpoint requests are made to.
|
|
192
192
|
|
|
193
193
|
Any of them, all of them, or none of them may be set. Each one wins over the
|
|
194
194
|
corresponding stored value, which makes them useful for CI, for a single
|
|
@@ -213,7 +213,7 @@ Personal Access Token works across workspaces, so it needs one from either
|
|
|
213
213
|
The command that would store an overridden value fails rather than storing
|
|
214
214
|
something the environment ignores: `seam login` and `seam logout` while
|
|
215
215
|
`SEAM_CLI_TOKEN` is set, `seam select workspace` while
|
|
216
|
-
`SEAM_CLI_WORKSPACE_ID` is set, and `seam select
|
|
216
|
+
`SEAM_CLI_WORKSPACE_ID` is set, and `seam select endpoint` while
|
|
217
217
|
`SEAM_CLI_ENDPOINT` is set. Unset the variable to use those commands.
|
|
218
218
|
|
|
219
219
|
```bash
|
|
@@ -278,7 +278,7 @@ the loaders for all three shells.
|
|
|
278
278
|
Completions are generated from the cached Seam API definitions, so they may
|
|
279
279
|
briefly lag a newly released API. Pass `--update` to refresh the cache first,
|
|
280
280
|
e.g., `seam completion bash --update`. They do not reflect definitions served
|
|
281
|
-
by another Seam API
|
|
281
|
+
by another Seam API endpoint when `seam config use-remote-api-defs` is enabled.
|
|
282
282
|
|
|
283
283
|
If completions do not appear after installing them system wide:
|
|
284
284
|
|
package/bin/cli.js
CHANGED
|
@@ -93,11 +93,11 @@ async function cli(args, argv) {
|
|
|
93
93
|
}
|
|
94
94
|
const localCommand = findLocalCommand(args._);
|
|
95
95
|
// Commands declared not to need a token bypass the login gate. A partial
|
|
96
|
-
// path keeps the historical rule: only login and select
|
|
96
|
+
// path keeps the historical rule: only login and select endpoint may be
|
|
97
97
|
// reached logged out.
|
|
98
98
|
const requiresAuth = localCommand != null
|
|
99
99
|
? localCommand.requiresAuth
|
|
100
|
-
: !(args._[0] === 'login' || isEqual(args._, ['select', '
|
|
100
|
+
: !(args._[0] === 'login' || isEqual(args._, ['select', 'endpoint']));
|
|
101
101
|
if (requiresAuth && resolveAuth(config).token == null) {
|
|
102
102
|
output.error(`Not logged in. Please run "seam login" or set ${tokenEnvVar}`);
|
|
103
103
|
process.exitCode = 1;
|
package/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
package/lib/auth/operations.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type ConfigStore } from '../config/index.js';
|
|
|
2
2
|
import { type AuthContext } from '../context.js';
|
|
3
3
|
import { validateToken } from './validate-token.js';
|
|
4
4
|
/** A stored auth setting an environment variable may override. */
|
|
5
|
-
export type AuthSetting = '
|
|
5
|
+
export type AuthSetting = 'endpoint' | 'token' | 'workspaceId';
|
|
6
6
|
/**
|
|
7
7
|
* Refuse to store a setting the environment overrides.
|
|
8
8
|
*
|
|
@@ -14,41 +14,41 @@ export type AuthSetting = 'server' | 'token' | 'workspaceId';
|
|
|
14
14
|
*/
|
|
15
15
|
export declare const assertMutable: (auth: AuthContext, setting: AuthSetting, action: string) => void;
|
|
16
16
|
export interface LoginOptions {
|
|
17
|
-
|
|
17
|
+
endpoint?: string | undefined;
|
|
18
18
|
token?: string | undefined;
|
|
19
19
|
workspaceId?: string | undefined;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Store the given credentials, validating the token first.
|
|
23
23
|
*
|
|
24
|
-
* The token is stored under the
|
|
25
|
-
*
|
|
24
|
+
* The token is stored under the endpoint it will be used with, so a given
|
|
25
|
+
* endpoint is stored and re-resolved before the token key is derived.
|
|
26
26
|
*
|
|
27
27
|
* Validation reaches the network, so a test may inject its own `validate`.
|
|
28
28
|
*/
|
|
29
|
-
export declare const login: ({
|
|
30
|
-
/** Store the token for the current
|
|
29
|
+
export declare const login: ({ endpoint, token, workspaceId }: LoginOptions, config?: ConfigStore, validate?: typeof validateToken) => Promise<void>;
|
|
30
|
+
/** Store the token for the current endpoint, e.g., one just prompted for. */
|
|
31
31
|
export declare const storeToken: (token: string, config?: ConfigStore) => void;
|
|
32
32
|
/** Remove the stored token and workspace selection. */
|
|
33
33
|
export declare const logout: (config?: ConfigStore) => void;
|
|
34
34
|
/**
|
|
35
|
-
* Store the
|
|
35
|
+
* Store the endpoint to make requests against.
|
|
36
36
|
*
|
|
37
|
-
* The workspace selection belongs to the previous
|
|
37
|
+
* The workspace selection belongs to the previous endpoint, so it is cleared.
|
|
38
38
|
*/
|
|
39
|
-
export declare const
|
|
39
|
+
export declare const selectEndpoint: (endpoint: string, config?: ConfigStore) => void;
|
|
40
40
|
/** Store the workspace requests are made against. */
|
|
41
41
|
export declare const selectWorkspace: (workspaceId: string, config?: ConfigStore) => void;
|
|
42
42
|
/**
|
|
43
|
-
* Point the CLI at a fake Seam Connect
|
|
44
|
-
* token it accepts. Returns the generated
|
|
43
|
+
* Point the CLI at a fake Seam Connect endpoint and store the well-known
|
|
44
|
+
* token it accepts. Returns the generated endpoint URL for reporting.
|
|
45
45
|
*/
|
|
46
|
-
export declare const
|
|
46
|
+
export declare const selectFakeEndpoint: ({ urlSeed, config, }?: {
|
|
47
47
|
urlSeed?: string;
|
|
48
48
|
config?: ConfigStore;
|
|
49
49
|
}) => {
|
|
50
|
-
|
|
50
|
+
endpoint: string;
|
|
51
51
|
token: string;
|
|
52
52
|
};
|
|
53
|
-
/** Store whether API definitions come from the
|
|
53
|
+
/** Store whether API definitions come from the endpoint instead of npm. */
|
|
54
54
|
export declare const setUseRemoteApiDefs: (useRemoteApiDefs: boolean, config?: ConfigStore) => void;
|
package/lib/auth/operations.js
CHANGED
|
@@ -14,10 +14,10 @@ import { validateToken } from './validate-token.js';
|
|
|
14
14
|
*/
|
|
15
15
|
export const assertMutable = (auth, setting, action) => {
|
|
16
16
|
const { envVar, source, value } = {
|
|
17
|
-
|
|
17
|
+
endpoint: {
|
|
18
18
|
envVar: endpointEnvVar,
|
|
19
|
-
source: auth.
|
|
20
|
-
value: auth.
|
|
19
|
+
source: auth.endpointSource,
|
|
20
|
+
value: auth.endpoint,
|
|
21
21
|
},
|
|
22
22
|
token: { envVar: tokenEnvVar, source: auth.tokenSource, value: auth.token },
|
|
23
23
|
workspaceId: {
|
|
@@ -33,60 +33,58 @@ export const assertMutable = (auth, setting, action) => {
|
|
|
33
33
|
/**
|
|
34
34
|
* Store the given credentials, validating the token first.
|
|
35
35
|
*
|
|
36
|
-
* The token is stored under the
|
|
37
|
-
*
|
|
36
|
+
* The token is stored under the endpoint it will be used with, so a given
|
|
37
|
+
* endpoint is stored and re-resolved before the token key is derived.
|
|
38
38
|
*
|
|
39
39
|
* Validation reaches the network, so a test may inject its own `validate`.
|
|
40
40
|
*/
|
|
41
|
-
export const login = async ({
|
|
41
|
+
export const login = async ({ endpoint, token, workspaceId }, config = getConfigStore(), validate = validateToken) => {
|
|
42
42
|
let auth = resolveAuth(config);
|
|
43
43
|
// Nothing is stored while the environment overrides it, so refuse before
|
|
44
44
|
// storing anything rather than part way through.
|
|
45
45
|
assertMutable(auth, 'token', 'log in');
|
|
46
|
-
if (
|
|
47
|
-
assertMutable(auth, '
|
|
46
|
+
if (endpoint != null)
|
|
47
|
+
assertMutable(auth, 'endpoint', 'select an endpoint');
|
|
48
48
|
if (workspaceId != null) {
|
|
49
49
|
assertMutable(auth, 'workspaceId', 'select a workspace');
|
|
50
50
|
}
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
config.delete('current_workspace_id');
|
|
51
|
+
if (endpoint != null) {
|
|
52
|
+
storeEndpoint(endpoint, config);
|
|
54
53
|
auth = resolveAuth(config);
|
|
55
54
|
}
|
|
56
55
|
if (token != null) {
|
|
57
56
|
await validate(token, workspaceId);
|
|
58
|
-
config.set(`${auth.
|
|
57
|
+
config.set(`${auth.endpoint}.pat`, token);
|
|
59
58
|
config.delete('current_workspace_id');
|
|
60
59
|
}
|
|
61
60
|
if (workspaceId != null) {
|
|
62
61
|
config.set('current_workspace_id', workspaceId);
|
|
63
62
|
}
|
|
64
63
|
};
|
|
65
|
-
/** Store the token for the current
|
|
64
|
+
/** Store the token for the current endpoint, e.g., one just prompted for. */
|
|
66
65
|
export const storeToken = (token, config = getConfigStore()) => {
|
|
67
66
|
const auth = resolveAuth(config);
|
|
68
67
|
assertMutable(auth, 'token', 'log in');
|
|
69
|
-
config.set(`${auth.
|
|
68
|
+
config.set(`${auth.endpoint}.pat`, token);
|
|
70
69
|
};
|
|
71
70
|
/** Remove the stored token and workspace selection. */
|
|
72
71
|
export const logout = (config = getConfigStore()) => {
|
|
73
72
|
const auth = resolveAuth(config);
|
|
74
73
|
assertMutable(auth, 'token', 'log out');
|
|
75
|
-
config.delete(`${auth.
|
|
76
|
-
// Configs written before tokens were stored per
|
|
74
|
+
config.delete(`${auth.endpoint}.pat`);
|
|
75
|
+
// Configs written before tokens were stored per endpoint may still hold an
|
|
77
76
|
// un-namespaced token, so drop that too.
|
|
78
77
|
config.delete('pat');
|
|
79
78
|
config.delete('current_workspace_id');
|
|
80
79
|
};
|
|
81
80
|
/**
|
|
82
|
-
* Store the
|
|
81
|
+
* Store the endpoint to make requests against.
|
|
83
82
|
*
|
|
84
|
-
* The workspace selection belongs to the previous
|
|
83
|
+
* The workspace selection belongs to the previous endpoint, so it is cleared.
|
|
85
84
|
*/
|
|
86
|
-
export const
|
|
87
|
-
assertMutable(resolveAuth(config), '
|
|
88
|
-
|
|
89
|
-
config.delete('current_workspace_id');
|
|
85
|
+
export const selectEndpoint = (endpoint, config = getConfigStore()) => {
|
|
86
|
+
assertMutable(resolveAuth(config), 'endpoint', 'select an endpoint');
|
|
87
|
+
storeEndpoint(endpoint, config);
|
|
90
88
|
};
|
|
91
89
|
/** Store the workspace requests are made against. */
|
|
92
90
|
export const selectWorkspace = (workspaceId, config = getConfigStore()) => {
|
|
@@ -94,22 +92,31 @@ export const selectWorkspace = (workspaceId, config = getConfigStore()) => {
|
|
|
94
92
|
config.set('current_workspace_id', workspaceId);
|
|
95
93
|
};
|
|
96
94
|
/**
|
|
97
|
-
* Point the CLI at a fake Seam Connect
|
|
98
|
-
* token it accepts. Returns the generated
|
|
95
|
+
* Point the CLI at a fake Seam Connect endpoint and store the well-known
|
|
96
|
+
* token it accepts. Returns the generated endpoint URL for reporting.
|
|
99
97
|
*/
|
|
100
|
-
export const
|
|
98
|
+
export const selectFakeEndpoint = ({ urlSeed = randomBytes(5).toString('hex'), config = getConfigStore(), } = {}) => {
|
|
101
99
|
const auth = resolveAuth(config);
|
|
102
|
-
assertMutable(auth, '
|
|
100
|
+
assertMutable(auth, 'endpoint', 'select an endpoint');
|
|
103
101
|
assertMutable(auth, 'token', 'log in');
|
|
104
|
-
const
|
|
102
|
+
const endpoint = `https://${urlSeed}.fakeseamconnect.seam.vc`;
|
|
105
103
|
const token = 'seam_apikey1_token';
|
|
106
|
-
|
|
107
|
-
config.set(`${
|
|
108
|
-
|
|
109
|
-
return { server, token };
|
|
104
|
+
storeEndpoint(endpoint, config);
|
|
105
|
+
config.set(`${endpoint}.pat`, token);
|
|
106
|
+
return { endpoint, token };
|
|
110
107
|
};
|
|
111
|
-
/** Store whether API definitions come from the
|
|
108
|
+
/** Store whether API definitions come from the endpoint instead of npm. */
|
|
112
109
|
export const setUseRemoteApiDefs = (useRemoteApiDefs, config = getConfigStore()) => {
|
|
113
110
|
config.set('use_remote_api_defs', useRemoteApiDefs);
|
|
114
111
|
};
|
|
112
|
+
/**
|
|
113
|
+
* Write the endpoint, dropping what belonged to the previous one: the
|
|
114
|
+
* workspace selection, and any value left under the legacy `server` key that
|
|
115
|
+
* {@link resolveAuth} would otherwise still fall back to.
|
|
116
|
+
*/
|
|
117
|
+
const storeEndpoint = (endpoint, config) => {
|
|
118
|
+
config.set('endpoint', endpoint);
|
|
119
|
+
config.delete('server');
|
|
120
|
+
config.delete('current_workspace_id');
|
|
121
|
+
};
|
|
115
122
|
//# sourceMappingURL=operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/lib/auth/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAoB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAKnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAiB,EACjB,OAAoB,EACpB,MAAc,EACR,EAAE;IACR,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;QAChC,
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/lib/auth/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isApiKey, isPersonalAccessToken, SeamHttp, SeamHttpWithoutWorkspace, } from '@seamapi/http/connect';
|
|
2
2
|
import { resolveAuth } from '../context.js';
|
|
3
3
|
export const validateToken = async (token, workspaceId) => {
|
|
4
|
-
const options = { endpoint: resolveAuth().
|
|
4
|
+
const options = { endpoint: resolveAuth().endpoint };
|
|
5
5
|
if (isPersonalAccessToken(token)) {
|
|
6
6
|
const seam = workspaceId
|
|
7
7
|
? SeamHttp.fromPersonalAccessToken(token, workspaceId, options)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-token.js","sourceRoot":"","sources":["../../src/lib/auth/validate-token.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,QAAQ,EACR,wBAAwB,GACzB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAa,EAAE,WAAoB,EAAE,EAAE;IACzE,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"validate-token.js","sourceRoot":"","sources":["../../src/lib/auth/validate-token.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,QAAQ,EACR,wBAAwB,GACzB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAa,EAAE,WAAoB,EAAE,EAAE;IACzE,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAA;IAEpD,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,WAAW;YACtB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC;YAC/D,CAAC,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QAC5B,OAAM;IACR,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAChD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QAC5B,OAAM;IACR,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;AAC/E,CAAC,CAAA"}
|
package/lib/blueprint/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Blueprint } from '@seamapi/blueprint';
|
|
|
2
2
|
export type ApiBlueprint = Blueprint;
|
|
3
3
|
export interface GetApiBlueprintOptions {
|
|
4
4
|
/**
|
|
5
|
-
* Build from the OpenAPI document the configured
|
|
5
|
+
* Build from the OpenAPI document the configured endpoint is currently
|
|
6
6
|
* running, instead of the published npm types.
|
|
7
7
|
*/
|
|
8
8
|
useRemoteDefinitions?: boolean;
|
package/lib/blueprint/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getBlueprint } from './source-npm.js';
|
|
2
2
|
import { createRemoteBlueprint } from './source-remote.js';
|
|
3
3
|
export const getApiBlueprint = async ({ useRemoteDefinitions = false, update = false, } = {}) => {
|
|
4
|
-
// Remote definitions describe whatever the
|
|
5
|
-
// build them directly from
|
|
4
|
+
// Remote definitions describe whatever the endpoint is currently running, so
|
|
5
|
+
// build them directly from that endpoint's OpenAPI document.
|
|
6
6
|
if (useRemoteDefinitions)
|
|
7
7
|
return await createRemoteBlueprint();
|
|
8
8
|
return await getBlueprint({ update });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/blueprint/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAc1D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,oBAAoB,GAAG,KAAK,EAC5B,MAAM,GAAG,KAAK,MACY,EAAE,EAAyB,EAAE;IACvD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/blueprint/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAc1D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,oBAAoB,GAAG,KAAK,EAC5B,MAAM,GAAG,KAAK,MACY,EAAE,EAAyB,EAAE;IACvD,6EAA6E;IAC7E,6DAA6D;IAC7D,IAAI,oBAAoB;QAAE,OAAO,MAAM,qBAAqB,EAAE,CAAA;IAE9D,OAAO,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AACvC,CAAC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Blueprint } from '@seamapi/blueprint';
|
|
2
2
|
/**
|
|
3
|
-
* Build a blueprint from the OpenAPI document the current
|
|
4
|
-
* describing exactly what that
|
|
3
|
+
* Build a blueprint from the OpenAPI document the current endpoint is running,
|
|
4
|
+
* describing exactly what that endpoint accepts rather than what is published.
|
|
5
5
|
*/
|
|
6
6
|
export declare const createRemoteBlueprint: () => Promise<Blueprint>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { resolveAuth } from '../context.js';
|
|
2
2
|
/**
|
|
3
|
-
* Build a blueprint from the OpenAPI document the current
|
|
4
|
-
* describing exactly what that
|
|
3
|
+
* Build a blueprint from the OpenAPI document the current endpoint is running,
|
|
4
|
+
* describing exactly what that endpoint accepts rather than what is published.
|
|
5
5
|
*/
|
|
6
6
|
export const createRemoteBlueprint = async () => {
|
|
7
7
|
const [{ createBlueprint }, { getOpenapiSchema }] = await Promise.all([
|
|
8
8
|
import('@seamapi/blueprint'),
|
|
9
9
|
import('@seamapi/http/connect'),
|
|
10
10
|
]);
|
|
11
|
-
const openapi = await getOpenapiSchema(resolveAuth().
|
|
11
|
+
const openapi = await getOpenapiSchema(resolveAuth().endpoint);
|
|
12
12
|
return await createBlueprint({ openapi }, { omitUndocumented: true });
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=source-remote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-remote.js","sourceRoot":"","sources":["../../src/lib/blueprint/source-remote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAAwB,EAAE;IAClE,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,MAAM,CAAC,oBAAoB,CAAC;QAC5B,MAAM,CAAC,uBAAuB,CAAC;KAChC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"source-remote.js","sourceRoot":"","sources":["../../src/lib/blueprint/source-remote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAAwB,EAAE;IAClE,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,MAAM,CAAC,oBAAoB,CAAC;QAC5B,MAAM,CAAC,uBAAuB,CAAC;KAChC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;IAE9D,OAAO,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,CAAC,CAAA"}
|
|
@@ -9,16 +9,16 @@ export const loginCommand = {
|
|
|
9
9
|
title: 'Log in to Seam.',
|
|
10
10
|
description: 'Prompts for a personal access token unless one is passed with --token.',
|
|
11
11
|
flags: [
|
|
12
|
-
stringFlag('
|
|
12
|
+
stringFlag('endpoint', 'Seam API endpoint to log in to.'),
|
|
13
13
|
stringFlag('token', 'Personal access token to log in with.'),
|
|
14
14
|
stringFlag('workspace-id', 'Workspace to select after logging in.'),
|
|
15
15
|
],
|
|
16
16
|
},
|
|
17
17
|
requiresAuth: false,
|
|
18
18
|
execute: async ({ args }, ctx) => {
|
|
19
|
-
if (args['token'] || args['workspace_id'] || args['
|
|
19
|
+
if (args['token'] || args['workspace_id'] || args['endpoint']) {
|
|
20
20
|
await login({
|
|
21
|
-
|
|
21
|
+
endpoint: args['endpoint'] ? args['endpoint'] : undefined,
|
|
22
22
|
token: args['token'] ? String(args['token']).trim() : undefined,
|
|
23
23
|
workspaceId: args['workspace_id'] ? args['workspace_id'] : undefined,
|
|
24
24
|
}, ctx.config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/commands/local/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,wEAAwE;QAC1E,KAAK,EAAE;YACL,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/commands/local/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,wEAAwE;QAC1E,KAAK,EAAE;YACL,UAAU,CAAC,UAAU,EAAE,iCAAiC,CAAC;YACzD,UAAU,CAAC,OAAO,EAAE,uCAAuC,CAAC;YAC5D,UAAU,CAAC,cAAc,EAAE,uCAAuC,CAAC;SACpE;KACF;IACD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,MAAM,KAAK,CACT;gBACE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBACzD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC/D,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;aACrE,EACD,GAAG,CAAC,MAAM,CACX,CAAA;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QACzB,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,GAAG,CAAC,aAAa,KAAK,iBAAiB,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAmB,CAC3B,+CAA+C,CAChD,CAAA;QACH,CAAC;QACD,MAAM,gBAAgB,EAAE,CAAA;QACxB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { Command } from '../../commands/registry.js';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const selectEndpointCommand: Command;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { assertMutable, selectEndpoint } from '../../auth/operations.js';
|
|
2
|
+
import { stringFlag } from '../../commands/spec.js';
|
|
3
|
+
import { NonInteractiveError } from '../../errors.js';
|
|
4
|
+
import { interactForEndpointSelection } from '../../interactions/index.js';
|
|
5
|
+
export const selectEndpointCommand = {
|
|
6
|
+
definition: {
|
|
7
|
+
path: ['select', 'endpoint'],
|
|
8
|
+
kind: 'cli',
|
|
9
|
+
title: 'Select the Seam API endpoint.',
|
|
10
|
+
description: '',
|
|
11
|
+
flags: [stringFlag('endpoint', 'Seam API endpoint to select.')],
|
|
12
|
+
},
|
|
13
|
+
requiresAuth: false,
|
|
14
|
+
execute: async ({ args }, ctx) => {
|
|
15
|
+
assertMutable(ctx.auth, 'endpoint', 'select an endpoint');
|
|
16
|
+
if (args['endpoint']) {
|
|
17
|
+
selectEndpoint(args['endpoint'], ctx.config);
|
|
18
|
+
return { kind: 'done' };
|
|
19
|
+
}
|
|
20
|
+
if (ctx.interactivity === 'non-interactive') {
|
|
21
|
+
throw new NonInteractiveError('Missing required parameter for select endpoint: --endpoint');
|
|
22
|
+
}
|
|
23
|
+
await interactForEndpointSelection();
|
|
24
|
+
return { kind: 'done' };
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=select-endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-endpoint.js","sourceRoot":"","sources":["../../../src/lib/commands/local/select-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAY;IAC5C,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC5B,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;KAChE;IACD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/B,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAA;QACzD,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QACzB,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,KAAK,iBAAiB,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAmB,CAC3B,4DAA4D,CAC7D,CAAA;QACH,CAAC;QACD,MAAM,4BAA4B,EAAE,CAAA;QACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA"}
|
package/lib/commands/registry.js
CHANGED
|
@@ -2,12 +2,11 @@ import { toParameterName } from '../args/parse.js';
|
|
|
2
2
|
import { executeApiCommand } from './api-command.js';
|
|
3
3
|
import { createCompletionCommands } from './local/completion.js';
|
|
4
4
|
import { configRevealLocationCommand } from './local/config-reveal-location.js';
|
|
5
|
-
import { configSetFakeServerCommand } from './local/config-set-fake-server.js';
|
|
6
5
|
import { configUseRemoteApiDefsCommand } from './local/config-use-remote-api-defs.js';
|
|
7
6
|
import { healthCommand } from './local/health.js';
|
|
8
7
|
import { loginCommand } from './local/login.js';
|
|
9
8
|
import { logoutCommand } from './local/logout.js';
|
|
10
|
-
import {
|
|
9
|
+
import { selectEndpointCommand } from './local/select-endpoint.js';
|
|
11
10
|
import { selectWorkspaceCommand } from './local/select-workspace.js';
|
|
12
11
|
import { wizardCommand } from './local/wizard.js';
|
|
13
12
|
import { getCommandSpec, isSamePath, } from './spec.js';
|
|
@@ -20,12 +19,11 @@ const completionCommands = createCompletionCommands((blueprint) => buildRegistry
|
|
|
20
19
|
export const localCommands = [
|
|
21
20
|
...completionCommands,
|
|
22
21
|
configRevealLocationCommand,
|
|
23
|
-
configSetFakeServerCommand,
|
|
24
22
|
configUseRemoteApiDefsCommand,
|
|
25
23
|
healthCommand,
|
|
26
24
|
loginCommand,
|
|
27
25
|
logoutCommand,
|
|
28
|
-
|
|
26
|
+
selectEndpointCommand,
|
|
29
27
|
selectWorkspaceCommand,
|
|
30
28
|
wizardCommand,
|
|
31
29
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/commands/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAInD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/commands/registry.ts"],"names":[],"mappings":"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"}
|
package/lib/context.d.ts
CHANGED
|
@@ -3,19 +3,19 @@ import type { ApiBlueprint } from './blueprint/index.js';
|
|
|
3
3
|
import { type ConfigStore } from './config/index.js';
|
|
4
4
|
import type { SeamApi } from './http/api.js';
|
|
5
5
|
import type { Output } from './output/output.js';
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const defaultEndpoint = "https://connect.getseam.com";
|
|
7
7
|
/** Where a resolved value came from, e.g., to refuse writes the env shadows. */
|
|
8
8
|
export type ValueSource = 'env' | 'config' | 'default';
|
|
9
9
|
/**
|
|
10
|
-
* The
|
|
10
|
+
* The endpoint, token, and workspace requests are made with.
|
|
11
11
|
*
|
|
12
12
|
* Resolved in one place so the precedence rule exists once: an environment
|
|
13
|
-
* variable wins over the stored value, and the
|
|
13
|
+
* variable wins over the stored value, and the endpoint falls back to Seam.
|
|
14
14
|
* The source tags say where each value came from.
|
|
15
15
|
*/
|
|
16
16
|
export interface AuthContext {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
endpoint: string;
|
|
18
|
+
endpointSource: ValueSource;
|
|
19
19
|
token: string | null;
|
|
20
20
|
tokenSource: Exclude<ValueSource, 'default'> | null;
|
|
21
21
|
workspaceId: string | null;
|
package/lib/context.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { getConfigStore } from './config/index.js';
|
|
2
2
|
import { getEndpointFromEnv, getTokenFromEnv, getWorkspaceIdFromEnv, } from './env.js';
|
|
3
|
-
export const
|
|
3
|
+
export const defaultEndpoint = 'https://connect.getseam.com';
|
|
4
4
|
export const resolveAuth = (config = getConfigStore()) => {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const envEndpoint = getEndpointFromEnv();
|
|
6
|
+
// Configs written before the endpoint was called one still hold it under
|
|
7
|
+
// `server`, so fall back to that key rather than silently resetting them.
|
|
8
|
+
const storedEndpoint = config.get('endpoint') ?? config.get('server');
|
|
9
|
+
const endpoint = envEndpoint ?? (typeof storedEndpoint === 'string' ? storedEndpoint : null);
|
|
8
10
|
const envToken = getTokenFromEnv();
|
|
9
|
-
const storedToken = readString(config.get(`${
|
|
11
|
+
const storedToken = readString(config.get(`${endpoint ?? defaultEndpoint}.pat`));
|
|
10
12
|
const envWorkspaceId = getWorkspaceIdFromEnv();
|
|
11
13
|
const storedWorkspaceId = readString(config.get('current_workspace_id'));
|
|
12
14
|
return {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
endpoint: endpoint ?? defaultEndpoint,
|
|
16
|
+
endpointSource: envEndpoint != null ? 'env' : endpoint != null ? 'config' : 'default',
|
|
15
17
|
token: envToken ?? storedToken,
|
|
16
18
|
tokenSource: envToken != null ? 'env' : storedToken != null ? 'config' : null,
|
|
17
19
|
workspaceId: envWorkspaceId ?? storedWorkspaceId,
|
package/lib/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/lib/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAA;AAIjB,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/lib/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAA;AAIjB,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAA;AAqB5D,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAsB,cAAc,EAAE,EACzB,EAAE;IACf,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAA;IACxC,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACrE,MAAM,QAAQ,GACZ,WAAW,IAAI,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAE7E,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,UAAU,CAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,eAAe,MAAM,CAAC,CACjD,CAAA;IAED,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAA;IAC9C,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAExE,OAAO;QACL,QAAQ,EAAE,QAAQ,IAAI,eAAe;QACrC,cAAc,EACZ,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACvE,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,EAAE,cAAc,IAAI,iBAAiB;QAChD,iBAAiB,EACf,cAAc,IAAI,IAAI;YACpB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,iBAAiB,IAAI,IAAI;gBACzB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,IAAI;KACb,CAAA;AACH,CAAC,CAAA;AAgBD,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"}
|
package/lib/env.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Credentials and the
|
|
2
|
+
* Credentials and the endpoint may be given in the environment.
|
|
3
3
|
*
|
|
4
4
|
* Each variable overrides the corresponding stored value for as long as it
|
|
5
5
|
* is set, so any of them may be used per command or per shell. Commands that
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
export declare const tokenEnvVar = "SEAM_CLI_TOKEN";
|
|
10
10
|
/** Overrides the workspace stored by `seam select workspace`. */
|
|
11
11
|
export declare const workspaceIdEnvVar = "SEAM_CLI_WORKSPACE_ID";
|
|
12
|
-
/** Overrides the
|
|
12
|
+
/** Overrides the endpoint stored by `seam select endpoint`. */
|
|
13
13
|
export declare const endpointEnvVar = "SEAM_CLI_ENDPOINT";
|
|
14
14
|
export declare const getTokenFromEnv: () => string | null;
|
|
15
15
|
export declare const getWorkspaceIdFromEnv: () => string | null;
|
package/lib/env.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Credentials and the
|
|
2
|
+
* Credentials and the endpoint may be given in the environment.
|
|
3
3
|
*
|
|
4
4
|
* Each variable overrides the corresponding stored value for as long as it
|
|
5
5
|
* is set, so any of them may be used per command or per shell. Commands that
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
export const tokenEnvVar = 'SEAM_CLI_TOKEN';
|
|
10
10
|
/** Overrides the workspace stored by `seam select workspace`. */
|
|
11
11
|
export const workspaceIdEnvVar = 'SEAM_CLI_WORKSPACE_ID';
|
|
12
|
-
/** Overrides the
|
|
12
|
+
/** Overrides the endpoint stored by `seam select endpoint`. */
|
|
13
13
|
export const endpointEnvVar = 'SEAM_CLI_ENDPOINT';
|
|
14
14
|
export const getTokenFromEnv = () => readEnvVar(tokenEnvVar);
|
|
15
15
|
export const getWorkspaceIdFromEnv = () => readEnvVar(workspaceIdEnvVar);
|
package/lib/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/lib/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAE3C,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAA;AAExD
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/lib/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAE3C,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAA;AAExD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAA;AAMjD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAkB,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAkB,EAAE,CACvD,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAE/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAkB,EAAE,CACpD,UAAU,CAAC,cAAc,CAAC,CAAA;AAE5B,gFAAgF;AAChF,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAG,qBAAqB,CAAA;CACtC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAAc,EACd,QAAuB,EACvB,MAAc,EACR,EAAE;IACR,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAM;IAE5B,MAAM,IAAI,mBAAmB,CAC3B,UAAU,MAAM,UAAU,MAAM,qDAAqD,MAAM,OAAO,MAAM,GAAG,CAC5G,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAY,EAAE,CAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAA;AAE3C,MAAM,UAAU,GAAG,CAAC,MAAiB,EAAiB,EAAE;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAEjC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAE9B,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"}
|