@tthr/server 0.0.5 → 0.0.8

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.d.ts CHANGED
@@ -12,33 +12,66 @@ export interface AuthContext {
12
12
  claims: Record<string, unknown>;
13
13
  }
14
14
  /**
15
- * Database client type - represents the generated db object
15
+ * System columns that are auto-generated by the server
16
+ */
17
+ type SystemColumns = '_id' | '_createdAt';
18
+ /**
19
+ * Input type for create operations - excludes system columns
20
+ */
21
+ type CreateInput<T> = Omit<T, SystemColumns>;
22
+ /**
23
+ * Table operations interface
16
24
  */
17
- export type DatabaseClient = Record<string, {
18
- findMany: (options?: unknown) => Promise<unknown[]>;
19
- findFirst: (options?: unknown) => Promise<unknown | null>;
20
- findUnique: (options?: unknown) => Promise<unknown | null>;
21
- findById: (id: unknown) => Promise<unknown | null>;
22
- count: (options?: unknown) => Promise<number>;
23
- insert: (data: unknown) => Promise<unknown>;
24
- insertMany: (data: unknown[]) => Promise<unknown[]>;
25
+ export interface TableOperations<T = unknown> {
26
+ findMany: (options?: {
27
+ where?: Partial<T>;
28
+ orderBy?: Partial<Record<keyof T, 'asc' | 'desc'>>;
29
+ limit?: number;
30
+ offset?: number;
31
+ }) => Promise<T[]>;
32
+ findFirst: (options?: {
33
+ where?: Partial<T>;
34
+ orderBy?: Partial<Record<keyof T, 'asc' | 'desc'>>;
35
+ }) => Promise<T | null>;
36
+ findUnique: (options?: {
37
+ where?: Partial<T>;
38
+ }) => Promise<T | null>;
39
+ findById: (id: unknown) => Promise<T | null>;
40
+ count: (options?: {
41
+ where?: Partial<T>;
42
+ }) => Promise<number>;
43
+ insert: (data: CreateInput<T>) => Promise<T>;
44
+ insertMany: (data: CreateInput<T>[]) => Promise<T[]>;
25
45
  create: (options: {
26
- data: unknown;
27
- }) => Promise<unknown>;
46
+ data: CreateInput<T>;
47
+ }) => Promise<T>;
28
48
  update: (options: {
29
- where: unknown;
30
- data: unknown;
49
+ where: Partial<T>;
50
+ data: Partial<CreateInput<T>>;
31
51
  }) => Promise<number>;
32
52
  upsert: (options: {
33
- where: unknown;
34
- create: unknown;
35
- update: unknown;
36
- }) => Promise<unknown>;
53
+ where: Partial<T>;
54
+ create: CreateInput<T>;
55
+ update: Partial<CreateInput<T>>;
56
+ }) => Promise<T>;
37
57
  delete: (options: {
38
- where: unknown;
58
+ where: Partial<T>;
39
59
  }) => Promise<number>;
40
60
  deleteById: (id: unknown) => Promise<boolean>;
41
- }>;
61
+ }
62
+ /**
63
+ * Database client type - represents the generated db object
64
+ * Can be used with a schema type for full type safety:
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * import type { Schema } from '~/tether/_generated/db';
69
+ * type DB = DatabaseClient<Schema>;
70
+ * ```
71
+ */
72
+ export type DatabaseClient<TSchema = Record<string, unknown>> = {
73
+ [K in keyof TSchema]: TableOperations<TSchema[K]>;
74
+ };
42
75
  /**
43
76
  * Tether context for actions - provides access to queries, mutations, and env vars
44
77
  */
@@ -71,47 +104,47 @@ export interface ExecutionCtx {
71
104
  /**
72
105
  * Base handler context (without args) for queries/mutations with no arguments
73
106
  */
74
- export interface BaseHandlerContext {
107
+ export interface BaseHandlerContext<TSchema = Record<string, unknown>> {
75
108
  /** Database client for the project */
76
- db: DatabaseClient;
109
+ db: DatabaseClient<TSchema>;
77
110
  /** Execution context with auth info */
78
111
  ctx: ExecutionCtx;
79
112
  }
80
113
  /**
81
114
  * Query/Mutation handler context with typed args
82
115
  */
83
- export type FunctionHandlerContext<TArgs> = TArgs extends void ? BaseHandlerContext : BaseHandlerContext & {
116
+ export type FunctionHandlerContext<TArgs, TSchema = Record<string, unknown>> = TArgs extends void ? BaseHandlerContext<TSchema> : BaseHandlerContext<TSchema> & {
84
117
  args: TArgs;
85
118
  };
86
119
  /**
87
120
  * Action handler context with typed args
88
121
  */
89
- export type ActionHandlerCtx<TArgs> = TArgs extends void ? BaseHandlerContext & {
122
+ export type ActionHandlerCtx<TArgs, TSchema = Record<string, unknown>> = TArgs extends void ? BaseHandlerContext<TSchema> & {
90
123
  tether: TetherContext;
91
- } : BaseHandlerContext & {
124
+ } : BaseHandlerContext<TSchema> & {
92
125
  args: TArgs;
93
126
  tether: TetherContext;
94
127
  };
95
128
  /**
96
129
  * Query function definition
97
130
  */
98
- export interface QueryDefinition<TArgs, TResult> {
131
+ export interface QueryDefinition<TArgs, TResult, TSchema = Record<string, unknown>> {
99
132
  args?: ZodType<TArgs>;
100
- handler: (context: FunctionHandlerContext<TArgs>) => Promise<TResult> | TResult;
133
+ handler: (context: FunctionHandlerContext<TArgs, TSchema>) => Promise<TResult> | TResult;
101
134
  }
102
135
  /**
103
136
  * Mutation function definition
104
137
  */
105
- export interface MutationDefinition<TArgs, TResult> {
138
+ export interface MutationDefinition<TArgs, TResult, TSchema = Record<string, unknown>> {
106
139
  args?: ZodType<TArgs>;
107
- handler: (context: FunctionHandlerContext<TArgs>) => Promise<TResult> | TResult;
140
+ handler: (context: FunctionHandlerContext<TArgs, TSchema>) => Promise<TResult> | TResult;
108
141
  }
109
142
  /**
110
143
  * Action function definition
111
144
  */
112
- export interface ActionDefinition<TArgs, TResult> {
145
+ export interface ActionDefinition<TArgs, TResult, TSchema = Record<string, unknown>> {
113
146
  args?: ZodType<TArgs>;
114
- handler: (context: ActionHandlerCtx<TArgs>) => Promise<TResult> | TResult;
147
+ handler: (context: ActionHandlerCtx<TArgs, TSchema>) => Promise<TResult> | TResult;
115
148
  }
116
149
  /**
117
150
  * Define a query function
@@ -142,7 +175,7 @@ export interface ActionDefinition<TArgs, TResult> {
142
175
  * });
143
176
  * ```
144
177
  */
145
- export declare function query<TArgs = void, TResult = unknown>(definition: QueryDefinition<TArgs, TResult>): QueryDefinition<TArgs, TResult>;
178
+ export declare function query<TArgs = void, TResult = unknown, TSchema = Record<string, unknown>>(definition: QueryDefinition<TArgs, TResult, TSchema>): QueryDefinition<TArgs, TResult, TSchema>;
146
179
  /**
147
180
  * Define a mutation function
148
181
  *
@@ -171,7 +204,7 @@ export declare function query<TArgs = void, TResult = unknown>(definition: Query
171
204
  * });
172
205
  * ```
173
206
  */
174
- export declare function mutation<TArgs = void, TResult = unknown>(definition: MutationDefinition<TArgs, TResult>): MutationDefinition<TArgs, TResult>;
207
+ export declare function mutation<TArgs = void, TResult = unknown, TSchema = Record<string, unknown>>(definition: MutationDefinition<TArgs, TResult, TSchema>): MutationDefinition<TArgs, TResult, TSchema>;
175
208
  /**
176
209
  * Define an action function
177
210
  *
@@ -203,17 +236,26 @@ export declare function mutation<TArgs = void, TResult = unknown>(definition: Mu
203
236
  * });
204
237
  * ```
205
238
  */
206
- export declare function action<TArgs = void, TResult = unknown>(definition: ActionDefinition<TArgs, TResult>): ActionDefinition<TArgs, TResult>;
239
+ export declare function action<TArgs = void, TResult = unknown, TSchema = Record<string, unknown>>(definition: ActionDefinition<TArgs, TResult, TSchema>): ActionDefinition<TArgs, TResult, TSchema>;
207
240
  /**
208
241
  * Server-side Tether client for direct function calls
209
242
  */
210
243
  export interface ServerClientOptions {
211
244
  url: string;
245
+ /** Project ID */
246
+ projectId: string;
247
+ /** Environment name (defaults to 'production') */
248
+ environment?: string;
249
+ /** API key for authentication */
212
250
  apiKey: string;
213
251
  }
214
252
  export declare class TetherServerClient {
215
253
  private options;
216
254
  constructor(options: ServerClientOptions);
255
+ /**
256
+ * Get the base URL for API calls
257
+ */
258
+ private getBaseUrl;
217
259
  /**
218
260
  * Execute a query function
219
261
  */
@@ -235,6 +277,8 @@ export interface TetherRuntimeConfig {
235
277
  url: string;
236
278
  /** Project ID */
237
279
  projectId: string;
280
+ /** Environment name (defaults to 'production') */
281
+ environment?: string;
238
282
  /** API key or auth token */
239
283
  apiKey?: string;
240
284
  /** Auth token function (for user context) */
@@ -295,4 +339,128 @@ export declare function executeWithLogging<TResult>(functionName: string, fn: ()
295
339
  */
296
340
  export declare function flushTetherLogs(): Promise<void>;
297
341
  export { z };
342
+ /**
343
+ * Cron trigger message from Tether server
344
+ */
345
+ export interface CronTriggerMessage {
346
+ type: 'cron_trigger';
347
+ executionId: string;
348
+ cronId: string;
349
+ functionName: string;
350
+ functionType: 'query' | 'mutation' | 'action';
351
+ args?: unknown;
352
+ }
353
+ /**
354
+ * Cron handler function type
355
+ */
356
+ export type CronHandler = (functionName: string, args: unknown) => Promise<{
357
+ success: boolean;
358
+ result?: unknown;
359
+ error?: string;
360
+ }>;
361
+ /**
362
+ * Options for TetherCronConnection
363
+ */
364
+ export interface TetherCronConnectionOptions {
365
+ /** Tether API URL */
366
+ url: string;
367
+ /** Project ID */
368
+ projectId: string;
369
+ /** Environment name (defaults to 'production') */
370
+ environment?: string;
371
+ /** API key for authentication */
372
+ apiKey: string;
373
+ /** Handler function for cron triggers */
374
+ onCronTrigger: CronHandler;
375
+ /** Called when connection is established */
376
+ onConnected?: () => void;
377
+ /** Called when connection is closed */
378
+ onDisconnected?: () => void;
379
+ /** Called on connection error */
380
+ onError?: (error: Error) => void;
381
+ }
382
+ /**
383
+ * Server-side WebSocket connection for receiving cron triggers.
384
+ *
385
+ * This connects to Tether with `?type=server` to identify as a server connection.
386
+ * Only server connections receive cron triggers - client connections do not.
387
+ *
388
+ * @example
389
+ * ```ts
390
+ * import { TetherCronConnection } from '@tthr/server';
391
+ *
392
+ * const cronConnection = new TetherCronConnection({
393
+ * url: process.env.TETHER_URL!,
394
+ * projectId: process.env.TETHER_PROJECT_ID!,
395
+ * apiKey: process.env.TETHER_API_KEY!,
396
+ * onCronTrigger: async (functionName, args) => {
397
+ * // Execute your function here
398
+ * try {
399
+ * const result = await executeFunction(functionName, args);
400
+ * return { success: true, result };
401
+ * } catch (error) {
402
+ * return { success: false, error: error.message };
403
+ * }
404
+ * },
405
+ * });
406
+ *
407
+ * await cronConnection.connect();
408
+ * ```
409
+ */
410
+ export declare class TetherCronConnection {
411
+ private options;
412
+ private ws;
413
+ private connectionId;
414
+ private reconnectAttempts;
415
+ private maxReconnectAttempts;
416
+ private reconnectDelay;
417
+ private isConnecting;
418
+ private shouldReconnect;
419
+ private heartbeatInterval;
420
+ private heartbeatTimeout;
421
+ private heartbeatTimer;
422
+ private heartbeatTimeoutTimer;
423
+ private awaitingPong;
424
+ constructor(options: TetherCronConnectionOptions);
425
+ /**
426
+ * Get the WebSocket URL with server type parameter
427
+ */
428
+ private getWsUrl;
429
+ /**
430
+ * Connect to Tether server
431
+ */
432
+ connect(): Promise<void>;
433
+ /**
434
+ * Handle incoming WebSocket message
435
+ */
436
+ private handleMessage;
437
+ /**
438
+ * Handle a cron trigger message
439
+ */
440
+ private handleCronTrigger;
441
+ /**
442
+ * Report execution result back to Tether
443
+ */
444
+ private reportExecution;
445
+ /**
446
+ * Start heartbeat timer
447
+ */
448
+ private startHeartbeat;
449
+ /**
450
+ * Stop heartbeat timer
451
+ */
452
+ private stopHeartbeat;
453
+ /**
454
+ * Handle reconnection
455
+ */
456
+ private handleReconnect;
457
+ /**
458
+ * Disconnect from Tether
459
+ */
460
+ disconnect(): void;
461
+ /**
462
+ * Check if connected
463
+ */
464
+ get isConnected(): boolean;
465
+ }
298
466
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -106,11 +106,23 @@ export class TetherServerClient {
106
106
  constructor(options) {
107
107
  this.options = options;
108
108
  }
109
+ /**
110
+ * Get the base URL for API calls
111
+ */
112
+ getBaseUrl() {
113
+ const base = this.options.url.replace(/\/$/, '');
114
+ const env = this.options.environment;
115
+ // Only include /env/{env} if not production (production is the default)
116
+ if (env && env !== 'production') {
117
+ return `${base}/api/v1/projects/${this.options.projectId}/env/${env}`;
118
+ }
119
+ return `${base}/api/v1/projects/${this.options.projectId}`;
120
+ }
109
121
  /**
110
122
  * Execute a query function
111
123
  */
112
124
  async query(name, args) {
113
- const response = await fetch(`${this.options.url}/api/v1/query`, {
125
+ const response = await fetch(`${this.getBaseUrl()}/query`, {
114
126
  method: 'POST',
115
127
  headers: {
116
128
  'Content-Type': 'application/json',
@@ -129,7 +141,7 @@ export class TetherServerClient {
129
141
  * Execute a mutation function
130
142
  */
131
143
  async mutation(name, args) {
132
- const response = await fetch(`${this.options.url}/api/v1/mutation`, {
144
+ const response = await fetch(`${this.getBaseUrl()}/mutation`, {
133
145
  method: 'POST',
134
146
  headers: {
135
147
  'Content-Type': 'application/json',
@@ -197,7 +209,13 @@ async function flushLogs() {
197
209
  const token = typeof _runtimeConfig.authToken === 'function'
198
210
  ? await _runtimeConfig.authToken()
199
211
  : _runtimeConfig.authToken ?? _runtimeConfig.apiKey;
200
- const response = await fetch(`${_runtimeConfig.url}/api/v1/projects/${_runtimeConfig.projectId}/logs`, {
212
+ // Build URL with optional environment
213
+ const base = _runtimeConfig.url.replace(/\/$/, '');
214
+ const env = _runtimeConfig.environment;
215
+ const baseUrl = env && env !== 'production'
216
+ ? `${base}/api/v1/projects/${_runtimeConfig.projectId}/env/${env}`
217
+ : `${base}/api/v1/projects/${_runtimeConfig.projectId}`;
218
+ const response = await fetch(`${baseUrl}/logs`, {
201
219
  method: 'POST',
202
220
  headers: {
203
221
  'Content-Type': 'application/json',
@@ -356,4 +374,283 @@ export async function flushTetherLogs() {
356
374
  }
357
375
  // Re-export zod for convenience
358
376
  export { z };
377
+ /**
378
+ * Server-side WebSocket connection for receiving cron triggers.
379
+ *
380
+ * This connects to Tether with `?type=server` to identify as a server connection.
381
+ * Only server connections receive cron triggers - client connections do not.
382
+ *
383
+ * @example
384
+ * ```ts
385
+ * import { TetherCronConnection } from '@tthr/server';
386
+ *
387
+ * const cronConnection = new TetherCronConnection({
388
+ * url: process.env.TETHER_URL!,
389
+ * projectId: process.env.TETHER_PROJECT_ID!,
390
+ * apiKey: process.env.TETHER_API_KEY!,
391
+ * onCronTrigger: async (functionName, args) => {
392
+ * // Execute your function here
393
+ * try {
394
+ * const result = await executeFunction(functionName, args);
395
+ * return { success: true, result };
396
+ * } catch (error) {
397
+ * return { success: false, error: error.message };
398
+ * }
399
+ * },
400
+ * });
401
+ *
402
+ * await cronConnection.connect();
403
+ * ```
404
+ */
405
+ export class TetherCronConnection {
406
+ options;
407
+ ws = null;
408
+ connectionId = null;
409
+ reconnectAttempts = 0;
410
+ maxReconnectAttempts = 10;
411
+ reconnectDelay = 1000;
412
+ isConnecting = false;
413
+ shouldReconnect = true;
414
+ // Heartbeat configuration
415
+ heartbeatInterval = 30000; // 30 seconds
416
+ heartbeatTimeout = 10000; // 10 seconds to receive pong
417
+ heartbeatTimer = null;
418
+ heartbeatTimeoutTimer = null;
419
+ awaitingPong = false;
420
+ constructor(options) {
421
+ this.options = options;
422
+ }
423
+ /**
424
+ * Get the WebSocket URL with server type parameter
425
+ */
426
+ getWsUrl() {
427
+ const base = this.options.url
428
+ .replace('https://', 'wss://')
429
+ .replace('http://', 'ws://')
430
+ .replace(/\/$/, '');
431
+ const env = this.options.environment;
432
+ let wsPath;
433
+ if (env && env !== 'production') {
434
+ wsPath = `${base}/ws/${this.options.projectId}/${env}`;
435
+ }
436
+ else {
437
+ wsPath = `${base}/ws/${this.options.projectId}`;
438
+ }
439
+ // Add type=server to identify as server connection and token for auth
440
+ return `${wsPath}?type=server&token=${encodeURIComponent(this.options.apiKey)}`;
441
+ }
442
+ /**
443
+ * Connect to Tether server
444
+ */
445
+ async connect() {
446
+ if (this.ws?.readyState === WebSocket.OPEN) {
447
+ return;
448
+ }
449
+ if (this.isConnecting) {
450
+ return;
451
+ }
452
+ this.isConnecting = true;
453
+ this.shouldReconnect = true;
454
+ return new Promise((resolve, reject) => {
455
+ try {
456
+ const url = this.getWsUrl();
457
+ // Use ws package for Node.js if available, otherwise use global WebSocket
458
+ const WebSocketImpl = typeof WebSocket !== 'undefined' ? WebSocket : require('ws');
459
+ this.ws = new WebSocketImpl(url);
460
+ this.ws.onopen = () => {
461
+ this.reconnectAttempts = 0;
462
+ console.log('[Tether Cron] WebSocket connected');
463
+ };
464
+ this.ws.onmessage = async (event) => {
465
+ const data = typeof event.data === 'string' ? event.data : event.data.toString();
466
+ await this.handleMessage(data, resolve);
467
+ };
468
+ this.ws.onerror = (error) => {
469
+ const err = error instanceof Error ? error : new Error('WebSocket error');
470
+ console.error('[Tether Cron] WebSocket error:', err.message);
471
+ this.isConnecting = false;
472
+ this.options.onError?.(err);
473
+ reject(err);
474
+ };
475
+ this.ws.onclose = () => {
476
+ this.connectionId = null;
477
+ this.isConnecting = false;
478
+ this.stopHeartbeat();
479
+ console.log('[Tether Cron] WebSocket disconnected');
480
+ this.options.onDisconnected?.();
481
+ this.handleReconnect();
482
+ };
483
+ }
484
+ catch (error) {
485
+ this.isConnecting = false;
486
+ reject(error);
487
+ }
488
+ });
489
+ }
490
+ /**
491
+ * Handle incoming WebSocket message
492
+ */
493
+ async handleMessage(data, resolveConnect) {
494
+ try {
495
+ const message = JSON.parse(data);
496
+ switch (message.type) {
497
+ case 'connected':
498
+ this.connectionId = message.connection_id ?? null;
499
+ this.isConnecting = false;
500
+ this.startHeartbeat();
501
+ console.log(`[Tether Cron] Connected with ID: ${this.connectionId}`);
502
+ this.options.onConnected?.();
503
+ resolveConnect?.();
504
+ break;
505
+ case 'cron_trigger':
506
+ await this.handleCronTrigger(message);
507
+ break;
508
+ case 'pong':
509
+ this.awaitingPong = false;
510
+ if (this.heartbeatTimeoutTimer) {
511
+ clearTimeout(this.heartbeatTimeoutTimer);
512
+ this.heartbeatTimeoutTimer = null;
513
+ }
514
+ break;
515
+ case 'error':
516
+ console.error('[Tether Cron] Server error:', message.error);
517
+ break;
518
+ }
519
+ }
520
+ catch (e) {
521
+ console.error('[Tether Cron] Failed to parse message:', e);
522
+ }
523
+ }
524
+ /**
525
+ * Handle a cron trigger message
526
+ */
527
+ async handleCronTrigger(trigger) {
528
+ console.log(`[Tether Cron] Received trigger for ${trigger.functionName} (execution: ${trigger.executionId})`);
529
+ const startTime = Date.now();
530
+ try {
531
+ // Execute the handler
532
+ const result = await this.options.onCronTrigger(trigger.functionName, trigger.args);
533
+ const durationMs = Date.now() - startTime;
534
+ // Report result back to Tether
535
+ await this.reportExecution(trigger, result, durationMs);
536
+ }
537
+ catch (error) {
538
+ const durationMs = Date.now() - startTime;
539
+ const errorMessage = error instanceof Error ? error.message : String(error);
540
+ console.error(`[Tether Cron] Handler error for ${trigger.functionName}:`, errorMessage);
541
+ // Report failure
542
+ await this.reportExecution(trigger, { success: false, error: errorMessage }, durationMs);
543
+ }
544
+ }
545
+ /**
546
+ * Report execution result back to Tether
547
+ */
548
+ async reportExecution(trigger, result, durationMs) {
549
+ const base = this.options.url.replace(/\/$/, '');
550
+ const env = this.options.environment;
551
+ let apiPath;
552
+ if (env && env !== 'production') {
553
+ apiPath = `${base}/api/v1/projects/${this.options.projectId}/env/${env}`;
554
+ }
555
+ else {
556
+ apiPath = `${base}/api/v1/projects/${this.options.projectId}`;
557
+ }
558
+ const url = `${apiPath}/crons/${trigger.cronId}/executions`;
559
+ try {
560
+ const response = await fetch(url, {
561
+ method: 'POST',
562
+ headers: {
563
+ 'Content-Type': 'application/json',
564
+ 'Authorization': `Bearer ${this.options.apiKey}`,
565
+ },
566
+ body: JSON.stringify({
567
+ executionId: trigger.executionId,
568
+ success: result.success,
569
+ errorMessage: result.error,
570
+ result: result.result,
571
+ durationMs,
572
+ }),
573
+ });
574
+ if (!response.ok) {
575
+ console.error(`[Tether Cron] Failed to report execution: ${response.status} ${response.statusText}`);
576
+ }
577
+ else {
578
+ console.log(`[Tether Cron] Reported execution ${trigger.executionId}: ${result.success ? 'success' : 'failed'}`);
579
+ }
580
+ }
581
+ catch (error) {
582
+ console.error('[Tether Cron] Failed to report execution:', error);
583
+ }
584
+ }
585
+ /**
586
+ * Start heartbeat timer
587
+ */
588
+ startHeartbeat() {
589
+ this.stopHeartbeat();
590
+ this.heartbeatTimer = setInterval(() => {
591
+ if (this.ws?.readyState === WebSocket.OPEN) {
592
+ this.awaitingPong = true;
593
+ this.ws.send(JSON.stringify({ type: 'ping' }));
594
+ this.heartbeatTimeoutTimer = setTimeout(() => {
595
+ if (this.awaitingPong) {
596
+ console.warn('[Tether Cron] Heartbeat timeout - forcing reconnect');
597
+ this.ws?.close();
598
+ }
599
+ }, this.heartbeatTimeout);
600
+ }
601
+ }, this.heartbeatInterval);
602
+ }
603
+ /**
604
+ * Stop heartbeat timer
605
+ */
606
+ stopHeartbeat() {
607
+ if (this.heartbeatTimer) {
608
+ clearInterval(this.heartbeatTimer);
609
+ this.heartbeatTimer = null;
610
+ }
611
+ if (this.heartbeatTimeoutTimer) {
612
+ clearTimeout(this.heartbeatTimeoutTimer);
613
+ this.heartbeatTimeoutTimer = null;
614
+ }
615
+ this.awaitingPong = false;
616
+ }
617
+ /**
618
+ * Handle reconnection
619
+ */
620
+ handleReconnect() {
621
+ if (!this.shouldReconnect) {
622
+ return;
623
+ }
624
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
625
+ console.error('[Tether Cron] Max reconnection attempts reached');
626
+ return;
627
+ }
628
+ this.reconnectAttempts++;
629
+ const delay = Math.min(this.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1), 30000);
630
+ console.log(`[Tether Cron] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts})`);
631
+ setTimeout(() => {
632
+ this.connect().catch((error) => {
633
+ console.error('[Tether Cron] Reconnection failed:', error);
634
+ });
635
+ }, delay);
636
+ }
637
+ /**
638
+ * Disconnect from Tether
639
+ */
640
+ disconnect() {
641
+ this.shouldReconnect = false;
642
+ this.stopHeartbeat();
643
+ if (this.ws) {
644
+ this.ws.close();
645
+ this.ws = null;
646
+ }
647
+ this.connectionId = null;
648
+ }
649
+ /**
650
+ * Check if connected
651
+ */
652
+ get isConnected() {
653
+ return this.ws?.readyState === WebSocket.OPEN;
654
+ }
655
+ }
359
656
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tthr/server",
3
- "version": "0.0.5",
3
+ "version": "0.0.8",
4
4
  "description": "Tether server SDK for Node.js/Bun/Deno",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,15 +14,18 @@
14
14
  "files": [
15
15
  "dist"
16
16
  ],
17
- "scripts": {
18
- "build": "tsc",
19
- "dev": "tsc --watch",
20
- "typecheck": "tsc --noEmit"
21
- },
22
17
  "dependencies": {
18
+ "ws": "^8.18.0",
23
19
  "zod": "^3.24.0"
24
20
  },
25
21
  "devDependencies": {
22
+ "@types/node": "^22.0.0",
23
+ "@types/ws": "^8.5.13",
26
24
  "typescript": "^5.7.2"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "dev": "tsc --watch",
29
+ "typecheck": "tsc --noEmit"
27
30
  }
28
- }
31
+ }