@doist/cli-core 0.16.1 → 0.18.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/README.md +22 -14
- package/dist/auth/index.d.ts +3 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/keyring/internal.d.ts +25 -0
- package/dist/auth/keyring/internal.d.ts.map +1 -0
- package/dist/auth/keyring/internal.js +31 -0
- package/dist/auth/keyring/internal.js.map +1 -0
- package/dist/auth/keyring/migrate.d.ts +19 -17
- package/dist/auth/keyring/migrate.d.ts.map +1 -1
- package/dist/auth/keyring/migrate.js +111 -49
- package/dist/auth/keyring/migrate.js.map +1 -1
- package/dist/auth/keyring/record-write.d.ts +70 -16
- package/dist/auth/keyring/record-write.d.ts.map +1 -1
- package/dist/auth/keyring/record-write.js +139 -30
- package/dist/auth/keyring/record-write.js.map +1 -1
- package/dist/auth/keyring/slot-naming.d.ts +6 -0
- package/dist/auth/keyring/slot-naming.d.ts.map +1 -0
- package/dist/auth/keyring/slot-naming.js +8 -0
- package/dist/auth/keyring/slot-naming.js.map +1 -0
- package/dist/auth/keyring/token-store.d.ts +10 -2
- package/dist/auth/keyring/token-store.d.ts.map +1 -1
- package/dist/auth/keyring/token-store.js +93 -64
- package/dist/auth/keyring/token-store.js.map +1 -1
- package/dist/auth/keyring/types.d.ts +20 -0
- package/dist/auth/keyring/types.d.ts.map +1 -1
- package/dist/auth/persist.d.ts +23 -0
- package/dist/auth/persist.d.ts.map +1 -0
- package/dist/auth/persist.js +38 -0
- package/dist/auth/persist.js.map +1 -0
- package/dist/auth/types.d.ts +27 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -22,6 +22,20 @@ export type UserRecord<TAccount extends AuthAccount> = {
|
|
|
22
22
|
* that would otherwise live in the OS credential manager.
|
|
23
23
|
*/
|
|
24
24
|
fallbackToken?: string;
|
|
25
|
+
/** Same lifecycle and security profile as `fallbackToken`, for the refresh slot. */
|
|
26
|
+
fallbackRefreshToken?: string;
|
|
27
|
+
/** Access-token expiry, unix-epoch ms. */
|
|
28
|
+
accessTokenExpiresAt?: number;
|
|
29
|
+
/** Refresh-token expiry, unix-epoch ms. */
|
|
30
|
+
refreshTokenExpiresAt?: number;
|
|
31
|
+
/**
|
|
32
|
+
* `true` when a refresh secret is stored (in the keyring or as
|
|
33
|
+
* `fallbackRefreshToken`); `false` when explicitly cleared by `set()`
|
|
34
|
+
* or by a no-refresh `setBundle`; `undefined` on legacy records that
|
|
35
|
+
* predate the bundle contract. Read by future bundle-aware accessors;
|
|
36
|
+
* `active()` itself doesn't consult it.
|
|
37
|
+
*/
|
|
38
|
+
hasRefreshToken?: boolean;
|
|
25
39
|
};
|
|
26
40
|
/**
|
|
27
41
|
* Port the consumer implements to expose their per-user config records to
|
|
@@ -39,6 +53,12 @@ export type UserRecordStore<TAccount extends AuthAccount> = {
|
|
|
39
53
|
* `fallbackToken` over the keyring). Records are keyed by `account.id`.
|
|
40
54
|
*/
|
|
41
55
|
upsert(record: UserRecord<TAccount>): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Optional atomic insert. Returns `true` on write, `false` if `account.id`
|
|
58
|
+
* already exists. Migration prefers it to eliminate the existence-check
|
|
59
|
+
* TOCTOU race; callers fall back to list-then-upsert when absent.
|
|
60
|
+
*/
|
|
61
|
+
tryInsert?(record: UserRecord<TAccount>): Promise<boolean>;
|
|
42
62
|
/** Remove the record whose `account.id` matches. */
|
|
43
63
|
remove(id: string): Promise<void>;
|
|
44
64
|
/** The pinned default's `account.id`, or `null` when nothing is pinned. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/auth/keyring/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,8EAA8E;AAC9E,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,aAAa,CAAA;AAEjE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,oBAAoB,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,WAAW,IAAI;IACnD,OAAO,EAAE,QAAQ,CAAA;IACjB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/auth/keyring/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,8EAA8E;AAC9E,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,aAAa,CAAA;AAEjE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,oBAAoB,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,WAAW,IAAI;IACnD,OAAO,EAAE,QAAQ,CAAA;IACjB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,QAAQ,SAAS,WAAW,IAAI;IACxD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvC;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD;;;;OAIG;IACH,SAAS,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,oDAAoD;IACpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,2EAA2E;IAC3E,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjD,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AuthAccount, TokenBundle, TokenStore } from './types.js';
|
|
2
|
+
export type PersistBundleOptions<TAccount extends AuthAccount> = {
|
|
3
|
+
store: TokenStore<TAccount>;
|
|
4
|
+
account: TAccount;
|
|
5
|
+
bundle: TokenBundle;
|
|
6
|
+
/** Forwarded to `setBundle` when present. See `TokenStore.setBundle`. */
|
|
7
|
+
promoteDefault?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Persist a bundle against any `TokenStore`. Prefers `setBundle` when the
|
|
11
|
+
* store implements it; otherwise falls back to `set(account, accessToken)`
|
|
12
|
+
* and silently drops refresh state. Wraps non-`CliError` failures as
|
|
13
|
+
* `AUTH_STORE_WRITE_FAILED`.
|
|
14
|
+
*
|
|
15
|
+
* `promoteDefault` is only honoured on the `setBundle` path — the base
|
|
16
|
+
* `set()` contract has no promotion control, so a custom multi-account
|
|
17
|
+
* store that opts out of `setBundle` will run its own promotion policy
|
|
18
|
+
* (typically first-account-wins). Multi-account stores that need
|
|
19
|
+
* silent-refresh-safe selection (no re-pinning on background rotation)
|
|
20
|
+
* MUST implement `setBundle`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function persistBundle<TAccount extends AuthAccount>(options: PersistBundleOptions<TAccount>): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=persist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../src/auth/persist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEtE,MAAM,MAAM,oBAAoB,CAAC,QAAQ,SAAS,WAAW,IAAI;IAC7D,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3B,OAAO,EAAE,QAAQ,CAAA;IACjB,MAAM,EAAE,WAAW,CAAA;IACnB,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,QAAQ,SAAS,WAAW,EAC5D,OAAO,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { CliError, getErrorMessage } from '../errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Persist a bundle against any `TokenStore`. Prefers `setBundle` when the
|
|
4
|
+
* store implements it; otherwise falls back to `set(account, accessToken)`
|
|
5
|
+
* and silently drops refresh state. Wraps non-`CliError` failures as
|
|
6
|
+
* `AUTH_STORE_WRITE_FAILED`.
|
|
7
|
+
*
|
|
8
|
+
* `promoteDefault` is only honoured on the `setBundle` path — the base
|
|
9
|
+
* `set()` contract has no promotion control, so a custom multi-account
|
|
10
|
+
* store that opts out of `setBundle` will run its own promotion policy
|
|
11
|
+
* (typically first-account-wins). Multi-account stores that need
|
|
12
|
+
* silent-refresh-safe selection (no re-pinning on background rotation)
|
|
13
|
+
* MUST implement `setBundle`.
|
|
14
|
+
*/
|
|
15
|
+
export async function persistBundle(options) {
|
|
16
|
+
const { store, account, bundle, promoteDefault } = options;
|
|
17
|
+
try {
|
|
18
|
+
if (store.setBundle) {
|
|
19
|
+
// Omit the options arg entirely when unset so presence-based
|
|
20
|
+
// handlers can distinguish "default" from explicit opt-out.
|
|
21
|
+
if (promoteDefault === undefined) {
|
|
22
|
+
await store.setBundle(account, bundle);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
await store.setBundle(account, bundle, { promoteDefault });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
await store.set(account, bundle.accessToken);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (error instanceof CliError)
|
|
34
|
+
throw error;
|
|
35
|
+
throw new CliError('AUTH_STORE_WRITE_FAILED', `Failed to persist token: ${getErrorMessage(error)}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=persist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../src/auth/persist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAWxD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,OAAuC;IAEvC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAC1D,IAAI,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,6DAA6D;YAC7D,4DAA4D;YAC5D,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,CAAA;YAC9D,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;QAChD,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,KAAK,CAAA;QAC1C,MAAM,IAAI,QAAQ,CACd,yBAAyB,EACzB,4BAA4B,eAAe,CAAC,KAAK,CAAC,EAAE,CACvD,CAAA;IACL,CAAC;AACL,CAAC"}
|
package/dist/auth/types.d.ts
CHANGED
|
@@ -40,8 +40,10 @@ export type ExchangeInput = {
|
|
|
40
40
|
export type ExchangeResult<TAccount extends AuthAccount = AuthAccount> = {
|
|
41
41
|
accessToken: string;
|
|
42
42
|
refreshToken?: string;
|
|
43
|
-
/**
|
|
43
|
+
/** Access-token expiry, unix-epoch ms. */
|
|
44
44
|
expiresAt?: number;
|
|
45
|
+
/** Refresh-token expiry, unix-epoch ms. */
|
|
46
|
+
refreshTokenExpiresAt?: number;
|
|
45
47
|
/** Set when the token endpoint already identifies the account; skips `validateToken`. */
|
|
46
48
|
account?: TAccount;
|
|
47
49
|
};
|
|
@@ -50,6 +52,11 @@ export type ValidateInput = {
|
|
|
50
52
|
/** Same shape as `ExchangeInput.handshake` — carries the folded `flags` / `readOnly`. */
|
|
51
53
|
handshake: Record<string, unknown>;
|
|
52
54
|
};
|
|
55
|
+
export type RefreshInput = {
|
|
56
|
+
refreshToken: string;
|
|
57
|
+
/** Same shape as `ExchangeInput.handshake` — empty when called outside `runOAuthFlow`. */
|
|
58
|
+
handshake: Record<string, unknown>;
|
|
59
|
+
};
|
|
53
60
|
/**
|
|
54
61
|
* Strategy interface every auth method implements. cli-core ships
|
|
55
62
|
* `createPkceProvider` for the standard public-client PKCE flow; bespoke
|
|
@@ -62,6 +69,15 @@ export type AuthProvider<TAccount extends AuthAccount = AuthAccount> = {
|
|
|
62
69
|
exchangeCode(input: ExchangeInput): Promise<ExchangeResult<TAccount>>;
|
|
63
70
|
/** Skipped when `exchangeCode` already returned an `account`. */
|
|
64
71
|
validateToken(input: ValidateInput): Promise<TAccount>;
|
|
72
|
+
/** Optional: exchange a refresh token for a fresh bundle. */
|
|
73
|
+
refreshToken?(input: RefreshInput): Promise<ExchangeResult<TAccount>>;
|
|
74
|
+
};
|
|
75
|
+
/** Write-side bundle for `setBundle`. Time fields are unix-epoch ms. */
|
|
76
|
+
export type TokenBundle = {
|
|
77
|
+
accessToken: string;
|
|
78
|
+
refreshToken?: string;
|
|
79
|
+
accessTokenExpiresAt?: number;
|
|
80
|
+
refreshTokenExpiresAt?: number;
|
|
65
81
|
};
|
|
66
82
|
/** Opaque account selector. Stores own the matching rule (id, email, label, …). */
|
|
67
83
|
export type AccountRef = string;
|
|
@@ -86,6 +102,16 @@ export type TokenStore<TAccount extends AuthAccount = AuthAccount> = {
|
|
|
86
102
|
} | null>;
|
|
87
103
|
/** Persist `token` for `account`, replacing any previous entry. Throw `CliError` for typed failures; other thrown values become `AUTH_STORE_WRITE_FAILED`. */
|
|
88
104
|
set(account: TAccount, token: string): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Persist a full bundle. Optional on the contract — stores that don't
|
|
107
|
+
* implement it get `bundle.accessToken` via `set()` instead (cli-core
|
|
108
|
+
* helpers handle the fallback). Pass `promoteDefault: true` on first
|
|
109
|
+
* login; omit on silent refresh so a background rotation can't re-pin
|
|
110
|
+
* account selection.
|
|
111
|
+
*/
|
|
112
|
+
setBundle?(account: TAccount, bundle: TokenBundle, options?: {
|
|
113
|
+
promoteDefault?: boolean;
|
|
114
|
+
}): Promise<void>;
|
|
89
115
|
/** Remove a stored credential. No-op when `ref` doesn't match. */
|
|
90
116
|
clear(ref?: AccountRef): Promise<void>;
|
|
91
117
|
/** Every stored account with a default marker. */
|
package/dist/auth/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI;IACrE,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/cli-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Shared core utilities for Doist CLI projects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -66,18 +66,18 @@
|
|
|
66
66
|
"@semantic-release/changelog": "6.0.3",
|
|
67
67
|
"@semantic-release/exec": "7.1.0",
|
|
68
68
|
"@semantic-release/git": "10.0.1",
|
|
69
|
-
"@types/node": "25.
|
|
69
|
+
"@types/node": "25.7.0",
|
|
70
70
|
"commander": "14.0.3",
|
|
71
71
|
"conventional-changelog-conventionalcommits": "9.3.1",
|
|
72
72
|
"lefthook": "2.1.6",
|
|
73
73
|
"marked": "18.0.3",
|
|
74
74
|
"marked-terminal-renderer": "2.2.0",
|
|
75
75
|
"open": "11.0.0",
|
|
76
|
-
"oxfmt": "0.
|
|
77
|
-
"oxlint": "1.
|
|
76
|
+
"oxfmt": "0.49.0",
|
|
77
|
+
"oxlint": "1.64.0",
|
|
78
78
|
"semantic-release": "25.0.3",
|
|
79
79
|
"typescript": "6.0.3",
|
|
80
|
-
"vitest": "4.1.
|
|
80
|
+
"vitest": "4.1.6"
|
|
81
81
|
},
|
|
82
82
|
"dependencies": {
|
|
83
83
|
"chalk": "5.6.2",
|