@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 +201 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +300 -3
- package/dist/index.js.map +1 -1
- package/package.json +10 -7
package/dist/index.d.ts
CHANGED
|
@@ -12,33 +12,66 @@ export interface AuthContext {
|
|
|
12
12
|
claims: Record<string, unknown>;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
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
|
|
18
|
-
findMany: (options?:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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:
|
|
27
|
-
}) => Promise<
|
|
46
|
+
data: CreateInput<T>;
|
|
47
|
+
}) => Promise<T>;
|
|
28
48
|
update: (options: {
|
|
29
|
-
where:
|
|
30
|
-
data:
|
|
49
|
+
where: Partial<T>;
|
|
50
|
+
data: Partial<CreateInput<T>>;
|
|
31
51
|
}) => Promise<number>;
|
|
32
52
|
upsert: (options: {
|
|
33
|
-
where:
|
|
34
|
-
create:
|
|
35
|
-
update:
|
|
36
|
-
}) => Promise<
|
|
53
|
+
where: Partial<T>;
|
|
54
|
+
create: CreateInput<T>;
|
|
55
|
+
update: Partial<CreateInput<T>>;
|
|
56
|
+
}) => Promise<T>;
|
|
37
57
|
delete: (options: {
|
|
38
|
-
where:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AA6GtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,KAAK,CACnB,UAA2C;IAE3C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,QAAQ,CACtB,UAA8C;IAE9C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,MAAM,CACpB,UAA4C;IAE5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAUD,MAAM,OAAO,kBAAkB;IACrB,OAAO,CAAsB;IAErC,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAc,IAAY,EAAE,IAAc;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,eAAe,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;aACjD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAc,IAAY,EAAE,IAAc;QACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,kBAAkB,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;aACjD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAsCD,0BAA0B;AAC1B,IAAI,cAAc,GAA+B,IAAI,CAAC;AACtD,IAAI,UAAU,GAAe,EAAE,CAAC;AAChC,IAAI,WAAW,GAAyC,IAAI,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA2B;IAC3D,cAAc,GAAG;QACf,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QACpD,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,IAAI;QACnB,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC,cAAc,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEvD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,cAAc,CAAC,SAAS,KAAK,UAAU;YAC1D,CAAC,CAAC,MAAM,cAAc,CAAC,SAAS,EAAE;YAClC,CAAC,CAAC,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,cAAc,CAAC,GAAG,oBAAoB,cAAc,CAAC,SAAS,OAAO,EACxE;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;SAC/B,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,+DAA+D;YAC/D,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAC7B,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yBAAyB;QACzB,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC7B,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,WAAW;QAAE,OAAO;IAExB,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,WAAW,GAAG,IAAI,CAAC;QACnB,SAAS,EAAE,CAAC;IACd,CAAC,EAAE,cAAc,EAAE,aAAa,IAAI,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,MAAM,CAAC,KAAe;IAC7B,IAAI,CAAC,cAAc,EAAE,aAAa;QAAE,OAAO;IAE3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEvB,8BAA8B;IAC9B,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,SAAS,EAAE,CAAC;IACd,CAAC;SAAM,CAAC;QACN,aAAa,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,YAAoB,EACpB,WAAmB;IAEnB,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;IAE3C,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE;QAChD,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5B,8BAA8B;YAC9B,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAEhC,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI;iBACjB,GAAG,CAAC,GAAG,CAAC,EAAE,CACT,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CACpD;iBACA,IAAI,CAAC,GAAG,CAAC,CAAC;YAEb,oDAAoD;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;gBAC/E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACT,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;oBACf,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,CAAC;gBACL,QAAQ,EAAE,YAAY;gBACtB,KAAK;gBACL,OAAO;gBACP,IAAI;gBACJ,YAAY,EAAE,WAAW;gBACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,4CAA4C;IAC5C,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE;QAChC,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;YACnD,OAAQ,MAAsD,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;KACF,CAAY,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAoB,EACpB,EAAoC;IAEpC,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAErE,yBAAyB;IACzB,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;IAE3C,IAAI,CAAC;QACH,yBAAyB;QACzB,UAAU,CAAC,OAAO,GAAG,aAAa,CAAC;QAEnC,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB;QAChB,aAAa,CAAC,KAAK,CACjB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5D,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,2BAA2B;QAC3B,UAAU,CAAC,OAAO,GAAG,eAAe,CAAC;QAErC,iEAAiE;QACjE,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,WAAW,EAAE,CAAC;QAChB,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC;AAED,gCAAgC;AAChC,OAAO,EAAE,CAAC,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AAqItC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,KAAK,CACnB,UAAoD;IAEpD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,QAAQ,CACtB,UAAuD;IAEvD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,MAAM,CACpB,UAAqD;IAErD,OAAO,UAAU,CAAC;AACpB,CAAC;AAeD,MAAM,OAAO,kBAAkB;IACrB,OAAO,CAAsB;IAErC,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,wEAAwE;QACxE,IAAI,GAAG,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,IAAI,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAc,IAAY,EAAE,IAAc;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE;YACzD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;aACjD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAc,IAAY,EAAE,IAAc;QACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;aACjD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAwCD,0BAA0B;AAC1B,IAAI,cAAc,GAA+B,IAAI,CAAC;AACtD,IAAI,UAAU,GAAe,EAAE,CAAC;AAChC,IAAI,WAAW,GAAyC,IAAI,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA2B;IAC3D,cAAc,GAAG;QACf,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QACpD,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,IAAI;QACnB,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC,cAAc,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEvD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,cAAc,CAAC,SAAS,KAAK,UAAU;YAC1D,CAAC,CAAC,MAAM,cAAc,CAAC,SAAS,EAAE;YAClC,CAAC,CAAC,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC;QAEtD,sCAAsC;QACtC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,YAAY;YACzC,CAAC,CAAC,GAAG,IAAI,oBAAoB,cAAc,CAAC,SAAS,QAAQ,GAAG,EAAE;YAClE,CAAC,CAAC,GAAG,IAAI,oBAAoB,cAAc,CAAC,SAAS,EAAE,CAAC;QAE1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,OAAO,OAAO,EACjB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;SAC/B,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,+DAA+D;YAC/D,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBAC7B,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yBAAyB;QACzB,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC7B,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,WAAW;QAAE,OAAO;IAExB,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,WAAW,GAAG,IAAI,CAAC;QACnB,SAAS,EAAE,CAAC;IACd,CAAC,EAAE,cAAc,EAAE,aAAa,IAAI,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,MAAM,CAAC,KAAe;IAC7B,IAAI,CAAC,cAAc,EAAE,aAAa;QAAE,OAAO;IAE3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEvB,8BAA8B;IAC9B,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,SAAS,EAAE,CAAC;IACd,CAAC;SAAM,CAAC;QACN,aAAa,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,YAAoB,EACpB,WAAmB;IAEnB,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;IAE3C,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE;QAChD,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5B,8BAA8B;YAC9B,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAEhC,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI;iBACjB,GAAG,CAAC,GAAG,CAAC,EAAE,CACT,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CACpD;iBACA,IAAI,CAAC,GAAG,CAAC,CAAC;YAEb,oDAAoD;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;gBAC/E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACT,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;oBACf,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,CAAC;gBACL,QAAQ,EAAE,YAAY;gBACtB,KAAK;gBACL,OAAO;gBACP,IAAI;gBACJ,YAAY,EAAE,WAAW;gBACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,4CAA4C;IAC5C,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE;QAChC,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;YACnD,OAAQ,MAAsD,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;KACF,CAAY,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAoB,EACpB,EAAoC;IAEpC,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAErE,yBAAyB;IACzB,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;IAE3C,IAAI,CAAC;QACH,yBAAyB;QACzB,UAAU,CAAC,OAAO,GAAG,aAAa,CAAC;QAEnC,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB;QAChB,aAAa,CAAC,KAAK,CACjB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5D,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,2BAA2B;QAC3B,UAAU,CAAC,OAAO,GAAG,eAAe,CAAC;QAErC,iEAAiE;QACjE,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,WAAW,EAAE,CAAC;QAChB,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC;AAED,gCAAgC;AAChC,OAAO,EAAE,CAAC,EAAE,CAAC;AA+Db;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,oBAAoB;IACvB,OAAO,CAA8B;IACrC,EAAE,GAAqB,IAAI,CAAC;IAC5B,YAAY,GAAkB,IAAI,CAAC;IACnC,iBAAiB,GAAG,CAAC,CAAC;IACtB,oBAAoB,GAAG,EAAE,CAAC;IAC1B,cAAc,GAAG,IAAI,CAAC;IACtB,YAAY,GAAG,KAAK,CAAC;IACrB,eAAe,GAAG,IAAI,CAAC;IAE/B,0BAA0B;IAClB,iBAAiB,GAAG,KAAK,CAAC,CAAC,aAAa;IACxC,gBAAgB,GAAG,KAAK,CAAC,CAAC,6BAA6B;IACvD,cAAc,GAA0C,IAAI,CAAC;IAC7D,qBAAqB,GAAyC,IAAI,CAAC;IACnE,YAAY,GAAG,KAAK,CAAC;IAE7B,YAAY,OAAoC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,QAAQ;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;aAC1B,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;aAC7B,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;aAC3B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,IAAI,MAAc,CAAC;QAEnB,IAAI,GAAG,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAClD,CAAC;QAED,sEAAsE;QACtE,OAAO,GAAG,MAAM,sBAAsB,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAE5B,0EAA0E;gBAC1E,MAAM,aAAa,GAAG,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnF,IAAI,CAAC,EAAE,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;gBAEjC,IAAI,CAAC,EAAG,CAAC,MAAM,GAAG,GAAG,EAAE;oBACrB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBACnD,CAAC,CAAC;gBAEF,IAAI,CAAC,EAAG,CAAC,SAAS,GAAG,KAAK,EAAE,KAAgC,EAAE,EAAE;oBAC9D,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACjF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC,CAAC;gBAEF,IAAI,CAAC,EAAG,CAAC,OAAO,GAAG,CAAC,KAAoB,EAAE,EAAE;oBAC1C,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBAC1E,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC7D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC;gBAEF,IAAI,CAAC,EAAG,CAAC,OAAO,GAAG,GAAG,EAAE;oBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;oBACpD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;oBAChC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,cAA2B;QACnE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;YAElD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,WAAW;oBACd,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;oBAClD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACrE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;oBAC7B,cAAc,EAAE,EAAE,CAAC;oBACnB,MAAM;gBAER,KAAK,cAAc;oBACjB,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAA6B,CAAC,CAAC;oBAC5D,MAAM;gBAER,KAAK,MAAM;oBACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC/B,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;wBACzC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;oBACpC,CAAC;oBACD,MAAM;gBAER,KAAK,OAAO;oBACV,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC5D,MAAM;YACV,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,OAA2B;QACzD,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,CAAC,YAAY,gBAAgB,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAE9G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACpF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,+BAA+B;YAC/B,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE5E,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,CAAC,YAAY,GAAG,EAAE,YAAY,CAAC,CAAC;YAExF,iBAAiB;YACjB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,OAA2B,EAC3B,MAA8D,EAC9D,UAAkB;QAElB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAErC,IAAI,OAAe,CAAC;QACpB,IAAI,GAAG,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,OAAO,GAAG,GAAG,IAAI,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,GAAG,IAAI,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAChE,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,OAAO,UAAU,OAAO,CAAC,MAAM,aAAa,CAAC;QAE5D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;iBACjD;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,KAAK;oBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,UAAU;iBACX,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,6CAA6C,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACvG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBAE/C,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;wBACpE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;oBACnB,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE7F,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,eAAe,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAEzH,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC;IAChD,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tthr/server",
|
|
3
|
-
"version": "0.0.
|
|
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
|
+
}
|