@doist/todoist-cli 1.32.0 → 1.34.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +18 -2
  3. package/dist/commands/auth/index.d.ts.map +1 -1
  4. package/dist/commands/auth/index.js +4 -1
  5. package/dist/commands/auth/index.js.map +1 -1
  6. package/dist/commands/auth/login.d.ts +3 -1
  7. package/dist/commands/auth/login.d.ts.map +1 -1
  8. package/dist/commands/auth/login.js +7 -4
  9. package/dist/commands/auth/login.js.map +1 -1
  10. package/dist/commands/auth/status.d.ts.map +1 -1
  11. package/dist/commands/auth/status.js +20 -2
  12. package/dist/commands/auth/status.js.map +1 -1
  13. package/dist/commands/auth/token.js +1 -1
  14. package/dist/commands/auth/token.js.map +1 -1
  15. package/dist/commands/reminder/helpers.d.ts +13 -2
  16. package/dist/commands/reminder/helpers.d.ts.map +1 -1
  17. package/dist/commands/reminder/helpers.js +5 -1
  18. package/dist/commands/reminder/helpers.js.map +1 -1
  19. package/dist/commands/reminder/index.d.ts.map +1 -1
  20. package/dist/commands/reminder/index.js +11 -6
  21. package/dist/commands/reminder/index.js.map +1 -1
  22. package/dist/commands/reminder/list.d.ts +10 -1
  23. package/dist/commands/reminder/list.d.ts.map +1 -1
  24. package/dist/commands/reminder/list.js +68 -8
  25. package/dist/commands/reminder/list.js.map +1 -1
  26. package/dist/lib/api/core.d.ts.map +1 -1
  27. package/dist/lib/api/core.js +47 -42
  28. package/dist/lib/api/core.js.map +1 -1
  29. package/dist/lib/api/uploads.d.ts.map +1 -1
  30. package/dist/lib/api/uploads.js +2 -0
  31. package/dist/lib/api/uploads.js.map +1 -1
  32. package/dist/lib/auth.d.ts +12 -1
  33. package/dist/lib/auth.d.ts.map +1 -1
  34. package/dist/lib/auth.js +44 -4
  35. package/dist/lib/auth.js.map +1 -1
  36. package/dist/lib/oauth.d.ts +5 -1
  37. package/dist/lib/oauth.d.ts.map +1 -1
  38. package/dist/lib/oauth.js +5 -3
  39. package/dist/lib/oauth.js.map +1 -1
  40. package/dist/lib/output.d.ts +1 -1
  41. package/dist/lib/output.d.ts.map +1 -1
  42. package/dist/lib/output.js +15 -0
  43. package/dist/lib/output.js.map +1 -1
  44. package/dist/lib/permissions.d.ts +6 -0
  45. package/dist/lib/permissions.d.ts.map +1 -0
  46. package/dist/lib/permissions.js +79 -0
  47. package/dist/lib/permissions.js.map +1 -0
  48. package/dist/lib/skills/content.d.ts +1 -1
  49. package/dist/lib/skills/content.d.ts.map +1 -1
  50. package/dist/lib/skills/content.js +15 -6
  51. package/dist/lib/skills/content.js.map +1 -1
  52. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [1.34.0](https://github.com/Doist/todoist-cli/compare/v1.33.0...v1.34.0) (2026-03-31)
2
+
3
+ ### Features
4
+
5
+ * add read-only OAuth mode for safe autonomous tool use ([#205](https://github.com/Doist/todoist-cli/issues/205)) ([446756b](https://github.com/Doist/todoist-cli/commit/446756b59f4a4060427afa0e55014bd3de35c857))
6
+
7
+ ## [1.33.0](https://github.com/Doist/todoist-cli/compare/v1.32.0...v1.33.0) (2026-03-30)
8
+
9
+ ### Features
10
+
11
+ * enhance reminder list with REST API and location reminders ([#199](https://github.com/Doist/todoist-cli/issues/199)) ([73ecbfa](https://github.com/Doist/todoist-cli/commit/73ecbfa44efd482af93b034337d055e391b15c62))
12
+
1
13
  ## [1.32.0](https://github.com/Doist/todoist-cli/compare/v1.31.1...v1.32.0) (2026-03-30)
2
14
 
3
15
  ### Features
package/README.md CHANGED
@@ -72,6 +72,14 @@ This opens your browser to authenticate with Todoist. Once approved, the token i
72
72
 
73
73
  If secure storage is unavailable, the CLI warns and falls back to `~/.config/todoist-cli/config.json`. Existing plaintext tokens are migrated automatically the next time the CLI reads them successfully from the config file.
74
74
 
75
+ For a read-only OAuth token (scope `data:read`), run:
76
+
77
+ ```bash
78
+ td auth login --read-only
79
+ ```
80
+
81
+ In read-only mode, commands that change Todoist data (create/update/delete/complete/move/archive, etc.) are blocked by the CLI.
82
+
75
83
  ### Alternative methods
76
84
 
77
85
  **Manual token:** Get your API token from [Todoist Settings > Integrations > Developer](https://todoist.com/app/settings/integrations/developer):
@@ -88,11 +96,19 @@ export TODOIST_API_TOKEN="your-token"
88
96
 
89
97
  `TODOIST_API_TOKEN` always takes priority over the stored token.
90
98
 
99
+ Note: externally provided tokens (`TODOIST_API_TOKEN` or `td auth token`) are treated as unknown scope and assumed write-capable. The CLI cannot currently auto-detect OAuth scope for these tokens.
100
+
91
101
  ### Auth commands
92
102
 
93
103
  ```bash
94
- td auth status # check if authenticated
95
- td auth logout # remove saved token
104
+ td auth status # check if authenticated + mode (read-only/read-write/unknown)
105
+ td auth logout # remove saved token and auth metadata
106
+ ```
107
+
108
+ To switch back to normal write access, re-run:
109
+
110
+ ```bash
111
+ td auth login
96
112
  ```
97
113
 
98
114
  ## Usage
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB1D"}
@@ -4,7 +4,10 @@ import { showStatus } from './status.js';
4
4
  import { loginWithToken } from './token.js';
5
5
  export function registerAuthCommand(program) {
6
6
  const auth = program.command('auth').description('Manage authentication');
7
- auth.command('login').description('Authenticate with Todoist via OAuth').action(loginWithOAuth);
7
+ auth.command('login')
8
+ .description('Authenticate with Todoist via OAuth')
9
+ .option('--read-only', 'Authenticate with read-only scope (data:read)')
10
+ .action(loginWithOAuth);
8
11
  auth.command('token [token]')
9
12
  .description('Save API token for CLI authentication')
10
13
  .action(loginWithToken);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAEzE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAE/F,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,CAAC,CAAA;IAEvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1F,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAEzE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,aAAa,EAAE,+CAA+C,CAAC;SACtE,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,CAAC,CAAA;IAEvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1F,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare function loginWithOAuth(): Promise<void>;
1
+ export declare function loginWithOAuth(options?: {
2
+ readOnly?: boolean;
3
+ }): Promise<void>;
2
4
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAQA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BpD"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAaA,wBAAsB,cAAc,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BxF"}
@@ -2,15 +2,15 @@ import chalk from 'chalk';
2
2
  import open from 'open';
3
3
  import { saveApiToken } from '../../lib/auth.js';
4
4
  import { startCallbackServer } from '../../lib/oauth-server.js';
5
- import { buildAuthorizationUrl, exchangeCodeForToken } from '../../lib/oauth.js';
5
+ import { READ_ONLY_SCOPES, READ_WRITE_SCOPES, buildAuthorizationUrl, exchangeCodeForToken, } from '../../lib/oauth.js';
6
6
  import { generateCodeChallenge, generateCodeVerifier, generateState } from '../../lib/pkce.js';
7
7
  import { logTokenStorageResult } from './helpers.js';
8
- export async function loginWithOAuth() {
8
+ export async function loginWithOAuth(options = {}) {
9
9
  const codeVerifier = generateCodeVerifier();
10
10
  const codeChallenge = generateCodeChallenge(codeVerifier);
11
11
  const state = generateState();
12
12
  console.log('Opening browser for Todoist authorization...');
13
- const authUrl = buildAuthorizationUrl(codeChallenge, state);
13
+ const authUrl = buildAuthorizationUrl(codeChallenge, state, { readOnly: options.readOnly });
14
14
  const { promise: callbackPromise, cleanup } = startCallbackServer(state);
15
15
  try {
16
16
  await open(authUrl);
@@ -18,7 +18,10 @@ export async function loginWithOAuth() {
18
18
  const code = await callbackPromise;
19
19
  console.log(chalk.dim('Exchanging code for token...'));
20
20
  const accessToken = await exchangeCodeForToken(code, codeVerifier);
21
- const result = await saveApiToken(accessToken);
21
+ const result = await saveApiToken(accessToken, {
22
+ authMode: options.readOnly ? 'read-only' : 'read-write',
23
+ authScope: options.readOnly ? READ_ONLY_SCOPES : READ_WRITE_SCOPES,
24
+ });
22
25
  console.log(chalk.green('✓'), 'Successfully logged in!');
23
26
  logTokenStorageResult(result, 'Token stored securely in the system credential manager');
24
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;IACzD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAA;IAE7B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;IAE3D,MAAM,OAAO,GAAG,qBAAqB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAExE,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAEtD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAEtD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAA;QAE9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAA;QACxD,qBAAqB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;IAC3F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,EAAE,CAAA;QACT,MAAM,KAAK,CAAA;IACf,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkC,EAAE;IACrE,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAA;IACzD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAA;IAE7B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;IAE3D,MAAM,OAAO,GAAG,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3F,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAExE,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAEtD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;QAEtD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE;YAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;YACvD,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB;SACrE,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAA;QACxD,qBAAqB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;IAC3F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,EAAE,CAAA;QACT,MAAM,KAAK,CAAA;IACf,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC3E"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAcA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C3E"}
@@ -1,17 +1,35 @@
1
1
  import chalk from 'chalk';
2
2
  import { getApi } from '../../lib/api/core.js';
3
- import { NoTokenError } from '../../lib/auth.js';
3
+ import { NoTokenError, getAuthMetadata } from '../../lib/auth.js';
4
+ function formatAuthMode(authMode, authScope) {
5
+ if (authMode === 'read-only') {
6
+ return `read-only (OAuth scope ${authScope ?? 'data:read'})`;
7
+ }
8
+ if (authMode === 'read-write') {
9
+ return 'read-write';
10
+ }
11
+ return 'unknown (manual token or env var; assuming write access)';
12
+ }
4
13
  export async function showStatus(options) {
5
14
  try {
6
15
  const api = await getApi();
7
16
  const user = await api.getUser();
17
+ const metadata = await getAuthMetadata();
18
+ const modeLabel = formatAuthMode(metadata.authMode, metadata.authScope);
8
19
  if (options.json) {
9
- console.log(JSON.stringify({ id: user.id, email: user.email, fullName: user.fullName }, null, 2));
20
+ console.log(JSON.stringify({
21
+ id: user.id,
22
+ email: user.email,
23
+ fullName: user.fullName,
24
+ authMode: metadata.authMode,
25
+ authScope: metadata.authScope,
26
+ }, null, 2));
10
27
  }
11
28
  else {
12
29
  console.log(chalk.green('✓'), 'Authenticated');
13
30
  console.log(` Email: ${user.email}`);
14
31
  console.log(` Name: ${user.fullName}`);
32
+ console.log(` Mode: ${modeLabel}`);
15
33
  }
16
34
  }
17
35
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA2B;IACxD,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;QAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACP,IAAI,CAAC,SAAS,CACV,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAC3D,IAAI,EACJ,CAAC,CACJ,CACJ,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAA;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YACrC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5C,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,KAAK,YAAY,YAAY,CAAA;QACjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAA;YACf,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;gBAC9C,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAC9E,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAA;YACf,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAiB,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEhF,SAAS,cAAc,CAAC,QAAkB,EAAE,SAAkB;IAC1D,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,0BAA0B,SAAS,IAAI,WAAW,GAAG,CAAA;IAChE,CAAC;IACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAA;IACvB,CAAC;IACD,OAAO,0DAA0D,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA2B;IACxD,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;QACxC,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;QAEvE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACP,IAAI,CAAC,SAAS,CACV;gBACI,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;aAChC,EACD,IAAI,EACJ,CAAC,CACJ,CACJ,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAA;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YACrC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YACxC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAA;QACxC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,KAAK,YAAY,YAAY,CAAA;QACjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAA;YACf,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;gBAC9C,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAC9E,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAA;YACf,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -10,7 +10,7 @@ export async function loginWithToken(token) {
10
10
  return;
11
11
  }
12
12
  }
13
- const result = await saveApiToken(token.trim());
13
+ const result = await saveApiToken(token.trim(), { authMode: 'unknown' });
14
14
  console.log(chalk.green('✓'), 'API token saved successfully!');
15
15
  logTokenStorageResult(result, 'Token stored securely in the system credential manager');
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAA;YACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACV,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAA;IAC9D,qBAAqB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;AAC3F,CAAC"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAA;YACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACV,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAA;IAC9D,qBAAqB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;AAC3F,CAAC"}
@@ -1,4 +1,15 @@
1
- import type { Reminder, ReminderDue } from '../../lib/api/reminders.js';
2
- export declare function formatReminderTime(reminder: Reminder): string;
1
+ import type { LocationReminder, Reminder } from '@doist/todoist-api-typescript';
2
+ import type { ReminderDue } from '../../lib/api/reminders.js';
3
+ export type ReminderTypeFilter = 'time' | 'location';
4
+ interface ReminderLike {
5
+ type: Reminder['type'];
6
+ minuteOffset?: number;
7
+ due?: {
8
+ date: string;
9
+ };
10
+ }
11
+ export declare function formatReminderTime(reminder: ReminderLike): string;
12
+ export declare function formatLocationReminderRow(reminder: LocationReminder): string;
3
13
  export declare function parseDateTime(value: string): ReminderDue;
14
+ export {};
4
15
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAIvE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAY7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAwBxD"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAI7D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAA;AAEpD,UAAU,YAAY;IAClB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CACzB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAYjE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAG5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAwBxD"}
@@ -1,7 +1,7 @@
1
1
  import { formatDuration } from '../../lib/duration.js';
2
2
  import { formatError } from '../../lib/output.js';
3
3
  export function formatReminderTime(reminder) {
4
- if (reminder.minuteOffset != null) {
4
+ if (reminder.type === 'relative' && reminder.minuteOffset != null) {
5
5
  return `${formatDuration(reminder.minuteOffset)} before due`;
6
6
  }
7
7
  if (reminder.due?.date) {
@@ -13,6 +13,10 @@ export function formatReminderTime(reminder) {
13
13
  }
14
14
  return 'unknown time';
15
15
  }
16
+ export function formatLocationReminderRow(reminder) {
17
+ const trigger = reminder.locTrigger === 'on_enter' ? 'on enter' : 'on leave';
18
+ return `${reminder.name} (${trigger}) at ${reminder.locLat},${reminder.locLong} r=${reminder.radius}m`;
19
+ }
16
20
  export function parseDateTime(value) {
17
21
  const trimmed = value.trim();
18
22
  // ISO format: 2024-01-15T10:00:00
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACjD,IAAI,QAAQ,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;QAChC,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAA;IAChE,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,IAAI,EAAE,CAAA;IACvB,CAAC;IACD,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAE5B,kCAAkC;IAClC,IAAI,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;IACzE,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAC3D,CAAC;IAED,wBAAwB;IACxB,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,MAAM,IAAI,KAAK,CACX,WAAW,CAAC,kBAAkB,EAAE,6BAA6B,KAAK,GAAG,EAAE;QACnE,6DAA6D;KAChE,CAAC,CACL,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/reminder/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAUjD,MAAM,UAAU,kBAAkB,CAAC,QAAsB;IACrD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;QAChE,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAA;IAChE,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,IAAI,EAAE,CAAA;IACvB,CAAC;IACD,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAA0B;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAC5E,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,GAAG,CAAA;AAC1G,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAE5B,kCAAkC;IAClC,IAAI,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;IACzE,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAC3D,CAAC;IAED,wBAAwB;IACxB,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,MAAM,IAAI,KAAK,CACX,WAAW,CAAC,kBAAkB,EAAE,6BAA6B,KAAK,GAAG,EAAE;QACnE,6DAA6D;KAChE,CAAC,CACL,CAAA;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+F9D"}
@@ -4,10 +4,19 @@ import { listReminders } from './list.js';
4
4
  import { updateReminderCmd } from './update.js';
5
5
  export function registerReminderCommand(program) {
6
6
  const reminder = program.command('reminder').description('Manage task reminders');
7
- const listCmd = reminder
7
+ reminder
8
8
  .command('list [task]')
9
- .description('List reminders for a task')
9
+ .description('List reminders (optionally filtered by task, or reminder type)')
10
10
  .option('--task <ref>', 'Task reference (name or id:xxx)')
11
+ .option('--type <type>', 'Filter by type (time or location)', (v) => {
12
+ if (v !== 'time' && v !== 'location') {
13
+ throw new Error("--type must be 'time' or 'location'");
14
+ }
15
+ return v;
16
+ })
17
+ .option('--limit <n>', 'Limit number of results')
18
+ .option('--cursor <cursor>', 'Continue from cursor')
19
+ .option('--all', 'Fetch all results (no limit)')
11
20
  .option('--json', 'Output as JSON')
12
21
  .option('--ndjson', 'Output as newline-delimited JSON')
13
22
  .option('--full', 'Include all fields in JSON output')
@@ -16,10 +25,6 @@ export function registerReminderCommand(program) {
16
25
  throw new Error('Cannot specify task both as argument and --task flag');
17
26
  }
18
27
  const task = taskArg || options.task;
19
- if (!task) {
20
- listCmd.help();
21
- return;
22
- }
23
28
  return listReminders(task, options);
24
29
  });
25
30
  const addCmd = reminder
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/reminder/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,12 @@
1
1
  import type { PaginatedViewOptions } from '../../lib/options.js';
2
- export declare function listReminders(taskRef: string, options: PaginatedViewOptions): Promise<void>;
2
+ import { type ReminderTypeFilter } from './helpers.js';
3
+ interface ListOptions extends PaginatedViewOptions {
4
+ task?: string;
5
+ type?: ReminderTypeFilter;
6
+ limit?: string;
7
+ cursor?: string;
8
+ all?: boolean;
9
+ }
10
+ export declare function listReminders(taskRef: string | undefined, options: ListOptions): Promise<void>;
11
+ export {};
3
12
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAKhE,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCjG"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAIhE,OAAO,EACH,KAAK,kBAAkB,EAG1B,MAAM,cAAc,CAAA;AAErB,UAAU,WAAY,SAAQ,oBAAoB;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,aAAa,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
@@ -1,29 +1,89 @@
1
1
  import chalk from 'chalk';
2
2
  import { getApi } from '../../lib/api/core.js';
3
- import { getTaskReminders } from '../../lib/api/reminders.js';
4
3
  import { formatPaginatedJson, formatPaginatedNdjson } from '../../lib/output.js';
4
+ import { paginate } from '../../lib/pagination.js';
5
5
  import { resolveTaskRef } from '../../lib/refs.js';
6
- import { formatReminderTime } from './helpers.js';
6
+ import { formatLocationReminderRow, formatReminderTime, } from './helpers.js';
7
7
  export async function listReminders(taskRef, options) {
8
8
  const api = await getApi();
9
- const task = await resolveTaskRef(api, taskRef);
10
- const reminders = await getTaskReminders(task.id);
9
+ if (options.cursor && !options.type) {
10
+ throw new Error('--cursor requires --type (time or location) to identify the endpoint');
11
+ }
12
+ let taskId;
13
+ if (taskRef) {
14
+ const task = await resolveTaskRef(api, taskRef);
15
+ taskId = task.id;
16
+ }
17
+ const targetLimit = options.all
18
+ ? Number.MAX_SAFE_INTEGER
19
+ : options.limit
20
+ ? parseInt(options.limit, 10)
21
+ : 200;
22
+ const args = taskId ? { taskId } : {};
23
+ const fetchTime = !options.type || options.type === 'time';
24
+ const fetchLocation = !options.type || options.type === 'location';
25
+ const emptyResult = { results: [], nextCursor: null };
26
+ const [timeResult, locationResult] = await Promise.all([
27
+ fetchTime
28
+ ? paginate(async (cursor, limit) => {
29
+ const resp = await api.getReminders({ ...args, cursor, limit });
30
+ return { results: resp.results, nextCursor: resp.nextCursor };
31
+ }, { limit: targetLimit, startCursor: options.cursor })
32
+ : emptyResult,
33
+ fetchLocation
34
+ ? paginate(async (cursor, limit) => {
35
+ const resp = await api.getLocationReminders({ ...args, cursor, limit });
36
+ return { results: resp.results, nextCursor: resp.nextCursor };
37
+ }, { limit: targetLimit, startCursor: options.cursor })
38
+ : emptyResult,
39
+ ]);
40
+ // When fetching both types, apply the limit across the merged results
41
+ let reminders = timeResult.results;
42
+ let locationReminders = locationResult.results;
43
+ if (fetchTime && fetchLocation) {
44
+ const total = reminders.length + locationReminders.length;
45
+ if (total > targetLimit) {
46
+ const combined = [
47
+ ...reminders.map((r) => ({ kind: 'time', item: r })),
48
+ ...locationReminders.map((r) => ({ kind: 'location', item: r })),
49
+ ].slice(0, targetLimit);
50
+ reminders = combined.filter((c) => c.kind === 'time').map((c) => c.item);
51
+ locationReminders = combined.filter((c) => c.kind === 'location').map((c) => c.item);
52
+ }
53
+ }
54
+ const nextCursor = timeResult.nextCursor || locationResult.nextCursor;
11
55
  if (options.json) {
12
- console.log(formatPaginatedJson({ results: reminders, nextCursor: null }, 'reminder', options.full));
56
+ const allResults = [...reminders, ...locationReminders];
57
+ console.log(formatPaginatedJson({ results: allResults, nextCursor }, 'reminder', options.full));
13
58
  return;
14
59
  }
15
60
  if (options.ndjson) {
16
- console.log(formatPaginatedNdjson({ results: reminders, nextCursor: null }, 'reminder', options.full));
61
+ const timeNdjson = formatPaginatedNdjson({ results: reminders, nextCursor: timeResult.nextCursor }, 'reminder', options.full);
62
+ const locationNdjson = formatPaginatedNdjson({ results: locationReminders, nextCursor: locationResult.nextCursor }, 'location-reminder', options.full);
63
+ const parts = [timeNdjson, locationNdjson].filter(Boolean);
64
+ if (parts.length > 0) {
65
+ console.log(parts.join('\n'));
66
+ }
17
67
  return;
18
68
  }
19
- if (reminders.length === 0) {
69
+ if (reminders.length === 0 && locationReminders.length === 0) {
20
70
  console.log('No reminders.');
21
71
  return;
22
72
  }
73
+ const showTask = !taskId;
23
74
  for (const reminder of reminders) {
24
75
  const id = chalk.dim(reminder.id);
76
+ const type = chalk.cyan('[time]');
25
77
  const time = formatReminderTime(reminder);
26
- console.log(`${id} ${time}`);
78
+ const task = showTask ? chalk.dim(` (task:${reminder.itemId})`) : '';
79
+ console.log(`${id} ${type} ${time}${task}`);
80
+ }
81
+ for (const loc of locationReminders) {
82
+ const id = chalk.dim(loc.id);
83
+ const type = chalk.magenta('[location]');
84
+ const detail = formatLocationReminderRow(loc);
85
+ const task = showTask ? chalk.dim(` (task:${loc.itemId})`) : '';
86
+ console.log(`${id} ${type} ${detail}${task}`);
27
87
  }
28
88
  }
29
89
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,OAA6B;IAC9E,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CACP,mBAAmB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAC1F,CAAA;QACD,OAAM;IACV,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACP,qBAAqB,CACjB,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EACxC,UAAU,EACV,OAAO,CAAC,IAAI,CACf,CACJ,CAAA;QACD,OAAM;IACV,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC5B,OAAM;IACV,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QACzC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;IACjC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/reminder/list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,OAAO,EACP,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,KAAK,OAAO,EACf,MAAM,+BAA+B,CAAA;AAsJtC,wBAAsB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAOlD;AAED,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAMxD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAOnF;AAED,wBAAsB,cAAc,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEjF;AAED,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,OAAO,EACP,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,KAAK,OAAO,EACf,MAAM,+BAA+B,CAAA;AA4JtC,wBAAsB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAOlD;AAED,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAMxD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAOnF;AAED,wBAAsB,cAAc,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEjF;AAED,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { createCommand, TodoistApi, } from '@doist/todoist-api-typescript';
2
2
  import { getApiToken } from '../auth.js';
3
+ import { ensureWriteAllowed, isMutatingApiMethod, isMutatingSyncPayload } from '../permissions.js';
3
4
  import { getProgressTracker } from '../progress.js';
4
5
  import { withSpinner } from '../spinner.js';
5
6
  let apiClient = null;
@@ -51,54 +52,58 @@ const API_SPINNER_MESSAGES = {
51
52
  createProjectFromTemplate: { text: 'Creating project from template...', color: 'green' },
52
53
  importTemplateIntoProject: { text: 'Importing template...', color: 'green' },
53
54
  importTemplateFromId: { text: 'Importing template...', color: 'green' },
55
+ getReminders: { text: 'Loading reminders...', color: 'blue' },
56
+ getLocationReminders: { text: 'Loading location reminders...', color: 'blue' },
54
57
  };
55
58
  function createSpinnerWrappedApi(api) {
56
59
  return new Proxy(api, {
57
60
  get(target, property, receiver) {
58
61
  const originalMethod = Reflect.get(target, property, receiver);
59
- // Only wrap methods (functions) and only if they're likely async API calls
60
- if (typeof originalMethod === 'function' && typeof property === 'string') {
61
- const spinnerConfig = API_SPINNER_MESSAGES[property];
62
- if (spinnerConfig) {
63
- return (...args) => {
64
- const progressTracker = getProgressTracker();
65
- // Extract cursor from args for paginated methods
66
- let cursor = null;
67
- if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {
68
- const options = args[0];
69
- if ('cursor' in options && typeof options.cursor === 'string') {
70
- cursor = options.cursor;
71
- }
72
- }
73
- // Emit progress event for API call start
74
- if (progressTracker.isEnabled()) {
75
- progressTracker.emitApiCall(property, cursor);
76
- }
77
- const result = originalMethod.apply(target, args);
78
- // If the method returns a Promise, wrap it with spinner and progress tracking
79
- if (result && typeof result.then === 'function') {
80
- const wrappedPromise = result
81
- .then((response) => {
82
- // Emit progress event for successful response
83
- if (progressTracker.isEnabled()) {
84
- analyzeAndEmitApiResponse(progressTracker, response);
85
- }
86
- return response;
87
- })
88
- .catch((error) => {
89
- // Emit progress event for error
90
- if (progressTracker.isEnabled()) {
91
- progressTracker.emitError(error.name || 'API_ERROR', error.message);
92
- }
93
- throw error;
94
- });
95
- return withSpinner(spinnerConfig, () => wrappedPromise);
96
- }
97
- return result;
98
- };
99
- }
62
+ if (typeof originalMethod !== 'function' || typeof property !== 'string') {
63
+ return originalMethod;
64
+ }
65
+ const spinnerConfig = API_SPINNER_MESSAGES[property];
66
+ const needsPermissionCheck = property === 'sync' || isMutatingApiMethod(property);
67
+ if (!spinnerConfig && !needsPermissionCheck) {
68
+ return originalMethod;
100
69
  }
101
- return originalMethod;
70
+ return async (...args) => {
71
+ const isMutating = (property === 'sync' && isMutatingSyncPayload(args)) ||
72
+ (property !== 'sync' && isMutatingApiMethod(property));
73
+ if (isMutating) {
74
+ await ensureWriteAllowed();
75
+ }
76
+ const progressTracker = getProgressTracker();
77
+ let cursor = null;
78
+ if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {
79
+ const options = args[0];
80
+ if ('cursor' in options && typeof options.cursor === 'string') {
81
+ cursor = options.cursor;
82
+ }
83
+ }
84
+ if (progressTracker.isEnabled()) {
85
+ progressTracker.emitApiCall(property, cursor);
86
+ }
87
+ const callApi = async () => {
88
+ const response = await originalMethod.apply(target, args);
89
+ if (progressTracker.isEnabled()) {
90
+ analyzeAndEmitApiResponse(progressTracker, response);
91
+ }
92
+ return response;
93
+ };
94
+ try {
95
+ if (spinnerConfig) {
96
+ return await withSpinner(spinnerConfig, callApi);
97
+ }
98
+ return await callApi();
99
+ }
100
+ catch (error) {
101
+ if (progressTracker.isEnabled()) {
102
+ progressTracker.emitError(error.name || 'API_ERROR', error.message);
103
+ }
104
+ throw error;
105
+ }
106
+ };
102
107
  },
103
108
  });
104
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAIb,UAAU,GAIb,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,IAAI,SAAS,GAAsB,IAAI,CAAA;AAEvC,gEAAgE;AAChE,MAAM,oBAAoB,GACtB;IACI,OAAO,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9D,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE;IACrD,WAAW,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3D,SAAS,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE;IACvD,eAAe,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE;IACpE,WAAW,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3D,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE;IACrD,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACzD,SAAS,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE;IACzD,UAAU,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC1D,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACzD,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC3D,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/D,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/D,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE;IACvD,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3D,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC3D,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/D,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/D,YAAY,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;IACxD,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7D,sBAAsB,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnF,qBAAqB,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,QAAQ,EAAE;IACjF,wBAAwB,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,EAAE;IAClF,qBAAqB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE;IACxE,cAAc,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7D,WAAW,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC3D,cAAc,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACjE,gBAAgB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACrE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3C,cAAc,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE;IACjE,0BAA0B,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,EAAE;IACpF,4BAA4B,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,MAAM,EAAE;IACrF,uBAAuB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7E,gBAAgB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE;IACtE,uBAAuB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7E,kBAAkB,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,MAAM,EAAE;IAC1E,oBAAoB,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9E,oBAAoB,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE;IAC7E,oBAAoB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,EAAE;IACtE,mBAAmB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE;IACzE,yBAAyB,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,OAAO,EAAE;IACxF,yBAAyB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC5E,oBAAoB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE;CAC1E,CAAA;AAEL,SAAS,uBAAuB,CAAC,GAAe;IAC5C,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE;QAClB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC1B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAE9D,2EAA2E;YAC3E,IAAI,OAAO,cAAc,KAAK,UAAU,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;gBAEpD,IAAI,aAAa,EAAE,CAAC;oBAChB,OAAO,CAAsB,GAAG,IAAO,EAAE,EAAE;wBACvC,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;wBAE5C,iDAAiD;wBACjD,IAAI,MAAM,GAAkB,IAAI,CAAA;wBAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4BACrE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAA4B,CAAA;4BAClD,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gCAC5D,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;4BAC3B,CAAC;wBACL,CAAC;wBAED,yCAAyC;wBACzC,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC;4BAC9B,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;wBACjD,CAAC;wBAED,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;wBAEjD,8EAA8E;wBAC9E,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BAC9C,MAAM,cAAc,GAAG,MAAM;iCACxB,IAAI,CAAC,CAAC,QAAiB,EAAE,EAAE;gCACxB,8CAA8C;gCAC9C,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC;oCAC9B,yBAAyB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;gCACxD,CAAC;gCACD,OAAO,QAAQ,CAAA;4BACnB,CAAC,CAAC;iCACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;gCACpB,gCAAgC;gCAChC,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC;oCAC9B,eAAe,CAAC,SAAS,CACrB,KAAK,CAAC,IAAI,IAAI,WAAW,EACzB,KAAK,CAAC,OAAO,CAChB,CAAA;gCACL,CAAC;gCACD,MAAM,KAAK,CAAA;4BACf,CAAC,CAAC,CAAA;4BAEN,OAAO,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAA;wBAC3D,CAAC;wBAED,OAAO,MAAM,CAAA;oBACjB,CAAC,CAAA;gBACL,CAAC;YACL,CAAC;YAED,OAAO,cAAc,CAAA;QACzB,CAAC;KACJ,CAAC,CAAA;AACN,CAAC;AAED,SAAS,yBAAyB,CAC9B,eAAsD,EACtD,QAAiB;IAEjB,4CAA4C;IAC5C,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,QAAmC,CAAA;QAEhD,wDAAwD;QACxD,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,eAAe,CAAC,eAAe,CAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EACxB,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAC/D,CAAA;YACD,OAAM;QACV,CAAC;QAED,+CAA+C;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;YAC7D,OAAM;QACV,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,eAAe,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;QACpC,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC;AAID,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IAC/C,OAAO,aAAa,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAC9C,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC;AAED,IAAI,kBAAkB,GAAkB,IAAI,CAAA;AAE5C,MAAM,CAAC,KAAK,UAAU,gBAAgB;IAClC,IAAI,kBAAkB;QAAE,OAAO,kBAAkB,CAAA;IACjD,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;IAChC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAA;IAC5B,OAAO,kBAAkB,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,qBAAqB;IACjC,kBAAkB,GAAG,IAAI,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAc;IACpD,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,GAAG,CAAC,IAAI,CAAC;QACX,QAAQ,EAAE;YACN,aAAa,CAAC,eAAe,EAAE;gBAC3B,EAAE,EAAE,MAAM;gBACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACxC,CAAC;SACL;KACJ,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,WAAoB;IACvE,MAAM,eAAe,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAChD,IAAI,eAAe,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACnD,OAAO,SAAS,GAAG,QAAQ,CAAA;IAC/B,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,MAAc,EACd,OAAe,EACf,WAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC3D,MAAM,GAAG,CAAC,IAAI,CAAC;QACX,QAAQ,EAAE;YACN,aAAa,CAAC,aAAa,EAAE;gBACzB,EAAE,EAAE,MAAM;gBACV,GAAG,EAAE;oBACD,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;oBAChE,WAAW,EAAE,WAAW,CAAC,WAAW;oBACpC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,SAAS;oBAC3C,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,SAAS;iBACtC;aACJ,CAAC;SACL;KACJ,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAoC,GAAM;IACjE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAe,CAAA;AACnG,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"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"}