unreal-toolkit-next 0.1.8 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -16,3 +16,14 @@ npm install unreal-toolkit-next
16
16
  ```javascript
17
17
  import UnrealToolkit from 'unreal-toolkit';
18
18
  ```
19
+
20
+ * Unreal Toolkit Message Bus Usage
21
+ ```typescript
22
+ // Post window message
23
+ UnrealToolkit.EventBus.PostWindowMessage("myevent", ["Hello World!"]);
24
+
25
+ // Handle window message
26
+ UnrealToolkit.EventBus.OnWindowMessage("myevent", (args:string[]) => {
27
+ console.log("My Event Args: ", args);
28
+ });
29
+ ```
package/dist/index.d.ts CHANGED
@@ -8,13 +8,13 @@ export declare class UnrealToolkit {
8
8
  /** Unreal Toolkit event message bus
9
9
  * @example
10
10
  * ```typescript
11
- * // Handle myevent message
12
- * UnrealToolkit.EventBus.OnMessage("myevent", (data:string) => {
13
- * console.log("My Event Data: " + data);
14
- * });
11
+ * // Post myevent window message
12
+ * UnrealToolkit.EventBus.PostWindowMessage("myevent", ["Hello World!"]);
15
13
  *
16
- * // Post myevent message
17
- * UnrealToolkit.EventBus.PostMessage("myevent", "Hello World!");
14
+ * // Handle myevent window message
15
+ * UnrealToolkit.EventBus.OnWindowMessage("myevent", (args:string[]) => {
16
+ * console.log("My Event Args: ", args);
17
+ * });
18
18
  * ```
19
19
  */
20
20
  static get EventBus(): UnrealMessageBus;
@@ -24,29 +24,27 @@ export declare class UnrealToolkit {
24
24
  * @class UnrealMessageBus - All rights reserved (c) 2024 Mackey Kinard
25
25
  */
26
26
  export declare class UnrealMessageBus {
27
- /** Unreal Message Bus API Key */
28
- static ApiKey: string;
27
+ static AllowedOrigin: string;
28
+ static TargetOrigin: string;
29
29
  constructor();
30
- /** Handle event bus message
31
- * @param message The message to handle
32
- * @param data The data to handle
30
+ /** Post event bus message
31
+ * @param name The message to post
32
+ * @param args The args to post
33
33
  * @returns void
34
34
  */
35
- OnMessage(message: string, handler: (data: string) => void): void;
36
- /** Post event bus message
37
- * @param message The message to post
38
- * @param data The data to post
39
- * @param target The target to post
40
- * @param transfer The transfer to post
35
+ PostWindowMessage(name: string, args?: string[]): void;
36
+ /** Handle event bus message
37
+ * @param name The name to handle
38
+ * @param args The args to handle
41
39
  * @returns void
42
40
  */
43
- PostMessage(message: string, data?: string): void;
41
+ OnWindowMessage(name: string, handler: (args: string[]) => void): void;
44
42
  /** Remove event bus message handler
45
43
  * @param message The message to remove
46
44
  * @param handler The handler to remove
47
45
  * @returns void
48
46
  */
49
- RemoveHandler(message: string, handler: (data: string) => void): void;
47
+ RemoveHandler(message: string, handler: (args: string[]) => void): void;
50
48
  /** Clear and reset all event bus message handlers
51
49
  * @returns void
52
50
  */
@@ -61,8 +59,8 @@ export declare class UnrealMessageBus {
61
59
  */
62
60
  private HandleWindowMessage;
63
61
  /** Dispatch internal event bus message
64
- * @param message The message to dispatch
65
- * @param data The data to dispatch
62
+ * @param name The name to dispatch
63
+ * @param args The args to dispatch
66
64
  * @returns void
67
65
  */
68
66
  private OnDispatchMessage;
package/dist/index.js CHANGED
@@ -7,13 +7,13 @@ export class UnrealToolkit {
7
7
  /** Unreal Toolkit event message bus
8
8
  * @example
9
9
  * ```typescript
10
- * // Handle myevent message
11
- * UnrealToolkit.EventBus.OnMessage("myevent", (data:string) => {
12
- * console.log("My Event Data: " + data);
13
- * });
10
+ * // Post myevent window message
11
+ * UnrealToolkit.EventBus.PostWindowMessage("myevent", ["Hello World!"]);
14
12
  *
15
- * // Post myevent message
16
- * UnrealToolkit.EventBus.PostMessage("myevent", "Hello World!");
13
+ * // Handle myevent window message
14
+ * UnrealToolkit.EventBus.OnWindowMessage("myevent", (args:string[]) => {
15
+ * console.log("My Event Args: ", args);
16
+ * });
17
17
  * ```
18
18
  */
19
19
  static get EventBus() {
@@ -30,45 +30,40 @@ UnrealToolkit._EventBus = null;
30
30
  export class UnrealMessageBus {
31
31
  constructor() {
32
32
  this.ListenerDictionary = {};
33
- if (window && window.top) {
34
- this.HandleWindowMessage = this.HandleWindowMessage.bind(this);
35
- window.top.addEventListener("message", this.HandleWindowMessage);
33
+ this.HandleWindowMessage = this.HandleWindowMessage.bind(this);
34
+ window.top.addEventListener("message", this.HandleWindowMessage);
35
+ }
36
+ /** Post event bus message
37
+ * @param name The message to post
38
+ * @param args The args to post
39
+ * @returns void
40
+ */
41
+ PostWindowMessage(name, args) {
42
+ try {
43
+ window.top.postMessage({ source: "unrealtoolkit", message: name, args: args }, UnrealMessageBus.TargetOrigin);
36
44
  }
37
- else {
38
- console.warn("UnrealMessageBus: No Top Window Available");
45
+ catch (e) {
46
+ console.warn(e);
39
47
  }
40
48
  }
41
49
  /** Handle event bus message
42
- * @param message The message to handle
43
- * @param data The data to handle
50
+ * @param name The name to handle
51
+ * @param args The args to handle
44
52
  * @returns void
45
53
  */
46
- OnMessage(message, handler) {
54
+ OnWindowMessage(name, handler) {
47
55
  let listeners;
48
- if (this.ListenerDictionary[message] == null) {
56
+ if (this.ListenerDictionary[name] == null) {
49
57
  listeners = [];
50
- this.ListenerDictionary[message] = listeners;
58
+ this.ListenerDictionary[name] = listeners;
51
59
  }
52
60
  else {
53
- listeners = this.ListenerDictionary[message];
61
+ listeners = this.ListenerDictionary[name];
54
62
  }
55
63
  const index = listeners.findIndex((e) => { return handler == e; });
56
64
  if (index < 0)
57
65
  listeners.push(handler);
58
66
  }
59
- /** Post event bus message
60
- * @param message The message to post
61
- * @param data The data to post
62
- * @param target The target to post
63
- * @param transfer The transfer to post
64
- * @returns void
65
- */
66
- PostMessage(message, data) {
67
- if (window && window.top)
68
- window.top.postMessage({ source: "unrealmessagebus", message: message, data: data, key: UnrealMessageBus.ApiKey });
69
- else
70
- console.warn("UnrealMessageBus: No Top Window Available");
71
- }
72
67
  /** Remove event bus message handler
73
68
  * @param message The message to remove
74
69
  * @param handler The handler to remove
@@ -93,43 +88,46 @@ export class UnrealMessageBus {
93
88
  */
94
89
  Dispose() {
95
90
  this.ResetHandlers();
96
- if (window && window.top)
97
- window.top.removeEventListener("message", this.HandleWindowMessage);
91
+ window.top.removeEventListener("message", this.HandleWindowMessage);
98
92
  }
99
93
  /** Handle window message event
100
94
  * @param event The message event to handle
101
95
  * @returns void
102
96
  */
103
97
  HandleWindowMessage(event) {
104
- if (event != null && event.data != null && event.data.message != null && event.data.source != null && event.data.source == "unrealmessagebus") {
105
- const apiKeyRequired = (UnrealMessageBus.ApiKey != null && UnrealMessageBus.ApiKey !== "");
106
- if (apiKeyRequired === true && (event.data.key == null || event.data.key === "" || event.data.key != UnrealMessageBus.ApiKey)) {
107
- console.warn("UnrealMessageBus: Missing Or Invalid API Key");
98
+ if (event == null || event.origin == null || event.data == null || event.data.source == null || event.data.message == null)
99
+ return;
100
+ try {
101
+ if (UnrealMessageBus.AllowedOrigin != null && UnrealMessageBus.AllowedOrigin !== "" && UnrealMessageBus.AllowedOrigin !== "*" && event.origin !== UnrealMessageBus.AllowedOrigin) {
102
+ console.warn("UnrealMessageBus: Invalid Origin: " + event.origin);
108
103
  return;
109
104
  }
110
- this.OnDispatchMessage(event.data.message, (event.data.data != null) ? event.data.data : null);
105
+ this.OnDispatchMessage(event.data.message, (event.data.args != null) ? event.data.args : null);
106
+ }
107
+ catch (e) {
108
+ console.warn(e);
111
109
  }
112
110
  }
113
111
  /** Dispatch internal event bus message
114
- * @param message The message to dispatch
115
- * @param data The data to dispatch
112
+ * @param name The name to dispatch
113
+ * @param args The args to dispatch
116
114
  * @returns void
117
115
  */
118
- OnDispatchMessage(message, data = null) {
119
- const listeners = this.ListenerDictionary[message];
116
+ OnDispatchMessage(name, args = null) {
117
+ const listeners = this.ListenerDictionary[name];
120
118
  if (listeners == null)
121
119
  return;
122
120
  listeners.forEach((listener) => { try {
123
121
  if (listener)
124
- listener(data);
122
+ listener(args);
125
123
  }
126
124
  catch (e) {
127
125
  console.warn(e);
128
126
  } });
129
127
  }
130
128
  }
131
- /** Unreal Message Bus API Key */
132
- UnrealMessageBus.ApiKey = null;
129
+ UnrealMessageBus.AllowedOrigin = "*";
130
+ UnrealMessageBus.TargetOrigin = "*";
133
131
  /** Unreal Toolkit Runtime Module */
134
132
  console.log("Unreal Toolkit Runtime - Version 0.1.8");
135
133
  export default UnrealToolkit;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unreal-toolkit-next",
3
- "version": "0.1.8",
3
+ "version": "0.1.12",
4
4
  "description": "Unreal Toolkit Runtime Library (ES6)",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",