@doow/cli 0.1.4 → 0.1.5
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/api-key.js +2 -1
- package/dist/cjs/auth/api-key.js.map +1 -1
- package/dist/cjs/auth/keyring.js +36 -8
- package/dist/cjs/auth/keyring.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cli.cjs +44 -11
- package/dist/cli.cjs.map +1 -1
- package/dist/esm/auth/api-key.js +2 -1
- package/dist/esm/auth/api-key.js.map +1 -1
- package/dist/esm/auth/keyring.js +36 -8
- package/dist/esm/auth/keyring.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/package.json +1 -1
package/dist/cjs/auth/api-key.js
CHANGED
|
@@ -126,7 +126,8 @@ async function resolveAuth(options = {}) {
|
|
|
126
126
|
}
|
|
127
127
|
if (creds?.accessToken) {
|
|
128
128
|
const token = creds.accessToken;
|
|
129
|
-
const
|
|
129
|
+
const canRefresh = typeof creds.refreshToken === 'string' && creds.refreshToken.trim().length > 0;
|
|
130
|
+
const needsRefresh = canRefresh ? isTokenExpiredOrExpiring(creds.expiresAt) : false;
|
|
130
131
|
return {
|
|
131
132
|
type: 'oauth-token',
|
|
132
133
|
token,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.js","sources":["../../../../src/auth/api-key.ts"],"sourcesContent":[null],"names":["getApiUrl","createCredentialStore"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-key.js","sources":["../../../../src/auth/api-key.ts"],"sourcesContent":[null],"names":["getApiUrl","createCredentialStore"],"mappings":"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"}
|
package/dist/cjs/auth/keyring.js
CHANGED
|
@@ -55,26 +55,55 @@ function createFileStore() {
|
|
|
55
55
|
// Keyring-backed store
|
|
56
56
|
// ---------------------------------------------------------------------------
|
|
57
57
|
function createKeyringStore(keytar) {
|
|
58
|
+
const fileStore = createFileStore();
|
|
59
|
+
let currentBackend = 'keyring';
|
|
58
60
|
return {
|
|
59
61
|
async get(profileName) {
|
|
60
62
|
try {
|
|
61
63
|
const raw = await withTimeout(keytar.getPassword(SERVICE_NAME, profileName), OP_TIMEOUT_MS);
|
|
62
|
-
if (raw
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
if (raw != null) {
|
|
65
|
+
currentBackend = 'keyring';
|
|
66
|
+
return JSON.parse(raw);
|
|
67
|
+
}
|
|
68
|
+
currentBackend = 'keyring';
|
|
65
69
|
}
|
|
66
70
|
catch {
|
|
67
|
-
|
|
71
|
+
printFallbackWarning();
|
|
72
|
+
currentBackend = 'file';
|
|
68
73
|
}
|
|
74
|
+
const fallback = await fileStore.get(profileName);
|
|
75
|
+
if (fallback !== undefined) {
|
|
76
|
+
currentBackend = 'file';
|
|
77
|
+
return fallback;
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
69
80
|
},
|
|
70
81
|
async set(profileName, creds) {
|
|
71
|
-
|
|
82
|
+
try {
|
|
83
|
+
await withTimeout(keytar.setPassword(SERVICE_NAME, profileName, JSON.stringify(creds)), OP_TIMEOUT_MS);
|
|
84
|
+
currentBackend = 'keyring';
|
|
85
|
+
// Remove stale fallback data once the keyring becomes the source of truth.
|
|
86
|
+
await fileStore.clear(profileName);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
printFallbackWarning();
|
|
90
|
+
currentBackend = 'file';
|
|
91
|
+
await fileStore.set(profileName, creds);
|
|
92
|
+
}
|
|
72
93
|
},
|
|
73
94
|
async clear(profileName) {
|
|
74
|
-
|
|
95
|
+
try {
|
|
96
|
+
await withTimeout(keytar.deletePassword(SERVICE_NAME, profileName), OP_TIMEOUT_MS);
|
|
97
|
+
currentBackend = 'keyring';
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
printFallbackWarning();
|
|
101
|
+
currentBackend = 'file';
|
|
102
|
+
}
|
|
103
|
+
await fileStore.clear(profileName);
|
|
75
104
|
},
|
|
76
105
|
backend() {
|
|
77
|
-
return
|
|
106
|
+
return currentBackend;
|
|
78
107
|
},
|
|
79
108
|
};
|
|
80
109
|
}
|
|
@@ -93,7 +122,6 @@ async function createCredentialStore() {
|
|
|
93
122
|
let keytar;
|
|
94
123
|
try {
|
|
95
124
|
// Dynamic import so missing keytar never crashes the module at load time.
|
|
96
|
-
// @ts-expect-error — keytar is an optional peer dep and may not be installed.
|
|
97
125
|
const mod = await import('keytar');
|
|
98
126
|
// Support both default-export and named-export module shapes.
|
|
99
127
|
keytar = (mod.default ?? mod);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyring.js","sources":["../../../../src/auth/keyring.ts"],"sourcesContent":[null],"names":["getProfileCredentials","setProfileCredentials","clearProfileCredentials"],"mappings":";;;;AA6BA;AACA;AACA;AAEA,MAAM,YAAY,GAAG,UAAU;AAC/B,MAAM,gBAAgB,GAAG,KAAK;AAC9B,MAAM,aAAa,GAAG,KAAK;AAE3B;AACA,IAAI,yBAAyB,GAAG,KAAK;AAErC;AACA;AACA;AAEA;;;AAGG;AACH,SAAS,WAAW,CAAI,OAAmB,EAAE,EAAU,EAAA;IACrD,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,KACvB,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,EAAE,CAAA,EAAA,CAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAC7E;AACF,KAAA,CAAC;AACJ;AAEA;AACA;AACA;AAEA,SAAS,oBAAoB,GAAA;AAC3B,IAAA,IAAI,yBAAyB;QAAE;IAC/B,yBAAyB,GAAG,IAAI;AAChC,IAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8FAA8F,CAC/F;AACH;AAEA;AACA;AACA;AAEA,SAAS,eAAe,GAAA;IACtB,OAAO;QACL,MAAM,GAAG,CAAC,WAAmB,EAAA;AAC3B,YAAA,OAAOA,2BAAqB,CAAC,WAAW,CAAC;QAC3C,CAAC;AAED,QAAA,MAAM,GAAG,CAAC,WAAmB,EAAE,KAAyB,EAAA;AACtD,YAAA,OAAOC,2BAAqB,CAAC,WAAW,EAAE,KAAK,CAAC;QAClD,CAAC;QAED,MAAM,KAAK,CAAC,WAAmB,EAAA;AAC7B,YAAA,OAAOC,6BAAuB,CAAC,WAAW,CAAC;QAC7C,CAAC;QAED,OAAO,GAAA;AACL,YAAA,OAAO,MAAM;QACf,CAAC;KACF;AACH;AAEA;AACA;AACA;AAEA,SAAS,kBAAkB,CAAC,MAAc,EAAA;
|
|
1
|
+
{"version":3,"file":"keyring.js","sources":["../../../../src/auth/keyring.ts"],"sourcesContent":[null],"names":["getProfileCredentials","setProfileCredentials","clearProfileCredentials"],"mappings":";;;;AA6BA;AACA;AACA;AAEA,MAAM,YAAY,GAAG,UAAU;AAC/B,MAAM,gBAAgB,GAAG,KAAK;AAC9B,MAAM,aAAa,GAAG,KAAK;AAE3B;AACA,IAAI,yBAAyB,GAAG,KAAK;AAErC;AACA;AACA;AAEA;;;AAGG;AACH,SAAS,WAAW,CAAI,OAAmB,EAAE,EAAU,EAAA;IACrD,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,MAAM,KACvB,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,EAAE,CAAA,EAAA,CAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAC7E;AACF,KAAA,CAAC;AACJ;AAEA;AACA;AACA;AAEA,SAAS,oBAAoB,GAAA;AAC3B,IAAA,IAAI,yBAAyB;QAAE;IAC/B,yBAAyB,GAAG,IAAI;AAChC,IAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8FAA8F,CAC/F;AACH;AAEA;AACA;AACA;AAEA,SAAS,eAAe,GAAA;IACtB,OAAO;QACL,MAAM,GAAG,CAAC,WAAmB,EAAA;AAC3B,YAAA,OAAOA,2BAAqB,CAAC,WAAW,CAAC;QAC3C,CAAC;AAED,QAAA,MAAM,GAAG,CAAC,WAAmB,EAAE,KAAyB,EAAA;AACtD,YAAA,OAAOC,2BAAqB,CAAC,WAAW,EAAE,KAAK,CAAC;QAClD,CAAC;QAED,MAAM,KAAK,CAAC,WAAmB,EAAA;AAC7B,YAAA,OAAOC,6BAAuB,CAAC,WAAW,CAAC;QAC7C,CAAC;QAED,OAAO,GAAA;AACL,YAAA,OAAO,MAAM;QACf,CAAC;KACF;AACH;AAEA;AACA;AACA;AAEA,SAAS,kBAAkB,CAAC,MAAc,EAAA;AACxC,IAAA,MAAM,SAAS,GAAG,eAAe,EAAE;IACnC,IAAI,cAAc,GAAuB,SAAS;IAElD,OAAO;QACL,MAAM,GAAG,CAAC,WAAmB,EAAA;AAC3B,YAAA,IAAI;AACF,gBAAA,MAAM,GAAG,GAAG,MAAM,WAAW,CAC3B,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EAC7C,aAAa,CACd;AACD,gBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;oBACf,cAAc,GAAG,SAAS;AAC1B,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB;gBAC9C;gBAEA,cAAc,GAAG,SAAS;YAC5B;AAAE,YAAA,MAAM;AACN,gBAAA,oBAAoB,EAAE;gBACtB,cAAc,GAAG,MAAM;YACzB;YAEA,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AACjD,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,cAAc,GAAG,MAAM;AACvB,gBAAA,OAAO,QAAQ;YACjB;AAEA,YAAA,OAAO,SAAS;QAClB,CAAC;AAED,QAAA,MAAM,GAAG,CAAC,WAAmB,EAAE,KAAyB,EAAA;AACtD,YAAA,IAAI;gBACF,MAAM,WAAW,CACf,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EACpE,aAAa,CACd;gBACD,cAAc,GAAG,SAAS;;AAG1B,gBAAA,MAAM,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;YACpC;AAAE,YAAA,MAAM;AACN,gBAAA,oBAAoB,EAAE;gBACtB,cAAc,GAAG,MAAM;gBACvB,MAAM,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC;YACzC;QACF,CAAC;QAED,MAAM,KAAK,CAAC,WAAmB,EAAA;AAC7B,YAAA,IAAI;AACF,gBAAA,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC;gBAClF,cAAc,GAAG,SAAS;YAC5B;AAAE,YAAA,MAAM;AACN,gBAAA,oBAAoB,EAAE;gBACtB,cAAc,GAAG,MAAM;YACzB;AAEA,YAAA,MAAM,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;QACpC,CAAC;QAED,OAAO,GAAA;AACL,YAAA,OAAO,cAAc;QACvB,CAAC;KACF;AACH;AAEA;AACA;AACA;AAEA;;;;;;AAMG;AACI,eAAe,qBAAqB,GAAA;;AAEzC,IAAA,IAAI,MAAc;AAClB,IAAA,IAAI;;AAEF,QAAA,MAAM,GAAG,GAAG,MAAM,OAAO,QAAQ,CAAC;;QAElC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAW;IACzC;AAAE,IAAA,MAAM;;QAEN,OAAO,eAAe,EAAE;IAC1B;;AAGA,IAAA,IAAI;QACF,MAAM,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACxE;AAAE,IAAA,MAAM;AACN,QAAA,oBAAoB,EAAE;QACtB,OAAO,eAAe,EAAE;IAC1B;;AAGA,IAAA,OAAO,kBAAkB,CAAC,MAAM,CAAC;AACnC;;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -11,7 +11,7 @@ var detect = require('./auth/detect.js');
|
|
|
11
11
|
|
|
12
12
|
// @doow/cli library entry point
|
|
13
13
|
// Re-exports for programmatic usage
|
|
14
|
-
const VERSION = "0.1.
|
|
14
|
+
const VERSION = "0.1.5" ;
|
|
15
15
|
|
|
16
16
|
exports.clearProfileCredentials = store.clearProfileCredentials;
|
|
17
17
|
exports.deleteProfile = store.deleteProfile;
|
package/dist/cli.cjs
CHANGED
|
@@ -287,26 +287,55 @@ function createFileStore() {
|
|
|
287
287
|
// Keyring-backed store
|
|
288
288
|
// ---------------------------------------------------------------------------
|
|
289
289
|
function createKeyringStore(keytar) {
|
|
290
|
+
const fileStore = createFileStore();
|
|
291
|
+
let currentBackend = 'keyring';
|
|
290
292
|
return {
|
|
291
293
|
async get(profileName) {
|
|
292
294
|
try {
|
|
293
295
|
const raw = await withTimeout(keytar.getPassword(SERVICE_NAME, profileName), OP_TIMEOUT_MS);
|
|
294
|
-
if (raw
|
|
295
|
-
|
|
296
|
-
|
|
296
|
+
if (raw != null) {
|
|
297
|
+
currentBackend = 'keyring';
|
|
298
|
+
return JSON.parse(raw);
|
|
299
|
+
}
|
|
300
|
+
currentBackend = 'keyring';
|
|
297
301
|
}
|
|
298
302
|
catch {
|
|
299
|
-
|
|
303
|
+
printFallbackWarning();
|
|
304
|
+
currentBackend = 'file';
|
|
300
305
|
}
|
|
306
|
+
const fallback = await fileStore.get(profileName);
|
|
307
|
+
if (fallback !== undefined) {
|
|
308
|
+
currentBackend = 'file';
|
|
309
|
+
return fallback;
|
|
310
|
+
}
|
|
311
|
+
return undefined;
|
|
301
312
|
},
|
|
302
313
|
async set(profileName, creds) {
|
|
303
|
-
|
|
314
|
+
try {
|
|
315
|
+
await withTimeout(keytar.setPassword(SERVICE_NAME, profileName, JSON.stringify(creds)), OP_TIMEOUT_MS);
|
|
316
|
+
currentBackend = 'keyring';
|
|
317
|
+
// Remove stale fallback data once the keyring becomes the source of truth.
|
|
318
|
+
await fileStore.clear(profileName);
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
printFallbackWarning();
|
|
322
|
+
currentBackend = 'file';
|
|
323
|
+
await fileStore.set(profileName, creds);
|
|
324
|
+
}
|
|
304
325
|
},
|
|
305
326
|
async clear(profileName) {
|
|
306
|
-
|
|
327
|
+
try {
|
|
328
|
+
await withTimeout(keytar.deletePassword(SERVICE_NAME, profileName), OP_TIMEOUT_MS);
|
|
329
|
+
currentBackend = 'keyring';
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
printFallbackWarning();
|
|
333
|
+
currentBackend = 'file';
|
|
334
|
+
}
|
|
335
|
+
await fileStore.clear(profileName);
|
|
307
336
|
},
|
|
308
337
|
backend() {
|
|
309
|
-
return
|
|
338
|
+
return currentBackend;
|
|
310
339
|
},
|
|
311
340
|
};
|
|
312
341
|
}
|
|
@@ -325,7 +354,6 @@ async function createCredentialStore() {
|
|
|
325
354
|
let keytar;
|
|
326
355
|
try {
|
|
327
356
|
// Dynamic import so missing keytar never crashes the module at load time.
|
|
328
|
-
// @ts-expect-error — keytar is an optional peer dep and may not be installed.
|
|
329
357
|
const mod = await import('keytar');
|
|
330
358
|
// Support both default-export and named-export module shapes.
|
|
331
359
|
keytar = (mod.default ?? mod);
|
|
@@ -469,7 +497,8 @@ async function resolveAuth(options = {}) {
|
|
|
469
497
|
}
|
|
470
498
|
if (creds?.accessToken) {
|
|
471
499
|
const token = creds.accessToken;
|
|
472
|
-
const
|
|
500
|
+
const canRefresh = typeof creds.refreshToken === 'string' && creds.refreshToken.trim().length > 0;
|
|
501
|
+
const needsRefresh = canRefresh ? isTokenExpiredOrExpiring(creds.expiresAt) : false;
|
|
473
502
|
return {
|
|
474
503
|
type: 'oauth-token',
|
|
475
504
|
token,
|
|
@@ -33914,7 +33943,7 @@ async function startStdioServer(options) {
|
|
|
33914
33943
|
await server.connect(transport);
|
|
33915
33944
|
}
|
|
33916
33945
|
|
|
33917
|
-
const VERSION = "0.1.
|
|
33946
|
+
const VERSION = "0.1.5" ;
|
|
33918
33947
|
const ASCII_LOGO = `
|
|
33919
33948
|
_
|
|
33920
33949
|
__| | ___ ___ __ __
|
|
@@ -34140,8 +34169,12 @@ program
|
|
|
34140
34169
|
.option('--token-stdin', 'Read raw access token from stdin')
|
|
34141
34170
|
.action(async (opts) => {
|
|
34142
34171
|
const globalOpts = program.opts();
|
|
34172
|
+
const mergedOpts = {
|
|
34173
|
+
...opts,
|
|
34174
|
+
apiKey: opts.apiKey ?? globalOpts.apiKey,
|
|
34175
|
+
};
|
|
34143
34176
|
try {
|
|
34144
|
-
await loginHandler(
|
|
34177
|
+
await loginHandler(mergedOpts, globalOpts);
|
|
34145
34178
|
}
|
|
34146
34179
|
catch (err) {
|
|
34147
34180
|
process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\n`);
|