@wirecat/cli-memo 0.25.0 → 0.26.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 +2 -2
- package/dist/app.d.ts +10 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +3 -1
- package/dist/app.js.map +1 -1
- package/dist/bin/memo.js +23 -10
- package/dist/bin/memo.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +2 -1
- package/dist/examples.js.map +1 -1
- package/dist/failure.d.ts +65 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +73 -0
- package/dist/failure.js.map +1 -0
- package/dist/mail/command.d.ts.map +1 -1
- package/dist/mail/command.js +59 -13
- package/dist/mail/command.js.map +1 -1
- package/dist/mail/headers.d.ts +8 -2
- package/dist/mail/headers.d.ts.map +1 -1
- package/dist/mail/headers.js +17 -3
- package/dist/mail/headers.js.map +1 -1
- package/dist/mail/import.d.ts +2 -0
- package/dist/mail/import.d.ts.map +1 -1
- package/dist/mail/import.js +84 -21
- package/dist/mail/import.js.map +1 -1
- package/dist/mail/rules.d.ts +20 -3
- package/dist/mail/rules.d.ts.map +1 -1
- package/dist/mail/rules.js +24 -5
- package/dist/mail/rules.js.map +1 -1
- package/dist/mcp/knowledge.js +1 -1
- package/dist/mcp/knowledge.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +19 -15
- package/dist/mcp/server.js.map +1 -1
- package/dist/notes/embed.d.ts.map +1 -1
- package/dist/notes/embed.js +8 -6
- package/dist/notes/embed.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -1
- package/dist/program.js.map +1 -1
- package/dist/reasons.d.ts +4 -0
- package/dist/reasons.d.ts.map +1 -0
- package/dist/reasons.js +11 -0
- package/dist/reasons.js.map +1 -0
- package/dist/run/import.d.ts +2 -0
- package/dist/run/import.d.ts.map +1 -1
- package/dist/run/import.js +22 -4
- package/dist/run/import.js.map +1 -1
- package/dist/run/lock.d.ts.map +1 -1
- package/dist/run/lock.js +4 -1
- package/dist/run/lock.js.map +1 -1
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +2 -2
- package/dist/search/command.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/skills/cli-memo/SKILL.md +4 -2
package/README.md
CHANGED
|
@@ -306,8 +306,8 @@ More: [memories and facts](https://github.com/WireCatLabs/cli-memo/blob/main/doc
|
|
|
306
306
|
## Keeping it current
|
|
307
307
|
|
|
308
308
|
`memo sync` brings notes and mail up to date and reads only what changed. `memo auto start --every 5m` runs
|
|
309
|
-
it on a systemd user timer; `auto status` shows the next and last run. A lock keeps two imports apart
|
|
310
|
-
|
|
309
|
+
it on a systemd user timer; `auto status` shows the next and last run. A lock keeps two imports apart: a
|
|
310
|
+
timer run that finds a sync still running skips and exits 0. One failing source does not stop the others.
|
|
311
311
|
|
|
312
312
|
More: [keeping memo up to date](https://github.com/WireCatLabs/cli-memo/blob/main/docs/archive.md) ·
|
|
313
313
|
[import a folder on wirecat.dev](https://wirecat.dev/en/docs/memo/notes#add-a-folder)
|
package/dist/app.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
/** How memo names itself to the shared services: in their hints and
|
|
1
|
+
/** How memo names itself to the shared services: in their hints, their files and its errors. */
|
|
2
2
|
export declare const APP: {
|
|
3
3
|
command: string;
|
|
4
4
|
appName: string;
|
|
5
5
|
envPrefix: string;
|
|
6
6
|
description: string;
|
|
7
7
|
version: string;
|
|
8
|
+
errors: {
|
|
9
|
+
reasons: {
|
|
10
|
+
reason: string;
|
|
11
|
+
code: "authentication_error" | "cancelled" | "configuration_error" | "confirmation_required" | "internal_error" | "invalid_response" | "network_error" | "not_found" | "outcome_unknown" | "permission_error" | "provider_error" | "provider_unavailable" | "rate_limited" | "timeout" | "validation_error";
|
|
12
|
+
message: string;
|
|
13
|
+
details: string[];
|
|
14
|
+
step?: string | undefined;
|
|
15
|
+
}[];
|
|
16
|
+
};
|
|
8
17
|
};
|
|
9
18
|
//# sourceMappingURL=app.d.ts.map
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAGA,gGAAgG;AAChG,eAAO,MAAM,GAAG;;;;;;;QAMJ,OAAO;;;;;;;;CAClB,CAAA"}
|
package/dist/app.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { REASONS } from "./reasons.js";
|
|
1
2
|
import { VERSION } from "./version.js";
|
|
2
|
-
/** How memo names itself to the shared services: in their hints and
|
|
3
|
+
/** How memo names itself to the shared services: in their hints, their files and its errors. */
|
|
3
4
|
export const APP = {
|
|
4
5
|
command: "memo",
|
|
5
6
|
appName: "cli-memo",
|
|
6
7
|
envPrefix: "MEMO",
|
|
7
8
|
description: "Context about people across messengers, notes and mail",
|
|
8
9
|
version: VERSION,
|
|
10
|
+
errors: { reasons: REASONS },
|
|
9
11
|
};
|
|
10
12
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,gGAAgG;AAChG,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,wDAAwD;IACrE,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;CAC7B,CAAA"}
|
package/dist/bin/memo.js
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { catchCrashes, processStreams } from "@wirecat/cli-base";
|
|
3
3
|
import { migrateFolders } from "@wirecat/cli-core/background";
|
|
4
4
|
import { ensureSqlite } from "@wirecat/cli-core/sqlite-runtime";
|
|
5
|
+
import { CommanderError } from "commander";
|
|
5
6
|
import { APP } from "../app.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
import { interactiveOf, reportFailure, throwParseFailures } from "../failure.js";
|
|
8
|
+
const args = process.argv.slice(2);
|
|
9
|
+
const tty = process.stdout.isTTY === true;
|
|
10
|
+
const release = catchCrashes({ cli: APP.command, interactive: interactiveOf(args, tty), reasons: APP.errors.reasons });
|
|
11
|
+
let program;
|
|
11
12
|
try {
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
// Before anything resolves a path: a write into a new folder first would strand the old one.
|
|
14
|
+
migrateFolders(APP);
|
|
15
|
+
await ensureSqlite();
|
|
16
|
+
// A static import would load the store's SQLite before ensureSqlite could swap it.
|
|
17
|
+
const { createProgram, refuseJoinedPath } = await import("../program.js");
|
|
18
|
+
program = createProgram();
|
|
19
|
+
throwParseFailures(program);
|
|
20
|
+
refuseJoinedPath(program, args);
|
|
14
21
|
await program.parseAsync(process.argv);
|
|
15
22
|
}
|
|
16
23
|
catch (error) {
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
// Help and the version were printed already; only their exit code is left to give.
|
|
25
|
+
if (error instanceof CommanderError && (error.exitCode === 0 || error.code.startsWith("commander.help")))
|
|
26
|
+
process.exitCode = error.exitCode;
|
|
27
|
+
else
|
|
28
|
+
process.exitCode = await reportFailure(error, { args, program, streams: processStreams, tty });
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
release();
|
|
19
32
|
}
|
|
20
33
|
//# sourceMappingURL=memo.js.map
|
package/dist/bin/memo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/bin/memo.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/bin/memo.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAgB,cAAc,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEhF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAA;AACzC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;AACtH,IAAI,OAA4B,CAAA;AAChC,IAAI,CAAC;IACH,6FAA6F;IAC7F,cAAc,CAAC,GAAG,CAAC,CAAA;IACnB,MAAM,YAAY,EAAE,CAAA;IACpB,mFAAmF;IACnF,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;IACzE,OAAO,GAAG,aAAa,EAAE,CAAA;IACzB,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC/B,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,mFAAmF;IACnF,IAAI,KAAK,YAAY,cAAc,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACtG,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;;QAC9B,OAAO,CAAC,QAAQ,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAA;AACrG,CAAC;QAAS,CAAC;IACT,OAAO,EAAE,CAAA;AACX,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -29,14 +29,14 @@ declare const ConfigSchema: v.ObjectSchema<{
|
|
|
29
29
|
readonly path: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
30
30
|
readonly folders: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
31
31
|
readonly embed: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
32
|
-
/** The owner's keep
|
|
32
|
+
/** The owner's keep, envelope and skip decisions per sender, domain or list; written by `memo mail rules`. */
|
|
33
33
|
readonly rules: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
34
34
|
readonly match: v.ObjectSchema<{
|
|
35
35
|
readonly from: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
36
36
|
readonly domain: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
37
37
|
readonly listId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
38
38
|
}, undefined>;
|
|
39
|
-
readonly action: v.PicklistSchema<["skip", "keep"], undefined>;
|
|
39
|
+
readonly action: v.PicklistSchema<["skip", "envelope", "keep"], undefined>;
|
|
40
40
|
readonly reason: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
41
41
|
readonly decidedAt: v.StringSchema<undefined>;
|
|
42
42
|
}, undefined>, undefined>, undefined>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAG5B,QAAA,MAAM,YAAY;;QAGZ,4FAA4F;;;;;;;QAY5F,qFAAqF;;QAErF,6FAA6F;;;;;;;;;;;;;;YAazF,8GAA8G;;;;;YAK9G,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAG5B,QAAA,MAAM,YAAY;;QAGZ,4FAA4F;;;;;;;QAY5F,qFAAqF;;QAErF,6FAA6F;;;;;;;;;;;;;;YAazF,8GAA8G;;;;;YAK9G,8GAA8G;;;;;;;;;;;;QAiBlH,uEAAuE;;QAEvE,uFAAuF;;;aAI3F,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AAEvD,eAAO,MAAM,UAAU,SAAS,MAAM,CAAC,UAAU,KAAiB,MACiB,CAAA;AAEnF,eAAO,MAAM,UAAU,SAAS,MAAM,CAAC,UAAU,KAAiB,MACP,CAAA;AAE3D,oEAAoE;AACpE,eAAO,MAAM,YAAY,WAAY,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,QAAO,MAAM,CAAC,UAAU,KAAiB,MAIvG,CAAA"}
|
package/dist/config.js
CHANGED
|
@@ -28,14 +28,14 @@ const ConfigSchema = v.object({
|
|
|
28
28
|
path: v.optional(v.pipe(v.string(), v.minLength(1))),
|
|
29
29
|
folders: v.optional(v.array(v.string())),
|
|
30
30
|
embed: v.optional(v.boolean()),
|
|
31
|
-
/** The owner's keep
|
|
31
|
+
/** The owner's keep, envelope and skip decisions per sender, domain or list; written by `memo mail rules`. */
|
|
32
32
|
rules: v.optional(v.array(v.object({
|
|
33
33
|
match: v.object({
|
|
34
34
|
from: v.optional(v.string()),
|
|
35
35
|
domain: v.optional(v.string()),
|
|
36
36
|
listId: v.optional(v.string()),
|
|
37
37
|
}),
|
|
38
|
-
action: v.picklist(["skip", "keep"]),
|
|
38
|
+
action: v.picklist(["skip", "envelope", "keep"]),
|
|
39
39
|
reason: v.optional(v.string()),
|
|
40
40
|
decidedAt: v.string(),
|
|
41
41
|
}))),
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAChG,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEpD,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,QAAQ,CACf,CAAC,CAAC,MAAM,CAAC;QACP,4FAA4F;QAC5F,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,KAAK,CAAC;YACN,CAAC,CAAC,MAAM,EAAE;YACV,CAAC,CAAC,MAAM,CAAC;gBACP,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aACzC,CAAC;SACH,CAAC,CACH;QACD,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACvC,qFAAqF;QACrF,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9B,6FAA6F;QAC7F,MAAM,EAAE,CAAC,CAAC,QAAQ,CAChB,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAChG;KACF,CAAC,CACH;IACD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/F,IAAI,EAAE,CAAC,CAAC,QAAQ,CACd,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,KAAK,CACf,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,8GAA8G;YAC9G,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACvD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9B,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/examples.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAuHhE,CAAA;AAQD,qFAAqF;AACrF,eAAO,MAAM,WAAW,YAAa,OAAO,KAAG,IAO9C,CAAA"}
|
package/dist/examples.js
CHANGED
|
@@ -21,7 +21,8 @@ export const EXAMPLES = {
|
|
|
21
21
|
"mail probe": ["memo mail probe personal --limit-groups 30", "memo mail probe work --since-time 365d --json"],
|
|
22
22
|
"mail rules list": ["memo mail rules list personal --json"],
|
|
23
23
|
"mail rules add": [
|
|
24
|
-
"memo mail rules add personal --domain news.example --
|
|
24
|
+
"memo mail rules add personal --domain news.example --envelope --reason 'newsletters'",
|
|
25
|
+
"memo mail rules add personal --domain spam.example --skip",
|
|
25
26
|
"memo mail rules add personal --from alice@news.example --keep",
|
|
26
27
|
],
|
|
27
28
|
"mail rules remove": ["memo mail rules remove personal --domain news.example"],
|
package/dist/examples.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAGrD,MAAM,CAAC,MAAM,QAAQ,GAAgD;IACnE,OAAO,EAAE,CAAC,oCAAoC,EAAE,qDAAqD,CAAC;IACtG,YAAY,EAAE,CAAC,yBAAyB,EAAE,8CAA8C,CAAC;IACzF,YAAY,EAAE;QACZ,+CAA+C;QAC/C,0DAA0D;QAC1D,8CAA8C;KAC/C;IACD,WAAW,EAAE;QACX,6EAA6E;QAC7E,mGAAmG;KACpG;IACD,YAAY,EAAE,CAAC,uEAAuE,CAAC;IACvF,cAAc,EAAE,CAAC,2BAA2B,CAAC;IAC7C,cAAc,EAAE,CAAC,uDAAuD,CAAC;IACzE,aAAa,EAAE,CAAC,0BAA0B,CAAC;IAC3C,gBAAgB,EAAE,CAAC,+BAA+B,CAAC;IACnD,cAAc,EAAE,CAAC,0BAA0B,CAAC;IAC5C,eAAe,EAAE,CAAC,oFAAoF,CAAC;IACvG,YAAY,EAAE,CAAC,4CAA4C,EAAE,+CAA+C,CAAC;IAC7G,iBAAiB,EAAE,CAAC,sCAAsC,CAAC;IAC3D,gBAAgB,EAAE;QAChB,
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { type Streams } from "@wirecat/cli-base";
|
|
2
|
+
import { type Command } from "commander";
|
|
3
|
+
export declare const errorObject: (error: unknown) => Promise<{
|
|
4
|
+
error: {
|
|
5
|
+
code: "authentication_error" | "cancelled" | "configuration_error" | "confirmation_required" | "internal_error" | "invalid_response" | "network_error" | "not_found" | "outcome_unknown" | "permission_error" | "provider_error" | "provider_unavailable" | "rate_limited" | "timeout" | "validation_error";
|
|
6
|
+
reason: string;
|
|
7
|
+
message: string;
|
|
8
|
+
param?: string | undefined;
|
|
9
|
+
details?: {
|
|
10
|
+
[x: string]: unknown;
|
|
11
|
+
} | undefined;
|
|
12
|
+
next?: {
|
|
13
|
+
step: string;
|
|
14
|
+
command: string;
|
|
15
|
+
args: {
|
|
16
|
+
[x: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
why: string;
|
|
19
|
+
}[] | undefined;
|
|
20
|
+
run_id?: string | undefined;
|
|
21
|
+
};
|
|
22
|
+
}>;
|
|
23
|
+
/** The same object as `--json` prints on stderr, as MCP's `isError` answer. */
|
|
24
|
+
export declare const mcpFailure: (error: unknown) => Promise<{
|
|
25
|
+
content: {
|
|
26
|
+
type: "text";
|
|
27
|
+
text: string;
|
|
28
|
+
}[];
|
|
29
|
+
structuredContent: {
|
|
30
|
+
error: {
|
|
31
|
+
code: "authentication_error" | "cancelled" | "configuration_error" | "confirmation_required" | "internal_error" | "invalid_response" | "network_error" | "not_found" | "outcome_unknown" | "permission_error" | "provider_error" | "provider_unavailable" | "rate_limited" | "timeout" | "validation_error";
|
|
32
|
+
reason: string;
|
|
33
|
+
message: string;
|
|
34
|
+
param?: string | undefined;
|
|
35
|
+
details?: {
|
|
36
|
+
[x: string]: unknown;
|
|
37
|
+
} | undefined;
|
|
38
|
+
next?: {
|
|
39
|
+
step: string;
|
|
40
|
+
command: string;
|
|
41
|
+
args: {
|
|
42
|
+
[x: string]: unknown;
|
|
43
|
+
};
|
|
44
|
+
why: string;
|
|
45
|
+
}[] | undefined;
|
|
46
|
+
run_id?: string | undefined;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
isError: true;
|
|
50
|
+
}>;
|
|
51
|
+
/** A person at a terminal who did not ask for machine output. */
|
|
52
|
+
export declare const interactiveOf: (args: readonly string[], tty: boolean) => boolean;
|
|
53
|
+
/** Parse failures reach the handler as `CommanderError` instead of Commander's own text and exit. */
|
|
54
|
+
export declare const throwParseFailures: (program: Command) => void;
|
|
55
|
+
export interface ReportOptions {
|
|
56
|
+
/** The arguments after the program name. */
|
|
57
|
+
args: readonly string[];
|
|
58
|
+
/** Names the failed command in the `--debug` record. */
|
|
59
|
+
program?: Command;
|
|
60
|
+
streams: Streams;
|
|
61
|
+
tty: boolean;
|
|
62
|
+
}
|
|
63
|
+
/** One error object on stderr, `✗ message` at a terminal; returns the exit code. */
|
|
64
|
+
export declare const reportFailure: (error: unknown, { args, program, streams, tty }: ReportOptions) => Promise<number>;
|
|
65
|
+
//# sourceMappingURL=failure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,OAAO,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,KAAK,OAAO,EAAkB,MAAM,WAAW,CAAA;AAgCxD,eAAO,MAAM,WAAW,UAAiB,OAAO;;;;;;;;;;;;;;;;;;;EAA0D,CAAA;AAE1G,+EAA+E;AAC/E,eAAO,MAAM,UAAU,UAAiB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EAA6C,CAAA;AAS5F,iEAAiE;AACjE,eAAO,MAAM,aAAa,SAAU,SAAS,MAAM,EAAE,OAAO,OAAO,YACF,CAAA;AAejE,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,YAAa,OAAO,KAAG,IAGrD,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,oFAAoF;AACpF,eAAO,MAAM,aAAa,UAAiB,OAAO,mCAAmC,aAAa,oBAWjG,CAAA"}
|
package/dist/failure.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { CliError, errorObjectOf, errorRecordOf, exitCodeOfError, mcpErrorResult, renderError, } from "@wirecat/cli-base";
|
|
2
|
+
import { CommanderError } from "commander";
|
|
3
|
+
import { ValiError } from "valibot";
|
|
4
|
+
import { APP } from "./app.js";
|
|
5
|
+
import { REASONS } from "./reasons.js";
|
|
6
|
+
let shared;
|
|
7
|
+
// cli-core's CLI module costs every memo command ~70 ms to load, so only a failure loads it.
|
|
8
|
+
const contextOf = async () => {
|
|
9
|
+
if (shared)
|
|
10
|
+
return shared;
|
|
11
|
+
try {
|
|
12
|
+
shared = (await import("@wirecat/cli-core/cli")).failureContext(APP.errors);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return { reasons: REASONS };
|
|
16
|
+
}
|
|
17
|
+
return shared;
|
|
18
|
+
};
|
|
19
|
+
const recognisable = (error) => {
|
|
20
|
+
if (error instanceof CommanderError)
|
|
21
|
+
return new CliError("validation_error", error.message.replace(/^error: /, ""), { reason: "input.invalid" });
|
|
22
|
+
if (error instanceof ValiError) {
|
|
23
|
+
const [issue] = error.issues;
|
|
24
|
+
const param = issue?.path?.map((item) => String(item.key)).join(".");
|
|
25
|
+
return new CliError("validation_error", issue?.message ?? "the input is not valid", {
|
|
26
|
+
reason: "input.invalid",
|
|
27
|
+
...(param ? { param } : {}),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return error;
|
|
31
|
+
};
|
|
32
|
+
export const errorObject = async (error) => errorObjectOf(recognisable(error), await contextOf());
|
|
33
|
+
/** The same object as `--json` prints on stderr, as MCP's `isError` answer. */
|
|
34
|
+
export const mcpFailure = async (error) => mcpErrorResult(await errorObject(error));
|
|
35
|
+
const MACHINE_FLAGS = new Set(["--json", "--jsonl"]);
|
|
36
|
+
const optionsOf = (args) => {
|
|
37
|
+
const end = args.indexOf("--");
|
|
38
|
+
return end < 0 ? args : args.slice(0, end);
|
|
39
|
+
};
|
|
40
|
+
/** A person at a terminal who did not ask for machine output. */
|
|
41
|
+
export const interactiveOf = (args, tty) => tty && !optionsOf(args).some((flag) => MACHINE_FLAGS.has(flag));
|
|
42
|
+
const commandOf = (program, args) => {
|
|
43
|
+
const path = [];
|
|
44
|
+
let at = program;
|
|
45
|
+
for (const arg of args) {
|
|
46
|
+
if (arg.startsWith("-"))
|
|
47
|
+
continue;
|
|
48
|
+
const child = at?.commands.find((command) => command.name() === arg);
|
|
49
|
+
if (!child)
|
|
50
|
+
break;
|
|
51
|
+
path.push(child.name());
|
|
52
|
+
at = child;
|
|
53
|
+
}
|
|
54
|
+
return path.join(" ") || "memo";
|
|
55
|
+
};
|
|
56
|
+
/** Parse failures reach the handler as `CommanderError` instead of Commander's own text and exit. */
|
|
57
|
+
export const throwParseFailures = (program) => {
|
|
58
|
+
program.exitOverride().configureOutput({ outputError: () => undefined });
|
|
59
|
+
for (const command of program.commands)
|
|
60
|
+
throwParseFailures(command);
|
|
61
|
+
};
|
|
62
|
+
/** One error object on stderr, `✗ message` at a terminal; returns the exit code. */
|
|
63
|
+
export const reportFailure = async (error, { args, program, streams, tty }) => {
|
|
64
|
+
const failure = recognisable(error);
|
|
65
|
+
const object = errorObjectOf(failure, await contextOf());
|
|
66
|
+
const flags = optionsOf(args);
|
|
67
|
+
const record = flags.includes("--debug")
|
|
68
|
+
? errorRecordOf(failure, object, { command: commandOf(program, flags), service: APP.command, version: APP.version })
|
|
69
|
+
: undefined;
|
|
70
|
+
streams.diagnostic(renderError(object, { cli: APP.command, interactive: interactiveOf(args, tty), ...(record ? { record } : {}) }));
|
|
71
|
+
return exitCodeOfError(object);
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/mail/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4GxC,eAAO,MAAM,WAAW,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAqHxF,CAAA"}
|
package/dist/mail/command.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { openStore } from "@wirecat/cli-core/store";
|
|
2
3
|
import { loadConfig, updateConfig } from "../config.js";
|
|
3
4
|
import { positive } from "../options.js";
|
|
4
5
|
import { printing } from "../records/run.js";
|
|
5
6
|
import { mailAccounts, mailFolders, mailSource } from "./accounts.js";
|
|
6
7
|
import { probeMail, SUGGEST_RULE } from "./probe.js";
|
|
7
|
-
import { sameMatch } from "./rules.js";
|
|
8
|
+
import { envelopeBox, sameMatch } from "./rules.js";
|
|
8
9
|
const accountOf = (config, name) => mailAccounts(config.mail?.accounts ?? [], [name])[0];
|
|
9
10
|
const matchOf = ({ from, domain, listId }) => {
|
|
10
11
|
const given = [from, domain, listId].filter((value) => value !== undefined);
|
|
@@ -17,7 +18,34 @@ const describe = (match) => match.from !== undefined
|
|
|
17
18
|
: match.domain !== undefined
|
|
18
19
|
? `domain ${match.domain}`
|
|
19
20
|
: `list-id ${match.listId}`;
|
|
20
|
-
const ruleLine = (rule) => [
|
|
21
|
+
const ruleLine = (rule) => [
|
|
22
|
+
rule.action.padEnd(8),
|
|
23
|
+
describe(rule.match),
|
|
24
|
+
rule.decidedAt.slice(0, 10),
|
|
25
|
+
rule.recorded === undefined ? "" : `${rule.recorded.emails} emails, ${megabytes(rule.recorded.bytes)} MB`,
|
|
26
|
+
rule.reason ?? "",
|
|
27
|
+
]
|
|
28
|
+
.filter(Boolean)
|
|
29
|
+
.join(" ")
|
|
30
|
+
.trimEnd();
|
|
31
|
+
const PAGE = 1000;
|
|
32
|
+
/** What each envelope rule has recorded so far, read from the store; nothing is fetched from the mailbox. */
|
|
33
|
+
const recordedBy = async (store, address, rule) => {
|
|
34
|
+
const account = await store.storedAccount({ provider: "email", account: address.toLowerCase() }).catch(() => null);
|
|
35
|
+
const recorded = { emails: 0, bytes: 0 };
|
|
36
|
+
if (account === null)
|
|
37
|
+
return recorded;
|
|
38
|
+
const mailbox = envelopeBox(rule.match).externalId;
|
|
39
|
+
for (let offset = 0;; offset += PAGE) {
|
|
40
|
+
const page = await store.mail.emails({ accountId: account.id, mailbox, limit: PAGE, offset });
|
|
41
|
+
for (const email of page) {
|
|
42
|
+
recorded.emails++;
|
|
43
|
+
recorded.bytes += email.size ?? 0;
|
|
44
|
+
}
|
|
45
|
+
if (page.length < PAGE)
|
|
46
|
+
return recorded;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
21
49
|
const changeRules = (env, name, change) => {
|
|
22
50
|
let changed = [];
|
|
23
51
|
updateConfig((config) => {
|
|
@@ -90,30 +118,48 @@ export const mailCommand = (program, streams, env) => {
|
|
|
90
118
|
.description("one account's rules")
|
|
91
119
|
.argument("<account>", "the account's name in mail.accounts, or its address")
|
|
92
120
|
.option("--json", "print JSON")
|
|
93
|
-
.
|
|
94
|
-
|
|
95
|
-
|
|
121
|
+
.addHelpText("after", "\nAn envelope rule shows how many emails it recorded and their size at the source.")
|
|
122
|
+
.action(async (name, options) => {
|
|
123
|
+
const account = accountOf(loadConfig(env), name);
|
|
124
|
+
const rules = account.rules ?? [];
|
|
125
|
+
const store = rules.some(({ action }) => action === "envelope") ? await openStore({ env }) : undefined;
|
|
126
|
+
try {
|
|
127
|
+
const items = [];
|
|
128
|
+
for (const rule of rules)
|
|
129
|
+
items.push(store !== undefined && rule.action === "envelope"
|
|
130
|
+
? { ...rule, recorded: await recordedBy(store, account.address, rule) }
|
|
131
|
+
: rule);
|
|
132
|
+
print(options.json, { items }, items.map(ruleLine).join("\n") || "no rules");
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
await store?.close();
|
|
136
|
+
}
|
|
96
137
|
});
|
|
97
138
|
rules
|
|
98
139
|
.command("add")
|
|
99
|
-
.description("skip or keep mail by sender, domain or list; a
|
|
140
|
+
.description("skip, record or keep mail by sender, domain or list; a repeat replaces its rule")
|
|
100
141
|
.argument("<account>", "the account's name in mail.accounts, or its address")
|
|
101
142
|
.option("--from <address>", "one sender address")
|
|
102
143
|
.option("--domain <domain>", "a sender domain, and its subdomains")
|
|
103
144
|
.option("--list-id <id>", "a mailing list, by its List-Id")
|
|
104
|
-
.option("--skip", "never
|
|
105
|
-
.option("--
|
|
145
|
+
.option("--skip", "never read or store this mail")
|
|
146
|
+
.option("--envelope", "store only sender, date, size and labels: counted, out of search, cleanable later")
|
|
147
|
+
.option("--keep", "import this mail even when a skip or envelope rule matches it")
|
|
106
148
|
.option("--reason <text>", "why, for the owner later")
|
|
107
149
|
.option("--json", "print JSON")
|
|
108
|
-
.addHelpText("after", "\nA keep wins over a skip, so --keep --from one sender overrides
|
|
109
|
-
"A skipped email is never read or stored by memo sync
|
|
150
|
+
.addHelpText("after", "\nA keep wins over an envelope, an envelope over a skip, so --keep --from one sender overrides " +
|
|
151
|
+
"--skip --domain of its domain. A skipped email is never read or stored by memo sync. An envelope " +
|
|
152
|
+
"email costs no more from the mailbox than a skipped one; its subject is kept in its metadata, not in " +
|
|
153
|
+
"search. Changing an envelope rule to keep, or removing it, reads those emails in full on the next sync. " +
|
|
154
|
+
"Mail already stored in full stays.")
|
|
110
155
|
.action((name, options) => {
|
|
111
156
|
const match = matchOf(options);
|
|
112
|
-
|
|
113
|
-
|
|
157
|
+
const actions = ["skip", "envelope", "keep"].filter((action) => options[action]);
|
|
158
|
+
if (actions.length !== 1)
|
|
159
|
+
throw new CliError("validation_error", "give exactly one of --skip, --envelope, --keep");
|
|
114
160
|
const rule = {
|
|
115
161
|
match,
|
|
116
|
-
action:
|
|
162
|
+
action: actions[0],
|
|
117
163
|
...(options.reason === undefined ? {} : { reason: options.reason }),
|
|
118
164
|
decidedAt: new Date().toISOString(),
|
|
119
165
|
};
|
package/dist/mail/command.js.map
CHANGED
|
@@ -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":"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"}
|
package/dist/mail/headers.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The header fields memo reads at list time: enough to group mail by sender, apply the owner's rules and keep
|
|
3
|
+
* an envelope of the mail a rule records without its text.
|
|
4
|
+
*/
|
|
5
|
+
export declare const HEADER_FIELDS = "FROM TO CC SUBJECT LIST-ID LIST-UNSUBSCRIBE PRECEDENCE";
|
|
3
6
|
export interface MailHeaders {
|
|
4
7
|
/** The sender's address, lower case; absent when From holds none. */
|
|
5
8
|
from?: string;
|
|
9
|
+
/** The sender's display name, decoded. */
|
|
10
|
+
fromName?: string;
|
|
11
|
+
subject?: string;
|
|
6
12
|
/** To and Cc addresses, lower case. */
|
|
7
13
|
to: string[];
|
|
8
14
|
listId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/mail/headers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/mail/headers.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,aAAa,2DAA2D,CAAA;AAErF,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uCAAuC;IACvC,EAAE,EAAE,MAAM,EAAE,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wGAAwG;IACxG,IAAI,EAAE,OAAO,CAAA;CACd;AAED,eAAO,MAAM,MAAM,SAAU,MAAM,KAAG,MAA2C,CAAA;AAEjF,eAAO,MAAM,KAAK,aAAc,MAAM,QAAQ,MAAM,KAAG,MAAM,GAAG,SACI,CAAA;AAEpE,eAAO,MAAM,WAAW,UAAW,MAAM,GAAG,SAAS,KAAG,MAAM,EAK7D,CAAA;AAQD,4DAA4D;AAC5D,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,WAoBxC,CAAA"}
|
package/dist/mail/headers.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { decodeWords } from "postal-mime";
|
|
2
|
+
/**
|
|
3
|
+
* The header fields memo reads at list time: enough to group mail by sender, apply the owner's rules and keep
|
|
4
|
+
* an envelope of the mail a rule records without its text.
|
|
5
|
+
*/
|
|
6
|
+
export const HEADER_FIELDS = "FROM TO CC SUBJECT LIST-ID LIST-UNSUBSCRIBE PRECEDENCE";
|
|
3
7
|
export const unfold = (text) => text.replace(/\r?\n[ \t]+/g, " ");
|
|
4
8
|
export const field = (unfolded, name) => new RegExp(`^${name}:[ \\t]*(.*?)\\r?$`, "im").exec(unfolded)?.[1];
|
|
5
9
|
export const addressesOf = (value) => {
|
|
@@ -9,10 +13,18 @@ export const addressesOf = (value) => {
|
|
|
9
13
|
const found = bracketed.length ? bracketed : (value.match(/[^\s<>,;:"()]+@[^\s<>,;:"()]+/g) ?? []);
|
|
10
14
|
return found.map((address) => address.toLowerCase());
|
|
11
15
|
};
|
|
16
|
+
const nameOf = (value) => {
|
|
17
|
+
const before = /^\s*(.*?)\s*<[^<>]+>\s*$/.exec(value)?.[1];
|
|
18
|
+
const name = before?.replace(/^"(.*)"$/, "$1").trim();
|
|
19
|
+
return name ? decodeWords(name) : undefined;
|
|
20
|
+
};
|
|
12
21
|
/** The header fields of one email, from its header text. */
|
|
13
22
|
export const headersOf = (text) => {
|
|
14
23
|
const unfolded = unfold(text);
|
|
15
|
-
const
|
|
24
|
+
const sender = field(unfolded, "From");
|
|
25
|
+
const [from] = addressesOf(sender);
|
|
26
|
+
const fromName = sender === undefined ? undefined : nameOf(sender);
|
|
27
|
+
const subject = field(unfolded, "Subject");
|
|
16
28
|
const rawList = field(unfolded, "List-Id");
|
|
17
29
|
const listId = rawList === undefined ? undefined : (/<([^>]+)>/.exec(rawList)?.[1] ?? rawList).trim().toLowerCase();
|
|
18
30
|
const bulk = Boolean(listId) ||
|
|
@@ -20,6 +32,8 @@ export const headersOf = (text) => {
|
|
|
20
32
|
/^(bulk|list|junk)\b/i.test(field(unfolded, "Precedence") ?? "");
|
|
21
33
|
return {
|
|
22
34
|
...(from === undefined ? {} : { from }),
|
|
35
|
+
...(fromName ? { fromName } : {}),
|
|
36
|
+
...(subject === undefined ? {} : { subject: decodeWords(subject).trim() }),
|
|
23
37
|
to: [...addressesOf(field(unfolded, "To")), ...addressesOf(field(unfolded, "Cc"))],
|
|
24
38
|
...(listId ? { listId } : {}),
|
|
25
39
|
bulk,
|
package/dist/mail/headers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/mail/headers.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/mail/headers.ts"],"names":[],"mappings":"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"}
|