@proj-airi/server-sdk 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -9,16 +9,37 @@ const WebSocket__default = /*#__PURE__*/_interopDefaultCompat(WebSocket);
9
9
 
10
10
  class Client {
11
11
  websocket;
12
+ eventListeners = /* @__PURE__ */ new Map();
12
13
  constructor(options) {
13
14
  const opts = defu.defu(options, { url: "ws://localhost:6121/ws", possibleEvents: [] });
14
15
  this.websocket = new WebSocket__default(opts.url);
15
- this.send({
16
- type: "module:announce",
17
- data: {
18
- name: opts.name,
19
- possibleEvents: opts.possibleEvents
20
- }
21
- });
16
+ this.websocket.onmessage = this.handleMessage.bind(this);
17
+ this.websocket.onopen = () => {
18
+ this.send({
19
+ type: "module:announce",
20
+ data: {
21
+ name: opts.name,
22
+ possibleEvents: opts.possibleEvents
23
+ }
24
+ });
25
+ };
26
+ }
27
+ async handleMessage(event) {
28
+ const data = JSON.parse(event.data);
29
+ const listeners = this.eventListeners.get(data.type);
30
+ if (!listeners)
31
+ return;
32
+ for (const listener of listeners) {
33
+ await listener(data);
34
+ }
35
+ }
36
+ onEvent(event, callback) {
37
+ if (!this.eventListeners.get(event)) {
38
+ this.eventListeners.set(event, []);
39
+ }
40
+ const listeners = this.eventListeners.get(event);
41
+ listeners.push(callback);
42
+ this.eventListeners.set(event, listeners);
22
43
  }
23
44
  send(data) {
24
45
  this.websocket.send(JSON.stringify(data));
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { WebSocketEvents, WebSocketEvent } from '@proj-airi/server-shared/types';
1
+ import { WebSocketEvents, WebSocketBaseEvent, WebSocketEvent } from '@proj-airi/server-shared/types';
2
2
  import { Blob } from 'node:buffer';
3
3
 
4
4
  interface ClientOptions {
@@ -8,7 +8,10 @@ interface ClientOptions {
8
8
  }
9
9
  declare class Client {
10
10
  private websocket;
11
+ private eventListeners;
11
12
  constructor(options: ClientOptions);
13
+ private handleMessage;
14
+ onEvent<E extends keyof WebSocketEvents>(event: E, callback: (data: WebSocketBaseEvent<E, WebSocketEvents[E]>) => void | Promise<void>): void;
12
15
  send(data: WebSocketEvent): void;
13
16
  sendRaw(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
14
17
  }
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { WebSocketEvents, WebSocketEvent } from '@proj-airi/server-shared/types';
1
+ import { WebSocketEvents, WebSocketBaseEvent, WebSocketEvent } from '@proj-airi/server-shared/types';
2
2
  import { Blob } from 'node:buffer';
3
3
 
4
4
  interface ClientOptions {
@@ -8,7 +8,10 @@ interface ClientOptions {
8
8
  }
9
9
  declare class Client {
10
10
  private websocket;
11
+ private eventListeners;
11
12
  constructor(options: ClientOptions);
13
+ private handleMessage;
14
+ onEvent<E extends keyof WebSocketEvents>(event: E, callback: (data: WebSocketBaseEvent<E, WebSocketEvents[E]>) => void | Promise<void>): void;
12
15
  send(data: WebSocketEvent): void;
13
16
  sendRaw(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
14
17
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { WebSocketEvents, WebSocketEvent } from '@proj-airi/server-shared/types';
1
+ import { WebSocketEvents, WebSocketBaseEvent, WebSocketEvent } from '@proj-airi/server-shared/types';
2
2
  import { Blob } from 'node:buffer';
3
3
 
4
4
  interface ClientOptions {
@@ -8,7 +8,10 @@ interface ClientOptions {
8
8
  }
9
9
  declare class Client {
10
10
  private websocket;
11
+ private eventListeners;
11
12
  constructor(options: ClientOptions);
13
+ private handleMessage;
14
+ onEvent<E extends keyof WebSocketEvents>(event: E, callback: (data: WebSocketBaseEvent<E, WebSocketEvents[E]>) => void | Promise<void>): void;
12
15
  send(data: WebSocketEvent): void;
13
16
  sendRaw(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
14
17
  }
package/dist/index.mjs CHANGED
@@ -3,16 +3,37 @@ import { defu } from 'defu';
3
3
 
4
4
  class Client {
5
5
  websocket;
6
+ eventListeners = /* @__PURE__ */ new Map();
6
7
  constructor(options) {
7
8
  const opts = defu(options, { url: "ws://localhost:6121/ws", possibleEvents: [] });
8
9
  this.websocket = new WebSocket(opts.url);
9
- this.send({
10
- type: "module:announce",
11
- data: {
12
- name: opts.name,
13
- possibleEvents: opts.possibleEvents
14
- }
15
- });
10
+ this.websocket.onmessage = this.handleMessage.bind(this);
11
+ this.websocket.onopen = () => {
12
+ this.send({
13
+ type: "module:announce",
14
+ data: {
15
+ name: opts.name,
16
+ possibleEvents: opts.possibleEvents
17
+ }
18
+ });
19
+ };
20
+ }
21
+ async handleMessage(event) {
22
+ const data = JSON.parse(event.data);
23
+ const listeners = this.eventListeners.get(data.type);
24
+ if (!listeners)
25
+ return;
26
+ for (const listener of listeners) {
27
+ await listener(data);
28
+ }
29
+ }
30
+ onEvent(event, callback) {
31
+ if (!this.eventListeners.get(event)) {
32
+ this.eventListeners.set(event, []);
33
+ }
34
+ const listeners = this.eventListeners.get(event);
35
+ listeners.push(callback);
36
+ this.eventListeners.set(event, listeners);
16
37
  }
17
38
  send(data) {
18
39
  this.websocket.send(JSON.stringify(data));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@proj-airi/server-sdk",
3
3
  "type": "module",
4
- "version": "0.1.2",
4
+ "version": "0.1.3",
5
5
  "private": false,
6
6
  "description": "Client-side SDK implementation for connecting to Airi server components and runtimes",
7
7
  "author": {
@@ -33,7 +33,7 @@
33
33
  "dependencies": {
34
34
  "crossws": "^0.3.1",
35
35
  "defu": "^6.1.4",
36
- "@proj-airi/server-shared": "^0.1.2"
36
+ "@proj-airi/server-shared": "^0.1.3"
37
37
  },
38
38
  "scripts": {
39
39
  "dev": "pnpm run stub",