@doist/twist-cli 2.23.2 → 2.24.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 +8 -3
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/token.d.ts.map +1 -1
- package/dist/commands/auth/token.js +5 -1
- package/dist/commands/auth/token.js.map +1 -1
- package/dist/commands/channel.js +4 -4
- package/dist/commands/channel.js.map +1 -1
- package/dist/commands/groups.d.ts +3 -0
- package/dist/commands/groups.d.ts.map +1 -0
- package/dist/commands/groups.js +53 -0
- package/dist/commands/groups.js.map +1 -0
- package/dist/commands/thread/create.d.ts.map +1 -1
- package/dist/commands/thread/create.js +15 -8
- package/dist/commands/thread/create.js.map +1 -1
- package/dist/commands/thread/helpers.d.ts +16 -1
- package/dist/commands/thread/helpers.d.ts.map +1 -1
- package/dist/commands/thread/helpers.js +28 -3
- package/dist/commands/thread/helpers.js.map +1 -1
- package/dist/commands/thread/reply.d.ts.map +1 -1
- package/dist/commands/thread/reply.js +22 -7
- package/dist/commands/thread/reply.js.map +1 -1
- package/dist/commands/thread/view.js +2 -2
- package/dist/commands/thread/view.js.map +1 -1
- package/dist/commands/user.js +4 -4
- package/dist/commands/user.js.map +1 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +6 -2
- package/dist/commands/view.js.map +1 -1
- package/dist/commands/workspace.js +4 -4
- package/dist/commands/workspace.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +3 -2
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +10 -2
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +4 -1
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/oauth.d.ts.map +1 -1
- package/dist/lib/oauth.js +10 -9
- package/dist/lib/oauth.js.map +1 -1
- package/dist/lib/output.d.ts +2 -1
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +6 -0
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/permissions.d.ts.map +1 -1
- package/dist/lib/permissions.js +3 -1
- package/dist/lib/permissions.js.map +1 -1
- package/dist/lib/refs.d.ts +4 -0
- package/dist/lib/refs.d.ts.map +1 -1
- package/dist/lib/refs.js +23 -4
- package/dist/lib/refs.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 +8 -2
- package/dist/lib/skills/content.js.map +1 -1
- package/dist/lib/skills/create-installer.d.ts.map +1 -1
- package/dist/lib/skills/create-installer.js +6 -2
- package/dist/lib/skills/create-installer.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [2.24.0](https://github.com/Doist/twist-cli/compare/v2.23.3...v2.24.0) (2026-04-06)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- add group support to --notify and new tw groups command ([#129](https://github.com/Doist/twist-cli/issues/129)) ([cba3f3f](https://github.com/Doist/twist-cli/commit/cba3f3f86451ef570b051ae3c9210530863f6bbf))
|
|
6
|
+
|
|
7
|
+
## [2.23.3](https://github.com/Doist/twist-cli/compare/v2.23.2...v2.23.3) (2026-04-05)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- route auth errors to stderr and add actionable hints ([#145](https://github.com/Doist/twist-cli/issues/145)) ([3ab872c](https://github.com/Doist/twist-cli/commit/3ab872c82d45342cd4518aa7c96b8581a5dc361c))
|
|
12
|
+
|
|
1
13
|
## [2.23.2](https://github.com/Doist/twist-cli/compare/v2.23.1...v2.23.2) (2026-04-05)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAcA,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEnF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { saveApiToken } from '../../lib/auth.js';
|
|
3
|
+
import { CliError } from '../../lib/errors.js';
|
|
3
4
|
import { startCallbackServer } from '../../lib/oauth-server.js';
|
|
4
5
|
import { buildAuthorizationUrl, exchangeCodeForToken, READ_ONLY_SCOPES, READ_WRITE_SCOPES, registerDynamicClient, } from '../../lib/oauth.js';
|
|
5
6
|
import { generateCodeChallenge, generateCodeVerifier, generateState } from '../../lib/pkce.js';
|
|
@@ -54,9 +55,13 @@ export async function loginWithOAuth(options) {
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
catch (error) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
if (error instanceof CliError)
|
|
59
|
+
throw error;
|
|
60
|
+
const detail = error instanceof Error ? `: ${error.message}` : '';
|
|
61
|
+
throw new CliError('AUTH_FAILED', `OAuth authentication failed${detail}`, [
|
|
62
|
+
'Try again: tw auth login',
|
|
63
|
+
'Or set TWIST_API_TOKEN environment variable',
|
|
64
|
+
]);
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
67
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AA6BA,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AA6BA,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBlE"}
|
|
@@ -31,7 +31,11 @@ export async function loginWithToken(token) {
|
|
|
31
31
|
}
|
|
32
32
|
token = await promptHiddenInput('API token: ');
|
|
33
33
|
if (!token.trim()) {
|
|
34
|
-
throw new CliError('NO_TOKEN', 'No token provided'
|
|
34
|
+
throw new CliError('NO_TOKEN', 'No token provided', [
|
|
35
|
+
'Run: tw auth token (interactive prompt)',
|
|
36
|
+
'Or set TWIST_API_TOKEN environment variable',
|
|
37
|
+
'Or use OAuth: tw auth login',
|
|
38
|
+
]);
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
41
|
const saveResult = await saveApiToken(token.trim(), { authMode: 'unknown' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,SAAS,iBAAiB,CAAC,MAAc;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,EAAE,GAAG,eAAe,CAAC;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC,CAAA;QACF,kFAAkF;QAClF,MAAM,SAAS,GAAI,EAAU,CAAC,cAAc,CAE3C;QAAC,EAAU,CAAC,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;YAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAC9B,CAAC;QACL,CAAC,CAAA;QACD,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC1B,OAAO,CAAC,MAAM,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,QAAQ,CACd,UAAU,EACV,wGAAwG,CAC3G,CAAA;QACL,CAAC;QACD,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,SAAS,iBAAiB,CAAC,MAAc;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,EAAE,GAAG,eAAe,CAAC;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC,CAAA;QACF,kFAAkF;QAClF,MAAM,SAAS,GAAI,EAAU,CAAC,cAAc,CAE3C;QAAC,EAAU,CAAC,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;YAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAC9B,CAAC;QACL,CAAC,CAAA;QACD,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC1B,OAAO,CAAC,MAAM,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,QAAQ,CACd,UAAU,EACV,wGAAwG,CAC3G,CAAA;QACL,CAAC;QACD,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,mBAAmB,EAAE;gBAChD,yCAAyC;gBACzC,6CAA6C;gBAC7C,6BAA6B;aAChC,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;IAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAA;IAC9D,qBAAqB,CAAC,UAAU,EAAE,wDAAwD,CAAC,CAAA;AAC/F,CAAC"}
|
package/dist/commands/channel.js
CHANGED
|
@@ -21,10 +21,6 @@ async function listChannels(workspaceRef, options) {
|
|
|
21
21
|
if (!includePrivateChannels()) {
|
|
22
22
|
channels = channels.filter((ch) => ch.public);
|
|
23
23
|
}
|
|
24
|
-
if (channels.length === 0) {
|
|
25
|
-
console.log('No channels found.');
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
24
|
if (options.json) {
|
|
29
25
|
console.log(formatJson(channels, 'channel', options.full));
|
|
30
26
|
return;
|
|
@@ -33,6 +29,10 @@ async function listChannels(workspaceRef, options) {
|
|
|
33
29
|
console.log(formatNdjson(channels, 'channel', options.full));
|
|
34
30
|
return;
|
|
35
31
|
}
|
|
32
|
+
if (channels.length === 0) {
|
|
33
|
+
console.log('No channels found.');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
36
|
for (const ch of channels) {
|
|
37
37
|
const id = colors.timestamp(`id:${ch.id}`);
|
|
38
38
|
const name = colors.channel(ch.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAIpD,KAAK,UAAU,YAAY,CACvB,YAAgC,EAChC,OAAwB;IAExB,IAAI,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,gEAAgE,CACnE,CAAA;IACL,CAAC;IAED,IAAI,WAAmB,CAAA;IACvB,MAAM,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAA;IAE7C,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAChD,WAAW,GAAG,SAAS,CAAC,EAAE,CAAA;IAC9B,CAAC;SAAM,CAAC;QACJ,WAAW,GAAG,MAAM,qBAAqB,EAAE,CAAA;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IAEjE,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;QAC5B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/commands/groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2DnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU5D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { getCurrentWorkspaceId, getWorkspaceGroups } from '../lib/api.js';
|
|
2
|
+
import { CliError } from '../lib/errors.js';
|
|
3
|
+
import { colors, formatJson, formatNdjson, pluralize } from '../lib/output.js';
|
|
4
|
+
import { resolveWorkspaceRef } from '../lib/refs.js';
|
|
5
|
+
async function listGroups(workspaceRef, options) {
|
|
6
|
+
if (workspaceRef && options.workspace) {
|
|
7
|
+
throw new CliError('CONFLICTING_OPTIONS', 'Cannot specify workspace both as argument and --workspace flag');
|
|
8
|
+
}
|
|
9
|
+
let workspaceId;
|
|
10
|
+
const ref = workspaceRef || options.workspace;
|
|
11
|
+
if (ref) {
|
|
12
|
+
const workspace = await resolveWorkspaceRef(ref);
|
|
13
|
+
workspaceId = workspace.id;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
workspaceId = await getCurrentWorkspaceId();
|
|
17
|
+
}
|
|
18
|
+
let groups = await getWorkspaceGroups(workspaceId);
|
|
19
|
+
if (options.search) {
|
|
20
|
+
const query = options.search.toLowerCase();
|
|
21
|
+
groups = groups.filter((g) => g.name.toLowerCase().includes(query));
|
|
22
|
+
}
|
|
23
|
+
if (options.json) {
|
|
24
|
+
console.log(formatJson(groups, 'group', options.full));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (options.ndjson) {
|
|
28
|
+
console.log(formatNdjson(groups, 'group', options.full));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (groups.length === 0) {
|
|
32
|
+
console.log('No groups found.');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
for (const g of groups) {
|
|
36
|
+
const id = colors.timestamp(`id:${g.id}`);
|
|
37
|
+
const name = colors.channel(g.name);
|
|
38
|
+
const members = colors.timestamp(`(${g.userIds.length} ${pluralize(g.userIds.length, 'member')})`);
|
|
39
|
+
console.log(`${id} ${name} ${members}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function registerGroupsCommand(program) {
|
|
43
|
+
program
|
|
44
|
+
.command('groups [workspace-ref]')
|
|
45
|
+
.description('List groups in a workspace')
|
|
46
|
+
.option('--workspace <ref>', 'Workspace ID or name')
|
|
47
|
+
.option('--search <text>', 'Filter by name')
|
|
48
|
+
.option('--json', 'Output as JSON')
|
|
49
|
+
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
50
|
+
.option('--full', 'Include all fields in JSON output')
|
|
51
|
+
.action(listGroups);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/commands/groups.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAM3D,KAAK,aAAa,GAAG,eAAe,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
|
@@ -4,6 +4,7 @@ import { openEditor, readStdin } from '../../lib/input.js';
|
|
|
4
4
|
import { formatJson } from '../../lib/output.js';
|
|
5
5
|
import { assertChannelIsPublic } from '../../lib/public-channels.js';
|
|
6
6
|
import { parseUserIdRefs, resolveChannelId } from '../../lib/refs.js';
|
|
7
|
+
import { printNotifyLines, resolveNotifyIds } from './helpers.js';
|
|
7
8
|
export async function createThread(channelRef, title, content, options) {
|
|
8
9
|
const channelId = resolveChannelId(channelRef);
|
|
9
10
|
let threadContent = await readStdin();
|
|
@@ -16,28 +17,34 @@ export async function createThread(channelRef, title, content, options) {
|
|
|
16
17
|
if (!threadContent || threadContent.trim() === '') {
|
|
17
18
|
throw new CliError('MISSING_CONTENT', 'No content provided. Pass content as an argument or pipe via stdin.');
|
|
18
19
|
}
|
|
19
|
-
const
|
|
20
|
+
const allIds = options.notify ? parseUserIdRefs(options.notify) : undefined;
|
|
21
|
+
const client = await getTwistClient();
|
|
22
|
+
const channel = await client.channels.getChannel(channelId);
|
|
23
|
+
await assertChannelIsPublic(channelId, channel.workspaceId);
|
|
24
|
+
let resolved;
|
|
25
|
+
if (allIds) {
|
|
26
|
+
resolved = await resolveNotifyIds(allIds, channel.workspaceId);
|
|
27
|
+
}
|
|
20
28
|
if (options.dryRun) {
|
|
21
29
|
console.log('Dry run: would create thread in channel', channelId);
|
|
22
30
|
console.log(`Title: ${title}`);
|
|
23
|
-
if (
|
|
24
|
-
|
|
31
|
+
if (resolved) {
|
|
32
|
+
printNotifyLines(resolved.notified);
|
|
25
33
|
}
|
|
26
34
|
console.log('');
|
|
27
35
|
console.log(threadContent);
|
|
28
36
|
return;
|
|
29
37
|
}
|
|
30
|
-
const client = await getTwistClient();
|
|
31
|
-
const channel = await client.channels.getChannel(channelId);
|
|
32
|
-
await assertChannelIsPublic(channelId, channel.workspaceId);
|
|
33
38
|
const thread = await client.threads.createThread({
|
|
34
39
|
channelId,
|
|
35
40
|
title,
|
|
36
41
|
content: threadContent,
|
|
37
|
-
recipients,
|
|
42
|
+
recipients: resolved?.recipients,
|
|
43
|
+
groups: resolved?.groups,
|
|
38
44
|
});
|
|
39
45
|
if (options.json) {
|
|
40
|
-
|
|
46
|
+
const output = resolved ? { ...thread, notified: resolved.notified } : thread;
|
|
47
|
+
console.log(formatJson(output, 'thread', options.full));
|
|
41
48
|
return;
|
|
42
49
|
}
|
|
43
50
|
console.log(`Thread created: ${thread.url}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/thread/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/thread/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export declare function printSeparator(label: string): void;
|
|
2
|
-
export declare function pluralize(count: number, singular: string): string;
|
|
3
2
|
export interface CommentLike {
|
|
4
3
|
id: number;
|
|
5
4
|
creator: number;
|
|
@@ -7,4 +6,20 @@ export interface CommentLike {
|
|
|
7
6
|
content: string;
|
|
8
7
|
}
|
|
9
8
|
export declare function printComment(comment: CommentLike, userMap: Map<number, string>, raw: boolean): void;
|
|
9
|
+
export type NamedEntity = {
|
|
10
|
+
id: number;
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
export interface NotifiedInfo {
|
|
14
|
+
users: NamedEntity[];
|
|
15
|
+
groups: NamedEntity[];
|
|
16
|
+
}
|
|
17
|
+
export interface ResolvedNotify {
|
|
18
|
+
recipients: number[] | undefined;
|
|
19
|
+
groups: number[] | undefined;
|
|
20
|
+
notified: NotifiedInfo;
|
|
21
|
+
}
|
|
22
|
+
export declare function resolveNotifyIds(ids: number[], workspaceId: number): Promise<ResolvedNotify>;
|
|
23
|
+
export declare function formatNotifyLabel(items: NamedEntity[]): string;
|
|
24
|
+
export declare function printNotifyLines(notified: NotifiedInfo): void;
|
|
10
25
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAalD;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,IAAI,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,YAAY,CACxB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,GAAG,EAAE,OAAO,GACb,IAAI,CAMN;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAChC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,YAAY,CAAA;CACzB;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,CAAC,CAczB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAO7D"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
+
import { getWorkspaceGroups, getWorkspaceUsers } from '../../lib/api.js';
|
|
2
3
|
import { formatRelativeDate } from '../../lib/dates.js';
|
|
3
4
|
import { isAccessible } from '../../lib/global-args.js';
|
|
4
5
|
import { renderMarkdown } from '../../lib/markdown.js';
|
|
5
6
|
import { colors } from '../../lib/output.js';
|
|
7
|
+
import { partitionNotifyIds } from '../../lib/refs.js';
|
|
6
8
|
export function printSeparator(label) {
|
|
7
9
|
const totalWidth = 60;
|
|
8
10
|
const labelWithPadding = ` ${label} `;
|
|
@@ -15,9 +17,6 @@ export function printSeparator(label) {
|
|
|
15
17
|
console.log(line);
|
|
16
18
|
console.log('');
|
|
17
19
|
}
|
|
18
|
-
export function pluralize(count, singular) {
|
|
19
|
-
return count === 1 ? singular : `${singular}s`;
|
|
20
|
-
}
|
|
21
20
|
export function printComment(comment, userMap, raw) {
|
|
22
21
|
const author = colors.author(userMap.get(comment.creator) || `user:${comment.creator}`);
|
|
23
22
|
const time = colors.timestamp(formatRelativeDate(comment.posted));
|
|
@@ -25,4 +24,30 @@ export function printComment(comment, userMap, raw) {
|
|
|
25
24
|
console.log(raw ? comment.content : renderMarkdown(comment.content));
|
|
26
25
|
console.log('');
|
|
27
26
|
}
|
|
27
|
+
export async function resolveNotifyIds(ids, workspaceId) {
|
|
28
|
+
const workspaceGroups = await getWorkspaceGroups(workspaceId);
|
|
29
|
+
const groupIdSet = new Set(workspaceGroups.map((g) => g.id));
|
|
30
|
+
const partitioned = partitionNotifyIds(ids, groupIdSet);
|
|
31
|
+
const recipients = partitioned.userIds.length > 0 ? partitioned.userIds : undefined;
|
|
32
|
+
const groups = partitioned.groupIds.length > 0 ? partitioned.groupIds : undefined;
|
|
33
|
+
const workspaceUserList = await getWorkspaceUsers(workspaceId);
|
|
34
|
+
const userMap = new Map(workspaceUserList.map((u) => [u.id, u.name]));
|
|
35
|
+
const groupMap = new Map(workspaceGroups.map((g) => [g.id, g.name]));
|
|
36
|
+
const notified = {
|
|
37
|
+
users: (recipients ?? []).map((id) => ({ id, name: userMap.get(id) ?? `user:${id}` })),
|
|
38
|
+
groups: (groups ?? []).map((id) => ({ id, name: groupMap.get(id) ?? `group:${id}` })),
|
|
39
|
+
};
|
|
40
|
+
return { recipients, groups, notified };
|
|
41
|
+
}
|
|
42
|
+
export function formatNotifyLabel(items) {
|
|
43
|
+
return items.map((i) => `${i.name} (${i.id})`).join(', ');
|
|
44
|
+
}
|
|
45
|
+
export function printNotifyLines(notified) {
|
|
46
|
+
if (notified.users.length > 0) {
|
|
47
|
+
console.log(`Notify users: ${formatNotifyLabel(notified.users)}`);
|
|
48
|
+
}
|
|
49
|
+
if (notified.groups.length > 0) {
|
|
50
|
+
console.log(`Notify groups: ${formatNotifyLabel(notified.groups)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
28
53
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/reply.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/reply.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAM3D,KAAK,YAAY,GAAG,eAAe,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAsB,aAAa,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,GACtB,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
|
@@ -4,6 +4,7 @@ import { openEditor, readStdin } from '../../lib/input.js';
|
|
|
4
4
|
import { formatJson } from '../../lib/output.js';
|
|
5
5
|
import { assertChannelIsPublic } from '../../lib/public-channels.js';
|
|
6
6
|
import { parseUserIdRefs, resolveThreadId } from '../../lib/refs.js';
|
|
7
|
+
import { printNotifyLines, resolveNotifyIds } from './helpers.js';
|
|
7
8
|
export async function replyToThread(ref, content, options) {
|
|
8
9
|
const threadId = resolveThreadId(ref);
|
|
9
10
|
if (options.close && options.reopen) {
|
|
@@ -20,45 +21,59 @@ export async function replyToThread(ref, content, options) {
|
|
|
20
21
|
throw new CliError('MISSING_CONTENT', 'No content provided. Pass content as an argument or pipe via stdin.');
|
|
21
22
|
}
|
|
22
23
|
const notifyValue = options.notify ?? 'EVERYONE_IN_THREAD';
|
|
24
|
+
const isSpecialRecipient = notifyValue === 'EVERYONE' || notifyValue === 'EVERYONE_IN_THREAD';
|
|
25
|
+
const client = await getTwistClient();
|
|
26
|
+
const thread = await client.threads.getThread(threadId);
|
|
27
|
+
await assertChannelIsPublic(thread.channelId, thread.workspaceId);
|
|
23
28
|
let recipients;
|
|
24
|
-
|
|
29
|
+
let resolved;
|
|
30
|
+
if (isSpecialRecipient) {
|
|
25
31
|
recipients = notifyValue;
|
|
26
32
|
}
|
|
27
33
|
else {
|
|
28
|
-
|
|
34
|
+
const allIds = parseUserIdRefs(notifyValue);
|
|
35
|
+
resolved = await resolveNotifyIds(allIds, thread.workspaceId);
|
|
36
|
+
recipients = resolved.recipients;
|
|
29
37
|
}
|
|
30
38
|
const action = options.close ? 'close' : options.reopen ? 'reopen' : undefined;
|
|
31
39
|
const actionLabel = action === 'close' ? 'close' : action === 'reopen' ? 'reopen' : undefined;
|
|
32
40
|
if (options.dryRun) {
|
|
33
41
|
const actionSuffix = actionLabel ? ` and ${actionLabel} it` : '';
|
|
34
42
|
console.log(`Dry run: would post comment to thread ${threadId}${actionSuffix}`);
|
|
35
|
-
|
|
43
|
+
if (isSpecialRecipient) {
|
|
44
|
+
console.log(`Notify: ${notifyValue}`);
|
|
45
|
+
}
|
|
46
|
+
else if (resolved) {
|
|
47
|
+
printNotifyLines(resolved.notified);
|
|
48
|
+
}
|
|
36
49
|
console.log('');
|
|
37
50
|
console.log(replyContent);
|
|
38
51
|
return;
|
|
39
52
|
}
|
|
40
|
-
const
|
|
41
|
-
const thread = await client.threads.getThread(threadId);
|
|
42
|
-
await assertChannelIsPublic(thread.channelId, thread.workspaceId);
|
|
53
|
+
const groupsPayload = resolved?.groups ? { groups: resolved.groups } : {};
|
|
43
54
|
const comment = action === 'close'
|
|
44
55
|
? await client.threads.closeThread({
|
|
45
56
|
id: threadId,
|
|
46
57
|
content: replyContent,
|
|
47
58
|
recipients,
|
|
59
|
+
...groupsPayload,
|
|
48
60
|
})
|
|
49
61
|
: action === 'reopen'
|
|
50
62
|
? await client.threads.reopenThread({
|
|
51
63
|
id: threadId,
|
|
52
64
|
content: replyContent,
|
|
53
65
|
recipients,
|
|
66
|
+
...groupsPayload,
|
|
54
67
|
})
|
|
55
68
|
: await client.comments.createComment({
|
|
56
69
|
threadId,
|
|
57
70
|
content: replyContent,
|
|
58
71
|
recipients,
|
|
72
|
+
...groupsPayload,
|
|
59
73
|
});
|
|
60
74
|
if (options.json) {
|
|
61
|
-
|
|
75
|
+
const output = resolved ? { ...comment, notified: resolved.notified } : comment;
|
|
76
|
+
console.log(formatJson(output, 'comment', options.full));
|
|
62
77
|
return;
|
|
63
78
|
}
|
|
64
79
|
const suffix = actionLabel ? ` (thread ${actionLabel === 'close' ? 'closed' : 'reopened'})` : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reply.js","sourceRoot":"","sources":["../../../src/commands/thread/reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"reply.js","sourceRoot":"","sources":["../../../src/commands/thread/reply.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { assertBatchData, getTwistClient } from '../../lib/api.js';
|
|
3
3
|
import { formatRelativeDate } from '../../lib/dates.js';
|
|
4
4
|
import { renderMarkdown } from '../../lib/markdown.js';
|
|
5
|
-
import { colors, formatJson } from '../../lib/output.js';
|
|
5
|
+
import { colors, formatJson, pluralize } from '../../lib/output.js';
|
|
6
6
|
import { assertChannelIsPublic } from '../../lib/public-channels.js';
|
|
7
7
|
import { extractId, parseRef, resolveThreadId } from '../../lib/refs.js';
|
|
8
|
-
import {
|
|
8
|
+
import { printComment, printSeparator } from './helpers.js';
|
|
9
9
|
async function viewSingleComment(client, threadId, commentId, options) {
|
|
10
10
|
const [threadResponse, commentResponse] = await client.batch(client.threads.getThread(threadId, { batch: true }), client.comments.getComment(commentId, { batch: true }));
|
|
11
11
|
const thread = assertBatchData(threadResponse, 'thread');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/thread/view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/thread/view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAQ3D,KAAK,UAAU,iBAAiB,CAC5B,MAAgB,EAChB,QAAgB,EAChB,SAAiB,EACjB,OAAoB;IAEpB,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CACxD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACnD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CACzD,CAAA;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,EAAE,WAAW,SAAS,EAAE,CAAC,CAAA;IAExE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1D,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACtC,MAAM,CAAC,cAAc,CAAC,WAAW,CAC7B,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,EAC/C,EAAE,KAAK,EAAE,IAAI,EAAE,CAClB,CACJ,CAAA;IACD,MAAM,CAAC,eAAe,EAAE,GAAG,aAAa,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAC1D,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC7D,GAAG,SAAS,CACf,CAAA;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,CACnB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACnF,CAAA;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,MAAM,GAAG;YACX,GAAG,OAAO;YACV,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;YACzC,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,WAAW,EAAE,MAAM,CAAC,KAAK;SAC5B,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACxD,OAAM;IACV,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACP,IAAI,CAAC,SAAS,CAAC;YACX,IAAI,EAAE,SAAS;YACf,GAAG,OAAO;YACV,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;SAC5C,CAAC,CACL,CAAA;QACD,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,OAAoB;IAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAChF,IAAI,SAA6B,CAAA;IACjC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;SAAM,CAAC;QACJ,SAAS,GAAG,YAAY,CAAA;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IAErC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE9D,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CACzD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACnD,MAAM,CAAC,QAAQ,CAAC,WAAW,CACvB;QACI,QAAQ;QACR,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QACzD,KAAK;KACR,EACD,EAAE,KAAK,EAAE,IAAI,EAAE,CAClB,CACJ,CAAA;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;IAE9D,MAAM,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IAEjE,6DAA6D;IAC7D,IAAI,eAAe,GAAG,QAAQ,CAAA;IAC9B,IAAI,eAAe,GAAoB,EAAE,CAAA;IACzC,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACrE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;QAEpE,IAAI,YAAY,EAAE,CAAC;YACf,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAA;YACxC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACvE,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAA;YAC9E,eAAe,GAAG,QAAQ;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,gBAAgB,CAAC;iBACpD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;iBACrD,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;iBACrB,OAAO,EAAE,CAAA;YACd,SAAS,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACJ,eAAe,GAAG,EAAE,CAAA;YACpB,SAAS,GAAG,KAAK,CAAA;QACrB,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS;QAC5B,MAAM,CAAC,OAAO;QACd,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACxC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAC3C,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACtC,MAAM,CAAC,cAAc,CAAC,WAAW,CAC7B,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,EAC/C,EAAE,KAAK,EAAE,IAAI,EAAE,CAClB,CACJ,CAAA;IACD,MAAM,CAAC,eAAe,EAAE,GAAG,aAAa,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAC1D,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC7D,GAAG,SAAS,CACf,CAAA;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,CACnB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACnF,CAAA;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,MAAM,GAAG;YACX,MAAM,EAAE;gBACJ,GAAG,MAAM;gBACT,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;aAC3C;YACD,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,CAAC;gBACJ,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;aACtC,CAAC,CAAC;SACN,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACxD,OAAM;IACV,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG;YACjB,IAAI,EAAE,QAAQ;YACd,GAAG,MAAM;YACT,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;SAC3C,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;QACzC,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CACP,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CACjF,CAAA;QACL,CAAC;QACD,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAA;QAC3E,OAAO,CAAC,GAAG,CACP,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAC3H,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAE1E,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;YAClC,OAAM;QACV,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAA;YAC1D,MAAM,YAAY,GAAG,iBAAiB,GAAG,CAAC,CAAA;YAC1C,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACnB,cAAc,CAAC,GAAG,YAAY,IAAI,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;YACnF,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACnB,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACpC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAA;YACxD,CAAC;QACL,CAAC;aAAM,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC9B,cAAc,CAAC,GAAG,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;QAC3F,CAAC;QAED,cAAc,CAAC,WAAW,eAAe,CAAC,MAAM,OAAO,CAAC,CAAA;QAExD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACpC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAA;QACxD,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAA;QAC3E,OAAO,CAAC,GAAG,CACP,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAC1F,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEf,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CACnF,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAEf,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAA;YACxD,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
package/dist/commands/user.js
CHANGED
|
@@ -32,10 +32,6 @@ async function listUsers(workspaceRef, options) {
|
|
|
32
32
|
const search = options.search.toLowerCase();
|
|
33
33
|
users = users.filter((u) => u.name.toLowerCase().includes(search) || u.email?.toLowerCase().includes(search));
|
|
34
34
|
}
|
|
35
|
-
if (users.length === 0) {
|
|
36
|
-
console.log('No users found.');
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
35
|
if (options.json) {
|
|
40
36
|
console.log(formatJson(users, 'user', options.full));
|
|
41
37
|
return;
|
|
@@ -44,6 +40,10 @@ async function listUsers(workspaceRef, options) {
|
|
|
44
40
|
console.log(formatNdjson(users, 'user', options.full));
|
|
45
41
|
return;
|
|
46
42
|
}
|
|
43
|
+
if (users.length === 0) {
|
|
44
|
+
console.log('No users found.');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
47
|
for (const u of users) {
|
|
48
48
|
const id = colors.timestamp(`id:${u.id}`);
|
|
49
49
|
const name = u.name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAIpD,KAAK,UAAU,eAAe;IAC1B,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;IAEnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IACpC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACvC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACnE,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,YAAgC,EAAE,OAAqB;IAC5E,IAAI,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,QAAQ,CACd,qBAAqB,EACrB,gEAAgE,CACnE,CAAA;IACL,CAAC;IAED,IAAI,WAAmB,CAAA;IACvB,MAAM,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAA;IAE7C,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAChD,WAAW,GAAG,SAAS,CAAC,EAAE,CAAA;IAC9B,CAAC;SAAM,CAAC;QACJ,WAAW,GAAG,MAAM,qBAAqB,EAAE,CAAA;IAC/C,CAAC;IAED,IAAI,KAAK,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAEhD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QAC3C,KAAK,GAAG,KAAK,CAAC,MAAM,CAChB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC1F,CAAA;IACL,CAAC;IAED,IAAI,
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8BnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8BnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqE1D"}
|
package/dist/commands/view.js
CHANGED
|
@@ -37,13 +37,17 @@ Examples:
|
|
|
37
37
|
tw view https://twist.com/a/1585/msg/400/m/500
|
|
38
38
|
tw view https://twist.com/a/1585/msg/400/m/500 --json`)
|
|
39
39
|
.action(async (url) => {
|
|
40
|
+
const urlHints = [
|
|
41
|
+
'Expected: https://twist.com/a/{workspaceId}/...',
|
|
42
|
+
'Run: tw view --help for examples',
|
|
43
|
+
];
|
|
40
44
|
if (!looksLikeTwistAppUrl(url)) {
|
|
41
|
-
throw new CliError('INVALID_URL', `Not a recognized Twist URL: ${url}
|
|
45
|
+
throw new CliError('INVALID_URL', `Not a recognized Twist URL: ${url}`, urlHints);
|
|
42
46
|
}
|
|
43
47
|
const { url: resolvedUrl, passthroughArgs } = extractViewInvocation(url);
|
|
44
48
|
const route = classifyTwistUrl(resolvedUrl);
|
|
45
49
|
if (!route) {
|
|
46
|
-
throw new CliError('INVALID_URL', `Not a recognized Twist URL: ${resolvedUrl}
|
|
50
|
+
throw new CliError('INVALID_URL', `Not a recognized Twist URL: ${resolvedUrl}`, urlHints);
|
|
47
51
|
}
|
|
48
52
|
switch (route.entityType) {
|
|
49
53
|
case 'thread':
|