kentutai-app 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +32 -0
- package/Dockerfile +52 -0
- package/LICENSE +21 -0
- package/README.md +1318 -0
- package/README.zh-CN.md +1311 -0
- package/captain-definition +4 -0
- package/check-connections.js +20 -0
- package/check-db.js +41 -0
- package/check-key.js +20 -0
- package/check-key2.js +21 -0
- package/check-mimo-conn.js +29 -0
- package/check-mimo.js +22 -0
- package/check-nodes.js +26 -0
- package/check-nodes2.js +29 -0
- package/check-providers.js +48 -0
- package/dev.log +15 -0
- package/next-env.d.ts +6 -0
- package/opencode.json +22 -0
- package/package.json +65 -0
- package/public/favicon.png +0 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/i18n/literals/ar.json +194 -0
- package/public/i18n/literals/bn.json +194 -0
- package/public/i18n/literals/cs.json +194 -0
- package/public/i18n/literals/da.json +194 -0
- package/public/i18n/literals/de.json +194 -0
- package/public/i18n/literals/el.json +194 -0
- package/public/i18n/literals/es.json +194 -0
- package/public/i18n/literals/fi.json +194 -0
- package/public/i18n/literals/fr.json +194 -0
- package/public/i18n/literals/he.json +194 -0
- package/public/i18n/literals/hi.json +194 -0
- package/public/i18n/literals/hu.json +194 -0
- package/public/i18n/literals/id.json +194 -0
- package/public/i18n/literals/it.json +194 -0
- package/public/i18n/literals/ja.json +194 -0
- package/public/i18n/literals/ko.json +194 -0
- package/public/i18n/literals/nl.json +194 -0
- package/public/i18n/literals/no.json +194 -0
- package/public/i18n/literals/pl.json +194 -0
- package/public/i18n/literals/pt-BR.json +194 -0
- package/public/i18n/literals/pt-PT.json +194 -0
- package/public/i18n/literals/ro.json +194 -0
- package/public/i18n/literals/ru.json +194 -0
- package/public/i18n/literals/sv.json +194 -0
- package/public/i18n/literals/th.json +194 -0
- package/public/i18n/literals/tl.json +194 -0
- package/public/i18n/literals/tr.json +194 -0
- package/public/i18n/literals/uk.json +194 -0
- package/public/i18n/literals/ur.json +194 -0
- package/public/i18n/literals/vi.json +194 -0
- package/public/i18n/literals/zh-CN.json +768 -0
- package/public/i18n/literals/zh-TW.json +194 -0
- package/public/icon.ico +0 -0
- package/public/icons/icon-192.svg +4 -0
- package/public/icons/icon-512.svg +4 -0
- package/public/kentutai-icon.png +0 -0
- package/public/kentutai-logo.png +0 -0
- package/public/next.svg +1 -0
- package/public/providers/alicode-intl.png +0 -0
- package/public/providers/alicode.png +0 -0
- package/public/providers/amp.png +0 -0
- package/public/providers/anthropic-m.png +0 -0
- package/public/providers/anthropic.png +0 -0
- package/public/providers/antigravity.png +0 -0
- package/public/providers/assemblyai.png +0 -0
- package/public/providers/aws-polly.png +0 -0
- package/public/providers/azure.png +0 -0
- package/public/providers/black-forest-labs.png +0 -0
- package/public/providers/blackbox.png +0 -0
- package/public/providers/brave-search.png +0 -0
- package/public/providers/byteplus.png +0 -0
- package/public/providers/cartesia.png +0 -0
- package/public/providers/cerebras.png +0 -0
- package/public/providers/chutes.png +0 -0
- package/public/providers/claude.png +0 -0
- package/public/providers/cline.png +0 -0
- package/public/providers/cloudflare-ai.png +0 -0
- package/public/providers/codex.png +0 -0
- package/public/providers/cohere.png +0 -0
- package/public/providers/comfyui.png +0 -0
- package/public/providers/commandcode.png +0 -0
- package/public/providers/continue.png +0 -0
- package/public/providers/copilot.png +0 -0
- package/public/providers/coqui.png +0 -0
- package/public/providers/cursor.png +0 -0
- package/public/providers/deepgram.png +0 -0
- package/public/providers/deepseek-tui.png +0 -0
- package/public/providers/deepseek.png +0 -0
- package/public/providers/droid.png +0 -0
- package/public/providers/edge-tts.png +0 -0
- package/public/providers/elevenlabs.png +0 -0
- package/public/providers/exa.png +0 -0
- package/public/providers/fal-ai.png +0 -0
- package/public/providers/firecrawl.png +0 -0
- package/public/providers/fireworks.png +0 -0
- package/public/providers/gemini-cli.png +0 -0
- package/public/providers/gemini.png +0 -0
- package/public/providers/github.png +0 -0
- package/public/providers/glm-cn.png +0 -0
- package/public/providers/glm.png +0 -0
- package/public/providers/google-pse.png +0 -0
- package/public/providers/google-tts.png +0 -0
- package/public/providers/grok-web.png +0 -0
- package/public/providers/groq.png +0 -0
- package/public/providers/hermes.png +0 -0
- package/public/providers/huggingface.png +0 -0
- package/public/providers/hyperbolic.png +0 -0
- package/public/providers/iflow.png +0 -0
- package/public/providers/inworld.png +0 -0
- package/public/providers/jcode.png +0 -0
- package/public/providers/jina-ai.png +0 -0
- package/public/providers/jina-reader.png +0 -0
- package/public/providers/kilocode.png +0 -0
- package/public/providers/kimi-coding.png +0 -0
- package/public/providers/kimi.png +0 -0
- package/public/providers/kiro.png +0 -0
- package/public/providers/linkup.png +0 -0
- package/public/providers/local-device.png +0 -0
- package/public/providers/minimax-cn.png +0 -0
- package/public/providers/minimax.png +0 -0
- package/public/providers/mistral.png +0 -0
- package/public/providers/nanobanana.png +0 -0
- package/public/providers/nebius.png +0 -0
- package/public/providers/nvidia.png +0 -0
- package/public/providers/oai-cc.png +0 -0
- package/public/providers/oai-r.png +0 -0
- package/public/providers/ollama-local.png +0 -0
- package/public/providers/ollama.png +0 -0
- package/public/providers/openai.png +0 -0
- package/public/providers/openclaw.png +0 -0
- package/public/providers/opencode-go.png +0 -0
- package/public/providers/opencode.png +0 -0
- package/public/providers/openrouter.png +0 -0
- package/public/providers/perplexity-web.png +0 -0
- package/public/providers/perplexity.png +0 -0
- package/public/providers/playht.png +0 -0
- package/public/providers/qwen.png +0 -0
- package/public/providers/recraft.png +0 -0
- package/public/providers/roo.png +0 -0
- package/public/providers/runwayml.png +0 -0
- package/public/providers/sdwebui.png +0 -0
- package/public/providers/searchapi.png +0 -0
- package/public/providers/searxng.png +0 -0
- package/public/providers/serper.png +0 -0
- package/public/providers/siliconflow.png +0 -0
- package/public/providers/stability-ai.png +0 -0
- package/public/providers/tavily.png +0 -0
- package/public/providers/together.png +0 -0
- package/public/providers/topaz.png +0 -0
- package/public/providers/tortoise.png +0 -0
- package/public/providers/vertex-partner.png +0 -0
- package/public/providers/vertex.png +0 -0
- package/public/providers/volcengine-ark.png +0 -0
- package/public/providers/voyage-ai.png +0 -0
- package/public/providers/xai.png +0 -0
- package/public/providers/xiaomi-mimo.png +0 -0
- package/public/providers/xiaomi-tokenplan.png +0 -0
- package/public/providers/youcom.png +0 -0
- package/public/sw.js +22 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/start.sh +4 -0
- package/vitest.config.js +21 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Cancel": "取消",
|
|
3
|
+
"Delete": "刪除",
|
|
4
|
+
"Edit": "編輯",
|
|
5
|
+
"Save": "保存",
|
|
6
|
+
"Close": "關閉",
|
|
7
|
+
"Add": "添加",
|
|
8
|
+
"Remove": "移除",
|
|
9
|
+
"Settings": "設置",
|
|
10
|
+
"Profile": "個人資料",
|
|
11
|
+
"Dashboard": "儀表板",
|
|
12
|
+
"Logout": "登出",
|
|
13
|
+
"Login": "登錄",
|
|
14
|
+
"Providers": "提供者",
|
|
15
|
+
"Usage": "統計",
|
|
16
|
+
"API Key": "API 金鑰",
|
|
17
|
+
"Connected": "已連接",
|
|
18
|
+
"Disconnected": "未連接",
|
|
19
|
+
"Active": "活躍",
|
|
20
|
+
"Inactive": "非活躍",
|
|
21
|
+
"Success": "成功",
|
|
22
|
+
"Failed": "失敗",
|
|
23
|
+
"Error": "錯誤",
|
|
24
|
+
"Warning": "警告",
|
|
25
|
+
"Info": "信息",
|
|
26
|
+
"Loading": "載入中",
|
|
27
|
+
"Search": "搜尋",
|
|
28
|
+
"Filter": "篩選",
|
|
29
|
+
"Sort": "排序",
|
|
30
|
+
"Export": "導出",
|
|
31
|
+
"Import": "導入",
|
|
32
|
+
"Refresh": "刷新",
|
|
33
|
+
"Back": "返回",
|
|
34
|
+
"Next": "下一個",
|
|
35
|
+
"Previous": "上一個",
|
|
36
|
+
"Submit": "提交",
|
|
37
|
+
"Confirm": "確認",
|
|
38
|
+
"Yes": "是",
|
|
39
|
+
"No": "否",
|
|
40
|
+
"OK": "確定",
|
|
41
|
+
"Apply": "應用",
|
|
42
|
+
"Reset": "重置",
|
|
43
|
+
"Clear": "清除",
|
|
44
|
+
"Select": "選擇",
|
|
45
|
+
"Upload": "上傳",
|
|
46
|
+
"Download": "下載",
|
|
47
|
+
"Copy": "複製",
|
|
48
|
+
"Paste": "粘貼",
|
|
49
|
+
"Cut": "剪切",
|
|
50
|
+
"Undo": "撤銷",
|
|
51
|
+
"Redo": "重做",
|
|
52
|
+
"Name": "名稱",
|
|
53
|
+
"Description": "描述",
|
|
54
|
+
"Status": "狀態",
|
|
55
|
+
"Type": "類型",
|
|
56
|
+
"Date": "日期",
|
|
57
|
+
"Time": "時間",
|
|
58
|
+
"Created": "已建立",
|
|
59
|
+
"Updated": "已更新",
|
|
60
|
+
"Actions": "操作",
|
|
61
|
+
"Details": "詳細信息",
|
|
62
|
+
"View": "查看",
|
|
63
|
+
"New": "新建",
|
|
64
|
+
"Total": "總計",
|
|
65
|
+
"Count": "計數",
|
|
66
|
+
"Price": "價格",
|
|
67
|
+
"Cost": "成本",
|
|
68
|
+
"Free": "免費",
|
|
69
|
+
"Paid": "付費",
|
|
70
|
+
"Enable": "啟用",
|
|
71
|
+
"Disable": "禁用",
|
|
72
|
+
"Enabled": "已啟用",
|
|
73
|
+
"Disabled": "已禁用",
|
|
74
|
+
"Online": "在線",
|
|
75
|
+
"Offline": "離線",
|
|
76
|
+
"Available": "可用",
|
|
77
|
+
"Unavailable": "不可用",
|
|
78
|
+
"Required": "必需",
|
|
79
|
+
"Optional": "可選",
|
|
80
|
+
"Default": "默認",
|
|
81
|
+
"Custom": "自定義",
|
|
82
|
+
"Advanced": "進階",
|
|
83
|
+
"Basic": "基本",
|
|
84
|
+
"Help": "幫助",
|
|
85
|
+
"Support": "支持",
|
|
86
|
+
"Documentation": "文檔",
|
|
87
|
+
"Version": "版本",
|
|
88
|
+
"Language": "語言",
|
|
89
|
+
"Theme": "主題",
|
|
90
|
+
"Light": "淺色",
|
|
91
|
+
"Dark": "深色",
|
|
92
|
+
"Auto": "自動",
|
|
93
|
+
"Endpoint": "端點",
|
|
94
|
+
"Combos": "組合",
|
|
95
|
+
"Quota Tracker": "配額跟蹤",
|
|
96
|
+
"MITM": "MITM",
|
|
97
|
+
"CLI Tools": "CLI 工具",
|
|
98
|
+
"Console Log": "控制台日誌",
|
|
99
|
+
"System": "系統",
|
|
100
|
+
"Debug": "調試",
|
|
101
|
+
"Shutdown": "關機",
|
|
102
|
+
"Close Proxy": "關閉代理",
|
|
103
|
+
"Are you sure you want to close the proxy server?": "您確定要關閉代理服務器嗎?",
|
|
104
|
+
"Server Disconnected": "服務器已斷開連接",
|
|
105
|
+
"The proxy server has been stopped.": "代理服務器已停止。",
|
|
106
|
+
"Reload Page": "重新加載頁面",
|
|
107
|
+
"Service is running in terminal. You can close this web page. Shutdown will stop the service.": "服務在終端中運行。您可以關閉此網頁。關機將停止服務。",
|
|
108
|
+
"Manage your AI provider connections": "管理您的 AI 提供者連接",
|
|
109
|
+
"Model combos with fallback": "具有備用的模型組合",
|
|
110
|
+
"Monitor your API usage, token consumption, and request logs": "監控您的 API 使用、令牌消耗和請求日誌",
|
|
111
|
+
"Intercept CLI tool traffic and route through 9Router": "攔截 CLI 工具流量並通過 9Router 路由",
|
|
112
|
+
"Configure CLI tools": "配置 CLI 工具",
|
|
113
|
+
"API endpoint configuration": "API 端點配置",
|
|
114
|
+
"Manage your preferences": "管理您的首選項",
|
|
115
|
+
"Debug translation flow between formats": "調試格式之間的轉換流",
|
|
116
|
+
"Live server console output": "實時服務器控制台輸出",
|
|
117
|
+
"Create model combos with fallback support": "創建具有備用支持的模型組合",
|
|
118
|
+
"Local Mode": "本地模式",
|
|
119
|
+
"Running on your machine": "在您的機器上運行",
|
|
120
|
+
"Database Location": "數據庫位置",
|
|
121
|
+
"Download Backup": "下載備份",
|
|
122
|
+
"Import Backup": "導入備份",
|
|
123
|
+
"Database backup downloaded": "已下載數據庫備份",
|
|
124
|
+
"Database imported successfully": "已成功導入數據庫",
|
|
125
|
+
"Security": "安全性",
|
|
126
|
+
"Require login": "需要登錄",
|
|
127
|
+
"When ON, dashboard requires password. When OFF, access without login.": "打開時,儀表板需要密碼。關閉時,無需登錄即可訪問。",
|
|
128
|
+
"Current Password": "當前密碼",
|
|
129
|
+
"Enter current password": "輸入當前密碼",
|
|
130
|
+
"New Password": "新密碼",
|
|
131
|
+
"Enter new password": "輸入新密碼",
|
|
132
|
+
"Confirm New Password": "確認新密碼",
|
|
133
|
+
"Confirm new password": "確認新密碼",
|
|
134
|
+
"Update Password": "更新密碼",
|
|
135
|
+
"Set Password": "設置密碼",
|
|
136
|
+
"Password updated successfully": "已成功更新密碼",
|
|
137
|
+
"Passwords do not match": "密碼不匹配",
|
|
138
|
+
"Routing Strategy": "路由策略",
|
|
139
|
+
"Round Robin": "輪詢",
|
|
140
|
+
"Cycle through accounts to distribute load": "循環循環帳戶以分配負載",
|
|
141
|
+
"Sticky Limit": "粘性限制",
|
|
142
|
+
"Calls per account before switching": "切換前每個帳戶的調用次數",
|
|
143
|
+
"Network": "網絡",
|
|
144
|
+
"Outbound Proxy": "出站代理",
|
|
145
|
+
"Enable proxy for OAuth + provider outbound requests.": "為 OAuth + 提供者出站請求啟用代理。",
|
|
146
|
+
"Proxy URL": "代理 URL",
|
|
147
|
+
"Leave empty to inherit existing env proxy (if any).": "留空以繼承現有的環境代理(如果有)。",
|
|
148
|
+
"No Proxy": "無代理",
|
|
149
|
+
"Comma-separated hostnames/domains to bypass the proxy.": "逗號分隔的主機名/域以繞過代理。",
|
|
150
|
+
"Test proxy URL": "測試代理 URL",
|
|
151
|
+
"Proxy settings applied": "已應用代理設置",
|
|
152
|
+
"Proxy enabled": "已啟用代理",
|
|
153
|
+
"Proxy disabled": "已禁用代理",
|
|
154
|
+
"Proxy test OK": "代理測試成功",
|
|
155
|
+
"Proxy test failed": "代理測試失敗",
|
|
156
|
+
"Please enter a Proxy URL to test": "請輸入要測試的代理 URL",
|
|
157
|
+
"Observability": "可觀測性",
|
|
158
|
+
"Enable Observability": "啟用可觀測性",
|
|
159
|
+
"Turn request detail recording on/off globally": "全局打開/關閉請求詳細記錄",
|
|
160
|
+
"Max Records": "最大記錄數",
|
|
161
|
+
"Maximum request detail records to keep (older records are auto-deleted)": "要保留的最大請求詳細記錄數(舊記錄自動刪除)",
|
|
162
|
+
"Batch Size": "批量大小",
|
|
163
|
+
"Number of items to accumulate before writing to database (higher = better performance)": "寫入數據庫前要積累的項目數(更高 = 更好的性能)",
|
|
164
|
+
"Flush Interval (ms)": "刷新間隔 (ms)",
|
|
165
|
+
"Maximum time to wait before flushing buffer (prevents data loss during low traffic)": "刷新緩衝區之前的最大等待時間(防止低流量期間的數據丟失)",
|
|
166
|
+
"Max JSON Size (KB)": "最大 JSON 大小 (KB)",
|
|
167
|
+
"Maximum size for each JSON field (request/response) before truncation": "截斷前每個 JSON 字段(請求/響應)的最大大小",
|
|
168
|
+
"All data stored on your machine": "所有數據存儲在您的機器上",
|
|
169
|
+
"MITM Server": "MITM 服務器",
|
|
170
|
+
"Running": "運行中",
|
|
171
|
+
"Stopped": "已停止",
|
|
172
|
+
"Cert": "證書",
|
|
173
|
+
"Server": "服務器",
|
|
174
|
+
"Purpose:": "目的:",
|
|
175
|
+
"Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router": "使用 Antigravity IDE 和 GitHub Copilot → 與 9Router 中的任何提供者/模型一起",
|
|
176
|
+
"How it works:": "工作原理:",
|
|
177
|
+
"Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → 9Router → response to Antigravity/Copilot": "Antigravity/Copilot IDE 請求 → DNS 重定向到 localhost:443 → MITM 代理攔截 → 9Router → 响應到 Antigravity/Copilot",
|
|
178
|
+
"No API keys — create one in Keys page": "沒有 API 金鑰 — 在金鑰頁面中創建一個",
|
|
179
|
+
"sk_9router (default)": "sk_9router(默認)",
|
|
180
|
+
"Server started": "服務器已啟動",
|
|
181
|
+
"Failed to start server": "啟動服務器失敗",
|
|
182
|
+
"Server stopped — all DNS cleared": "服務器已停止 — 已清除所有 DNS",
|
|
183
|
+
"Failed to stop server": "停止服務器失敗",
|
|
184
|
+
"Sudo password is required": "需要 Sudo 密碼",
|
|
185
|
+
"Stop Server": "停止服務器",
|
|
186
|
+
"Start Server": "啟動服務器",
|
|
187
|
+
"Enable DNS per tool below to activate interception": "為下面的每個工具啟用 DNS 以激活攔截",
|
|
188
|
+
"Sudo Password Required": "需要 Sudo 密碼",
|
|
189
|
+
"Enter your sudo password to start/stop MITM server": "輸入您的 Sudo 密碼以啟動/停止 MITM 服務器",
|
|
190
|
+
"Sudo Password": "Sudo 密碼",
|
|
191
|
+
"Click to add, click again to remove. Changes are saved automatically.": "點擊新增,再次點擊移除。變更將自動儲存。",
|
|
192
|
+
"⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.": "⚠️ 風險提示:此提供商使用的訂閱/OAuth 工作階段未獲官方授權用於代理/路由器使用。帳戶可能被限制或封禁。使用風險自負。",
|
|
193
|
+
"⚠️ MITM intercepts HTTPS traffic of IDE tools (Antigravity, GitHub Copilot, Kiro) via local CA to redirect requests to your providers. May violate ToS → account ban. Use at your own risk.": "⚠️ MITM 透過本地 CA 攔截 IDE 工具(Antigravity、GitHub Copilot、Kiro)的 HTTPS 流量,將請求重新導向到您的提供商。可能違反 ToS → 帳戶封禁風險。使用風險自負。"
|
|
194
|
+
}
|
package/public/icon.ico
ADDED
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 192 192">
|
|
2
|
+
<rect width="192" height="192" rx="24" fill="#0a0a0a"/>
|
|
3
|
+
<text x="96" y="120" font-family="Arial, sans-serif" font-size="80" font-weight="bold" fill="#3B82F6" text-anchor="middle">KA</text>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
|
|
2
|
+
<rect width="512" height="512" rx="64" fill="#0a0a0a"/>
|
|
3
|
+
<text x="256" y="320" font-family="Arial, sans-serif" font-size="200" font-weight="bold" fill="#3B82F6" text-anchor="middle">KA</text>
|
|
4
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
package/public/next.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/public/sw.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
self.addEventListener('push', function (event) {
|
|
2
|
+
if (event.data) {
|
|
3
|
+
const data = event.data.json()
|
|
4
|
+
const options = {
|
|
5
|
+
body: data.body,
|
|
6
|
+
icon: data.icon || '/icons/icon-192.svg',
|
|
7
|
+
badge: '/icons/icon-192.svg',
|
|
8
|
+
vibrate: [100, 50, 100],
|
|
9
|
+
data: {
|
|
10
|
+
dateOfArrival: Date.now(),
|
|
11
|
+
primaryKey: '2',
|
|
12
|
+
},
|
|
13
|
+
}
|
|
14
|
+
event.waitUntil(self.registration.showNotification(data.title, options))
|
|
15
|
+
}
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
self.addEventListener('notificationclick', function (event) {
|
|
19
|
+
console.log('Notification click received.')
|
|
20
|
+
event.notification.close()
|
|
21
|
+
event.waitUntil(clients.openWindow('/'))
|
|
22
|
+
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|
package/start.sh
ADDED
package/vitest.config.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineConfig } from "vitest/config";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
|
|
5
|
+
const __dirname = fileURLToPath(new URL(".", import.meta.url));
|
|
6
|
+
|
|
7
|
+
export default defineConfig({
|
|
8
|
+
test: {
|
|
9
|
+
environment: "node",
|
|
10
|
+
globals: true,
|
|
11
|
+
include: ["src/**/*.test.{js,ts}"],
|
|
12
|
+
setupFiles: ["./src/__tests__/setup.js"],
|
|
13
|
+
fileParallelism: false,
|
|
14
|
+
},
|
|
15
|
+
resolve: {
|
|
16
|
+
alias: {
|
|
17
|
+
"@": resolve(__dirname, "src"),
|
|
18
|
+
"open-sse": resolve(__dirname, "open-sse"),
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|