fluxmail 0.4.1 → 0.6.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 +6 -4
- package/dist/accounts/defaultGoogleOAuth.d.ts +4 -0
- package/dist/accounts/defaultGoogleOAuth.d.ts.map +1 -0
- package/dist/accounts/defaultGoogleOAuth.js +7 -0
- package/dist/accounts/defaultGoogleOAuth.js.map +1 -0
- package/dist/accounts/gmailConnection.js +2 -2
- package/dist/accounts/gmailConnection.js.map +1 -1
- package/dist/accounts/googleAuth.d.ts +16 -9
- package/dist/accounts/googleAuth.d.ts.map +1 -1
- package/dist/accounts/googleAuth.js +52 -20
- package/dist/accounts/googleAuth.js.map +1 -1
- package/dist/accounts/microsoftAuth.d.ts +5 -2
- package/dist/accounts/microsoftAuth.d.ts.map +1 -1
- package/dist/accounts/microsoftAuth.js +25 -22
- package/dist/accounts/microsoftAuth.js.map +1 -1
- package/dist/accounts/registry.d.ts +11 -9
- package/dist/accounts/registry.d.ts.map +1 -1
- package/dist/accounts/registry.js +169 -98
- package/dist/accounts/registry.js.map +1 -1
- package/dist/auth.d.ts +106 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +455 -0
- package/dist/auth.js.map +1 -0
- package/dist/authorization.d.ts +9 -0
- package/dist/authorization.d.ts.map +1 -0
- package/dist/authorization.js +23 -0
- package/dist/authorization.js.map +1 -0
- package/dist/cli.d.ts +15 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1096 -403
- package/dist/cli.js.map +1 -1
- package/dist/cliInstances.d.ts +51 -0
- package/dist/cliInstances.d.ts.map +1 -0
- package/dist/cliInstances.js +237 -0
- package/dist/cliInstances.js.map +1 -0
- package/dist/cliMail.d.ts +9 -0
- package/dist/cliMail.d.ts.map +1 -0
- package/dist/cliMail.js +450 -0
- package/dist/cliMail.js.map +1 -0
- package/dist/config.d.ts +95 -118
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +351 -286
- package/dist/config.js.map +1 -1
- package/dist/configMigration.d.ts +8 -0
- package/dist/configMigration.d.ts.map +1 -0
- package/dist/configMigration.js +234 -0
- package/dist/configMigration.js.map +1 -0
- package/dist/context.d.ts +8 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +29 -8
- package/dist/context.js.map +1 -1
- package/dist/deploymentConfig.d.ts +190 -0
- package/dist/deploymentConfig.d.ts.map +1 -0
- package/dist/deploymentConfig.js +539 -0
- package/dist/deploymentConfig.js.map +1 -0
- package/dist/http/admin.d.ts +75 -3
- package/dist/http/admin.d.ts.map +1 -1
- package/dist/http/admin.js +347 -79
- package/dist/http/admin.js.map +1 -1
- package/dist/http/app.d.ts +4 -1
- package/dist/http/app.d.ts.map +1 -1
- package/dist/http/app.js +119 -63
- package/dist/http/app.js.map +1 -1
- package/dist/http/identity.d.ts +114 -0
- package/dist/http/identity.d.ts.map +1 -0
- package/dist/http/identity.js +936 -0
- package/dist/http/identity.js.map +1 -0
- package/dist/http/operationRoutes.d.ts +8 -0
- package/dist/http/operationRoutes.d.ts.map +1 -0
- package/dist/http/operationRoutes.js +13 -0
- package/dist/http/operationRoutes.js.map +1 -0
- package/dist/http/rest.d.ts +16 -4
- package/dist/http/rest.d.ts.map +1 -1
- package/dist/http/rest.js +213 -71
- package/dist/http/rest.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/instanceConfig.d.ts +36 -0
- package/dist/instanceConfig.d.ts.map +1 -0
- package/dist/instanceConfig.js +157 -0
- package/dist/instanceConfig.js.map +1 -0
- package/dist/licensing/activation.d.ts +2 -1
- package/dist/licensing/activation.d.ts.map +1 -1
- package/dist/licensing/activation.js +2 -3
- package/dist/licensing/activation.js.map +1 -1
- package/dist/licensing/entitlements.d.ts.map +1 -1
- package/dist/licensing/entitlements.js +2 -2
- package/dist/licensing/entitlements.js.map +1 -1
- package/dist/licensing/refresher.d.ts +6 -1
- package/dist/licensing/refresher.d.ts.map +1 -1
- package/dist/licensing/refresher.js +18 -7
- package/dist/licensing/refresher.js.map +1 -1
- package/dist/logging.d.ts +87 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +612 -0
- package/dist/logging.js.map +1 -0
- package/dist/mcp/buildServer.d.ts +3 -1
- package/dist/mcp/buildServer.d.ts.map +1 -1
- package/dist/mcp/buildServer.js +27 -24
- package/dist/mcp/buildServer.js.map +1 -1
- package/dist/permissions.d.ts +1 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +10 -4
- package/dist/permissions.js.map +1 -1
- package/dist/scheduler/sendScheduler.d.ts +4 -3
- package/dist/scheduler/sendScheduler.d.ts.map +1 -1
- package/dist/scheduler/sendScheduler.js +15 -3
- package/dist/scheduler/sendScheduler.js.map +1 -1
- package/dist/service/emailService.d.ts +10 -17
- package/dist/service/emailService.d.ts.map +1 -1
- package/dist/service/emailService.js +28 -38
- package/dist/service/emailService.js.map +1 -1
- package/dist/storage/adminAudit.d.ts +15 -2
- package/dist/storage/adminAudit.d.ts.map +1 -1
- package/dist/storage/adminAudit.js +22 -27
- package/dist/storage/adminAudit.js.map +1 -1
- package/dist/storage/apiKeys.d.ts +8 -8
- package/dist/storage/apiKeys.d.ts.map +1 -1
- package/dist/storage/apiKeys.js +16 -11
- package/dist/storage/apiKeys.js.map +1 -1
- package/dist/storage/db.d.ts +596 -31
- package/dist/storage/db.d.ts.map +1 -1
- package/dist/storage/db.js +383 -45
- package/dist/storage/db.js.map +1 -1
- package/dist/storage/fileLock.d.ts +7 -0
- package/dist/storage/fileLock.d.ts.map +1 -0
- package/dist/storage/fileLock.js +183 -0
- package/dist/storage/fileLock.js.map +1 -0
- package/dist/storage/gmailConnectionGrants.d.ts +3 -4
- package/dist/storage/gmailConnectionGrants.d.ts.map +1 -1
- package/dist/storage/gmailConnectionGrants.js +6 -6
- package/dist/storage/gmailConnectionGrants.js.map +1 -1
- package/dist/storage/members.d.ts +11 -0
- package/dist/storage/members.d.ts.map +1 -1
- package/dist/storage/members.js +70 -6
- package/dist/storage/members.js.map +1 -1
- package/dist/telemetry.d.ts +17 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +34 -19
- package/dist/telemetry.js.map +1 -1
- package/dist/updateNotifier.d.ts +18 -0
- package/dist/updateNotifier.d.ts.map +1 -0
- package/dist/updateNotifier.js +128 -0
- package/dist/updateNotifier.js.map +1 -0
- package/package.json +38 -5
package/dist/config.d.ts
CHANGED
|
@@ -1,119 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { DEFAULT_MAX_ATTACHMENT_BYTES, HARD_MAX_ATTACHMENT_BYTES, configTomlPath, deploymentToml, ensureDeploymentEncryptionKey, expandHome, resolveDeploymentConfig, writeDeploymentConfig, type ConfigSource, type DeploymentConfig, type DeploymentSettingName } from './deploymentConfig.js';
|
|
2
|
+
import { InstanceConfigStore, type StoredMicrosoftOAuthApp } from './instanceConfig.js';
|
|
3
|
+
import type { LogDestination, LogLevel } from './logging.js';
|
|
4
|
+
import type { FluxmailDb } from './storage/db.js';
|
|
5
|
+
export { DEFAULT_MAX_ATTACHMENT_BYTES, HARD_MAX_ATTACHMENT_BYTES, configTomlPath, deploymentToml, ensureDeploymentEncryptionKey, expandHome, resolveDeploymentConfig, writeDeploymentConfig, type ConfigSource, type DeploymentConfig, type DeploymentSettingName, };
|
|
3
6
|
export interface ConfigReferenceEntry {
|
|
4
7
|
defaultValue: string;
|
|
5
8
|
description: string;
|
|
6
9
|
secret?: boolean;
|
|
7
10
|
documented?: boolean;
|
|
11
|
+
envFile?: boolean;
|
|
12
|
+
category: 'deployment' | 'instance';
|
|
13
|
+
toml?: string;
|
|
8
14
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
readonly MICROSOFT_CLIENT_SECRET: {
|
|
29
|
-
readonly defaultValue: "required for hosted Outlook connections";
|
|
30
|
-
readonly description: "Microsoft Entra application client secret.";
|
|
31
|
-
readonly secret: true;
|
|
32
|
-
};
|
|
33
|
-
readonly MICROSOFT_TENANT_ID: {
|
|
34
|
-
readonly defaultValue: "common";
|
|
35
|
-
readonly description: "Microsoft Entra tenant ID or verified domain.";
|
|
36
|
-
};
|
|
37
|
-
readonly FLUXMAIL_DATA_DIR: {
|
|
38
|
-
readonly defaultValue: "~/.fluxmail (/data in Docker)";
|
|
39
|
-
readonly description: "Directory for the SQLite database, stored config, and generated encryption key.";
|
|
40
|
-
};
|
|
41
|
-
readonly FLUXMAIL_DB_PATH: {
|
|
42
|
-
readonly defaultValue: "<data dir>/fluxmail.db";
|
|
43
|
-
readonly description: "Override the SQLite database path.";
|
|
44
|
-
};
|
|
45
|
-
readonly FLUXMAIL_ENCRYPTION_KEY: {
|
|
46
|
-
readonly defaultValue: "generated automatically";
|
|
47
|
-
readonly description: "A 64-character hexadecimal key used to encrypt provider credentials.";
|
|
48
|
-
readonly secret: true;
|
|
49
|
-
};
|
|
50
|
-
readonly FLUXMAIL_PORT: {
|
|
51
|
-
readonly defaultValue: "8977";
|
|
52
|
-
readonly description: "HTTP server port.";
|
|
53
|
-
};
|
|
54
|
-
readonly FLUXMAIL_PUBLIC_URL: {
|
|
55
|
-
readonly defaultValue: "http://localhost:<FLUXMAIL_PORT>";
|
|
56
|
-
readonly description: "Public base URL used for HTTP APIs and hosted OAuth callbacks.";
|
|
57
|
-
};
|
|
58
|
-
readonly FLUXMAIL_AUTH: {
|
|
59
|
-
readonly defaultValue: "apikey";
|
|
60
|
-
readonly description: "HTTP authentication mode. Use none only behind a trusted network boundary.";
|
|
61
|
-
};
|
|
62
|
-
readonly FLUXMAIL_OAUTH_PORT: {
|
|
63
|
-
readonly defaultValue: "8976";
|
|
64
|
-
readonly description: "Port for the local OAuth callback listener.";
|
|
65
|
-
};
|
|
66
|
-
readonly FLUXMAIL_OAUTH_HOST: {
|
|
67
|
-
readonly defaultValue: "127.0.0.1";
|
|
68
|
-
readonly description: "Bind address for the local OAuth callback listener.";
|
|
69
|
-
};
|
|
70
|
-
readonly FLUXMAIL_MAX_ATTACHMENT_MB: {
|
|
71
|
-
readonly defaultValue: "10";
|
|
72
|
-
readonly description: "Largest decoded attachment returned through MCP or REST, from 1 through 25 MB.";
|
|
73
|
-
};
|
|
74
|
-
readonly FLUXMAIL_LICENSE_KEY: {
|
|
75
|
-
readonly defaultValue: "none";
|
|
76
|
-
readonly description: "Paid-plan license key, normally stored with fluxmail license activate.";
|
|
77
|
-
readonly secret: true;
|
|
78
|
-
};
|
|
79
|
-
readonly FLUXMAIL_TELEMETRY: {
|
|
80
|
-
readonly defaultValue: "1";
|
|
81
|
-
readonly description: "Set to 0 to turn off anonymous CLI, MCP, and REST usage telemetry.";
|
|
82
|
-
};
|
|
83
|
-
readonly DO_NOT_TRACK: {
|
|
84
|
-
readonly defaultValue: "unset";
|
|
85
|
-
readonly description: "Set to 1 to turn off anonymous usage telemetry.";
|
|
86
|
-
};
|
|
87
|
-
readonly FLUXMAIL_LICENSE_SERVER_URL: {
|
|
88
|
-
readonly defaultValue: "https://fluxmail.ai";
|
|
89
|
-
readonly description: "License validation service override used for development and testing.";
|
|
90
|
-
readonly documented: false;
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
export type ConfigEnvironmentName = keyof typeof CONFIG_REFERENCE;
|
|
15
|
+
export type SettingMutability = 'immediate' | 'pre-database' | 'restart';
|
|
16
|
+
export interface SettingRegistryEntry {
|
|
17
|
+
canonicalName: string;
|
|
18
|
+
env: string;
|
|
19
|
+
toml?: string;
|
|
20
|
+
type: 'boolean' | 'integer' | 'path' | 'secret' | 'string' | 'url';
|
|
21
|
+
validation: string;
|
|
22
|
+
defaultValue: string;
|
|
23
|
+
sensitive: boolean;
|
|
24
|
+
mutability: SettingMutability;
|
|
25
|
+
environmentRequiresRestart?: boolean;
|
|
26
|
+
description: string;
|
|
27
|
+
category: 'deployment' | 'instance';
|
|
28
|
+
primaryStorage?: 'Data directory marker' | 'Encrypted SQLite' | 'External';
|
|
29
|
+
envFile?: boolean;
|
|
30
|
+
documented?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare const SETTING_REGISTRY: Record<string, SettingRegistryEntry>;
|
|
33
|
+
export declare const CONFIG_REFERENCE: Record<string, ConfigReferenceEntry>;
|
|
94
34
|
export interface FluxmailConfig {
|
|
95
35
|
dataDir: string;
|
|
96
36
|
dbPath: string;
|
|
97
|
-
/** 32-byte key for AES-256-GCM token encryption. */
|
|
98
37
|
encryptionKey: Buffer;
|
|
99
38
|
port: number;
|
|
100
|
-
/** Public base URL of the HTTP server, used to build OAuth redirect URIs. */
|
|
101
39
|
publicUrl: string;
|
|
102
|
-
/** Whether FLUXMAIL_PUBLIC_URL was explicitly set instead of using the localhost default. */
|
|
103
40
|
publicUrlConfigured?: boolean;
|
|
104
|
-
|
|
41
|
+
trustProxy?: boolean;
|
|
105
42
|
oauthPort: number;
|
|
106
|
-
/** Bind address for the OAuth listener. Docker uses 0.0.0.0 so its published port can reach it. */
|
|
107
43
|
oauthHost: string;
|
|
108
|
-
/** 'apikey' (default) requires a bearer token on email APIs; 'none' is for trusted networks only. */
|
|
109
|
-
authMode: 'apikey' | 'none';
|
|
110
|
-
/** Largest attachment Fluxmail will return through MCP or REST. */
|
|
111
44
|
maxAttachmentBytes: number;
|
|
112
|
-
|
|
45
|
+
logLevel: LogLevel;
|
|
46
|
+
logDestination: LogDestination;
|
|
113
47
|
licenseKey?: string;
|
|
114
|
-
/** True when the license key came from the environment or a cwd dotenv file. */
|
|
115
48
|
licenseKeyFromEnvironment?: boolean;
|
|
116
|
-
/** Base URL of the hosted license server. */
|
|
117
49
|
licenseServerUrl: string;
|
|
118
50
|
google?: {
|
|
119
51
|
clientId: string;
|
|
@@ -121,28 +53,73 @@ export interface FluxmailConfig {
|
|
|
121
53
|
};
|
|
122
54
|
microsoft?: {
|
|
123
55
|
clientId: string;
|
|
124
|
-
/** Optional for public-client app registrations that use PKCE. */
|
|
125
56
|
clientSecret?: string;
|
|
126
|
-
/** common supports both personal Microsoft accounts and Entra work accounts. */
|
|
127
57
|
tenantId: string;
|
|
128
58
|
};
|
|
129
59
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
export
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
60
|
+
export interface FluxmailStoreLocation {
|
|
61
|
+
dataDir: string;
|
|
62
|
+
dbPath: string;
|
|
63
|
+
deployment?: DeploymentConfig;
|
|
64
|
+
}
|
|
65
|
+
export type OAuthAppSource = 'built-in' | 'stored' | 'environment' | 'environment-file' | null;
|
|
66
|
+
export interface OAuthAppStatus {
|
|
67
|
+
google: {
|
|
68
|
+
clientId: string;
|
|
69
|
+
clientSecretConfigured: true;
|
|
70
|
+
source: Exclude<OAuthAppSource, null>;
|
|
71
|
+
mutable: boolean;
|
|
72
|
+
};
|
|
73
|
+
outlook: {
|
|
74
|
+
clientId: string | null;
|
|
75
|
+
tenantId: string | null;
|
|
76
|
+
clientSecretConfigured: boolean;
|
|
77
|
+
source: OAuthAppSource;
|
|
78
|
+
mutable: boolean;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export declare class EnvironmentControlledSettingError extends Error {
|
|
82
|
+
readonly code = "environment_controlled";
|
|
83
|
+
}
|
|
84
|
+
export declare function resolveDataDir(options?: {
|
|
85
|
+
env?: NodeJS.ProcessEnv;
|
|
86
|
+
}): string;
|
|
87
|
+
export declare function readLoggingSettings(dataDir?: string): {
|
|
88
|
+
level: LogLevel;
|
|
89
|
+
destination: LogDestination;
|
|
90
|
+
};
|
|
91
|
+
export declare function resolveStoreLocation(options?: {
|
|
92
|
+
env?: NodeJS.ProcessEnv;
|
|
93
|
+
}): FluxmailStoreLocation;
|
|
94
|
+
export declare function loadConfig(storeLocation?: FluxmailStoreLocation): FluxmailConfig;
|
|
95
|
+
export declare class ConfigurationService {
|
|
96
|
+
readonly deployment: DeploymentConfig;
|
|
97
|
+
readonly store: InstanceConfigStore;
|
|
98
|
+
readonly config: FluxmailConfig;
|
|
99
|
+
private readonly googleEnvironment;
|
|
100
|
+
private readonly microsoftEnvironment;
|
|
101
|
+
private readonly licenseEnvironment;
|
|
102
|
+
private currentGoogle;
|
|
103
|
+
private currentMicrosoft;
|
|
104
|
+
private currentLicenseKey;
|
|
105
|
+
private observedDataVersion;
|
|
106
|
+
private googleSource;
|
|
107
|
+
private microsoftSource;
|
|
108
|
+
private currentLicenseSource;
|
|
109
|
+
constructor(deployment: DeploymentConfig, db: FluxmailDb);
|
|
110
|
+
private refreshIfChanged;
|
|
111
|
+
reload(): FluxmailConfig;
|
|
112
|
+
oauthStatus(): OAuthAppStatus;
|
|
113
|
+
licenseSource(): 'environment' | 'environment-file' | 'stored' | null;
|
|
114
|
+
setGoogle(value: {
|
|
115
|
+
clientId: string;
|
|
116
|
+
clientSecret: string;
|
|
117
|
+
}): void;
|
|
118
|
+
resetGoogle(): boolean;
|
|
119
|
+
setMicrosoft(value: StoredMicrosoftOAuthApp): void;
|
|
120
|
+
resetMicrosoft(): boolean;
|
|
121
|
+
setLicenseKey(value: string): void;
|
|
122
|
+
removeLicenseKey(): boolean;
|
|
123
|
+
}
|
|
124
|
+
export declare function createConfigurationService(deployment: DeploymentConfig, db: FluxmailDb): ConfigurationService;
|
|
148
125
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|