@doist/twist-cli 2.41.1 → 2.42.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/CHANGELOG.md +12 -0
- package/dist/commands/auth/login.d.ts.map +1 -1
- package/dist/commands/auth/login.js +2 -2
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/lib/auth-provider.d.ts +19 -0
- package/dist/lib/auth-provider.d.ts.map +1 -1
- package/dist/lib/auth-provider.js +84 -144
- package/dist/lib/auth-provider.js.map +1 -1
- package/package.json +7 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [2.42.0](https://github.com/Doist/twist-cli/compare/v2.41.2...v2.42.0) (2026-05-21)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- **auth:** adopt cli-core createDcrProvider for OAuth ([#243](https://github.com/Doist/twist-cli/issues/243)) ([670d6df](https://github.com/Doist/twist-cli/commit/670d6dfac79c0e9059ff62a5a8defb4a7a2c00c7))
|
|
6
|
+
|
|
7
|
+
## [2.41.2](https://github.com/Doist/twist-cli/compare/v2.41.1...v2.41.2) (2026-05-20)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- **deps:** update dependency @doist/twist-sdk to v2.7.0 ([#240](https://github.com/Doist/twist-cli/issues/240)) ([1ae4864](https://github.com/Doist/twist-cli/commit/1ae4864837c26859402d442a776793d4ff81be1b))
|
|
12
|
+
|
|
1
13
|
## [2.41.1](https://github.com/Doist/twist-cli/compare/v2.41.0...v2.41.1) (2026-05-18)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,4BAA4B,CAAA;AAKnC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CA0BxF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { attachLoginCommand } from '@doist/cli-core/auth';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { renderError, renderSuccess } from '../../lib/auth-pages.js';
|
|
4
|
-
import { createTwistAuthProvider,
|
|
4
|
+
import { createTwistAuthProvider, getScopes, } from '../../lib/auth-provider.js';
|
|
5
5
|
import { logTokenStorageResult } from './helpers.js';
|
|
6
6
|
const PREFERRED_CALLBACK_PORT = 8766;
|
|
7
7
|
export function attachTwistLoginCommand(parent, store) {
|
|
@@ -10,7 +10,7 @@ export function attachTwistLoginCommand(parent, store) {
|
|
|
10
10
|
provider,
|
|
11
11
|
store,
|
|
12
12
|
preferredPort: PREFERRED_CALLBACK_PORT,
|
|
13
|
-
resolveScopes: ({ readOnly }) => (readOnly
|
|
13
|
+
resolveScopes: ({ readOnly }) => getScopes(readOnly),
|
|
14
14
|
renderSuccess,
|
|
15
15
|
renderError,
|
|
16
16
|
onSuccess({ view, account }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EACH,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EACH,uBAAuB,EACvB,SAAS,GAEZ,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,uBAAuB,GAAG,IAAI,CAAA;AAEpC,MAAM,UAAU,uBAAuB,CAAC,MAAe,EAAE,KAAsB;IAC3E,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAA;IAE1C,OAAO,kBAAkB,CAAC,MAAM,EAAE;QAC9B,QAAQ;QACR,KAAK;QACL,aAAa,EAAE,uBAAuB;QACtC,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD,aAAa;QACb,WAAW;QACX,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YACvB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAA;YAChD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kCAAkC,CAAC,CAAA;gBACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC3D,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAA;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACT,qBAAqB,CACjB,MAAM,EACN,wDAAwD,EACxD,eAAe,CAClB,CAAA;YACL,CAAC;QACL,CAAC;KACJ,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAA;AAC9D,CAAC"}
|
|
@@ -5,6 +5,13 @@ export declare const TOKEN_URL = "https://twist.com/oauth/access_token";
|
|
|
5
5
|
export declare const REGISTRATION_URL = "https://twist.com/oauth/register";
|
|
6
6
|
export declare const READ_WRITE_SCOPES: string[];
|
|
7
7
|
export declare const READ_ONLY_SCOPES: string[];
|
|
8
|
+
/**
|
|
9
|
+
* The scope set a login is granted, as a pure function of `--read-only`. Single
|
|
10
|
+
* source of truth shared by `attachTwistLoginCommand`'s `resolveScopes` (what we
|
|
11
|
+
* request at authorize) and the provider's `validate` (what we record on the
|
|
12
|
+
* account), so the two can't drift.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getScopes(readOnly: boolean): string[];
|
|
8
15
|
/**
|
|
9
16
|
* Narrow account shape: only fields that round-trip through the local token
|
|
10
17
|
* store. `id` is the stringified numeric Twist user id (so cli-core's
|
|
@@ -19,6 +26,18 @@ export type TwistAccount = AuthAccount & {
|
|
|
19
26
|
authScope: string;
|
|
20
27
|
};
|
|
21
28
|
export type TwistTokenStore = KeyringTokenStore<TwistAccount>;
|
|
29
|
+
/**
|
|
30
|
+
* Twist's OAuth flow uses RFC 7591 Dynamic Client Registration: each login
|
|
31
|
+
* mints a fresh `client_id` / `client_secret`, then runs the standard PKCE
|
|
32
|
+
* authorize + token exchange (HTTP Basic auth on the token endpoint). cli-core's
|
|
33
|
+
* `createDcrProvider` drives all of that via `oauth4webapi`; the only
|
|
34
|
+
* twist-specific piece is `validate`, which probes `getSessionUser` and records
|
|
35
|
+
* the auth mode/scope the login was granted.
|
|
36
|
+
*
|
|
37
|
+
* `authMode` / `authScope` are derived from `handshake.readOnly` (folded in by
|
|
38
|
+
* `runOAuthFlow`) rather than threaded through `authorize`, because the scope
|
|
39
|
+
* set is itself a pure function of `readOnly` (see `resolveScopes` in login.ts).
|
|
40
|
+
*/
|
|
22
41
|
export declare function createTwistAuthProvider(): AuthProvider<TwistAccount>;
|
|
23
42
|
/**
|
|
24
43
|
* Accepts `42`, `id:42`, and case-insensitive labels — `parseRef` normalises
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EAIjB,KAAK,iBAAiB,EAEzB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,KAAK,QAAQ,EAA0C,MAAM,aAAa,CAAA;AAOnF,eAAO,MAAM,iBAAiB,sCAAsC,CAAA;AACpE,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,qCAAqC,CAAA;AAKlE,eAAO,MAAM,iBAAiB,UAkB7B,CAAA;AAED,eAAO,MAAM,gBAAgB,UAW5B,CAAA;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAErD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;AAE7D;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,IAAI,YAAY,CAAC,YAAY,CAAC,CAwCpE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAKjF;AA8ED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAK3D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,CAAC,CASvB;AA2BD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CA6CvD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,KAAK,GAAG,cAAc,GAAG,aAAa,CAAC,CAQ5F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createKeyringTokenStore, createSecureStore,
|
|
1
|
+
import { createDcrProvider, createKeyringTokenStore, createSecureStore, } from '@doist/cli-core/auth';
|
|
2
2
|
import { createWrappedTwistClient } from './api.js';
|
|
3
3
|
import { LEGACY_KEYRING_ACCOUNT, SECURE_STORE_SERVICE } from './auth-constants.js';
|
|
4
4
|
import { getConfig, getConfigPath, updateConfig } from './config.js';
|
|
@@ -43,140 +43,63 @@ export const READ_ONLY_SCOPES = [
|
|
|
43
43
|
'notifications:read',
|
|
44
44
|
];
|
|
45
45
|
const AUTH_HINTS = ['Try again: tw auth login', 'Or set TWIST_API_TOKEN environment variable'];
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
let response;
|
|
55
|
-
try {
|
|
56
|
-
response = await fetch(REGISTRATION_URL, {
|
|
57
|
-
method: 'POST',
|
|
58
|
-
headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
|
|
59
|
-
body: JSON.stringify({
|
|
60
|
-
client_name: 'Twist CLI',
|
|
61
|
-
client_uri: 'https://github.com/doist/twist-cli',
|
|
62
|
-
redirect_uris: [redirectUri],
|
|
63
|
-
grant_types: ['authorization_code'],
|
|
64
|
-
response_types: ['code'],
|
|
65
|
-
token_endpoint_auth_method: 'client_secret_basic',
|
|
66
|
-
application_type: 'native',
|
|
67
|
-
logo_uri: LOGO_URI,
|
|
68
|
-
}),
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
if (error instanceof CliError)
|
|
73
|
-
throw error;
|
|
74
|
-
throw authFailed('Failed to register OAuth client', error);
|
|
75
|
-
}
|
|
76
|
-
if (!response.ok) {
|
|
77
|
-
const errorText = await response.text().catch(() => '');
|
|
78
|
-
throw new CliError('AUTH_FAILED', `Client registration failed: ${response.status} ${response.statusText} - ${errorText}`, AUTH_HINTS);
|
|
79
|
-
}
|
|
80
|
-
let result;
|
|
81
|
-
try {
|
|
82
|
-
result = (await response.json());
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
throw authFailed('Invalid client registration response', error);
|
|
86
|
-
}
|
|
87
|
-
if (!result.client_id || !result.client_secret) {
|
|
88
|
-
throw new CliError('AUTH_FAILED', 'Invalid client registration response: missing client_id or client_secret', AUTH_HINTS);
|
|
89
|
-
}
|
|
90
|
-
return { clientId: result.client_id, clientSecret: result.client_secret };
|
|
46
|
+
/**
|
|
47
|
+
* The scope set a login is granted, as a pure function of `--read-only`. Single
|
|
48
|
+
* source of truth shared by `attachTwistLoginCommand`'s `resolveScopes` (what we
|
|
49
|
+
* request at authorize) and the provider's `validate` (what we record on the
|
|
50
|
+
* account), so the two can't drift.
|
|
51
|
+
*/
|
|
52
|
+
export function getScopes(readOnly) {
|
|
53
|
+
return readOnly ? READ_ONLY_SCOPES : READ_WRITE_SCOPES;
|
|
91
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Twist's OAuth flow uses RFC 7591 Dynamic Client Registration: each login
|
|
57
|
+
* mints a fresh `client_id` / `client_secret`, then runs the standard PKCE
|
|
58
|
+
* authorize + token exchange (HTTP Basic auth on the token endpoint). cli-core's
|
|
59
|
+
* `createDcrProvider` drives all of that via `oauth4webapi`; the only
|
|
60
|
+
* twist-specific piece is `validate`, which probes `getSessionUser` and records
|
|
61
|
+
* the auth mode/scope the login was granted.
|
|
62
|
+
*
|
|
63
|
+
* `authMode` / `authScope` are derived from `handshake.readOnly` (folded in by
|
|
64
|
+
* `runOAuthFlow`) rather than threaded through `authorize`, because the scope
|
|
65
|
+
* set is itself a pure function of `readOnly` (see `resolveScopes` in login.ts).
|
|
66
|
+
*/
|
|
92
67
|
export function createTwistAuthProvider() {
|
|
93
|
-
return {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
68
|
+
return createDcrProvider({
|
|
69
|
+
registrationUrl: REGISTRATION_URL,
|
|
70
|
+
authorizeUrl: AUTHORIZATION_URL,
|
|
71
|
+
tokenUrl: TOKEN_URL,
|
|
72
|
+
clientMetadata: {
|
|
73
|
+
clientName: 'Twist CLI',
|
|
74
|
+
clientUri: 'https://github.com/doist/twist-cli',
|
|
75
|
+
logoUri: LOGO_URI,
|
|
76
|
+
applicationType: 'native',
|
|
77
|
+
// Twist client_ids contain `_` (e.g. `twd_…`). oauth4webapi's
|
|
78
|
+
// `client_secret_basic` form-url-encodes the Basic credential per
|
|
79
|
+
// RFC 6749 §2.3.1 (`_` → `%5F`), and Twist's token endpoint doesn't
|
|
80
|
+
// url-decode it, so the lookup fails with "client_id not found".
|
|
81
|
+
// `client_secret_post` sends the credential in the body via
|
|
82
|
+
// URLSearchParams, which preserves `_`, sidestepping the mismatch.
|
|
83
|
+
tokenEndpointAuthMethod: 'client_secret_post',
|
|
98
84
|
},
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
redirect_uri: redirectUri,
|
|
109
|
-
scope: authScope,
|
|
110
|
-
state,
|
|
111
|
-
code_challenge: codeChallenge,
|
|
112
|
-
code_challenge_method: 'S256',
|
|
113
|
-
});
|
|
114
|
-
const nextHandshake = {
|
|
115
|
-
...hs,
|
|
116
|
-
codeVerifier,
|
|
117
|
-
authMode,
|
|
118
|
-
authScope,
|
|
119
|
-
};
|
|
120
|
-
return {
|
|
121
|
-
authorizeUrl: `${AUTHORIZATION_URL}?${params.toString()}`,
|
|
122
|
-
handshake: nextHandshake,
|
|
123
|
-
};
|
|
124
|
-
},
|
|
125
|
-
async exchangeCode({ code, redirectUri, handshake }) {
|
|
126
|
-
const hs = asHandshake(handshake);
|
|
127
|
-
if (!hs.codeVerifier) {
|
|
128
|
-
throw new CliError('AUTH_FAILED', 'Missing PKCE code verifier from authorize step', AUTH_HINTS);
|
|
129
|
-
}
|
|
130
|
-
const body = new URLSearchParams({
|
|
131
|
-
grant_type: 'authorization_code',
|
|
132
|
-
code,
|
|
133
|
-
redirect_uri: redirectUri,
|
|
134
|
-
code_verifier: hs.codeVerifier,
|
|
135
|
-
});
|
|
136
|
-
const credentials = btoa(`${hs.clientId}:${hs.clientSecret}`);
|
|
137
|
-
let response;
|
|
138
|
-
try {
|
|
139
|
-
response = await fetch(TOKEN_URL, {
|
|
140
|
-
method: 'POST',
|
|
141
|
-
headers: {
|
|
142
|
-
'Content-Type': 'application/x-www-form-urlencoded',
|
|
143
|
-
Accept: 'application/json',
|
|
144
|
-
Authorization: `Basic ${credentials}`,
|
|
145
|
-
},
|
|
146
|
-
body: body.toString(),
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
if (error instanceof CliError)
|
|
151
|
-
throw error;
|
|
152
|
-
throw authFailed('Failed to exchange code for token', error);
|
|
85
|
+
errorHints: AUTH_HINTS,
|
|
86
|
+
async validate({ token, handshake }) {
|
|
87
|
+
// `runOAuthFlow` folds a boolean `readOnly` into the handshake.
|
|
88
|
+
// Fail closed on a missing/malformed value rather than letting
|
|
89
|
+
// `Boolean(undefined)` silently grant read-write (which would relax
|
|
90
|
+
// the local `ensureWriteAllowed` guard).
|
|
91
|
+
const readOnly = handshake.readOnly;
|
|
92
|
+
if (typeof readOnly !== 'boolean') {
|
|
93
|
+
throw new CliError('AUTH_FAILED', 'Internal: auth handshake missing the readOnly flag.', AUTH_HINTS);
|
|
153
94
|
}
|
|
154
|
-
if (!response.ok) {
|
|
155
|
-
const errorText = await response.text().catch(() => '');
|
|
156
|
-
throw new CliError('AUTH_FAILED', `Token exchange failed: ${response.status} ${response.statusText} - ${errorText}`, AUTH_HINTS);
|
|
157
|
-
}
|
|
158
|
-
let data;
|
|
159
|
-
try {
|
|
160
|
-
data = (await response.json());
|
|
161
|
-
}
|
|
162
|
-
catch (error) {
|
|
163
|
-
throw authFailed('Invalid token exchange response', error);
|
|
164
|
-
}
|
|
165
|
-
if (data.error) {
|
|
166
|
-
throw new CliError('AUTH_FAILED', `OAuth error: ${data.error} - ${data.error_description ?? 'Unknown error'}`, AUTH_HINTS);
|
|
167
|
-
}
|
|
168
|
-
if (!data.access_token) {
|
|
169
|
-
throw new CliError('AUTH_FAILED', 'No access token received from OAuth server', AUTH_HINTS);
|
|
170
|
-
}
|
|
171
|
-
return { accessToken: data.access_token };
|
|
172
|
-
},
|
|
173
|
-
async validateToken({ token, handshake }) {
|
|
174
|
-
const hs = asHandshake(handshake);
|
|
175
95
|
const client = createWrappedTwistClient(token);
|
|
176
96
|
const user = await client.users.getSessionUser();
|
|
177
|
-
return toTwistAccount(user, {
|
|
97
|
+
return toTwistAccount(user, {
|
|
98
|
+
authMode: readOnly ? 'read-only' : 'read-write',
|
|
99
|
+
authScope: getScopes(readOnly).join(' '),
|
|
100
|
+
});
|
|
178
101
|
},
|
|
179
|
-
};
|
|
102
|
+
});
|
|
180
103
|
}
|
|
181
104
|
/**
|
|
182
105
|
* Accepts `42`, `id:42`, and case-insensitive labels — `parseRef` normalises
|
|
@@ -287,6 +210,28 @@ export async function findAccountInStore(store, ref) {
|
|
|
287
210
|
}
|
|
288
211
|
return match.account;
|
|
289
212
|
}
|
|
213
|
+
/** Synthetic account for an env-token session (no stored identity). */
|
|
214
|
+
const ENV_TOKEN_ACCOUNT = { id: '', label: '', authMode: 'unknown', authScope: '' };
|
|
215
|
+
/**
|
|
216
|
+
* Resolve the env-token / legacy-snapshot override that takes precedence over
|
|
217
|
+
* the v2 keyring store, or `null` to defer to it. Shared by the store's
|
|
218
|
+
* `active()` and `activeBundle()` so the two reads can't diverge.
|
|
219
|
+
*/
|
|
220
|
+
async function resolveOverrideSnapshot(ref) {
|
|
221
|
+
if (ref === undefined) {
|
|
222
|
+
const envToken = process.env[TOKEN_ENV_VAR];
|
|
223
|
+
if (envToken)
|
|
224
|
+
return { token: envToken, account: ENV_TOKEN_ACCOUNT };
|
|
225
|
+
}
|
|
226
|
+
const result = await ensureMigrated();
|
|
227
|
+
if (result === null || !migrationIsConclusive(result)) {
|
|
228
|
+
const legacy = await readLegacyTokenSnapshot();
|
|
229
|
+
if (legacy && (ref === undefined || matchTwistAccount(legacy.account, ref))) {
|
|
230
|
+
return legacy;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
290
235
|
/**
|
|
291
236
|
* `TWIST_API_TOKEN` short-circuits `active()` only when no explicit ref is
|
|
292
237
|
* supplied — cli-core's `KeyringTokenStore` doesn't know about the env var,
|
|
@@ -314,23 +259,18 @@ export function createTwistTokenStore() {
|
|
|
314
259
|
}
|
|
315
260
|
return Object.assign(Object.create(inner), {
|
|
316
261
|
async active(ref) {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
if (result === null || !migrationIsConclusive(result)) {
|
|
328
|
-
const legacy = await readLegacyTokenSnapshot();
|
|
329
|
-
if (legacy && (ref === undefined || matchTwistAccount(legacy.account, ref))) {
|
|
330
|
-
return legacy;
|
|
331
|
-
}
|
|
262
|
+
return (await resolveOverrideSnapshot(ref)) ?? inner.active(ref);
|
|
263
|
+
},
|
|
264
|
+
// Mirror `active()`: cli-core's auth commands read the live credential
|
|
265
|
+
// through `activeBundle()` (it carries the refresh slot too), so the
|
|
266
|
+
// env-token + legacy fallbacks must apply here as well or `tw auth
|
|
267
|
+
// status` would report no token for those users.
|
|
268
|
+
async activeBundle(ref) {
|
|
269
|
+
const override = await resolveOverrideSnapshot(ref);
|
|
270
|
+
if (override) {
|
|
271
|
+
return { account: override.account, bundle: { accessToken: override.token } };
|
|
332
272
|
}
|
|
333
|
-
return inner.
|
|
273
|
+
return inner.activeBundle(ref);
|
|
334
274
|
},
|
|
335
275
|
async set(account, token) {
|
|
336
276
|
await maybeDischargeLegacy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/twist-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.42.0",
|
|
4
4
|
"description": "TypeScript CLI for Twist",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -50,24 +50,25 @@
|
|
|
50
50
|
"CHANGELOG.md"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@doist/cli-core": "0.
|
|
54
|
-
"@doist/twist-sdk": "2.
|
|
53
|
+
"@doist/cli-core": "0.20.0",
|
|
54
|
+
"@doist/twist-sdk": "2.7.0",
|
|
55
55
|
"@pnpm/tabtab": "0.5.4",
|
|
56
56
|
"chalk": "5.6.2",
|
|
57
57
|
"commander": "14.0.3",
|
|
58
58
|
"marked": "18.0.3",
|
|
59
59
|
"marked-terminal-renderer": "2.2.0",
|
|
60
|
+
"oauth4webapi": "3.8.6",
|
|
60
61
|
"open": "11.0.0"
|
|
61
62
|
},
|
|
62
63
|
"devDependencies": {
|
|
63
64
|
"@semantic-release/changelog": "6.0.3",
|
|
64
65
|
"@semantic-release/exec": "7.1.0",
|
|
65
66
|
"@semantic-release/git": "10.0.1",
|
|
66
|
-
"@types/node": "25.
|
|
67
|
+
"@types/node": "25.8.0",
|
|
67
68
|
"conventional-changelog-conventionalcommits": "9.3.1",
|
|
68
69
|
"lefthook": "2.1.6",
|
|
69
|
-
"oxfmt": "0.
|
|
70
|
-
"oxlint": "1.
|
|
70
|
+
"oxfmt": "0.50.0",
|
|
71
|
+
"oxlint": "1.65.0",
|
|
71
72
|
"semantic-release": "25.0.3",
|
|
72
73
|
"typescript": "6.0.3",
|
|
73
74
|
"vitest": "4.1.6"
|