@doow/cli 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/auth/device-flow.js +18 -2
- package/dist/cjs/auth/device-flow.js.map +1 -1
- package/dist/cjs/auth/pkce.js +30 -11
- package/dist/cjs/auth/pkce.js.map +1 -1
- package/dist/cjs/config/env.js +1 -1
- package/dist/cjs/config/env.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cli.cjs +104 -35
- package/dist/cli.cjs.map +1 -1
- package/dist/esm/auth/device-flow.js +18 -2
- package/dist/esm/auth/device-flow.js.map +1 -1
- package/dist/esm/auth/pkce.js +30 -11
- package/dist/esm/auth/pkce.js.map +1 -1
- package/dist/esm/config/env.js +1 -1
- package/dist/esm/config/env.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import { createCredentialStore } from './keyring.js';
|
|
|
8
8
|
* environments where a browser cannot be opened on the same machine.
|
|
9
9
|
*
|
|
10
10
|
* Steps:
|
|
11
|
-
* 1. POST /v1/auth/device
|
|
11
|
+
* 1. POST /v1/auth/cli/device → get device_code + user_code
|
|
12
12
|
* 2. Display verification URI + user_code on stderr
|
|
13
13
|
* 3. Optionally open the browser (best-effort)
|
|
14
14
|
* 4. Poll POST /v1/auth/device/token until granted or expired
|
|
@@ -28,6 +28,15 @@ function sleep(ms) {
|
|
|
28
28
|
function expiresAtFromSecondsIn(secondsIn) {
|
|
29
29
|
return new Date(Date.now() + secondsIn * 1000).toISOString();
|
|
30
30
|
}
|
|
31
|
+
function isLegacyPendingPollResponse(status, body) {
|
|
32
|
+
const legacyBody = body;
|
|
33
|
+
return (status === 400 &&
|
|
34
|
+
body != null &&
|
|
35
|
+
typeof body === 'object' &&
|
|
36
|
+
legacyBody.name === 'HttpException' &&
|
|
37
|
+
legacyBody.message === 'Bad Request Exception' &&
|
|
38
|
+
legacyBody.response === 'Bad Request Exception');
|
|
39
|
+
}
|
|
31
40
|
// ---------------------------------------------------------------------------
|
|
32
41
|
// Core function
|
|
33
42
|
// ---------------------------------------------------------------------------
|
|
@@ -50,7 +59,7 @@ async function executeDeviceFlow(options = {}) {
|
|
|
50
59
|
// -------------------------------------------------------------------------
|
|
51
60
|
// Step 1: Request device authorization
|
|
52
61
|
// -------------------------------------------------------------------------
|
|
53
|
-
const authorizeRes = await fetch(`${apiUrl}/v1/auth/device
|
|
62
|
+
const authorizeRes = await fetch(`${apiUrl}/v1/auth/cli/device`, {
|
|
54
63
|
method: 'POST',
|
|
55
64
|
headers: { 'Content-Type': 'application/json' },
|
|
56
65
|
body: JSON.stringify({ client_id: 'doow-cli' }),
|
|
@@ -60,6 +69,7 @@ async function executeDeviceFlow(options = {}) {
|
|
|
60
69
|
throw new Error(`Device authorization request failed: HTTP ${authorizeRes.status}${body ? ` — ${body}` : ''}`);
|
|
61
70
|
}
|
|
62
71
|
const auth = (await authorizeRes.json());
|
|
72
|
+
const deviceCodeExpiresAt = Date.now() + auth.expires_in * 1000;
|
|
63
73
|
// -------------------------------------------------------------------------
|
|
64
74
|
// Step 2: Display instructions on stderr
|
|
65
75
|
// -------------------------------------------------------------------------
|
|
@@ -79,6 +89,9 @@ async function executeDeviceFlow(options = {}) {
|
|
|
79
89
|
let pollInterval = auth.interval; // seconds; RFC 8628 §3.5
|
|
80
90
|
while (true) {
|
|
81
91
|
await sleep(pollInterval * 1000);
|
|
92
|
+
if (Date.now() > deviceCodeExpiresAt) {
|
|
93
|
+
throw new Error('Device code expired. Run doow login --device again.');
|
|
94
|
+
}
|
|
82
95
|
const tokenRes = await fetch(`${apiUrl}/v1/auth/device/token`, {
|
|
83
96
|
method: 'POST',
|
|
84
97
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -123,6 +136,9 @@ async function executeDeviceFlow(options = {}) {
|
|
|
123
136
|
case 'access_denied':
|
|
124
137
|
throw new Error('Authorization denied by user.');
|
|
125
138
|
default:
|
|
139
|
+
if (isLegacyPendingPollResponse(tokenRes.status, errBody)) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
126
142
|
throw new Error(`Token polling failed: ${errBody.error}${errBody.error_description ? ` — ${errBody.error_description}` : ''}`);
|
|
127
143
|
}
|
|
128
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.js","sources":["../../../../src/auth/device-flow.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;AAYG;
|
|
1
|
+
{"version":3,"file":"device-flow.js","sources":["../../../../src/auth/device-flow.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/esm/auth/pkce.js
CHANGED
|
@@ -135,13 +135,12 @@ function startCallbackServer(expectedState, timeoutMs) {
|
|
|
135
135
|
// ---------------------------------------------------------------------------
|
|
136
136
|
// Token exchange
|
|
137
137
|
// ---------------------------------------------------------------------------
|
|
138
|
-
async function exchangeCodeForTokens(apiUrl,
|
|
138
|
+
async function exchangeCodeForTokens(apiUrl, codeVerifier, state) {
|
|
139
139
|
const response = await fetch(`${apiUrl}/v1/auth/cli/token`, {
|
|
140
140
|
method: 'POST',
|
|
141
141
|
headers: { 'Content-Type': 'application/json' },
|
|
142
142
|
body: JSON.stringify({
|
|
143
143
|
grant_type: 'authorization_code',
|
|
144
|
-
code,
|
|
145
144
|
code_verifier: codeVerifier,
|
|
146
145
|
state,
|
|
147
146
|
}),
|
|
@@ -152,6 +151,31 @@ async function exchangeCodeForTokens(apiUrl, code, codeVerifier, state) {
|
|
|
152
151
|
}
|
|
153
152
|
return response.json();
|
|
154
153
|
}
|
|
154
|
+
async function requestAuthorizationUrl(apiUrl, codeChallenge, state, redirectUri) {
|
|
155
|
+
const response = await fetch(`${apiUrl}/v1/auth/cli/authorize`, {
|
|
156
|
+
method: 'POST',
|
|
157
|
+
headers: { 'Content-Type': 'application/json' },
|
|
158
|
+
body: JSON.stringify({
|
|
159
|
+
client_id: 'doow-cli',
|
|
160
|
+
code_challenge: codeChallenge,
|
|
161
|
+
code_challenge_method: 'S256',
|
|
162
|
+
redirect_uri: redirectUri,
|
|
163
|
+
state,
|
|
164
|
+
}),
|
|
165
|
+
});
|
|
166
|
+
if (!response.ok) {
|
|
167
|
+
const body = await response.text().catch(() => '(no body)');
|
|
168
|
+
throw new Error(`Authorize request failed: HTTP ${response.status} — ${body}`);
|
|
169
|
+
}
|
|
170
|
+
const payload = (await response.json());
|
|
171
|
+
if (payload.state !== state) {
|
|
172
|
+
throw new Error('Authorize response state mismatch — possible server bug. Try again.');
|
|
173
|
+
}
|
|
174
|
+
if (!payload.authorization_url) {
|
|
175
|
+
throw new Error('Authorize response did not include authorization_url.');
|
|
176
|
+
}
|
|
177
|
+
return payload.authorization_url;
|
|
178
|
+
}
|
|
155
179
|
// ---------------------------------------------------------------------------
|
|
156
180
|
// Main flow
|
|
157
181
|
// ---------------------------------------------------------------------------
|
|
@@ -175,14 +199,9 @@ async function executePkceFlow(options = {}) {
|
|
|
175
199
|
// Step 3: Start callback server
|
|
176
200
|
const { server, port, callbackPromise } = await startCallbackServer(state, timeout);
|
|
177
201
|
try {
|
|
178
|
-
// Step 4:
|
|
202
|
+
// Step 4: Request an authorization URL from the API
|
|
179
203
|
const redirectUri = `http://127.0.0.1:${port}/callback`;
|
|
180
|
-
const authorizeUrl =
|
|
181
|
-
`?response_type=code` +
|
|
182
|
-
`&code_challenge=${codeChallenge}` +
|
|
183
|
-
`&code_challenge_method=S256` +
|
|
184
|
-
`&state=${state}` +
|
|
185
|
-
`&redirect_uri=${encodeURIComponent(redirectUri)}`;
|
|
204
|
+
const authorizeUrl = await requestAuthorizationUrl(apiUrl, codeChallenge, state, redirectUri);
|
|
186
205
|
// Step 5: Open browser
|
|
187
206
|
try {
|
|
188
207
|
const { default: open } = await import('open');
|
|
@@ -193,9 +212,9 @@ async function executePkceFlow(options = {}) {
|
|
|
193
212
|
throw new Error(`Failed to open browser: ${msg}. Try doow login --device for headless environments.`);
|
|
194
213
|
}
|
|
195
214
|
// Step 6: Wait for callback
|
|
196
|
-
|
|
215
|
+
await callbackPromise;
|
|
197
216
|
// Step 7: Exchange code for tokens
|
|
198
|
-
const tokenResponse = await exchangeCodeForTokens(apiUrl,
|
|
217
|
+
const tokenResponse = await exchangeCodeForTokens(apiUrl, codeVerifier, state);
|
|
199
218
|
// Step 8: Store tokens
|
|
200
219
|
const expiresAt = new Date(Date.now() + tokenResponse.expires_in * 1000).toISOString();
|
|
201
220
|
const result = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkce.js","sources":["../../../../src/auth/pkce.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;AAcG;
|
|
1
|
+
{"version":3,"file":"pkce.js","sources":["../../../../src/auth/pkce.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/esm/config/env.js
CHANGED
|
@@ -31,7 +31,7 @@ function getApiUrl(profile) {
|
|
|
31
31
|
return profile.apiUrl;
|
|
32
32
|
if (process.env['DOOW_API_URL'])
|
|
33
33
|
return process.env['DOOW_API_URL'];
|
|
34
|
-
return 'https://api.doow.
|
|
34
|
+
return 'https://dev-api.doow.co';
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export { getApiUrl, isAgentMode, isCI, isTTY, shouldShowUI };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sources":["../../../../src/config/env.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;SACgB,KAAK,GAAA;AACnB,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;AACtC;AAEA;SACgB,IAAI,GAAA;IAClB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B;AAEA;;;;;AAKG;SACa,WAAW,GAAA;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACzC;AAEA;;;AAGG;SACa,YAAY,GAAA;IAC1B,OAAO,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AAC7C;AAEA;;;AAGG;AACG,SAAU,SAAS,CAAC,OAAiB,EAAA;IACzC,IAAI,OAAO,EAAE,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM;AAC1C,IAAA,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAAE,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AACnE,IAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"env.js","sources":["../../../../src/config/env.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;SACgB,KAAK,GAAA;AACnB,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;AACtC;AAEA;SACgB,IAAI,GAAA;IAClB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B;AAEA;;;;;AAKG;SACa,WAAW,GAAA;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACzC;AAEA;;;AAGG;SACa,YAAY,GAAA;IAC1B,OAAO,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AAC7C;AAEA;;;AAGG;AACG,SAAU,SAAS,CAAC,OAAiB,EAAA;IACzC,IAAI,OAAO,EAAE,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM;AAC1C,IAAA,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAAE,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AACnE,IAAA,OAAO,yBAAyB;AAClC;;;;"}
|
package/dist/esm/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export { canBindLocalhost, detectAuthMethod, executeAutoLogin } from './auth/det
|
|
|
9
9
|
|
|
10
10
|
// @doow/cli library entry point
|
|
11
11
|
// Re-exports for programmatic usage
|
|
12
|
-
const VERSION =
|
|
12
|
+
const VERSION = "0.1.4" ;
|
|
13
13
|
|
|
14
14
|
export { VERSION };
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAAA;AACA;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AAIO,MAAM,OAAO,GACuB,OAAe;;;;"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -154,7 +154,7 @@ declare function executePkceFlow(options?: PkceFlowOptions): Promise<PkceFlowRes
|
|
|
154
154
|
* environments where a browser cannot be opened on the same machine.
|
|
155
155
|
*
|
|
156
156
|
* Steps:
|
|
157
|
-
* 1. POST /v1/auth/device
|
|
157
|
+
* 1. POST /v1/auth/cli/device → get device_code + user_code
|
|
158
158
|
* 2. Display verification URI + user_code on stderr
|
|
159
159
|
* 3. Optionally open the browser (best-effort)
|
|
160
160
|
* 4. Poll POST /v1/auth/device/token until granted or expired
|
|
@@ -363,7 +363,7 @@ declare function detectAuthMethod(options?: DetectOptions): Promise<AuthMethod>;
|
|
|
363
363
|
*/
|
|
364
364
|
declare function executeAutoLogin(options?: AutoLoginOptions): Promise<LoginResult>;
|
|
365
365
|
|
|
366
|
-
declare const VERSION
|
|
366
|
+
declare const VERSION: string;
|
|
367
367
|
|
|
368
368
|
export { VERSION, acquireLock, authenticateWithApiKey, canBindLocalhost, clearProfileCredentials, createCredentialStore, deleteProfile, detectAuthMethod, executeAutoLogin, executeDeviceFlow, executePkceFlow, generatePkcePair, getActiveProfile, getApiUrl, getConfigDir, getProfileCredentials, isAgentMode, isCI, isTTY, needsRefresh, readConfig, readCredentials, readTokenFromStdin, refreshToken, releaseLock, resolveAuth, setActiveProfile, setProfileCredentials, shouldShowUI, validateApiKey, writeConfig, writeCredentials };
|
|
369
369
|
export type { ApiKeyAuthOptions, ApiKeyAuthResult, AuthMethod, AutoLoginOptions, CredentialStore, Credentials, DetectOptions, DeviceFlowOptions, DeviceFlowResult, DoowConfig, LockHandle, LoginResult, PkceFlowOptions, PkceFlowResult, Profile, ProfileCredentials, RefreshOptions, RefreshResult, ResolveAuthOptions, ResolvedAuth };
|