tiktok-live-api 1.4.2 → 1.4.5

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 CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  > šŸ“– **Full documentation, guides, and dashboard → [tik.tools](https://tik.tools)**  |  šŸ **Python SDK → [tik.tools/guides/python-tiktok-live](https://tik.tools/guides/python-tiktok-live)**  |  šŸ”Œ **WebSocket API → [tik.tools/websocket](https://tik.tools/websocket)**
8
8
 
9
- **Unofficial TikTok LIVE API Client for Node.js & TypeScript** — Connect to any TikTok LIVE stream and receive real-time chat messages, gifts, likes, follows, viewer counts, battles, and more. Includes AI-powered live captions (speech-to-text). Powered by the [TikTool](https://tik.tools) managed API.
9
+ **Unofficial TikTok LIVE API Client for Node.js & TypeScript** - Connect to any TikTok LIVE stream and receive real-time chat messages, gifts, likes, follows, viewer counts, battles, and more. Includes AI-powered live captions (speech-to-text). Powered by the [TikTool](https://tik.tools) managed API.
10
10
 
11
11
  [![npm](https://img.shields.io/npm/v/tiktok-live-api)](https://www.npmjs.com/package/tiktok-live-api)
12
12
  [![npm downloads](https://img.shields.io/npm/dm/tiktok-live-api)](https://www.npmjs.com/package/tiktok-live-api)
@@ -14,10 +14,10 @@
14
14
  [![License](https://img.shields.io/npm/l/tiktok-live-api)](https://github.com/tiktool/tiktok-live-api/blob/main/LICENSE)
15
15
 
16
16
  <p align="center">
17
- <img src="https://raw.githubusercontent.com/tiktool/tiktok-live-api/main/tiktok-live-api.gif" alt="TikTok Live API Demo — real-time chat, gifts, and viewer events" width="700">
17
+ <img src="https://raw.githubusercontent.com/tiktool/tiktok-live-api/main/tiktok-live-api.gif" alt="TikTok Live API Demo - real-time chat, gifts, and viewer events" width="700">
18
18
  </p>
19
19
 
20
- > This package is **not affiliated with or endorsed by TikTok**. It connects to the [TikTool Live](https://tik.tools) managed API service — 99.9% uptime, no reverse engineering, no maintenance required. Also available for [Python](https://pypi.org/project/tiktok-live-api/) and [any language via WebSocket](https://tik.tools/docs).
20
+ > This package is **not affiliated with or endorsed by TikTok**. It connects to the [TikTool Live](https://tik.tools) managed API service - 99.9% uptime, no reverse engineering, no maintenance required. Also available for [Python](https://pypi.org/project/tiktok-live-api/) and [any language via WebSocket](https://tik.tools/docs).
21
21
 
22
22
  ## Install
23
23
 
@@ -66,14 +66,14 @@ That's it. **No complex setup, no protobuf, no reverse engineering, no breakages
66
66
 
67
67
  ---
68
68
 
69
- ## šŸš€ Try It Now — Live Demo
69
+ ## šŸš€ Try It Now - Live Demo
70
70
 
71
- Copy-paste this into a file and run it. Connects to a live TikTok stream and prints every event in real time. Works on the free Community tier — 2 hours per WebSocket connection.
71
+ Copy-paste this into a file and run it. Connects to a live TikTok stream and prints every event in real time. Works on the free Community tier - 2 hours per WebSocket connection.
72
72
 
73
73
  **Save as `demo.mjs` and run with `node demo.mjs`:**
74
74
 
75
75
  ```javascript
76
- // demo.mjs — TikTok LIVE in real time
76
+ // demo.mjs - TikTok LIVE in real time
77
77
  // npm install tiktok-live-api
78
78
  import { TikTokLive } from 'tiktok-live-api';
79
79
 
@@ -90,7 +90,7 @@ client.on('member', e => { events++; console.log(`šŸ‘‹ ${e.user.uniqueId} j
90
90
  client.on('follow', e => { events++; console.log(`āž• ${e.user.uniqueId} followed`); });
91
91
  client.on('roomUserSeq', e => { events++; console.log(`šŸ‘€ Viewers: ${e.viewerCount}`); });
92
92
 
93
- client.on('connected', () => console.log(`\nāœ… Connected to @${LIVE_USERNAME} — streaming events...\n`));
93
+ client.on('connected', () => console.log(`\nāœ… Connected to @${LIVE_USERNAME} - streaming events...\n`));
94
94
  client.on('disconnected', () => console.log(`\nšŸ“Š Disconnected. Received ${events} events.\n`));
95
95
 
96
96
  client.connect();
@@ -101,7 +101,7 @@ client.connect();
101
101
  <summary><strong>šŸ”Œ Pure WebSocket version (no SDK, any language)</strong></summary>
102
102
 
103
103
  ```javascript
104
- // ws-demo.mjs — Pure WebSocket, zero SDK
104
+ // ws-demo.mjs - Pure WebSocket, zero SDK
105
105
  // npm install ws
106
106
  import WebSocket from 'ws';
107
107
 
@@ -111,7 +111,7 @@ const LIVE_USERNAME = 'tv_asahi_news';
111
111
  const ws = new WebSocket(`wss://api.tik.tools?uniqueId=${LIVE_USERNAME}&apiKey=${API_KEY}`);
112
112
  let events = 0;
113
113
 
114
- ws.on('open', () => console.log(`\nāœ… Connected to @${LIVE_USERNAME} — streaming events...\n`));
114
+ ws.on('open', () => console.log(`\nāœ… Connected to @${LIVE_USERNAME} - streaming events...\n`));
115
115
  ws.on('message', (raw) => {
116
116
  const msg = JSON.parse(raw);
117
117
  events++;
@@ -190,7 +190,7 @@ client.connect();
190
190
  | `subscribe` | New subscriber | `user` |
191
191
  | `roomUserSeq` | Viewer count | `viewerCount`, `topViewers` |
192
192
  | `battle` | PK start / end / status change | `battleId`, `status` (1=ACTIVE / 2=STARTING / 3=ENDED / 4=PREPARING), `battleDuration`, `teams` |
193
- | `battleArmies` | Live PK score update | `battleId`, `status`, `matchId`, `sessionId`, `durationSec`, `secsRemaining`, `hosts[]` — each host has `teamTotalScore` + `contributors[]` (MVP first) |
193
+ | `battleArmies` | Live PK score update | `battleId`, `status`, `matchId`, `sessionId`, `durationSec`, `secsRemaining`, `hosts[]` - each host has `teamTotalScore` + `contributors[]` (MVP first) |
194
194
  | `battleItemCard` | Booster multipliers, gloves, mist, match-guide, thunder, extra-time | `effect` (`'gloves'` / `'mist'` / `'booster_x2'` / `'booster_x3'` / `'match_guide'` / ...), `multiplier` (2 or 3), `senderUserId`, `senderNickname`, `activatedAtSec`, `durationSec`, `endsAtSec`, `commentTemplate` |
195
195
  | `roomPin` | Pinned/starred message | `user`, `comment`, `action`, `durationSeconds` |
196
196
  | `envelope` | Treasure chest | `diamonds`, `user` |
@@ -231,7 +231,7 @@ await client.connect();
231
231
 
232
232
  ## Live Captions (Speech-to-Text)
233
233
 
234
- Transcribe and translate any TikTok LIVE stream in real-time. **This feature is unique to TikTool Live — no other TikTok library offers it.**
234
+ Transcribe and translate any TikTok LIVE stream in real-time. **This feature is unique to TikTool Live - no other TikTok library offers it.**
235
235
 
236
236
  ```typescript
237
237
  import { TikTokCaptions } from 'tiktok-live-api';
@@ -291,7 +291,7 @@ client.on('chat', (event) => {
291
291
  .sort((a, b) => b[1] - a[1])
292
292
  .slice(0, 5);
293
293
  top.forEach(([name, diamonds], i) => {
294
- console.log(` ${i + 1}. ${name} — ${diamonds} šŸ’Ž`);
294
+ console.log(` ${i + 1}. ${name} - ${diamonds} šŸ’Ž`);
295
295
  });
296
296
  }
297
297
  });
@@ -314,7 +314,7 @@ import { TikTokLive, ChatEvent, GiftEvent } from 'tiktok-live-api';
314
314
 
315
315
  const client = new TikTokLive('streamer', { apiKey: 'KEY' });
316
316
 
317
- // Full autocompletion — your IDE knows the type of `event`
317
+ // Full autocompletion - your IDE knows the type of `event`
318
318
  client.on('chat', (event: ChatEvent) => {
319
319
  console.log(event.user.uniqueId); // āœ“ typed
320
320
  console.log(event.comment); // āœ“ typed
@@ -337,12 +337,12 @@ client.on('gift', (event: GiftEvent) => {
337
337
  | `maxReconnectAttempts` | `number` | `5` | Max reconnection attempts |
338
338
 
339
339
  **Methods:**
340
- - `client.on(event, handler)` — Register event handler
341
- - `client.off(event, handler)` — Remove event handler
342
- - `client.connect()` — Connect to stream (returns Promise)
343
- - `client.disconnect()` — Disconnect from stream
344
- - `client.connected` — Whether currently connected
345
- - `client.eventCount` — Total events received
340
+ - `client.on(event, handler)` - Register event handler
341
+ - `client.off(event, handler)` - Remove event handler
342
+ - `client.connect()` - Connect to stream (returns Promise)
343
+ - `client.disconnect()` - Disconnect from stream
344
+ - `client.connected` - Whether currently connected
345
+ - `client.eventCount` - Total events received
346
346
 
347
347
  ### `new TikTokCaptions(uniqueId, options?)`
348
348
 
@@ -354,11 +354,11 @@ client.on('gift', (event: GiftEvent) => {
354
354
  | `maxDurationMinutes` | `number` | `60` | Auto-disconnect timer |
355
355
 
356
356
  **Methods:**
357
- - `captions.on(event, handler)` — Register event handler
358
- - `captions.off(event, handler)` — Remove event handler
359
- - `captions.connect()` — Start receiving captions (returns Promise)
360
- - `captions.disconnect()` — Stop receiving captions
361
- - `captions.connected` — Whether currently connected
357
+ - `captions.on(event, handler)` - Register event handler
358
+ - `captions.off(event, handler)` - Remove event handler
359
+ - `captions.connect()` - Start receiving captions (returns Promise)
360
+ - `captions.disconnect()` - Stop receiving captions
361
+ - `captions.connected` - Whether currently connected
362
362
 
363
363
  ## Why tiktok-live-api?
364
364
 
@@ -368,7 +368,7 @@ client.on('gift', (event: GiftEvent) => {
368
368
  | **TypeScript** | āœ“ First-class, fully typed | Partial | N/A |
369
369
  | **Live Captions** | āœ“ AI speech-to-text | āœ— | āœ— |
370
370
  | **Translation** | āœ“ Real-time, 50+ languages | āœ— | āœ— |
371
- | **Maintenance** | āœ“ Zero — we handle it | āœ— You fix breakages | āœ— You fix breakages |
371
+ | **Maintenance** | āœ“ Zero - we handle it | āœ— You fix breakages | āœ— You fix breakages |
372
372
  | **CAPTCHA Solving** | āœ“ Built-in (Pro+) | āœ— | āœ— |
373
373
  | **Feed Discovery** | āœ“ See who's live | āœ— | āœ— |
374
374
  | **Free Tier** | āœ“ 2,500 req/day, 15 WS, 2h per WS | āœ“ Free (unreliable) | āœ“ Free (unreliable) |
@@ -379,18 +379,18 @@ client.on('gift', (event: GiftEvent) => {
379
379
  | Tier | Requests/Day | WebSocket Connections | Price |
380
380
  |------|-------------|----------------------|-------|
381
381
  | Community | 2,500 | 15 (2h per WS) | Free forever |
382
- | Pro | 75,000 | 50 (8h per WS) | from $59/mo +tax |
383
- | Ultra | 300,000 | 250 (8h per WS) | from $219/mo +tax |
384
- | **Global Agency** | 300,000 | 500 (8h per WS) + Firehose | $549/mo +tax |
382
+ | Pro | 75,000 | 50 (8h per WS) | from $19/wk +tax |
383
+ | Ultra | 300,000 | 250 (8h per WS) | from $69/wk +tax |
384
+ | **Global Agency** | 300,000 | 500 (8h per WS) + Firehose | $149/wk or $549/mo +tax |
385
385
 
386
386
  Full plan details at [tik.tools/pricing](https://tik.tools/pricing). Highlights:
387
387
 
388
- - **Community** ($0 forever): 2,500 req/day Ā· 15 WS Ā· 2 hours per connection Ā· masked leaderboards. Designed for devs building apps — upgrade when you need real usernames. No datacenter proxies; calls must come from your own IP.
389
- - **Pro** (monthly): 75K req/day Ā· 50 WS Ā· unmasked leaderboards Ā· CAPTCHA Solver Ā· Feed Discovery Ā· 5 AI caption streams Ā· priority routing Ā· chat support
390
- - **Ultra** (monthly): 300K req/day Ā· 250 WS Ā· 20 AI caption streams Ā· **League Rankings API** unmasked Ā· 99.5% uptime SLA Ā· priority chat support
391
- - **Global Agency** ($549/mo): Everything in Ultra + **Live Gifter Firehose WS** (region/league/global filters, min-diamond threshold) + VIP Telegram alerts + VIP Web Vault (unmasked historical visual access)
388
+ - **Community** ($0 forever): 2,500 req/day Ā· 15 WS Ā· 2 hours per connection Ā· masked leaderboards. Designed for devs building apps - upgrade when you need real usernames. No datacenter proxies; calls must come from your own IP.
389
+ - **Pro** ($19/wk): 75K req/day Ā· 50 WS Ā· unmasked leaderboards Ā· Feed Discovery Ā· 5 AI caption streams Ā· priority routing Ā· chat support
390
+ - **Ultra** ($69/wk): 300K req/day Ā· 250 WS Ā· 20 AI caption streams Ā· **League Rankings API** unmasked Ā· 99.5% uptime SLA Ā· priority chat support
391
+ - **Global Agency** ($149/wk or $549/mo): Everything in Ultra + **Live Gifter Firehose WS** (region/league/global filters, min-diamond threshold) + VIP Telegram alerts + VIP Web Vault (unmasked historical visual access)
392
392
 
393
- ### Live Gifter Firehose — Global Agency
393
+ ### Live Gifter Firehose - Global Agency
394
394
 
395
395
  Real-time gift event stream from our Dragonfly fan-out. Filter by region, league, or globally; cap by minimum diamond threshold. Mid-stream filter updates supported via `update_filter` frame, no reconnect needed.
396
396
 
package/dist/index.d.mts CHANGED
@@ -69,7 +69,7 @@ interface BattleEvent {
69
69
  teams: Array<Record<string, unknown>>;
70
70
  scores: number[];
71
71
  }
72
- /** One host on a battle side — present per-host in multi-guest PK. */
72
+ /** One host on a battle side - present per-host in multi-guest PK. */
73
73
  interface BattleHost {
74
74
  hostUserId: string;
75
75
  teamTotalScore: number;
@@ -82,7 +82,7 @@ interface BattleContributor {
82
82
  score: number;
83
83
  nickname: string;
84
84
  }
85
- /** Payload for `battleArmies` events — score updates during PK. */
85
+ /** Payload for `battleArmies` events - score updates during PK. */
86
86
  interface BattleArmiesEvent {
87
87
  battleId: string;
88
88
  /** 1=ACTIVE, 2=STARTING, 3=ENDED, 4=PREPARING */
@@ -98,7 +98,7 @@ interface BattleArmiesEvent {
98
98
  /** Per-host breakdown with MVP contributors. */
99
99
  hosts?: BattleHost[];
100
100
  }
101
- /** Payload for `battleItemCard` events — multipliers (x2/x3), gloves, mist, etc. */
101
+ /** Payload for `battleItemCard` events - multipliers (x2/x3), gloves, mist, etc. */
102
102
  interface BattleItemCardEvent {
103
103
  battleId: string;
104
104
  cardType: number;
@@ -212,7 +212,7 @@ interface TikTokCaptionsEventMap {
212
212
  }
213
213
 
214
214
  /**
215
- * TikTokLive — Connect to any TikTok LIVE stream via WebSocket.
215
+ * TikTokLive - Connect to any TikTok LIVE stream via WebSocket.
216
216
  *
217
217
  * Receives real-time events: chat messages, gifts, likes, follows,
218
218
  * viewer counts, battles, and more. Powered by the TikTool managed API.
@@ -327,10 +327,10 @@ declare class TikTokLive {
327
327
  }
328
328
 
329
329
  /**
330
- * TikTokCaptions — Real-time AI speech-to-text for TikTok LIVE streams.
330
+ * TikTokCaptions - Real-time AI speech-to-text for TikTok LIVE streams.
331
331
  *
332
332
  * Transcribe and translate any TikTok LIVE stream in real-time.
333
- * This feature is unique to TikTool Live — no other service offers it.
333
+ * This feature is unique to TikTool Live - no other service offers it.
334
334
  *
335
335
  * @example
336
336
  * ```typescript
package/dist/index.d.ts CHANGED
@@ -69,7 +69,7 @@ interface BattleEvent {
69
69
  teams: Array<Record<string, unknown>>;
70
70
  scores: number[];
71
71
  }
72
- /** One host on a battle side — present per-host in multi-guest PK. */
72
+ /** One host on a battle side - present per-host in multi-guest PK. */
73
73
  interface BattleHost {
74
74
  hostUserId: string;
75
75
  teamTotalScore: number;
@@ -82,7 +82,7 @@ interface BattleContributor {
82
82
  score: number;
83
83
  nickname: string;
84
84
  }
85
- /** Payload for `battleArmies` events — score updates during PK. */
85
+ /** Payload for `battleArmies` events - score updates during PK. */
86
86
  interface BattleArmiesEvent {
87
87
  battleId: string;
88
88
  /** 1=ACTIVE, 2=STARTING, 3=ENDED, 4=PREPARING */
@@ -98,7 +98,7 @@ interface BattleArmiesEvent {
98
98
  /** Per-host breakdown with MVP contributors. */
99
99
  hosts?: BattleHost[];
100
100
  }
101
- /** Payload for `battleItemCard` events — multipliers (x2/x3), gloves, mist, etc. */
101
+ /** Payload for `battleItemCard` events - multipliers (x2/x3), gloves, mist, etc. */
102
102
  interface BattleItemCardEvent {
103
103
  battleId: string;
104
104
  cardType: number;
@@ -212,7 +212,7 @@ interface TikTokCaptionsEventMap {
212
212
  }
213
213
 
214
214
  /**
215
- * TikTokLive — Connect to any TikTok LIVE stream via WebSocket.
215
+ * TikTokLive - Connect to any TikTok LIVE stream via WebSocket.
216
216
  *
217
217
  * Receives real-time events: chat messages, gifts, likes, follows,
218
218
  * viewer counts, battles, and more. Powered by the TikTool managed API.
@@ -327,10 +327,10 @@ declare class TikTokLive {
327
327
  }
328
328
 
329
329
  /**
330
- * TikTokCaptions — Real-time AI speech-to-text for TikTok LIVE streams.
330
+ * TikTokCaptions - Real-time AI speech-to-text for TikTok LIVE streams.
331
331
  *
332
332
  * Transcribe and translate any TikTok LIVE stream in real-time.
333
- * This feature is unique to TikTool Live — no other service offers it.
333
+ * This feature is unique to TikTool Live - no other service offers it.
334
334
  *
335
335
  * @example
336
336
  * ```typescript
package/package.json CHANGED
@@ -1,84 +1,84 @@
1
- {
2
- "name": "tiktok-live-api",
3
- "version": "1.4.2",
4
- "description": "Unofficial TikTok LIVE API Client — Real-time chat, gifts, viewers, battles, and AI live captions from any TikTok livestream. Managed WebSocket API with 99.9% uptime.",
5
- "main": "dist/index.js",
6
- "module": "dist/index.mjs",
7
- "types": "dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.mjs",
12
- "require": "./dist/index.js"
13
- }
14
- },
15
- "files": [
16
- "dist",
17
- "README.md",
18
- "LICENSE"
19
- ],
20
- "scripts": {
21
- "build": "tsup src/index.ts --format cjs,esm --dts --clean",
22
- "prepublishOnly": "npm run build"
23
- },
24
- "keywords": [
25
- "tiktok",
26
- "tiktok-live",
27
- "tiktok-api",
28
- "tiktok-live-api",
29
- "tiktok-live-connector",
30
- "tiktok-live-sdk",
31
- "tiktok-websocket",
32
- "tiktok-chat",
33
- "tiktok-gifts",
34
- "tiktok-bot",
35
- "tiktok-data",
36
- "tiktok-stream",
37
- "tiktok-events",
38
- "tiktok-viewer",
39
- "live-streaming",
40
- "live-chat",
41
- "webcast",
42
- "websocket",
43
- "real-time",
44
- "speech-to-text",
45
- "captions",
46
- "transcription",
47
- "translation",
48
- "tiktok-live-python",
49
- "tiktok-tools",
50
- "euler-stream",
51
- "tiktoklive",
52
- "tiktok-connector",
53
- "tiktok-live-node",
54
- "tiktok-live-js",
55
- "tiktok-scraper",
56
- "tiktok-monitoring",
57
- "livestream-api"
58
- ],
59
- "author": {
60
- "name": "TikTool",
61
- "email": "support@tik.tools",
62
- "url": "https://tik.tools"
63
- },
64
- "license": "MIT",
65
- "repository": {
66
- "type": "git",
67
- "url": "https://github.com/tiktool/tiktok-live-api"
68
- },
69
- "bugs": {
70
- "url": "https://github.com/tiktool/tiktok-live-api/issues"
71
- },
72
- "homepage": "https://tik.tools",
73
- "dependencies": {
74
- "ws": "^8.16.0"
75
- },
76
- "devDependencies": {
77
- "@types/ws": "^8.5.10",
78
- "tsup": "^8.0.0",
79
- "typescript": "^5.3.0"
80
- },
81
- "engines": {
82
- "node": ">=16.0.0"
83
- }
84
- }
1
+ {
2
+ "name": "tiktok-live-api",
3
+ "version": "1.4.5",
4
+ "description": "Unofficial TikTok LIVE API Client - Real-time chat, gifts, viewers, battles, and AI live captions from any TikTok livestream. Managed WebSocket API with 99.9% uptime.",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsup src/index.ts --format cjs,esm --dts --clean",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "keywords": [
25
+ "tiktok",
26
+ "tiktok-live",
27
+ "tiktok-api",
28
+ "tiktok-live-api",
29
+ "tiktok-live-connector",
30
+ "tiktok-live-sdk",
31
+ "tiktok-websocket",
32
+ "tiktok-chat",
33
+ "tiktok-gifts",
34
+ "tiktok-bot",
35
+ "tiktok-data",
36
+ "tiktok-stream",
37
+ "tiktok-events",
38
+ "tiktok-viewer",
39
+ "live-streaming",
40
+ "live-chat",
41
+ "webcast",
42
+ "websocket",
43
+ "real-time",
44
+ "speech-to-text",
45
+ "captions",
46
+ "transcription",
47
+ "translation",
48
+ "tiktok-live-python",
49
+ "tiktok-tools",
50
+ "euler-stream",
51
+ "tiktoklive",
52
+ "tiktok-connector",
53
+ "tiktok-live-node",
54
+ "tiktok-live-js",
55
+ "tiktok-scraper",
56
+ "tiktok-monitoring",
57
+ "livestream-api"
58
+ ],
59
+ "author": {
60
+ "name": "TikTool",
61
+ "email": "support@tik.tools",
62
+ "url": "https://tik.tools"
63
+ },
64
+ "license": "MIT",
65
+ "repository": {
66
+ "type": "git",
67
+ "url": "https://github.com/tiktool/tiktok-live-api"
68
+ },
69
+ "bugs": {
70
+ "url": "https://github.com/tiktool/tiktok-live-api/issues"
71
+ },
72
+ "homepage": "https://tik.tools",
73
+ "dependencies": {
74
+ "ws": "^8.16.0"
75
+ },
76
+ "devDependencies": {
77
+ "@types/ws": "^8.5.10",
78
+ "tsup": "^8.0.0",
79
+ "typescript": "^5.3.0"
80
+ },
81
+ "engines": {
82
+ "node": ">=16.0.0"
83
+ }
84
+ }