mirror of
https://github.com/LingChair/LingChair-V0.git
synced 2025-12-08 01:55:50 +08:00
Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b38e156c79 | ||
|
|
2281e92909 | ||
|
|
2a9708bca3 | ||
|
|
2bde59e5cc | ||
|
|
afcec52b79 | ||
|
|
d38baca35f | ||
|
|
410fa1439d | ||
|
|
2f9c18d2b2 | ||
|
|
5bc4d1a01c | ||
|
|
d39cf69902 | ||
|
|
129ba2d27a | ||
|
|
81c314c734 | ||
|
|
81fde561b2 | ||
|
|
097e9280d2 | ||
|
|
95e27be9eb | ||
|
|
521d7590af | ||
|
|
6b5a33462f | ||
|
|
0baaa5b574 | ||
|
|
80fd1157dd | ||
|
|
1a86464a32 | ||
|
|
31d78b39f3 | ||
|
|
fb89952bcb | ||
|
|
70b314947d | ||
|
|
27369097eb | ||
|
|
76acd890f6 | ||
|
|
ebe5b43622 | ||
|
|
19a685ca8b | ||
|
|
65bcc768d7 | ||
|
|
dba5cbba5a | ||
|
|
9d0eb8c4f8 | ||
|
|
7f1479ffda | ||
|
|
4406b9c016 | ||
|
|
4c32b5235e | ||
|
|
8c709bf420 | ||
|
|
98d36d1079 | ||
|
|
d96f3163a2 | ||
|
|
b8e00858d3 | ||
|
|
baa6c084be | ||
|
|
81e9fb994d | ||
|
|
add555237a | ||
|
|
20990ed3b1 | ||
|
|
d4e3104ddf | ||
|
|
39b9127df8 | ||
|
|
45f557cd94 | ||
|
|
bf224acb4b | ||
|
|
045ed60211 | ||
|
|
facf7cb3fe |
@@ -1,32 +1,17 @@
|
||||
/*
|
||||
* 铃之椅 - 把选择权还给用户, 让聊天权掌握在用户手中
|
||||
* Copyright 2024 满月叶
|
||||
* GitHub: https://github.com/MoonLeeeaf/LingChair-Web-Client
|
||||
* 本项目使用 Apache 2.0 协议开源
|
||||
*
|
||||
* Copyright 2024 MoonLeeeaf
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ©2024 满月叶
|
||||
* GitHub @MoonLeeeaf
|
||||
* 消息! 消息!
|
||||
*/
|
||||
|
||||
.chat-message-right {
|
||||
.chat-message.right {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: flex-start;
|
||||
margin: 13px 13px 13px 10%;
|
||||
}
|
||||
|
||||
.chat-message-left {
|
||||
.chat-message.left {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
@@ -71,15 +56,14 @@
|
||||
/* 左对齐元素 */
|
||||
}
|
||||
|
||||
.chat-message-left .message-content-with-nickname-left .nickname,
|
||||
.chat-message-right .message-content-with-nickname-right .nickname {
|
||||
.chat-message .message-content-with-nickname-left .nickname,
|
||||
.chat-message .message-content-with-nickname-right .nickname {
|
||||
margin-right: 5px;
|
||||
font-size: medium;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.chat-message-left > .avatar,
|
||||
.chat-message-right > .avatar {
|
||||
.chat-message > .avatar {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
@@ -88,5 +72,6 @@
|
||||
.message-image {
|
||||
max-width: 40%;
|
||||
max-height: 40%;
|
||||
margin: -5px;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ©2024 满月叶
|
||||
* Github: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 最终执行的杂项
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ©2024 满月叶
|
||||
* Github: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 业务逻辑
|
||||
*/
|
||||
|
||||
@@ -232,7 +232,23 @@ class ContactsList {
|
||||
ChatMsgAdapter.switchTo(name, "single")
|
||||
})
|
||||
}
|
||||
})
|
||||
client.emit("user.getGroups", {
|
||||
name: localStorage.userName,
|
||||
accessToken: await CurrentUser.getAccessToken(),
|
||||
}, async (re) => {
|
||||
if (re.code !== 0)
|
||||
return mdui.snackbar(re.msg)
|
||||
|
||||
viewBinding.groupsList.empty()
|
||||
let ls = re.data.groups
|
||||
for (let index in ls) {
|
||||
let name = ls[index]
|
||||
let dick = await NickCache.getNick(name)
|
||||
$($.parseHTML(`<li class="mdui-list-item mdui-ripple" mdui-drawer-close><div class="mdui-list-item-avatar"><img src="${CurrentUser.getUserHeadUrl(name)}" onerror="this.src='res/default_head.png'" /></div><div class="mdui-list-item-content">` + dick + `</div></li>`)).appendTo(viewBinding.groupsList).click(() => {
|
||||
ChatMsgAdapter.switchTo(name, "single")
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
/**
|
||||
@@ -274,7 +290,7 @@ class ChatTabManager {
|
||||
*/
|
||||
static add(title, target) {
|
||||
if (this.tabs[target]) return
|
||||
let tabElement = $($.parseHTML(`<a onclick="ChatMsgAdapter.switchTo('${target}');" tag="chatTab" id="chatTab_${target}" class="mdui-ripple" style="text-transform: none;">${title}</a>`))
|
||||
let tabElement = $($.parseHTML(`<a onclick="ChatMsgAdapter.switchTo('${target}');" tag="chatTab" id="chatTab_${target}" target="${target}" class="mdui-ripple" style="text-transform: none;">${title}</a>`))
|
||||
tabElement.appendTo(viewBinding.chatTab)
|
||||
// 就你MDUI的B事最多 加Tab还多一个下划线 删掉就解决了
|
||||
$(".mdui-tab-indicator").remove()
|
||||
@@ -303,27 +319,23 @@ class ChatTabManager {
|
||||
*/
|
||||
static remove(target) {
|
||||
this.find(target).remove()
|
||||
this.tabs[target] = null
|
||||
delete this.tabs[target]
|
||||
if(Object.keys(this.tabs).length == 0)
|
||||
viewBinding.chatTab.find('.mdui-tab-indicator').remove()
|
||||
}
|
||||
static initTabElementEvents() {
|
||||
let listeners = {}
|
||||
let menu
|
||||
let callback = (e) => {
|
||||
if (menu) menu.close()
|
||||
// 切到 div.message-content
|
||||
// 切到 chatTab
|
||||
// document.getElementById("").nextElementSibling
|
||||
let ele = e.get(0)
|
||||
while ($(ele).attr("tag") != "msg-card")
|
||||
while ($(ele).attr("tag") != "chatTab")
|
||||
ele = ele.parentNode
|
||||
e = $(ele)
|
||||
let menuHtml = $.parseHTML(`<ul class="mdui-menu menu-on-message">
|
||||
// ele.previousElementSibling 是 Menu 的 Element, 因此改写成 ele.previousElementSibling.previousElementSibling
|
||||
let menuHtml = $.parseHTML(`<ul class="mdui-menu">
|
||||
<li class="mdui-menu-item">
|
||||
<a onclick="copyText(\`${e.find("#msg-content").text()}\`)" class="mdui-ripple">复制</a>
|
||||
</li>
|
||||
<li class="mdui-menu-item">
|
||||
<a onclick="mdui.alert(\`${e.find("#raw-msg-content").text()}\`, '消息原文', () => { }, { confirmText: '关闭' })" class="mdui-ripple">原文</a>
|
||||
</li>
|
||||
<li class="mdui-menu-item">
|
||||
<a onclick="mdui.alert('未制作功能', '提示', () => { }, { confirmText: '关闭' })" class="mdui-ripple">转发</a>
|
||||
<a onclick="let ele=CachedData.getAndRecycle('${CachedData.addToList(ele)}');let elenp=ele.previousElementSibling.previousElementSibling;if(!elenp){elenp=ele.nextElementSibling};let canclick=$(elenp).attr('target');if(canclick){ChatTabManager.click(canclick);}ChatPage.getChatSeesion($(ele).attr('target')).remove();if(canclick){ChatTabManager.click(canclick);}" class="mdui-ripple">关闭</a>
|
||||
</li>
|
||||
</ul>`)
|
||||
let $menu = $(menuHtml)
|
||||
@@ -338,7 +350,7 @@ class ChatTabManager {
|
||||
})
|
||||
menu.open()
|
||||
}
|
||||
viewBinding.pageChatSeesion.on('contextmenu mousedown mouseup', '.message-content', (e) => {
|
||||
viewBinding.chatTab.on('contextmenu dblclick', 'a[tag=chatTab]', (e) => {
|
||||
let eventType = e.type
|
||||
let self = $(e.target)
|
||||
|
||||
@@ -348,16 +360,9 @@ class ChatTabManager {
|
||||
e.preventDefault() // 阻止默认行为
|
||||
callback(self)
|
||||
break
|
||||
case 'mousedown':
|
||||
if (!isMobile()) return
|
||||
listeners[self + ""] = setTimeout(() => {
|
||||
callback(self)
|
||||
}, 300) // 300颗够吗 应该够吧
|
||||
break
|
||||
case 'mouseup':
|
||||
if (!isMobile()) return
|
||||
clearTimeout(listeners[self + ""])
|
||||
listeners[self + ""] = null
|
||||
case 'dblclick':
|
||||
//if (!isMobile()) return
|
||||
callback(self)
|
||||
break
|
||||
}
|
||||
})
|
||||
@@ -375,6 +380,14 @@ class ChatPage {
|
||||
this.chatPageElement.appendTo(viewBinding.pageChatSeesion)
|
||||
;(async () => await this.loadMore())()
|
||||
}
|
||||
/**
|
||||
* 获取某个聊天栏
|
||||
* @param { String } target
|
||||
* @returns { jQuery }
|
||||
*/
|
||||
static getChatSeesion(target) {
|
||||
return ChatPage.cached[target]
|
||||
}
|
||||
/**
|
||||
* 获取当前的聊天栏
|
||||
* @returns { jQuery }
|
||||
@@ -387,7 +400,7 @@ class ChatPage {
|
||||
* @returns { ChatPage }
|
||||
*/
|
||||
static getCurrentChatPage() {
|
||||
return ChatPage.cached[$(".chat-seesion[actived=true]").attr("target")]
|
||||
return this.getChatSeesion($(".chat-seesion[actived=true]").attr("target"))
|
||||
}
|
||||
/**
|
||||
* 切换选择的聊天对象
|
||||
@@ -398,7 +411,7 @@ class ChatPage {
|
||||
this.minMsgId = null
|
||||
|
||||
for (let k of Object.keys(ChatPage.cached)) {
|
||||
let cpe = ChatPage.cached[k].chatPageElement
|
||||
let cpe = ChatPage.getChatSeesion(k).chatPageElement
|
||||
cpe.attr("actived", null)
|
||||
cpe.hide()
|
||||
}
|
||||
@@ -415,7 +428,7 @@ class ChatPage {
|
||||
remove() {
|
||||
ChatTabManager.remove(this.chatTarget)
|
||||
ChatPage.cached[this.chatTarget].chatPageElement.remove()
|
||||
ChatPage.cached[this.chatTarget] = null
|
||||
delete ChatPage.cached[this.chatTarget]
|
||||
}
|
||||
/**
|
||||
* 加载更多聊天记录
|
||||
@@ -534,7 +547,7 @@ class ChatPage {
|
||||
|
||||
let temp
|
||||
if (name === localStorage.userName)
|
||||
temp = `<div class="chat-message-right">
|
||||
temp = `<div class="chat-message right">
|
||||
<div class="message-content-with-nickname-right">
|
||||
<span class="nickname">${nick}</span>
|
||||
<div class="message-content mdui-card" tag="msg-card" id="msgid_${msgid}">
|
||||
@@ -545,7 +558,7 @@ class ChatPage {
|
||||
<img class="avatar" src="${CurrentUser.getUserHeadUrl(name)}" onerror="this.src='res/default_head.png'" />
|
||||
</div>`
|
||||
else
|
||||
temp = `<div class="chat-message-left">
|
||||
temp = `<div class="chat-message left">
|
||||
<img class="avatar" src="${CurrentUser.getUserHeadUrl(name)}" onerror="this.src='res/default_head.png'" />
|
||||
<div class="message-content-with-nickname-left">
|
||||
<span class="nickname">${nick}</span>
|
||||
@@ -621,12 +634,13 @@ class ChatMsgAdapter {
|
||||
// CSS 牵一发而动全身 因此这个减少的数值是每天都要更改的
|
||||
viewBinding.chatPager.height(window.innerHeight - viewBinding.inputToolbar.height() - $("header.mdui-appbar").height() - viewBinding.chatTab.height() - 17)
|
||||
let ledi = this.resizeDick - window.innerHeight
|
||||
let h = $('.chat-seesion[actived=true] > .chat-message:last-child').height()
|
||||
if (isMobile()) viewBinding.chatPager.get(0).scrollBy({
|
||||
// 5.19晚10:56分调配出来的秘方
|
||||
// < 0 为窗口变大
|
||||
// cnm的,调试十万次就你tm检测不到底是吧,就你语法天天错误是吧
|
||||
// 欺负我现在用不了电脑
|
||||
top: -(ledi) * ((ledi < 0 && this.isAtBottom()) ? 6 : -1), // (ledi < 0 ? 6 : 6),
|
||||
top: (ledi > 0 ? (this.isAtBottom() ? viewBinding.inputToolbar.height() : -h * ledi / 20) : -h * ledi / 20),
|
||||
behavior: 'smooth'
|
||||
})
|
||||
this.resizeDick = window.innerHeight
|
||||
@@ -648,12 +662,16 @@ class ChatMsgAdapter {
|
||||
while ($(ele).attr("tag") != "msg-card")
|
||||
ele = ele.parentNode
|
||||
e = $(ele)
|
||||
|
||||
let rawText = e.find("#raw-msg-content").text()
|
||||
let text = e.find("#msg-content").text()
|
||||
|
||||
let menuHtml = $.parseHTML(`<ul class="mdui-menu menu-on-message">
|
||||
<li class="mdui-menu-item">
|
||||
<a onclick="copyText(\`${e.find("#msg-content").text()}\`)" class="mdui-ripple">复制</a>
|
||||
<a onclick="copyText(CachedString.getAndRecycle('${CachedData.addToList(text)}'))" class="mdui-ripple">复制</a>
|
||||
</li>
|
||||
<li class="mdui-menu-item">
|
||||
<a onclick="mdui.alert(\`${e.find("#raw-msg-content").text()}\`, '消息原文', () => { }, { confirmText: '关闭' })" class="mdui-ripple">原文</a>
|
||||
<a onclick="mdui.alert(CachedString.getAndRecycle('${CachedData.addToList(rawText)}'), '消息原文', () => { }, { confirmText: '关闭' })" class="mdui-ripple">原文</a>
|
||||
</li>
|
||||
<li class="mdui-menu-item">
|
||||
<a onclick="mdui.alert('未制作功能', '提示', () => { }, { confirmText: '关闭' })" class="mdui-ripple">转发</a>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/*
|
||||
* ©2024 满月叶
|
||||
* Github: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 铃之椅 网页端
|
||||
*/
|
||||
|
||||
html, body {
|
||||
html, body {
|
||||
max-height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@@ -34,6 +34,7 @@ body {
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
display: block;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.chat-seesion {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<html lang="zh-cmn-Hans">
|
||||
<!--
|
||||
* ©2024 满月叶
|
||||
* Github: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 铃之椅 网页端
|
||||
-->
|
||||
<head>
|
||||
@@ -16,16 +16,17 @@
|
||||
<script src='https://polyfill.io/v3/polyfill.min.js?features=default%2Cdom4%2Ces2015%2Ces2016%2Ces2017%2Ces2018%2Ces2019%2Ces2020%2Ces2021%2Ces2022%2Ces5%2Ces6%2Ces7'></script>
|
||||
|
||||
<!-- Styles -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/mdui@1.0.2/dist/css/mdui.min.css" />
|
||||
<!-- <link rel="stylesheet" href="https://unpkg.com/mdui@1.0.2/dist/css/mdui.min.css" /> -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/LingChair/MDUI-Modified/dist/mdui.min.css" />
|
||||
<link rel="stylesheet" href="index.css" />
|
||||
<link rel="stylesheet" href="chat-message.css" />
|
||||
<link rel="stylesheet" href="mdui-prettier.css" />
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="https://cdn.jsdelivr.net/gh/wilddeer/stickyfill@2.1.0/dist/stickyfill.min.js"></script>
|
||||
<script src="https://unpkg.com/jquery@3.7.1/dist/jquery.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/marked@13.0.1/marked.min.js"></script>
|
||||
<link rel="icon" href="res/icon.ico" />
|
||||
<title>铃之椅</title>
|
||||
</head>
|
||||
@@ -40,52 +41,29 @@
|
||||
<!-- 侧滑栏 -->
|
||||
<div class="mdui-drawer" id="main-drawer">
|
||||
<ul class="mdui-list" mdui-collapse="{accordion: true}">
|
||||
<li class="mdui-list-item mdui-ripple">
|
||||
<li class="mdui-list-item mdui-ripple" onclick="new mdui.Dialog(viewBinding.dialogSettings.get(0)).open()">
|
||||
<div class="mdui-list-item-avatar">
|
||||
<img src="default_head.png" n-id="userHead" onerror="this.src='res/default_head.png'" />
|
||||
</div>
|
||||
<div class="mdui-list-item-content"><a n-id="helloText">早安</a>, <a n-id="userNick">Unknown</a></div>
|
||||
</li>
|
||||
<li class="mdui-list-item mdui-ripple" onclick="new mdui.Dialog(viewBinding.dialogSettings.get(0)).open()">
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">settings</i>
|
||||
<div class="mdui-list-item-content">设置</div>
|
||||
</li>
|
||||
<li class="mdui-list-item mdui-ripple" n-id="drawerSignOut">
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">exit_to_app</i>
|
||||
<div class="mdui-list-item-content">登出</div>
|
||||
<div class="mdui-list-item-content"><a n-id="helloText">早安</a>, <a n-id="userNick">未知用户</a></div>
|
||||
</li>
|
||||
<div class="mdui-subheader">聊天</div>
|
||||
<li class="mdui-collapse-item">
|
||||
<div class="mdui-collapse-item-header mdui-list-item mdui-ripple"><i class="mdui-list-item-icon mdui-icon material-icons">contacts</i>
|
||||
<div class="mdui-list-item-content">联系人</div><i
|
||||
class="mdui-collapse-item-arrow mdui-icon material-icons">keyboard_arrow_down</i>
|
||||
<div class="mdui-list-item-content">联系人</div><i class="mdui-collapse-item-arrow mdui-icon material-icons">keyboard_arrow_down</i>
|
||||
</div>
|
||||
<div class="mdui-collapse-item-body mdui-list" n-id="contactsList">
|
||||
</div>
|
||||
</li>
|
||||
<li class="mdui-collapse-item">
|
||||
<div class="mdui-collapse-item-header mdui-list-item mdui-ripple"><i class="mdui-list-item-icon mdui-icon material-icons">group</i>
|
||||
<div class="mdui-list-item-content">群聊</div><i class="mdui-collapse-item-arrow mdui-icon material-icons">keyboard_arrow_down</i>
|
||||
</div>
|
||||
<div class="mdui-collapse-item-body mdui-list" n-id="groupsList">
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="mdui-list mdui-hidden">
|
||||
|
||||
<li class="mdui-subheader">个人</li>
|
||||
<li class="mdui-list-item mdui-ripple" onclick="new mdui.Dialog(viewBinding.dialogMyProfile.get(0)).open()">
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">account_circle</i>
|
||||
<div class="mdui-list-item-content">资料</div>
|
||||
</li>
|
||||
<li class="mdui-list-item mdui-ripple" onclick="new mdui.Dialog(viewBinding.dialogMyProfile.get(0)).open()">
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">person_add</i>
|
||||
<div class="mdui-list-item-content">新的好友</div>
|
||||
</li>
|
||||
<li class="mdui-subheader">客户端</li>
|
||||
<li class="mdui-list-item mdui-ripple">
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">settings</i>
|
||||
<div class="mdui-list-item-content">设置</div>
|
||||
</li>
|
||||
<li class="mdui-list-item mdui-ripple" n-id="drawerChangeServer">
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">cloud_circle</i>
|
||||
<div class="mdui-list-item-content">更换服务器</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- 应用栏 -->
|
||||
@@ -270,8 +248,7 @@
|
||||
<div class="mdui-dialog-content">
|
||||
<ul class="mdui-list">
|
||||
<div class="mdui-subheader">我的资料</div>
|
||||
<li class="mdui-list-item mdui-ripple" mdui-dialog-close
|
||||
onclick="(async () => {viewBinding.dialogEditNickNick.val(await NickCache.getNick(localStorage.userName));new mdui.Dialog(viewBinding.dialogEditNick.get(0)).open()})()">
|
||||
<li class="mdui-list-item mdui-ripple" mdui-dialog-close onclick="(async () => {viewBinding.dialogEditNickNick.val(await NickCache.getNick(localStorage.userName));new mdui.Dialog(viewBinding.dialogEditNick.get(0)).open()})()">
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">edit</i>
|
||||
<div class="mdui-list-item-content">修改昵称</div>
|
||||
</li>
|
||||
@@ -280,6 +257,14 @@
|
||||
<div class="mdui-list-item-content">上传头像</div>
|
||||
</li>
|
||||
<div class="mdui-subheader">客户端</div>
|
||||
<li class="mdui-list-item mdui-ripple" n-id="drawerChangeServer" mdui-dialog-close>
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">cloud_circle</i>
|
||||
<div class="mdui-list-item-content">更换服务器</div>
|
||||
</li>
|
||||
<li class="mdui-list-item mdui-ripple" n-id="settingsDialogSignOut" mdui-dialog-close>
|
||||
<i class="mdui-list-item-icon mdui-icon material-icons">exit_to_app</i>
|
||||
<div class="mdui-list-item-content">登出</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="mdui-dialog-actions">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ©2024 满月叶
|
||||
* Github: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 资源类
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ©2024 满月叶
|
||||
* GitHub: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 是 UI 美化,好耶!
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ©2024 满月叶
|
||||
* Github: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 界面逻辑
|
||||
*/
|
||||
|
||||
@@ -17,22 +17,27 @@ $.ajax({
|
||||
})
|
||||
|
||||
// 关于页面
|
||||
viewBinding.menuAbout.click(() => mdui.alert('这是一个开源项目<br/>作者: MoonLeeeaf<br/>欢迎访问我们的<a class="mdui-text-color-theme-accent" href="https://github.com/LingChair/LingChair">项目主页</a>', '关于 铃之椅', () => { }, { confirmText: "关闭" }))
|
||||
viewBinding.menuAbout.click(() => mdui.alert('为人民服务<br/>GitHub @MoonLeeeaf<br/>欢迎访问我们的<a class="mdui-text-color-theme" href="https://github.com/LingChair/LingChair">项目主页</a>', '关于 铃之椅', () => { }, { confirmText: "关闭" }))
|
||||
|
||||
viewBinding.drawerChangeServer.click(() => {
|
||||
mdui.prompt('输入服务器地址...(为空则使用当前页面地址)', (value) => {
|
||||
mdui.prompt('输入服务器地址...(为空则使用当前地址)', (value) => {
|
||||
localStorage.server = value
|
||||
mdui.snackbar("更新成功, 刷新页面生效")
|
||||
}, () => { }, {
|
||||
new mdui.Dialog(viewBinding.dialogSettings.get(0)).open()
|
||||
}, () => {
|
||||
new mdui.Dialog(viewBinding.dialogSettings.get(0)).open()
|
||||
}, {
|
||||
confirmText: "确定",
|
||||
cancelText: "取消"
|
||||
})
|
||||
})
|
||||
|
||||
viewBinding.drawerSignOut.click(() => {
|
||||
viewBinding.settingsDialogSignOut.click(() => {
|
||||
mdui.confirm('确定要登出账号吗', () => {
|
||||
User.signOutAndReload()
|
||||
}, () => { }, {
|
||||
}, () => {
|
||||
new mdui.Dialog(viewBinding.dialogSettings.get(0)).open()
|
||||
}, {
|
||||
confirmText: "确定",
|
||||
cancelText: "取消"
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ©2024 满月叶
|
||||
* Github: MoonLeeeaf
|
||||
* GitHub @MoonLeeeaf
|
||||
* 辅助添加
|
||||
*/
|
||||
|
||||
@@ -208,6 +208,45 @@ class Hash {
|
||||
}
|
||||
}
|
||||
|
||||
class CachedData {
|
||||
static cache = {}
|
||||
/**
|
||||
* 添加缓存对象
|
||||
* @param {Object} 欲缓存的对象
|
||||
* @returns {String} 该对象的ID
|
||||
*/
|
||||
static addToList(obj) {
|
||||
let id = Hash.sha256(obj)
|
||||
this.cache[id] = obj
|
||||
return id
|
||||
}
|
||||
/**
|
||||
* 回收字符
|
||||
* @param {String} 该对象的ID
|
||||
*/
|
||||
static recycle(id) {
|
||||
this.cache[id] = null
|
||||
}
|
||||
/**
|
||||
* 根据ID获取文本
|
||||
* @param {String} 该对象的ID
|
||||
* @returns {Object} 对象
|
||||
*/
|
||||
static get(id) {
|
||||
return this.cache[id]
|
||||
}
|
||||
/**
|
||||
* 根据ID获取文本并回收
|
||||
* @param {String} 该文本的ID
|
||||
* @returns {Object} 对象
|
||||
*/
|
||||
static getAndRecycle(id) {
|
||||
let t = this.get(id)
|
||||
this.recycle(id)
|
||||
return t
|
||||
}
|
||||
}
|
||||
|
||||
window.copyText = copyText
|
||||
window.NData = NData
|
||||
window.escapeHTML = escapeHTML
|
||||
@@ -216,3 +255,4 @@ window.checkEmpty = checkEmpty
|
||||
window.sleep = sleep
|
||||
window.Hash = Hash
|
||||
window.通知 = 通知
|
||||
window.CachedString = CachedData
|
||||
|
||||
400
package-lock.json
generated
400
package-lock.json
generated
@@ -456,29 +456,34 @@
|
||||
},
|
||||
"node_modules/@socket.io/component-emitter": {
|
||||
"version": "3.1.2",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
||||
"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
|
||||
},
|
||||
"node_modules/@types/cookie": {
|
||||
"version": "0.4.1",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
|
||||
"integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
|
||||
},
|
||||
"node_modules/@types/cors": {
|
||||
"version": "2.8.17",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
|
||||
"integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.12.12",
|
||||
"license": "MIT",
|
||||
"version": "20.14.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz",
|
||||
"integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==",
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.8",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
|
||||
"dependencies": {
|
||||
"mime-types": "~2.1.34",
|
||||
"negotiator": "0.6.3"
|
||||
@@ -489,18 +494,21 @@
|
||||
},
|
||||
"node_modules/array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
|
||||
},
|
||||
"node_modules/base64id": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
|
||||
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
|
||||
"engines": {
|
||||
"node": "^4.5.0 || >= 5.9"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser": {
|
||||
"version": "1.20.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
|
||||
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"content-type": "~1.0.5",
|
||||
@@ -520,27 +528,18 @@
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser/node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/bytes": {
|
||||
"version": "3.1.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
|
||||
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bind": {
|
||||
"version": "1.0.7",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
|
||||
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
|
||||
"dependencies": {
|
||||
"es-define-property": "^1.0.0",
|
||||
"es-errors": "^1.3.0",
|
||||
@@ -594,7 +593,8 @@
|
||||
},
|
||||
"node_modules/content-disposition": {
|
||||
"version": "0.5.4",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
|
||||
"dependencies": {
|
||||
"safe-buffer": "5.2.1"
|
||||
},
|
||||
@@ -604,25 +604,29 @@
|
||||
},
|
||||
"node_modules/content-type": {
|
||||
"version": "1.0.5",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
|
||||
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie": {
|
||||
"version": "0.6.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
|
||||
},
|
||||
"node_modules/cors": {
|
||||
"version": "2.8.5",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
||||
"dependencies": {
|
||||
"object-assign": "^4",
|
||||
"vary": "^1"
|
||||
@@ -632,23 +636,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"license": "MIT",
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/define-data-property": {
|
||||
"version": "1.1.4",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
|
||||
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
|
||||
"dependencies": {
|
||||
"es-define-property": "^1.0.0",
|
||||
"es-errors": "^1.3.0",
|
||||
@@ -663,14 +661,16 @@
|
||||
},
|
||||
"node_modules/depd": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/destroy": {
|
||||
"version": "1.2.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
|
||||
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8",
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
@@ -686,18 +686,21 @@
|
||||
},
|
||||
"node_modules/ee-first": {
|
||||
"version": "1.1.1",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"node_modules/encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io": {
|
||||
"version": "6.5.4",
|
||||
"license": "MIT",
|
||||
"version": "6.5.5",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
|
||||
"integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
|
||||
"dependencies": {
|
||||
"@types/cookie": "^0.4.1",
|
||||
"@types/cors": "^2.8.12",
|
||||
@@ -708,7 +711,7 @@
|
||||
"cors": "~2.8.5",
|
||||
"debug": "~4.3.1",
|
||||
"engine.io-parser": "~5.2.1",
|
||||
"ws": "~8.11.0"
|
||||
"ws": "~8.17.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.2.0"
|
||||
@@ -716,21 +719,45 @@
|
||||
},
|
||||
"node_modules/engine.io-parser": {
|
||||
"version": "5.2.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz",
|
||||
"integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io/node_modules/cookie": {
|
||||
"version": "0.4.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
|
||||
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io/node_modules/debug": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/es-define-property": {
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
|
||||
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
|
||||
"dependencies": {
|
||||
"get-intrinsic": "^1.2.4"
|
||||
},
|
||||
@@ -740,18 +767,21 @@
|
||||
},
|
||||
"node_modules/es-errors": {
|
||||
"version": "1.3.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
||||
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/escape-html": {
|
||||
"version": "1.0.3",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"node_modules/etag": {
|
||||
"version": "1.8.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
@@ -797,20 +827,10 @@
|
||||
"node": ">= 0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/express/node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/express/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/finalhandler": {
|
||||
"version": "1.2.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
|
||||
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
@@ -824,41 +844,34 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/finalhandler/node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/finalhandler/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/forwarded": {
|
||||
"version": "0.2.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/fresh": {
|
||||
"version": "0.5.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.2.4",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
|
||||
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"function-bind": "^1.1.2",
|
||||
@@ -875,7 +888,8 @@
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.0.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
||||
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
|
||||
"dependencies": {
|
||||
"get-intrinsic": "^1.1.3"
|
||||
},
|
||||
@@ -885,7 +899,8 @@
|
||||
},
|
||||
"node_modules/has-property-descriptors": {
|
||||
"version": "1.0.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
|
||||
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
|
||||
"dependencies": {
|
||||
"es-define-property": "^1.0.0"
|
||||
},
|
||||
@@ -895,7 +910,8 @@
|
||||
},
|
||||
"node_modules/has-proto": {
|
||||
"version": "1.0.3",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
|
||||
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
@@ -905,7 +921,8 @@
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.0.3",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
||||
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
@@ -915,7 +932,8 @@
|
||||
},
|
||||
"node_modules/hasown": {
|
||||
"version": "2.0.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
||||
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
@@ -925,7 +943,8 @@
|
||||
},
|
||||
"node_modules/http-errors": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
||||
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
|
||||
"dependencies": {
|
||||
"depd": "2.0.0",
|
||||
"inherits": "2.0.4",
|
||||
@@ -939,7 +958,8 @@
|
||||
},
|
||||
"node_modules/iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
||||
"dependencies": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
},
|
||||
@@ -949,11 +969,13 @@
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"license": "ISC"
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/ipaddr.js": {
|
||||
"version": "1.9.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
||||
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
@@ -965,25 +987,29 @@
|
||||
},
|
||||
"node_modules/media-typer": {
|
||||
"version": "0.3.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
|
||||
},
|
||||
"node_modules/methods": {
|
||||
"version": "1.1.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime": {
|
||||
"version": "1.6.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
|
||||
"bin": {
|
||||
"mime": "cli.js"
|
||||
},
|
||||
@@ -993,14 +1019,16 @@
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-types": {
|
||||
"version": "2.1.35",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||
"dependencies": {
|
||||
"mime-db": "1.52.0"
|
||||
},
|
||||
@@ -1009,33 +1037,41 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"license": "MIT"
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "0.6.3",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
|
||||
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/object-assign": {
|
||||
"version": "4.1.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.13.1",
|
||||
"license": "MIT",
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
|
||||
"integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.4.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
||||
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
||||
"dependencies": {
|
||||
"ee-first": "1.1.1"
|
||||
},
|
||||
@@ -1045,18 +1081,21 @@
|
||||
},
|
||||
"node_modules/parseurl": {
|
||||
"version": "1.3.3",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
||||
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"node_modules/proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
||||
"dependencies": {
|
||||
"forwarded": "0.2.0",
|
||||
"ipaddr.js": "1.9.1"
|
||||
@@ -1067,7 +1106,8 @@
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.11.0",
|
||||
"license": "BSD-3-Clause",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
|
||||
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.0.4"
|
||||
},
|
||||
@@ -1080,14 +1120,16 @@
|
||||
},
|
||||
"node_modules/range-parser": {
|
||||
"version": "1.2.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/raw-body": {
|
||||
"version": "2.5.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
|
||||
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
|
||||
"dependencies": {
|
||||
"bytes": "3.1.2",
|
||||
"http-errors": "2.0.0",
|
||||
@@ -1100,6 +1142,8 @@
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -1113,12 +1157,12 @@
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"license": "MIT"
|
||||
]
|
||||
},
|
||||
"node_modules/safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.6.2",
|
||||
@@ -1133,7 +1177,8 @@
|
||||
},
|
||||
"node_modules/send": {
|
||||
"version": "0.18.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
|
||||
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
|
||||
"dependencies": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
@@ -1153,24 +1198,15 @@
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/send/node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/send/node_modules/debug/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/send/node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||
},
|
||||
"node_modules/serve-static": {
|
||||
"version": "1.15.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
|
||||
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
|
||||
"dependencies": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
@@ -1183,7 +1219,8 @@
|
||||
},
|
||||
"node_modules/set-function-length": {
|
||||
"version": "1.2.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
|
||||
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
|
||||
"dependencies": {
|
||||
"define-data-property": "^1.1.4",
|
||||
"es-errors": "^1.3.0",
|
||||
@@ -1198,7 +1235,8 @@
|
||||
},
|
||||
"node_modules/setprototypeof": {
|
||||
"version": "1.2.0",
|
||||
"license": "ISC"
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
|
||||
},
|
||||
"node_modules/sharp": {
|
||||
"version": "0.33.4",
|
||||
@@ -1241,7 +1279,8 @@
|
||||
},
|
||||
"node_modules/side-channel": {
|
||||
"version": "1.0.6",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
|
||||
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.7",
|
||||
"es-errors": "^1.3.0",
|
||||
@@ -1281,16 +1320,39 @@
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-adapter": {
|
||||
"version": "2.5.4",
|
||||
"license": "MIT",
|
||||
"version": "2.5.5",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
|
||||
"integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
|
||||
"dependencies": {
|
||||
"debug": "~4.3.4",
|
||||
"ws": "~8.11.0"
|
||||
"ws": "~8.17.1"
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-adapter/node_modules/debug": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-adapter/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/socket.io-parser": {
|
||||
"version": "4.2.4",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
|
||||
"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.1"
|
||||
@@ -1299,29 +1361,74 @@
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-parser/node_modules/debug": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-parser/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/socket.io/node_modules/debug": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
|
||||
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/statuses": {
|
||||
"version": "2.0.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
|
||||
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/toidentifier": {
|
||||
"version": "1.0.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
|
||||
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
||||
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
|
||||
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/type-is": {
|
||||
"version": "1.6.18",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
|
||||
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
|
||||
"dependencies": {
|
||||
"media-typer": "0.3.0",
|
||||
"mime-types": "~2.1.24"
|
||||
@@ -1332,38 +1439,43 @@
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "5.26.5",
|
||||
"license": "MIT"
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
||||
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
|
||||
},
|
||||
"node_modules/unpipe": {
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vary": {
|
||||
"version": "1.1.2",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.11.0",
|
||||
"license": "MIT",
|
||||
"version": "8.17.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
|
||||
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": "^5.0.2"
|
||||
"utf-8-validate": ">=5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
|
||||
23
readme.md
23
readme.md
@@ -1,16 +1,33 @@
|
||||
[ 中文 | [English](readme_en.md) ]
|
||||
|
||||
<div align="center">
|
||||
<h2> 铃之椅 </h2>
|
||||
</div>
|
||||
|
||||
欢迎来到铃之椅! 这是一个即时通讯项目, 为通讯提供更多的选择, 为人民服务
|
||||
|
||||
> [!WARNING]
|
||||
> 该版本因存在过多复杂且难以理解的代码写法以及杂乱不堪的前端代码而停止开发, 同时也在准备开发 v1 版本, 不建议大规模将此实验版本投入使用, 否则后果自负
|
||||
|
||||
> [!NOTE]
|
||||
> 拒绝一切未经授权的项目搬运!铃之椅只会在 GitHub 上发布, 不可能在 Gitee、GitCode 等平台发布!
|
||||
>
|
||||
> 本项目仍在实验阶段, [点我](final.md)可查看进展
|
||||
>
|
||||
> 欢迎各位提出项目修改意见
|
||||
|
||||
### 衍生项目
|
||||
|
||||
客户端 & 服务端:
|
||||
|
||||
* LingChair-Node.js (本仓库)
|
||||
|
||||
客户端:
|
||||
|
||||
* 暂无
|
||||
|
||||
服务端:
|
||||
|
||||
* 暂无
|
||||
|
||||
### 使用
|
||||
|
||||
服务端:
|
||||
@@ -32,3 +49,5 @@
|
||||
WIP
|
||||
|
||||
### [你知道吗](.github/do_you_know.md)
|
||||
|
||||
<!-- 致某国内搬运GitHub的平台:别搬我,否则等死。色情小说在线看!链接:https://www.book18.org/哈!我只在GitHub(GayHub)哦,不要亲信其它平台伪造的虚假账号!为防止本人账号被莫名搬运到GxxCode(某SDN的代码平台),因此特地收汇了很多黄色词汇!希望看到此注释的人不要太惊讶,我也不想被莫名搬运啊(),好,正文:爱女人爱液按摩棒拔出来爆草包二奶暴干暴奸暴乳爆乳暴淫屄被插被操被干逼奸仓井空插暴操逼操黑操烂肏你肏死操死操我厕奴插比插b插逼插进插你插我插阴潮吹潮喷成人dv成人电影成人论坛成人小说成人电成人电影成人卡通成人聊成人片成人视成人图成人文成人小成人电影成人论坛成人色情成人网站成人文学成人小说艳情小说成人游戏吃精赤裸抽插扌由插抽一插春药大波大力抽送大乳荡妇荡女盗撮多人轮发浪放尿肥逼粉穴封面女郎风月大陆干死你干穴肛交肛门龟头裹本国产av好嫩豪乳黑逼后庭后穴虎骑花花公子换妻俱乐部黄片几吧鸡吧鸡巴鸡奸寂寞男寂寞女妓女激情集体淫奸情叫床脚交金鳞岂是池中物金麟岂是池中物精液就去日巨屌菊花洞菊门巨奶巨乳菊穴开苞口爆口活口交口射口淫裤袜狂操狂插浪逼浪妇浪叫浪女狼友聊性流淫铃木麻凌辱漏乳露b乱交乱伦轮暴轮操轮奸裸陪买春美逼美少妇美乳美腿美穴美幼秘唇迷奸密穴蜜穴蜜液摸奶摸胸母奸奈美奶子男奴内射嫩逼嫩女嫩穴捏弄女优炮友砲友喷精屁眼品香堂前凸后翘强jian强暴强奸处女情趣用品情色拳交全裸群交惹火身材人妻人兽日逼日烂肉棒肉逼肉唇肉洞肉缝肉棍肉茎肉具揉乳肉穴肉欲乳爆乳房乳沟乳交乳头三级片骚逼骚比骚女骚水骚穴色逼色界色猫色盟色情网站色区色色色诱色欲色b少年阿宾少修正射爽射颜食精释欲兽奸兽交手淫兽欲熟妇熟母熟女爽片爽死我了双臀死逼丝袜丝诱松岛枫酥痒汤加丽套弄体奸体位舔脚舔阴调教偷欢偷拍推油脱内裤文做我就色无码舞女无修正吸精夏川纯相奸小逼校鸡小穴小xue写真性感妖娆性感诱惑 https://cn.pornhub.com https://zh.xhamster.com 来看色情罢!(喜) 针对国内的采取措施 希望各GitHub访友以及工作人员能理解 因为现在某SDN搬仓库挺严重的,我们必须采取措施 -->
|
||||
|
||||
11
readme_en.md
11
readme_en.md
@@ -1,13 +1,16 @@
|
||||
[ [中文](readme.md) | English ]
|
||||
|
||||
<div align="center">
|
||||
<h2> LingChair </h2>
|
||||
</div>
|
||||
|
||||
Welcome to LingChair! This is an IM project that it provide a new communication way. And it serves people.
|
||||
|
||||
> [!WARNING]
|
||||
> 该版本因存在过多复杂且难以理解的代码写法以及杂乱不堪的前端代码而停止开发, 同时也在准备开发 v1 版本, 不建议大规模将此实验版本投入使用, 否则后果自负
|
||||
|
||||
> [!NOTE]
|
||||
I'm sorry that I have no time to translate this project to English. This project is so large for me to rewrite, so there're still a lot of texts in Chinese.
|
||||
> THIS PROJECT IS ON GITHUB ONLY,**EVERYONE MUSTN'T COPY ANYTHING AND UPLOAD TO ANYWHERE WITHOUT MY PERMISSION.** <!-- GitCode, 说的就是你, 到时候如果被我发现你搬我仓库我迟早要找你算账 -->
|
||||
>
|
||||
> My English is not so good as a normal Englishmen, so you need a translator to read Chinese texts. And sometimes this document is outdated, I'm sorry with that.
|
||||
>
|
||||
> This project is still in progress, [Click me](final.md) to view progress. (Chinese)
|
||||
>
|
||||
@@ -34,3 +37,5 @@ Client:
|
||||
WIP
|
||||
|
||||
### [Do you know? (Chinese)](.github/do_you_know.md)
|
||||
|
||||
<!-- 致某国内搬运GitHub的平台:别搬我,否则等死。色情小说在线看!链接:https://www.book18.org/哈!我只在GitHub(GayHub)哦,不要亲信其它平台伪造的虚假账号!为防止本人账号被莫名搬运到GxxCode(某SDN的代码平台),因此特地收汇了很多黄色词汇!希望看到此注释的人不要太惊讶,我也不想被莫名搬运啊(),好,正文:爱女人爱液按摩棒拔出来爆草包二奶暴干暴奸暴乳爆乳暴淫屄被插被操被干逼奸仓井空插暴操逼操黑操烂肏你肏死操死操我厕奴插比插b插逼插进插你插我插阴潮吹潮喷成人dv成人电影成人论坛成人小说成人电成人电影成人卡通成人聊成人片成人视成人图成人文成人小成人电影成人论坛成人色情成人网站成人文学成人小说艳情小说成人游戏吃精赤裸抽插扌由插抽一插春药大波大力抽送大乳荡妇荡女盗撮多人轮发浪放尿肥逼粉穴封面女郎风月大陆干死你干穴肛交肛门龟头裹本国产av好嫩豪乳黑逼后庭后穴虎骑花花公子换妻俱乐部黄片几吧鸡吧鸡巴鸡奸寂寞男寂寞女妓女激情集体淫奸情叫床脚交金鳞岂是池中物金麟岂是池中物精液就去日巨屌菊花洞菊门巨奶巨乳菊穴开苞口爆口活口交口射口淫裤袜狂操狂插浪逼浪妇浪叫浪女狼友聊性流淫铃木麻凌辱漏乳露b乱交乱伦轮暴轮操轮奸裸陪买春美逼美少妇美乳美腿美穴美幼秘唇迷奸密穴蜜穴蜜液摸奶摸胸母奸奈美奶子男奴内射嫩逼嫩女嫩穴捏弄女优炮友砲友喷精屁眼品香堂前凸后翘强jian强暴强奸处女情趣用品情色拳交全裸群交惹火身材人妻人兽日逼日烂肉棒肉逼肉唇肉洞肉缝肉棍肉茎肉具揉乳肉穴肉欲乳爆乳房乳沟乳交乳头三级片骚逼骚比骚女骚水骚穴色逼色界色猫色盟色情网站色区色色色诱色欲色b少年阿宾少修正射爽射颜食精释欲兽奸兽交手淫兽欲熟妇熟母熟女爽片爽死我了双臀死逼丝袜丝诱松岛枫酥痒汤加丽套弄体奸体位舔脚舔阴调教偷欢偷拍推油脱内裤文做我就色无码舞女无修正吸精夏川纯相奸小逼校鸡小穴小xue写真性感妖娆性感诱惑 https://cn.pornhub.com https://zh.xhamster.com 来看色情罢!(喜) 针对国内的采取措施 希望各GitHub访友以及工作人员能理解 因为现在某SDN搬仓库挺严重的,我们必须采取措施 -->
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
module.exports = {
|
||||
none: "\033[0m",
|
||||
red: "\033[1;31m",
|
||||
pink: "\033[1;35m",
|
||||
green: "\033[1;32m",
|
||||
yellow: "\033[1;33m",
|
||||
blue: "\033[1;34m",
|
||||
|
||||
19
server_src/log.js
Normal file
19
server_src/log.js
Normal file
@@ -0,0 +1,19 @@
|
||||
const color = require("./color")
|
||||
|
||||
const log = (t) => {
|
||||
console.log("[" + new Date().toLocaleTimeString('en-US', { hour12: false }) + "] " + t)
|
||||
}
|
||||
|
||||
const loge = (t) => {
|
||||
log(`[E] ${color.red + t + color.none}`)
|
||||
}
|
||||
|
||||
const logw = (t) => {
|
||||
log(`[W] ${color.yellow + t + color.none}`)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
log: log,
|
||||
loge: loge,
|
||||
logw, logw,
|
||||
}
|
||||
@@ -6,9 +6,7 @@
|
||||
|
||||
console.log("正在初始化...")
|
||||
|
||||
const log = (t) => {
|
||||
console.log("[" + new Date().toLocaleTimeString('en-US', { hour12: false }) + "] " + t)
|
||||
}
|
||||
const { log, loge, logw } = require("./log")
|
||||
|
||||
const sio = require("socket.io")
|
||||
const http = require("http")
|
||||
@@ -49,19 +47,22 @@ let checkEmpty = (i) => {
|
||||
|
||||
wsServer.on("connect", (client) => {
|
||||
|
||||
log("客户端 " + client.handshake.address + " 已连接, 用户名(未经验证): " + client.handshake.auth.name)
|
||||
logw(`客户端 ${client.handshake.address} 已连接, 用户名(未经验证): ${client.handshake.auth.name}`)
|
||||
|
||||
for (const cb in wsServerCallback) {
|
||||
client.on(cb, (...args) => {
|
||||
log("客户端 " + client.handshake.address + " 对接口 [" + cb + "] 发起请求,参数为 " + JSON.stringify(args[0]))
|
||||
log(`客户端 ${client.handshake.address} 对接口 [${cb}] 发起请求,参数为 ${JSON.stringify(args[0])}`)
|
||||
let callback = args[args.length - 1]
|
||||
try {
|
||||
wsServerCallback[cb](args[0], (reArgs) => {
|
||||
callback(reArgs)
|
||||
log("返回接口 [" + cb + "] 到 " + client.handshake.address + ",参数为 " + JSON.stringify(reArgs))
|
||||
if (reArgs.code != 0)
|
||||
logw(`返回接口 [${cb}] 到 ${client.handshake.address},参数为 ${JSON.stringify(reArgs)}`)
|
||||
else
|
||||
log(`返回接口 [${cb}] 到 ${client.handshake.address},参数为 ${JSON.stringify(reArgs)}`)
|
||||
}, client, cachedClients)
|
||||
} catch (e) {
|
||||
log(color.yellow + "调用接口或返回数据时出错: " + e + color.none)
|
||||
loge(`调用接口或返回数据时出错: ${e}`)
|
||||
callback({ code: -1, msg: e })
|
||||
}
|
||||
})
|
||||
@@ -69,7 +70,7 @@ wsServer.on("connect", (client) => {
|
||||
|
||||
client.on("disconnect", () => {
|
||||
if (!client.handshake.auth.passCheck)
|
||||
return log("未验证的客户端 " + client.handshake.address + " 已断开, 未验证的用户名: " + client.handshake.auth.name)
|
||||
return logw(`未验证的客户端 ${client.handshake.address} 已断开, 未验证的用户名: ${client.handshake.auth.name}`)
|
||||
|
||||
// 为了支持多客户端登录 我豁出去了
|
||||
if (cachedClients[client.handshake.auth.name].length === 1)
|
||||
@@ -80,14 +81,14 @@ wsServer.on("connect", (client) => {
|
||||
arr.splice(index, 1)
|
||||
}
|
||||
})
|
||||
log("客户端 " + client.handshake.address + " 已断开, 用户名: " + client.handshake.auth.name)
|
||||
log(`客户端 ${client.handshake.address} 已断开, 用户名: ${client.handshake.auth.name}`)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
httpServer.listen(vals.LINGCHAIR_SERVER_CONFIG.port)
|
||||
|
||||
console.log(color.red + "=== 铃之椅 - Server ===" + color.none + "\n\r")
|
||||
console.log(color.yellow + "Github: MoonLeeeaf" + color.none)
|
||||
log(color.green + "运行服务于端口 " + vals.LINGCHAIR_SERVER_CONFIG.port + " 上," + (vals.LINGCHAIR_SERVER_CONFIG.useHttps == true ? "已" : "未") + "使用 HTTPS" + color.none)
|
||||
log(color.green + "服务已启动..." + color.none)
|
||||
log(`${color.green}HTTP 和 WebSocket 服务已在端口 ${vals.LINGCHAIR_SERVER_CONFIG.port} 上启动,${vals.LINGCHAIR_SERVER_CONFIG.useHttps == true ? "已" : "未"}使用 HTTPS${color.none}`)
|
||||
log(`${color.green}感谢使用!${color.none}`)
|
||||
log(`${color.green}GitHub @MoonLeeeaf${color.none}`)
|
||||
log(`${color.green}服务已启动...${color.none}`)
|
||||
|
||||
@@ -4,9 +4,7 @@
|
||||
* 铃之椅 Node 服务端
|
||||
*/
|
||||
|
||||
const log = (t) => {
|
||||
console.log("[" + new Date().toLocaleTimeString('en-US', { hour12: false }) + "] " + t)
|
||||
}
|
||||
const { log, loge, logw } = require("./log")
|
||||
|
||||
const msgs = require("./api-msgs")
|
||||
const users = require("./api-users")
|
||||
@@ -48,7 +46,7 @@ let api = {
|
||||
if (!users.checkRefreshToken(a.name, a.refreshToken))
|
||||
return cb({ code: -1, msg: "刷新令牌错误", invalid: true })
|
||||
|
||||
log(color.yellow + "客户端 " + client.handshake.address + " 完成了用户 " + a.name + " 的验证" + color.none)
|
||||
logw(`客户端 ${client.handshake.address} 完成了用户 ${a.name} 的验证`)
|
||||
|
||||
// 更新映射
|
||||
client.handshake.auth.passCheck = true
|
||||
|
||||
Reference in New Issue
Block a user