kalze-ws 1.0.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/README.md ADDED
@@ -0,0 +1,211 @@
1
+ # kalze-ws
2
+
3
+ Official WebSocket client for [websocket.cl](https://websocket.cl) - Real-time connections made easy.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install kalze-ws
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import Kalze from 'kalze-ws'
15
+
16
+ // Initialize client with your credentials
17
+ const kalze = new Kalze({
18
+ key: 'wpk_live_your_public_key',
19
+ subdomain: 'your-subdomain',
20
+ })
21
+
22
+ // Subscribe to a channel
23
+ const channel = kalze.subscribe('my-channel')
24
+
25
+ // Listen for events
26
+ channel.on('connected', (data) => {
27
+ console.log('Connected!', data.socketId)
28
+ })
29
+
30
+ channel.on('my-event', (data) => {
31
+ console.log('Received:', data)
32
+ })
33
+
34
+ // Handle disconnection
35
+ channel.on('disconnected', ({ code, reason }) => {
36
+ console.log('Disconnected:', code, reason)
37
+ })
38
+ ```
39
+
40
+ ## Configuration Options
41
+
42
+ ```typescript
43
+ const kalze = new Kalze({
44
+ // Required
45
+ key: 'wpk_live_...', // Your public API key
46
+ subdomain: 'your-subdomain', // Your subdomain
47
+
48
+ // Optional
49
+ wsUrl: 'wss://ws.websocket.cl', // WebSocket server URL
50
+ autoReconnect: true, // Auto reconnect on disconnect
51
+ maxReconnectAttempts: 10, // Max reconnect attempts
52
+ reconnectDelay: 1000, // Base delay between reconnects (ms)
53
+ debug: false, // Enable debug logging
54
+ })
55
+ ```
56
+
57
+ ## Channel API
58
+
59
+ ### Subscribing to Events
60
+
61
+ ```typescript
62
+ const channel = kalze.subscribe('notifications')
63
+
64
+ // Subscribe to a specific event
65
+ channel.on('new-notification', (data) => {
66
+ console.log('New notification:', data)
67
+ })
68
+
69
+ // Subscribe to all events (wildcard)
70
+ channel.on('*', ({ event, data }) => {
71
+ console.log(`Event: ${event}`, data)
72
+ })
73
+
74
+ // Subscribe once
75
+ channel.once('welcome', (data) => {
76
+ console.log('Welcome message:', data)
77
+ })
78
+ ```
79
+
80
+ ### Unsubscribing
81
+
82
+ ```typescript
83
+ // Unsubscribe specific callback
84
+ const unsubscribe = channel.on('event', callback)
85
+ unsubscribe() // or channel.off('event', callback)
86
+
87
+ // Unsubscribe all listeners for an event
88
+ channel.off('event')
89
+
90
+ // Disconnect from channel
91
+ channel.disconnect()
92
+ ```
93
+
94
+ ### Client Events
95
+
96
+ Send events to other clients on the same channel:
97
+
98
+ ```typescript
99
+ channel.trigger({
100
+ type: 'cursor-move',
101
+ x: 100,
102
+ y: 200
103
+ })
104
+ ```
105
+
106
+ ### Connection State
107
+
108
+ ```typescript
109
+ // Check if connected
110
+ if (channel.isConnected()) {
111
+ // ...
112
+ }
113
+
114
+ // Get socket ID
115
+ const socketId = channel.getSocketId()
116
+
117
+ // Get connection state
118
+ const state = channel.getState() // 'connecting' | 'connected' | 'disconnected' | 'reconnecting'
119
+
120
+ // Listen for state changes
121
+ channel.on('state:change', ({ state }) => {
122
+ console.log('State:', state)
123
+ })
124
+ ```
125
+
126
+ ### System Events
127
+
128
+ ```typescript
129
+ // Connection established
130
+ channel.on('connected', ({ socketId, channel, subdomain }) => {})
131
+
132
+ // Disconnected
133
+ channel.on('disconnected', ({ code, reason }) => {})
134
+
135
+ // Reconnecting
136
+ channel.on('reconnecting', ({ attempt, delay }) => {})
137
+
138
+ // Reconnection failed
139
+ channel.on('reconnect:failed', ({ attempts }) => {})
140
+
141
+ // Error
142
+ channel.on('error', ({ message }) => {})
143
+ ```
144
+
145
+ ## Multiple Channels
146
+
147
+ ```typescript
148
+ const chat = kalze.subscribe('chat')
149
+ const notifications = kalze.subscribe('notifications')
150
+ const presence = kalze.subscribe('presence')
151
+
152
+ // Get all channels
153
+ const channels = kalze.getChannels() // ['chat', 'notifications', 'presence']
154
+
155
+ // Get specific channel
156
+ const chatChannel = kalze.getChannel('chat')
157
+
158
+ // Unsubscribe from a channel
159
+ kalze.unsubscribe('notifications')
160
+
161
+ // Disconnect from all channels
162
+ kalze.disconnectAll()
163
+ ```
164
+
165
+ ## TypeScript
166
+
167
+ Full TypeScript support with type definitions:
168
+
169
+ ```typescript
170
+ import Kalze, { KalzeOptions, ConnectionState } from 'kalze-ws'
171
+
172
+ interface NotificationData {
173
+ id: string
174
+ message: string
175
+ createdAt: string
176
+ }
177
+
178
+ const channel = kalze.subscribe('notifications')
179
+
180
+ channel.on<NotificationData>('new-notification', (data) => {
181
+ // data is typed as NotificationData
182
+ console.log(data.message)
183
+ })
184
+ ```
185
+
186
+ ## Server-Side Integration
187
+
188
+ To send messages from your server, use the Kalze User API:
189
+
190
+ ```typescript
191
+ // Server-side (Node.js)
192
+ const response = await fetch('https://api.websocket.cl/broadcast/my-channel', {
193
+ method: 'POST',
194
+ headers: {
195
+ 'Authorization': 'Bearer wsk_live_your_secret_key',
196
+ 'Content-Type': 'application/json',
197
+ },
198
+ body: JSON.stringify({
199
+ event: 'new-notification',
200
+ data: {
201
+ id: '123',
202
+ message: 'Hello World!',
203
+ createdAt: new Date().toISOString(),
204
+ }
205
+ })
206
+ })
207
+ ```
208
+
209
+ ## License
210
+
211
+ MIT © [Kalze SpA](https://kalze.z8.cl)
@@ -0,0 +1,114 @@
1
+ import type { KalzeOptions, EventCallback, ConnectionState, Channel } from './types.js';
2
+ /**
3
+ * Kalze Channel - Represents a connection to a specific channel
4
+ */
5
+ export declare class KalzeChannel implements Channel {
6
+ name: string;
7
+ private options;
8
+ private ws;
9
+ private socketId;
10
+ private state;
11
+ private eventListeners;
12
+ private reconnectAttempts;
13
+ private reconnectTimeout;
14
+ private heartbeatInterval;
15
+ constructor(channelName: string, options: KalzeOptions);
16
+ /**
17
+ * Connect to the WebSocket server
18
+ */
19
+ private connect;
20
+ /**
21
+ * Handle incoming message
22
+ */
23
+ private handleMessage;
24
+ /**
25
+ * Handle connection established
26
+ */
27
+ private handleConnectionEstablished;
28
+ /**
29
+ * Handle connection close
30
+ */
31
+ private handleClose;
32
+ /**
33
+ * Schedule reconnect
34
+ */
35
+ private scheduleReconnect;
36
+ /**
37
+ * Start heartbeat
38
+ */
39
+ private startHeartbeat;
40
+ /**
41
+ * Stop heartbeat
42
+ */
43
+ private stopHeartbeat;
44
+ /**
45
+ * Emit event to listeners
46
+ */
47
+ private emit;
48
+ /**
49
+ * Log message if debug is enabled
50
+ */
51
+ private log;
52
+ /**
53
+ * Subscribe to an event
54
+ */
55
+ on<T = unknown>(event: string, callback: EventCallback<T>): () => void;
56
+ /**
57
+ * Subscribe to an event once
58
+ */
59
+ once<T = unknown>(event: string, callback: EventCallback<T>): () => void;
60
+ /**
61
+ * Unsubscribe from an event
62
+ */
63
+ off(event: string, callback?: EventCallback): void;
64
+ /**
65
+ * Send a client event to the channel
66
+ */
67
+ trigger<T = unknown>(data: T): void;
68
+ /**
69
+ * Disconnect from channel
70
+ */
71
+ disconnect(): void;
72
+ /**
73
+ * Check if connected
74
+ */
75
+ isConnected(): boolean;
76
+ /**
77
+ * Get socket ID
78
+ */
79
+ getSocketId(): string | null;
80
+ /**
81
+ * Get connection state
82
+ */
83
+ getState(): ConnectionState;
84
+ }
85
+ /**
86
+ * Kalze Client - Main entry point
87
+ */
88
+ export declare class Kalze {
89
+ private options;
90
+ private channels;
91
+ constructor(options: KalzeOptions);
92
+ /**
93
+ * Subscribe to a channel
94
+ */
95
+ subscribe(channelName: string): KalzeChannel;
96
+ /**
97
+ * Unsubscribe from a channel
98
+ */
99
+ unsubscribe(channelName: string): void;
100
+ /**
101
+ * Get all subscribed channels
102
+ */
103
+ getChannels(): string[];
104
+ /**
105
+ * Get a specific channel
106
+ */
107
+ getChannel(channelName: string): KalzeChannel | undefined;
108
+ /**
109
+ * Disconnect from all channels
110
+ */
111
+ disconnectAll(): void;
112
+ }
113
+ export default Kalze;
114
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EAGf,OAAO,EACR,MAAM,YAAY,CAAA;AAInB;;GAEG;AACH,qBAAa,YAAa,YAAW,OAAO;IACnC,IAAI,EAAE,MAAM,CAAA;IAEnB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,gBAAgB,CAA6C;IACrE,OAAO,CAAC,iBAAiB,CAA8C;gBAE3D,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAetD;;OAEG;IACH,OAAO,CAAC,OAAO;IAsCf;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAcnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,IAAI;IAyBZ;;OAEG;IACH,OAAO,CAAC,GAAG;IAQX;;OAEG;IACH,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAUtE;;OAEG;IACH,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAQxE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI;IAclD;;OAEG;IACH,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAWnC;;OAEG;IACH,UAAU,IAAI,IAAI;IAkBlB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,QAAQ,IAAI,eAAe;CAG5B;AAED;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAuC;gBAE3C,OAAO,EAAE,YAAY;IAWjC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY;IAU5C;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQtC;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzD;;OAEG;IACH,aAAa,IAAI,IAAI;CAMtB;AAGD,eAAe,KAAK,CAAA"}
package/dist/client.js ADDED
@@ -0,0 +1,337 @@
1
+ const DEFAULT_WS_URL = 'wss://ws.websocket.cl';
2
+ /**
3
+ * Kalze Channel - Represents a connection to a specific channel
4
+ */
5
+ export class KalzeChannel {
6
+ constructor(channelName, options) {
7
+ this.ws = null;
8
+ this.socketId = null;
9
+ this.state = 'disconnected';
10
+ this.eventListeners = new Map();
11
+ this.reconnectAttempts = 0;
12
+ this.reconnectTimeout = null;
13
+ this.heartbeatInterval = null;
14
+ this.name = channelName;
15
+ this.options = {
16
+ key: options.key,
17
+ subdomain: options.subdomain,
18
+ wsUrl: options.wsUrl || DEFAULT_WS_URL,
19
+ autoReconnect: options.autoReconnect ?? true,
20
+ maxReconnectAttempts: options.maxReconnectAttempts ?? 10,
21
+ reconnectDelay: options.reconnectDelay ?? 1000,
22
+ debug: options.debug ?? false,
23
+ };
24
+ this.connect();
25
+ }
26
+ /**
27
+ * Connect to the WebSocket server
28
+ */
29
+ connect() {
30
+ if (this.state === 'connecting' || this.state === 'connected') {
31
+ return;
32
+ }
33
+ this.state = this.reconnectAttempts > 0 ? 'reconnecting' : 'connecting';
34
+ this.emit('state:change', { state: this.state });
35
+ const url = `${this.options.wsUrl}/c/${this.options.subdomain}/${this.name}?key=${this.options.key}`;
36
+ this.log(`Connecting to ${url}`);
37
+ try {
38
+ this.ws = new WebSocket(url);
39
+ this.ws.onopen = () => {
40
+ this.log('Connection opened');
41
+ };
42
+ this.ws.onmessage = (event) => {
43
+ this.handleMessage(event.data);
44
+ };
45
+ this.ws.onclose = (event) => {
46
+ this.handleClose(event.code, event.reason);
47
+ };
48
+ this.ws.onerror = (event) => {
49
+ this.log('WebSocket error', event);
50
+ this.emit('error', { message: 'WebSocket error' });
51
+ };
52
+ }
53
+ catch (error) {
54
+ this.log('Connection error', error);
55
+ this.emit('error', { message: 'Failed to connect' });
56
+ this.scheduleReconnect();
57
+ }
58
+ }
59
+ /**
60
+ * Handle incoming message
61
+ */
62
+ handleMessage(data) {
63
+ try {
64
+ const message = JSON.parse(data);
65
+ this.log('Received:', message);
66
+ // Handle system events
67
+ switch (message.event) {
68
+ case 'connection:established':
69
+ this.handleConnectionEstablished(message.data);
70
+ break;
71
+ case 'pong':
72
+ // Heartbeat response
73
+ break;
74
+ default:
75
+ // Emit to listeners
76
+ this.emit(message.event, message.data);
77
+ }
78
+ }
79
+ catch (error) {
80
+ this.log('Failed to parse message', error);
81
+ }
82
+ }
83
+ /**
84
+ * Handle connection established
85
+ */
86
+ handleConnectionEstablished(data) {
87
+ this.socketId = data.socketId;
88
+ this.state = 'connected';
89
+ this.reconnectAttempts = 0;
90
+ // Start heartbeat
91
+ this.startHeartbeat();
92
+ this.emit('connected', data);
93
+ this.emit('state:change', { state: this.state });
94
+ this.log(`Connected with socket ID: ${this.socketId}`);
95
+ }
96
+ /**
97
+ * Handle connection close
98
+ */
99
+ handleClose(code, reason) {
100
+ this.log(`Connection closed: ${code} - ${reason}`);
101
+ this.stopHeartbeat();
102
+ this.ws = null;
103
+ this.socketId = null;
104
+ this.state = 'disconnected';
105
+ this.emit('disconnected', { code, reason });
106
+ this.emit('state:change', { state: this.state });
107
+ // Don't reconnect if intentionally closed or server refused
108
+ if (code === 4000 || code === 4001 || code === 4002 || code === 4999) {
109
+ this.log('Not reconnecting due to error code');
110
+ return;
111
+ }
112
+ this.scheduleReconnect();
113
+ }
114
+ /**
115
+ * Schedule reconnect
116
+ */
117
+ scheduleReconnect() {
118
+ if (!this.options.autoReconnect)
119
+ return;
120
+ if (this.reconnectAttempts >= this.options.maxReconnectAttempts) {
121
+ this.log('Max reconnect attempts reached');
122
+ this.emit('reconnect:failed', { attempts: this.reconnectAttempts });
123
+ return;
124
+ }
125
+ this.reconnectAttempts++;
126
+ const delay = this.options.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);
127
+ this.log(`Scheduling reconnect attempt ${this.reconnectAttempts} in ${delay}ms`);
128
+ this.emit('reconnecting', { attempt: this.reconnectAttempts, delay });
129
+ this.reconnectTimeout = setTimeout(() => {
130
+ this.connect();
131
+ }, delay);
132
+ }
133
+ /**
134
+ * Start heartbeat
135
+ */
136
+ startHeartbeat() {
137
+ this.stopHeartbeat();
138
+ this.heartbeatInterval = setInterval(() => {
139
+ if (this.ws?.readyState === WebSocket.OPEN) {
140
+ this.ws.send(JSON.stringify({ event: 'ping' }));
141
+ }
142
+ }, 25000);
143
+ }
144
+ /**
145
+ * Stop heartbeat
146
+ */
147
+ stopHeartbeat() {
148
+ if (this.heartbeatInterval) {
149
+ clearInterval(this.heartbeatInterval);
150
+ this.heartbeatInterval = null;
151
+ }
152
+ }
153
+ /**
154
+ * Emit event to listeners
155
+ */
156
+ emit(event, data) {
157
+ const listeners = this.eventListeners.get(event);
158
+ if (listeners) {
159
+ for (const callback of listeners) {
160
+ try {
161
+ callback(data);
162
+ }
163
+ catch (error) {
164
+ this.log(`Error in event listener for ${event}`, error);
165
+ }
166
+ }
167
+ }
168
+ // Also emit to wildcard listeners
169
+ const wildcardListeners = this.eventListeners.get('*');
170
+ if (wildcardListeners) {
171
+ for (const callback of wildcardListeners) {
172
+ try {
173
+ callback({ event, data });
174
+ }
175
+ catch (error) {
176
+ this.log(`Error in wildcard listener`, error);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ /**
182
+ * Log message if debug is enabled
183
+ */
184
+ log(message, ...args) {
185
+ if (this.options.debug) {
186
+ console.log(`[Kalze:${this.name}] ${message}`, ...args);
187
+ }
188
+ }
189
+ // Public API
190
+ /**
191
+ * Subscribe to an event
192
+ */
193
+ on(event, callback) {
194
+ if (!this.eventListeners.has(event)) {
195
+ this.eventListeners.set(event, new Set());
196
+ }
197
+ this.eventListeners.get(event).add(callback);
198
+ // Return unsubscribe function
199
+ return () => this.off(event, callback);
200
+ }
201
+ /**
202
+ * Subscribe to an event once
203
+ */
204
+ once(event, callback) {
205
+ const wrapper = (data) => {
206
+ this.off(event, wrapper);
207
+ callback(data);
208
+ };
209
+ return this.on(event, wrapper);
210
+ }
211
+ /**
212
+ * Unsubscribe from an event
213
+ */
214
+ off(event, callback) {
215
+ if (!callback) {
216
+ this.eventListeners.delete(event);
217
+ }
218
+ else {
219
+ const listeners = this.eventListeners.get(event);
220
+ if (listeners) {
221
+ listeners.delete(callback);
222
+ if (listeners.size === 0) {
223
+ this.eventListeners.delete(event);
224
+ }
225
+ }
226
+ }
227
+ }
228
+ /**
229
+ * Send a client event to the channel
230
+ */
231
+ trigger(data) {
232
+ if (this.ws?.readyState === WebSocket.OPEN) {
233
+ this.ws.send(JSON.stringify({
234
+ event: 'client:event',
235
+ data,
236
+ }));
237
+ }
238
+ else {
239
+ this.log('Cannot trigger event: not connected');
240
+ }
241
+ }
242
+ /**
243
+ * Disconnect from channel
244
+ */
245
+ disconnect() {
246
+ if (this.reconnectTimeout) {
247
+ clearTimeout(this.reconnectTimeout);
248
+ this.reconnectTimeout = null;
249
+ }
250
+ this.stopHeartbeat();
251
+ if (this.ws) {
252
+ this.ws.close(1000, 'Client disconnect');
253
+ this.ws = null;
254
+ }
255
+ this.socketId = null;
256
+ this.state = 'disconnected';
257
+ this.eventListeners.clear();
258
+ }
259
+ /**
260
+ * Check if connected
261
+ */
262
+ isConnected() {
263
+ return this.state === 'connected';
264
+ }
265
+ /**
266
+ * Get socket ID
267
+ */
268
+ getSocketId() {
269
+ return this.socketId;
270
+ }
271
+ /**
272
+ * Get connection state
273
+ */
274
+ getState() {
275
+ return this.state;
276
+ }
277
+ }
278
+ /**
279
+ * Kalze Client - Main entry point
280
+ */
281
+ export class Kalze {
282
+ constructor(options) {
283
+ this.channels = new Map();
284
+ if (!options.key) {
285
+ throw new Error('API key is required');
286
+ }
287
+ if (!options.subdomain) {
288
+ throw new Error('Subdomain is required');
289
+ }
290
+ this.options = options;
291
+ }
292
+ /**
293
+ * Subscribe to a channel
294
+ */
295
+ subscribe(channelName) {
296
+ if (this.channels.has(channelName)) {
297
+ return this.channels.get(channelName);
298
+ }
299
+ const channel = new KalzeChannel(channelName, this.options);
300
+ this.channels.set(channelName, channel);
301
+ return channel;
302
+ }
303
+ /**
304
+ * Unsubscribe from a channel
305
+ */
306
+ unsubscribe(channelName) {
307
+ const channel = this.channels.get(channelName);
308
+ if (channel) {
309
+ channel.disconnect();
310
+ this.channels.delete(channelName);
311
+ }
312
+ }
313
+ /**
314
+ * Get all subscribed channels
315
+ */
316
+ getChannels() {
317
+ return Array.from(this.channels.keys());
318
+ }
319
+ /**
320
+ * Get a specific channel
321
+ */
322
+ getChannel(channelName) {
323
+ return this.channels.get(channelName);
324
+ }
325
+ /**
326
+ * Disconnect from all channels
327
+ */
328
+ disconnectAll() {
329
+ for (const channel of this.channels.values()) {
330
+ channel.disconnect();
331
+ }
332
+ this.channels.clear();
333
+ }
334
+ }
335
+ // Default export
336
+ export default Kalze;
337
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { Kalze, KalzeChannel } from './client.js';
2
+ export type { KalzeOptions, EventCallback, ConnectionState, ServerMessage, ConnectionEstablished, ErrorData, Channel, KalzeClient, } from './types.js';
3
+ import { Kalze } from './client.js';
4
+ export default Kalze;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGjD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,SAAS,EACT,OAAO,EACP,WAAW,GACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,eAAe,KAAK,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ // Main exports
2
+ export { Kalze, KalzeChannel } from './client.js';
3
+ // Default export
4
+ import { Kalze } from './client.js';
5
+ export default Kalze;
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAcjD,iBAAiB;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,eAAe,KAAK,CAAA"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Event callback type
3
+ */
4
+ export type EventCallback<T = unknown> = (data: T) => void;
5
+ /**
6
+ * Connection options
7
+ */
8
+ export interface KalzeOptions {
9
+ /**
10
+ * Your public API key (wpk_live_*)
11
+ */
12
+ key: string;
13
+ /**
14
+ * Your subdomain (e.g., 'rojo-azul-casa-gato')
15
+ */
16
+ subdomain: string;
17
+ /**
18
+ * WebSocket server URL (default: wss://ws.websocket.cl)
19
+ */
20
+ wsUrl?: string;
21
+ /**
22
+ * Auto reconnect on disconnect (default: true)
23
+ */
24
+ autoReconnect?: boolean;
25
+ /**
26
+ * Max reconnect attempts (default: 10)
27
+ */
28
+ maxReconnectAttempts?: number;
29
+ /**
30
+ * Base delay between reconnect attempts in ms (default: 1000)
31
+ */
32
+ reconnectDelay?: number;
33
+ /**
34
+ * Enable debug logging (default: false)
35
+ */
36
+ debug?: boolean;
37
+ }
38
+ /**
39
+ * Connection state
40
+ */
41
+ export type ConnectionState = 'connecting' | 'connected' | 'disconnected' | 'reconnecting';
42
+ /**
43
+ * Message from server
44
+ */
45
+ export interface ServerMessage<T = unknown> {
46
+ event: string;
47
+ data: T;
48
+ timestamp: number;
49
+ }
50
+ /**
51
+ * Connection established event data
52
+ */
53
+ export interface ConnectionEstablished {
54
+ socketId: string;
55
+ channel: string;
56
+ subdomain: string;
57
+ timestamp: number;
58
+ }
59
+ /**
60
+ * Error event data
61
+ */
62
+ export interface ErrorData {
63
+ message: string;
64
+ code?: number;
65
+ }
66
+ /**
67
+ * Channel instance type
68
+ */
69
+ export interface Channel {
70
+ /**
71
+ * Channel name
72
+ */
73
+ name: string;
74
+ /**
75
+ * Subscribe to an event on this channel
76
+ */
77
+ on<T = unknown>(event: string, callback: EventCallback<T>): () => void;
78
+ /**
79
+ * Subscribe to an event once
80
+ */
81
+ once<T = unknown>(event: string, callback: EventCallback<T>): () => void;
82
+ /**
83
+ * Unsubscribe from an event
84
+ */
85
+ off(event: string, callback?: EventCallback): void;
86
+ /**
87
+ * Send a client event to the channel
88
+ */
89
+ trigger<T = unknown>(data: T): void;
90
+ /**
91
+ * Disconnect from channel
92
+ */
93
+ disconnect(): void;
94
+ /**
95
+ * Check if connected
96
+ */
97
+ isConnected(): boolean;
98
+ /**
99
+ * Get socket ID
100
+ */
101
+ getSocketId(): string | null;
102
+ }
103
+ /**
104
+ * Main Kalze client type
105
+ */
106
+ export interface KalzeClient {
107
+ /**
108
+ * Subscribe to a channel
109
+ */
110
+ subscribe(channelName: string): Channel;
111
+ /**
112
+ * Unsubscribe from a channel
113
+ */
114
+ unsubscribe(channelName: string): void;
115
+ /**
116
+ * Get all subscribed channels
117
+ */
118
+ getChannels(): string[];
119
+ /**
120
+ * Disconnect from all channels
121
+ */
122
+ disconnectAll(): void;
123
+ }
124
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;AAE1D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,CAAA;AAE1F;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;IAEtE;;OAEG;IACH,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;IAExE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAElD;;OAEG;IACH,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IAEnC;;OAEG;IACH,UAAU,IAAI,IAAI,CAAA;IAElB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAA;IAEtB;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;IAEvC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAEtC;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE,CAAA;IAEvB;;OAEG;IACH,aAAa,IAAI,IAAI,CAAA;CACtB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "kalze-ws",
3
+ "version": "1.0.0",
4
+ "description": "WebSocket client for websocket.cl - Real-time connections made easy",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "dev": "tsc --watch",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "keywords": [
24
+ "websocket",
25
+ "realtime",
26
+ "kalze",
27
+ "ws",
28
+ "client"
29
+ ],
30
+ "author": "Kalze SpA",
31
+ "license": "MIT",
32
+ "homepage": "https://websocket.cl",
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/kalze-ws/kalze-ws.git"
36
+ },
37
+ "devDependencies": {
38
+ "typescript": "^5.8.3"
39
+ },
40
+ "peerDependencies": {
41
+ "ws": "^8.0.0"
42
+ },
43
+ "peerDependenciesMeta": {
44
+ "ws": {
45
+ "optional": true
46
+ }
47
+ }
48
+ }