@xemahq/biomes-platform-imap 0.6.0 → 0.7.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.
@@ -10,11 +10,82 @@ export declare class MailTlsRequiredError extends Error {
10
10
  readonly code: "MAIL_TLS_REQUIRED";
11
11
  constructor();
12
12
  }
13
+ export declare const MAIL_OPERATION_TIMEOUT: "MAIL_OPERATION_TIMEOUT";
14
+ export declare class MailOperationTimeoutError extends Error {
15
+ readonly limitMs: number;
16
+ readonly code: "MAIL_OPERATION_TIMEOUT";
17
+ constructor(limitMs: number);
18
+ }
19
+ export declare const MAIL_INBOUND_TOO_LARGE: "MAIL_INBOUND_TOO_LARGE";
20
+ export declare class MailInboundTooLargeError extends Error {
21
+ readonly limit: number;
22
+ readonly code: "MAIL_INBOUND_TOO_LARGE";
23
+ constructor(limit: number);
24
+ }
25
+ export declare function hasMailHostUserinfo(host: string): boolean;
26
+ export declare function mailHostProblem(host: string): 'userinfo' | 'trailing-dot' | 'invalid' | undefined;
27
+ export declare function normalizeMailHost(host: string): string | undefined;
28
+ export declare function loggableMailHost(host: string): string;
13
29
  export declare function isTlsFailure(cause: unknown): boolean;
14
30
  export declare function isPublicAddress(ip: string): boolean;
15
31
  export type MailProtocol = 'imap' | 'smtp';
16
32
  export type MailTlsMode = 'implicit' | 'starttls';
17
33
  export declare function mailTlsModeForPort(protocol: MailProtocol, port: number): MailTlsMode | undefined;
34
+ export interface MailTimeouts {
35
+ readonly dnsLookupMs: number;
36
+ readonly connectMs: number;
37
+ readonly greetingMs: number;
38
+ readonly socketIdleMs: number;
39
+ }
40
+ export declare const DEFAULT_MAIL_TIMEOUTS: MailTimeouts;
41
+ export declare const MAIL_TIMEOUT_MIN_MS = 1000;
42
+ export declare const MAIL_TIMEOUT_MAX_MS = 120000;
43
+ export declare const DEFAULT_MAIL_OPERATION_MS = 600000;
44
+ export declare const MAIL_OPERATION_MIN_MS = 10000;
45
+ export declare const MAIL_OPERATION_MAX_MS = 1800000;
46
+ export declare function resolveMailOperationMs(value?: number): number;
47
+ export declare function resolveMailTimeouts(overrides?: {
48
+ readonly [K in keyof MailTimeouts]?: number | undefined;
49
+ }): MailTimeouts;
50
+ export type MailRefusalCause = 'port-not-allowed' | 'invalid-host' | 'blocked-range' | 'nxdomain' | 'dns-timeout' | 'dns-error' | 'tls';
51
+ export interface MailRefusalEvent {
52
+ readonly event: 'mail.dial.refused';
53
+ readonly protocol: MailProtocol;
54
+ readonly cause: MailRefusalCause;
55
+ readonly host: string;
56
+ readonly port: number;
57
+ readonly address?: string;
58
+ readonly code?: string;
59
+ }
60
+ export interface MailTimeoutEvent {
61
+ readonly event: 'mail.timeout';
62
+ readonly protocol: MailProtocol;
63
+ readonly host: string;
64
+ readonly port: number;
65
+ readonly code: string;
66
+ }
67
+ export interface MailResponseRefusedEvent {
68
+ readonly event: 'mail.response.refused';
69
+ readonly protocol: MailProtocol;
70
+ readonly host: string;
71
+ readonly port: number;
72
+ readonly code: string;
73
+ }
74
+ export type MailConnectorEvent = MailRefusalEvent | MailTimeoutEvent | MailResponseRefusedEvent;
75
+ export type MailEventLog = (event: MailConnectorEvent) => void;
76
+ export declare const defaultMailEventLog: MailEventLog;
77
+ export declare function errorCode(cause: unknown): string | undefined;
78
+ export declare function isMailTimeout(cause: unknown): boolean;
79
+ export interface MailOperationDeadline {
80
+ readonly expired: boolean;
81
+ readonly error: MailOperationTimeoutError;
82
+ clear(): void;
83
+ }
84
+ export declare function startMailOperationDeadline(target: {
85
+ readonly protocol: MailProtocol;
86
+ readonly host: string;
87
+ readonly port: number;
88
+ }, ms: number, log: MailEventLog, onExpire: () => void): MailOperationDeadline;
18
89
  export interface ResolvedAddress {
19
90
  readonly address: string;
20
91
  readonly family: number;
@@ -28,7 +99,10 @@ export interface MailDialTarget {
28
99
  }
29
100
  export interface MailDialOptions {
30
101
  readonly resolve?: MailHostResolver;
102
+ readonly dnsLookupMs?: number;
103
+ readonly log?: MailEventLog;
31
104
  }
32
105
  export declare function resolveMailDialTarget(protocol: MailProtocol, host: string, port: number, options?: MailDialOptions): Promise<MailDialTarget>;
106
+ export declare function refuseMailTls(log: MailEventLog, protocol: MailProtocol, host: string, port: number, cause: unknown): MailTlsRequiredError;
33
107
  export declare function mailTlsOptions(target: MailDialTarget, extra?: Pick<ConnectionOptions, 'ca'>): ConnectionOptions;
34
108
  //# sourceMappingURL=mail-dial-guard.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/biomes-platform-imap",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/xema-dev/xema-connectors.git",
@@ -14,9 +14,12 @@
14
14
  },
15
15
  "main": "dist/connector-adapters/index.js",
16
16
  "files": [
17
- "dist",
17
+ "dist/connector-adapters/index.js",
18
+ "dist/**/*.d.ts",
19
+ "dist/THIRD-PARTY-NOTICES.txt",
18
20
  "xema-biome.json",
19
- "contributions"
21
+ "contributions",
22
+ "SECURITY-BOUNDS.md"
20
23
  ],
21
24
  "exports": {
22
25
  "./connector-adapters": {
@@ -25,21 +28,44 @@
25
28
  },
26
29
  "./package.json": "./package.json"
27
30
  },
28
- "dependencies": {
29
- "@xemahq/biome-sdk": "^20.0.0",
30
- "@xemahq/contracts": "^0.60.0",
31
- "imapflow": "^1.0.180"
32
- },
33
31
  "devDependencies": {
34
32
  "@types/node": "25.2.3",
33
+ "@xemahq/biome-sdk": "^20.0.0",
34
+ "@xemahq/contracts": "^0.77.0",
35
+ "imapflow": "1.7.8",
35
36
  "typescript": "5.9.3"
36
37
  },
38
+ "xemaBundled": {
39
+ "@pinojs/redact": "0.4.0",
40
+ "@xemahq/biome-sdk": "20.0.0",
41
+ "@xemahq/contracts": "0.77.0",
42
+ "@zone-eu/mailsplit": "5.4.16",
43
+ "atomic-sleep": "1.0.0",
44
+ "encoding-japanese": "2.3.0",
45
+ "iconv-lite": "0.7.3",
46
+ "imapflow": "1.7.8",
47
+ "ip-address": "10.7.0",
48
+ "libbase64": "1.3.0",
49
+ "libmime": "5.4.3",
50
+ "libqp": "2.1.1",
51
+ "on-exit-leak-free": "2.1.2",
52
+ "pino": "10.3.1",
53
+ "pino-std-serializers": "7.1.0",
54
+ "quick-format-unescaped": "4.0.4",
55
+ "safe-stable-stringify": "2.5.0",
56
+ "safer-buffer": "2.1.2",
57
+ "smart-buffer": "4.2.0",
58
+ "socks": "2.8.9",
59
+ "sonic-boom": "4.2.1",
60
+ "thread-stream": "4.2.0",
61
+ "zod": "4.6.5"
62
+ },
37
63
  "scripts": {
38
- "build": "tsc -p tsconfig.json",
64
+ "build": "tsc -p tsconfig.json && node ../../tooling/bundle/bundle-adapter.mjs",
39
65
  "typecheck": "tsc --noEmit",
40
66
  "test": "node --test ./tests/**/*.test.mjs"
41
67
  },
42
68
  "xemaRelease": {
43
- "sourceDigest": "sha256:0a2aa665833580de9de730a9d4cf7e4a57094df862fcf3d29c7b9f7fd2ab8193"
69
+ "sourceDigest": "sha256:81565a7f370c458c2d00640097126903053ec1b6f38eebe996d468afd8f52170"
44
70
  }
45
71
  }
package/xema-biome.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/biomes-platform-imap",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "xema": {
5
5
  "id": "connector-imap",
6
6
  "displayName": "IMAP Connector",
@@ -17,7 +17,7 @@
17
17
  "bundleSource": {
18
18
  "kind": "npm",
19
19
  "name": "@xemahq/biomes-platform-imap",
20
- "version": "0.6.0"
20
+ "version": "0.7.0"
21
21
  },
22
22
  "trustTier": "first-party",
23
23
  "connectorRequirements": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"imap-client.factory.d.ts","sourceRoot":"","sources":["../../src/connector-adapters/imap-client.factory.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD,OAAO,KAAK,EACV,cAAc,EAId,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAKhC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAEjF,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;CACvC;AAYD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE,iBAAsB,GAC9B,cAAc,CAiGhB"}
@@ -1,77 +0,0 @@
1
- import { ImapFlow } from 'imapflow';
2
- import { MailTlsRequiredError, isTlsFailure, mailTlsOptions, resolveMailDialTarget, } from './mail-dial-guard.js';
3
- const defaultResolveTarget = (host, port) => resolveMailDialTarget('imap', host, port);
4
- export function createImapClient(config, options = {}) {
5
- const resolveTarget = options.resolveTarget ?? defaultResolveTarget;
6
- let current;
7
- let closed = false;
8
- const client = () => {
9
- if (current === undefined) {
10
- throw new Error('imap: client is not connected');
11
- }
12
- return current;
13
- };
14
- return {
15
- async connect() {
16
- const target = await resolveTarget(config.host, config.port);
17
- if (closed) {
18
- throw new Error('imap: client closed before connecting');
19
- }
20
- const tls = mailTlsOptions(target, options.ca === undefined ? {} : { ca: options.ca });
21
- const implicit = target.tlsMode === 'implicit';
22
- const flow = new ImapFlow({
23
- host: target.address,
24
- port: target.port,
25
- secure: implicit,
26
- ...(implicit ? {} : { doSTARTTLS: true }),
27
- ...(tls.servername === undefined ? {} : { servername: tls.servername }),
28
- tls,
29
- auth: { user: config.username, pass: config.password },
30
- logger: false,
31
- });
32
- flow.on('error', () => undefined);
33
- current = flow;
34
- try {
35
- await flow.connect();
36
- }
37
- catch (cause) {
38
- throw isTlsFailure(cause) ? new MailTlsRequiredError() : cause;
39
- }
40
- },
41
- async logout() {
42
- if (current !== undefined) {
43
- await current.logout();
44
- }
45
- },
46
- close() {
47
- closed = true;
48
- current?.close();
49
- },
50
- async getMailboxLock(mailbox) {
51
- const lock = await client().getMailboxLock(mailbox);
52
- return { release: () => lock.release() };
53
- },
54
- get mailbox() {
55
- const mailbox = current?.mailbox ?? false;
56
- return mailbox === false ? false : { uidValidity: mailbox.uidValidity };
57
- },
58
- async search(query, options) {
59
- return client().search(query, options);
60
- },
61
- fetch(range, query, options) {
62
- return client().fetch(range, query, options);
63
- },
64
- async fetchOne(range, query, options) {
65
- const msg = await client().fetchOne(range, query, options);
66
- return msg === false ? false : msg;
67
- },
68
- async download(range, part, options) {
69
- const downloaded = await client().download(range, part, options);
70
- return { content: downloaded.content };
71
- },
72
- messageFlagsAdd(range, flags, options) {
73
- return client().messageFlagsAdd(range, [...flags], options);
74
- },
75
- };
76
- }
77
- //# sourceMappingURL=imap-client.factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imap-client.factory.js","sourceRoot":"","sources":["../../src/connector-adapters/imap-client.factory.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"imap-fetch.d.ts","sourceRoot":"","sources":["../../src/connector-adapters/imap-fetch.ts"],"names":[],"mappings":"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"}