message-nexus 1.0.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 +573 -0
- package/dist/index.cjs +572 -0
- package/dist/index.d.cts +175 -0
- package/dist/index.d.ts +175 -0
- package/dist/index.js +530 -0
- package/package.json +54 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Emitter } from 'mitt';
|
|
2
|
+
|
|
3
|
+
interface Message {
|
|
4
|
+
id: string;
|
|
5
|
+
type: string;
|
|
6
|
+
payload?: unknown;
|
|
7
|
+
from: string;
|
|
8
|
+
to?: string;
|
|
9
|
+
metadata?: Record<string, unknown>;
|
|
10
|
+
isResponse?: boolean;
|
|
11
|
+
error?: unknown;
|
|
12
|
+
}
|
|
13
|
+
declare class BaseDriver {
|
|
14
|
+
onMessage: ((data: Message) => void) | null;
|
|
15
|
+
constructor();
|
|
16
|
+
send(data: Message): void;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface BroadcastDriverOptions {
|
|
21
|
+
channel: string;
|
|
22
|
+
}
|
|
23
|
+
declare class BroadcastDriver extends BaseDriver {
|
|
24
|
+
private channel;
|
|
25
|
+
private messageHandler;
|
|
26
|
+
constructor(options: BroadcastDriverOptions);
|
|
27
|
+
send(data: Message): void;
|
|
28
|
+
destroy(): void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare class MittDriver extends BaseDriver {
|
|
32
|
+
private emitter;
|
|
33
|
+
private listener;
|
|
34
|
+
constructor(emitter: Emitter<Record<string, Message>>);
|
|
35
|
+
send(data: Message): void;
|
|
36
|
+
destroy(): void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare class PostMessageDriver extends BaseDriver {
|
|
40
|
+
targetWindow: Window;
|
|
41
|
+
targetOrigin: string;
|
|
42
|
+
private messageHandler;
|
|
43
|
+
constructor(targetWindow: Window, targetOrigin: string);
|
|
44
|
+
send(data: Message): void;
|
|
45
|
+
destroy(): void;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
declare enum LogLevel {
|
|
49
|
+
DEBUG = "debug",
|
|
50
|
+
INFO = "info",
|
|
51
|
+
WARN = "warn",
|
|
52
|
+
ERROR = "error"
|
|
53
|
+
}
|
|
54
|
+
interface LogEntry {
|
|
55
|
+
level: LogLevel;
|
|
56
|
+
timestamp: number;
|
|
57
|
+
message: string;
|
|
58
|
+
metadata?: Record<string, unknown>;
|
|
59
|
+
context?: string;
|
|
60
|
+
}
|
|
61
|
+
type LogHandler = (entry: LogEntry) => void;
|
|
62
|
+
declare class Logger {
|
|
63
|
+
private handlers;
|
|
64
|
+
private context;
|
|
65
|
+
private minLevel;
|
|
66
|
+
constructor(context: string, minLevel?: LogLevel);
|
|
67
|
+
addHandler(handler: LogHandler): void;
|
|
68
|
+
setMinLevel(level: LogLevel): void;
|
|
69
|
+
private shouldLog;
|
|
70
|
+
private log;
|
|
71
|
+
debug(message: string, metadata?: Record<string, unknown>): void;
|
|
72
|
+
info(message: string, metadata?: Record<string, unknown>): void;
|
|
73
|
+
warn(message: string, metadata?: Record<string, unknown>): void;
|
|
74
|
+
error(message: string, metadata?: Record<string, unknown>): void;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
interface ReconnectOptions {
|
|
78
|
+
maxRetries?: number;
|
|
79
|
+
retryInterval?: number;
|
|
80
|
+
retryDelay?: number;
|
|
81
|
+
}
|
|
82
|
+
interface WebSocketDriverOptions {
|
|
83
|
+
url: string;
|
|
84
|
+
reconnect?: boolean | ReconnectOptions;
|
|
85
|
+
logger?: Logger;
|
|
86
|
+
}
|
|
87
|
+
declare class WebSocketDriver extends BaseDriver {
|
|
88
|
+
private url;
|
|
89
|
+
private ws;
|
|
90
|
+
private reconnectEnabled;
|
|
91
|
+
private maxRetries;
|
|
92
|
+
private retryInterval;
|
|
93
|
+
private retryCount;
|
|
94
|
+
private reconnectTimer;
|
|
95
|
+
private isManuallyClosed;
|
|
96
|
+
private logger;
|
|
97
|
+
constructor(options: WebSocketDriverOptions);
|
|
98
|
+
private connect;
|
|
99
|
+
private scheduleReconnect;
|
|
100
|
+
send(data: Message): void;
|
|
101
|
+
close(): void;
|
|
102
|
+
destroy(): void;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare function createEmitter(): Emitter<Record<string, Message>>;
|
|
106
|
+
|
|
107
|
+
interface MessageBridgeOptions {
|
|
108
|
+
instanceId?: string;
|
|
109
|
+
timeout?: number;
|
|
110
|
+
logger?: Logger;
|
|
111
|
+
}
|
|
112
|
+
interface RequestOptions {
|
|
113
|
+
type: string;
|
|
114
|
+
payload?: unknown;
|
|
115
|
+
to?: string;
|
|
116
|
+
metadata?: Record<string, unknown>;
|
|
117
|
+
timeout?: number;
|
|
118
|
+
retryCount?: number;
|
|
119
|
+
retryDelay?: number;
|
|
120
|
+
}
|
|
121
|
+
interface CommandMessage extends Message {
|
|
122
|
+
type: string;
|
|
123
|
+
payload?: unknown;
|
|
124
|
+
}
|
|
125
|
+
type ErrorHandler = (error: Error, context?: Record<string, unknown>) => void;
|
|
126
|
+
interface Metrics {
|
|
127
|
+
messagesSent: number;
|
|
128
|
+
messagesReceived: number;
|
|
129
|
+
messagesFailed: number;
|
|
130
|
+
pendingMessages: number;
|
|
131
|
+
queuedMessages: number;
|
|
132
|
+
totalLatency: number;
|
|
133
|
+
averageLatency: number;
|
|
134
|
+
}
|
|
135
|
+
type MetricsCallback = (metrics: Metrics) => void;
|
|
136
|
+
declare class MessageBridge<RequestPayload = unknown, ResponsePayload = unknown> {
|
|
137
|
+
driver: BaseDriver;
|
|
138
|
+
pendingTasks: Map<string, {
|
|
139
|
+
resolve: (value: ResponsePayload) => void;
|
|
140
|
+
reject: (reason?: unknown) => void;
|
|
141
|
+
timer: ReturnType<typeof setTimeout>;
|
|
142
|
+
to?: string;
|
|
143
|
+
timestamp: number;
|
|
144
|
+
}>;
|
|
145
|
+
incomingMessages: Map<string, {
|
|
146
|
+
from?: string;
|
|
147
|
+
type: string;
|
|
148
|
+
timestamp: number;
|
|
149
|
+
}>;
|
|
150
|
+
messageHandlers: Set<(data: CommandMessage) => void>;
|
|
151
|
+
timeout: number;
|
|
152
|
+
instanceId: string;
|
|
153
|
+
private cleanupInterval;
|
|
154
|
+
private messageQueue;
|
|
155
|
+
private maxQueueSize;
|
|
156
|
+
private errorHandler;
|
|
157
|
+
private logger;
|
|
158
|
+
private metrics;
|
|
159
|
+
private metricsCallbacks;
|
|
160
|
+
constructor(driver: BaseDriver, options?: MessageBridgeOptions);
|
|
161
|
+
request(typeOrOptions: string | RequestOptions): Promise<ResponsePayload>;
|
|
162
|
+
private _sendMessage;
|
|
163
|
+
onError(handler: ErrorHandler): () => void;
|
|
164
|
+
flushQueue(): void;
|
|
165
|
+
private _validateMessage;
|
|
166
|
+
_handleIncoming(data: unknown): void;
|
|
167
|
+
getMetrics(): Metrics;
|
|
168
|
+
onMetrics(callback: MetricsCallback): () => boolean;
|
|
169
|
+
private _notifyMetrics;
|
|
170
|
+
onCommand(handler: (data: CommandMessage) => void): () => boolean;
|
|
171
|
+
reply(messageId: string, payload: unknown, error?: unknown): void;
|
|
172
|
+
destroy(): void;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export { BaseDriver, BroadcastDriver, type CommandMessage, type ErrorHandler, type Message, type MessageBridgeOptions, type Metrics, type MetricsCallback, MittDriver, PostMessageDriver, type RequestOptions, WebSocketDriver, createEmitter, MessageBridge as default };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Emitter } from 'mitt';
|
|
2
|
+
|
|
3
|
+
interface Message {
|
|
4
|
+
id: string;
|
|
5
|
+
type: string;
|
|
6
|
+
payload?: unknown;
|
|
7
|
+
from: string;
|
|
8
|
+
to?: string;
|
|
9
|
+
metadata?: Record<string, unknown>;
|
|
10
|
+
isResponse?: boolean;
|
|
11
|
+
error?: unknown;
|
|
12
|
+
}
|
|
13
|
+
declare class BaseDriver {
|
|
14
|
+
onMessage: ((data: Message) => void) | null;
|
|
15
|
+
constructor();
|
|
16
|
+
send(data: Message): void;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface BroadcastDriverOptions {
|
|
21
|
+
channel: string;
|
|
22
|
+
}
|
|
23
|
+
declare class BroadcastDriver extends BaseDriver {
|
|
24
|
+
private channel;
|
|
25
|
+
private messageHandler;
|
|
26
|
+
constructor(options: BroadcastDriverOptions);
|
|
27
|
+
send(data: Message): void;
|
|
28
|
+
destroy(): void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare class MittDriver extends BaseDriver {
|
|
32
|
+
private emitter;
|
|
33
|
+
private listener;
|
|
34
|
+
constructor(emitter: Emitter<Record<string, Message>>);
|
|
35
|
+
send(data: Message): void;
|
|
36
|
+
destroy(): void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare class PostMessageDriver extends BaseDriver {
|
|
40
|
+
targetWindow: Window;
|
|
41
|
+
targetOrigin: string;
|
|
42
|
+
private messageHandler;
|
|
43
|
+
constructor(targetWindow: Window, targetOrigin: string);
|
|
44
|
+
send(data: Message): void;
|
|
45
|
+
destroy(): void;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
declare enum LogLevel {
|
|
49
|
+
DEBUG = "debug",
|
|
50
|
+
INFO = "info",
|
|
51
|
+
WARN = "warn",
|
|
52
|
+
ERROR = "error"
|
|
53
|
+
}
|
|
54
|
+
interface LogEntry {
|
|
55
|
+
level: LogLevel;
|
|
56
|
+
timestamp: number;
|
|
57
|
+
message: string;
|
|
58
|
+
metadata?: Record<string, unknown>;
|
|
59
|
+
context?: string;
|
|
60
|
+
}
|
|
61
|
+
type LogHandler = (entry: LogEntry) => void;
|
|
62
|
+
declare class Logger {
|
|
63
|
+
private handlers;
|
|
64
|
+
private context;
|
|
65
|
+
private minLevel;
|
|
66
|
+
constructor(context: string, minLevel?: LogLevel);
|
|
67
|
+
addHandler(handler: LogHandler): void;
|
|
68
|
+
setMinLevel(level: LogLevel): void;
|
|
69
|
+
private shouldLog;
|
|
70
|
+
private log;
|
|
71
|
+
debug(message: string, metadata?: Record<string, unknown>): void;
|
|
72
|
+
info(message: string, metadata?: Record<string, unknown>): void;
|
|
73
|
+
warn(message: string, metadata?: Record<string, unknown>): void;
|
|
74
|
+
error(message: string, metadata?: Record<string, unknown>): void;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
interface ReconnectOptions {
|
|
78
|
+
maxRetries?: number;
|
|
79
|
+
retryInterval?: number;
|
|
80
|
+
retryDelay?: number;
|
|
81
|
+
}
|
|
82
|
+
interface WebSocketDriverOptions {
|
|
83
|
+
url: string;
|
|
84
|
+
reconnect?: boolean | ReconnectOptions;
|
|
85
|
+
logger?: Logger;
|
|
86
|
+
}
|
|
87
|
+
declare class WebSocketDriver extends BaseDriver {
|
|
88
|
+
private url;
|
|
89
|
+
private ws;
|
|
90
|
+
private reconnectEnabled;
|
|
91
|
+
private maxRetries;
|
|
92
|
+
private retryInterval;
|
|
93
|
+
private retryCount;
|
|
94
|
+
private reconnectTimer;
|
|
95
|
+
private isManuallyClosed;
|
|
96
|
+
private logger;
|
|
97
|
+
constructor(options: WebSocketDriverOptions);
|
|
98
|
+
private connect;
|
|
99
|
+
private scheduleReconnect;
|
|
100
|
+
send(data: Message): void;
|
|
101
|
+
close(): void;
|
|
102
|
+
destroy(): void;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare function createEmitter(): Emitter<Record<string, Message>>;
|
|
106
|
+
|
|
107
|
+
interface MessageBridgeOptions {
|
|
108
|
+
instanceId?: string;
|
|
109
|
+
timeout?: number;
|
|
110
|
+
logger?: Logger;
|
|
111
|
+
}
|
|
112
|
+
interface RequestOptions {
|
|
113
|
+
type: string;
|
|
114
|
+
payload?: unknown;
|
|
115
|
+
to?: string;
|
|
116
|
+
metadata?: Record<string, unknown>;
|
|
117
|
+
timeout?: number;
|
|
118
|
+
retryCount?: number;
|
|
119
|
+
retryDelay?: number;
|
|
120
|
+
}
|
|
121
|
+
interface CommandMessage extends Message {
|
|
122
|
+
type: string;
|
|
123
|
+
payload?: unknown;
|
|
124
|
+
}
|
|
125
|
+
type ErrorHandler = (error: Error, context?: Record<string, unknown>) => void;
|
|
126
|
+
interface Metrics {
|
|
127
|
+
messagesSent: number;
|
|
128
|
+
messagesReceived: number;
|
|
129
|
+
messagesFailed: number;
|
|
130
|
+
pendingMessages: number;
|
|
131
|
+
queuedMessages: number;
|
|
132
|
+
totalLatency: number;
|
|
133
|
+
averageLatency: number;
|
|
134
|
+
}
|
|
135
|
+
type MetricsCallback = (metrics: Metrics) => void;
|
|
136
|
+
declare class MessageBridge<RequestPayload = unknown, ResponsePayload = unknown> {
|
|
137
|
+
driver: BaseDriver;
|
|
138
|
+
pendingTasks: Map<string, {
|
|
139
|
+
resolve: (value: ResponsePayload) => void;
|
|
140
|
+
reject: (reason?: unknown) => void;
|
|
141
|
+
timer: ReturnType<typeof setTimeout>;
|
|
142
|
+
to?: string;
|
|
143
|
+
timestamp: number;
|
|
144
|
+
}>;
|
|
145
|
+
incomingMessages: Map<string, {
|
|
146
|
+
from?: string;
|
|
147
|
+
type: string;
|
|
148
|
+
timestamp: number;
|
|
149
|
+
}>;
|
|
150
|
+
messageHandlers: Set<(data: CommandMessage) => void>;
|
|
151
|
+
timeout: number;
|
|
152
|
+
instanceId: string;
|
|
153
|
+
private cleanupInterval;
|
|
154
|
+
private messageQueue;
|
|
155
|
+
private maxQueueSize;
|
|
156
|
+
private errorHandler;
|
|
157
|
+
private logger;
|
|
158
|
+
private metrics;
|
|
159
|
+
private metricsCallbacks;
|
|
160
|
+
constructor(driver: BaseDriver, options?: MessageBridgeOptions);
|
|
161
|
+
request(typeOrOptions: string | RequestOptions): Promise<ResponsePayload>;
|
|
162
|
+
private _sendMessage;
|
|
163
|
+
onError(handler: ErrorHandler): () => void;
|
|
164
|
+
flushQueue(): void;
|
|
165
|
+
private _validateMessage;
|
|
166
|
+
_handleIncoming(data: unknown): void;
|
|
167
|
+
getMetrics(): Metrics;
|
|
168
|
+
onMetrics(callback: MetricsCallback): () => boolean;
|
|
169
|
+
private _notifyMetrics;
|
|
170
|
+
onCommand(handler: (data: CommandMessage) => void): () => boolean;
|
|
171
|
+
reply(messageId: string, payload: unknown, error?: unknown): void;
|
|
172
|
+
destroy(): void;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export { BaseDriver, BroadcastDriver, type CommandMessage, type ErrorHandler, type Message, type MessageBridgeOptions, type Metrics, type MetricsCallback, MittDriver, PostMessageDriver, type RequestOptions, WebSocketDriver, createEmitter, MessageBridge as default };
|