@smcllns/gmail 0.4.1 → 0.6.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/README.md CHANGED
@@ -180,51 +180,71 @@ DATA STORAGE
180
180
  ~/.gmail-cli/attachments/ Downloaded attachments
181
181
  ```
182
182
 
183
- ## How to use with Claude Code
183
+ ## Programmatic Usage
184
184
 
185
- Here's an abbreviated example of how I use this with Claude Code:
185
+ ### GmailService
186
186
 
187
- ### 1. Create a `gmail` skill
187
+ ```typescript
188
+ import { GmailService } from '@smcllns/gmail';
188
189
 
189
- Show Claude how to use the CLI (independent of your specific preferences). The full content is similar to this README. Abbreviated:
190
+ // File-based accounts (reads from ~/.gmail-cli/)
191
+ const gmail = new GmailService();
192
+ const thread = await gmail.getThread('you@gmail.com', 'threadId123');
193
+ ```
194
+
195
+ #### Programmatic OAuth tokens
196
+
197
+ Provide tokens directly without filesystem access — useful for web apps, serverless functions, and multi-tenant servers:
198
+
199
+ ```typescript
200
+ import { GmailService, type EmailAccount } from '@smcllns/gmail';
190
201
 
191
- ```yaml
192
- # .claude/skills/gmail/SKILL.md
193
- ---
194
- name: gmail
195
- description: Fetches and manages Gmail using @smcllns/gmail. Use when the user asks about their email, wants an email summary, or needs to search/read/archive messages.
196
- allowed-tools: Bash(bunx @smcllns/gmail:*)
197
- ---
198
- # ...
202
+ // Pass accounts at construction
203
+ const gmail = new GmailService({
204
+ accounts: [{
205
+ email: 'user@gmail.com',
206
+ oauth2: { clientId, clientSecret, refreshToken, accessToken },
207
+ }],
208
+ });
199
209
 
200
- # Fetch first 25 unread messages in inbox
201
- bunx @smcllns/gmail search "in:inbox is:unread" --max 25
210
+ // Or add/update tokens after construction
211
+ gmail.setAccountTokens({
212
+ email: 'user@gmail.com',
213
+ oauth2: { clientId, clientSecret, refreshToken, accessToken },
214
+ });
202
215
 
203
- # ...
216
+ // Then use normally
217
+ const threads = await gmail.searchThreads('user@gmail.com', 'in:inbox', 50);
204
218
  ```
205
219
 
206
- ### 2. Create an `/email` command
220
+ When only using in-memory accounts, `GmailService` never touches the filesystem (`~/.gmail-cli/`).
221
+
222
+ Note: `getThread()` normalizes Google API responses, converting `null` values to `undefined`.
223
+
224
+ ### MockGmailService
225
+
226
+ A mock implementation for testing code that depends on GmailService:
227
+
228
+ ```typescript
229
+ import { MockGmailService } from '@smcllns/gmail/testing';
207
230
 
208
- This contains all my subjective instructions and preferences for how to organize my inbox and what I want done. An abbreviated version:
231
+ const mock = new MockGmailService();
209
232
 
210
- ```yaml
211
- # .claude/commands/email.md
212
- ---
213
- description: Read recent emails, organize into categories and write email reports to Obsidian
214
- allowed-tools: Skill(gmail)
215
- ---
216
- You are an executive assistant. Your task is to process email so it is efficient to review and take action.
233
+ // Configure test data
234
+ mock.setThread('thread123', { id: 'thread123', historyId: '1', messages: [] });
235
+ mock.setSearchResults('in:inbox', { threads: [] });
236
+ mock.setLabels([{ id: 'Label_1', name: 'Work', type: 'user' }]);
217
237
 
218
- Every email gets exactly one category
238
+ // Simulate errors
239
+ mock.setError('getThread', new Error('API Error'));
240
+ mock.setError('searchThreads', new Error('Rate limited'), true); // once only
219
241
 
220
- | Category | What belongs here |
221
- |----------|-------------------|
222
- | ⚠️ **Action** | Decision needed or response required |
223
- | 📅 **Calendar** | Appointments, RSVPs, event reminders |
224
- | 📦 **Packages** | Shipping, returns, food delivery |
242
+ // Inspect calls after test
243
+ expect(mock.calls.searchThreads).toHaveLength(1);
244
+ expect(mock.calls.searchThreads[0].args[1]).toBe('in:inbox');
225
245
 
226
- What to elevate to my inbox for attention (everything else skips inbox)
227
- - ...
246
+ // Reset between tests
247
+ mock.reset();
228
248
  ```
229
249
 
230
250
  ## License
@@ -1,5 +1,6 @@
1
1
  import { type gmail_v1 } from "googleapis";
2
2
  import type { EmailAccount } from "./types.js";
3
+ export type { EmailAccount } from "./types.js";
3
4
  type GmailThread = gmail_v1.Schema$Thread;
4
5
  type GmailMessage = gmail_v1.Schema$Message;
5
6
  export declare const GMAIL_LABEL_COLORS: Set<string>;
@@ -7,6 +8,12 @@ export declare function validateLabelColor(color: string, name: string): void;
7
8
  export declare function decodeBase64Url(data: string): string;
8
9
  export declare function decodeHtmlEntities(text: string): string;
9
10
  export declare function stripHtml(html: string): string;
11
+ /**
12
+ * Recursively converts null values to undefined in an object.
13
+ * This normalizes Google API responses (which use null for absent values)
14
+ * to TypeScript conventions (which use undefined).
15
+ */
16
+ export declare function normalizeNulls<T>(obj: T): T;
10
17
  type MessagePayload = {
11
18
  body?: {
12
19
  data?: string | null;
@@ -88,9 +95,21 @@ export interface EnhancedMessage extends GmailMessage {
88
95
  export interface EnhancedThread extends Omit<GmailThread, "messages"> {
89
96
  messages?: EnhancedMessage[];
90
97
  }
98
+ export interface GmailServiceOptions {
99
+ accounts?: EmailAccount[];
100
+ }
91
101
  export declare class GmailService {
92
- private accountStorage;
102
+ private _accountStorage?;
93
103
  private gmailClients;
104
+ private inMemoryAccounts;
105
+ constructor(options?: GmailServiceOptions);
106
+ /**
107
+ * Lazily initialized — accessing this property triggers filesystem setup (~/.gmail-cli/).
108
+ * Methods that use this are inherently disk-based (addGmailAccount, setCredentials, etc.).
109
+ * In-memory-only usage (constructor accounts + setAccountTokens) avoids this path.
110
+ */
111
+ private get accountStorage();
112
+ setAccountTokens(account: EmailAccount): void;
94
113
  addGmailAccount(email: string, clientId: string, clientSecret: string, manual?: boolean): Promise<void>;
95
114
  deleteAccount(email: string): boolean;
96
115
  listAccounts(): EmailAccount[];
@@ -149,5 +168,4 @@ export declare class GmailService {
149
168
  downloadMessageAttachments(email: string, messageId: string): Promise<DownloadedAttachment[]>;
150
169
  private getHeaderValue;
151
170
  }
152
- export {};
153
171
  //# sourceMappingURL=gmail-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gmail-service.d.ts","sourceRoot":"","sources":["../src/gmail-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gmail-service.d.ts","sourceRoot":"","sources":["../src/gmail-service.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,27 @@ export function stripHtml(html) {
50
50
  .replace(/\s+/g, " ")
51
51
  .trim());
52
52
  }
53
+ /**
54
+ * Recursively converts null values to undefined in an object.
55
+ * This normalizes Google API responses (which use null for absent values)
56
+ * to TypeScript conventions (which use undefined).
57
+ */
58
+ export function normalizeNulls(obj) {
59
+ if (obj === null) {
60
+ return undefined;
61
+ }
62
+ if (Array.isArray(obj)) {
63
+ return obj.map((item) => normalizeNulls(item));
64
+ }
65
+ if (typeof obj === "object" && obj !== null) {
66
+ const result = {};
67
+ for (const [key, value] of Object.entries(obj)) {
68
+ result[key] = normalizeNulls(value);
69
+ }
70
+ return result;
71
+ }
72
+ return obj;
73
+ }
53
74
  export function extractBody(msg) {
54
75
  if (!msg.payload)
55
76
  return "";
@@ -104,10 +125,35 @@ export function resolveLabelIds(labels, nameToId) {
104
125
  return labels.map((l) => nameToId.get(l.toLowerCase()) || l);
105
126
  }
106
127
  export class GmailService {
107
- accountStorage = new AccountStorage();
128
+ _accountStorage;
108
129
  gmailClients = new Map();
130
+ inMemoryAccounts = new Map();
131
+ constructor(options) {
132
+ if (options?.accounts) {
133
+ for (const account of options.accounts) {
134
+ this.inMemoryAccounts.set(account.email, account);
135
+ }
136
+ }
137
+ }
138
+ /**
139
+ * Lazily initialized — accessing this property triggers filesystem setup (~/.gmail-cli/).
140
+ * Methods that use this are inherently disk-based (addGmailAccount, setCredentials, etc.).
141
+ * In-memory-only usage (constructor accounts + setAccountTokens) avoids this path.
142
+ */
143
+ get accountStorage() {
144
+ if (!this._accountStorage) {
145
+ this._accountStorage = new AccountStorage();
146
+ }
147
+ return this._accountStorage;
148
+ }
149
+ setAccountTokens(account) {
150
+ this.inMemoryAccounts.set(account.email, account);
151
+ this.gmailClients.delete(account.email);
152
+ }
153
+ // This method always uses disk-backed storage (runs OAuth flow, persists refresh token).
154
+ // For in-memory token management, use setAccountTokens() instead.
109
155
  async addGmailAccount(email, clientId, clientSecret, manual = false) {
110
- if (this.accountStorage.hasAccount(email)) {
156
+ if (this.inMemoryAccounts.has(email) || this.accountStorage.hasAccount(email)) {
111
157
  throw new Error(`Account '${email}' already exists`);
112
158
  }
113
159
  const oauthFlow = new GmailOAuthFlow(clientId, clientSecret);
@@ -120,10 +166,23 @@ export class GmailService {
120
166
  }
121
167
  deleteAccount(email) {
122
168
  this.gmailClients.delete(email);
123
- return this.accountStorage.deleteAccount(email);
169
+ // Remove from both stores — account may exist in either or both
170
+ const deletedInMemory = this.inMemoryAccounts.delete(email);
171
+ const deletedFromStorage = this._accountStorage ? this._accountStorage.deleteAccount(email) : false;
172
+ return deletedInMemory || deletedFromStorage;
124
173
  }
125
174
  listAccounts() {
126
- return this.accountStorage.getAllAccounts();
175
+ // In-memory accounts take precedence over storage for same email
176
+ const merged = new Map();
177
+ if (this._accountStorage) {
178
+ for (const account of this._accountStorage.getAllAccounts()) {
179
+ merged.set(account.email, account);
180
+ }
181
+ }
182
+ for (const account of this.inMemoryAccounts.values()) {
183
+ merged.set(account.email, account);
184
+ }
185
+ return Array.from(merged.values());
127
186
  }
128
187
  setCredentials(clientId, clientSecret) {
129
188
  this.accountStorage.setCredentials(clientId, clientSecret);
@@ -142,7 +201,7 @@ export class GmailService {
142
201
  }
143
202
  getGmailClient(email) {
144
203
  if (!this.gmailClients.has(email)) {
145
- const account = this.accountStorage.getAccount(email);
204
+ const account = this.inMemoryAccounts.get(email) ?? this._accountStorage?.getAccount(email);
146
205
  if (!account) {
147
206
  throw new Error(`Account '${email}' not found`);
148
207
  }
@@ -189,7 +248,7 @@ export class GmailService {
189
248
  hasAttachments: msg.payload?.parts?.some((part) => part.filename) || false,
190
249
  })),
191
250
  })),
192
- nextPageToken: response.data.nextPageToken,
251
+ nextPageToken: response.data.nextPageToken ?? undefined,
193
252
  };
194
253
  }
195
254
  async getThread(email, threadId, downloadAttachments = false) {
@@ -216,10 +275,10 @@ export class GmailService {
216
275
  attachments: extractAttachmentMetadata(msg),
217
276
  },
218
277
  }));
219
- return {
278
+ return normalizeNulls({
220
279
  ...thread,
221
280
  messages: enhancedMessages,
222
- };
281
+ });
223
282
  }
224
283
  const attachmentsToDownload = [];
225
284
  for (const message of thread.messages || []) {
@@ -1 +1 @@
1
- {"version":3,"file":"gmail-service.js","sourceRoot":"","sources":["../src/gmail-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gmail-service.js","sourceRoot":"","sources":["../src/gmail-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import type { ThreadSearchResult, EnhancedThread, DownloadedAttachment, LabelOperationResult } from "./gmail-service.js";
2
+ import type { EmailAccount } from "./types.js";
3
+ export interface MockLabel {
4
+ id: string;
5
+ name: string;
6
+ type: string;
7
+ textColor?: string;
8
+ backgroundColor?: string;
9
+ }
10
+ export interface MockCallRecord<T = unknown[]> {
11
+ args: T;
12
+ timestamp: number;
13
+ }
14
+ export interface MockGmailServiceCalls {
15
+ searchThreads: MockCallRecord<[string, string, number?, string?, string[]?]>[];
16
+ getThread: MockCallRecord<[string, string, boolean?]>[];
17
+ modifyLabels: MockCallRecord<[string, string[], string[], string[]]>[];
18
+ listLabels: MockCallRecord<[string]>[];
19
+ createLabel: MockCallRecord<[string, string, {
20
+ showInList?: boolean;
21
+ showInMessageList?: boolean;
22
+ textColor?: string;
23
+ backgroundColor?: string;
24
+ }?]>[];
25
+ updateLabel: MockCallRecord<[string, string, {
26
+ name?: string;
27
+ textColor?: string;
28
+ backgroundColor?: string;
29
+ }]>[];
30
+ getLabelMap: MockCallRecord<[string]>[];
31
+ }
32
+ export interface MockError {
33
+ method: keyof MockGmailServiceCalls;
34
+ error: Error;
35
+ once?: boolean;
36
+ }
37
+ /**
38
+ * A mock implementation of GmailService for testing purposes.
39
+ * Allows setting fake data, tracking method calls, and simulating errors.
40
+ */
41
+ export declare class MockGmailService {
42
+ private threads;
43
+ private searchResults;
44
+ private labels;
45
+ private errors;
46
+ private nextLabelId;
47
+ calls: MockGmailServiceCalls;
48
+ /**
49
+ * Set a thread that will be returned by getThread().
50
+ */
51
+ setThread(threadId: string, thread: EnhancedThread): void;
52
+ /**
53
+ * Set multiple threads at once.
54
+ */
55
+ setThreads(threads: EnhancedThread[]): void;
56
+ /**
57
+ * Set search results for a specific query.
58
+ * If query is "*", it will be used as the default for any unmatched query.
59
+ */
60
+ setSearchResults(query: string, results: ThreadSearchResult): void;
61
+ /**
62
+ * Set the labels that will be returned by listLabels().
63
+ */
64
+ setLabels(labels: MockLabel[]): void;
65
+ /**
66
+ * Configure an error to be thrown when a method is called.
67
+ * If once is true, the error will only be thrown once.
68
+ */
69
+ setError(method: keyof MockGmailServiceCalls, error: Error, once?: boolean): void;
70
+ /**
71
+ * Accept account tokens for API parity with GmailService.
72
+ * The mock doesn't use tokens, so this is a no-op.
73
+ */
74
+ setAccountTokens(_account: EmailAccount): void;
75
+ /**
76
+ * Clear all configured errors.
77
+ */
78
+ clearErrors(): void;
79
+ /**
80
+ * Clear error for a specific method.
81
+ */
82
+ clearError(method: keyof MockGmailServiceCalls): void;
83
+ /**
84
+ * Reset all mock state: threads, labels, errors, and call records.
85
+ */
86
+ reset(): void;
87
+ private checkError;
88
+ private recordCall;
89
+ searchThreads(email: string, query: string, maxResults?: number, pageToken?: string, labelIds?: string[]): Promise<ThreadSearchResult>;
90
+ getThread(email: string, threadId: string, downloadAttachments?: boolean): Promise<EnhancedThread | DownloadedAttachment[]>;
91
+ modifyLabels(email: string, threadIds: string[], addLabels?: string[], removeLabels?: string[]): Promise<LabelOperationResult[]>;
92
+ listLabels(email: string): Promise<Array<{
93
+ id: string;
94
+ name: string;
95
+ type: string;
96
+ textColor?: string;
97
+ backgroundColor?: string;
98
+ }>>;
99
+ createLabel(email: string, name: string, options?: {
100
+ showInList?: boolean;
101
+ showInMessageList?: boolean;
102
+ textColor?: string;
103
+ backgroundColor?: string;
104
+ }): Promise<{
105
+ id: string;
106
+ name: string;
107
+ type: string;
108
+ textColor?: string;
109
+ backgroundColor?: string;
110
+ }>;
111
+ updateLabel(email: string, labelId: string, options: {
112
+ name?: string;
113
+ textColor?: string;
114
+ backgroundColor?: string;
115
+ }): Promise<{
116
+ id: string;
117
+ name: string;
118
+ type: string;
119
+ textColor?: string;
120
+ backgroundColor?: string;
121
+ }>;
122
+ getLabelMap(email: string): Promise<{
123
+ idToName: Map<string, string>;
124
+ nameToId: Map<string, string>;
125
+ }>;
126
+ resolveLabelIds(labels: string[], nameToId: Map<string, string>): string[];
127
+ }
128
+ //# sourceMappingURL=mock-gmail-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-gmail-service.d.ts","sourceRoot":"","sources":["../src/mock-gmail-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * A mock implementation of GmailService for testing purposes.
3
+ * Allows setting fake data, tracking method calls, and simulating errors.
4
+ */
5
+ export class MockGmailService {
6
+ threads = new Map();
7
+ searchResults = new Map();
8
+ labels = [];
9
+ errors = [];
10
+ nextLabelId = 1;
11
+ calls = {
12
+ searchThreads: [],
13
+ getThread: [],
14
+ modifyLabels: [],
15
+ listLabels: [],
16
+ createLabel: [],
17
+ updateLabel: [],
18
+ getLabelMap: [],
19
+ };
20
+ // --- Configuration Methods ---
21
+ /**
22
+ * Set a thread that will be returned by getThread().
23
+ */
24
+ setThread(threadId, thread) {
25
+ this.threads.set(threadId, thread);
26
+ }
27
+ /**
28
+ * Set multiple threads at once.
29
+ */
30
+ setThreads(threads) {
31
+ for (const thread of threads) {
32
+ if (thread.id) {
33
+ this.threads.set(thread.id, thread);
34
+ }
35
+ }
36
+ }
37
+ /**
38
+ * Set search results for a specific query.
39
+ * If query is "*", it will be used as the default for any unmatched query.
40
+ */
41
+ setSearchResults(query, results) {
42
+ this.searchResults.set(query, results);
43
+ }
44
+ /**
45
+ * Set the labels that will be returned by listLabels().
46
+ */
47
+ setLabels(labels) {
48
+ this.labels = [...labels];
49
+ }
50
+ /**
51
+ * Configure an error to be thrown when a method is called.
52
+ * If once is true, the error will only be thrown once.
53
+ */
54
+ setError(method, error, once = false) {
55
+ this.errors.push({ method, error, once });
56
+ }
57
+ /**
58
+ * Accept account tokens for API parity with GmailService.
59
+ * The mock doesn't use tokens, so this is a no-op.
60
+ */
61
+ setAccountTokens(_account) {
62
+ // No-op: mock doesn't need real tokens
63
+ }
64
+ /**
65
+ * Clear all configured errors.
66
+ */
67
+ clearErrors() {
68
+ this.errors = [];
69
+ }
70
+ /**
71
+ * Clear error for a specific method.
72
+ */
73
+ clearError(method) {
74
+ this.errors = this.errors.filter((e) => e.method !== method);
75
+ }
76
+ /**
77
+ * Reset all mock state: threads, labels, errors, and call records.
78
+ */
79
+ reset() {
80
+ this.threads.clear();
81
+ this.searchResults.clear();
82
+ this.labels = [];
83
+ this.errors = [];
84
+ this.nextLabelId = 1;
85
+ this.calls = {
86
+ searchThreads: [],
87
+ getThread: [],
88
+ modifyLabels: [],
89
+ listLabels: [],
90
+ createLabel: [],
91
+ updateLabel: [],
92
+ getLabelMap: [],
93
+ };
94
+ }
95
+ // --- Private Helpers ---
96
+ checkError(method) {
97
+ const errorIndex = this.errors.findIndex((e) => e.method === method);
98
+ if (errorIndex !== -1) {
99
+ const { error, once } = this.errors[errorIndex];
100
+ if (once) {
101
+ this.errors.splice(errorIndex, 1);
102
+ }
103
+ throw error;
104
+ }
105
+ }
106
+ recordCall(method, args) {
107
+ this.calls[method].push({
108
+ args,
109
+ timestamp: Date.now(),
110
+ });
111
+ }
112
+ // --- Mock GmailService Methods ---
113
+ async searchThreads(email, query, maxResults = 10, pageToken, labelIds) {
114
+ this.recordCall("searchThreads", [email, query, maxResults, pageToken, labelIds]);
115
+ this.checkError("searchThreads");
116
+ // Check for exact query match first, then fall back to "*" default
117
+ const results = this.searchResults.get(query) ?? this.searchResults.get("*");
118
+ if (results) {
119
+ // Apply maxResults limit
120
+ const limitedThreads = results.threads.slice(0, maxResults);
121
+ return {
122
+ threads: limitedThreads,
123
+ nextPageToken: results.nextPageToken,
124
+ };
125
+ }
126
+ return { threads: [] };
127
+ }
128
+ async getThread(email, threadId, downloadAttachments = false) {
129
+ this.recordCall("getThread", [email, threadId, downloadAttachments]);
130
+ this.checkError("getThread");
131
+ const thread = this.threads.get(threadId);
132
+ if (!thread) {
133
+ throw new Error(`Thread not found: ${threadId}`);
134
+ }
135
+ if (downloadAttachments) {
136
+ // Return mock downloaded attachments based on attachment metadata in thread
137
+ const downloads = [];
138
+ for (const message of thread.messages || []) {
139
+ if (message.parsed?.attachments) {
140
+ for (const att of message.parsed.attachments) {
141
+ downloads.push({
142
+ messageId: message.id || "",
143
+ filename: att.filename,
144
+ path: `/mock/attachments/${att.filename}`,
145
+ size: att.size,
146
+ mimeType: att.mimeType,
147
+ cached: false,
148
+ });
149
+ }
150
+ }
151
+ }
152
+ return downloads;
153
+ }
154
+ return thread;
155
+ }
156
+ async modifyLabels(email, threadIds, addLabels = [], removeLabels = []) {
157
+ this.recordCall("modifyLabels", [email, threadIds, addLabels, removeLabels]);
158
+ this.checkError("modifyLabels");
159
+ return threadIds.map((threadId) => {
160
+ const thread = this.threads.get(threadId);
161
+ if (!thread) {
162
+ return { threadId, success: false, error: `Thread not found: ${threadId}` };
163
+ }
164
+ // Update labels on all messages in the thread
165
+ if (thread.messages) {
166
+ for (const message of thread.messages) {
167
+ const currentLabels = new Set(message.labelIds || []);
168
+ for (const label of addLabels) {
169
+ currentLabels.add(label);
170
+ }
171
+ for (const label of removeLabels) {
172
+ currentLabels.delete(label);
173
+ }
174
+ message.labelIds = Array.from(currentLabels);
175
+ }
176
+ }
177
+ return { threadId, success: true };
178
+ });
179
+ }
180
+ async listLabels(email) {
181
+ this.recordCall("listLabels", [email]);
182
+ this.checkError("listLabels");
183
+ return this.labels.map((l) => ({
184
+ id: l.id,
185
+ name: l.name,
186
+ type: l.type,
187
+ textColor: l.textColor,
188
+ backgroundColor: l.backgroundColor,
189
+ }));
190
+ }
191
+ async createLabel(email, name, options = {}) {
192
+ this.recordCall("createLabel", [email, name, options]);
193
+ this.checkError("createLabel");
194
+ const newLabel = {
195
+ id: `Label_${this.nextLabelId++}`,
196
+ name,
197
+ type: "user",
198
+ textColor: options.textColor,
199
+ backgroundColor: options.backgroundColor,
200
+ };
201
+ this.labels.push(newLabel);
202
+ return {
203
+ id: newLabel.id,
204
+ name: newLabel.name,
205
+ type: newLabel.type,
206
+ textColor: newLabel.textColor,
207
+ backgroundColor: newLabel.backgroundColor,
208
+ };
209
+ }
210
+ async updateLabel(email, labelId, options) {
211
+ this.recordCall("updateLabel", [email, labelId, options]);
212
+ this.checkError("updateLabel");
213
+ const label = this.labels.find((l) => l.id === labelId);
214
+ if (!label) {
215
+ throw new Error(`Label not found: ${labelId}`);
216
+ }
217
+ if (options.name !== undefined) {
218
+ label.name = options.name;
219
+ }
220
+ if (options.textColor !== undefined) {
221
+ label.textColor = options.textColor;
222
+ }
223
+ if (options.backgroundColor !== undefined) {
224
+ label.backgroundColor = options.backgroundColor;
225
+ }
226
+ return {
227
+ id: label.id,
228
+ name: label.name,
229
+ type: label.type,
230
+ textColor: label.textColor,
231
+ backgroundColor: label.backgroundColor,
232
+ };
233
+ }
234
+ async getLabelMap(email) {
235
+ this.recordCall("getLabelMap", [email]);
236
+ this.checkError("getLabelMap");
237
+ const labels = await this.listLabels(email);
238
+ const idToName = new Map();
239
+ const nameToId = new Map();
240
+ for (const l of labels) {
241
+ idToName.set(l.id, l.name);
242
+ nameToId.set(l.name.toLowerCase(), l.id);
243
+ }
244
+ return { idToName, nameToId };
245
+ }
246
+ resolveLabelIds(labels, nameToId) {
247
+ return labels.map((l) => nameToId.get(l.toLowerCase()) || l);
248
+ }
249
+ }
250
+ //# sourceMappingURL=mock-gmail-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-gmail-service.js","sourceRoot":"","sources":["../src/mock-gmail-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smcllns/gmail",
3
- "version": "0.4.1",
3
+ "version": "0.6.0",
4
4
  "description": "Minimal Gmail CLI with restricted scopes for Claude Code and other agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,6 +8,16 @@
8
8
  },
9
9
  "main": "./dist/gmail-service.js",
10
10
  "types": "./dist/gmail-service.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/gmail-service.d.ts",
14
+ "default": "./dist/gmail-service.js"
15
+ },
16
+ "./testing": {
17
+ "types": "./dist/mock-gmail-service.d.ts",
18
+ "default": "./dist/mock-gmail-service.js"
19
+ }
20
+ },
11
21
  "files": [
12
22
  "dist"
13
23
  ],
@@ -43,4 +53,4 @@
43
53
  "engines": {
44
54
  "node": ">=20.0.0"
45
55
  }
46
- }
56
+ }