@fluxmail/core 0.9.0 → 0.11.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/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/searchContext.d.ts +17 -0
- package/dist/searchContext.d.ts.map +1 -0
- package/dist/searchContext.js +117 -0
- package/dist/searchContext.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type EmailErrorCode = 'auth_expired' | 'rate_limited' | 'not_found' | 'invalid_request' | 'provider_unavailable' | 'entitlement_exceeded' | 'permission_denied' | 'unsupported_capability';
|
|
1
|
+
export type EmailErrorCode = 'auth_expired' | 'rate_limited' | 'not_found' | 'invalid_request' | 'idempotency_conflict' | 'provider_unavailable' | 'entitlement_exceeded' | 'permission_denied' | 'unsupported_capability';
|
|
2
2
|
export declare class EmailError extends Error {
|
|
3
3
|
readonly code: EmailErrorCode;
|
|
4
4
|
/** Machine-readable extras, e.g. { reauthUrl } for auth_expired. */
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,sBAAsB,GACtB,sBAAsB,GACtB,mBAAmB,GACnB,wBAAwB,CAAC;AAE7B,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE5B,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMlF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAE5D"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,mBAAmB,GACnB,wBAAwB,CAAC;AAE7B,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE5B,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMlF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAE5D"}
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IAC9B,oEAAoE;IAC3D,IAAI,CAA2B;IAExC,YAAY,IAAoB,EAAE,OAAe,EAAE,IAA8B;QAC/E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,GAAG,YAAY,UAAU,CAAC;AACnC,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Message } from './types.js';
|
|
2
|
+
export declare const SEARCH_CONTEXT_INPUT_LIMIT: number;
|
|
3
|
+
export declare const SEARCH_CONTEXT_OUTPUT_LIMIT = 300;
|
|
4
|
+
export interface BoundedBodyText {
|
|
5
|
+
text: string;
|
|
6
|
+
complete: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function htmlToReadableText(value: string): string;
|
|
9
|
+
/** Limit decoded content by UTF-8 bytes without splitting a Unicode code point. */
|
|
10
|
+
export declare function boundBodyText(value: string, limit?: number): BoundedBodyText;
|
|
11
|
+
export declare function extractSearchContext(body: {
|
|
12
|
+
text?: string;
|
|
13
|
+
html?: string;
|
|
14
|
+
}, queryText: string, options?: {
|
|
15
|
+
complete?: boolean;
|
|
16
|
+
}): NonNullable<Message['searchContext']>;
|
|
17
|
+
//# sourceMappingURL=searchContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchContext.d.ts","sourceRoot":"","sources":["../src/searchContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,0BAA0B,QAAa,CAAC;AACrD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AASD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAexD;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAA6B,GAAG,eAAe,CAWhG;AAuDD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CA2BvC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export const SEARCH_CONTEXT_INPUT_LIMIT = 256 * 1024;
|
|
2
|
+
export const SEARCH_CONTEXT_OUTPUT_LIMIT = 300;
|
|
3
|
+
const BLOCK_END = /<\/(?:address|article|aside|blockquote|div|footer|h[1-6]|header|li|main|nav|ol|p|pre|section|table|tr|ul)>/gi;
|
|
4
|
+
function decodeCodePoint(value, fallback) {
|
|
5
|
+
return Number.isInteger(value) && value >= 0 && value <= 0x10ffff ? String.fromCodePoint(value) : fallback;
|
|
6
|
+
}
|
|
7
|
+
export function htmlToReadableText(value) {
|
|
8
|
+
return value
|
|
9
|
+
.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi, ' ')
|
|
10
|
+
.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi, ' ')
|
|
11
|
+
.replace(/<br\s*\/?\s*>/gi, '\n')
|
|
12
|
+
.replace(BLOCK_END, '\n')
|
|
13
|
+
.replace(/<[^>]+>/g, ' ')
|
|
14
|
+
.replace(/ | /gi, ' ')
|
|
15
|
+
.replace(/&/gi, '&')
|
|
16
|
+
.replace(/</gi, '<')
|
|
17
|
+
.replace(/>/gi, '>')
|
|
18
|
+
.replace(/"|"/gi, '"')
|
|
19
|
+
.replace(/'|'/gi, "'")
|
|
20
|
+
.replace(/&#(\d+);/g, (match, value) => decodeCodePoint(Number(value), match))
|
|
21
|
+
.replace(/&#x([\da-f]+);/gi, (match, value) => decodeCodePoint(Number.parseInt(value, 16), match));
|
|
22
|
+
}
|
|
23
|
+
/** Limit decoded content by UTF-8 bytes without splitting a Unicode code point. */
|
|
24
|
+
export function boundBodyText(value, limit = SEARCH_CONTEXT_INPUT_LIMIT) {
|
|
25
|
+
if (Buffer.byteLength(value) <= limit)
|
|
26
|
+
return { text: value, complete: true };
|
|
27
|
+
let size = 0;
|
|
28
|
+
let text = '';
|
|
29
|
+
for (const character of value) {
|
|
30
|
+
const bytes = Buffer.byteLength(character);
|
|
31
|
+
if (size + bytes > limit)
|
|
32
|
+
break;
|
|
33
|
+
text += character;
|
|
34
|
+
size += bytes;
|
|
35
|
+
}
|
|
36
|
+
return { text, complete: false };
|
|
37
|
+
}
|
|
38
|
+
function readableLines(value) {
|
|
39
|
+
return value
|
|
40
|
+
.replace(/\r\n?/g, '\n')
|
|
41
|
+
.split('\n')
|
|
42
|
+
.map((line) => line.replace(/[\t\f\v ]+/gu, ' ').trim())
|
|
43
|
+
.filter(Boolean);
|
|
44
|
+
}
|
|
45
|
+
function cropLine(line, matchIndex, matchLength) {
|
|
46
|
+
const characters = [...line];
|
|
47
|
+
if (characters.length <= SEARCH_CONTEXT_OUTPUT_LIMIT)
|
|
48
|
+
return line;
|
|
49
|
+
const matchStart = Array.from(line.slice(0, matchIndex)).length;
|
|
50
|
+
const matchedCharacters = Array.from(line.slice(matchIndex, matchIndex + matchLength)).length;
|
|
51
|
+
const prefixMarker = matchStart > 0 ? 1 : 0;
|
|
52
|
+
const suffixMarker = matchStart + matchedCharacters < characters.length ? 1 : 0;
|
|
53
|
+
const available = SEARCH_CONTEXT_OUTPUT_LIMIT - prefixMarker - suffixMarker;
|
|
54
|
+
let start = Math.max(0, matchStart - Math.floor((available - matchedCharacters) / 2));
|
|
55
|
+
let end = Math.min(characters.length, start + available);
|
|
56
|
+
start = Math.max(0, end - available);
|
|
57
|
+
if (start > 0) {
|
|
58
|
+
const nextSpace = characters.slice(start, matchStart).findIndex((character) => /\s/u.test(character));
|
|
59
|
+
if (nextSpace >= 0)
|
|
60
|
+
start += nextSpace + 1;
|
|
61
|
+
}
|
|
62
|
+
if (end < characters.length) {
|
|
63
|
+
for (let index = end - 1; index >= matchStart + matchedCharacters; index -= 1) {
|
|
64
|
+
if (/\s/u.test(characters[index])) {
|
|
65
|
+
end = index;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const prefix = start > 0 ? '…' : '';
|
|
71
|
+
const suffix = end < characters.length ? '…' : '';
|
|
72
|
+
return `${prefix}${characters.slice(start, end).join('').trim()}${suffix}`;
|
|
73
|
+
}
|
|
74
|
+
function findMatch(line, queryText) {
|
|
75
|
+
const foldedLine = line.toLowerCase();
|
|
76
|
+
const phrase = queryText.trim().replace(/\s+/gu, ' ');
|
|
77
|
+
const phraseIndex = foldedLine.indexOf(phrase.toLowerCase());
|
|
78
|
+
if (phraseIndex >= 0)
|
|
79
|
+
return { index: phraseIndex, length: phrase.length };
|
|
80
|
+
let earliest;
|
|
81
|
+
for (const term of phrase.split(/\s+/u).filter(Boolean)) {
|
|
82
|
+
const index = foldedLine.indexOf(term.toLowerCase());
|
|
83
|
+
if (index >= 0 && (!earliest || index < earliest.index))
|
|
84
|
+
earliest = { index, length: term.length };
|
|
85
|
+
}
|
|
86
|
+
return earliest;
|
|
87
|
+
}
|
|
88
|
+
export function extractSearchContext(body, queryText, options = {}) {
|
|
89
|
+
const raw = body.text !== undefined ? body.text : body.html;
|
|
90
|
+
if (raw === undefined)
|
|
91
|
+
return { status: 'unavailable' };
|
|
92
|
+
const bounded = boundBodyText(raw);
|
|
93
|
+
const selected = body.text !== undefined ? bounded.text : htmlToReadableText(bounded.text);
|
|
94
|
+
const complete = (options.complete ?? true) && bounded.complete;
|
|
95
|
+
let best;
|
|
96
|
+
let fallback;
|
|
97
|
+
const phrase = queryText.trim().replace(/\s+/gu, ' ');
|
|
98
|
+
let position = 0;
|
|
99
|
+
for (const line of readableLines(selected)) {
|
|
100
|
+
const foldedLine = line.toLowerCase();
|
|
101
|
+
const phraseIndex = foldedLine.indexOf(phrase.toLowerCase());
|
|
102
|
+
if (phraseIndex >= 0) {
|
|
103
|
+
best = { line, index: phraseIndex, length: phrase.length };
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
const termMatch = findMatch(line, phrase);
|
|
107
|
+
if (termMatch && (!fallback || position + termMatch.index < fallback.position)) {
|
|
108
|
+
fallback = { line, ...termMatch, position: position + termMatch.index };
|
|
109
|
+
}
|
|
110
|
+
position += line.length + 1;
|
|
111
|
+
}
|
|
112
|
+
const match = best ?? fallback;
|
|
113
|
+
if (match)
|
|
114
|
+
return { status: 'matched', excerpt: cropLine(match.line, match.index, match.length) };
|
|
115
|
+
return { status: complete ? 'no_literal_match' : 'scan_limit' };
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=searchContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchContext.js","sourceRoot":"","sources":["../src/searchContext.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export interface Capabilities {
|
|
|
22
22
|
search: SearchCapabilities;
|
|
23
23
|
/** Whether list results include snippets without fetching bodies. */
|
|
24
24
|
snippets: boolean;
|
|
25
|
+
/** Whether list and search results can include match-centered body excerpts. */
|
|
26
|
+
searchContext?: boolean;
|
|
25
27
|
}
|
|
26
28
|
export interface Account {
|
|
27
29
|
id: string;
|
|
@@ -107,6 +109,12 @@ export interface Message {
|
|
|
107
109
|
/** ISO 8601. */
|
|
108
110
|
date: string;
|
|
109
111
|
snippet?: string;
|
|
112
|
+
searchContext?: {
|
|
113
|
+
status: 'matched';
|
|
114
|
+
excerpt: string;
|
|
115
|
+
} | {
|
|
116
|
+
status: 'no_literal_match' | 'scan_limit' | 'unavailable';
|
|
117
|
+
};
|
|
110
118
|
/** Populated on getMessage/getThread, not on list. */
|
|
111
119
|
body?: MessageBody;
|
|
112
120
|
/** Populated on getMessage/getThread; omitted when a list response has no MIME metadata. */
|
|
@@ -185,6 +193,8 @@ export interface PageOpts {
|
|
|
185
193
|
pageToken?: string;
|
|
186
194
|
/** Include or suppress message snippets. Omission preserves the provider default. */
|
|
187
195
|
includeSnippet?: boolean;
|
|
196
|
+
/** Include a match-centered body excerpt for the portable text query. */
|
|
197
|
+
includeSearchContext?: boolean;
|
|
188
198
|
/** Internal cancellation signal used to stop provider work at the request deadline. */
|
|
189
199
|
signal?: AbortSignal;
|
|
190
200
|
/** Internal soft deadline. Providers return a resumable page at the next safe boundary. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAEpG,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAEzE,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,GACT,MAAM,GACN,SAAS,GACT,eAAe,GACf,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAC5D,WAAW,EAAE,IAAI,GAAG;QAClB,MAAM,EAAE,OAAO,GAAG,aAAa,CAAC;QAChC,YAAY,EAAE,kBAAkB,CAAC;QACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,8FAA8F;IAC9F,aAAa,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,kDAAkD;IAClD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|