@wirecat/cli-memo 0.29.0 → 0.31.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 (152) hide show
  1. package/README.md +1 -1
  2. package/dist/actions/command.js +5 -5
  3. package/dist/actions/command.js.map +1 -1
  4. package/dist/agents/command.js +1 -1
  5. package/dist/agents/command.js.map +1 -1
  6. package/dist/answers/command.d.ts.map +1 -1
  7. package/dist/answers/command.js +4 -3
  8. package/dist/answers/command.js.map +1 -1
  9. package/dist/bin/memo.js +8 -0
  10. package/dist/bin/memo.js.map +1 -1
  11. package/dist/config.d.ts +8 -4
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +15 -7
  14. package/dist/config.js.map +1 -1
  15. package/dist/context/command.d.ts.map +1 -1
  16. package/dist/context/command.js +4 -3
  17. package/dist/context/command.js.map +1 -1
  18. package/dist/discovery/command.d.ts +1 -1
  19. package/dist/discovery/command.js +2 -2
  20. package/dist/discovery/command.js.map +1 -1
  21. package/dist/doctor/command.d.ts +81 -0
  22. package/dist/doctor/command.d.ts.map +1 -0
  23. package/dist/doctor/command.js +150 -0
  24. package/dist/doctor/command.js.map +1 -0
  25. package/dist/effects.d.ts.map +1 -1
  26. package/dist/effects.js +3 -0
  27. package/dist/effects.js.map +1 -1
  28. package/dist/examples.d.ts.map +1 -1
  29. package/dist/examples.js +3 -0
  30. package/dist/examples.js.map +1 -1
  31. package/dist/facts/command.js +5 -5
  32. package/dist/facts/command.js.map +1 -1
  33. package/dist/json-fields.d.ts +16 -0
  34. package/dist/json-fields.d.ts.map +1 -0
  35. package/dist/json-fields.js +53 -0
  36. package/dist/json-fields.js.map +1 -0
  37. package/dist/knowledge/command.d.ts.map +1 -1
  38. package/dist/knowledge/command.js +17 -21
  39. package/dist/knowledge/command.js.map +1 -1
  40. package/dist/knowledge/meeting-projects-command.js +1 -1
  41. package/dist/knowledge/meeting-projects-command.js.map +1 -1
  42. package/dist/mail/command.d.ts.map +1 -1
  43. package/dist/mail/command.js +62 -17
  44. package/dist/mail/command.js.map +1 -1
  45. package/dist/mail/domain-age.d.ts +21 -0
  46. package/dist/mail/domain-age.d.ts.map +1 -0
  47. package/dist/mail/domain-age.js +99 -0
  48. package/dist/mail/domain-age.js.map +1 -0
  49. package/dist/mail/gmail.d.ts +12 -3
  50. package/dist/mail/gmail.d.ts.map +1 -1
  51. package/dist/mail/gmail.js +29 -18
  52. package/dist/mail/gmail.js.map +1 -1
  53. package/dist/mail/headers.d.ts +20 -1
  54. package/dist/mail/headers.d.ts.map +1 -1
  55. package/dist/mail/headers.js +49 -3
  56. package/dist/mail/headers.js.map +1 -1
  57. package/dist/mail/himalaya.d.ts +5 -0
  58. package/dist/mail/himalaya.d.ts.map +1 -1
  59. package/dist/mail/himalaya.js +34 -5
  60. package/dist/mail/himalaya.js.map +1 -1
  61. package/dist/mail/import.d.ts +7 -1
  62. package/dist/mail/import.d.ts.map +1 -1
  63. package/dist/mail/import.js +120 -3
  64. package/dist/mail/import.js.map +1 -1
  65. package/dist/mail/mbox.d.ts.map +1 -1
  66. package/dist/mail/mbox.js +5 -1
  67. package/dist/mail/mbox.js.map +1 -1
  68. package/dist/mail/messages-command.d.ts.map +1 -1
  69. package/dist/mail/messages-command.js +4 -3
  70. package/dist/mail/messages-command.js.map +1 -1
  71. package/dist/mail/probe.d.ts +7 -1
  72. package/dist/mail/probe.d.ts.map +1 -1
  73. package/dist/mail/probe.js +12 -1
  74. package/dist/mail/probe.js.map +1 -1
  75. package/dist/mail/resume.d.ts +46 -0
  76. package/dist/mail/resume.d.ts.map +1 -0
  77. package/dist/mail/resume.js +62 -0
  78. package/dist/mail/resume.js.map +1 -0
  79. package/dist/mail/rules.d.ts +2 -2
  80. package/dist/mail/rules.d.ts.map +1 -1
  81. package/dist/mail/rules.js +3 -3
  82. package/dist/mail/rules.js.map +1 -1
  83. package/dist/mail/score.d.ts +50 -0
  84. package/dist/mail/score.d.ts.map +1 -0
  85. package/dist/mail/score.js +118 -0
  86. package/dist/mail/score.js.map +1 -0
  87. package/dist/mail/source.d.ts +11 -2
  88. package/dist/mail/source.d.ts.map +1 -1
  89. package/dist/mail/source.js +7 -3
  90. package/dist/mail/source.js.map +1 -1
  91. package/dist/mail/status.d.ts +26 -0
  92. package/dist/mail/status.d.ts.map +1 -0
  93. package/dist/mail/status.js +59 -0
  94. package/dist/mail/status.js.map +1 -0
  95. package/dist/memories/command.js +6 -6
  96. package/dist/memories/command.js.map +1 -1
  97. package/dist/notes/command.js +6 -6
  98. package/dist/notes/command.js.map +1 -1
  99. package/dist/notes/folders-command.d.ts.map +1 -1
  100. package/dist/notes/folders-command.js +6 -4
  101. package/dist/notes/folders-command.js.map +1 -1
  102. package/dist/notes/search.js +1 -1
  103. package/dist/notes/search.js.map +1 -1
  104. package/dist/options.d.ts.map +1 -1
  105. package/dist/options.js +1 -1
  106. package/dist/options.js.map +1 -1
  107. package/dist/output.d.ts +9 -0
  108. package/dist/output.d.ts.map +1 -1
  109. package/dist/output.js +35 -3
  110. package/dist/output.js.map +1 -1
  111. package/dist/program.d.ts +1 -1
  112. package/dist/program.d.ts.map +1 -1
  113. package/dist/program.js +9 -1
  114. package/dist/program.js.map +1 -1
  115. package/dist/reasons.d.ts.map +1 -1
  116. package/dist/reasons.js +6 -0
  117. package/dist/reasons.js.map +1 -1
  118. package/dist/records/run.d.ts +1 -1
  119. package/dist/records/run.d.ts.map +1 -1
  120. package/dist/records/run.js +3 -3
  121. package/dist/records/run.js.map +1 -1
  122. package/dist/run/auto.d.ts +11 -1
  123. package/dist/run/auto.d.ts.map +1 -1
  124. package/dist/run/auto.js +40 -8
  125. package/dist/run/auto.js.map +1 -1
  126. package/dist/run/import.d.ts.map +1 -1
  127. package/dist/run/import.js +12 -5
  128. package/dist/run/import.js.map +1 -1
  129. package/dist/search/answers.d.ts +61 -0
  130. package/dist/search/answers.d.ts.map +1 -0
  131. package/dist/search/answers.js +39 -0
  132. package/dist/search/answers.js.map +1 -0
  133. package/dist/search/command.d.ts.map +1 -1
  134. package/dist/search/command.js +10 -6
  135. package/dist/search/command.js.map +1 -1
  136. package/dist/tags/command.d.ts.map +1 -1
  137. package/dist/tags/command.js +11 -3
  138. package/dist/tags/command.js.map +1 -1
  139. package/dist/tasks/command.js +2 -2
  140. package/dist/tasks/command.js.map +1 -1
  141. package/dist/tasks/relations-command.js +3 -3
  142. package/dist/tasks/relations-command.js.map +1 -1
  143. package/dist/update.d.ts +26 -0
  144. package/dist/update.d.ts.map +1 -0
  145. package/dist/update.js +67 -0
  146. package/dist/update.js.map +1 -0
  147. package/dist/version.d.ts +1 -1
  148. package/dist/version.js +1 -1
  149. package/dist/vocabulary/command.js +4 -4
  150. package/dist/vocabulary/command.js.map +1 -1
  151. package/package.json +5 -3
  152. package/skills/cli-memo/SKILL.md +12 -5
@@ -6,7 +6,7 @@ export const meetingProjectsCommand = (projects, streams, env) => {
6
6
  const options = (command) => command
7
7
  .requiredOption("--provider <provider>", "meeting provider")
8
8
  .requiredOption("--account <account>", "exact stored meeting account")
9
- .option("--json", "print JSON");
9
+ .option("--json", "print JSON; --json=id,title keeps only those fields");
10
10
  const run = answering(streams, env);
11
11
  const execute = (project, options, work) => run(options.json, async (store) => work(store, (await canonicalProject(store, project)).slice(8)));
12
12
  options(group
@@ -1 +1 @@
1
- {"version":3,"file":"meeting-projects-command.js","sourceRoot":"","sources":["../../src/knowledge/meeting-projects-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meeting-projects-command.js","sourceRoot":"","sources":["../../src/knowledge/meeting-projects-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAY3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAiB,EAAE,OAAgB,EAAE,GAAsB,EAAE,EAAE;IACpG,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAA;IACpG,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,EAAE,CACnC,OAAO;SACJ,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;SAC3D,cAAc,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;SACrE,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC,CAAA;IAC5E,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,CACd,OAAe,EACf,OAAgB,EAChB,IAAkE,EAClE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvG,OAAO,CACL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gEAAgE,CAAC;SAC7E,QAAQ,CAAC,WAAW,EAAE,0CAA0C,CAAC,CACrE;SACE,MAAM,CAAC,YAAY,EAAE,qDAAqD,CAAC;SAC3E,MAAM,CAAC,aAAa,EAAE,mBAAmB,EAAE,QAAQ,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAChE,MAAM,CAAC,CAAC,OAAe,EAAE,KAAc,EAAE,EAAE,CAC1C,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAC3C,KAAK,CAAC,SAAS,CAAC,eAAe,CAC7B,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EACpD;QACE,SAAS;QACT,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ;QAC1B,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CACF,CACF,CACF,CAAA;IACH,OAAO,CACL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gEAAgE,CAAC;SAC7E,QAAQ,CAAC,WAAW,EAAE,0CAA0C,CAAC;SACjE,QAAQ,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAC1D;SACE,MAAM,CAAC,0BAA0B,EAAE,+CAA+C,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,kDAAkD,CAAC;SACjF,MAAM,CAAC,CAAC,OAAe,EAAE,OAAe,EAAE,KAAc,EAAE,EAAE,CAC3D,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAC3C,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;QAC3G,EAAE,EAAE,OAAO;QACX,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChF,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;KAC5E,CAAC,CACH,CACF,CAAA;AACL,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0HxC,eAAO,MAAM,WAAW,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAmKxF,CAAA"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8HxC,eAAO,MAAM,WAAW,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAsNxF,CAAA"}
@@ -7,24 +7,27 @@ import { printing } from "../records/run.js";
7
7
  import { withImportLock } from "../run/lock.js";
8
8
  import { mailAccounts, mailFolders, mailSource } from "./accounts.js";
9
9
  import { applyRules } from "./apply.js";
10
- import { probeMail, SUGGEST_RULE } from "./probe.js";
10
+ import { knownAges, lookUpAges } from "./domain-age.js";
11
+ import { domainsToAge, probeMail, SUGGEST_RULE } from "./probe.js";
11
12
  import { envelopeBox, sameMatch } from "./rules.js";
13
+ import { FREE_MAIL, SCORE_RULE } from "./score.js";
14
+ import { mailStatus, statusText } from "./status.js";
12
15
  const accountOf = (config, name) => mailAccounts(config.mail?.accounts ?? [], [name])[0];
13
16
  const matchOf = ({ from, domain, listId }) => {
14
17
  const given = [from, domain, listId].filter((value) => value !== undefined);
15
18
  if (given.length !== 1)
16
19
  throw new CliError("validation_error", "give exactly one of --from, --domain, --list-id");
17
- return from !== undefined ? { from } : domain !== undefined ? { domain } : { listId: listId };
20
+ return from !== undefined ? { from } : domain !== undefined ? { domain } : { list_id: listId };
18
21
  };
19
22
  const describe = (match) => match.from !== undefined
20
23
  ? `from ${match.from}`
21
24
  : match.domain !== undefined
22
25
  ? `domain ${match.domain}`
23
- : `list-id ${match.listId}`;
26
+ : `list-id ${match.list_id}`;
24
27
  const ruleLine = (rule) => [
25
28
  rule.action.padEnd(8),
26
29
  describe(rule.match),
27
- rule.decidedAt.slice(0, 10),
30
+ rule.decided_at.slice(0, 10),
28
31
  rule.recorded === undefined ? "" : `${rule.recorded.emails} emails, ${megabytes(rule.recorded.bytes)} MB`,
29
32
  rule.reason ?? "",
30
33
  ]
@@ -79,9 +82,10 @@ const probeText = (probe) => {
79
82
  group.firstYear === group.lastYear ? String(group.firstYear) : `${group.firstYear}-${group.lastYear}`,
80
83
  group.replied ? "yes" : "no",
81
84
  group.suggest ?? "",
85
+ String(group.score),
82
86
  group.listId === null ? (group.from ?? "") : `${group.listId} (${group.from ?? "?"})`,
83
87
  ]);
84
- const header = ["emails", "MB", "unread", "bulk", "years", "replied", "suggest", "sender or list"];
88
+ const header = ["emails", "MB", "unread", "bulk", "years", "replied", "suggest", "score", "sender or list"];
85
89
  const widths = header.map((title, column) => Math.max(title.length, ...rows.map((row) => row[column]?.length ?? 0)));
86
90
  const line = (row) => row
87
91
  .map((cell, column) => (column < 2 ? cell.padStart(widths[column] ?? 0) : cell.padEnd(widths[column] ?? 0)))
@@ -103,10 +107,16 @@ export const mailCommand = (program, streams, env) => {
103
107
  .argument("<account>", "the account's name in mail.accounts, or its address")
104
108
  .option("--since-time <time>", "only mail from this time, ISO 8601 or 30d ago (default: all mail)")
105
109
  .option("--limit-groups <n>", "show this many of the largest groups", positive, 50)
106
- .option("--json", "print JSON")
107
- .addHelpText("after", "\nRead-only and headers only: about 300 bytes per email (From, To, Cc, List-Id, List-Unsubscribe, " +
108
- "Precedence), against Gmail's daily download limit. An mbox account reads the whole file once.\n\n" +
109
- `Each group's ${SUGGEST_RULE}. The owner decides; add a rule with memo mail rules add.`)
110
+ .option("--domain-age", "ask each shown sender domain's registry when it was registered (RDAP); tells each registry its domain")
111
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
112
+ .addHelpText("after", "\nRead-only and headers only: about 1 KB per email (From, To, Cc, Reply-To, List-Id, List-Unsubscribe, " +
113
+ "Precedence and Gmail's SPF, DKIM and DMARC verdicts), against Gmail's daily download limit. An mbox " +
114
+ "account reads the whole file once.\n\n" +
115
+ `Each group's ${SUGGEST_RULE}. Its ${SCORE_RULE}. The owner decides; add a rule with memo mail rules add.\n\n` +
116
+ "--domain-age asks the registry of each shown group's sender domain, one a second, and keeps the answer " +
117
+ "on this computer for good. Big mailbox providers and senders the owner replied to are never asked; " +
118
+ "most country domains (.ru, .de, .es, .io) have no RDAP and stay unknown. Without it, only ages " +
119
+ "already kept are used and nothing leaves this computer.")
110
120
  .action(async (name, options) => {
111
121
  const account = accountOf(loadConfig(env), name);
112
122
  const since = new Date(options.sinceTime === undefined
@@ -118,9 +128,44 @@ export const mailCommand = (program, streams, env) => {
118
128
  for (const folder of mailFolders(account))
119
129
  for (const item of await source.list(since, folder, { headers: true }))
120
130
  listed.set(item.messageId, item);
121
- const probe = { ...probeMail([...listed.values()], options.limitGroups), seconds: 0 };
122
- probe.seconds = Math.round((Date.now() - started) / 100) / 10;
123
- print(options.json, probe, probeText(probe));
131
+ const items = [...listed.values()];
132
+ let probe = probeMail(items, options.limitGroups, knownAges(env));
133
+ let lookups;
134
+ if (options.domainAge) {
135
+ lookups = await lookUpAges(env, domainsToAge(probe.items, FREE_MAIL));
136
+ probe = probeMail(items, options.limitGroups, knownAges(env));
137
+ }
138
+ const shown = {
139
+ ...probe,
140
+ ...(lookups === undefined ? {} : { domainLookups: lookups }),
141
+ seconds: Math.round((Date.now() - started) / 100) / 10,
142
+ };
143
+ print(options.json, shown, probeText(shown));
144
+ });
145
+ mail
146
+ .command("status")
147
+ .description("how far an account's import is: mail stored, recorded, and left to read")
148
+ .argument("<account>", "the account's name in mail.accounts, or its address")
149
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
150
+ .addHelpText("after", "\nRead from the store only, so it answers while a sync runs. Done counts mail whose outcome is final: stored, " +
151
+ "recorded by a rule or skipped by one. The total is the mail in the window at the last sync's search.")
152
+ .action(async (name, options) => {
153
+ const account = accountOf(loadConfig(env), name);
154
+ const startedAt = Date.now();
155
+ const store = await openStore({ env });
156
+ try {
157
+ const status = await mailStatus(store, account);
158
+ if (options.json)
159
+ createRenderer({ format: "json", color: false, streams }).result({
160
+ item: snakeKeys(status),
161
+ meta: metaOf(startedAt, { accounts: [account.name] }),
162
+ });
163
+ else
164
+ streams.data(`${statusText(status)}\n`);
165
+ }
166
+ finally {
167
+ await store.close();
168
+ }
124
169
  });
125
170
  const rules = mail
126
171
  .command("rules")
@@ -129,7 +174,7 @@ export const mailCommand = (program, streams, env) => {
129
174
  .command("list")
130
175
  .description("one account's rules")
131
176
  .argument("<account>", "the account's name in mail.accounts, or its address")
132
- .option("--json", "print JSON")
177
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
133
178
  .addHelpText("after", "\nAn envelope rule shows how many emails it recorded and their size at the source.")
134
179
  .action(async (name, options) => {
135
180
  const account = accountOf(loadConfig(env), name);
@@ -158,7 +203,7 @@ export const mailCommand = (program, streams, env) => {
158
203
  .option("--envelope", "store only sender, date, size and labels: counted, out of search, cleanable later")
159
204
  .option("--keep", "import this mail even when a skip or envelope rule matches it")
160
205
  .option("--reason <text>", "why, for the owner later")
161
- .option("--json", "print JSON")
206
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
162
207
  .addHelpText("after", "\nA keep wins over an envelope, an envelope over a skip, so --keep --from one sender overrides " +
163
208
  "--skip --domain of its domain. A skipped email is never read or stored by memo sync. An envelope " +
164
209
  "email costs no more from the mailbox than a skipped one; its subject is kept in its metadata, not in " +
@@ -173,7 +218,7 @@ export const mailCommand = (program, streams, env) => {
173
218
  match,
174
219
  action: actions[0],
175
220
  ...(options.reason === undefined ? {} : { reason: options.reason }),
176
- decidedAt: new Date().toISOString(),
221
+ decided_at: new Date().toISOString(),
177
222
  };
178
223
  changeRules(env, name, (current) => [...current.filter((each) => !sameMatch(each.match, match)), rule]);
179
224
  print(options.json, rule, ruleLine(rule));
@@ -185,7 +230,7 @@ export const mailCommand = (program, streams, env) => {
185
230
  .option("--from <address>", "one sender address")
186
231
  .option("--domain <domain>", "a sender domain")
187
232
  .option("--list-id <id>", "a mailing list, by its List-Id")
188
- .option("--json", "print JSON")
233
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
189
234
  .action((name, options) => {
190
235
  const match = matchOf(options);
191
236
  if (!(accountOf(loadConfig(env), name).rules ?? []).some((rule) => sameMatch(rule.match, match)))
@@ -201,7 +246,7 @@ export const mailCommand = (program, streams, env) => {
201
246
  .argument("<account>", "the account's name in mail.accounts, or its address")
202
247
  .option("--since-time <time>", "only mail from this time, ISO 8601 or 30d ago (default: all mail)")
203
248
  .option("--yes", "change the store; without it, only say what would change")
204
- .option("--json", "print JSON")
249
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
205
250
  .addHelpText("after", "\nReads the account's headers from the mailbox, as memo sync does (List-Id is not stored), then drops the " +
206
251
  "text, attachments and search entries of each matching stored email and keeps its sender, date, size, " +
207
252
  "labels and subject in metadata. Mail a skip rule matches is left as stored. Nothing changes in the " +
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAqB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEtE,OAAO,EAAe,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAA0B,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7F,OAAO,EAAoB,UAAU,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAc,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,WAAW,EAAqC,SAAS,EAAE,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAQpD,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,IAAY,EAAqB,EAAE,CACpE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAsB,CAAA;AAE3E,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAgB,EAAiB,EAAE;IACxE,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAA;IACjH,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAgB,EAAE,CAAA;AAC1G,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAU,EAAE,CAChD,KAAK,CAAC,IAAI,KAAK,SAAS;IACtB,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,EAAE;IACtB,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE;QAC1B,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,EAAE,CAAA;AAOlC,MAAM,QAAQ,GAAG,CAAC,IAAwC,EAAU,EAAE,CACpE;IACE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IACpB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,YAAY,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;IACzG,IAAI,CAAC,MAAM,IAAI,EAAE;CAClB;KACE,MAAM,CAAC,OAAO,CAAC;KACf,IAAI,CAAC,IAAI,CAAC;KACV,OAAO,EAAE,CAAA;AAEd,MAAM,IAAI,GAAG,IAAI,CAAA;AAEjB,6GAA6G;AAC7G,MAAM,UAAU,GAAG,KAAK,EAAE,KAAmB,EAAE,OAAe,EAAE,IAAc,EAAqB,EAAE;IACnG,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAClH,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IACxC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAA;IACrC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAA;IAClD,KAAK,IAAI,MAAM,GAAG,CAAC,GAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC7F,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,QAAQ,CAAC,MAAM,EAAE,CAAA;YACjB,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;YAAE,OAAO,QAAQ,CAAA;IACzC,CAAC;AACH,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,GAAsB,EAAE,IAAY,EAAE,MAAyC,EAAc,EAAE;IAClH,IAAI,OAAO,GAAe,EAAE,CAAA;IAC5B,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACvC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1D,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACtD,CAAA;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAA;IAC1D,CAAC,EAAE,GAAG,CAAC,CAAA;IACP,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAU,EAAE,CAChD;IACE,GAAG,MAAM,CAAC,KAAK;SACZ,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,YAAY,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;IAChH,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,wBAAwB;QACjF,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,WAAW;QACrE,GAAG,MAAM,CAAC,WAAW,4CAA4C;QACjE,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,MAAM,CAAC,OAAO,kBAAkB,CAAC;CAChH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEd,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACrE,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;AAEhG,MAAM,SAAS,GAAG,CAAC,KAAkC,EAAU,EAAE;IAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACpB,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACnB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE;QACrG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC5B,KAAK,CAAC,OAAO,IAAI,EAAE;QACnB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACnB,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG;KACtF,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAC3G,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACpH,MAAM,IAAI,GAAG,CAAC,GAAa,EAAE,EAAE,CAC7B,GAAG;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC3G,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CAAA;IACd,OAAO;QACL,GAAG,KAAK,CAAC,MAAM,YAAY,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,IAAI,SAAS;YAClG,GAAG,KAAK,CAAC,cAAc,8BAA8B,KAAK,CAAC,OAAO,GAAG;QACvE,IAAI,CAAC,MAAM,CAAC;QACZ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;KAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,OAAgB,EAAE,GAAsB,EAAQ,EAAE;IAC9F,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mEAAmE,CAAC,CAAA;IAErH,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4EAA4E,CAAC;SACzF,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC5E,MAAM,CAAC,qBAAqB,EAAE,mEAAmE,CAAC;SAClG,MAAM,CAAC,oBAAoB,EAAE,sCAAsC,EAAE,QAAQ,EAAE,EAAE,CAAC;SAClF,MAAM,CACL,cAAc,EACd,uGAAuG,CACxG;SACA,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,WAAW,CACV,OAAO,EACP,yGAAyG;QACvG,sGAAsG;QACtG,wCAAwC;QACxC,gBAAgB,YAAY,SAAS,UAAU,+DAA+D;QAC9G,yGAAyG;QACzG,qGAAqG;QACrG,iGAAiG;QACjG,yDAAyD,CAC5D;SACA,MAAM,CACL,KAAK,EACH,IAAY,EACZ,OAAyF,EACzF,EAAE;QACF,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,IAAI,IAAI,CACpB,OAAO,CAAC,SAAS,KAAK,SAAS;YAC7B,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CACxF,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;QACxC,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC1G,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAClC,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;QACjE,IAAI,OAAuD,CAAA;QAC3D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;YACrE,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/D,CAAC;QACD,MAAM,KAAK,GAAG;YACZ,GAAG,KAAK;YACR,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;YAC5D,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE;SACvD,CAAA;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,CAAC,CACF,CAAA;IAEH,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yEAAyE,CAAC;SACtF,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC5E,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,WAAW,CACV,OAAO,EACP,gHAAgH;QAC9G,sGAAsG,CACzG;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA2B,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC/C,IAAI,OAAO,CAAC,IAAI;gBACd,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;oBAC/D,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;oBACvB,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;iBACtD,CAAC,CAAA;;gBACC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,KAAK,GAAG,IAAI;SACf,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gFAAgF,CAAC,CAAA;IAEhG,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC5E,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,WAAW,CAAC,OAAO,EAAE,oFAAoF,CAAC;SAC1G,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA2B,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACtG,IAAI,CAAC;YACH,MAAM,KAAK,GAA2C,EAAE,CAAA;YACxD,KAAK,MAAM,IAAI,IAAI,KAAK;gBACtB,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;oBAC/C,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACvE,CAAC,CAAC,IAAI,CACT,CAAA;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAA;QAC9E,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,EAAE,KAAK,EAAE,CAAA;QACtB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,iFAAiF,CAAC;SAC9F,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC5E,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;SAClE,MAAM,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;SAC1D,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,YAAY,EAAE,mFAAmF,CAAC;SACzG,MAAM,CAAC,QAAQ,EAAE,+DAA+D,CAAC;SACjF,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,WAAW,CACV,OAAO,EACP,iGAAiG;QAC/F,mGAAmG;QACnG,uGAAuG;QACvG,0GAA0G;QAC1G,oCAAoC,CACvC;SACA,MAAM,CACL,CACE,IAAY,EACZ,OAA+G,EAC/G,EAAE;QACF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAC9B,MAAM,OAAO,GAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,gDAAgD,CAAC,CAAA;QAC1F,MAAM,IAAI,GAAa;YACrB,KAAK;YACL,MAAM,EAAE,OAAO,CAAC,CAAC,CAAuB;YACxC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACnE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAA;QACD,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QACvG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3C,CAAC,CACF,CAAA;IAEH,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4CAA4C,CAAC;SACzD,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC5E,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;SAC9C,MAAM,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;SAC1D,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,MAAM,CAAC,CAAC,IAAY,EAAE,OAA0C,EAAE,EAAE;QACnE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAC9B,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC9F,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,eAAe,QAAQ,CAAC,KAAK,CAAC,0BAA0B,IAAI,aAAa,EAAE;gBACzG,MAAM,EAAE,qBAAqB;aAC9B,CAAC,CAAA;QACJ,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QACzG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,wBAAwB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACjG,CAAC,CAAC,CAAA;IAEJ,KAAK;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gFAAgF,CAAC;SAC7F,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC5E,MAAM,CAAC,qBAAqB,EAAE,mEAAmE,CAAC;SAClG,MAAM,CAAC,OAAO,EAAE,0DAA0D,CAAC;SAC3E,MAAM,CAAC,QAAQ,EAAE,qDAAqD,CAAC;SACvE,WAAW,CACV,OAAO,EACP,4GAA4G;QAC1G,uGAAuG;QACvG,qGAAqG;QACrG,gGAAgG,CACnG;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA8D,EAAE,EAAE;QAC7F,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,IAAI,IAAI,CACpB,OAAO,CAAC,SAAS,KAAK,SAAS;YAC7B,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CACxF,CAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YACtC,IAAI,CAAC;gBACH,OAAO,MAAM,UAAU,CAAC;oBACtB,KAAK;oBACL,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;oBAChC,OAAO;oBACP,KAAK;oBACL,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,IAAI;iBAC5B,CAAC,CAAA;YACJ,CAAC;oBAAS,CAAC;gBACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,IAAI;YACd,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC/D,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;gBACvB,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;aACtD,CAAC,CAAA;;YACC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { DomainAge } from "./score.js";
2
+ /** IANA's list of which registry answers RDAP for which top-level domain (RFC 9224). */
3
+ export declare const BOOTSTRAP_URL = "https://data.iana.org/rdap/dns.json";
4
+ /** The ages already looked up; reads no network. */
5
+ export declare const knownAges: (env: NodeJS.ProcessEnv) => Map<string, DomainAge>;
6
+ export interface LookupDeps {
7
+ fetch: typeof fetch;
8
+ sleep: (ms: number) => Promise<void>;
9
+ now: () => Date;
10
+ }
11
+ export interface LookupResult {
12
+ looked: number;
13
+ failed: number;
14
+ }
15
+ /**
16
+ * Asks each domain's own registry when it was registered, straight from IANA's list, never through a relay: each
17
+ * question tells that registry, and only it, the domain's name. One question a second; answers are kept for good.
18
+ * A domain whose registry has no RDAP (most country domains: .ru, .de, .es, .io) is marked unsupported, not guessed.
19
+ */
20
+ export declare const lookUpAges: (env: NodeJS.ProcessEnv, domains: readonly string[], deps?: LookupDeps) => Promise<LookupResult>;
21
+ //# sourceMappingURL=domain-age.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-age.d.ts","sourceRoot":"","sources":["../../src/mail/domain-age.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,wFAAwF;AACxF,eAAO,MAAM,aAAa,wCAAwC,CAAA;AA8BlE,oDAAoD;AACpD,eAAO,MAAM,SAAS,QAAS,MAAM,CAAC,UAAU,KAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CACvB,CAAA;AAEjD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,GAAG,EAAE,MAAM,IAAI,CAAA;CAChB;AAqBD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAChB,MAAM,CAAC,UAAU,WACb,SAAS,MAAM,EAAE,SACpB,UAAU,KACf,OAAO,CAAC,YAAY,CA4CtB,CAAA"}
@@ -0,0 +1,99 @@
1
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { resolvePaths } from "@wirecat/cli-base";
4
+ import { VERSION } from "../version.js";
5
+ /** IANA's list of which registry answers RDAP for which top-level domain (RFC 9224). */
6
+ export const BOOTSTRAP_URL = "https://data.iana.org/rdap/dns.json";
7
+ const BOOTSTRAP_MAX_AGE_MS = 30 * 24 * 60 * 60 * 1000;
8
+ const REQUEST_GAP_MS = 1000;
9
+ const TIMEOUT_MS = 10_000;
10
+ const USER_AGENT = `cli-memo/${VERSION} (+https://github.com/WireCatLabs/cli-memo)`;
11
+ const fileOf = (env) => join(resolvePaths({ appName: "cli-memo", prefix: "MEMO", env }).state, "domain-ages.json");
12
+ // A registration date never changes, so the cache is kept on this computer for good and asked again never.
13
+ const loadCache = (env) => {
14
+ try {
15
+ return { domains: {}, ...JSON.parse(readFileSync(fileOf(env), "utf8")) };
16
+ }
17
+ catch {
18
+ return { domains: {} };
19
+ }
20
+ };
21
+ const saveCache = (env, cache) => {
22
+ const file = fileOf(env);
23
+ mkdirSync(join(file, ".."), { recursive: true });
24
+ writeFileSync(`${file}.tmp`, JSON.stringify(cache));
25
+ renameSync(`${file}.tmp`, file);
26
+ };
27
+ /** The ages already looked up; reads no network. */
28
+ export const knownAges = (env) => new Map(Object.entries(loadCache(env).domains));
29
+ const realDeps = {
30
+ fetch: (input, init) => fetch(input, init),
31
+ sleep: (ms) => new Promise((done) => setTimeout(done, ms)),
32
+ now: () => new Date(),
33
+ };
34
+ const getJson = async (deps, url) => {
35
+ const response = await deps.fetch(url, {
36
+ headers: { accept: "application/rdap+json, application/json", "user-agent": USER_AGENT },
37
+ signal: AbortSignal.timeout(TIMEOUT_MS),
38
+ });
39
+ return { status: response.status, body: response.ok ? await response.json() : undefined };
40
+ };
41
+ const registrationOf = (body) => (body?.events ?? []).find((event) => event.eventAction === "registration")?.eventDate;
42
+ /**
43
+ * Asks each domain's own registry when it was registered, straight from IANA's list, never through a relay: each
44
+ * question tells that registry, and only it, the domain's name. One question a second; answers are kept for good.
45
+ * A domain whose registry has no RDAP (most country domains: .ru, .de, .es, .io) is marked unsupported, not guessed.
46
+ */
47
+ export const lookUpAges = async (env, domains, deps = realDeps) => {
48
+ const cache = loadCache(env);
49
+ const wanted = [...new Set(domains.map((domain) => domain.toLowerCase()))].filter((domain) => cache.domains[domain] === undefined);
50
+ if (wanted.length === 0)
51
+ return { looked: 0, failed: 0 };
52
+ const fetchedAt = cache.bootstrap?.fetchedAt;
53
+ if (fetchedAt === undefined || deps.now().getTime() - Date.parse(fetchedAt) > BOOTSTRAP_MAX_AGE_MS) {
54
+ const { body } = await getJson(deps, BOOTSTRAP_URL);
55
+ const services = body?.services;
56
+ if (!Array.isArray(services))
57
+ throw new Error("IANA's RDAP list did not answer");
58
+ cache.bootstrap = { fetchedAt: deps.now().toISOString(), services };
59
+ }
60
+ const servers = new Map();
61
+ for (const [tlds, urls] of cache.bootstrap?.services ?? []) {
62
+ const url = urls.find((candidate) => candidate.startsWith("https://")) ?? urls[0];
63
+ if (url !== undefined)
64
+ for (const tld of tlds)
65
+ servers.set(tld.toLowerCase(), url.endsWith("/") ? url : `${url}/`);
66
+ }
67
+ let looked = 0;
68
+ let failed = 0;
69
+ for (const domain of wanted) {
70
+ const server = servers.get(domain.slice(domain.lastIndexOf(".") + 1));
71
+ const checkedAt = deps.now().toISOString();
72
+ if (server === undefined) {
73
+ cache.domains[domain] = { unsupported: true, checkedAt };
74
+ continue;
75
+ }
76
+ if (looked > 0)
77
+ await deps.sleep(REQUEST_GAP_MS);
78
+ looked++;
79
+ try {
80
+ const { status, body } = await getJson(deps, `${server}domain/${encodeURIComponent(domain)}`);
81
+ // Not found is an answer worth keeping; anything else may work another day, so it is not kept.
82
+ if (status === 404)
83
+ cache.domains[domain] = { checkedAt };
84
+ else if (status >= 200 && status < 300) {
85
+ const created = registrationOf(body);
86
+ cache.domains[domain] = { ...(created === undefined ? {} : { created }), checkedAt };
87
+ }
88
+ else
89
+ failed++;
90
+ }
91
+ catch {
92
+ failed++;
93
+ }
94
+ saveCache(env, cache);
95
+ }
96
+ saveCache(env, cache);
97
+ return { looked, failed };
98
+ };
99
+ //# sourceMappingURL=domain-age.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-age.js","sourceRoot":"","sources":["../../src/mail/domain-age.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type MailHeaders } from "./headers.js";
2
- import type { Himalaya } from "./himalaya.js";
2
+ import { type Himalaya } from "./himalaya.js";
3
3
  export interface Listed {
4
4
  uid: string;
5
5
  /** Gmail's own ids: the same in every folder, and they survive a UID reset. */
@@ -21,11 +21,20 @@ export declare const decodeMailboxName: (name: string) => string;
21
21
  export declare const systemLabel: (name: string) => string;
22
22
  /** A label as people read it: `\\Important` and `Important` are one label, and names are decoded. */
23
23
  export declare const labelName: (raw: string) => string;
24
+ /** A mailbox's UIDs in the window and its UIDVALIDITY, read without fetching any message. */
25
+ export interface Searched {
26
+ /** Absent when the server does not say; then no UID is trusted across runs. */
27
+ validity?: string;
28
+ uids: string[];
29
+ }
30
+ /** One cheap call: the UIDs a listing would fetch, so a rerun can fetch only those not done before. */
31
+ export declare const searchMail: (run: Himalaya, account: string, since: Date, folder: string) => Promise<Searched>;
24
32
  /**
25
33
  * Every message in All Mail received since `since`, read with EXAMINE so nothing can change a flag.
26
34
  * All Mail rather than INBOX: an archived message leaves INBOX but is not deleted.
35
+ * `searched` limits it to those UIDs, from `searchMail`, so mail done in an earlier run is not fetched again.
27
36
  */
28
- export declare const listAllMail: (run: Himalaya, account: string, since: Date, folder?: string, headers?: boolean) => Promise<Listed[]>;
37
+ export declare const listAllMail: (run: Himalaya, account: string, since: Date, folder?: string, headers?: boolean, searched?: Searched) => Promise<Listed[]>;
29
38
  /** Message-ID is stable across folders; absent headers fall back to a UIDVALIDITY-scoped identity. */
30
- export declare const listImapMail: (run: Himalaya, account: string, since: Date, folder: string) => Promise<Listed[]>;
39
+ export declare const listImapMail: (run: Himalaya, account: string, since: Date, folder: string, searched?: Searched) => Promise<Listed[]>;
31
40
  //# sourceMappingURL=gmail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../src/mail/gmail.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+FAA+F;IAC/F,OAAO,CAAC,EAAE,WAAW,CAAA;CACtB;AAcD,6GAA6G;AAC7G,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,MAO7C,CAAA;AA2BJ,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAAmD,CAAA;AAE9F,qGAAqG;AACrG,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAGvC,CAAA;AAoDD;;;GAGG;AACH,eAAO,MAAM,WAAW,QACjB,QAAQ,WACJ,MAAM,SACR,IAAI,yCAGV,OAAO,CAAC,MAAM,EAAE,CAiFlB,CAAA;AAED,sGAAsG;AACtG,eAAO,MAAM,YAAY,QAAe,QAAQ,WAAW,MAAM,SAAS,IAAI,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAmEhH,CAAA"}
1
+ {"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../src/mail/gmail.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,KAAK,QAAQ,EAA+B,MAAM,eAAe,CAAA;AAE1E,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+FAA+F;IAC/F,OAAO,CAAC,EAAE,WAAW,CAAA;CACtB;AAcD,6GAA6G;AAC7G,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,MAO7C,CAAA;AA2BJ,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAAmD,CAAA;AAE9F,qGAAqG;AACrG,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAGvC,CAAA;AAuDD,6FAA6F;AAC7F,MAAM,WAAW,QAAQ;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAQD,uGAAuG;AACvG,eAAO,MAAM,UAAU,QAAe,QAAQ,WAAW,MAAM,SAAS,IAAI,UAAU,MAAM,KAAG,OAAO,CAAC,QAAQ,CAW9G,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,QACjB,QAAQ,WACJ,MAAM,SACR,IAAI,iDAGA,QAAQ,KAClB,OAAO,CAAC,MAAM,EAAE,CA0ElB,CAAA;AAED,sGAAsG;AACtG,eAAO,MAAM,YAAY,QAClB,QAAQ,WACJ,MAAM,SACR,IAAI,UACH,MAAM,aACH,QAAQ,KAClB,OAAO,CAAC,MAAM,EAAE,CA0DlB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { CliError } from "@wirecat/cli-base";
3
3
  import { HEADER_FIELDS, headersOf } from "./headers.js";
4
+ import { isThrottled, throttledError } from "./himalaya.js";
4
5
  const SYSTEM_LABELS = {
5
6
  inbox: "Inbox",
6
7
  sent: "Sent",
@@ -92,21 +93,37 @@ const assertCompleted = (output, tags) => {
92
93
  for (const tag of tags) {
93
94
  if (!new RegExp(`^${tag} OK`, "m").test(output)) {
94
95
  const line = output.split(/\r?\n/).find((text) => text.startsWith(`${tag} `)) ?? "no answer";
95
- throw new CliError("provider_error", `IMAP command ${tag} did not complete: ${line}`);
96
+ if (isThrottled(line))
97
+ throw throttledError(`IMAP command ${tag}`);
98
+ throw new CliError("provider_error", `IMAP command ${tag} did not complete: ${line}`, {
99
+ reason: "mail.source-failed",
100
+ });
96
101
  }
97
102
  }
98
103
  };
104
+ const mailboxOf = (folder) => {
105
+ if (!folder || /[\r\n]/.test(folder) || folder.includes(String.fromCharCode(0)))
106
+ throw new CliError("validation_error", "invalid mailbox name");
107
+ return JSON.stringify(folder);
108
+ };
109
+ /** One cheap call: the UIDs a listing would fetch, so a rerun can fetch only those not done before. */
110
+ export const searchMail = async (run, account, since, folder) => {
111
+ const searched = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailboxOf(folder)}\r\nb UID SEARCH SINCE ${imapDate(since)}\r\n`);
112
+ assertCompleted(searched, ["a", "b"]);
113
+ const validity = /\[UIDVALIDITY (\d+)\]/.exec(searched)?.[1];
114
+ const uids = [...new Set((/^\* SEARCH(.*)$/m.exec(searched)?.[1] ?? "").trim().split(/\s+/).filter(Boolean))];
115
+ if (!uids.every((uid) => /^\d+$/.test(uid)))
116
+ throw new CliError("invalid_response", "invalid IMAP UID listing", { reason: "mail.invalid-imap" });
117
+ return { ...(validity === undefined ? {} : { validity }), uids };
118
+ };
99
119
  /**
100
120
  * Every message in All Mail received since `since`, read with EXAMINE so nothing can change a flag.
101
121
  * All Mail rather than INBOX: an archived message leaves INBOX but is not deleted.
122
+ * `searched` limits it to those UIDs, from `searchMail`, so mail done in an earlier run is not fetched again.
102
123
  */
103
- export const listAllMail = async (run, account, since, folder = "[Gmail]/All Mail", headers = false) => {
104
- if (/[\r\n]/.test(folder) || folder.includes(String.fromCharCode(0)))
105
- throw new CliError("validation_error", "invalid mailbox name");
106
- const mailbox = JSON.stringify(folder);
107
- const search = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\nb UID SEARCH SINCE ${imapDate(since)}\r\n`);
108
- assertCompleted(search, ["a", "b"]);
109
- const uids = (/^\* SEARCH(.*)$/m.exec(search)?.[1] ?? "").trim().split(/\s+/).filter(Boolean);
124
+ export const listAllMail = async (run, account, since, folder = "[Gmail]/All Mail", headers = false, searched) => {
125
+ const mailbox = mailboxOf(folder);
126
+ const { uids } = searched ?? (await searchMail(run, account, since, folder));
110
127
  if (uids.length === 0)
111
128
  return [];
112
129
  const listed = [];
@@ -172,18 +189,12 @@ export const listAllMail = async (run, account, since, folder = "[Gmail]/All Mai
172
189
  return listed.map((item) => ({ ...item, ...marks.get(item.uid) }));
173
190
  };
174
191
  /** Message-ID is stable across folders; absent headers fall back to a UIDVALIDITY-scoped identity. */
175
- export const listImapMail = async (run, account, since, folder) => {
176
- if (!folder || /[\r\n]/.test(folder) || folder.includes(String.fromCharCode(0)))
177
- throw new CliError("validation_error", "invalid mailbox name");
178
- const mailbox = JSON.stringify(folder);
179
- const searched = await run(["imap", "raw", "-a", account], `a EXAMINE ${mailbox}\r\nb UID SEARCH SINCE ${imapDate(since)}\r\n`);
180
- assertCompleted(searched, ["a", "b"]);
181
- const validity = /\[UIDVALIDITY (\d+)\]/.exec(searched)?.[1];
192
+ export const listImapMail = async (run, account, since, folder, searched) => {
193
+ const mailbox = mailboxOf(folder);
194
+ const { validity, uids } = searched ?? (await searchMail(run, account, since, folder));
195
+ // Without Message-ID the identity is the UID, which means nothing without its UIDVALIDITY.
182
196
  if (!validity)
183
197
  throw new CliError("invalid_response", "IMAP did not report UIDVALIDITY", { reason: "mail.invalid-imap" });
184
- const uids = [...new Set((/^\* SEARCH(.*)$/m.exec(searched)?.[1] ?? "").trim().split(/\s+/).filter(Boolean))];
185
- if (!uids.every((uid) => /^\d+$/.test(uid)))
186
- throw new CliError("invalid_response", "invalid IMAP UID listing", { reason: "mail.invalid-imap" });
187
198
  const listed = [];
188
199
  const digest = (id) => `imap:${createHash("sha256").update(id).digest("hex")}`;
189
200
  for (let start = 0; start < uids.length; start += FETCH_BATCH) {
@@ -1 +1 @@
1
- {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../../src/mail/gmail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../../src/mail/gmail.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,13 @@
2
2
  * The header fields memo reads at list time: enough to group mail by sender, apply the owner's rules and keep
3
3
  * an envelope of the mail a rule records without its text.
4
4
  */
5
- export declare const HEADER_FIELDS = "FROM TO CC SUBJECT LIST-ID LIST-UNSUBSCRIBE PRECEDENCE";
5
+ export declare const HEADER_FIELDS = "FROM TO CC SUBJECT LIST-ID LIST-UNSUBSCRIBE PRECEDENCE REPLY-TO AUTHENTICATION-RESULTS";
6
+ /** SPF, DKIM and DMARC as Gmail judged them when the email arrived; each absent when Gmail did not say. */
7
+ export interface AuthVerdicts {
8
+ spf?: string;
9
+ dkim?: string;
10
+ dmarc?: string;
11
+ }
6
12
  export interface MailHeaders {
7
13
  /** The sender's address, lower case; absent when From holds none. */
8
14
  from?: string;
@@ -14,10 +20,23 @@ export interface MailHeaders {
14
20
  listId?: string;
15
21
  /** List-Id, List-Unsubscribe or `Precedence: bulk|list|junk`: mail sent to many, not written to one. */
16
22
  bulk: boolean;
23
+ /** The first Reply-To address, lower case. */
24
+ replyTo?: string;
25
+ auth?: AuthVerdicts;
17
26
  }
18
27
  export declare const unfold: (text: string) => string;
19
28
  export declare const field: (unfolded: string, name: string) => string | undefined;
29
+ /**
30
+ * The verdicts in Gmail's own Authentication-Results. Only the copy Gmail stamps as mx.google.com counts: a sender
31
+ * can add one under any other name, and Gmail removes forged copies under its own (RFC 8601 §5).
32
+ */
33
+ export declare const authOf: (unfolded: string) => AuthVerdicts | undefined;
20
34
  export declare const addressesOf: (value: string | undefined) => string[];
21
35
  /** The header fields of one email, from its header text. */
22
36
  export declare const headersOf: (text: string) => MailHeaders;
37
+ /**
38
+ * List-Id, the bulk-mail fields, Reply-To and Gmail's SPF, DKIM and DMARC verdicts of a whole email, kept on mail
39
+ * stored in full so a rule or a sender score can be worked out from the store later. Names are lower case.
40
+ */
41
+ export declare const mailHeadersOf: (raw: Uint8Array) => Record<string, string | boolean>;
23
42
  //# sourceMappingURL=headers.d.ts.map