@schoolpalm/message-bridge 1.2.0 → 1.4.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.
@@ -1,23 +1,18 @@
1
1
  import { MessageType } from './messageTypes';
2
- import { MessagePayload } from './payloadSchemas';
3
- /** Type definition for message handler functions */
4
- type MessageHandler<T extends MessagePayload> = (payload: T) => void;
5
- /**
6
- * Base class for Host and Module bridges.
7
- *
8
- * Handles sending, receiving, and dispatching messages via postMessage,
9
- * with type-safe payloads, origin validation, and optional request/response support.
10
- */
2
+ import { MessagePayloadMap } from './payloadSchemas';
3
+ import { RequestPayload } from './payloadSchemas';
4
+ type MessageHandler<T = any> = (payload: T) => void;
11
5
  export declare class BridgeBase {
12
6
  protected targetWindow: Window;
13
7
  protected targetOrigin: string;
14
8
  private listeners;
15
9
  private pendingRequests;
10
+ private boundHandler;
16
11
  constructor(targetWindow: Window, targetOrigin?: string);
17
- send<T extends MessagePayload>(type: MessageType, payload: T): void;
18
- request<T = any, R = any>(type: MessageType, payload?: T, timeout?: number): Promise<R>;
19
- on<T extends MessagePayload>(type: MessageType, callback: MessageHandler<T>): void;
20
- protected _handleMessage(event: MessageEvent): void;
12
+ send<T extends keyof MessagePayloadMap | string>(type: T, payload?: T extends keyof MessagePayloadMap ? MessagePayloadMap[T] : any): void;
13
+ request<R = any>(type: MessageType, payload: RequestPayload, timeout?: number): Promise<R>;
14
+ on<T extends keyof MessagePayloadMap | string>(type: T, callback: MessageHandler<T extends keyof MessagePayloadMap ? MessagePayloadMap[T] : any>): void;
15
+ protected handleMessage(event: MessageEvent): void;
21
16
  destroy(): void;
22
17
  }
23
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"bridgeBase.d.ts","sourceRoot":"","sources":["../src/bridgeBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAmC,MAAM,kBAAkB,CAAA;AAElF,oDAAoD;AACpD,KAAK,cAAc,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;AAEpE;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAC9B,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,eAAe,CAAiD;gBAE5D,YAAY,EAAE,MAAM,EAAE,YAAY,GAAE,MAAY;IAO5D,IAAI,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAK5D,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBrF,EAAE,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAK3E,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY;IAwB5C,OAAO;CAKR"}
1
+ {"version":3,"file":"bridgeBase.d.ts","sourceRoot":"","sources":["../src/bridgeBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAA;AAElE,KAAK,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnD,qBAAa,UAAU;IACrB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAE9B,OAAO,CAAC,SAAS,CAAqE;IACtF,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,YAAY,CAA+B;gBAEvC,YAAY,EAAE,MAAM,EAAE,YAAY,GAAE,MAAY;IAW5D,IAAI,CAAC,CAAC,SAAS,MAAM,iBAAiB,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG;IAOlI,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAsBxF,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,SAAS,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAQhJ,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY;IA+B3C,OAAO;CAKR"}
@@ -1,67 +1,81 @@
1
- // src/bridgeBase.ts
2
1
  import { MessageType } from './messageTypes';
3
- /**
4
- * Base class for Host and Module bridges.
5
- *
6
- * Handles sending, receiving, and dispatching messages via postMessage,
7
- * with type-safe payloads, origin validation, and optional request/response support.
8
- */
9
2
  export class BridgeBase {
10
3
  constructor(targetWindow, targetOrigin = '*') {
11
4
  this.listeners = new Map();
12
5
  this.pendingRequests = new Map();
13
6
  this.targetWindow = targetWindow;
14
7
  this.targetOrigin = targetOrigin;
15
- window.addEventListener('message', this._handleMessage.bind(this));
8
+ this.boundHandler = this.handleMessage.bind(this);
9
+ window.addEventListener('message', this.boundHandler);
16
10
  }
17
- // ---------- Send messages ----------
11
+ // --------------------
12
+ // Send message (typed)
13
+ // --------------------
18
14
  send(type, payload) {
19
15
  this.targetWindow.postMessage({ type, payload }, this.targetOrigin);
20
16
  }
21
- // ---------- Request/Response ----------
17
+ // --------------------
18
+ // Request / Response (async)
19
+ // --------------------
22
20
  request(type, payload, timeout = 5000) {
23
21
  return new Promise((resolve, reject) => {
24
- const requestId = crypto.randomUUID();
25
- this.pendingRequests.set(requestId, resolve);
26
- this.send(MessageType.DATA_REQUEST, { requestId, type, payload });
22
+ const requestId = payload.requestId;
23
+ this.pendingRequests.set(requestId, (response) => {
24
+ if (response.status === 'error')
25
+ reject(new Error(response.error ?? 'Unknown error'));
26
+ else
27
+ resolve(response.payload);
28
+ });
29
+ this.send(type, payload);
27
30
  setTimeout(() => {
28
31
  if (this.pendingRequests.has(requestId)) {
29
32
  this.pendingRequests.delete(requestId);
30
- reject(new Error(`Request ${type} timed out`));
33
+ reject(new Error(`Request ${payload.type} timed out`));
31
34
  }
32
35
  }, timeout);
33
36
  });
34
37
  }
35
- // ---------- Event handling ----------
38
+ // --------------------
39
+ // Listen to message
40
+ // --------------------
36
41
  on(type, callback) {
37
42
  if (!this.listeners.has(type))
38
43
  this.listeners.set(type, []);
39
- this.listeners.get(type)?.push(callback);
44
+ this.listeners.get(type).push(callback);
40
45
  }
41
- _handleMessage(event) {
42
- // Strict origin check
46
+ // --------------------
47
+ // Dispatcher
48
+ // --------------------
49
+ handleMessage(event) {
43
50
  if (this.targetOrigin !== '*' && event.origin !== this.targetOrigin)
44
51
  return;
45
52
  const { type, payload } = event.data || {};
46
53
  if (!type)
47
54
  return;
48
55
  // Handle DATA_RESPONSE automatically
49
- if (type === MessageType.DATA_RESPONSE && payload?.requestId) {
50
- const resolver = this.pendingRequests.get(payload.requestId);
56
+ if (type === MessageType.DATA_RESPONSE) {
57
+ const response = payload;
58
+ const resolver = this.pendingRequests.get(response.requestId);
51
59
  if (resolver) {
52
- resolver(payload);
53
- this.pendingRequests.delete(payload.requestId);
60
+ resolver(response);
61
+ this.pendingRequests.delete(response.requestId);
54
62
  return;
55
63
  }
56
64
  }
57
- // Dispatch to listeners
58
- if (this.listeners.has(type)) {
59
- this.listeners.get(type)?.forEach(cb => cb(payload));
65
+ // Call all registered listeners
66
+ const handlers = this.listeners.get(type);
67
+ handlers?.forEach(cb => cb(payload));
68
+ // Optional: handle CUSTOM messages
69
+ if (type.startsWith(MessageType.CUSTOM_PREFIX)) {
70
+ const customHandlers = this.listeners.get(type);
71
+ customHandlers?.forEach(cb => cb(payload));
60
72
  }
61
73
  }
62
- // ---------- Cleanup ----------
74
+ // --------------------
75
+ // Cleanup
76
+ // --------------------
63
77
  destroy() {
64
- window.removeEventListener('message', this._handleMessage.bind(this));
78
+ window.removeEventListener('message', this.boundHandler);
65
79
  this.listeners.clear();
66
80
  this.pendingRequests.clear();
67
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bridgeBase.js","sourceRoot":"","sources":["../src/bridgeBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridgeBase.js","sourceRoot":"","sources":["../src/bridgeBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class BridgeError extends Error {
2
+ code: string;
3
+ constructor(message: string, code: string);
4
+ }
5
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;IACA,IAAI,EAAE,MAAM;gBAApC,OAAO,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM;CAGjD"}
package/dist/errors.js ADDED
@@ -0,0 +1,7 @@
1
+ export class BridgeError extends Error {
2
+ constructor(message, code) {
3
+ super(message);
4
+ this.code = code;
5
+ }
6
+ }
7
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe,EAAS,IAAY;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAA;QADoB,SAAI,GAAJ,IAAI,CAAQ;IAEhD,CAAC;CACF"}
@@ -1,14 +1,16 @@
1
1
  import { BridgeBase } from './bridgeBase';
2
2
  import { ModuleStartPayload, UIUpdatePayload, ErrorPayload, ModuleContextPayload, HandshakeReadyPayload } from './payloadSchemas';
3
- /**
4
- * HostBridge: communication from Host → Module iframe
5
- */
6
3
  export declare class HostBridge extends BridgeBase {
4
+ private handshakeCompleted;
5
+ private handshakePayload;
6
+ private pendingStartPayload;
7
+ private heartbeatTimer?;
8
+ private lastHeartbeat;
7
9
  constructor(iframe: HTMLIFrameElement, targetOrigin?: string);
8
10
  onHandshakeReady(callback: (payload: HandshakeReadyPayload) => void): void;
9
- /**
10
- * Start module safely after handshake
11
- */
11
+ startHeartbeat(interval?: number): void;
12
+ stopHeartbeat(): void;
13
+ listenHeartbeat(timeout?: number): void;
12
14
  startModule(payload: ModuleStartPayload, timeout?: number): void;
13
15
  sendModuleStart(payload: ModuleStartPayload): void;
14
16
  sendModuleExit(reason?: string): void;
@@ -16,5 +18,21 @@ export declare class HostBridge extends BridgeBase {
16
18
  onError(callback: (payload: ErrorPayload) => void): void;
17
19
  sendContextUpdate(payload: ModuleContextPayload): void;
18
20
  requestData<T = any, R = any>(type: string, payload?: T, timeout?: number): Promise<R>;
21
+ loadPage(component: string, params?: Record<string, any>): void;
22
+ navigateBack(): void;
23
+ navigateForward(): void;
24
+ setBreadcrumb(breadcrumb: string[]): void;
25
+ showLoader(): void;
26
+ hideLoader(): void;
27
+ notify(message: string, type?: 'info' | 'success' | 'warning' | 'error'): void;
28
+ dialog(title: string, message: string): void;
29
+ confirm(title: string, message: string): void;
30
+ pauseModule(): void;
31
+ resumeModule(): void;
32
+ updatePermissions(permissions: string[]): void;
33
+ toggleFeatures(features: Record<string, boolean>): void;
34
+ preloadResources(resources: string[]): void;
35
+ notifyResourceLoaded(resource: string): void;
36
+ reset(): void;
19
37
  }
20
38
  //# sourceMappingURL=hostBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hostBridge.d.ts","sourceRoot":"","sources":["../src/hostBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EACL,kBAAkB,EAElB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,kBAAkB,CAAA;AAEzB;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,MAAM,EAAE,iBAAiB,EAAE,YAAY,GAAE,MAAY;IAQjE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI;IAInE;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,GAAE,MAAa;IAY/D,eAAe,CAAC,OAAO,EAAE,kBAAkB;IAI3C,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM;IAK9B,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI;IAIvD,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;IAKjD,iBAAiB,CAAC,OAAO,EAAE,oBAAoB;IAKhD,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CASpF"}
1
+ {"version":3,"file":"hostBridge.d.ts","sourceRoot":"","sources":["../src/hostBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EACL,kBAAkB,EAElB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EAWtB,MAAM,kBAAkB,CAAA;AAGzB,qBAAa,UAAW,SAAQ,UAAU;IACxC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,mBAAmB,CAAkC;IAE7D,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,OAAO,CAAC,aAAa,CAAa;gBAEtB,MAAM,EAAE,iBAAiB,EAAE,YAAY,GAAE,MAAY;IAQjE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI;IA0BnE,cAAc,CAAC,QAAQ,SAAO;IAO9B,aAAa;IAOb,eAAe,CAAC,OAAO,SAAQ;IAgB/B,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,SAAO;IAYvD,eAAe,CAAC,OAAO,EAAE,kBAAkB;IAI3C,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM;IAO9B,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI;IAIvD,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;IAIjD,iBAAiB,CAAC,OAAO,EAAE,oBAAoB;IAO/C,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAYpF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKxD,YAAY;IAIZ,eAAe;IAIf,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE;IAKlC,UAAU;IAIV,UAAU;IAIV,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAgB;IAK/E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKrC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKtC,WAAW;IAIX,YAAY;IAIZ,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE;IAKvC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKhD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE;IAKpC,oBAAoB,CAAC,QAAQ,EAAE,MAAM;IAQrC,KAAK;CAKN"}
@@ -1,58 +1,168 @@
1
- // src/hostBridge.ts
2
1
  import { BridgeBase } from './bridgeBase';
3
2
  import { MessageType } from './messageTypes';
4
- /**
5
- * HostBridge: communication from Host → Module iframe
6
- */
3
+ import { PROTOCOL_VERSION } from './protocol';
7
4
  export class HostBridge extends BridgeBase {
8
5
  constructor(iframe, targetOrigin = '*') {
9
- if (!iframe.contentWindow) {
6
+ if (!iframe.contentWindow)
10
7
  throw new Error('Iframe has no contentWindow');
11
- }
12
8
  super(iframe.contentWindow, targetOrigin);
9
+ this.handshakeCompleted = false;
10
+ this.handshakePayload = null;
11
+ this.pendingStartPayload = null;
12
+ this.lastHeartbeat = Date.now();
13
13
  }
14
- // ---------- Lifecycle / handshake ----------
14
+ // --------------------
15
+ // Handshake
16
+ // --------------------
15
17
  onHandshakeReady(callback) {
16
- this.on(MessageType.HANDSHAKE_READY, callback);
18
+ if (this.handshakeCompleted && this.handshakePayload) {
19
+ callback(this.handshakePayload);
20
+ return;
21
+ }
22
+ this.on(MessageType.HANDSHAKE_READY, payload => {
23
+ if (payload.version !== PROTOCOL_VERSION) {
24
+ console.warn(`Protocol mismatch: host=${PROTOCOL_VERSION}, module=${payload.version}`);
25
+ }
26
+ this.handshakeCompleted = true;
27
+ this.handshakePayload = payload;
28
+ callback(payload);
29
+ if (this.pendingStartPayload) {
30
+ this.sendModuleStart(this.pendingStartPayload);
31
+ this.pendingStartPayload = null;
32
+ }
33
+ });
17
34
  }
18
- /**
19
- * Start module safely after handshake
20
- */
21
- startModule(payload, timeout = 5000) {
22
- const timer = setTimeout(() => {
23
- console.error('Module handshake timeout');
35
+ // --------------------
36
+ // Heartbeat
37
+ // --------------------
38
+ startHeartbeat(interval = 5000) {
39
+ this.stopHeartbeat();
40
+ this.heartbeatTimer = window.setInterval(() => {
41
+ this.send(MessageType.HEARTBEAT, { timestamp: Date.now() });
42
+ }, interval);
43
+ }
44
+ stopHeartbeat() {
45
+ if (this.heartbeatTimer) {
46
+ clearInterval(this.heartbeatTimer);
47
+ this.heartbeatTimer = undefined;
48
+ }
49
+ }
50
+ listenHeartbeat(timeout = 15000) {
51
+ this.on(MessageType.HEARTBEAT, () => {
52
+ this.lastHeartbeat = Date.now();
53
+ });
54
+ setInterval(() => {
55
+ if (Date.now() - this.lastHeartbeat > timeout) {
56
+ console.error('Module heartbeat lost');
57
+ this.sendModuleExit('heartbeat-timeout');
58
+ }
24
59
  }, timeout);
25
- this.onHandshakeReady(() => {
26
- clearTimeout(timer);
60
+ }
61
+ // --------------------
62
+ // Module Start / Exit
63
+ // --------------------
64
+ startModule(payload, timeout = 5000) {
65
+ if (this.handshakeCompleted) {
27
66
  this.sendModuleStart(payload);
28
- });
67
+ return;
68
+ }
69
+ this.pendingStartPayload = payload;
70
+ const timer = setTimeout(() => console.error('Module handshake timeout'), timeout);
71
+ this.onHandshakeReady(() => clearTimeout(timer));
29
72
  }
30
- // ---------- Module control ----------
31
73
  sendModuleStart(payload) {
32
74
  this.send(MessageType.MODULE_START, payload);
33
75
  }
34
76
  sendModuleExit(reason) {
35
77
  this.send(MessageType.MODULE_EXIT, { reason });
36
78
  }
37
- // ---------- UI events ----------
79
+ // --------------------
80
+ // UI / Errors
81
+ // --------------------
38
82
  onUIUpdate(callback) {
39
83
  this.on(MessageType.UI_UPDATE, callback);
40
84
  }
41
85
  onError(callback) {
42
86
  this.on(MessageType.ERROR, callback);
43
87
  }
44
- // ---------- Context / theme sync ----------
45
88
  sendContextUpdate(payload) {
46
89
  this.send(MessageType.CONTEXT_UPDATE, payload);
47
90
  }
48
- // ---------- Request / response ----------
91
+ // --------------------
92
+ // Requests
93
+ // --------------------
49
94
  requestData(type, payload, timeout = 5000) {
50
- const requestPayload = {
95
+ const request = {
51
96
  requestId: crypto.randomUUID(),
52
97
  type,
53
- payload: payload
98
+ payload: payload,
54
99
  };
55
- return this.request(MessageType.DATA_REQUEST, requestPayload, timeout);
100
+ return this.request(MessageType.DATA_REQUEST, request, timeout);
101
+ }
102
+ // --------------------
103
+ // Convenience methods for new features
104
+ // --------------------
105
+ loadPage(component, params) {
106
+ const payload = { component, params };
107
+ this.send(MessageType.LOAD_PAGE, payload);
108
+ }
109
+ navigateBack() {
110
+ this.send(MessageType.NAVIGATE_BACK);
111
+ }
112
+ navigateForward() {
113
+ this.send(MessageType.NAVIGATE_FORWARD);
114
+ }
115
+ setBreadcrumb(breadcrumb) {
116
+ const payload = { breadcrumb };
117
+ this.send(MessageType.SET_BREADCRUMB, payload);
118
+ }
119
+ showLoader() {
120
+ this.send(MessageType.SHOW_LOADER);
121
+ }
122
+ hideLoader() {
123
+ this.send(MessageType.HIDE_LOADER);
124
+ }
125
+ notify(message, type = 'info') {
126
+ const payload = { message, type };
127
+ this.send(MessageType.NOTIFICATION, payload);
128
+ }
129
+ dialog(title, message) {
130
+ const payload = { title, message };
131
+ this.send(MessageType.DIALOG, payload);
132
+ }
133
+ confirm(title, message) {
134
+ const payload = { title, message };
135
+ this.send(MessageType.CONFIRM, payload);
136
+ }
137
+ pauseModule() {
138
+ this.send(MessageType.MODULE_PAUSE);
139
+ }
140
+ resumeModule() {
141
+ this.send(MessageType.MODULE_RESUME);
142
+ }
143
+ updatePermissions(permissions) {
144
+ const payload = { permissions };
145
+ this.send(MessageType.PERMISSION_UPDATE, payload);
146
+ }
147
+ toggleFeatures(features) {
148
+ const payload = { features };
149
+ this.send(MessageType.FEATURE_TOGGLE, payload);
150
+ }
151
+ preloadResources(resources) {
152
+ const payload = { resources };
153
+ this.send(MessageType.PRELOAD_RESOURCE, payload);
154
+ }
155
+ notifyResourceLoaded(resource) {
156
+ const payload = { resource };
157
+ this.send(MessageType.RESOURCE_LOADED, payload);
158
+ }
159
+ // --------------------
160
+ // Reset
161
+ // --------------------
162
+ reset() {
163
+ this.handshakeCompleted = false;
164
+ this.handshakePayload = null;
165
+ this.pendingStartPayload = null;
56
166
  }
57
167
  }
58
168
  //# sourceMappingURL=hostBridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hostBridge.js","sourceRoot":"","sources":["../src/hostBridge.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAW5C;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,UAAU;IACxC,YAAY,MAAyB,EAAE,eAAuB,GAAG;QAC/D,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAChD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;IAC3C,CAAC;IAED,8CAA8C;IAC9C,gBAAgB,CAAC,QAAkD;QACjE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAA2B,EAAE,UAAkB,IAAI;QAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC3C,CAAC,EAAE,OAAO,CAAC,CAAA;QAEX,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,uCAAuC;IACvC,eAAe,CAAC,OAA2B;QACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,cAAc,CAAC,MAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,MAAM,EAAuB,CAAC,CAAA;IACrE,CAAC;IAED,kCAAkC;IAClC,UAAU,CAAC,QAA4C;QACrD,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,CAAC,QAAyC;QAC/C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,6CAA6C;IAC7C,iBAAiB,CAAC,OAA6B;QAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,2CAA2C;IAC5C,WAAW,CAAmB,IAAY,EAAE,OAAW,EAAE,OAAO,GAAG,IAAI;QACtE,MAAM,cAAc,GAAmB;YACrC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;YAC9B,IAAI;YACJ,OAAO,EAAE,OAAc;SACxB,CAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAoB,WAAW,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IAC3F,CAAC;CAEA"}
1
+ {"version":3,"file":"hostBridge.js","sourceRoot":"","sources":["../src/hostBridge.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,12 +9,13 @@
9
9
  *
10
10
  * @example
11
11
  * ```typescript
12
- * import { HostBridge, ModuleBridge, MessageType } from '@schoolpalm/message-bridge';
12
+ * import { HostBridge, ModuleBridge, MessageType, ProtocolState, PROTOCOL_VERSION } from '@schoolpalm/message-bridge';
13
13
  * ```
14
14
  */
15
15
  export { BridgeBase } from './bridgeBase';
16
16
  export { HostBridge } from './hostBridge';
17
17
  export { ModuleBridge } from './moduleBridge';
18
18
  export { MessageType } from './messageTypes';
19
+ export { ProtocolState, PROTOCOL_VERSION } from './protocol';
19
20
  export * from './payloadSchemas';
20
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC7D,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -9,12 +9,13 @@
9
9
  *
10
10
  * @example
11
11
  * ```typescript
12
- * import { HostBridge, ModuleBridge, MessageType } from '@schoolpalm/message-bridge';
12
+ * import { HostBridge, ModuleBridge, MessageType, ProtocolState, PROTOCOL_VERSION } from '@schoolpalm/message-bridge';
13
13
  * ```
14
14
  */
15
15
  export { BridgeBase } from './bridgeBase';
16
16
  export { HostBridge } from './hostBridge';
17
17
  export { ModuleBridge } from './moduleBridge';
18
18
  export { MessageType } from './messageTypes';
19
+ export { ProtocolState, PROTOCOL_VERSION } from './protocol'; // ✅ new export
19
20
  export * from './payloadSchemas';
20
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC,CAAC,eAAe;AAC7E,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const debug: (...args: any[]) => void;
2
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,GAAG,EAAE,SAGnC,CAAA"}
package/dist/logger.js ADDED
@@ -0,0 +1,4 @@
1
+ export const debug = (...args) => {
2
+ console.debug('[MessageBridge]', ...args);
3
+ };
4
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;IACpC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAA;AAE7C,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @fileoverview Message type definitions for bridge communication.
2
+ * @fileoverview Message type definitions for Host ↔ Module communication.
3
3
  * @module @schoolpalm/message-bridge/messageTypes
4
4
  */
5
5
  /**
@@ -9,31 +9,70 @@
9
9
  * application and embedded modules. Each type indicates the direction and
10
10
  * purpose of the message.
11
11
  *
12
- * @example
13
- * ```typescript
14
- * import { MessageType } from '@schoolpalm/message-bridge';
15
- *
16
- * // Listen for UI updates from modules
17
- * bridge.on(MessageType.UI_UPDATE, (payload) => {
18
- * console.log('UI updated:', payload);
19
- * });
20
- * ```
12
+ * ⚡ Future-proof: additional custom messages can be sent via
13
+ * `CUSTOM:<name>` without editing this enum.
21
14
  */
22
15
  export declare enum MessageType {
23
16
  /** Module → Host: Indicates the module is ready for communication. */
24
17
  HANDSHAKE_READY = "handshake:ready",
18
+ /** Module → Host: Indicates the module is ready for communication. */
19
+ MODULE_READY = "module:ready",
20
+ /** Module → Host: Signals the module is unready/destroyed. */
21
+ MODULE_UNREADY = "module:unready",
22
+ /** Host → Module: Signals the module to pause processing. */
23
+ MODULE_PAUSE = "module:pause",
24
+ /** Host → Module: Signals the module to resume processing. */
25
+ MODULE_RESUME = "module:resume",
25
26
  /** Host → Module: Signals the module to start with provided context. */
26
27
  MODULE_START = "module:start",
27
- /** ModuleHost: Updates the host UI (title, breadcrumb, theme). */
28
- UI_UPDATE = "ui:update",
28
+ /** HostModule: Signals the module to exit and clean up. */
29
+ MODULE_EXIT = "module:exit",
29
30
  /** Module → Host: Requests data from the host. */
30
31
  DATA_REQUEST = "data:request",
31
32
  /** Host → Module: Responds to a data request. */
32
33
  DATA_RESPONSE = "data:response",
34
+ /** Host → Module: Updates module context dynamically. */
35
+ CONTEXT_UPDATE = "context:update",
36
+ /** Module → Host: Requests full host context. */
37
+ CONTEXT_REQUEST = "context:request",
38
+ /** Module → Host: Subscribe to host data changes. */
39
+ DATA_SUBSCRIBE = "data:subscribe",
40
+ /** Module → Host: Unsubscribe from host data changes. */
41
+ DATA_UNSUBSCRIBE = "data:unsubscribe",
42
+ /** Module → Host: Updates the host UI (title, breadcrumb, theme). */
43
+ UI_UPDATE = "ui:update",
44
+ /** Host → Module: Show loader overlay or spinner. */
45
+ SHOW_LOADER = "show:loader",
46
+ /** Host → Module: Hide loader overlay or spinner. */
47
+ HIDE_LOADER = "hide:loader",
48
+ /** Module → Host: Request a toast/notification. */
49
+ NOTIFICATION = "notification",
50
+ /** Module → Host: Request a modal/dialog confirmation. */
51
+ DIALOG = "dialog",
52
+ CONFIRM = "dialog",
53
+ /** Module → Host: Logs messages/warnings for centralized logging. */
54
+ LOG = "log",
33
55
  /** Module → Host: Reports an error to the host. */
34
56
  ERROR = "error",
35
- /** Host → Module: Signals the module to exit and clean up. */
36
- MODULE_EXIT = "module:exit",
37
- CONTEXT_UPDATE = "context:update"
57
+ /** Host → Module: Load a specific page/component. */
58
+ LOAD_PAGE = "load:page",
59
+ /** Host → Module: Navigate module back in internal history. */
60
+ NAVIGATE_BACK = "navigate:back",
61
+ /** Host → Module: Navigate module forward in internal history. */
62
+ NAVIGATE_FORWARD = "navigate:forward",
63
+ /** Module → Host: Update breadcrumbs in host UI. */
64
+ SET_BREADCRUMB = "set:breadcrumb",
65
+ /** Host → Module: Update allowed actions for module. */
66
+ PERMISSION_UPDATE = "permission:update",
67
+ /** Host → Module: Enable/disable optional features. */
68
+ FEATURE_TOGGLE = "feature:toggle",
69
+ /** Host → Module: Preload additional JS/CSS/images. */
70
+ PRELOAD_RESOURCE = "preload:resource",
71
+ /** Module → Host: Notify that a lazy resource is loaded. */
72
+ RESOURCE_LOADED = "resource:loaded",
73
+ /** Heartbeat for liveliness checks. Can be Module → Host or Host → Module. */
74
+ HEARTBEAT = "heartbeat",
75
+ /** Use this prefix to send custom messages without modifying the core library. */
76
+ CUSTOM_PREFIX = "CUSTOM:"
38
77
  }
39
78
  //# sourceMappingURL=messageTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageTypes.d.ts","sourceRoot":"","sources":["../src/messageTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;;;;;;;GAgBG;AACH,oBAAY,WAAW;IACrB,sEAAsE;IACtE,eAAe,oBAAoB;IACnC,wEAAwE;IACxE,YAAY,iBAAiB;IAC7B,qEAAqE;IACrE,SAAS,cAAc;IACvB,kDAAkD;IAClD,YAAY,iBAAiB;IAC7B,iDAAiD;IACjD,aAAa,kBAAkB;IAC/B,mDAAmD;IACnD,KAAK,UAAU;IACf,8DAA8D;IAC9D,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;CAClC"}
1
+ {"version":3,"file":"messageTypes.d.ts","sourceRoot":"","sources":["../src/messageTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AACH,oBAAY,WAAW;IAKrB,sEAAsE;IACtE,eAAe,oBAAoB;IAMnC,sEAAsE;IACtE,YAAY,iBAAiB;IAC7B,8DAA8D;IAC9D,cAAc,mBAAmB;IACjC,6DAA6D;IAC7D,YAAY,iBAAiB;IAC7B,8DAA8D;IAC9D,aAAa,kBAAkB;IAC/B,wEAAwE;IACxE,YAAY,iBAAiB;IAC7B,8DAA8D;IAC9D,WAAW,gBAAgB;IAK3B,kDAAkD;IAClD,YAAY,iBAAiB;IAC7B,iDAAiD;IACjD,aAAa,kBAAkB;IAC/B,yDAAyD;IACzD,cAAc,mBAAmB;IACjC,iDAAiD;IACjD,eAAe,oBAAoB;IACnC,qDAAqD;IACrD,cAAc,mBAAmB;IACjC,yDAAyD;IACzD,gBAAgB,qBAAqB;IAKrC,qEAAqE;IACrE,SAAS,cAAc;IACvB,qDAAqD;IACrD,WAAW,gBAAgB;IAC3B,qDAAqD;IACrD,WAAW,gBAAgB;IAC3B,mDAAmD;IACnD,YAAY,iBAAiB;IAC7B,0DAA0D;IAC1D,MAAM,WAAW;IACjB,OAAO,WAAW;IAClB,qEAAqE;IACrE,GAAG,QAAQ;IACX,mDAAmD;IACnD,KAAK,UAAU;IAKf,qDAAqD;IACrD,SAAS,cAAc;IACvB,+DAA+D;IAC/D,aAAa,kBAAkB;IAC/B,kEAAkE;IAClE,gBAAgB,qBAAqB;IACrC,oDAAoD;IACpD,cAAc,mBAAmB;IAKjC,wDAAwD;IACxD,iBAAiB,sBAAsB;IACvC,uDAAuD;IACvD,cAAc,mBAAmB;IAKjC,uDAAuD;IACvD,gBAAgB,qBAAqB;IACrC,4DAA4D;IAC5D,eAAe,oBAAoB;IAKnC,8EAA8E;IAC9E,SAAS,cAAc;IAKvB,kFAAkF;IAClF,aAAa,YAAY;CAC1B"}
@@ -1,8 +1,7 @@
1
1
  /**
2
- * @fileoverview Message type definitions for bridge communication.
2
+ * @fileoverview Message type definitions for Host ↔ Module communication.
3
3
  * @module @schoolpalm/message-bridge/messageTypes
4
4
  */
5
- // src/messageTypes.ts
6
5
  /**
7
6
  * Enumeration of all allowed message types for Host ↔ Module communication.
8
7
  *
@@ -10,32 +9,98 @@
10
9
  * application and embedded modules. Each type indicates the direction and
11
10
  * purpose of the message.
12
11
  *
13
- * @example
14
- * ```typescript
15
- * import { MessageType } from '@schoolpalm/message-bridge';
16
- *
17
- * // Listen for UI updates from modules
18
- * bridge.on(MessageType.UI_UPDATE, (payload) => {
19
- * console.log('UI updated:', payload);
20
- * });
21
- * ```
12
+ * ⚡ Future-proof: additional custom messages can be sent via
13
+ * `CUSTOM:<name>` without editing this enum.
22
14
  */
23
15
  export var MessageType;
24
16
  (function (MessageType) {
17
+ // -----------------------
18
+ // Lifecycle
19
+ // -----------------------
25
20
  /** Module → Host: Indicates the module is ready for communication. */
26
21
  MessageType["HANDSHAKE_READY"] = "handshake:ready";
22
+ // -----------------------
23
+ // UI & UX
24
+ // -----------------------
25
+ /** Module → Host: Indicates the module is ready for communication. */
26
+ MessageType["MODULE_READY"] = "module:ready";
27
+ /** Module → Host: Signals the module is unready/destroyed. */
28
+ MessageType["MODULE_UNREADY"] = "module:unready";
29
+ /** Host → Module: Signals the module to pause processing. */
30
+ MessageType["MODULE_PAUSE"] = "module:pause";
31
+ /** Host → Module: Signals the module to resume processing. */
32
+ MessageType["MODULE_RESUME"] = "module:resume";
27
33
  /** Host → Module: Signals the module to start with provided context. */
28
34
  MessageType["MODULE_START"] = "module:start";
29
- /** ModuleHost: Updates the host UI (title, breadcrumb, theme). */
30
- MessageType["UI_UPDATE"] = "ui:update";
35
+ /** HostModule: Signals the module to exit and clean up. */
36
+ MessageType["MODULE_EXIT"] = "module:exit";
37
+ // -----------------------
38
+ // Data & Context
39
+ // -----------------------
31
40
  /** Module → Host: Requests data from the host. */
32
41
  MessageType["DATA_REQUEST"] = "data:request";
33
42
  /** Host → Module: Responds to a data request. */
34
43
  MessageType["DATA_RESPONSE"] = "data:response";
44
+ /** Host → Module: Updates module context dynamically. */
45
+ MessageType["CONTEXT_UPDATE"] = "context:update";
46
+ /** Module → Host: Requests full host context. */
47
+ MessageType["CONTEXT_REQUEST"] = "context:request";
48
+ /** Module → Host: Subscribe to host data changes. */
49
+ MessageType["DATA_SUBSCRIBE"] = "data:subscribe";
50
+ /** Module → Host: Unsubscribe from host data changes. */
51
+ MessageType["DATA_UNSUBSCRIBE"] = "data:unsubscribe";
52
+ // -----------------------
53
+ // UI / UX
54
+ // -----------------------
55
+ /** Module → Host: Updates the host UI (title, breadcrumb, theme). */
56
+ MessageType["UI_UPDATE"] = "ui:update";
57
+ /** Host → Module: Show loader overlay or spinner. */
58
+ MessageType["SHOW_LOADER"] = "show:loader";
59
+ /** Host → Module: Hide loader overlay or spinner. */
60
+ MessageType["HIDE_LOADER"] = "hide:loader";
61
+ /** Module → Host: Request a toast/notification. */
62
+ MessageType["NOTIFICATION"] = "notification";
63
+ /** Module → Host: Request a modal/dialog confirmation. */
64
+ MessageType["DIALOG"] = "dialog";
65
+ MessageType["CONFIRM"] = "dialog";
66
+ /** Module → Host: Logs messages/warnings for centralized logging. */
67
+ MessageType["LOG"] = "log";
35
68
  /** Module → Host: Reports an error to the host. */
36
69
  MessageType["ERROR"] = "error";
37
- /** Host → Module: Signals the module to exit and clean up. */
38
- MessageType["MODULE_EXIT"] = "module:exit";
39
- MessageType["CONTEXT_UPDATE"] = "context:update";
70
+ // -----------------------
71
+ // Navigation / Page Control
72
+ // -----------------------
73
+ /** Host → Module: Load a specific page/component. */
74
+ MessageType["LOAD_PAGE"] = "load:page";
75
+ /** Host → Module: Navigate module back in internal history. */
76
+ MessageType["NAVIGATE_BACK"] = "navigate:back";
77
+ /** Host → Module: Navigate module forward in internal history. */
78
+ MessageType["NAVIGATE_FORWARD"] = "navigate:forward";
79
+ /** Module → Host: Update breadcrumbs in host UI. */
80
+ MessageType["SET_BREADCRUMB"] = "set:breadcrumb";
81
+ // -----------------------
82
+ // Permissions & Feature Flags
83
+ // -----------------------
84
+ /** Host → Module: Update allowed actions for module. */
85
+ MessageType["PERMISSION_UPDATE"] = "permission:update";
86
+ /** Host → Module: Enable/disable optional features. */
87
+ MessageType["FEATURE_TOGGLE"] = "feature:toggle";
88
+ // -----------------------
89
+ // Assets / Resources
90
+ // -----------------------
91
+ /** Host → Module: Preload additional JS/CSS/images. */
92
+ MessageType["PRELOAD_RESOURCE"] = "preload:resource";
93
+ /** Module → Host: Notify that a lazy resource is loaded. */
94
+ MessageType["RESOURCE_LOADED"] = "resource:loaded";
95
+ // -----------------------
96
+ // Lifecycle / Health
97
+ // -----------------------
98
+ /** Heartbeat for liveliness checks. Can be Module → Host or Host → Module. */
99
+ MessageType["HEARTBEAT"] = "heartbeat";
100
+ // -----------------------
101
+ // Future-proof / Custom
102
+ // -----------------------
103
+ /** Use this prefix to send custom messages without modifying the core library. */
104
+ MessageType["CUSTOM_PREFIX"] = "CUSTOM:";
40
105
  })(MessageType || (MessageType = {}));
41
106
  //# sourceMappingURL=messageTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageTypes.js","sourceRoot":"","sources":["../src/messageTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sBAAsB;AAEtB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAN,IAAY,WAgBX;AAhBD,WAAY,WAAW;IACrB,sEAAsE;IACtE,kDAAmC,CAAA;IACnC,wEAAwE;IACxE,4CAA6B,CAAA;IAC7B,qEAAqE;IACrE,sCAAuB,CAAA;IACvB,kDAAkD;IAClD,4CAA6B,CAAA;IAC7B,iDAAiD;IACjD,8CAA+B,CAAA;IAC/B,mDAAmD;IACnD,8BAAe,CAAA;IACf,8DAA8D;IAC9D,0CAA2B,CAAA;IAC3B,gDAAiC,CAAA;AACnC,CAAC,EAhBW,WAAW,KAAX,WAAW,QAgBtB"}
1
+ {"version":3,"file":"messageTypes.js","sourceRoot":"","sources":["../src/messageTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAN,IAAY,WAmGX;AAnGD,WAAY,WAAW;IAEpB,0BAA0B;IAC3B,YAAY;IACZ,0BAA0B;IAC1B,sEAAsE;IACtE,kDAAmC,CAAA;IAEnC,0BAA0B;IAC1B,UAAU;IACV,0BAA0B;IAE1B,sEAAsE;IACtE,4CAA6B,CAAA;IAC7B,8DAA8D;IAC9D,gDAAiC,CAAA;IACjC,6DAA6D;IAC7D,4CAA6B,CAAA;IAC7B,8DAA8D;IAC9D,8CAA+B,CAAA;IAC/B,wEAAwE;IACxE,4CAA6B,CAAA;IAC7B,8DAA8D;IAC9D,0CAA2B,CAAA;IAE3B,0BAA0B;IAC1B,iBAAiB;IACjB,0BAA0B;IAC1B,kDAAkD;IAClD,4CAA6B,CAAA;IAC7B,iDAAiD;IACjD,8CAA+B,CAAA;IAC/B,yDAAyD;IACzD,gDAAiC,CAAA;IACjC,iDAAiD;IACjD,kDAAmC,CAAA;IACnC,qDAAqD;IACrD,gDAAiC,CAAA;IACjC,yDAAyD;IACzD,oDAAqC,CAAA;IAErC,0BAA0B;IAC1B,UAAU;IACV,0BAA0B;IAC1B,qEAAqE;IACrE,sCAAuB,CAAA;IACvB,qDAAqD;IACrD,0CAA2B,CAAA;IAC3B,qDAAqD;IACrD,0CAA2B,CAAA;IAC3B,mDAAmD;IACnD,4CAA6B,CAAA;IAC7B,0DAA0D;IAC1D,gCAAiB,CAAA;IACjB,iCAAkB,CAAA;IAClB,qEAAqE;IACrE,0BAAW,CAAA;IACX,mDAAmD;IACnD,8BAAe,CAAA;IAEf,0BAA0B;IAC1B,4BAA4B;IAC5B,0BAA0B;IAC1B,qDAAqD;IACrD,sCAAuB,CAAA;IACvB,+DAA+D;IAC/D,8CAA+B,CAAA;IAC/B,kEAAkE;IAClE,oDAAqC,CAAA;IACrC,oDAAoD;IACpD,gDAAiC,CAAA;IAEjC,0BAA0B;IAC1B,8BAA8B;IAC9B,0BAA0B;IAC1B,wDAAwD;IACxD,sDAAuC,CAAA;IACvC,uDAAuD;IACvD,gDAAiC,CAAA;IAEjC,0BAA0B;IAC1B,qBAAqB;IACrB,0BAA0B;IAC1B,uDAAuD;IACvD,oDAAqC,CAAA;IACrC,4DAA4D;IAC5D,kDAAmC,CAAA;IAEnC,0BAA0B;IAC1B,qBAAqB;IACrB,0BAA0B;IAC1B,8EAA8E;IAC9E,sCAAuB,CAAA;IAEvB,0BAA0B;IAC1B,wBAAwB;IACxB,0BAA0B;IAC1B,kFAAkF;IAClF,wCAAyB,CAAA;AAC3B,CAAC,EAnGW,WAAW,KAAX,WAAW,QAmGtB"}
@@ -1,21 +1,30 @@
1
1
  import { BridgeBase } from './bridgeBase';
2
- import { HandshakeReadyPayload, UIUpdatePayload, ErrorPayload } from './payloadSchemas';
3
- /**
4
- * Module-side bridge for communication with the host application.
5
- */
2
+ import { HandshakeReadyPayload, UIUpdatePayload, ErrorPayload, HeartbeatPayload, LoadPagePayload, BreadcrumbPayload, NotificationPayload, DialogPayload, PermissionPayload, FeatureTogglePayload, PreloadResourcePayload, ResourceLoadedPayload } from './payloadSchemas';
6
3
  export declare class ModuleBridge extends BridgeBase {
4
+ private startedPayload;
7
5
  constructor(targetOrigin?: string);
8
6
  sendHandshake(payload: HandshakeReadyPayload): void;
9
7
  onModuleStart(callback: (payload: any) => void): void;
8
+ onHeartbeat(callback?: (payload: HeartbeatPayload) => void): void;
10
9
  sendUIUpdate(payload: UIUpdatePayload): void;
11
10
  sendError(payload: ErrorPayload): void;
12
- /**
13
- * Module requests data from host
14
- */
15
11
  requestData<T = any, R = any>(type: string, payload?: T, timeout?: number): Promise<R>;
16
- /**
17
- * Respond to a host request
18
- */
19
12
  respondData(requestId: string, data: any, status?: 'success' | 'error'): void;
13
+ onLoadPage(callback: (payload: LoadPagePayload) => void): void;
14
+ onNavigateBack(callback: () => void): void;
15
+ onNavigateForward(callback: () => void): void;
16
+ onSetBreadcrumb(callback: (payload: BreadcrumbPayload) => void): void;
17
+ onShowLoader(callback: () => void): void;
18
+ onHideLoader(callback: () => void): void;
19
+ onNotification(callback: (payload: NotificationPayload) => void): void;
20
+ onDialog(callback: (payload: DialogPayload) => void): void;
21
+ onConfirm(callback: (payload: DialogPayload) => void): void;
22
+ onPause(callback: () => void): void;
23
+ onResume(callback: () => void): void;
24
+ onPermissionUpdate(callback: (payload: PermissionPayload) => void): void;
25
+ onFeatureToggle(callback: (payload: FeatureTogglePayload) => void): void;
26
+ onPreloadResources(callback: (payload: PreloadResourcePayload) => void): void;
27
+ onResourceLoaded(callback: (payload: ResourceLoadedPayload) => void): void;
28
+ notifyResourceLoaded(resource: string): void;
20
29
  }
21
30
  //# sourceMappingURL=moduleBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"moduleBridge.d.ts","sourceRoot":"","sources":["../src/moduleBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,YAAY,EAGb,MAAM,kBAAkB,CAAA;AAEzB;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,YAAY,GAAE,MAAY;IAKtC,aAAa,CAAC,OAAO,EAAE,qBAAqB;IAI5C,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI;IAI9C,YAAY,CAAC,OAAO,EAAE,eAAe;IAIrC,SAAS,CAAC,OAAO,EAAE,YAAY;IAK/B;;OAEG;IACH,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IASpF;;OAEG;IACJ,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAE,SAAS,GAAG,OAAmB;CASjF"}
1
+ {"version":3,"file":"moduleBridge.d.ts","sourceRoot":"","sources":["../src/moduleBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,YAAY,EAGZ,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,kBAAkB,CAAA;AAEzB,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAO,CAAC,cAAc,CAAmB;gBAE7B,YAAY,GAAE,MAAY;IAOtC,aAAa,CAAC,OAAO,EAAE,qBAAqB;IAO5C,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI;IAY9C,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI;IAY1D,YAAY,CAAC,OAAO,EAAE,eAAe;IAIrC,SAAS,CAAC,OAAO,EAAE,YAAY;IAOzB,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAiB1F,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAE,SAAS,GAAG,OAAmB;IAQjF,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI;IAIvD,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI;IAInC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI;IAItC,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI;IAI9D,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI;IAIjC,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI;IAIjC,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI;IAI/D,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI;IAInD,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI;IAIpD,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI;IAI5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI;IAI7B,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI;IAIjE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI;IAIjE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI;IAItE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI;IAOnE,oBAAoB,CAAC,QAAQ,EAAE,MAAM;CAGtC"}
@@ -1,48 +1,119 @@
1
- // src/moduleBridge.ts
2
1
  import { BridgeBase } from './bridgeBase';
3
2
  import { MessageType } from './messageTypes';
4
- /**
5
- * Module-side bridge for communication with the host application.
6
- */
7
3
  export class ModuleBridge extends BridgeBase {
8
4
  constructor(targetOrigin = '*') {
9
5
  super(window.parent, targetOrigin);
6
+ this.startedPayload = null;
10
7
  }
11
- // ---------- Lifecycle / handshake ----------
8
+ // --------------------
9
+ // Handshake
10
+ // --------------------
12
11
  sendHandshake(payload) {
13
12
  this.send(MessageType.HANDSHAKE_READY, payload);
14
13
  }
14
+ // --------------------
15
+ // Module Start
16
+ // --------------------
15
17
  onModuleStart(callback) {
16
- this.on(MessageType.MODULE_START, callback);
18
+ if (this.startedPayload)
19
+ callback(this.startedPayload);
20
+ this.on(MessageType.MODULE_START, payload => {
21
+ this.startedPayload = payload;
22
+ callback(payload);
23
+ });
17
24
  }
25
+ // --------------------
26
+ // Heartbeat
27
+ // --------------------
28
+ onHeartbeat(callback) {
29
+ this.on(MessageType.HEARTBEAT, (payload) => {
30
+ const hb = payload;
31
+ if (hb.ack)
32
+ return;
33
+ callback?.(hb);
34
+ this.send(MessageType.HEARTBEAT, { timestamp: Date.now(), ack: true });
35
+ });
36
+ }
37
+ // --------------------
38
+ // UI / Errors
39
+ // --------------------
18
40
  sendUIUpdate(payload) {
19
41
  this.send(MessageType.UI_UPDATE, payload);
20
42
  }
21
43
  sendError(payload) {
22
44
  this.send(MessageType.ERROR, payload);
23
45
  }
24
- // ---------- Request / response ----------
25
- /**
26
- * Module requests data from host
27
- */
28
- requestData(type, payload, timeout = 5000) {
29
- const requestPayload = {
46
+ // --------------------
47
+ // Requests
48
+ // --------------------
49
+ async requestData(type, payload, timeout = 5000) {
50
+ const request = {
30
51
  requestId: crypto.randomUUID(),
31
52
  type,
32
53
  payload: payload
33
54
  };
34
- return this.request(MessageType.DATA_REQUEST, requestPayload, timeout);
55
+ const response = (await this.request(MessageType.DATA_REQUEST, request, timeout));
56
+ if (response.status === 'error')
57
+ throw new Error(response.error || 'Unknown error from host');
58
+ return response.payload;
35
59
  }
36
- /**
37
- * Respond to a host request
38
- */
39
60
  respondData(requestId, data, status = 'success') {
40
- const response = {
41
- requestId,
42
- status,
43
- payload: data
44
- };
61
+ const response = { requestId, status, payload: data };
45
62
  this.send(MessageType.DATA_RESPONSE, response);
46
63
  }
64
+ // --------------------
65
+ // Convenience methods to handle host messages
66
+ // --------------------
67
+ onLoadPage(callback) {
68
+ this.on(MessageType.LOAD_PAGE, callback);
69
+ }
70
+ onNavigateBack(callback) {
71
+ this.on(MessageType.NAVIGATE_BACK, callback);
72
+ }
73
+ onNavigateForward(callback) {
74
+ this.on(MessageType.NAVIGATE_FORWARD, callback);
75
+ }
76
+ onSetBreadcrumb(callback) {
77
+ this.on(MessageType.SET_BREADCRUMB, callback);
78
+ }
79
+ onShowLoader(callback) {
80
+ this.on(MessageType.SHOW_LOADER, callback);
81
+ }
82
+ onHideLoader(callback) {
83
+ this.on(MessageType.HIDE_LOADER, callback);
84
+ }
85
+ onNotification(callback) {
86
+ this.on(MessageType.NOTIFICATION, callback);
87
+ }
88
+ onDialog(callback) {
89
+ this.on(MessageType.DIALOG, callback);
90
+ }
91
+ onConfirm(callback) {
92
+ this.on(MessageType.CONFIRM, callback);
93
+ }
94
+ onPause(callback) {
95
+ this.on(MessageType.MODULE_PAUSE, callback);
96
+ }
97
+ onResume(callback) {
98
+ this.on(MessageType.MODULE_RESUME, callback);
99
+ }
100
+ onPermissionUpdate(callback) {
101
+ this.on(MessageType.PERMISSION_UPDATE, callback);
102
+ }
103
+ onFeatureToggle(callback) {
104
+ this.on(MessageType.FEATURE_TOGGLE, callback);
105
+ }
106
+ onPreloadResources(callback) {
107
+ this.on(MessageType.PRELOAD_RESOURCE, callback);
108
+ }
109
+ onResourceLoaded(callback) {
110
+ this.on(MessageType.RESOURCE_LOADED, callback);
111
+ }
112
+ // --------------------
113
+ // Notify host about resource ready
114
+ // --------------------
115
+ notifyResourceLoaded(resource) {
116
+ this.send(MessageType.RESOURCE_LOADED, { resource });
117
+ }
47
118
  }
48
119
  //# sourceMappingURL=moduleBridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"moduleBridge.js","sourceRoot":"","sources":["../src/moduleBridge.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAS5C;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,YAAY,eAAuB,GAAG;QACpC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACpC,CAAC;IAED,8CAA8C;IAC9C,aAAa,CAAC,OAA8B;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,aAAa,CAAC,QAAgC;QAC5C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC;IAED,YAAY,CAAC,OAAwB;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,SAAS,CAAC,OAAqB;QAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,2CAA2C;IAC3C;;OAEG;IACH,WAAW,CAAmB,IAAY,EAAE,OAAW,EAAE,OAAO,GAAG,IAAI;QACrE,MAAM,cAAc,GAAmB;YACrC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;YAC9B,IAAI;YACJ,OAAO,EAAE,OAAc;SACxB,CAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAoB,WAAW,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IAC3F,CAAC;IAED;;OAEG;IACJ,WAAW,CAAC,SAAiB,EAAE,IAAS,EAAE,SAA8B,SAAS;QAChF,MAAM,QAAQ,GAAoB;YAChC,SAAS;YACT,MAAM;YACN,OAAO,EAAE,IAAI;SACd,CAAA;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;CAEA"}
1
+ {"version":3,"file":"moduleBridge.js","sourceRoot":"","sources":["../src/moduleBridge.ts"],"names":[],"mappings":"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"}
@@ -1,76 +1,111 @@
1
- /**
2
- * Payload for handshake ready message.
3
- * Module → Host
4
- */
1
+ import { MessageType } from './messageTypes';
5
2
  export interface HandshakeReadyPayload {
6
3
  version: string;
7
4
  timestamp: number;
5
+ capabilities?: string[];
8
6
  }
9
- /**
10
- * Payload for starting a module.
11
- * Host → Module
12
- */
13
7
  export interface ModuleStartPayload {
14
8
  moduleId: string;
15
9
  route: string;
16
10
  context: Record<string, any>;
17
11
  timestamp: number;
18
12
  }
19
- /**
20
- * Payload for module exit
21
- * Host → Module
22
- */
23
13
  export interface ModuleExitPayload {
24
14
  reason?: string;
25
15
  }
26
- /**
27
- * Payload for UI updates from module
28
- * Module → Host
29
- */
30
16
  export interface UIUpdatePayload {
31
17
  title: string;
32
18
  breadcrumb: string[];
33
19
  theme?: string;
34
20
  }
35
- /**
36
- * Payload for errors
37
- * Module → Host
38
- */
39
21
  export interface ErrorPayload {
40
22
  code: string;
41
23
  message: string;
42
24
  details?: any;
43
25
  }
44
- /**
45
- * Payload for context updates
46
- * Host → Module
47
- */
48
26
  export interface ModuleContextPayload {
49
27
  user?: Record<string, any>;
50
28
  tenant?: Record<string, any>;
51
29
  permissions?: string[];
52
30
  theme?: string;
53
31
  }
54
- /**
55
- * Request payload (sent by requester)
56
- * Can be Module → Host or Host → Module
57
- */
58
32
  export interface RequestPayload {
59
33
  requestId: string;
60
34
  type: string;
61
- payload?: Record<string, any>;
35
+ payload?: any;
62
36
  }
63
- /**
64
- * Response payload (sent by responder)
65
- */
66
37
  export interface ResponsePayload {
67
38
  requestId: string;
68
39
  status: 'success' | 'error';
69
40
  payload?: any;
70
41
  error?: string;
71
42
  }
72
- /**
73
- * Union type representing all payloads
74
- */
75
- export type MessagePayload = HandshakeReadyPayload | ModuleStartPayload | ModuleExitPayload | UIUpdatePayload | ErrorPayload | ModuleContextPayload | RequestPayload | ResponsePayload;
43
+ export interface HeartbeatPayload {
44
+ timestamp: number;
45
+ ack?: boolean;
46
+ }
47
+ export interface LoadPagePayload {
48
+ component: string;
49
+ params?: Record<string, any>;
50
+ }
51
+ export interface NavigationPayload {
52
+ }
53
+ export interface BreadcrumbPayload {
54
+ breadcrumb: string[];
55
+ }
56
+ export interface NotificationPayload {
57
+ message: string;
58
+ type: 'info' | 'success' | 'warning' | 'error';
59
+ }
60
+ export interface DialogPayload {
61
+ title?: string;
62
+ message: string;
63
+ }
64
+ export interface PauseResumePayload {
65
+ }
66
+ export interface PermissionPayload {
67
+ permissions: string[];
68
+ }
69
+ export interface FeatureTogglePayload {
70
+ features: Record<string, boolean>;
71
+ }
72
+ export interface PreloadResourcePayload {
73
+ resources: string[];
74
+ }
75
+ export interface ResourceLoadedPayload {
76
+ resource: string;
77
+ }
78
+ export type LogPayload = {
79
+ message: string;
80
+ level?: 'info' | 'warn' | 'error';
81
+ };
82
+ export type MessagePayload = HandshakeReadyPayload | ModuleStartPayload | ModuleExitPayload | UIUpdatePayload | ErrorPayload | ModuleContextPayload | RequestPayload | ResponsePayload | HeartbeatPayload | LoadPagePayload | NavigationPayload | BreadcrumbPayload | NotificationPayload | DialogPayload | PauseResumePayload | PermissionPayload | FeatureTogglePayload | PreloadResourcePayload | ResourceLoadedPayload | LogPayload | undefined | any;
83
+ export interface MessagePayloadMap {
84
+ [MessageType.HANDSHAKE_READY]: HandshakeReadyPayload;
85
+ [MessageType.MODULE_START]: ModuleStartPayload;
86
+ [MessageType.MODULE_EXIT]: ModuleExitPayload;
87
+ [MessageType.UI_UPDATE]: UIUpdatePayload;
88
+ [MessageType.ERROR]: ErrorPayload;
89
+ [MessageType.CONTEXT_UPDATE]: ModuleContextPayload;
90
+ [MessageType.DATA_REQUEST]: RequestPayload;
91
+ [MessageType.DATA_RESPONSE]: ResponsePayload;
92
+ [MessageType.HEARTBEAT]: HeartbeatPayload;
93
+ [MessageType.LOAD_PAGE]: LoadPagePayload;
94
+ [MessageType.NAVIGATE_BACK]: NavigationPayload;
95
+ [MessageType.NAVIGATE_FORWARD]: NavigationPayload;
96
+ [MessageType.SET_BREADCRUMB]: BreadcrumbPayload;
97
+ [MessageType.SHOW_LOADER]: undefined;
98
+ [MessageType.HIDE_LOADER]: undefined;
99
+ [MessageType.NOTIFICATION]: NotificationPayload;
100
+ [MessageType.DIALOG]: DialogPayload;
101
+ [MessageType.CONFIRM]: DialogPayload;
102
+ [MessageType.MODULE_PAUSE]: PauseResumePayload;
103
+ [MessageType.MODULE_RESUME]: PauseResumePayload;
104
+ [MessageType.PERMISSION_UPDATE]: PermissionPayload;
105
+ [MessageType.FEATURE_TOGGLE]: FeatureTogglePayload;
106
+ [MessageType.PRELOAD_RESOURCE]: PreloadResourcePayload;
107
+ [MessageType.RESOURCE_LOADED]: ResourceLoadedPayload;
108
+ [MessageType.LOG]: LogPayload;
109
+ [key: `CUSTOM:${string}`]: any;
110
+ }
76
111
  //# sourceMappingURL=payloadSchemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloadSchemas.d.ts","sourceRoot":"","sources":["../src/payloadSchemas.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAC3B,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,eAAe,GACf,YAAY,GACZ,oBAAoB,GACpB,cAAc,GACd,eAAe,CAAA"}
1
+ {"version":3,"file":"payloadSchemas.d.ts","sourceRoot":"","sources":["../src/payloadSchemas.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export {};
1
+ // src/payloadSchemas.ts
2
+ import { MessageType } from './messageTypes';
2
3
  //# sourceMappingURL=payloadSchemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloadSchemas.js","sourceRoot":"","sources":["../src/payloadSchemas.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"payloadSchemas.js","sourceRoot":"","sources":["../src/payloadSchemas.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,8 @@
1
+ export declare enum ProtocolState {
2
+ INIT = "init",
3
+ HANDSHAKEN = "handshaken",
4
+ STARTED = "started",
5
+ EXITED = "exited"
6
+ }
7
+ export declare const PROTOCOL_VERSION = "1.0.0";
8
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAEA,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,gBAAgB,UAAU,CAAA"}
@@ -0,0 +1,10 @@
1
+ // src/protocol.ts
2
+ export var ProtocolState;
3
+ (function (ProtocolState) {
4
+ ProtocolState["INIT"] = "init";
5
+ ProtocolState["HANDSHAKEN"] = "handshaken";
6
+ ProtocolState["STARTED"] = "started";
7
+ ProtocolState["EXITED"] = "exited";
8
+ })(ProtocolState || (ProtocolState = {}));
9
+ export const PROTOCOL_VERSION = '1.0.0';
10
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAElB,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;AACnB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schoolpalm/message-bridge",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "TypeScript SDK for message-based communication between SchoolPalm host and vendor modules.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",