@enfyra/sdk-nuxt 0.4.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.cjs CHANGED
@@ -86,14 +86,9 @@ declare module '#imports' {
86
86
 
87
87
  export function useEnfyraAuth(): import('@enfyra/sdk-nuxt/types').UseEnfyraAuthReturn
88
88
 
89
- export function useEnfyraWebSocket(options: { path: string; reconnect?: boolean; reconnectInterval?: number; maxReconnectAttempts?: number }): {
90
- connect: () => WebSocket
91
- send: (event: string, data?: any) => void
92
- close: () => void
93
- getWebSocket: () => WebSocket | null
94
- on: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void
95
- off: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void
96
- }
89
+ export type EnfyraWebSocketInstance = import('@enfyra/sdk-nuxt/types').EnfyraWebSocketInstance
90
+
91
+ export function useEnfyraWebSocket(path: string, options?: { reconnect?: boolean; reconnectInterval?: number; maxReconnectAttempts?: number }): EnfyraWebSocketInstance
97
92
  }
98
93
  `
99
94
  });
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;AAED,wBA0IG"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;AAED,wBAqIG"}
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=3.0.0"
6
6
  },
7
- "version": "0.4.2",
7
+ "version": "0.6.0",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "0.8.4",
10
10
  "unbuild": "2.0.0"
package/dist/module.mjs CHANGED
@@ -83,14 +83,9 @@ declare module '#imports' {
83
83
 
84
84
  export function useEnfyraAuth(): import('@enfyra/sdk-nuxt/types').UseEnfyraAuthReturn
85
85
 
86
- export function useEnfyraWebSocket(options: { path: string; reconnect?: boolean; reconnectInterval?: number; maxReconnectAttempts?: number }): {
87
- connect: () => WebSocket
88
- send: (event: string, data?: any) => void
89
- close: () => void
90
- getWebSocket: () => WebSocket | null
91
- on: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void
92
- off: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void
93
- }
86
+ export type EnfyraWebSocketInstance = import('@enfyra/sdk-nuxt/types').EnfyraWebSocketInstance
87
+
88
+ export function useEnfyraWebSocket(path: string, options?: { reconnect?: boolean; reconnectInterval?: number; maxReconnectAttempts?: number }): EnfyraWebSocketInstance
94
89
  }
95
90
  `
96
91
  });
@@ -1,16 +1,16 @@
1
1
  export interface EnfyraWebSocketOptions {
2
- path: string;
3
2
  reconnect?: boolean;
4
3
  reconnectInterval?: number;
5
4
  maxReconnectAttempts?: number;
6
5
  }
7
- export interface EnfyraWebSocketReturn {
8
- connect: () => WebSocket;
9
- send: (event: string, data?: any) => void;
6
+ export interface EnfyraWebSocketInstance {
7
+ connect: () => void;
10
8
  close: () => void;
9
+ send: (event: string, data?: any) => void;
10
+ on: (event: string, callback: (...args: any[]) => void) => void;
11
+ off: (event: string, callback: (...args: any[]) => void) => void;
11
12
  getWebSocket: () => WebSocket | null;
12
- on: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void;
13
- off: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void;
13
+ isConnected: () => boolean;
14
14
  }
15
- export declare function useEnfyraWebSocket(options: EnfyraWebSocketOptions): EnfyraWebSocketReturn;
15
+ export declare function useEnfyraWebSocket(path: string, options?: EnfyraWebSocketOptions): EnfyraWebSocketInstance;
16
16
  //# sourceMappingURL=useEnfyraWebSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEnfyraWebSocket.d.ts","sourceRoot":"","sources":["../../../src/runtime/composables/useEnfyraWebSocket.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,SAAS,CAAC;IACzB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,YAAY,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IACrC,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IAChG,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CAClG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAiGzF"}
1
+ {"version":3,"file":"useEnfyraWebSocket.d.ts","sourceRoot":"","sources":["../../../src/runtime/composables/useEnfyraWebSocket.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IAChE,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IACjE,YAAY,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,OAAO,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,uBAAuB,CA2G9G"}
@@ -1,27 +1,34 @@
1
1
  import { useRuntimeConfig } from "#imports";
2
2
  import { normalizeUrl } from "../utils/url.js";
3
- export function useEnfyraWebSocket(options) {
3
+ export function useEnfyraWebSocket(path, options = {}) {
4
4
  const config = useRuntimeConfig().public.enfyraSDK;
5
5
  const apiUrl = config?.apiUrl || process.env.API_URL || "http://localhost:1105";
6
6
  let ws = null;
7
7
  let reconnectTimer = null;
8
8
  let reconnectAttempts = 0;
9
9
  const listeners = /* @__PURE__ */ new Map();
10
- const getWsUrl = (path) => {
10
+ const getWsUrl = (path2) => {
11
11
  const url = apiUrl.replace(/^http/, "ws");
12
- return normalizeUrl(url, path);
12
+ return normalizeUrl(url, path2);
13
13
  };
14
14
  const connect = () => {
15
15
  if (ws && ws.readyState === WebSocket.OPEN) {
16
- return ws;
16
+ return;
17
17
  }
18
- ws = new WebSocket(getWsUrl(options.path));
18
+ ws = new WebSocket(getWsUrl(path));
19
19
  ws.onopen = () => {
20
20
  reconnectAttempts = 0;
21
21
  emit("open");
22
22
  };
23
23
  ws.onmessage = (event) => {
24
- emit("message", event.data);
24
+ try {
25
+ const parsed = JSON.parse(event.data);
26
+ const eventName = parsed.event || "message";
27
+ emit(eventName, parsed.data);
28
+ emit("message", parsed);
29
+ } catch {
30
+ emit("message", event.data);
31
+ }
25
32
  };
26
33
  ws.onclose = () => {
27
34
  emit("close");
@@ -35,7 +42,6 @@ export function useEnfyraWebSocket(options) {
35
42
  ws.onerror = (error) => {
36
43
  emit("error", error);
37
44
  };
38
- return ws;
39
45
  };
40
46
  const send = (event, data) => {
41
47
  if (!ws || ws.readyState !== WebSocket.OPEN) {
@@ -55,6 +61,9 @@ export function useEnfyraWebSocket(options) {
55
61
  }
56
62
  };
57
63
  const getWebSocket = () => ws;
64
+ const isConnected = () => {
65
+ return ws !== null && ws.readyState === WebSocket.OPEN;
66
+ };
58
67
  const on = (event, callback) => {
59
68
  if (!listeners.has(event)) {
60
69
  listeners.set(event, /* @__PURE__ */ new Set());
@@ -78,6 +87,7 @@ export function useEnfyraWebSocket(options) {
78
87
  send,
79
88
  close,
80
89
  getWebSocket,
90
+ isConnected,
81
91
  on,
82
92
  off
83
93
  };
@@ -140,4 +140,13 @@ export interface UseEnfyraApiClientReturn<T> {
140
140
  execute: (executeOpts?: ExecuteOptions) => Promise<T | T[] | null>;
141
141
  }
142
142
  export * from './auth';
143
+ export interface EnfyraWebSocketInstance {
144
+ connect: () => void;
145
+ close: () => void;
146
+ send: (event: string, data?: any) => void;
147
+ on: (event: string, callback: (...args: any[]) => void) => void;
148
+ off: (event: string, callback: (...args: any[]) => void) => void;
149
+ getWebSocket: () => WebSocket | null;
150
+ isConnected: () => boolean;
151
+ }
143
152
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enfyra/sdk-nuxt",
3
- "version": "0.4.2",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "description": "Nuxt SDK for Enfyra CMS",
6
6
  "repository": {
package/src/module.ts CHANGED
@@ -114,14 +114,9 @@ declare module '#imports' {
114
114
 
115
115
  export function useEnfyraAuth(): import('@enfyra/sdk-nuxt/types').UseEnfyraAuthReturn
116
116
 
117
- export function useEnfyraWebSocket(options: { path: string; reconnect?: boolean; reconnectInterval?: number; maxReconnectAttempts?: number }): {
118
- connect: () => WebSocket
119
- send: (event: string, data?: any) => void
120
- close: () => void
121
- getWebSocket: () => WebSocket | null
122
- on: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void
123
- off: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void
124
- }
117
+ export type EnfyraWebSocketInstance = import('@enfyra/sdk-nuxt/types').EnfyraWebSocketInstance
118
+
119
+ export function useEnfyraWebSocket(path: string, options?: { reconnect?: boolean; reconnectInterval?: number; maxReconnectAttempts?: number }): EnfyraWebSocketInstance
125
120
  }
126
121
  `,
127
122
  });
@@ -2,22 +2,22 @@ import { useRuntimeConfig } from "#imports";
2
2
  import { normalizeUrl } from "../utils/url";
3
3
 
4
4
  export interface EnfyraWebSocketOptions {
5
- path: string;
6
5
  reconnect?: boolean;
7
6
  reconnectInterval?: number;
8
7
  maxReconnectAttempts?: number;
9
8
  }
10
9
 
11
- export interface EnfyraWebSocketReturn {
12
- connect: () => WebSocket;
13
- send: (event: string, data?: any) => void;
10
+ export interface EnfyraWebSocketInstance {
11
+ connect: () => void;
14
12
  close: () => void;
13
+ send: (event: string, data?: any) => void;
14
+ on: (event: string, callback: (...args: any[]) => void) => void;
15
+ off: (event: string, callback: (...args: any[]) => void) => void;
15
16
  getWebSocket: () => WebSocket | null;
16
- on: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void;
17
- off: (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void) => void;
17
+ isConnected: () => boolean;
18
18
  }
19
19
 
20
- export function useEnfyraWebSocket(options: EnfyraWebSocketOptions): EnfyraWebSocketReturn {
20
+ export function useEnfyraWebSocket(path: string, options: EnfyraWebSocketOptions = {}): EnfyraWebSocketInstance {
21
21
  const config = useRuntimeConfig().public.enfyraSDK;
22
22
  const apiUrl = config?.apiUrl || process.env.API_URL || 'http://localhost:1105';
23
23
 
@@ -31,12 +31,12 @@ export function useEnfyraWebSocket(options: EnfyraWebSocketOptions): EnfyraWebSo
31
31
  return normalizeUrl(url, path);
32
32
  };
33
33
 
34
- const connect = (): WebSocket => {
34
+ const connect = (): void => {
35
35
  if (ws && ws.readyState === WebSocket.OPEN) {
36
- return ws;
36
+ return;
37
37
  }
38
38
 
39
- ws = new WebSocket(getWsUrl(options.path));
39
+ ws = new WebSocket(getWsUrl(path));
40
40
 
41
41
  ws.onopen = () => {
42
42
  reconnectAttempts = 0;
@@ -44,7 +44,14 @@ export function useEnfyraWebSocket(options: EnfyraWebSocketOptions): EnfyraWebSo
44
44
  };
45
45
 
46
46
  ws.onmessage = (event: MessageEvent) => {
47
- emit('message', event.data);
47
+ try {
48
+ const parsed = JSON.parse(event.data);
49
+ const eventName = parsed.event || 'message';
50
+ emit(eventName, parsed.data);
51
+ emit('message', parsed);
52
+ } catch {
53
+ emit('message', event.data);
54
+ }
48
55
  };
49
56
 
50
57
  ws.onclose = () => {
@@ -60,8 +67,6 @@ export function useEnfyraWebSocket(options: EnfyraWebSocketOptions): EnfyraWebSo
60
67
  ws.onerror = (error: Event) => {
61
68
  emit('error', error);
62
69
  };
63
-
64
- return ws;
65
70
  };
66
71
 
67
72
  const send = (event: string, data?: any): void => {
@@ -85,14 +90,18 @@ export function useEnfyraWebSocket(options: EnfyraWebSocketOptions): EnfyraWebSo
85
90
 
86
91
  const getWebSocket = (): WebSocket | null => ws;
87
92
 
88
- const on = (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void): void => {
93
+ const isConnected = (): boolean => {
94
+ return ws !== null && ws.readyState === WebSocket.OPEN;
95
+ };
96
+
97
+ const on = (event: string, callback: (...args: any[]) => void): void => {
89
98
  if (!listeners.has(event)) {
90
99
  listeners.set(event, new Set());
91
100
  }
92
101
  listeners.get(event)!.add(callback);
93
102
  };
94
103
 
95
- const off = (event: 'message' | 'open' | 'close' | 'error', callback: (...args: any[]) => void): void => {
104
+ const off = (event: string, callback: (...args: any[]) => void): void => {
96
105
  const eventListeners = listeners.get(event);
97
106
  if (eventListeners) {
98
107
  eventListeners.delete(callback);
@@ -111,6 +120,7 @@ export function useEnfyraWebSocket(options: EnfyraWebSocketOptions): EnfyraWebSo
111
120
  send,
112
121
  close,
113
122
  getWebSocket,
123
+ isConnected,
114
124
  on,
115
125
  off,
116
126
  };
@@ -163,3 +163,13 @@ export interface UseEnfyraApiClientReturn<T> {
163
163
 
164
164
  export * from './auth';
165
165
 
166
+ export interface EnfyraWebSocketInstance {
167
+ connect: () => void;
168
+ close: () => void;
169
+ send: (event: string, data?: any) => void;
170
+ on: (event: string, callback: (...args: any[]) => void) => void;
171
+ off: (event: string, callback: (...args: any[]) => void) => void;
172
+ getWebSocket: () => WebSocket | null;
173
+ isConnected: () => boolean;
174
+ }
175
+