@schoolpalm/message-bridge 1.3.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,7 +1,7 @@
1
1
  import { MessageType } from './messageTypes';
2
2
  import { MessagePayloadMap } from './payloadSchemas';
3
3
  import { RequestPayload } from './payloadSchemas';
4
- type MessageHandler<T> = (payload: T) => void;
4
+ type MessageHandler<T = any> = (payload: T) => void;
5
5
  export declare class BridgeBase {
6
6
  protected targetWindow: Window;
7
7
  protected targetOrigin: string;
@@ -9,9 +9,9 @@ export declare class BridgeBase {
9
9
  private pendingRequests;
10
10
  private boundHandler;
11
11
  constructor(targetWindow: Window, targetOrigin?: string);
12
- send<T extends MessageType>(type: T, payload: MessagePayloadMap[T]): void;
12
+ send<T extends keyof MessagePayloadMap | string>(type: T, payload?: T extends keyof MessagePayloadMap ? MessagePayloadMap[T] : any): void;
13
13
  request<R = any>(type: MessageType, payload: RequestPayload, timeout?: number): Promise<R>;
14
- on<T extends MessageType>(type: T, callback: MessageHandler<MessagePayloadMap[T]>): void;
14
+ on<T extends keyof MessagePayloadMap | string>(type: T, callback: MessageHandler<T extends keyof MessagePayloadMap ? MessagePayloadMap[T] : any>): void;
15
15
  protected handleMessage(event: MessageEvent): void;
16
16
  destroy(): void;
17
17
  }
@@ -1 +1 @@
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,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;AAE7C,qBAAa,UAAU;IACrB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAA;IAE9B,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,YAAY,CAA+B;gBAEvC,YAAY,EAAE,MAAM,EAAE,YAAY,GAAE,MAAY;IAW5D,IAAI,CAAC,CAAC,SAAS,WAAW,EACxB,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAQhC,OAAO,CAAC,CAAC,GAAG,GAAG,EACd,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,SAAO,GACb,OAAO,CAAC,CAAC,CAAC;IA2BX,EAAE,CAAC,CAAC,SAAS,WAAW,EACtB,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAWhD,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY;IAqB3C,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"}
@@ -9,24 +9,22 @@ export class BridgeBase {
9
9
  window.addEventListener('message', this.boundHandler);
10
10
  }
11
11
  // --------------------
12
- // Send (typed)
12
+ // Send message (typed)
13
13
  // --------------------
14
14
  send(type, payload) {
15
15
  this.targetWindow.postMessage({ type, payload }, this.targetOrigin);
16
16
  }
17
17
  // --------------------
18
- // Request / Response
18
+ // Request / Response (async)
19
19
  // --------------------
20
20
  request(type, payload, timeout = 5000) {
21
21
  return new Promise((resolve, reject) => {
22
22
  const requestId = payload.requestId;
23
23
  this.pendingRequests.set(requestId, (response) => {
24
- if (response.status === 'error') {
24
+ if (response.status === 'error')
25
25
  reject(new Error(response.error ?? 'Unknown error'));
26
- }
27
- else {
26
+ else
28
27
  resolve(response.payload);
29
- }
30
28
  });
31
29
  this.send(type, payload);
32
30
  setTimeout(() => {
@@ -38,12 +36,11 @@ export class BridgeBase {
38
36
  });
39
37
  }
40
38
  // --------------------
41
- // Listeners (typed)
39
+ // Listen to message
42
40
  // --------------------
43
41
  on(type, callback) {
44
- if (!this.listeners.has(type)) {
42
+ if (!this.listeners.has(type))
45
43
  this.listeners.set(type, []);
46
- }
47
44
  this.listeners.get(type).push(callback);
48
45
  }
49
46
  // --------------------
@@ -55,7 +52,7 @@ export class BridgeBase {
55
52
  const { type, payload } = event.data || {};
56
53
  if (!type)
57
54
  return;
58
- // Handle responses
55
+ // Handle DATA_RESPONSE automatically
59
56
  if (type === MessageType.DATA_RESPONSE) {
60
57
  const response = payload;
61
58
  const resolver = this.pendingRequests.get(response.requestId);
@@ -65,9 +62,18 @@ export class BridgeBase {
65
62
  return;
66
63
  }
67
64
  }
65
+ // Call all registered listeners
68
66
  const handlers = this.listeners.get(type);
69
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));
72
+ }
70
73
  }
74
+ // --------------------
75
+ // Cleanup
76
+ // --------------------
71
77
  destroy() {
72
78
  window.removeEventListener('message', this.boundHandler);
73
79
  this.listeners.clear();
@@ -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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"}
@@ -4,12 +4,12 @@ export declare class HostBridge extends BridgeBase {
4
4
  private handshakeCompleted;
5
5
  private handshakePayload;
6
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
- private heartbeatTimer?;
10
11
  startHeartbeat(interval?: number): void;
11
12
  stopHeartbeat(): void;
12
- private lastHeartbeat;
13
13
  listenHeartbeat(timeout?: number): void;
14
14
  startModule(payload: ModuleStartPayload, timeout?: number): void;
15
15
  sendModuleStart(payload: ModuleStartPayload): void;
@@ -18,6 +18,21 @@ export declare class HostBridge extends BridgeBase {
18
18
  onError(callback: (payload: ErrorPayload) => void): void;
19
19
  sendContextUpdate(payload: ModuleContextPayload): void;
20
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;
21
36
  reset(): void;
22
37
  }
23
38
  //# sourceMappingURL=hostBridge.d.ts.map
@@ -1 +1 @@
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,EAGtB,MAAM,kBAAkB,CAAA;AAGzB,qBAAa,UAAW,SAAQ,UAAU;IACxC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,mBAAmB,CAAkC;gBAEjD,MAAM,EAAE,iBAAiB,EAAE,YAAY,GAAE,MAAY;IAUnE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI;IA2BnE,OAAO,CAAC,cAAc,CAAC,CAAQ;IAE/B,cAAc,CAAC,QAAQ,SAAO;IAS9B,aAAa;IAOb,OAAO,CAAC,aAAa,CAAa;IAElC,eAAe,CAAC,OAAO,SAAQ;IAiB7B,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,SAAO;IAevD,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;IAOjD,iBAAiB,CAAC,OAAO,EAAE,oBAAoB;IAOhD,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,CAAC,EACX,OAAO,SAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAiBX,KAAK;CAKN"}
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"}
@@ -3,9 +3,8 @@ import { MessageType } from './messageTypes';
3
3
  import { PROTOCOL_VERSION } from './protocol';
4
4
  export class HostBridge extends BridgeBase {
5
5
  constructor(iframe, targetOrigin = '*') {
6
- if (!iframe.contentWindow) {
6
+ if (!iframe.contentWindow)
7
7
  throw new Error('Iframe has no contentWindow');
8
- }
9
8
  super(iframe.contentWindow, targetOrigin);
10
9
  this.handshakeCompleted = false;
11
10
  this.handshakePayload = null;
@@ -13,7 +12,7 @@ export class HostBridge extends BridgeBase {
13
12
  this.lastHeartbeat = Date.now();
14
13
  }
15
14
  // --------------------
16
- // Handshake (sticky)
15
+ // Handshake
17
16
  // --------------------
18
17
  onHandshakeReady(callback) {
19
18
  if (this.handshakeCompleted && this.handshakePayload) {
@@ -21,7 +20,6 @@ export class HostBridge extends BridgeBase {
21
20
  return;
22
21
  }
23
22
  this.on(MessageType.HANDSHAKE_READY, payload => {
24
- // ✅ payload is HandshakeReadyPayload
25
23
  if (payload.version !== PROTOCOL_VERSION) {
26
24
  console.warn(`Protocol mismatch: host=${PROTOCOL_VERSION}, module=${payload.version}`);
27
25
  }
@@ -34,6 +32,9 @@ export class HostBridge extends BridgeBase {
34
32
  }
35
33
  });
36
34
  }
35
+ // --------------------
36
+ // Heartbeat
37
+ // --------------------
37
38
  startHeartbeat(interval = 5000) {
38
39
  this.stopHeartbeat();
39
40
  this.heartbeatTimer = window.setInterval(() => {
@@ -58,7 +59,7 @@ export class HostBridge extends BridgeBase {
58
59
  }, timeout);
59
60
  }
60
61
  // --------------------
61
- // Start (idempotent)
62
+ // Module Start / Exit
62
63
  // --------------------
63
64
  startModule(payload, timeout = 5000) {
64
65
  if (this.handshakeCompleted) {
@@ -66,9 +67,7 @@ export class HostBridge extends BridgeBase {
66
67
  return;
67
68
  }
68
69
  this.pendingStartPayload = payload;
69
- const timer = setTimeout(() => {
70
- console.error('Module handshake timeout');
71
- }, timeout);
70
+ const timer = setTimeout(() => console.error('Module handshake timeout'), timeout);
72
71
  this.onHandshakeReady(() => clearTimeout(timer));
73
72
  }
74
73
  sendModuleStart(payload) {
@@ -86,9 +85,6 @@ export class HostBridge extends BridgeBase {
86
85
  onError(callback) {
87
86
  this.on(MessageType.ERROR, callback);
88
87
  }
89
- // --------------------
90
- // Context sync
91
- // --------------------
92
88
  sendContextUpdate(payload) {
93
89
  this.send(MessageType.CONTEXT_UPDATE, payload);
94
90
  }
@@ -104,7 +100,64 @@ export class HostBridge extends BridgeBase {
104
100
  return this.request(MessageType.DATA_REQUEST, request, timeout);
105
101
  }
106
102
  // --------------------
107
- // Reset (reconnect)
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
108
161
  // --------------------
109
162
  reset() {
110
163
  this.handshakeCompleted = false;
@@ -1 +1 @@
1
- {"version":3,"file":"hostBridge.js","sourceRoot":"","sources":["../src/hostBridge.ts"],"names":[],"mappings":"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"}
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"}
@@ -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,32 +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",
38
- HEARTBEAT = "heartbeat"
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:"
39
77
  }
40
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;IAEjC,SAAS,cAAc;CAExB"}
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,34 +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";
40
- // messageTypes.ts
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. */
41
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:";
42
105
  })(MessageType || (MessageType = {}));
43
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,WAmBX;AAnBD,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;IACjC,kBAAkB;IAClB,sCAAuB,CAAA;AAEzB,CAAC,EAnBW,WAAW,KAAX,WAAW,QAmBtB"}
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,5 +1,5 @@
1
1
  import { BridgeBase } from './bridgeBase';
2
- import { HandshakeReadyPayload, UIUpdatePayload, ErrorPayload, HeartbeatPayload } from './payloadSchemas';
2
+ import { HandshakeReadyPayload, UIUpdatePayload, ErrorPayload, HeartbeatPayload, LoadPagePayload, BreadcrumbPayload, NotificationPayload, DialogPayload, PermissionPayload, FeatureTogglePayload, PreloadResourcePayload, ResourceLoadedPayload } from './payloadSchemas';
3
3
  export declare class ModuleBridge extends BridgeBase {
4
4
  private startedPayload;
5
5
  constructor(targetOrigin?: string);
@@ -10,5 +10,21 @@ export declare class ModuleBridge extends BridgeBase {
10
10
  sendError(payload: ErrorPayload): void;
11
11
  requestData<T = any, R = any>(type: string, payload?: T, timeout?: number): Promise<R>;
12
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;
13
29
  }
14
30
  //# sourceMappingURL=moduleBridge.d.ts.map
@@ -1 +1 @@
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,EAEjB,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;IAc9C,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI;IAmB1D,YAAY,CAAC,OAAO,EAAE,eAAe;IAIrC,SAAS,CAAC,OAAO,EAAE,YAAY;IAO3B,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,CAAC,EACX,OAAO,SAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAyBX,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAE,SAAS,GAAG,OAAmB;CAQlF"}
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"}
@@ -12,12 +12,11 @@ export class ModuleBridge extends BridgeBase {
12
12
  this.send(MessageType.HANDSHAKE_READY, payload);
13
13
  }
14
14
  // --------------------
15
- // Start (sticky)
15
+ // Module Start
16
16
  // --------------------
17
17
  onModuleStart(callback) {
18
- if (this.startedPayload) {
18
+ if (this.startedPayload)
19
19
  callback(this.startedPayload);
20
- }
21
20
  this.on(MessageType.MODULE_START, payload => {
22
21
  this.startedPayload = payload;
23
22
  callback(payload);
@@ -29,14 +28,10 @@ export class ModuleBridge extends BridgeBase {
29
28
  onHeartbeat(callback) {
30
29
  this.on(MessageType.HEARTBEAT, (payload) => {
31
30
  const hb = payload;
32
- // Ignore ACK-only heartbeats
33
31
  if (hb.ack)
34
32
  return;
35
33
  callback?.(hb);
36
- this.send(MessageType.HEARTBEAT, {
37
- timestamp: Date.now(),
38
- ack: true
39
- });
34
+ this.send(MessageType.HEARTBEAT, { timestamp: Date.now(), ack: true });
40
35
  });
41
36
  }
42
37
  // --------------------
@@ -57,23 +52,68 @@ export class ModuleBridge extends BridgeBase {
57
52
  type,
58
53
  payload: payload
59
54
  };
60
- // Call base request (returns generic MessagePayload)
61
- const response = (await this.request(MessageType.DATA_REQUEST, request, timeout)); // Cast safely here
62
- if (response.status === 'error') {
55
+ const response = (await this.request(MessageType.DATA_REQUEST, request, timeout));
56
+ if (response.status === 'error')
63
57
  throw new Error(response.error || 'Unknown error from host');
64
- }
65
58
  return response.payload;
66
59
  }
67
- // --------------------
68
- // Respond to host requests
69
- // --------------------
70
60
  respondData(requestId, data, status = 'success') {
71
- const response = {
72
- requestId,
73
- status,
74
- payload: data
75
- };
61
+ const response = { requestId, status, payload: data };
76
62
  this.send(MessageType.DATA_RESPONSE, response);
77
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
+ }
78
118
  }
79
119
  //# sourceMappingURL=moduleBridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"moduleBridge.js","sourceRoot":"","sources":["../src/moduleBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAW5C,MAAM,OAAO,YAAa,SAAQ,UAAU;IAG1C,YAAY,eAAuB,GAAG;QACpC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAH5B,mBAAc,GAAe,IAAI,CAAA;IAIzC,CAAC;IAED,uBAAuB;IACvB,YAAY;IACZ,uBAAuB;IACvB,aAAa,CAAC,OAA8B;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,uBAAuB;IACvB,iBAAiB;IACjB,uBAAuB;IACvB,aAAa,CAAC,QAAgC;QAC5C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE;YAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;YAC7B,QAAQ,CAAC,OAAO,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,uBAAuB;IACvB,YAAY;IACZ,uBAAuB;IACvB,WAAW,CAAC,QAA8C;QACxD,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,OAAuB,EAAE,EAAE;YACzD,MAAM,EAAE,GAAG,OAA2B,CAAA;YAEtC,6BAA6B;YAC7B,IAAI,EAAE,CAAC,GAAG;gBAAE,OAAM;YAElB,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;YAEd,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;gBAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,GAAG,EAAE,IAAI;aACU,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,uBAAuB;IACvB,cAAc;IACd,uBAAuB;IACvB,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,uBAAuB;IACvB,WAAW;IACX,uBAAuB;IACzB,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,OAAW,EACX,OAAO,GAAG,IAAI;QAEd,MAAM,OAAO,GAAmB;YAC9B,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE;YAC9B,IAAI;YACJ,OAAO,EAAE,OAAc;SACxB,CAAA;QAED,qDAAqD;QACrD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAClC,WAAW,CAAC,YAAY,EACxB,OAAO,EACP,OAAO,CACR,CAAoB,CAAA,CAAC,mBAAmB;QAEzC,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,QAAQ,CAAC,OAAY,CAAA;IAC9B,CAAC;IAGC,uBAAuB;IACvB,2BAA2B;IAC3B,uBAAuB;IACvB,WAAW,CAAC,SAAiB,EAAE,IAAS,EAAE,SAA8B,SAAS;QAC/E,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;CACF"}
1
+ {"version":3,"file":"moduleBridge.js","sourceRoot":"","sources":["../src/moduleBridge.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { MessageType } from './messageTypes';
1
2
  export interface HandshakeReadyPayload {
2
3
  version: string;
3
4
  timestamp: number;
@@ -39,16 +40,46 @@ export interface ResponsePayload {
39
40
  payload?: any;
40
41
  error?: string;
41
42
  }
42
- /**
43
- * Payload for heartbeat messages.
44
- * Host ↔ Module
45
- */
46
43
  export interface HeartbeatPayload {
47
44
  timestamp: number;
48
45
  ack?: boolean;
49
46
  }
50
- export type MessagePayload = HandshakeReadyPayload | ModuleStartPayload | ModuleExitPayload | UIUpdatePayload | ErrorPayload | ModuleContextPayload | RequestPayload | ResponsePayload | HeartbeatPayload;
51
- import { MessageType } from './messageTypes';
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;
52
83
  export interface MessagePayloadMap {
53
84
  [MessageType.HANDSHAKE_READY]: HandshakeReadyPayload;
54
85
  [MessageType.MODULE_START]: ModuleStartPayload;
@@ -59,5 +90,22 @@ export interface MessagePayloadMap {
59
90
  [MessageType.DATA_REQUEST]: RequestPayload;
60
91
  [MessageType.DATA_RESPONSE]: ResponsePayload;
61
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;
62
110
  }
63
111
  //# sourceMappingURL=payloadSchemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloadSchemas.d.ts","sourceRoot":"","sources":["../src/payloadSchemas.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,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,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED,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,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED,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;AAGD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,eAAe,GACf,YAAY,GACZ,oBAAoB,GACpB,cAAc,GACd,eAAe,GACf,gBAAgB,CAAA;AAGpB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,WAAW,iBAAiB;IAChC,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,qBAAqB,CAAA;IACpD,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;IAC9C,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC5C,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,eAAe,CAAA;IACxC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IACjC,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAA;IAClD,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,cAAc,CAAA;IAC1C,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,eAAe,CAAA;IAC5C,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAA;CAC1C"}
1
+ {"version":3,"file":"payloadSchemas.d.ts","sourceRoot":"","sources":["../src/payloadSchemas.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ // src/payloadSchemas.ts
1
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":"AAuEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"payloadSchemas.js","sourceRoot":"","sources":["../src/payloadSchemas.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schoolpalm/message-bridge",
3
- "version": "1.3.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",