@framers/agentos-ext-channel-email 0.4.3 → 0.5.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 +74 -9
- package/dist/EmailService.d.ts +261 -9
- package/dist/EmailService.d.ts.map +1 -1
- package/dist/EmailService.js +594 -35
- package/dist/EmailService.js.map +1 -1
- package/dist/attachments.d.ts +118 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +294 -0
- package/dist/attachments.js.map +1 -0
- package/dist/headers.d.ts +102 -0
- package/dist/headers.d.ts.map +1 -0
- package/dist/headers.js +261 -0
- package/dist/headers.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/messageHeaders.d.ts +8 -0
- package/dist/messageHeaders.d.ts.map +1 -1
- package/dist/messageHeaders.js +2 -0
- package/dist/messageHeaders.js.map +1 -1
- package/dist/preferences/RecipientCapability.d.ts +8 -7
- package/dist/preferences/RecipientCapability.d.ts.map +1 -1
- package/dist/preferences/RecipientCapability.js +11 -5
- package/dist/preferences/RecipientCapability.js.map +1 -1
- package/dist/preferences/SuppressionStore.d.ts +2 -2
- package/dist/preferences/SuppressionStore.js +2 -2
- package/dist/preferences/database.d.ts +4 -2
- package/dist/preferences/database.d.ts.map +1 -1
- package/dist/preferences/database.js +9 -10
- package/dist/preferences/database.js.map +1 -1
- package/dist/preferences/index.d.ts +2 -2
- package/dist/preferences/index.js +2 -2
- package/dist/tools/messages.d.ts +21 -0
- package/dist/tools/messages.d.ts.map +1 -0
- package/dist/tools/messages.js +18 -0
- package/dist/tools/messages.js.map +1 -0
- package/dist/tools/read.d.ts +2 -2
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +6 -4
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +2 -1
- package/dist/tools/search.js.map +1 -1
- package/manifest.json +3 -2
- package/package.json +4 -4
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview What a message's header fields say beside its envelope, as `EmailService`'s reads give it: the
|
|
3
|
+
* Delivered-To addresses, the threading ids, the fields that mark a message a machine sent, and the
|
|
4
|
+
* Authentication-Results field (RFC 8601) parsed to the DKIM, SPF and DMARC results, the domain the DMARC result speaks
|
|
5
|
+
* for, and the domain a DKIM signature aligns with the From address. A host that reads a message's header another way,
|
|
6
|
+
* such as through Gmail's API, reads the same fields with `readHeaderFields`.
|
|
7
|
+
*/
|
|
8
|
+
/** The results the receiving host recorded in its Authentication-Results field (RFC 8601). */
|
|
9
|
+
export interface EmailAuthentication {
|
|
10
|
+
/**
|
|
11
|
+
* The DKIM result (RFC 6376), in lowercase: `pass` when any signature passed, else the first signature's result, such
|
|
12
|
+
* as `fail`; `none` when the field names no DKIM result.
|
|
13
|
+
*/
|
|
14
|
+
dkim: string;
|
|
15
|
+
/** The SPF result (RFC 7208), in lowercase, such as `pass` or `softfail`; `none` when the field names none. */
|
|
16
|
+
spf: string;
|
|
17
|
+
/**
|
|
18
|
+
* The DMARC result (RFC 7489), in lowercase, such as `pass` or `fail`; `none` when the field names none. It is the
|
|
19
|
+
* receiving host's verdict for the domain `dmarcFrom` names, the From domain that host read; this result does not
|
|
20
|
+
* compare that domain with the From address a read gives, so a host that trusts it compares `dmarcFrom` with that
|
|
21
|
+
* address's domain.
|
|
22
|
+
*/
|
|
23
|
+
dmarc: string;
|
|
24
|
+
/**
|
|
25
|
+
* The domain the DMARC result names as `header.from`, the domain of the From field the receiving host read (RFC 7489
|
|
26
|
+
* section 11.1), in lowercase without a closing dot: the domain its DMARC result speaks for. `none` when the field
|
|
27
|
+
* names no DMARC result, or one that names no domain.
|
|
28
|
+
*/
|
|
29
|
+
dmarcFrom: string;
|
|
30
|
+
/**
|
|
31
|
+
* The From address's domain, in lowercase, when a DKIM signature that passed was made for that domain or for a domain
|
|
32
|
+
* it ends in after a dot: the signature's `header.d`, or the domain of its `header.i` where it names no `header.d`.
|
|
33
|
+
* `none` otherwise, and when the From address given names no domain, as a group's or an absent From's does. A
|
|
34
|
+
* signature made for a domain below the From domain, which RFC 7489 section 3.1.1's relaxed alignment also counts,
|
|
35
|
+
* does not count here: finding a domain's organizational domain needs the public suffix list.
|
|
36
|
+
*/
|
|
37
|
+
alignedDomain: string;
|
|
38
|
+
}
|
|
39
|
+
/** What `readHeaderFields` and `parseAuthenticationResults` read a header block against. */
|
|
40
|
+
export interface HeaderFieldOptions {
|
|
41
|
+
/**
|
|
42
|
+
* The message's From address, whose domain a DKIM signature must align with; a From that names no domain, such as the
|
|
43
|
+
* empty string, aligns with none. When `from` is not given at all, the `header.from` of the DMARC result names the
|
|
44
|
+
* domain.
|
|
45
|
+
*/
|
|
46
|
+
from?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The authserv-id of the host that received the message, such as `mx.google.com`, compared ignoring case: only an
|
|
49
|
+
* Authentication-Results field that names it counts, so a field a sender wrote under another name never does. Without
|
|
50
|
+
* it the first field counts, which is the receiving host's only when that host writes one at the top of every message
|
|
51
|
+
* it takes in; on a host that writes none, the first field is one the sender wrote. Give it for any decision that
|
|
52
|
+
* trusts the results.
|
|
53
|
+
*/
|
|
54
|
+
authServId?: string;
|
|
55
|
+
}
|
|
56
|
+
/** What `readHeaderFields` reads from a header block. */
|
|
57
|
+
export interface HeaderFields {
|
|
58
|
+
/** The address of each Delivered-To field, in lowercase, as `addressOf` gives it, in the header's order. */
|
|
59
|
+
deliveredTo: string[];
|
|
60
|
+
/** The first message id In-Reply-To lists, in angle brackets, or the empty string. */
|
|
61
|
+
inReplyTo: string;
|
|
62
|
+
/** The message ids References lists, each in angle brackets, in its order. */
|
|
63
|
+
references: string[];
|
|
64
|
+
/** The keyword of the first Auto-Submitted field (RFC 3834), in lowercase; `no` when the header has none. */
|
|
65
|
+
autoSubmitted: string;
|
|
66
|
+
/** The keyword of the first Precedence field, in lowercase, such as `bulk` or `list`; the empty string when none. */
|
|
67
|
+
precedence: string;
|
|
68
|
+
/** Whether the header holds an X-Autoreply or an X-Auto-Response-Suppress field, whatever its value. */
|
|
69
|
+
autoreply: boolean;
|
|
70
|
+
/** The receiving host's Authentication-Results, parsed. */
|
|
71
|
+
authentication: EmailAuthentication;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* An address as a read gives it, in lowercase, or `undefined` when it names no local part or a domain with white space
|
|
75
|
+
* in it: its local part in quotes, as RFC 5322 writes it, only when it holds white space, a double quote or another
|
|
76
|
+
* special but the dot, and else bare. A server gives an envelope's local part with its quoting removed (RFC 3501 section
|
|
77
|
+
* 9, `addr-mailbox`), and a Delivered-To field keeps it as written, so `support team@example.com` from an envelope and
|
|
78
|
+
* `"Support Team"@example.com` from a field both read `"support team"@example.com`, and `"bob"@example.com` reads
|
|
79
|
+
* `bob@example.com`.
|
|
80
|
+
*
|
|
81
|
+
* @param text An address, alone.
|
|
82
|
+
*/
|
|
83
|
+
export declare function addressOf(text: string): string | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* The DKIM, SPF and DMARC results, the domain the DMARC result names and the aligned domain a header block's
|
|
86
|
+
* Authentication-Results field records: the first such field, or, given `authServId`, the first that names that host.
|
|
87
|
+
* A result the field does not record, and a header with no field that counts, reads `none`. Comments are left out, so a
|
|
88
|
+
* semicolon inside one splits nothing, and a folded field is read whole.
|
|
89
|
+
*
|
|
90
|
+
* @param headerBlock The message's header block, or the fields of it a read fetched.
|
|
91
|
+
* @param options The From address to align with and the receiving host's authserv-id.
|
|
92
|
+
*/
|
|
93
|
+
export declare function parseAuthenticationResults(headerBlock: string, options?: HeaderFieldOptions): EmailAuthentication;
|
|
94
|
+
/**
|
|
95
|
+
* What a header block says beside the envelope: its Delivered-To addresses, its threading ids, the fields that mark a
|
|
96
|
+
* message a machine sent, and its Authentication-Results as `parseAuthenticationResults` reads them.
|
|
97
|
+
*
|
|
98
|
+
* @param headerBlock The message's header block, or the fields of it a read fetched.
|
|
99
|
+
* @param options The From address to align with and the receiving host's authserv-id.
|
|
100
|
+
*/
|
|
101
|
+
export declare function readHeaderFields(headerBlock: string, options?: HeaderFieldOptions): HeaderFields;
|
|
102
|
+
//# sourceMappingURL=headers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,8FAA8F;AAC9F,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,+GAA+G;IAC/G,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,4FAA4F;AAC5F,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,4GAA4G;IAC5G,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,6GAA6G;IAC7G,aAAa,EAAE,MAAM,CAAC;IACtB,qHAAqH;IACrH,UAAU,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,SAAS,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,cAAc,EAAE,mBAAmB,CAAC;CACrC;AA6LD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW1D;AASD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,mBAAmB,CAErH;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,YAAY,CAgBpG"}
|
package/dist/headers.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview What a message's header fields say beside its envelope, as `EmailService`'s reads give it: the
|
|
4
|
+
* Delivered-To addresses, the threading ids, the fields that mark a message a machine sent, and the
|
|
5
|
+
* Authentication-Results field (RFC 8601) parsed to the DKIM, SPF and DMARC results, the domain the DMARC result speaks
|
|
6
|
+
* for, and the domain a DKIM signature aligns with the From address. A host that reads a message's header another way,
|
|
7
|
+
* such as through Gmail's API, reads the same fields with `readHeaderFields`.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.addressOf = addressOf;
|
|
11
|
+
exports.parseAuthenticationResults = parseAuthenticationResults;
|
|
12
|
+
exports.readHeaderFields = readHeaderFields;
|
|
13
|
+
const messageHeaders_js_1 = require("./messageHeaders.js");
|
|
14
|
+
/** A quoted string, a lone `=`, or a run of characters that are neither white space, `=` nor a double quote. */
|
|
15
|
+
const TOKEN = /"(?:[^"\\]|\\.)*"?|=|[^\s="]+/g;
|
|
16
|
+
/** A domain: labels of characters other than white space, `@` and `.`, at least two, joined by dots. */
|
|
17
|
+
const DOMAIN = /^[^\s@.]+(?:\.[^\s@.]+)+$/;
|
|
18
|
+
/**
|
|
19
|
+
* `value` with each comment written as a space (RFC 5322 section 3.2.2): text in parentheses, which may nest and may
|
|
20
|
+
* hold a quoted pair, outside quoted strings, where a parenthesis is text.
|
|
21
|
+
*/
|
|
22
|
+
function withoutComments(value) {
|
|
23
|
+
let out = '';
|
|
24
|
+
let depth = 0;
|
|
25
|
+
let quoted = false;
|
|
26
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
27
|
+
const character = value.charAt(index);
|
|
28
|
+
if (depth > 0) {
|
|
29
|
+
if (character === '\\')
|
|
30
|
+
index += 1;
|
|
31
|
+
else if (character === '(')
|
|
32
|
+
depth += 1;
|
|
33
|
+
else if (character === ')') {
|
|
34
|
+
depth -= 1;
|
|
35
|
+
if (depth === 0)
|
|
36
|
+
out += ' ';
|
|
37
|
+
}
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (quoted) {
|
|
41
|
+
out += character;
|
|
42
|
+
if (character === '\\' && index + 1 < value.length) {
|
|
43
|
+
index += 1;
|
|
44
|
+
out += value.charAt(index);
|
|
45
|
+
}
|
|
46
|
+
else if (character === '"') {
|
|
47
|
+
quoted = false;
|
|
48
|
+
}
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (character === '(')
|
|
52
|
+
depth = 1;
|
|
53
|
+
else {
|
|
54
|
+
if (character === '"')
|
|
55
|
+
quoted = true;
|
|
56
|
+
out += character;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
/** `value` split at each semicolon outside a quoted string. */
|
|
62
|
+
function segmentsOf(value) {
|
|
63
|
+
const segments = [];
|
|
64
|
+
let current = '';
|
|
65
|
+
let quoted = false;
|
|
66
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
67
|
+
const character = value.charAt(index);
|
|
68
|
+
if (quoted) {
|
|
69
|
+
current += character;
|
|
70
|
+
if (character === '\\' && index + 1 < value.length) {
|
|
71
|
+
index += 1;
|
|
72
|
+
current += value.charAt(index);
|
|
73
|
+
}
|
|
74
|
+
else if (character === '"') {
|
|
75
|
+
quoted = false;
|
|
76
|
+
}
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (character === ';') {
|
|
80
|
+
segments.push(current);
|
|
81
|
+
current = '';
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (character === '"')
|
|
85
|
+
quoted = true;
|
|
86
|
+
current += character;
|
|
87
|
+
}
|
|
88
|
+
segments.push(current);
|
|
89
|
+
return segments;
|
|
90
|
+
}
|
|
91
|
+
/** The tokens of a segment, each quoted string given as its content with its quoted pairs read. */
|
|
92
|
+
function tokensOf(segment) {
|
|
93
|
+
const tokens = [];
|
|
94
|
+
for (const [token] of segment.matchAll(TOKEN)) {
|
|
95
|
+
if (token === '=')
|
|
96
|
+
tokens.push(null);
|
|
97
|
+
else if (token.startsWith('"'))
|
|
98
|
+
tokens.push(token.replace(/^"|"$/g, '').replace(/\\(.)/g, '$1'));
|
|
99
|
+
else
|
|
100
|
+
tokens.push(token);
|
|
101
|
+
}
|
|
102
|
+
return tokens;
|
|
103
|
+
}
|
|
104
|
+
/** Each `name=value` the tokens hold, in order; a stray `=` or a word with no value is passed over. */
|
|
105
|
+
function pairsOf(tokens) {
|
|
106
|
+
const pairs = [];
|
|
107
|
+
let index = 0;
|
|
108
|
+
while (index + 2 < tokens.length) {
|
|
109
|
+
const name = tokens[index];
|
|
110
|
+
const value = tokens[index + 2];
|
|
111
|
+
if (typeof name === 'string' && tokens[index + 1] === null && typeof value === 'string') {
|
|
112
|
+
pairs.push([name, value]);
|
|
113
|
+
index += 3;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
index += 1;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return pairs;
|
|
120
|
+
}
|
|
121
|
+
/** One Authentication-Results field's authserv-id, in lowercase, and each result it records (RFC 8601 section 2.2). */
|
|
122
|
+
function resultsOf(value) {
|
|
123
|
+
const [head = '', ...rest] = segmentsOf(withoutComments(value));
|
|
124
|
+
const [id] = tokensOf(head);
|
|
125
|
+
const results = [];
|
|
126
|
+
for (const segment of rest) {
|
|
127
|
+
const [first, ...properties] = pairsOf(tokensOf(segment));
|
|
128
|
+
if (first === undefined)
|
|
129
|
+
continue;
|
|
130
|
+
const named = new Map();
|
|
131
|
+
for (const [name, property] of properties) {
|
|
132
|
+
const key = name.toLowerCase();
|
|
133
|
+
if (!named.has(key))
|
|
134
|
+
named.set(key, property);
|
|
135
|
+
}
|
|
136
|
+
// A method may carry a version after a slash, such as dkim/1.
|
|
137
|
+
results.push({ method: first[0].toLowerCase().replace(/\/.*$/, ''), result: first[1].toLowerCase(), properties: named });
|
|
138
|
+
}
|
|
139
|
+
return { authServId: typeof id === 'string' ? id.toLowerCase() : '', results };
|
|
140
|
+
}
|
|
141
|
+
/** The domain `text` names, in lowercase without a closing dot: all of it, or what follows its last `@`. */
|
|
142
|
+
function domainOf(text) {
|
|
143
|
+
if (text === undefined)
|
|
144
|
+
return undefined;
|
|
145
|
+
const domain = text
|
|
146
|
+
.slice(text.lastIndexOf('@') + 1)
|
|
147
|
+
.trim()
|
|
148
|
+
.toLowerCase()
|
|
149
|
+
.replace(/\.$/, '');
|
|
150
|
+
return DOMAIN.test(domain) ? domain : undefined;
|
|
151
|
+
}
|
|
152
|
+
/** The results of the Authentication-Results field the options pick from a header block's fields. */
|
|
153
|
+
function authenticationOf(fields, options) {
|
|
154
|
+
const wanted = options.authServId?.trim().toLowerCase();
|
|
155
|
+
let results = [];
|
|
156
|
+
for (const [name, value] of fields) {
|
|
157
|
+
if (name.toLowerCase() !== 'authentication-results')
|
|
158
|
+
continue;
|
|
159
|
+
const field = resultsOf(value);
|
|
160
|
+
if (wanted === undefined || wanted === '' || field.authServId === wanted) {
|
|
161
|
+
results = field.results;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const dkim = results.filter((entry) => entry.method === 'dkim');
|
|
166
|
+
const spf = results.find((entry) => entry.method === 'spf');
|
|
167
|
+
const dmarc = results.find((entry) => entry.method === 'dmarc');
|
|
168
|
+
const passing = dkim.filter((entry) => entry.result === 'pass');
|
|
169
|
+
const dmarcFrom = domainOf(dmarc?.properties.get('header.from'));
|
|
170
|
+
// A From given that names no domain aligns with none; the DMARC result's domain stands in only for a From not given.
|
|
171
|
+
const fromDomain = options.from === undefined ? dmarcFrom : domainOf(options.from);
|
|
172
|
+
const aligned = fromDomain !== undefined &&
|
|
173
|
+
passing.some((entry) => {
|
|
174
|
+
const signing = domainOf(entry.properties.get('header.d')) ?? domainOf(entry.properties.get('header.i'));
|
|
175
|
+
return signing !== undefined && (signing === fromDomain || fromDomain.endsWith(`.${signing}`));
|
|
176
|
+
});
|
|
177
|
+
return {
|
|
178
|
+
dkim: passing.length > 0 ? 'pass' : (dkim[0]?.result ?? 'none'),
|
|
179
|
+
spf: spf?.result ?? 'none',
|
|
180
|
+
dmarc: dmarc?.result ?? 'none',
|
|
181
|
+
dmarcFrom: dmarcFrom ?? 'none',
|
|
182
|
+
alignedDomain: aligned && fromDomain !== undefined ? fromDomain : 'none',
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/** The keyword a field such as Auto-Submitted gives, in lowercase: its text before any parameter, comments left out. */
|
|
186
|
+
function keywordOf(value) {
|
|
187
|
+
const [keyword = ''] = withoutComments(value).split(';');
|
|
188
|
+
return keyword.trim().toLowerCase();
|
|
189
|
+
}
|
|
190
|
+
/** A character a local part holds only in quotes (RFC 5322 section 3.2.3): white space or a special other than the dot. */
|
|
191
|
+
const QUOTED_ONLY = /[\s"(),:;<>@[\]\\]/;
|
|
192
|
+
/** A local part written in quotes: a double quote, text and quoted pairs, a double quote. */
|
|
193
|
+
const QUOTED_LOCAL = /^"(?:[^"\\]|\\.)*"$/;
|
|
194
|
+
/**
|
|
195
|
+
* An address as a read gives it, in lowercase, or `undefined` when it names no local part or a domain with white space
|
|
196
|
+
* in it: its local part in quotes, as RFC 5322 writes it, only when it holds white space, a double quote or another
|
|
197
|
+
* special but the dot, and else bare. A server gives an envelope's local part with its quoting removed (RFC 3501 section
|
|
198
|
+
* 9, `addr-mailbox`), and a Delivered-To field keeps it as written, so `support team@example.com` from an envelope and
|
|
199
|
+
* `"Support Team"@example.com` from a field both read `"support team"@example.com`, and `"bob"@example.com` reads
|
|
200
|
+
* `bob@example.com`.
|
|
201
|
+
*
|
|
202
|
+
* @param text An address, alone.
|
|
203
|
+
*/
|
|
204
|
+
function addressOf(text) {
|
|
205
|
+
const address = text.trim().toLowerCase();
|
|
206
|
+
const at = address.lastIndexOf('@');
|
|
207
|
+
if (at <= 0 || at === address.length - 1)
|
|
208
|
+
return undefined;
|
|
209
|
+
const written = address.slice(0, at);
|
|
210
|
+
const domain = address.slice(at + 1);
|
|
211
|
+
if (/\s/.test(domain))
|
|
212
|
+
return undefined;
|
|
213
|
+
// A quoted local part is read as the text it quotes, so that each address has one form whichever way it came.
|
|
214
|
+
const local = QUOTED_LOCAL.test(written) ? written.slice(1, -1).replace(/\\(.)/g, '$1') : written;
|
|
215
|
+
if (local !== '' && !QUOTED_ONLY.test(local))
|
|
216
|
+
return `${local}@${domain}`;
|
|
217
|
+
return `"${local.replace(/["\\]/g, (character) => `\\${character}`)}"@${domain}`;
|
|
218
|
+
}
|
|
219
|
+
/** The address a Delivered-To field names, as `addressOf` gives it, or `undefined` when it names none. */
|
|
220
|
+
function addressIn(value) {
|
|
221
|
+
const text = withoutComments(value);
|
|
222
|
+
const angle = /<([^<>]*)>/.exec(text);
|
|
223
|
+
return addressOf(angle === null ? text : (angle[1] ?? ''));
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* The DKIM, SPF and DMARC results, the domain the DMARC result names and the aligned domain a header block's
|
|
227
|
+
* Authentication-Results field records: the first such field, or, given `authServId`, the first that names that host.
|
|
228
|
+
* A result the field does not record, and a header with no field that counts, reads `none`. Comments are left out, so a
|
|
229
|
+
* semicolon inside one splits nothing, and a folded field is read whole.
|
|
230
|
+
*
|
|
231
|
+
* @param headerBlock The message's header block, or the fields of it a read fetched.
|
|
232
|
+
* @param options The From address to align with and the receiving host's authserv-id.
|
|
233
|
+
*/
|
|
234
|
+
function parseAuthenticationResults(headerBlock, options = {}) {
|
|
235
|
+
return authenticationOf((0, messageHeaders_js_1.unfoldedFields)(headerBlock), options);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* What a header block says beside the envelope: its Delivered-To addresses, its threading ids, the fields that mark a
|
|
239
|
+
* message a machine sent, and its Authentication-Results as `parseAuthenticationResults` reads them.
|
|
240
|
+
*
|
|
241
|
+
* @param headerBlock The message's header block, or the fields of it a read fetched.
|
|
242
|
+
* @param options The From address to align with and the receiving host's authserv-id.
|
|
243
|
+
*/
|
|
244
|
+
function readHeaderFields(headerBlock, options = {}) {
|
|
245
|
+
const fields = (0, messageHeaders_js_1.unfoldedFields)(headerBlock);
|
|
246
|
+
const valuesOf = (name) => fields.filter(([field]) => field.toLowerCase() === name).map(([, value]) => value);
|
|
247
|
+
const [autoSubmitted] = valuesOf('auto-submitted');
|
|
248
|
+
const [precedence] = valuesOf('precedence');
|
|
249
|
+
return {
|
|
250
|
+
deliveredTo: valuesOf('delivered-to')
|
|
251
|
+
.map((value) => addressIn(value))
|
|
252
|
+
.filter((address) => address !== undefined),
|
|
253
|
+
inReplyTo: (0, messageHeaders_js_1.idsOf)(fields, 'in-reply-to')[0] ?? '',
|
|
254
|
+
references: (0, messageHeaders_js_1.idsOf)(fields, 'references'),
|
|
255
|
+
autoSubmitted: autoSubmitted === undefined ? 'no' : keywordOf(autoSubmitted),
|
|
256
|
+
precedence: precedence === undefined ? '' : keywordOf(precedence),
|
|
257
|
+
autoreply: fields.some(([field]) => ['x-autoreply', 'x-auto-response-suppress'].includes(field.toLowerCase())),
|
|
258
|
+
authentication: authenticationOf(fields, options),
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -51,8 +51,10 @@ export interface ExtensionPack {
|
|
|
51
51
|
onDeactivate?: () => Promise<void>;
|
|
52
52
|
}
|
|
53
53
|
export declare function createExtensionPack(context: ExtensionContext): ExtensionPack;
|
|
54
|
-
export { EmailService } from './EmailService.js';
|
|
55
|
-
export type { EmailConfig, SendEmailOptions, EmailMessage, SearchEmailOptions } from './EmailService.js';
|
|
54
|
+
export { EmailService, EmailMailboxError } from './EmailService.js';
|
|
55
|
+
export type { EmailConfig, SendEmailOptions, EmailMessage, EmailAttachment, SearchEmailOptions, ReadOptions, ReadInboxOptions, MailboxOptions, EmailMailboxErrorCode, } from './EmailService.js';
|
|
56
|
+
export { parseAuthenticationResults, readHeaderFields } from './headers.js';
|
|
57
|
+
export type { EmailAuthentication, HeaderFieldOptions, HeaderFields } from './headers.js';
|
|
56
58
|
export { ResendTransport, EmailApiError, retryWaitSeconds } from './ResendTransport.js';
|
|
57
59
|
export type { ResendOptions, OutgoingEmail, OutgoingAttachment } from './ResendTransport.js';
|
|
58
60
|
export { EmailChannelAdapter } from './EmailChannelAdapter.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAeH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAkFD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @module @framers/agentos-ext-channel-email
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.suppressionStoreDdl = exports.recipientCapabilityDdl = exports.emailPreferencesDdl = exports.SqlSuppressionStore = exports.SqlRecipientCapability = exports.SUPPRESSION_REASONS = exports.DEFAULT_SUPPRESSION_SCOPE = exports.EmailReplyTool = exports.EmailExtractCodesTool = exports.EmailSearchTool = exports.EmailReadTool = exports.EmailSendTool = exports.EmailChannelAdapter = exports.retryWaitSeconds = exports.EmailApiError = exports.ResendTransport = exports.EmailService = void 0;
|
|
15
|
+
exports.suppressionStoreDdl = exports.recipientCapabilityDdl = exports.emailPreferencesDdl = exports.SqlSuppressionStore = exports.SqlRecipientCapability = exports.SUPPRESSION_REASONS = exports.DEFAULT_SUPPRESSION_SCOPE = exports.EmailReplyTool = exports.EmailExtractCodesTool = exports.EmailSearchTool = exports.EmailReadTool = exports.EmailSendTool = exports.EmailChannelAdapter = exports.retryWaitSeconds = exports.EmailApiError = exports.ResendTransport = exports.readHeaderFields = exports.parseAuthenticationResults = exports.EmailMailboxError = exports.EmailService = void 0;
|
|
16
16
|
exports.createExtensionPack = createExtensionPack;
|
|
17
17
|
const EmailService_js_1 = require("./EmailService.js");
|
|
18
18
|
const EmailChannelAdapter_js_1 = require("./EmailChannelAdapter.js");
|
|
@@ -87,6 +87,12 @@ function resolveConfig(opts, secrets) {
|
|
|
87
87
|
// ---------------------------------------------------------------------------
|
|
88
88
|
// Factory
|
|
89
89
|
// ---------------------------------------------------------------------------
|
|
90
|
+
/**
|
|
91
|
+
* The version of the package this pack ships in, read from its `package.json`, which sits one folder above both `src`
|
|
92
|
+
* and the built `dist` and which every published tarball carries. The pack builds as CommonJS, where `require` reads a
|
|
93
|
+
* JSON file.
|
|
94
|
+
*/
|
|
95
|
+
const PACKAGE_VERSION = require('../package.json').version;
|
|
90
96
|
function createExtensionPack(context) {
|
|
91
97
|
const opts = (context.options ?? {});
|
|
92
98
|
const secrets = opts.secrets ?? context.secrets ?? {};
|
|
@@ -100,7 +106,7 @@ function createExtensionPack(context) {
|
|
|
100
106
|
const replyTool = new reply_js_1.EmailReplyTool(service);
|
|
101
107
|
return {
|
|
102
108
|
name: '@framers/agentos-ext-channel-email',
|
|
103
|
-
version:
|
|
109
|
+
version: PACKAGE_VERSION,
|
|
104
110
|
descriptors: [
|
|
105
111
|
{ id: 'emailSend', kind: 'tool', priority: 50, payload: sendTool },
|
|
106
112
|
{ id: 'emailRead', kind: 'tool', priority: 50, payload: readTool },
|
|
@@ -122,6 +128,10 @@ function createExtensionPack(context) {
|
|
|
122
128
|
// ---------------------------------------------------------------------------
|
|
123
129
|
var EmailService_js_2 = require("./EmailService.js");
|
|
124
130
|
Object.defineProperty(exports, "EmailService", { enumerable: true, get: function () { return EmailService_js_2.EmailService; } });
|
|
131
|
+
Object.defineProperty(exports, "EmailMailboxError", { enumerable: true, get: function () { return EmailService_js_2.EmailMailboxError; } });
|
|
132
|
+
var headers_js_1 = require("./headers.js");
|
|
133
|
+
Object.defineProperty(exports, "parseAuthenticationResults", { enumerable: true, get: function () { return headers_js_1.parseAuthenticationResults; } });
|
|
134
|
+
Object.defineProperty(exports, "readHeaderFields", { enumerable: true, get: function () { return headers_js_1.readHeaderFields; } });
|
|
125
135
|
var ResendTransport_js_1 = require("./ResendTransport.js");
|
|
126
136
|
Object.defineProperty(exports, "ResendTransport", { enumerable: true, get: function () { return ResendTransport_js_1.ResendTransport; } });
|
|
127
137
|
Object.defineProperty(exports, "EmailApiError", { enumerable: true, get: function () { return ResendTransport_js_1.EmailApiError; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,cAAc;AACd;;;;;;;;;;GAUG;;;AAiJH,kDAgCC;AA/KD,uDAAiD;AAEjD,qEAA+D;AAC/D,6CAAgD;AAChD,6CAAgD;AAChD,iDAAoD;AACpD,6DAAgE;AAChE,+CAAkD;AAgClD,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,IAAyB,EAAE,OAA+B;IAC/E,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;QACb,OAAO,CAAC,gBAAgB,CAAC;QACzB,OAAO,CAAC,iBAAiB,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,SAAS;QACrB,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,EAAE,CAAC;IACL,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;QACb,OAAO,CAAC,gBAAgB,CAAC;QACzB,OAAO,CAAC,iBAAiB,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,SAAS;QACrB,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,EAAE,CAAC;IACL,MAAM,YAAY,GAChB,IAAI,CAAC,YAAY;QACjB,OAAO,CAAC,oBAAoB,CAAC;QAC7B,OAAO,CAAC,qBAAqB,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,EAAE,CAAC;IACL,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACtG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAEjD,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;QACb,OAAO,CAAC,gBAAgB,CAAC;QACzB,OAAO,CAAC,iBAAiB,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,SAAS;QACrB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9B,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;QACb,OAAO,CAAC,gBAAgB,CAAC;QACzB,OAAO,CAAC,iBAAiB,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,SAAS;QACrB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9B,MAAM,YAAY,GAChB,IAAI,CAAC,YAAY;QACjB,OAAO,CAAC,oBAAoB,CAAC;QAC7B,OAAO,CAAC,qBAAqB,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAElC,6GAA6G;IAC7G,MAAM,MAAM,GACV,QAAQ,KAAK,EAAE,IAAI,YAAY;QAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE;QACzE,CAAC,CAAC;YACE,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,MAAM,EAAE,IAAI,CAAC,UAAU;aACxB;YACD,IAAI;SACL,CAAC;IAER,IAAI,QAAQ,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,YAAY;YACtB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,MAAM,EAAE,IAAI,CAAC,UAAU;SACxB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAmBD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,eAAe,GAAW,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAEnE,SAAgB,mBAAmB,CAAC,OAAyB;IAC3D,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAwB,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAI,8BAAY,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,4CAAmB,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,IAAI,uBAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,uBAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,2BAAe,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,IAAI,uCAAqB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,yBAAc,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE,oCAAoC;QAC1C,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE;YACX,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YAClE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YAClE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YACtE,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;YAClF,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YACpE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;SAClF;QACD,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,YAAY,EAAE,KAAK,IAAI,EAAE;YACvB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,qDAAoE;AAA3D,+GAAA,YAAY,OAAA;AAAE,oHAAA,iBAAiB,OAAA;AAYxC,2CAA4E;AAAnE,wHAAA,0BAA0B,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAErD,2DAAwF;AAA/E,qHAAA,eAAe,OAAA;AAAE,mHAAA,aAAa,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAEzD,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,2CAAgD;AAAvC,wGAAA,aAAa,OAAA;AACtB,2CAAgD;AAAvC,wGAAA,aAAa,OAAA;AACtB,+CAAoD;AAA3C,4GAAA,eAAe,OAAA;AACxB,2DAAgE;AAAvD,wHAAA,qBAAqB,OAAA;AAC9B,6CAAkD;AAAzC,0GAAA,cAAc,OAAA;AACvB,mDAQgC;AAP9B,qHAAA,yBAAyB,OAAA;AACzB,+GAAA,mBAAmB,OAAA;AACnB,kHAAA,sBAAsB,OAAA;AACtB,+GAAA,mBAAmB,OAAA;AACnB,+GAAA,mBAAmB,OAAA;AACnB,kHAAA,sBAAsB,OAAA;AACtB,+GAAA,mBAAmB,OAAA"}
|
package/dist/messageHeaders.d.ts
CHANGED
|
@@ -57,6 +57,14 @@ export declare function requireMessageId(text: string): string;
|
|
|
57
57
|
* @param text The text of the message's Message-ID field.
|
|
58
58
|
*/
|
|
59
59
|
export declare function messageIdIn(text: unknown): string | undefined;
|
|
60
|
+
/** A header block's fields, unfolded (RFC 5322 section 2.2.3): each name, trimmed, with its value, to the blank line that ends the block. */
|
|
61
|
+
export declare function unfoldedFields(block: string): Array<[string, string]>;
|
|
62
|
+
/**
|
|
63
|
+
* The message ids the first field named `name` lists, any white space within an id dropped, as a fold inside one leaves
|
|
64
|
+
* it and as nodemailer reads it. An id that holds a character outside printable US-ASCII, or that is too long for one
|
|
65
|
+
* line of `References`, is left out.
|
|
66
|
+
*/
|
|
67
|
+
export declare function idsOf(fields: Array<[string, string]>, name: string): string[];
|
|
60
68
|
/**
|
|
61
69
|
* The message ids a reply's `References` lists before its original's own id, read from the original's header block as
|
|
62
70
|
* RFC 5322 section 3.6.4 has it: the ids of the original's `References`, or, when that lists none, the id of its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHeaders.d.ts","sourceRoot":"","sources":["../src/messageHeaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuHH;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAEnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAExF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI9D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI7D;
|
|
1
|
+
{"version":3,"file":"messageHeaders.d.ts","sourceRoot":"","sources":["../src/messageHeaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuHH;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAEnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAExF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI9D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI7D;AAED,6IAA6I;AAC7I,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAarE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAMtD"}
|
package/dist/messageHeaders.js
CHANGED
|
@@ -16,6 +16,8 @@ exports.requireAddedHeaders = requireAddedHeaders;
|
|
|
16
16
|
exports.oneMessageId = oneMessageId;
|
|
17
17
|
exports.requireMessageId = requireMessageId;
|
|
18
18
|
exports.messageIdIn = messageIdIn;
|
|
19
|
+
exports.unfoldedFields = unfoldedFields;
|
|
20
|
+
exports.idsOf = idsOf;
|
|
19
21
|
exports.threadOf = threadOf;
|
|
20
22
|
/** RFC 5322 section 2.1.1: the most characters a line of a message may hold, its CRLF aside. */
|
|
21
23
|
const LONGEST_LINE = 998;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHeaders.js","sourceRoot":"","sources":["../src/messageHeaders.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAoIH,wCAEC;AAWD,kDAEC;AASD,oCAIC;AAUD,4CAOC;AAQD,kCAIC;
|
|
1
|
+
{"version":3,"file":"messageHeaders.js","sourceRoot":"","sources":["../src/messageHeaders.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,9 +31,9 @@ export interface RecipientCapability {
|
|
|
31
31
|
* @param recipient The recipient: 1 to 512 UTF-16 code units, with no U+0000 and no lone surrogate.
|
|
32
32
|
* @param scope The scope, under the same rule.
|
|
33
33
|
* @param nonce The nonce, under the same rule: one message, one nonce, never another message's.
|
|
34
|
-
* @param key The key, 32 random bytes or more
|
|
35
|
-
* token from the same nonce, whatever their prefixes, so each host
|
|
36
|
-
* uses.
|
|
34
|
+
* @param key The key, 32 random bytes or more as a `Uint8Array` or a `Buffer` of any realm, kept secret by the
|
|
35
|
+
* caller. Two hosts that share a key draw the same token from the same nonce, whatever their prefixes, so each host
|
|
36
|
+
* takes a key of its own or nonces no other host uses.
|
|
37
37
|
* @param options The token's expiry, if it has one.
|
|
38
38
|
* @returns The token.
|
|
39
39
|
*/
|
|
@@ -51,8 +51,9 @@ export interface RecipientCapability {
|
|
|
51
51
|
* never issued again; a token issued afterwards from a new nonce works.
|
|
52
52
|
*
|
|
53
53
|
* @param recipient The recipient: 1 to 512 UTF-16 code units, with no U+0000 and no lone surrogate.
|
|
54
|
-
* @returns How many tokens it
|
|
55
|
-
*
|
|
54
|
+
* @returns How many tokens it marked: each of the recipient's tokens not revoked before, one past its expiry among
|
|
55
|
+
* them, so a token ended by an earlier revoke is not counted again; and 0 whatever it marked when the database's
|
|
56
|
+
* `run` answers no count of `changes`.
|
|
56
57
|
*/
|
|
57
58
|
revoke(recipient: string): Promise<number>;
|
|
58
59
|
}
|
|
@@ -78,8 +79,8 @@ export declare function capabilityTokenHash(token: string): string;
|
|
|
78
79
|
* with `ON DELETE CASCADE` or by hand, never issues their nonces again, and a host that cannot promise that calls
|
|
79
80
|
* `revoke` with each deletion and keeps the rows.
|
|
80
81
|
*
|
|
81
|
-
* @param prefix A lower-case letter followed by at most 39 lower-case letters, digits or underscores,
|
|
82
|
-
* `sqlite` and
|
|
82
|
+
* @param prefix A lower-case letter followed by at most 39 lower-case letters, digits or underscores. On SQLite, a
|
|
83
|
+
* prefix other than `sqlite` and those beginning `sqlite_`, whose tables SQLite keeps for itself and refuses to create.
|
|
83
84
|
* @throws RangeError when the prefix does not fit.
|
|
84
85
|
*/
|
|
85
86
|
export declare function recipientCapabilityDdl(prefix: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecipientCapability.d.ts","sourceRoot":"","sources":["../../src/preferences/RecipientCapability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RecipientCapability.d.ts","sourceRoot":"","sources":["../../src/preferences/RecipientCapability.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGxD,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,kCAAkC;AAClC,MAAM,WAAW,+BAA+B;IAC9C,gHAAgH;IAChH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,iDAAiD;AACjD,MAAM,WAAW,6BAA6B;IAC5C,qHAAqH;IACrH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,+BAA+B,GACxC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEpD;;;;;;;;OAQG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C;AAQD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AA2DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY7D;AAED;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAW9D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAVrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC;;;;;OAKG;gBAEgB,EAAE,EAAE,kBAAkB,EACvC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,6BAAkC;IAMvC,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,+BAA+B,GACxC,OAAO,CAAC,MAAM,CAAC;IA4BZ,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAgBnD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUjD"}
|