@doist/todoist-cli 1.8.1 → 1.9.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.
@@ -1 +1 @@
1
- {"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../src/lib/dates.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,UAAU,SAAI,GAAG,MAAM,CAInD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvE"}
1
+ {"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../src/lib/dates.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,UAAU,SAAI,GAAG,MAAM,CAInD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAExE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvE"}
package/dist/lib/dates.js CHANGED
@@ -1,4 +1,4 @@
1
- import { format, isBefore, isEqual, parseISO } from 'date-fns';
1
+ import { isBefore, isEqual, parseISO } from 'date-fns';
2
2
  export function getLocalDate(daysOffset = 0) {
3
3
  const date = new Date();
4
4
  date.setDate(date.getDate() + daysOffset);
@@ -9,22 +9,20 @@ export function getLocalDate(daysOffset = 0) {
9
9
  * and return a Date object set to start of day for date comparison
10
10
  */
11
11
  export function parseDueDateToDay(dateStr) {
12
- // Parse the date string (handles both YYYY-MM-DD and YYYY-MM-DDTHH:mm:ss formats)
13
12
  const parsed = parseISO(dateStr);
14
- // Return start of day to compare only dates, not times
15
- return parseISO(format(parsed, 'yyyy-MM-dd'));
13
+ return new Date(Date.UTC(parsed.getFullYear(), parsed.getMonth(), parsed.getDate()));
16
14
  }
17
15
  /**
18
16
  * Check if a due date is on a specific day
19
17
  */
20
18
  export function isDueOnDate(dueDate, targetDate) {
21
- return isEqual(parseDueDateToDay(dueDate), parseISO(targetDate));
19
+ return isEqual(parseDueDateToDay(dueDate), parseDueDateToDay(targetDate));
22
20
  }
23
21
  /**
24
22
  * Check if a due date is before a specific day
25
23
  */
26
24
  export function isDueBefore(dueDate, targetDate) {
27
- return isBefore(parseDueDateToDay(dueDate), parseISO(targetDate));
25
+ return isBefore(parseDueDateToDay(dueDate), parseDueDateToDay(targetDate));
28
26
  }
29
27
  export function formatDateHeader(dateStr, today) {
30
28
  if (isDueBefore(dateStr, today))
@@ -1 +1 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../src/lib/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE9D,MAAM,UAAU,YAAY,CAAC,UAAU,GAAG,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAA;IACzC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AAC7H,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC7C,kFAAkF;IAClF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChC,uDAAuD;IACvD,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,UAAkB;IAC3D,OAAO,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,UAAkB;IAC3D,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAa;IAC3D,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACjD,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,OAAO,CAAA;IAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAChC,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAA;IACrD,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1D,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC9D,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;KACjB,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../src/lib/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEtD,MAAM,UAAU,YAAY,CAAC,UAAU,GAAG,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAA;IACzC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AAC7H,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;AACxF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,UAAkB;IAC3D,OAAO,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,UAAkB;IAC3D,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAa;IAC3D,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACjD,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,OAAO,CAAA;IAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IAChC,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAA;IACrD,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1D,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC9D,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;KACjB,CAAC,CAAA;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/lib/oauth-server.ts"],"names":[],"mappings":"AAiFA,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG;IACxD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;CACtB,CA2EA;AAED,eAAO,MAAM,kBAAkB,mCAAsC,CAAA"}
1
+ {"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/lib/oauth-server.ts"],"names":[],"mappings":"AA+aA,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG;IACxD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;CACtB,CA2EA;AAED,eAAO,MAAM,kBAAkB,mCAAsC,CAAA"}
@@ -3,74 +3,424 @@ const PORT = 8765;
3
3
  const TIMEOUT_MS = 3 * 60 * 1000; // 3 minutes
4
4
  const SUCCESS_HTML = `
5
5
  <!DOCTYPE html>
6
- <html>
6
+ <html lang="en">
7
7
  <head>
8
8
  <meta charset="UTF-8">
9
- <title>Todoist CLI - Authenticated</title>
9
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
+ <title>Connected - Todoist CLI</title>
10
11
  <style>
12
+ :root {
13
+ --bg: #fafaf8;
14
+ --surface: #ffffff;
15
+ --border: rgba(0, 0, 0, 0.07);
16
+ --text: #1d1d1f;
17
+ --text-secondary: #6e6e73;
18
+ --text-muted: #aeaeb2;
19
+ --todoist-red: #e44332;
20
+ --todoist-red-soft: rgba(228, 67, 50, 0.06);
21
+ --green: #058527;
22
+ --terminal-bg: #1a1b26;
23
+ --terminal-text: #c0caf5;
24
+ --terminal-muted: #565f89;
25
+ --terminal-green: #9ece6a;
26
+ --radius: 16px;
27
+ --radius-sm: 10px;
28
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
29
+ --shadow: 0 1px 3px rgba(0,0,0,0.05), 0 8px 24px rgba(0,0,0,0.06);
30
+ }
31
+ * { margin: 0; padding: 0; box-sizing: border-box; }
11
32
  body {
12
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
33
+ font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
34
+ background: var(--bg);
35
+ color: var(--text);
36
+ min-height: 100vh;
13
37
  display: flex;
14
- justify-content: center;
15
38
  align-items: center;
16
- height: 100vh;
17
- margin: 0;
18
- background: #f5f5f5;
39
+ justify-content: center;
40
+ line-height: 1.6;
41
+ -webkit-font-smoothing: antialiased;
42
+ }
43
+ body::before {
44
+ content: '';
45
+ position: fixed;
46
+ top: -200px;
47
+ left: 50%;
48
+ transform: translateX(-50%);
49
+ width: 800px;
50
+ height: 500px;
51
+ background: radial-gradient(ellipse, rgba(228, 67, 50, 0.07) 0%, transparent 70%);
52
+ pointer-events: none;
19
53
  }
20
54
  .container {
55
+ max-width: 480px;
56
+ width: 100%;
57
+ margin: 0 auto;
58
+ padding: 48px 24px;
59
+ animation: fadeIn 0.5s ease-out;
60
+ }
61
+ @keyframes fadeIn {
62
+ from { opacity: 0; transform: translateY(10px); }
63
+ to { opacity: 1; transform: translateY(0); }
64
+ }
65
+ .header {
21
66
  text-align: center;
22
- padding: 2rem;
23
- background: white;
67
+ margin-bottom: 32px;
68
+ }
69
+ .logo-wrap {
70
+ width: 72px;
71
+ height: 72px;
72
+ margin: 0 auto 20px;
73
+ position: relative;
74
+ }
75
+ .logo-wrap svg {
76
+ width: 100%;
77
+ height: 100%;
78
+ filter: drop-shadow(0 4px 12px rgba(228, 67, 50, 0.2));
79
+ }
80
+ .badge {
81
+ position: absolute;
82
+ bottom: -4px;
83
+ right: -4px;
84
+ width: 26px;
85
+ height: 26px;
86
+ background: var(--green);
87
+ border-radius: 50%;
88
+ display: flex;
89
+ align-items: center;
90
+ justify-content: center;
91
+ box-shadow: 0 0 0 3px var(--bg), 0 2px 8px rgba(5, 133, 39, 0.3);
92
+ animation: pop 0.35s ease-out 0.3s both;
93
+ }
94
+ @keyframes pop {
95
+ from { transform: scale(0); }
96
+ 70% { transform: scale(1.15); }
97
+ to { transform: scale(1); }
98
+ }
99
+ .badge svg { width: 14px; height: 14px; color: white; }
100
+ h1 {
101
+ font-size: 24px;
102
+ font-weight: 700;
103
+ letter-spacing: -0.02em;
104
+ margin-bottom: 4px;
105
+ }
106
+ .subtitle { font-size: 15px; color: var(--text-secondary); }
107
+ .terminal {
108
+ background: var(--terminal-bg);
109
+ border-radius: var(--radius);
110
+ overflow: hidden;
111
+ margin-bottom: 16px;
112
+ box-shadow: var(--shadow);
113
+ }
114
+ .terminal-bar {
115
+ padding: 12px 16px;
116
+ display: flex;
117
+ align-items: center;
118
+ gap: 8px;
119
+ border-bottom: 1px solid rgba(255,255,255,0.06);
120
+ }
121
+ .dots { display: flex; gap: 6px; }
122
+ .dot { width: 12px; height: 12px; border-radius: 50%; }
123
+ .dot-r { background: #ff5f57; }
124
+ .dot-y { background: #febc2e; }
125
+ .dot-g { background: #28c840; }
126
+ .terminal-title {
127
+ flex: 1;
128
+ text-align: center;
129
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
130
+ font-size: 11px;
131
+ color: var(--terminal-muted);
132
+ margin-right: 48px;
133
+ }
134
+ .terminal-body { padding: 16px 20px; }
135
+ .line {
136
+ display: flex;
137
+ align-items: center;
138
+ gap: 8px;
139
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
140
+ font-size: 13px;
141
+ margin-bottom: 8px;
142
+ line-height: 1.5;
143
+ color: var(--terminal-text);
144
+ }
145
+ .line:last-child { margin-bottom: 0; }
146
+ .ps { color: var(--todoist-red); user-select: none; font-weight: 500; }
147
+ .arg { color: var(--terminal-green); }
148
+ .out {
149
+ color: var(--terminal-muted);
150
+ padding-left: 18px;
151
+ margin-top: -4px;
152
+ margin-bottom: 8px;
153
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
154
+ font-size: 12px;
155
+ }
156
+ .out-ok { color: var(--terminal-green); }
157
+ .cursor {
158
+ display: inline-block;
159
+ width: 8px;
160
+ height: 16px;
161
+ background: var(--todoist-red);
162
+ border-radius: 1px;
163
+ animation: blink 1.2s step-end infinite;
164
+ }
165
+ @keyframes blink {
166
+ 0%, 50% { opacity: 1; }
167
+ 50.01%, 100% { opacity: 0; }
168
+ }
169
+ .info {
170
+ padding: 16px 18px;
171
+ background: var(--surface);
172
+ border: 1px solid var(--border);
173
+ border-radius: var(--radius-sm);
174
+ display: flex;
175
+ gap: 14px;
176
+ align-items: flex-start;
177
+ box-shadow: var(--shadow-sm);
178
+ }
179
+ .info-icon {
180
+ flex-shrink: 0;
181
+ width: 34px;
182
+ height: 34px;
183
+ background: var(--todoist-red-soft);
24
184
  border-radius: 8px;
25
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
185
+ display: flex;
186
+ align-items: center;
187
+ justify-content: center;
188
+ }
189
+ .info-icon svg { width: 16px; height: 16px; color: var(--todoist-red); }
190
+ .info-text h4 { font-size: 13px; font-weight: 600; margin-bottom: 2px; }
191
+ .info-text p { font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
192
+ .info-text code {
193
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
194
+ font-size: 12px;
195
+ background: var(--todoist-red-soft);
196
+ padding: 2px 6px;
197
+ border-radius: 4px;
198
+ color: var(--todoist-red);
199
+ }
200
+ footer {
201
+ margin-top: 20px;
202
+ text-align: center;
203
+ font-size: 12px;
204
+ color: var(--text-muted);
205
+ }
206
+ .pill {
207
+ display: inline-block;
208
+ padding: 8px 14px;
209
+ background: var(--surface);
210
+ border: 1px solid var(--border);
211
+ border-radius: 999px;
212
+ box-shadow: var(--shadow-sm);
213
+ }
214
+ .gh { margin-top: 10px; }
215
+ .gh a {
216
+ display: inline-flex;
217
+ align-items: center;
218
+ gap: 5px;
219
+ color: var(--text-muted);
220
+ text-decoration: none;
221
+ font-size: 12px;
222
+ transition: color 0.2s;
223
+ }
224
+ .gh a:hover { color: var(--todoist-red); }
225
+ .gh svg { width: 14px; height: 14px; }
226
+ @media (max-width: 480px) {
227
+ .container { padding: 32px 16px; }
26
228
  }
27
- .checkmark { font-size: 3rem; color: #4caf50; }
28
- h1 { color: #333; margin: 1rem 0; }
29
- p { color: #666; }
30
229
  </style>
31
230
  </head>
32
231
  <body>
33
232
  <div class="container">
34
- <div class="checkmark">✓</div>
35
- <h1>Successfully authenticated!</h1>
36
- <p>You can close this window and return to the terminal.</p>
233
+ <header class="header">
234
+ <div class="logo-wrap">
235
+ <svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
236
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4 0H28C30.2 0 32 1.8 32 4V28C32 30.2 30.2 32 28 32H4C1.8 32 0 30.2 0 28V22.626L.057 22.659C1.422 23.454 4.649 25.333 5.439 25.779C5.917 26.049 6.375 26.043 6.836 25.777C7.112 25.618 10.138 23.876 13.196 22.116L13.271 22.073C16.453 20.242 19.645 18.405 19.786 18.324C20.063 18.164 20.077 17.673 19.767 17.496L19.549 17.372C19.232 17.191 18.822 16.958 18.648 16.855C18.425 16.725 18.023 16.653 17.65 16.867C17.496 16.956 7.149 22.906 6.803 23.102C6.389 23.338 5.877 23.341 5.465 23.102C5.139 22.913 0 19.927 0 19.927V17.234L.057 17.267C1.422 18.062 4.649 19.941 5.439 20.387C5.917 20.657 6.375 20.651 6.836 20.385C7.113 20.226 10.143 18.482 13.203 16.721L13.257 16.69C16.443 14.856 19.645 13.013 19.786 12.932C20.063 12.772 20.077 12.281 19.767 12.104L19.55 11.98C19.233 11.8 18.823 11.566 18.648 11.463C18.425 11.333 18.023 11.261 17.65 11.475C17.496 11.565 7.149 17.514 6.803 17.71C6.389 17.946 5.877 17.949 5.465 17.71C5.139 17.521 0 14.536 0 14.536V11.843L.056 11.875C1.421 12.67 4.648 14.549 5.439 14.996C5.917 15.266 6.375 15.259 6.836 14.993C7.113 14.834 10.148 13.087 13.21 11.325L13.218 11.32C16.418 9.479 19.644 7.622 19.786 7.54C20.063 7.38 20.077 6.889 19.767 6.712L19.549 6.588C19.232 6.408 18.823 6.174 18.648 6.072C18.425 5.942 18.023 5.869 17.65 6.084C17.496 6.173 7.149 12.122 6.803 12.319C6.389 12.554 5.877 12.557 5.465 12.318C5.139 12.13 0 9.144 0 9.144V4C0 1.8 1.8 0 4 0Z" fill="#E44232"/>
237
+ <path d="M6.836 14.993C7.113 14.834 10.147 13.087 13.21 11.325L13.218 11.32C16.417 9.479 19.644 7.622 19.786 7.54C20.063 7.38 20.077 6.889 19.767 6.712L19.549 6.588C19.233 6.408 18.822 6.174 18.648 6.072C18.424 5.942 18.023 5.869 17.65 6.084C17.496 6.173 7.149 12.122 6.803 12.319C6.389 12.554 5.877 12.557 5.464 12.318C5.139 12.13 0 9.144 0 9.144V11.843L.056 11.875C1.42 12.67 4.648 14.549 5.439 14.996C5.917 15.266 6.375 15.259 6.836 14.993Z" fill="white"/>
238
+ <path d="M6.836 20.385C7.112 20.226 10.143 18.482 13.203 16.721L13.227 16.707C16.423 14.867 19.644 13.014 19.786 12.932C20.063 12.772 20.077 12.281 19.767 12.104L19.549 11.98C19.233 11.8 18.822 11.566 18.648 11.463C18.424 11.333 18.023 11.261 17.65 11.475C17.496 11.565 7.149 17.514 6.803 17.71C6.389 17.946 5.877 17.949 5.464 17.71C5.139 17.521 0 14.536 0 14.536V17.234L.057 17.267C1.422 18.062 4.648 19.941 5.439 20.387C5.917 20.657 6.375 20.651 6.836 20.385Z" fill="white"/>
239
+ <path d="M13.211 22.108C10.148 23.871 7.113 25.617 6.836 25.777C6.375 26.043 5.917 26.049 5.439 25.779C4.648 25.333 1.421 23.454.057 22.659L0 22.626V19.927C0 19.927 5.139 22.913 5.464 23.102C5.877 23.341 6.389 23.338 6.803 23.102C7.149 22.906 17.496 16.956 17.65 16.867C18.023 16.653 18.424 16.725 18.648 16.855C18.822 16.958 19.233 17.191 19.549 17.372C19.63 17.417 19.704 17.46 19.767 17.496C20.077 17.673 20.063 18.164 19.786 18.324C19.644 18.406 16.412 20.265 13.211 22.108Z" fill="white"/>
240
+ </svg>
241
+ <div class="badge">
242
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
243
+ <polyline points="20 6 9 17 4 12"/>
244
+ </svg>
245
+ </div>
246
+ </div>
247
+ <h1>You're connected</h1>
248
+ <p class="subtitle">Todoist CLI is now authenticated</p>
249
+ </header>
250
+
251
+ <div class="terminal">
252
+ <div class="terminal-bar">
253
+ <div class="dots">
254
+ <span class="dot dot-r"></span>
255
+ <span class="dot dot-y"></span>
256
+ <span class="dot dot-g"></span>
257
+ </div>
258
+ <span class="terminal-title">Terminal</span>
259
+ </div>
260
+ <div class="terminal-body">
261
+ <div class="line">
262
+ <span class="ps">$</span>
263
+ <span>td</span>
264
+ <span class="arg">today</span>
265
+ </div>
266
+ <div class="out out-ok">3 tasks for today</div>
267
+ <div class="line">
268
+ <span class="ps">$</span>
269
+ <span>td</span>
270
+ <span class="arg">add</span>
271
+ <span>"Review pull request"</span>
272
+ </div>
273
+ <div class="out out-ok">Task added</div>
274
+ <div class="line">
275
+ <span class="ps">$</span>
276
+ <span class="cursor"></span>
277
+ </div>
278
+ </div>
279
+ </div>
280
+
281
+ <div class="info">
282
+ <div class="info-icon">
283
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
284
+ <polyline points="4 17 10 11 4 5"></polyline>
285
+ <line x1="12" y1="19" x2="20" y2="19"></line>
286
+ </svg>
287
+ </div>
288
+ <div class="info-text">
289
+ <h4>Return to your terminal</h4>
290
+ <p>You can close this window. Run <code>td --help</code> to see available commands.</p>
291
+ </div>
292
+ </div>
293
+
294
+ <footer>
295
+ <p class="pill">Closing in <span id="countdown">30</span> seconds...</p>
296
+ <p class="gh">
297
+ <a href="https://github.com/Doist/todoist-cli" target="_blank" rel="noopener noreferrer">
298
+ <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
299
+ View on GitHub
300
+ </a>
301
+ </p>
302
+ </footer>
37
303
  </div>
304
+ <script>
305
+ let seconds = 30;
306
+ const el = document.getElementById('countdown');
307
+ const t = setInterval(() => {
308
+ if (--seconds > 0) { el.textContent = seconds; }
309
+ else { clearInterval(t); el.parentElement.textContent = 'You can close this window.'; }
310
+ }, 1000);
311
+ </script>
38
312
  </body>
39
313
  </html>
40
314
  `;
41
315
  const ERROR_HTML = (message) => `
42
316
  <!DOCTYPE html>
43
- <html>
317
+ <html lang="en">
44
318
  <head>
45
319
  <meta charset="UTF-8">
46
- <title>Todoist CLI - Error</title>
320
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
321
+ <title>Error - Todoist CLI</title>
47
322
  <style>
323
+ :root {
324
+ --bg: #fafaf8;
325
+ --surface: #ffffff;
326
+ --border: rgba(0, 0, 0, 0.07);
327
+ --text: #1d1d1f;
328
+ --text-secondary: #6e6e73;
329
+ --red: #e44332;
330
+ --red-soft: rgba(228, 67, 50, 0.06);
331
+ --radius: 12px;
332
+ }
333
+ * { margin: 0; padding: 0; box-sizing: border-box; }
48
334
  body {
49
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
335
+ font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
336
+ background: var(--bg);
337
+ color: var(--text);
338
+ min-height: 100vh;
50
339
  display: flex;
51
- justify-content: center;
52
340
  align-items: center;
53
- height: 100vh;
54
- margin: 0;
55
- background: #f5f5f5;
341
+ justify-content: center;
342
+ -webkit-font-smoothing: antialiased;
56
343
  }
57
344
  .container {
58
345
  text-align: center;
59
- padding: 2rem;
60
- background: white;
61
- border-radius: 8px;
62
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
346
+ padding: 48px 24px;
347
+ max-width: 480px;
348
+ animation: fadeIn 0.5s ease-out;
349
+ }
350
+ @keyframes fadeIn {
351
+ from { opacity: 0; transform: translateY(10px); }
352
+ to { opacity: 1; transform: translateY(0); }
353
+ }
354
+ .logo {
355
+ width: 72px;
356
+ height: 72px;
357
+ margin: 0 auto 20px;
358
+ position: relative;
359
+ }
360
+ .logo svg {
361
+ width: 100%;
362
+ height: 100%;
363
+ filter: drop-shadow(0 4px 12px rgba(228, 67, 50, 0.2));
364
+ }
365
+ .badge {
366
+ position: absolute;
367
+ bottom: -4px;
368
+ right: -4px;
369
+ width: 26px;
370
+ height: 26px;
371
+ background: var(--red);
372
+ border-radius: 50%;
373
+ display: flex;
374
+ align-items: center;
375
+ justify-content: center;
376
+ box-shadow: 0 0 0 3px var(--bg), 0 2px 8px rgba(228, 67, 50, 0.3);
377
+ }
378
+ .badge svg { width: 14px; height: 14px; color: white; }
379
+ h1 {
380
+ font-size: 24px;
381
+ font-weight: 700;
382
+ letter-spacing: -0.02em;
383
+ margin-bottom: 6px;
384
+ }
385
+ p { font-size: 15px; color: var(--text-secondary); line-height: 1.6; }
386
+ .hint {
387
+ margin-top: 24px;
388
+ padding: 16px 20px;
389
+ background: var(--surface);
390
+ border: 1px solid var(--border);
391
+ border-radius: var(--radius);
392
+ font-size: 13px;
393
+ color: var(--text-secondary);
394
+ }
395
+ .hint code {
396
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
397
+ font-size: 12px;
398
+ background: var(--red-soft);
399
+ padding: 2px 6px;
400
+ border-radius: 4px;
401
+ color: var(--red);
63
402
  }
64
- .error { font-size: 3rem; color: #f44336; }
65
- h1 { color: #333; margin: 1rem 0; }
66
- p { color: #666; }
67
403
  </style>
68
404
  </head>
69
405
  <body>
70
406
  <div class="container">
71
- <div class="error">✗</div>
407
+ <div class="logo">
408
+ <svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
409
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M4 0H28C30.2 0 32 1.8 32 4V28C32 30.2 30.2 32 28 32H4C1.8 32 0 30.2 0 28V22.626L.057 22.659C1.422 23.454 4.649 25.333 5.439 25.779C5.917 26.049 6.375 26.043 6.836 25.777C7.112 25.618 10.138 23.876 13.196 22.116L13.271 22.073C16.453 20.242 19.645 18.405 19.786 18.324C20.063 18.164 20.077 17.673 19.767 17.496L19.549 17.372C19.232 17.191 18.822 16.958 18.648 16.855C18.425 16.725 18.023 16.653 17.65 16.867C17.496 16.956 7.149 22.906 6.803 23.102C6.389 23.338 5.877 23.341 5.465 23.102C5.139 22.913 0 19.927 0 19.927V17.234L.057 17.267C1.422 18.062 4.649 19.941 5.439 20.387C5.917 20.657 6.375 20.651 6.836 20.385C7.113 20.226 10.143 18.482 13.203 16.721L13.257 16.69C16.443 14.856 19.645 13.013 19.786 12.932C20.063 12.772 20.077 12.281 19.767 12.104L19.55 11.98C19.233 11.8 18.823 11.566 18.648 11.463C18.425 11.333 18.023 11.261 17.65 11.475C17.496 11.565 7.149 17.514 6.803 17.71C6.389 17.946 5.877 17.949 5.465 17.71C5.139 17.521 0 14.536 0 14.536V11.843L.056 11.875C1.421 12.67 4.648 14.549 5.439 14.996C5.917 15.266 6.375 15.259 6.836 14.993C7.113 14.834 10.148 13.087 13.21 11.325L13.218 11.32C16.418 9.479 19.644 7.622 19.786 7.54C20.063 7.38 20.077 6.889 19.767 6.712L19.549 6.588C19.232 6.408 18.823 6.174 18.648 6.072C18.425 5.942 18.023 5.869 17.65 6.084C17.496 6.173 7.149 12.122 6.803 12.319C6.389 12.554 5.877 12.557 5.465 12.318C5.139 12.13 0 9.144 0 9.144V4C0 1.8 1.8 0 4 0Z" fill="#E44232"/>
410
+ <path d="M6.836 14.993C7.113 14.834 10.147 13.087 13.21 11.325L13.218 11.32C16.417 9.479 19.644 7.622 19.786 7.54C20.063 7.38 20.077 6.889 19.767 6.712L19.549 6.588C19.233 6.408 18.822 6.174 18.648 6.072C18.424 5.942 18.023 5.869 17.65 6.084C17.496 6.173 7.149 12.122 6.803 12.319C6.389 12.554 5.877 12.557 5.464 12.318C5.139 12.13 0 9.144 0 9.144V11.843L.056 11.875C1.42 12.67 4.648 14.549 5.439 14.996C5.917 15.266 6.375 15.259 6.836 14.993Z" fill="white"/>
411
+ <path d="M6.836 20.385C7.112 20.226 10.143 18.482 13.203 16.721L13.227 16.707C16.423 14.867 19.644 13.014 19.786 12.932C20.063 12.772 20.077 12.281 19.767 12.104L19.549 11.98C19.233 11.8 18.822 11.566 18.648 11.463C18.424 11.333 18.023 11.261 17.65 11.475C17.496 11.565 7.149 17.514 6.803 17.71C6.389 17.946 5.877 17.949 5.464 17.71C5.139 17.521 0 14.536 0 14.536V17.234L.057 17.267C1.422 18.062 4.648 19.941 5.439 20.387C5.917 20.657 6.375 20.651 6.836 20.385Z" fill="white"/>
412
+ <path d="M13.211 22.108C10.148 23.871 7.113 25.617 6.836 25.777C6.375 26.043 5.917 26.049 5.439 25.779C4.648 25.333 1.421 23.454.057 22.659L0 22.626V19.927C0 19.927 5.139 22.913 5.464 23.102C5.877 23.341 6.389 23.338 6.803 23.102C7.149 22.906 17.496 16.956 17.65 16.867C18.023 16.653 18.424 16.725 18.648 16.855C18.822 16.958 19.233 17.191 19.549 17.372C19.63 17.417 19.704 17.46 19.767 17.496C20.077 17.673 20.063 18.164 19.786 18.324C19.644 18.406 16.412 20.265 13.211 22.108Z" fill="white"/>
413
+ </svg>
414
+ <div class="badge">
415
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round">
416
+ <line x1="18" y1="6" x2="6" y2="18"/>
417
+ <line x1="6" y1="6" x2="18" y2="18"/>
418
+ </svg>
419
+ </div>
420
+ </div>
72
421
  <h1>Authentication failed</h1>
73
422
  <p>${message}</p>
423
+ <div class="hint">Try again with <code>td auth login</code></div>
74
424
  </div>
75
425
  </body>
76
426
  </html>
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/lib/oauth-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2C,MAAM,WAAW,CAAA;AAEjF,MAAM,IAAI,GAAG,IAAI,CAAA;AACjB,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,YAAY;AAE7C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCpB,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAgC3B,OAAO;;;;CAInB,CAAA;AAED,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IAIrD,IAAI,MAAM,GAAkB,IAAI,CAAA;IAChC,IAAI,SAAS,GAA0B,IAAI,CAAA;IAE3C,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,IAAI,SAAS,EAAE,CAAC;YACZ,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,SAAS,GAAG,IAAI,CAAA;QACpB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,MAAM,GAAG,IAAI,CAAA;QACjB,CAAC;IACL,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpD,MAAM,aAAa,GAAG,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;YAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAA;YAE/D,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC/B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;gBAClB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;gBACpB,OAAM;YACV,CAAC;YAED,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACzC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAE3C,IAAI,KAAK,EAAE,CAAC;gBACR,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAA;gBAClE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC1B,OAAO,EAAE,CAAA;gBACT,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAA;gBAC1C,OAAM;YACV,CAAC;YAED,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAA;gBAClE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC,CAAA;gBACtD,OAAO,EAAE,CAAA;gBACT,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAA;gBACpD,OAAM;YACV,CAAC;YAED,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAA;gBAClE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,gDAAgD,CAAC,CAAC,CAAA;gBACrE,OAAO,EAAE,CAAA;gBACT,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAA;gBAC5C,OAAM;YACV,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAA;YAClE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACrB,OAAO,EAAE,CAAA;YACT,OAAO,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;QAEpC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,GAAG,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACrB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,OAAO,EAAE,CAAA;gBACT,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;YACjD,CAAC,EAAE,UAAU,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC/B,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,IAAI,WAAW,CAAA"}
1
+ {"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/lib/oauth-server.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { Project, Task } from './api/core.js';
3
3
  import { type Workspace } from './api/workspaces.js';
4
4
  export declare function isIdRef(ref: string): boolean;
5
5
  export declare function extractId(ref: string): string;
6
+ export declare function looksLikeRawId(ref: string): boolean;
6
7
  export declare function requireIdRef(ref: string, entityName: string): string;
7
8
  export declare function resolveTaskRef(api: TodoistApi, ref: string): Promise<Task>;
8
9
  export declare function resolveProjectRef(api: TodoistApi, ref: string): Promise<Project>;
@@ -1 +1 @@
1
- {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGrE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CASpE;AAoCD,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQtF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpF;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CA0CjB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA6BzE"}
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGrE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGnD;AAOD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CASpE;AAwCD,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQtF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpF;AAED,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BzE"}
package/dist/lib/refs.js CHANGED
@@ -6,6 +6,16 @@ export function isIdRef(ref) {
6
6
  export function extractId(ref) {
7
7
  return ref.slice(3);
8
8
  }
9
+ export function looksLikeRawId(ref) {
10
+ if (ref.includes(' '))
11
+ return false;
12
+ return /^\d+$/.test(ref) || (/[a-zA-Z]/.test(ref) && /\d/.test(ref));
13
+ }
14
+ function idPrefixHint(ref) {
15
+ if (!looksLikeRawId(ref))
16
+ return [];
17
+ return [`If "${ref}" is an ID, prefix it: id:${ref}`];
18
+ }
9
19
  export function requireIdRef(ref, entityName) {
10
20
  if (!isIdRef(ref)) {
11
21
  throw new Error(formatError('INVALID_REF', `Invalid ${entityName} reference "${ref}".`, [
@@ -29,7 +39,7 @@ async function resolveRef(ref, fetchById, fetchAll, getName, entityType) {
29
39
  if (partial.length > 1) {
30
40
  throw new Error(formatError(`AMBIGUOUS_${entityType.toUpperCase()}`, `Multiple ${entityType}s match "${ref}":`, partial.slice(0, 5).map((item) => `"${getName(item)}" (id:${item.id})`)));
31
41
  }
32
- throw new Error(formatError(`${entityType.toUpperCase()}_NOT_FOUND`, `${entityType} "${ref}" not found.`));
42
+ throw new Error(formatError(`${entityType.toUpperCase()}_NOT_FOUND`, `${entityType} "${ref}" not found.`, idPrefixHint(ref)));
33
43
  }
34
44
  export async function resolveTaskRef(api, ref) {
35
45
  return resolveRef(ref, (id) => api.getTask(id), () => api.getTasks(), (t) => t.content, 'task');
@@ -61,7 +71,7 @@ export async function resolveSectionId(api, ref, projectId) {
61
71
  if (partial.length > 1) {
62
72
  throw new Error(formatError('AMBIGUOUS_SECTION', `Multiple sections match "${ref}":`, partial.slice(0, 5).map((s) => `"${s.name}" (id:${s.id})`)));
63
73
  }
64
- throw new Error(formatError('SECTION_NOT_FOUND', `Section "${ref}" not found in project.`));
74
+ throw new Error(formatError('SECTION_NOT_FOUND', `Section "${ref}" not found in project.`, idPrefixHint(ref)));
65
75
  }
66
76
  export async function resolveParentTaskId(api, ref, projectId, sectionId) {
67
77
  if (isIdRef(ref)) {
@@ -90,7 +100,7 @@ export async function resolveParentTaskId(api, ref, projectId, sectionId) {
90
100
  if (partial.length > 1) {
91
101
  throw new Error(formatError('AMBIGUOUS_PARENT', `Multiple tasks match "${ref}" in project:`, partial.slice(0, 5).map((t) => `"${t.content}" (id:${t.id})`)));
92
102
  }
93
- throw new Error(formatError('PARENT_NOT_FOUND', `Parent task "${ref}" not found in project.`));
103
+ throw new Error(formatError('PARENT_NOT_FOUND', `Parent task "${ref}" not found in project.`, idPrefixHint(ref)));
94
104
  }
95
105
  export async function resolveWorkspaceRef(ref) {
96
106
  const workspaces = await fetchWorkspaces();
@@ -112,6 +122,6 @@ export async function resolveWorkspaceRef(ref) {
112
122
  if (partial.length > 1) {
113
123
  throw new Error(formatError('AMBIGUOUS_WORKSPACE', `Multiple workspaces match "${ref}":`, partial.slice(0, 5).map((w) => `"${w.name}" (id:${w.id})`)));
114
124
  }
115
- throw new Error(formatError('WORKSPACE_NOT_FOUND', `Workspace "${ref}" not found.`));
125
+ throw new Error(formatError('WORKSPACE_NOT_FOUND', `Workspace "${ref}" not found.`, idPrefixHint(ref)));
116
126
  }
117
127
  //# sourceMappingURL=refs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doist/todoist-cli",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "TypeScript CLI for Todoist",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",