@doist/comms-cli 1.4.0 → 1.5.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 +6 -0
- package/README.md +5 -3
- package/dist/commands/auth/helpers.d.ts +2 -0
- package/dist/commands/auth/helpers.d.ts.map +1 -1
- package/dist/commands/auth/helpers.js +52 -0
- package/dist/commands/auth/helpers.js.map +1 -1
- package/dist/commands/auth/login.d.ts.map +1 -1
- package/dist/commands/auth/login.js +13 -4
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/status.d.ts +5 -8
- package/dist/commands/auth/status.d.ts.map +1 -1
- package/dist/commands/auth/status.js +28 -22
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/config/view.d.ts.map +1 -1
- package/dist/commands/config/view.js +7 -1
- package/dist/commands/config/view.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +2 -7
- package/dist/commands/view.js.map +1 -1
- package/dist/lib/api.d.ts +4 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +12 -6
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/auth-pages.d.ts.map +1 -1
- package/dist/lib/auth-pages.js +173 -302
- package/dist/lib/auth-pages.js.map +1 -1
- package/dist/lib/auth-provider.d.ts +41 -18
- package/dist/lib/auth-provider.d.ts.map +1 -1
- package/dist/lib/auth-provider.js +368 -81
- package/dist/lib/auth-provider.js.map +1 -1
- package/dist/lib/auth.d.ts +12 -1
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +41 -10
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/comms-account.d.ts +6 -0
- package/dist/lib/comms-account.d.ts.map +1 -1
- package/dist/lib/comms-account.js +6 -0
- package/dist/lib/comms-account.js.map +1 -1
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +76 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/refs.d.ts +2 -0
- package/dist/lib/refs.d.ts.map +1 -1
- package/dist/lib/refs.js +62 -26
- package/dist/lib/refs.js.map +1 -1
- package/dist/lib/search-api.d.ts.map +1 -1
- package/dist/lib/search-api.js +8 -4
- package/dist/lib/search-api.js.map +1 -1
- package/dist/lib/skills/content.d.ts +1 -1
- package/dist/lib/skills/content.d.ts.map +1 -1
- package/dist/lib/skills/content.js +6 -2
- package/dist/lib/skills/content.js.map +1 -1
- package/dist/lib/user-records.js +27 -0
- package/dist/lib/user-records.js.map +1 -1
- package/package.json +2 -2
package/dist/lib/auth.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SecureStoreUnavailableError } from '@doist/cli-core/auth';
|
|
2
|
+
import type { CommsAccount } from './auth-provider.js';
|
|
2
3
|
import { type AuthMode } from './config.js';
|
|
3
4
|
import { CliError } from './errors.js';
|
|
4
5
|
export { SecureStoreUnavailableError };
|
|
@@ -11,6 +12,7 @@ export type TokenStorageResult = {
|
|
|
11
12
|
};
|
|
12
13
|
export type AuthMetadata = {
|
|
13
14
|
authMode: AuthMode;
|
|
15
|
+
authResource?: string;
|
|
14
16
|
authScope?: string;
|
|
15
17
|
authUserId?: number;
|
|
16
18
|
authUserName?: string;
|
|
@@ -18,6 +20,7 @@ export type AuthMetadata = {
|
|
|
18
20
|
};
|
|
19
21
|
export type AuthProbeMetadata = {
|
|
20
22
|
authMode: AuthMode;
|
|
23
|
+
authResource?: string;
|
|
21
24
|
authScope?: string;
|
|
22
25
|
authUserId?: number;
|
|
23
26
|
authUserName?: string;
|
|
@@ -27,13 +30,21 @@ export type AuthProbeResult = {
|
|
|
27
30
|
token: string;
|
|
28
31
|
metadata: AuthProbeMetadata;
|
|
29
32
|
};
|
|
33
|
+
export type AuthProbeOptions = {
|
|
34
|
+
refresh?: boolean;
|
|
35
|
+
};
|
|
36
|
+
export type ActiveAuthSnapshot = {
|
|
37
|
+
token: string;
|
|
38
|
+
account: CommsAccount;
|
|
39
|
+
};
|
|
30
40
|
export declare class NoTokenError extends CliError {
|
|
31
41
|
constructor();
|
|
32
42
|
}
|
|
33
43
|
/** Read the active token. The store wraps env-var precedence internally. */
|
|
34
44
|
export declare function getApiToken(): Promise<string>;
|
|
45
|
+
export declare function getApiTokenSnapshot(ref?: string): Promise<ActiveAuthSnapshot>;
|
|
35
46
|
/** Token + metadata in one round-trip for `tdc config view` / `tdc doctor`. */
|
|
36
|
-
export declare function probeApiToken(): Promise<AuthProbeResult>;
|
|
47
|
+
export declare function probeApiToken(options?: AuthProbeOptions): Promise<AuthProbeResult>;
|
|
37
48
|
/** Auth metadata for `tdc auth status` and `ensureWriteAllowed`. */
|
|
38
49
|
export declare function getAuthMetadata(): Promise<AuthMetadata>;
|
|
39
50
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/lib/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAOtD,OAAO,EAAE,KAAK,QAAQ,EAA4B,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,EAAE,2BAA2B,EAAE,CAAA;AAEtC,eAAO,MAAM,aAAa,oBAAoB,CAAA;AAE9C,eAAO,MAAM,wBAAwB,8BAA8B,CAAA;AAEnE,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,aAAa,CAAA;AAEjE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,KAAK,GAAG,aAAa,GAAG,cAAc,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,iBAAiB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,YAAY,CAAA;CACxB,CAAA;AAID,qBAAa,YAAa,SAAQ,QAAQ;;CAUzC;AAED,4EAA4E;AAC5E,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAGnD;AAED,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAEnF;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAU5F;AA8CD,oEAAoE;AACpE,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAM7D"}
|
package/dist/lib/auth.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { SecureStoreUnavailableError } from '@doist/cli-core/auth';
|
|
2
|
-
import { createCommsTokenStore, getActiveTokenSource } from './auth-provider.js';
|
|
3
|
-
import { getConfig } from './config.js';
|
|
1
|
+
import { refreshAccessToken, SecureStoreUnavailableError } from '@doist/cli-core/auth';
|
|
2
|
+
import { createCommsAuthProvider, createCommsTokenStore, getActiveTokenSource, getCommsOAuthRefreshHandshake, } from './auth-provider.js';
|
|
3
|
+
import { getConfig, getConfigPath } from './config.js';
|
|
4
4
|
import { CliError } from './errors.js';
|
|
5
5
|
import { getDefaultUserRecord } from './user-records.js';
|
|
6
6
|
export { SecureStoreUnavailableError };
|
|
7
7
|
export const TOKEN_ENV_VAR = 'COMMS_API_TOKEN';
|
|
8
8
|
export const SECURE_STORE_DESCRIPTION = 'system credential manager';
|
|
9
|
+
const REFRESH_SKEW_MS = 60_000;
|
|
9
10
|
export class NoTokenError extends CliError {
|
|
10
11
|
constructor() {
|
|
11
12
|
super('NO_TOKEN', `No API token found. Set ${TOKEN_ENV_VAR} or run \`tdc auth login\` or \`tdc auth token <token>\`.`, ['Set COMMS_API_TOKEN or run: tdc auth login'], 'info');
|
|
@@ -14,16 +15,15 @@ export class NoTokenError extends CliError {
|
|
|
14
15
|
}
|
|
15
16
|
/** Read the active token. The store wraps env-var precedence internally. */
|
|
16
17
|
export async function getApiToken() {
|
|
17
|
-
const snapshot = await
|
|
18
|
-
if (!snapshot)
|
|
19
|
-
throw new NoTokenError();
|
|
18
|
+
const snapshot = await getApiTokenSnapshot();
|
|
20
19
|
return snapshot.token;
|
|
21
20
|
}
|
|
21
|
+
export async function getApiTokenSnapshot(ref) {
|
|
22
|
+
return getActiveSnapshot({ refresh: true, ref });
|
|
23
|
+
}
|
|
22
24
|
/** Token + metadata in one round-trip for `tdc config view` / `tdc doctor`. */
|
|
23
|
-
export async function probeApiToken() {
|
|
24
|
-
const snapshot = await
|
|
25
|
-
if (!snapshot)
|
|
26
|
-
throw new NoTokenError();
|
|
25
|
+
export async function probeApiToken(options = {}) {
|
|
26
|
+
const snapshot = await getActiveSnapshot({ refresh: options.refresh === true });
|
|
27
27
|
const source = await getActiveTokenSource();
|
|
28
28
|
return {
|
|
29
29
|
token: snapshot.token,
|
|
@@ -32,6 +32,36 @@ export async function probeApiToken() {
|
|
|
32
32
|
: { ...toAccountFields(snapshot.account), source },
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
+
async function getActiveSnapshot({ refresh, ref, }) {
|
|
36
|
+
const store = createCommsTokenStore();
|
|
37
|
+
const snapshot = await store.activeBundle(ref);
|
|
38
|
+
if (!snapshot)
|
|
39
|
+
throw new NoTokenError();
|
|
40
|
+
const { account, bundle } = snapshot;
|
|
41
|
+
const expiresAt = bundle.accessTokenExpiresAt;
|
|
42
|
+
if (expiresAt !== undefined) {
|
|
43
|
+
const now = Date.now();
|
|
44
|
+
if (refresh && bundle.refreshToken && expiresAt - now < REFRESH_SKEW_MS) {
|
|
45
|
+
if (!account.oauthClientId) {
|
|
46
|
+
if (expiresAt > now)
|
|
47
|
+
return { token: bundle.accessToken, account };
|
|
48
|
+
throw new CliError('NO_TOKEN', 'Stored OAuth token cannot be refreshed because its client metadata is missing.', ['Run: tdc auth login']);
|
|
49
|
+
}
|
|
50
|
+
const refreshed = await refreshAccessToken({
|
|
51
|
+
store,
|
|
52
|
+
provider: createCommsAuthProvider(),
|
|
53
|
+
skewMs: REFRESH_SKEW_MS,
|
|
54
|
+
lockPath: `${getConfigPath()}.refresh.lock`,
|
|
55
|
+
handshake: getCommsOAuthRefreshHandshake(account),
|
|
56
|
+
});
|
|
57
|
+
return { token: refreshed.bundle.accessToken, account: refreshed.account };
|
|
58
|
+
}
|
|
59
|
+
if (refresh && expiresAt <= now) {
|
|
60
|
+
throw new CliError('NO_TOKEN', 'Stored OAuth token has expired and cannot be refreshed.', ['Run: tdc auth login']);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return { token: bundle.accessToken, account };
|
|
64
|
+
}
|
|
35
65
|
/** Auth metadata for `tdc auth status` and `ensureWriteAllowed`. */
|
|
36
66
|
export async function getAuthMetadata() {
|
|
37
67
|
if (process.env[TOKEN_ENV_VAR])
|
|
@@ -45,6 +75,7 @@ export async function getAuthMetadata() {
|
|
|
45
75
|
function toAccountFields(account) {
|
|
46
76
|
return {
|
|
47
77
|
authMode: account.authMode,
|
|
78
|
+
...(account.authResource ? { authResource: account.authResource } : {}),
|
|
48
79
|
authScope: account.authScope || undefined,
|
|
49
80
|
authUserId: account.id ? toAuthUserId(account.id) : undefined,
|
|
50
81
|
authUserName: account.label || undefined,
|
package/dist/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@ export declare function makeCommsAccount(input: {
|
|
|
6
6
|
label: string;
|
|
7
7
|
authMode?: AuthMode;
|
|
8
8
|
authScope?: string;
|
|
9
|
+
oauthClientId?: string;
|
|
10
|
+
authBaseUrl?: string;
|
|
11
|
+
authResource?: string;
|
|
9
12
|
}): CommsAccount;
|
|
10
13
|
/**
|
|
11
14
|
* Adapt a Comms `getSessionUser` payload to a `CommsAccount`. Lives in its
|
|
@@ -18,5 +21,8 @@ export declare function toCommsAccount(sessionUser: {
|
|
|
18
21
|
}, metadata?: {
|
|
19
22
|
authMode?: AuthMode;
|
|
20
23
|
authScope?: string;
|
|
24
|
+
oauthClientId?: string;
|
|
25
|
+
authBaseUrl?: string;
|
|
26
|
+
authResource?: string;
|
|
21
27
|
}): CommsAccount;
|
|
22
28
|
//# sourceMappingURL=comms-account.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comms-account.d.ts","sourceRoot":"","sources":["../../src/lib/comms-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"comms-account.d.ts","sourceRoot":"","sources":["../../src/lib/comms-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,YAAY,CAUf;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC1B,WAAW,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC7C,QAAQ,GAAE;IACN,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACnB,GACP,YAAY,CAUd"}
|
|
@@ -5,6 +5,9 @@ export function makeCommsAccount(input) {
|
|
|
5
5
|
label: input.label,
|
|
6
6
|
authMode: input.authMode ?? 'unknown',
|
|
7
7
|
authScope: input.authScope ?? '',
|
|
8
|
+
...(input.oauthClientId ? { oauthClientId: input.oauthClientId } : {}),
|
|
9
|
+
...(input.authBaseUrl ? { authBaseUrl: input.authBaseUrl } : {}),
|
|
10
|
+
...(input.authResource ? { authResource: input.authResource } : {}),
|
|
8
11
|
};
|
|
9
12
|
}
|
|
10
13
|
/**
|
|
@@ -18,6 +21,9 @@ export function toCommsAccount(sessionUser, metadata = {}) {
|
|
|
18
21
|
label: sessionUser.fullName,
|
|
19
22
|
authMode: metadata.authMode,
|
|
20
23
|
authScope: metadata.authScope,
|
|
24
|
+
oauthClientId: metadata.oauthClientId,
|
|
25
|
+
authBaseUrl: metadata.authBaseUrl,
|
|
26
|
+
authResource: metadata.authResource,
|
|
21
27
|
});
|
|
22
28
|
}
|
|
23
29
|
//# sourceMappingURL=comms-account.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comms-account.js","sourceRoot":"","sources":["../../src/lib/comms-account.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"comms-account.js","sourceRoot":"","sources":["../../src/lib/comms-account.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,KAQhC;IACG,OAAO;QACH,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,SAAS;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;QAChC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtE,CAAA;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC1B,WAA6C,EAC7C,WAMI,EAAE;IAEN,OAAO,gBAAgB,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1B,KAAK,EAAE,WAAW,CAAC,QAAQ;QAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;KACtC,CAAC,CAAA;AACN,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -22,12 +22,26 @@ export type StoredUser = {
|
|
|
22
22
|
authMode?: AuthMode;
|
|
23
23
|
authScope?: string;
|
|
24
24
|
token?: string;
|
|
25
|
+
fallbackRefreshToken?: string;
|
|
26
|
+
accessTokenExpiresAt?: number;
|
|
27
|
+
refreshTokenExpiresAt?: number;
|
|
28
|
+
hasRefreshToken?: boolean;
|
|
29
|
+
oauthClientId?: string;
|
|
30
|
+
authBaseUrl?: string;
|
|
31
|
+
authResource?: string;
|
|
32
|
+
};
|
|
33
|
+
export type StoredOAuthClient = {
|
|
34
|
+
clientId: string;
|
|
35
|
+
authBaseUrl: string;
|
|
36
|
+
authResource: string;
|
|
37
|
+
redirectUri: string;
|
|
25
38
|
};
|
|
26
39
|
export interface Config {
|
|
27
40
|
users?: StoredUser[];
|
|
28
41
|
defaultUserId?: string;
|
|
29
42
|
currentWorkspace?: number;
|
|
30
43
|
updateChannel?: UpdateChannel;
|
|
44
|
+
oauthClients?: StoredOAuthClient[];
|
|
31
45
|
userSettings?: UserSettings;
|
|
32
46
|
}
|
|
33
47
|
/**
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,CAAA;AAqCpD,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,aAAa,CAAsC,CAAA;AAE7F,MAAM,WAAW,YAAY;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,MAAM;IACnB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;CAC9B;AAyBD;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAGjD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1F;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAkClE;AAED,oDAAoD;AACpD,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CA6KjF"}
|
package/dist/lib/config.js
CHANGED
|
@@ -15,6 +15,7 @@ const KNOWN_CONFIG_KEYS = new Set([
|
|
|
15
15
|
// cli-core's update command writes the channel under `update_channel`;
|
|
16
16
|
// the in-memory `Config` exposes it as `updateChannel`.
|
|
17
17
|
'update_channel',
|
|
18
|
+
'oauthClients',
|
|
18
19
|
'userSettings',
|
|
19
20
|
'users',
|
|
20
21
|
'defaultUserId',
|
|
@@ -25,8 +26,21 @@ const KNOWN_STORED_USER_KEYS = new Set([
|
|
|
25
26
|
'authMode',
|
|
26
27
|
'authScope',
|
|
27
28
|
'token',
|
|
29
|
+
'fallbackRefreshToken',
|
|
30
|
+
'accessTokenExpiresAt',
|
|
31
|
+
'refreshTokenExpiresAt',
|
|
32
|
+
'hasRefreshToken',
|
|
33
|
+
'oauthClientId',
|
|
34
|
+
'authBaseUrl',
|
|
35
|
+
'authResource',
|
|
28
36
|
]);
|
|
29
37
|
const KNOWN_USER_SETTINGS_KEYS = new Set(['unarchiveNewThreads']);
|
|
38
|
+
const KNOWN_OAUTH_CLIENT_KEYS = new Set([
|
|
39
|
+
'clientId',
|
|
40
|
+
'authBaseUrl',
|
|
41
|
+
'authResource',
|
|
42
|
+
'redirectUri',
|
|
43
|
+
]);
|
|
30
44
|
const AUTH_MODES = new Set(['read-only', 'read-write', 'unknown']);
|
|
31
45
|
export const UPDATE_CHANNELS = new Set(['stable', 'pre-release']);
|
|
32
46
|
/**
|
|
@@ -121,6 +135,38 @@ export function validateConfigForDoctor(config) {
|
|
|
121
135
|
if (config.defaultUserId !== undefined && typeof config.defaultUserId !== 'string') {
|
|
122
136
|
issues.push('defaultUserId must be a string');
|
|
123
137
|
}
|
|
138
|
+
if (config.oauthClients !== undefined) {
|
|
139
|
+
if (!Array.isArray(config.oauthClients)) {
|
|
140
|
+
issues.push('oauthClients must be an array');
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
for (let i = 0; i < config.oauthClients.length; i++) {
|
|
144
|
+
const client = config.oauthClients[i];
|
|
145
|
+
if (client === null || typeof client !== 'object' || Array.isArray(client)) {
|
|
146
|
+
issues.push(`oauthClients[${i}] must be an object`);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const clientRecord = client;
|
|
150
|
+
for (const key of Object.keys(clientRecord)) {
|
|
151
|
+
if (!KNOWN_OAUTH_CLIENT_KEYS.has(key)) {
|
|
152
|
+
issues.push(`oauthClients[${i}] contains unrecognized key "${key}"`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (typeof clientRecord.clientId !== 'string') {
|
|
156
|
+
issues.push(`oauthClients[${i}].clientId must be a string`);
|
|
157
|
+
}
|
|
158
|
+
if (typeof clientRecord.authBaseUrl !== 'string') {
|
|
159
|
+
issues.push(`oauthClients[${i}].authBaseUrl must be a string`);
|
|
160
|
+
}
|
|
161
|
+
if (typeof clientRecord.authResource !== 'string') {
|
|
162
|
+
issues.push(`oauthClients[${i}].authResource must be a string`);
|
|
163
|
+
}
|
|
164
|
+
if (typeof clientRecord.redirectUri !== 'string') {
|
|
165
|
+
issues.push(`oauthClients[${i}].redirectUri must be a string`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
124
170
|
if (config.users !== undefined) {
|
|
125
171
|
if (!Array.isArray(config.users)) {
|
|
126
172
|
issues.push('users must be an array');
|
|
@@ -156,6 +202,36 @@ export function validateConfigForDoctor(config) {
|
|
|
156
202
|
if (userRecord.token !== undefined && typeof userRecord.token !== 'string') {
|
|
157
203
|
issues.push(`users[${i}].token must be a string`);
|
|
158
204
|
}
|
|
205
|
+
if (userRecord.fallbackRefreshToken !== undefined &&
|
|
206
|
+
typeof userRecord.fallbackRefreshToken !== 'string') {
|
|
207
|
+
issues.push(`users[${i}].fallbackRefreshToken must be a string`);
|
|
208
|
+
}
|
|
209
|
+
if (userRecord.accessTokenExpiresAt !== undefined &&
|
|
210
|
+
(typeof userRecord.accessTokenExpiresAt !== 'number' ||
|
|
211
|
+
!Number.isFinite(userRecord.accessTokenExpiresAt))) {
|
|
212
|
+
issues.push(`users[${i}].accessTokenExpiresAt must be a finite number`);
|
|
213
|
+
}
|
|
214
|
+
if (userRecord.refreshTokenExpiresAt !== undefined &&
|
|
215
|
+
(typeof userRecord.refreshTokenExpiresAt !== 'number' ||
|
|
216
|
+
!Number.isFinite(userRecord.refreshTokenExpiresAt))) {
|
|
217
|
+
issues.push(`users[${i}].refreshTokenExpiresAt must be a finite number`);
|
|
218
|
+
}
|
|
219
|
+
if (userRecord.hasRefreshToken !== undefined &&
|
|
220
|
+
typeof userRecord.hasRefreshToken !== 'boolean') {
|
|
221
|
+
issues.push(`users[${i}].hasRefreshToken must be a boolean`);
|
|
222
|
+
}
|
|
223
|
+
if (userRecord.oauthClientId !== undefined &&
|
|
224
|
+
typeof userRecord.oauthClientId !== 'string') {
|
|
225
|
+
issues.push(`users[${i}].oauthClientId must be a string`);
|
|
226
|
+
}
|
|
227
|
+
if (userRecord.authBaseUrl !== undefined &&
|
|
228
|
+
typeof userRecord.authBaseUrl !== 'string') {
|
|
229
|
+
issues.push(`users[${i}].authBaseUrl must be a string`);
|
|
230
|
+
}
|
|
231
|
+
if (userRecord.authResource !== undefined &&
|
|
232
|
+
typeof userRecord.authResource !== 'string') {
|
|
233
|
+
issues.push(`users[${i}].authResource must be a string`);
|
|
234
|
+
}
|
|
159
235
|
}
|
|
160
236
|
}
|
|
161
237
|
}
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,IAAI,iBAAiB,EAClC,UAAU,IAAI,cAAc,EAC5B,gBAAgB,IAAI,oBAAoB,EACxC,YAAY,IAAI,gBAAgB,EAChC,WAAW,IAAI,eAAe,GACjC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,QAAQ,GAAG,WAAW,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IACzB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAA;AACtC,CAAC;AAKD,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IACnD,kBAAkB;IAClB,uEAAuE;IACvE,wDAAwD;IACxD,gBAAgB;IAChB,cAAc;IACd,OAAO;IACP,eAAe;CAClB,CAAC,CAAA;AAEF,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC;IACxD,IAAI;IACJ,MAAM;IACN,UAAU;IACV,WAAW;IACX,OAAO;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/errors.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type { ErrorType } from '@doist/cli-core';
|
|
|
6
6
|
* This union provides intellisense suggestions while still accepting any string,
|
|
7
7
|
* allowing dynamic codes and future additions.
|
|
8
8
|
*/
|
|
9
|
-
export type ErrorCode = 'AUTH_FAILED' | 'FORBIDDEN' | 'INSUFFICIENT_SCOPE' | 'INVALID_TOKEN' | 'NO_TOKEN' | 'READ_ONLY' | 'CONFLICTING_OPTIONS' | 'INVALID_CURSOR' | 'INVALID_DATE' | 'INVALID_ID' | 'INVALID_MINUTES' | 'INVALID_REF' | 'INVALID_SCOPE' | 'INVALID_STATE' | 'INVALID_TYPE' | 'INVALID_URL' | 'INVALID_VALUE' | 'MISSING_CONTENT' | 'MISSING_YES_FLAG' | 'UNKNOWN_KEY' | 'INVALID_NAME' | 'MISSING_USERS' | 'ACCOUNT_NOT_FOUND' | 'CHANNEL_NOT_FOUND' | 'GROUP_NOT_FOUND' | 'NOT_FOUND' | 'USER_NOT_FOUND' | 'WORKSPACE_NOT_FOUND' | 'AMBIGUOUS_CHANNEL' | 'AMBIGUOUS_GROUP' | 'AMBIGUOUS_USER' | 'AMBIGUOUS_WORKSPACE' | 'ALREADY_INSTALLED' | 'BATCH_FAILED' | 'FILE_NOT_FOUND' | 'FILE_READ_ERROR' | 'NOT_CREATOR' | 'NOT_INSTALLED' | 'UNKNOWN_AGENT' | 'API_ERROR' | 'INTERNAL_ERROR' | 'CONFIG_READ_FAILED' | 'CONFIG_INVALID_JSON' | 'CONFIG_INVALID_SHAPE' | (string & {});
|
|
9
|
+
export type ErrorCode = 'AUTH_DCR_FAILED' | 'AUTH_FAILED' | 'AUTH_REFRESH_EXPIRED' | 'AUTH_REFRESH_TRANSIENT' | 'AUTH_TOKEN_EXCHANGE_FAILED' | 'FORBIDDEN' | 'INSUFFICIENT_SCOPE' | 'INVALID_TOKEN' | 'NO_TOKEN' | 'READ_ONLY' | 'CONFLICTING_OPTIONS' | 'INVALID_CURSOR' | 'INVALID_DATE' | 'INVALID_ID' | 'INVALID_MINUTES' | 'INVALID_REF' | 'INVALID_SCOPE' | 'INVALID_STATE' | 'INVALID_TYPE' | 'INVALID_URL' | 'INVALID_VALUE' | 'MISSING_CONTENT' | 'MISSING_YES_FLAG' | 'UNKNOWN_KEY' | 'INVALID_NAME' | 'MISSING_USERS' | 'ACCOUNT_NOT_FOUND' | 'CHANNEL_NOT_FOUND' | 'GROUP_NOT_FOUND' | 'NOT_FOUND' | 'USER_NOT_FOUND' | 'WORKSPACE_NOT_FOUND' | 'AMBIGUOUS_CHANNEL' | 'AMBIGUOUS_GROUP' | 'AMBIGUOUS_USER' | 'AMBIGUOUS_WORKSPACE' | 'ALREADY_INSTALLED' | 'BATCH_FAILED' | 'FILE_NOT_FOUND' | 'FILE_READ_ERROR' | 'NOT_CREATOR' | 'NOT_INSTALLED' | 'UNKNOWN_AGENT' | 'API_ERROR' | 'INTERNAL_ERROR' | 'CONFIG_READ_FAILED' | 'CONFIG_INVALID_JSON' | 'CONFIG_INVALID_SHAPE' | (string & {});
|
|
10
10
|
/**
|
|
11
11
|
* Check whether an error is a Comms API 403 "Insufficient scope" response.
|
|
12
12
|
* Works with any error shaped like CommsRequestError (httpStatusCode + responseData).
|
package/dist/lib/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAEf,aAAa,GACb,WAAW,GACX,oBAAoB,GACpB,eAAe,GACf,UAAU,GACV,WAAW,GAEX,qBAAqB,GACrB,gBAAgB,GAChB,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GACf,cAAc,GACd,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,cAAc,GACd,eAAe,GAEf,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GAEf,WAAW,GACX,gBAAgB,GAEhB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GAEtB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAYnB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,YAAY,CAAC,SAAS,CAAC;gBAE7C,IAAI,EAAE,SAAS,GAAG,YAAY,EAC9B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,IAAI,GAAE,SAAmB;CAIhC"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAEf,iBAAiB,GACjB,aAAa,GACb,sBAAsB,GACtB,wBAAwB,GACxB,4BAA4B,GAC5B,WAAW,GACX,oBAAoB,GACpB,eAAe,GACf,UAAU,GACV,WAAW,GAEX,qBAAqB,GACrB,gBAAgB,GAChB,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GACf,cAAc,GACd,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,cAAc,GACd,eAAe,GAEf,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GAErB,mBAAmB,GACnB,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,eAAe,GAEf,WAAW,GACX,gBAAgB,GAEhB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GAEtB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAYnB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,YAAY,CAAC,SAAS,CAAC;gBAE7C,IAAI,EAAE,SAAS,GAAG,YAAY,EAC9B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,IAAI,GAAE,SAAmB;CAIhC"}
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAqC,MAAM,iBAAiB,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAqC,MAAM,iBAAiB,CAAA;AAE7F,OAAO,EAAE,YAAY,EAAE,CAAA;AAmEvB,SAAS,kBAAkB,CAAC,KAAc,EAAE,MAAc;IACtD,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,gBAAgB,IAAI,KAAK;QACzB,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QACxC,KAAK,CAAC,cAAc,KAAK,MAAM,CAClC,CAAA;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAC9C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAA;IAC/B,OAAO,CACH,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,cAAc,IAAI,IAAI;QACtB,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CACnD,CAAA;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACtC,OAAO,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAuB;IACjD,YACI,IAA8B,EAC9B,OAAe,EACf,KAAgB,EAChB,OAAkB,OAAO;QAEzB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;CACJ"}
|
package/dist/lib/refs.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Channel, Group, Workspace } from '@doist/comms-sdk';
|
|
2
|
+
export declare const SUPPORTED_COMMS_HOSTS: readonly ["comms.todoist.com", "comms.staging.todoist.com", "comms.local.todoist.com"];
|
|
3
|
+
export declare function isSupportedCommsHost(hostname: string): boolean;
|
|
2
4
|
export declare function isIdRef(ref: string): boolean;
|
|
3
5
|
/**
|
|
4
6
|
* Returns the raw id portion of `123`, `id:123`, or `id:abc-xyz`. The Comms
|
package/dist/lib/refs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAQjE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAc,GAAG,MAAM,EAAE,GAAG,IAAI,CAkBrF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/refs.js
CHANGED
|
@@ -3,6 +3,14 @@ import { CliError } from './errors.js';
|
|
|
3
3
|
function normalizeRef(ref) {
|
|
4
4
|
return ref.trim();
|
|
5
5
|
}
|
|
6
|
+
export const SUPPORTED_COMMS_HOSTS = [
|
|
7
|
+
'comms.todoist.com',
|
|
8
|
+
'comms.staging.todoist.com',
|
|
9
|
+
'comms.local.todoist.com',
|
|
10
|
+
];
|
|
11
|
+
export function isSupportedCommsHost(hostname) {
|
|
12
|
+
return SUPPORTED_COMMS_HOSTS.includes(hostname.toLowerCase());
|
|
13
|
+
}
|
|
6
14
|
export function isIdRef(ref) {
|
|
7
15
|
return normalizeRef(ref).startsWith('id:');
|
|
8
16
|
}
|
|
@@ -46,41 +54,54 @@ export function looksLikeRawId(ref) {
|
|
|
46
54
|
const normalized = normalizeRef(ref);
|
|
47
55
|
if (!normalized || normalized.includes(' '))
|
|
48
56
|
return false;
|
|
49
|
-
|
|
57
|
+
if (!/^[A-Za-z0-9_-]+$/.test(normalized))
|
|
58
|
+
return false;
|
|
59
|
+
return /\d/.test(normalized);
|
|
60
|
+
}
|
|
61
|
+
function looksLikeOpaqueCommsId(ref) {
|
|
62
|
+
return /^Cb[A-Za-z0-9_-]{18,}$/.test(ref);
|
|
63
|
+
}
|
|
64
|
+
function getOpaqueNameId(parsed) {
|
|
65
|
+
return parsed.type === 'name' && looksLikeOpaqueCommsId(parsed.name) ? parsed.name : null;
|
|
50
66
|
}
|
|
51
67
|
export function parseCommsUrl(url) {
|
|
52
68
|
try {
|
|
53
69
|
const parsed = new URL(url);
|
|
54
|
-
if (
|
|
70
|
+
if ((parsed.protocol !== 'http:' && parsed.protocol !== 'https:') ||
|
|
71
|
+
!isSupportedCommsHost(parsed.hostname)) {
|
|
55
72
|
return null;
|
|
56
73
|
}
|
|
57
|
-
const
|
|
74
|
+
const segments = parsed.pathname.split('/').filter(Boolean);
|
|
58
75
|
const result = {};
|
|
59
|
-
// Pattern: /a/{workspaceId}/
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
// Pattern: /a/{workspaceId}/... or /{workspaceId}/...
|
|
77
|
+
let routeStart = 0;
|
|
78
|
+
if (segments[0] === 'a' && /^\d+$/.test(segments[1] ?? '')) {
|
|
79
|
+
result.workspaceId = Number(segments[1]);
|
|
80
|
+
routeStart = 2;
|
|
64
81
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
82
|
+
else if (/^\d+$/.test(segments[0] ?? '')) {
|
|
83
|
+
result.workspaceId = Number(segments[0]);
|
|
84
|
+
routeStart = 1;
|
|
68
85
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
for (let index = routeStart; index < segments.length - 1; index += 2) {
|
|
87
|
+
const value = segments[index + 1];
|
|
88
|
+
switch (segments[index]) {
|
|
89
|
+
case 'ch':
|
|
90
|
+
result.channelId = value;
|
|
91
|
+
break;
|
|
92
|
+
case 't':
|
|
93
|
+
result.threadId = value;
|
|
94
|
+
break;
|
|
95
|
+
case 'c':
|
|
96
|
+
result.commentId = value;
|
|
97
|
+
break;
|
|
98
|
+
case 'msg':
|
|
99
|
+
result.conversationId = value;
|
|
100
|
+
break;
|
|
101
|
+
case 'm':
|
|
102
|
+
result.messageId = value;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
84
105
|
}
|
|
85
106
|
return Object.keys(result).length > 0 ? result : null;
|
|
86
107
|
}
|
|
@@ -171,6 +192,9 @@ export function resolveThreadId(ref) {
|
|
|
171
192
|
if (parsed.type === 'url' && parsed.parsed.threadId) {
|
|
172
193
|
return parsed.parsed.threadId;
|
|
173
194
|
}
|
|
195
|
+
const opaqueId = getOpaqueNameId(parsed);
|
|
196
|
+
if (opaqueId)
|
|
197
|
+
return opaqueId;
|
|
174
198
|
throw new CliError('INVALID_REF', `Invalid thread reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
|
|
175
199
|
}
|
|
176
200
|
function assertChannelInWorkspace(channel, workspaceId) {
|
|
@@ -242,6 +266,9 @@ export function getDirectChannelId(ref) {
|
|
|
242
266
|
}
|
|
243
267
|
throw new CliError('INVALID_REF', `Invalid channel reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
|
|
244
268
|
}
|
|
269
|
+
const opaqueId = getOpaqueNameId(parsed);
|
|
270
|
+
if (opaqueId)
|
|
271
|
+
return opaqueId;
|
|
245
272
|
return null;
|
|
246
273
|
}
|
|
247
274
|
export function resolveCommentId(ref) {
|
|
@@ -252,6 +279,9 @@ export function resolveCommentId(ref) {
|
|
|
252
279
|
if (parsed.type === 'url' && parsed.parsed.commentId) {
|
|
253
280
|
return parsed.parsed.commentId;
|
|
254
281
|
}
|
|
282
|
+
const opaqueId = getOpaqueNameId(parsed);
|
|
283
|
+
if (opaqueId)
|
|
284
|
+
return opaqueId;
|
|
255
285
|
throw new CliError('INVALID_REF', `Invalid comment reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
|
|
256
286
|
}
|
|
257
287
|
export function resolveConversationId(ref) {
|
|
@@ -262,6 +292,9 @@ export function resolveConversationId(ref) {
|
|
|
262
292
|
if (parsed.type === 'url' && parsed.parsed.conversationId) {
|
|
263
293
|
return parsed.parsed.conversationId;
|
|
264
294
|
}
|
|
295
|
+
const opaqueId = getOpaqueNameId(parsed);
|
|
296
|
+
if (opaqueId)
|
|
297
|
+
return opaqueId;
|
|
265
298
|
throw new CliError('INVALID_REF', `Invalid conversation reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
|
|
266
299
|
}
|
|
267
300
|
export function resolveMessageId(ref) {
|
|
@@ -272,6 +305,9 @@ export function resolveMessageId(ref) {
|
|
|
272
305
|
if (parsed.type === 'url' && parsed.parsed.messageId) {
|
|
273
306
|
return parsed.parsed.messageId;
|
|
274
307
|
}
|
|
308
|
+
const opaqueId = getOpaqueNameId(parsed);
|
|
309
|
+
if (opaqueId)
|
|
310
|
+
return opaqueId;
|
|
275
311
|
throw new CliError('INVALID_REF', `Invalid message reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
|
|
276
312
|
}
|
|
277
313
|
export function classifyCommsUrl(url) {
|