@remit/imap-worker 0.0.70 → 0.0.72

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,6 +1,6 @@
1
1
  import assert from "node:assert/strict";
2
2
  import { beforeEach, describe, it } from "node:test";
3
- import type { Logger } from "@remit/logger-lambda";
3
+ import { noopLogger } from "@remit/logger-lambda/noop-logger";
4
4
  import type {
5
5
  MailboxCreateEvent,
6
6
  MailboxDeleteEvent,
@@ -11,16 +11,6 @@ import {
11
11
  processMailboxManagement,
12
12
  } from "./mailbox-management.js";
13
13
 
14
- const noopLog = {
15
- info: () => {},
16
- warn: () => {},
17
- error: () => {},
18
- debug: () => {},
19
- fatal: () => {},
20
- trace: () => {},
21
- child: () => noopLog,
22
- } as unknown as Logger;
23
-
24
14
  interface Call {
25
15
  method: string;
26
16
  args: unknown[];
@@ -163,7 +153,7 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
163
153
  });
164
154
 
165
155
  it("creates the folder and writes back the server's UIDVALIDITY and counts", async () => {
166
- await processMailboxManagement(createEvent, noopLog, deps());
156
+ await processMailboxManagement(createEvent, noopLogger, deps());
167
157
 
168
158
  assert.equal(called("connection.createMailbox")[0]?.args[0], "Archive");
169
159
  assert.deepEqual(lastUpdate(), {
@@ -176,13 +166,13 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
176
166
  });
177
167
 
178
168
  it("subscribes only when the event asks for it", async () => {
179
- await processMailboxManagement(createEvent, noopLog, deps());
169
+ await processMailboxManagement(createEvent, noopLogger, deps());
180
170
  assert.equal(called("connection.subscribeMailbox").length, 0);
181
171
 
182
172
  h = fresh();
183
173
  await processMailboxManagement(
184
174
  { ...createEvent, subscribe: true },
185
- noopLog,
175
+ noopLogger,
186
176
  deps(),
187
177
  );
188
178
  assert.equal(called("connection.subscribeMailbox")[0]?.args[0], "Archive");
@@ -191,7 +181,7 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
191
181
  it("still marks the mailbox synced when the server does not list the new folder", async () => {
192
182
  h.connection.listMailboxes = async () => [];
193
183
 
194
- await processMailboxManagement(createEvent, noopLog, deps());
184
+ await processMailboxManagement(createEvent, noopLogger, deps());
195
185
 
196
186
  assert.deepEqual(lastUpdate(), { syncStatus: "synced" });
197
187
  });
@@ -201,7 +191,7 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
201
191
  throw new Error("Mailbox already exists");
202
192
  };
203
193
 
204
- await processMailboxManagement(createEvent, noopLog, deps());
194
+ await processMailboxManagement(createEvent, noopLogger, deps());
205
195
 
206
196
  assert.deepEqual(lastUpdate(), { syncStatus: "synced" });
207
197
  });
@@ -212,7 +202,7 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
212
202
  };
213
203
 
214
204
  await assert.rejects(
215
- processMailboxManagement(createEvent, noopLog, deps()),
205
+ processMailboxManagement(createEvent, noopLogger, deps()),
216
206
  /server exploded/,
217
207
  );
218
208
 
@@ -225,7 +215,7 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
225
215
  // create is moot and must not poison the account's FIFO.
226
216
  h.mailboxUpdateError = notFoundError();
227
217
 
228
- await processMailboxManagement(createEvent, noopLog, deps());
218
+ await processMailboxManagement(createEvent, noopLogger, deps());
229
219
 
230
220
  assert.equal(h.disconnectCount, 1, "the scope is still disconnected");
231
221
  });
@@ -237,7 +227,7 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
237
227
  deletedAt: Date.now(),
238
228
  };
239
229
 
240
- await processMailboxManagement(createEvent, noopLog, deps());
230
+ await processMailboxManagement(createEvent, noopLogger, deps());
241
231
 
242
232
  assert.equal(called("connection.createMailbox").length, 0);
243
233
  });
@@ -246,7 +236,7 @@ describe("processMailboxManagement — MAILBOX_CREATE", () => {
246
236
  h.account = null;
247
237
 
248
238
  await assert.rejects(
249
- processMailboxManagement(createEvent, noopLog, deps()),
239
+ processMailboxManagement(createEvent, noopLogger, deps()),
250
240
  /not found/,
251
241
  );
252
242
  });
@@ -258,7 +248,7 @@ describe("processMailboxManagement — MAILBOX_RENAME", () => {
258
248
  });
259
249
 
260
250
  it("renames on the server and clears the pending oldPath", async () => {
261
- await processMailboxManagement(renameEvent, noopLog, deps());
251
+ await processMailboxManagement(renameEvent, noopLogger, deps());
262
252
 
263
253
  assert.deepEqual(called("connection.renameMailbox")[0]?.args, [
264
254
  "Archive",
@@ -275,7 +265,7 @@ describe("processMailboxManagement — MAILBOX_RENAME", () => {
275
265
  throw new Error("Mailbox not found");
276
266
  };
277
267
 
278
- await processMailboxManagement(renameEvent, noopLog, deps());
268
+ await processMailboxManagement(renameEvent, noopLogger, deps());
279
269
 
280
270
  assert.deepEqual(called("mailbox.delete")[0]?.args, ["acc-1", "mbx-1"]);
281
271
  assert.equal(called("mailbox.update").length, 0);
@@ -287,7 +277,7 @@ describe("processMailboxManagement — MAILBOX_RENAME", () => {
287
277
  };
288
278
  h.mailboxUpdateError = notFoundError();
289
279
 
290
- await processMailboxManagement(renameEvent, noopLog, deps());
280
+ await processMailboxManagement(renameEvent, noopLogger, deps());
291
281
 
292
282
  assert.equal(h.disconnectCount, 1, "the scope is still disconnected");
293
283
  });
@@ -298,7 +288,7 @@ describe("processMailboxManagement — MAILBOX_RENAME", () => {
298
288
  };
299
289
 
300
290
  await assert.rejects(
301
- processMailboxManagement(renameEvent, noopLog, deps()),
291
+ processMailboxManagement(renameEvent, noopLogger, deps()),
302
292
  /server exploded/,
303
293
  );
304
294
 
@@ -316,7 +306,7 @@ describe("processMailboxManagement — MAILBOX_DELETE", () => {
316
306
  });
317
307
 
318
308
  it("deletes on the server and drops the local row", async () => {
319
- await processMailboxManagement(deleteEvent, noopLog, deps());
309
+ await processMailboxManagement(deleteEvent, noopLogger, deps());
320
310
 
321
311
  assert.equal(called("connection.deleteMailbox")[0]?.args[0], "Archive");
322
312
  assert.deepEqual(called("mailbox.delete")[0]?.args, ["acc-1", "mbx-1"]);
@@ -327,7 +317,7 @@ describe("processMailboxManagement — MAILBOX_DELETE", () => {
327
317
  throw new Error("Mailbox not found");
328
318
  };
329
319
 
330
- await processMailboxManagement(deleteEvent, noopLog, deps());
320
+ await processMailboxManagement(deleteEvent, noopLogger, deps());
331
321
 
332
322
  assert.equal(called("mailbox.delete").length, 1);
333
323
  });
@@ -337,7 +327,7 @@ describe("processMailboxManagement — MAILBOX_DELETE", () => {
337
327
  throw new Error("Cannot delete INBOX");
338
328
  };
339
329
 
340
- await processMailboxManagement(deleteEvent, noopLog, deps());
330
+ await processMailboxManagement(deleteEvent, noopLogger, deps());
341
331
 
342
332
  assert.deepEqual(lastUpdate(), { syncStatus: "synced" });
343
333
  assert.equal(called("mailbox.delete").length, 0);
@@ -349,7 +339,7 @@ describe("processMailboxManagement — MAILBOX_DELETE", () => {
349
339
  };
350
340
 
351
341
  await assert.rejects(
352
- processMailboxManagement(deleteEvent, noopLog, deps()),
342
+ processMailboxManagement(deleteEvent, noopLogger, deps()),
353
343
  /server exploded/,
354
344
  );
355
345
 
@@ -362,7 +352,7 @@ describe("processMailboxManagement — MAILBOX_DELETE", () => {
362
352
  };
363
353
  h.mailboxUpdateError = notFoundError();
364
354
 
365
- await processMailboxManagement(deleteEvent, noopLog, deps());
355
+ await processMailboxManagement(deleteEvent, noopLogger, deps());
366
356
 
367
357
  assert.equal(h.disconnectCount, 1, "the scope is still disconnected");
368
358
  });
@@ -388,7 +378,7 @@ describe("processMailboxManagement — a tagged NO the server means as success (
388
378
  };
389
379
 
390
380
  await assert.doesNotReject(
391
- processMailboxManagement(deleteEvent, noopLog, deps()),
381
+ processMailboxManagement(deleteEvent, noopLogger, deps()),
392
382
  );
393
383
  assert.deepEqual(called("mailbox.delete")[0]?.args, ["acc-1", "mbx-1"]);
394
384
  assert.equal(called("mailbox.update").length, 0);
@@ -403,7 +393,7 @@ describe("processMailboxManagement — a tagged NO the server means as success (
403
393
  };
404
394
 
405
395
  await assert.rejects(
406
- processMailboxManagement(deleteEvent, noopLog, deps()),
396
+ processMailboxManagement(deleteEvent, noopLogger, deps()),
407
397
  /Command failed/,
408
398
  );
409
399
  assert.deepEqual(lastUpdate(), { syncStatus: "failed" });
@@ -424,7 +414,7 @@ describe("processMailboxManagement — a tagged NO the server means as success (
424
414
  };
425
415
 
426
416
  await assert.doesNotReject(
427
- processMailboxManagement(createEvent, noopLog, deps()),
417
+ processMailboxManagement(createEvent, noopLogger, deps()),
428
418
  );
429
419
  assert.deepEqual(lastUpdate(), { syncStatus: "synced" });
430
420
  });
@@ -438,7 +428,7 @@ describe("processMailboxManagement — a tagged NO the server means as success (
438
428
  };
439
429
 
440
430
  await assert.rejects(
441
- processMailboxManagement(createEvent, noopLog, deps()),
431
+ processMailboxManagement(createEvent, noopLogger, deps()),
442
432
  /Command failed/,
443
433
  );
444
434
  assert.deepEqual(lastUpdate(), { syncStatus: "failed" });
@@ -453,7 +443,7 @@ describe("processMailboxManagement — a tagged NO the server means as success (
453
443
  };
454
444
 
455
445
  await assert.doesNotReject(
456
- processMailboxManagement(renameEvent, noopLog, deps()),
446
+ processMailboxManagement(renameEvent, noopLogger, deps()),
457
447
  );
458
448
  assert.deepEqual(called("mailbox.delete")[0]?.args, ["acc-1", "mbx-1"]);
459
449
  });
@@ -467,7 +457,7 @@ describe("processMailboxManagement — a tagged NO the server means as success (
467
457
  };
468
458
 
469
459
  await assert.rejects(
470
- processMailboxManagement(renameEvent, noopLog, deps()),
460
+ processMailboxManagement(renameEvent, noopLogger, deps()),
471
461
  /Command failed/,
472
462
  );
473
463
  assert.equal(lastUpdate()?.syncStatus, "failed");
@@ -1,19 +1,9 @@
1
1
  import assert from "node:assert/strict";
2
2
  import { beforeEach, describe, it } from "node:test";
3
- import type { Logger } from "@remit/logger-lambda";
3
+ import { noopLogger } from "@remit/logger-lambda/noop-logger";
4
4
  import type { MessageCopyEvent } from "../events.js";
5
5
  import { handleMessageCopy, type MessageCopyDeps } from "./message-copy.js";
6
6
 
7
- const noopLog = {
8
- info: () => {},
9
- warn: () => {},
10
- error: () => {},
11
- debug: () => {},
12
- fatal: () => {},
13
- trace: () => {},
14
- child: () => noopLog,
15
- } as unknown as Logger;
16
-
17
7
  interface Call {
18
8
  method: string;
19
9
  args: unknown[];
@@ -194,7 +184,7 @@ describe("handleMessageCopy", () => {
194
184
  });
195
185
 
196
186
  it("writes the new UID, marks the copy synced, and updates the thread row", async () => {
197
- await handleMessageCopy(event, noopLog, 1, deps());
187
+ await handleMessageCopy(event, noopLogger, 1, deps());
198
188
 
199
189
  assert.deepEqual(called("message.updateUid")[0]?.args, [
200
190
  "new-msg",
@@ -214,7 +204,7 @@ describe("handleMessageCopy", () => {
214
204
  h.connection.copyMessages = async () => ({ uidMap: new Map() });
215
205
  h.destinationHolds = [42];
216
206
 
217
- await handleMessageCopy(event, noopLog, 1, deps());
207
+ await handleMessageCopy(event, noopLogger, 1, deps());
218
208
 
219
209
  assert.ok(askedTheDestination(), "the destination was asked for the copy");
220
210
  assert.deepEqual(called("message.updateUid")[0]?.args, [
@@ -240,7 +230,7 @@ describe("handleMessageCopy", () => {
240
230
  h.connection.copyMessages = async () => ({ uidMap: new Map() });
241
231
  h.destinationHolds = [12, 42];
242
232
 
243
- await handleMessageCopy(event, noopLog, 1, deps());
233
+ await handleMessageCopy(event, noopLogger, 1, deps());
244
234
 
245
235
  assert.deepEqual(called("message.updateUid")[0]?.args, [
246
236
  "new-msg",
@@ -253,7 +243,7 @@ describe("handleMessageCopy", () => {
253
243
  h.connection.copyMessages = async () => ({ uidMap: new Map() });
254
244
  h.destinationHolds = [];
255
245
 
256
- await handleMessageCopy(event, noopLog, 1, deps());
246
+ await handleMessageCopy(event, noopLogger, 1, deps());
257
247
 
258
248
  assert.ok(askedTheDestination());
259
249
  assert.equal(called("message.delete")[0]?.args[0], "new-msg");
@@ -269,7 +259,7 @@ describe("handleMessageCopy", () => {
269
259
  };
270
260
  h.copyRow = { ...unsettledCopyRow(), messageIdHeader: undefined };
271
261
 
272
- await handleMessageCopy(event, noopLog, 1, deps());
262
+ await handleMessageCopy(event, noopLogger, 1, deps());
273
263
 
274
264
  assert.equal(copies, 1, "the COPY is issued once");
275
265
  assert.equal(called("search").length, 0, "there is nothing to ask with");
@@ -285,7 +275,7 @@ describe("handleMessageCopy", () => {
285
275
  it("never copies twice when a redelivered copy already landed", async () => {
286
276
  h.destinationHolds = [42];
287
277
 
288
- await handleMessageCopy(event, noopLog, 2, deps());
278
+ await handleMessageCopy(event, noopLogger, 2, deps());
289
279
 
290
280
  assert.equal(called("copyMessages").length, 0);
291
281
  assert.deepEqual(called("message.updateUid")[0]?.args, [
@@ -305,10 +295,10 @@ describe("handleMessageCopy", () => {
305
295
  };
306
296
 
307
297
  await assert.rejects(
308
- handleMessageCopy(event, noopLog, 1, deps()),
298
+ handleMessageCopy(event, noopLogger, 1, deps()),
309
299
  /connection reset/,
310
300
  );
311
- await handleMessageCopy(event, noopLog, 2, deps());
301
+ await handleMessageCopy(event, noopLogger, 2, deps());
312
302
 
313
303
  assert.equal(copies, 1, "the redelivery issues no second COPY");
314
304
  assert.equal(called("search").length, 0);
@@ -324,7 +314,7 @@ describe("handleMessageCopy", () => {
324
314
  syncStatus: "synced",
325
315
  };
326
316
 
327
- await handleMessageCopy(event, noopLog, 2, deps());
317
+ await handleMessageCopy(event, noopLogger, 2, deps());
328
318
 
329
319
  assert.equal(h.getConnectionCount, 0);
330
320
  assert.equal(called("copyMessages").length, 0);
@@ -333,7 +323,7 @@ describe("handleMessageCopy", () => {
333
323
  it("acks when the copy row no longer exists", async () => {
334
324
  h.copyRow = null;
335
325
 
336
- await handleMessageCopy(event, noopLog, 1, deps());
326
+ await handleMessageCopy(event, noopLogger, 1, deps());
337
327
 
338
328
  assert.equal(h.getConnectionCount, 0);
339
329
  assert.equal(called("message.update").length, 0);
@@ -346,7 +336,7 @@ describe("handleMessageCopy", () => {
346
336
  deletedAt: Date.now(),
347
337
  };
348
338
 
349
- await handleMessageCopy(event, noopLog, 1, deps());
339
+ await handleMessageCopy(event, noopLogger, 1, deps());
350
340
 
351
341
  assert.equal(h.getConnectionCount, 0);
352
342
  });
@@ -355,7 +345,7 @@ describe("handleMessageCopy", () => {
355
345
  h.account = null;
356
346
 
357
347
  await assert.rejects(
358
- handleMessageCopy(event, noopLog, 1, deps()),
348
+ handleMessageCopy(event, noopLogger, 1, deps()),
359
349
  /not found/,
360
350
  );
361
351
  });
@@ -363,7 +353,7 @@ describe("handleMessageCopy", () => {
363
353
  it("acks terminally without connecting when the source mailbox was deleted", async () => {
364
354
  h.mailboxError = notFoundError();
365
355
 
366
- await handleMessageCopy(event, noopLog, 1, deps());
356
+ await handleMessageCopy(event, noopLogger, 1, deps());
367
357
 
368
358
  assert.equal(h.getConnectionCount, 0);
369
359
  assert.equal(called("message.updateUid").length, 0);
@@ -382,7 +372,7 @@ describe("handleMessageCopy", () => {
382
372
  cursorState: "rebuilding",
383
373
  };
384
374
 
385
- await handleMessageCopy(event, noopLog, 1, deps());
375
+ await handleMessageCopy(event, noopLogger, 1, deps());
386
376
 
387
377
  assert.equal(h.getConnectionCount, 0);
388
378
  assert.equal(called("message.updateUid").length, 0);
@@ -405,7 +395,7 @@ describe("handleMessageCopy", () => {
405
395
  };
406
396
  h.destinationHolds = [42];
407
397
 
408
- await handleMessageCopy(event, noopLog, 2, deps());
398
+ await handleMessageCopy(event, noopLogger, 2, deps());
409
399
 
410
400
  assert.ok(askedTheDestination(), "the destination was asked for the copy");
411
401
  assert.deepEqual(called("message.updateUid")[0]?.args, [
@@ -429,7 +419,7 @@ describe("handleMessageCopy", () => {
429
419
  };
430
420
  h.copyRow = { ...unsettledCopyRow(), messageIdHeader: undefined };
431
421
 
432
- await handleMessageCopy(event, noopLog, 2, deps());
422
+ await handleMessageCopy(event, noopLogger, 2, deps());
433
423
 
434
424
  assert.equal(
435
425
  called("message.delete").length,
@@ -453,7 +443,7 @@ describe("handleMessageCopy", () => {
453
443
  cursorState: "rebuilding",
454
444
  };
455
445
 
456
- await handleMessageCopy(event, noopLog, 1, deps());
446
+ await handleMessageCopy(event, noopLogger, 1, deps());
457
447
 
458
448
  assert.deepEqual(
459
449
  called("emitEvent").map((c) => c.args[0]),
@@ -472,7 +462,7 @@ describe("handleMessageCopy", () => {
472
462
  };
473
463
  h.destinationHolds = [];
474
464
 
475
- await handleMessageCopy(event, noopLog, 2, deps());
465
+ await handleMessageCopy(event, noopLogger, 2, deps());
476
466
 
477
467
  assert.ok(askedTheDestination());
478
468
  assert.deepEqual(called("message.delete")[0]?.args, ["new-msg"]);
@@ -481,7 +471,7 @@ describe("handleMessageCopy", () => {
481
471
  it("reconciles the optimistic copy row away when openBox trips a UIDVALIDITY mismatch", async () => {
482
472
  h.connection.openBox = async () => ({ uidvalidity: 999 });
483
473
 
484
- await handleMessageCopy(event, noopLog, 1, deps());
474
+ await handleMessageCopy(event, noopLogger, 1, deps());
485
475
 
486
476
  assert.equal(
487
477
  (called("mailbox.update")[0]?.args[2] as { cursorState?: string })
@@ -500,7 +490,7 @@ describe("handleMessageCopy", () => {
500
490
  };
501
491
 
502
492
  await assert.rejects(
503
- handleMessageCopy(event, noopLog, 1, deps()),
493
+ handleMessageCopy(event, noopLogger, 1, deps()),
504
494
  /TRYCREATE/,
505
495
  );
506
496
 
@@ -513,7 +503,7 @@ describe("handleMessageCopy", () => {
513
503
  throw new Error("NONEXISTENT source message");
514
504
  };
515
505
 
516
- await handleMessageCopy(event, noopLog, 1, deps());
506
+ await handleMessageCopy(event, noopLogger, 1, deps());
517
507
 
518
508
  const update = called("message.update")[0];
519
509
  assert.equal((update?.args[1] as { status?: string })?.status, "deleted");
@@ -526,7 +516,7 @@ describe("handleMessageCopy", () => {
526
516
  };
527
517
 
528
518
  await assert.rejects(
529
- handleMessageCopy(event, noopLog, 1, deps()),
519
+ handleMessageCopy(event, noopLogger, 1, deps()),
530
520
  /server exploded/,
531
521
  );
532
522
 
@@ -548,7 +538,7 @@ describe("handleMessageCopy", () => {
548
538
  return asked === 1 ? [] : [42];
549
539
  };
550
540
 
551
- await handleMessageCopy(event, noopLog, 3, deps());
541
+ await handleMessageCopy(event, noopLogger, 3, deps());
552
542
 
553
543
  assert.deepEqual(called("message.updateUid")[0]?.args, [
554
544
  "new-msg",
@@ -563,7 +553,7 @@ describe("handleMessageCopy", () => {
563
553
  };
564
554
  h.destinationHolds = [];
565
555
 
566
- await handleMessageCopy(event, noopLog, 3, deps());
556
+ await handleMessageCopy(event, noopLogger, 3, deps());
567
557
 
568
558
  assert.equal(called("message.delete")[0]?.args[0], "new-msg");
569
559
  assert.equal(called("threadMessage.deleteMany").length, 1);