@tthr/client 0.0.1

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.
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @tthr/client - Tether core client
3
+ *
4
+ * Framework-agnostic client for connecting to Tether servers.
5
+ */
6
+ export interface TetherClientOptions {
7
+ /** WebSocket URL (e.g., wss://tthr.io/project-id) */
8
+ url: string;
9
+ /** Function to get auth token */
10
+ authToken?: () => string | Promise<string>;
11
+ }
12
+ type SubscriptionCallback<T = unknown> = (data: T) => void;
13
+ /**
14
+ * Tether client for connecting to the server
15
+ */
16
+ export declare class TetherClient {
17
+ private options;
18
+ private ws;
19
+ private subscriptions;
20
+ private pendingRequests;
21
+ private connectionId;
22
+ private reconnectAttempts;
23
+ private maxReconnectAttempts;
24
+ private reconnectDelay;
25
+ constructor(options: TetherClientOptions);
26
+ /**
27
+ * Connect to the Tether server
28
+ */
29
+ connect(): Promise<void>;
30
+ private createWebSocket;
31
+ private handleMessage;
32
+ private handleReconnect;
33
+ /**
34
+ * Execute a query
35
+ */
36
+ query<T = unknown>(name: string, args?: unknown): Promise<T>;
37
+ /**
38
+ * Execute a mutation
39
+ */
40
+ mutation<T = unknown>(name: string, args?: unknown): Promise<T>;
41
+ /**
42
+ * Subscribe to a query
43
+ */
44
+ subscribe<T = unknown>(query: string, args: unknown, callback: SubscriptionCallback<T>): () => void;
45
+ private sendSubscribe;
46
+ private send;
47
+ private generateId;
48
+ /**
49
+ * Disconnect from the server
50
+ */
51
+ disconnect(): void;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED,KAAK,oBAAoB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAoB3D;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,eAAe,CAAgG;IACvH,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,cAAc,CAAQ;gBAElB,OAAO,EAAE,mBAAmB;IAIxC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B9B,OAAO,CAAC,eAAe;IAoCvB,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAwBlE;;OAEG;IACG,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBrE;;OAEG;IACH,SAAS,CAAC,CAAC,GAAG,OAAO,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,MAAM,IAAI;IAuBb,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,UAAU,IAAI,IAAI;CASnB"}
package/dist/index.js ADDED
@@ -0,0 +1,231 @@
1
+ /**
2
+ * @tthr/client - Tether core client
3
+ *
4
+ * Framework-agnostic client for connecting to Tether servers.
5
+ */
6
+ /**
7
+ * Tether client for connecting to the server
8
+ */
9
+ export class TetherClient {
10
+ options;
11
+ ws = null;
12
+ subscriptions = new Map();
13
+ pendingRequests = new Map();
14
+ connectionId = null;
15
+ reconnectAttempts = 0;
16
+ maxReconnectAttempts = 5;
17
+ reconnectDelay = 1000;
18
+ constructor(options) {
19
+ this.options = options;
20
+ }
21
+ /**
22
+ * Connect to the Tether server
23
+ */
24
+ async connect() {
25
+ if (this.ws?.readyState === WebSocket.OPEN) {
26
+ return;
27
+ }
28
+ return new Promise((resolve, reject) => {
29
+ let url = this.options.url;
30
+ // Add auth token if available
31
+ if (this.options.authToken) {
32
+ const token = typeof this.options.authToken === 'function'
33
+ ? this.options.authToken()
34
+ : this.options.authToken;
35
+ if (token instanceof Promise) {
36
+ token.then((t) => {
37
+ url = `${url}?token=${t}`;
38
+ this.createWebSocket(url, resolve, reject);
39
+ });
40
+ return;
41
+ }
42
+ url = `${url}?token=${token}`;
43
+ }
44
+ this.createWebSocket(url, resolve, reject);
45
+ });
46
+ }
47
+ createWebSocket(url, resolve, reject) {
48
+ this.ws = new WebSocket(url);
49
+ this.ws.onopen = () => {
50
+ this.reconnectAttempts = 0;
51
+ // Wait for 'connected' message before resolving
52
+ };
53
+ this.ws.onmessage = (event) => {
54
+ this.handleMessage(event.data);
55
+ // Resolve connect promise when we get the connected message
56
+ if (!this.connectionId) {
57
+ const msg = JSON.parse(event.data);
58
+ if (msg.type === 'connected') {
59
+ this.connectionId = msg.connection_id ?? null;
60
+ resolve();
61
+ }
62
+ }
63
+ };
64
+ this.ws.onerror = (error) => {
65
+ console.error('Tether WebSocket error:', error);
66
+ reject(new Error('WebSocket connection failed'));
67
+ };
68
+ this.ws.onclose = () => {
69
+ this.connectionId = null;
70
+ this.handleReconnect();
71
+ };
72
+ }
73
+ handleMessage(data) {
74
+ try {
75
+ const message = JSON.parse(data);
76
+ switch (message.type) {
77
+ case 'connected':
78
+ this.connectionId = message.connection_id ?? null;
79
+ break;
80
+ case 'data':
81
+ if (message.id) {
82
+ const sub = this.subscriptions.get(message.id);
83
+ if (sub) {
84
+ sub.callback(message.data);
85
+ }
86
+ }
87
+ break;
88
+ case 'mutation_result':
89
+ case 'action_result':
90
+ if (message.id) {
91
+ const pending = this.pendingRequests.get(message.id);
92
+ if (pending) {
93
+ pending.resolve(message.data);
94
+ this.pendingRequests.delete(message.id);
95
+ }
96
+ }
97
+ break;
98
+ case 'error':
99
+ if (message.id) {
100
+ const pending = this.pendingRequests.get(message.id);
101
+ if (pending) {
102
+ pending.reject(new Error(message.error?.message ?? 'Unknown error'));
103
+ this.pendingRequests.delete(message.id);
104
+ }
105
+ }
106
+ break;
107
+ case 'pong':
108
+ // Heartbeat acknowledged
109
+ break;
110
+ }
111
+ }
112
+ catch (e) {
113
+ console.error('Failed to parse Tether message:', e);
114
+ }
115
+ }
116
+ handleReconnect() {
117
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
118
+ console.error('Tether: Max reconnection attempts reached');
119
+ return;
120
+ }
121
+ this.reconnectAttempts++;
122
+ const delay = this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);
123
+ setTimeout(() => {
124
+ console.log(`Tether: Attempting reconnection (${this.reconnectAttempts}/${this.maxReconnectAttempts})`);
125
+ this.connect().then(() => {
126
+ // Re-subscribe to all active subscriptions
127
+ for (const [id, sub] of this.subscriptions) {
128
+ this.sendSubscribe(id, sub.query, sub.args);
129
+ }
130
+ }).catch(() => {
131
+ // Will retry via onclose handler
132
+ });
133
+ }, delay);
134
+ }
135
+ /**
136
+ * Execute a query
137
+ */
138
+ async query(name, args) {
139
+ await this.connect();
140
+ // For queries, we use HTTP for simplicity
141
+ // (subscriptions use WebSocket)
142
+ const httpUrl = this.options.url.replace('wss://', 'https://').replace('ws://', 'http://').replace('/ws/', '/api/v1/') + '/query';
143
+ const response = await fetch(httpUrl, {
144
+ method: 'POST',
145
+ headers: {
146
+ 'Content-Type': 'application/json',
147
+ // TODO: Add auth header
148
+ },
149
+ body: JSON.stringify({ function: name, args }),
150
+ });
151
+ if (!response.ok) {
152
+ throw new Error(`Query failed: ${response.statusText}`);
153
+ }
154
+ const result = await response.json();
155
+ return result.data;
156
+ }
157
+ /**
158
+ * Execute a mutation
159
+ */
160
+ async mutation(name, args) {
161
+ await this.connect();
162
+ const id = this.generateId();
163
+ return new Promise((resolve, reject) => {
164
+ this.pendingRequests.set(id, { resolve: resolve, reject });
165
+ this.send({
166
+ type: 'mutation',
167
+ id,
168
+ function: name,
169
+ args,
170
+ });
171
+ // Timeout after 30 seconds
172
+ setTimeout(() => {
173
+ if (this.pendingRequests.has(id)) {
174
+ this.pendingRequests.delete(id);
175
+ reject(new Error('Mutation timeout'));
176
+ }
177
+ }, 30000);
178
+ });
179
+ }
180
+ /**
181
+ * Subscribe to a query
182
+ */
183
+ subscribe(query, args, callback) {
184
+ const id = this.generateId();
185
+ this.subscriptions.set(id, {
186
+ query,
187
+ args,
188
+ callback: callback,
189
+ });
190
+ // Send subscribe message if connected
191
+ if (this.ws?.readyState === WebSocket.OPEN) {
192
+ this.sendSubscribe(id, query, args);
193
+ }
194
+ // Return unsubscribe function
195
+ return () => {
196
+ this.subscriptions.delete(id);
197
+ if (this.ws?.readyState === WebSocket.OPEN) {
198
+ this.send({ type: 'unsubscribe', id });
199
+ }
200
+ };
201
+ }
202
+ sendSubscribe(id, query, args) {
203
+ this.send({
204
+ type: 'subscribe',
205
+ id,
206
+ query,
207
+ args,
208
+ });
209
+ }
210
+ send(message) {
211
+ if (this.ws?.readyState === WebSocket.OPEN) {
212
+ this.ws.send(JSON.stringify(message));
213
+ }
214
+ }
215
+ generateId() {
216
+ return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
217
+ }
218
+ /**
219
+ * Disconnect from the server
220
+ */
221
+ disconnect() {
222
+ if (this.ws) {
223
+ this.ws.close();
224
+ this.ws = null;
225
+ }
226
+ this.subscriptions.clear();
227
+ this.pendingRequests.clear();
228
+ this.connectionId = null;
229
+ }
230
+ }
231
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@tthr/client",
3
+ "version": "0.0.1",
4
+ "description": "Tether core client - vanilla JavaScript SDK",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "dev": "tsc --watch",
20
+ "typecheck": "tsc --noEmit"
21
+ },
22
+ "devDependencies": {
23
+ "typescript": "^5.7.2"
24
+ }
25
+ }