link-status-page 0.0.50 → 0.0.54

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/404.html CHANGED
@@ -22,6 +22,6 @@
22
22
  <span class="route-line" aria-hidden="true"></span>
23
23
  <div class="route-copy"><div class="route-title"><h2>小星星爱导航</h2><span class="official">主站</span></div><p>官方网站入口</p><span class="route-url">https://link.chinazhangsan.ccwu.cc/</span></div>
24
24
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://link.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
25
- </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月21日 10:52(北京时间)</p></footer></main><script>
25
+ </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月21日 11:56(北京时间)</p></footer></main><script>
26
26
  (()=>{'use strict';const routes=[...document.querySelectorAll('[data-route]')],summary=document.querySelector('#check-summary'),container=document.querySelector('#routes');async function copy(value,button){try{await navigator.clipboard.writeText(value)}catch{const area=document.createElement('textarea');area.value=value;area.style.position='fixed';area.style.opacity='0';document.body.append(area);area.select();document.execCommand('copy');area.remove()}const old=button.textContent;button.textContent='已复制';setTimeout(()=>{button.textContent=old},1600)}function checkRoute(card,index){return new Promise(resolve=>{const status=card.querySelector('[data-status]'),probeUrl=new URL('/.well-known/route-health.gif',card.dataset.url),image=new Image(),started=performance.now();let finished=false;probeUrl.searchParams.set('_t',Date.now().toString());probeUrl.searchParams.set('_r',Math.random().toString(36).slice(2));function finish(ok,reason){if(finished)return;finished=true;clearTimeout(timer);const elapsed=Math.max(1,Math.round(performance.now()-started));status.textContent=ok?'正常':'检查超时';status.className='route-status '+(ok?'online':'offline');image.onload=null;image.onerror=null;resolve({card,ok,ms:ok?elapsed:999999,index,reason})}image.referrerPolicy='no-referrer';image.onload=()=>finish(image.naturalWidth===1&&image.naturalHeight===1,'invalid_image');image.onerror=()=>finish(false,'load_error');const timer=setTimeout(()=>finish(false,'timeout'),5000);image.src=probeUrl.href})}document.querySelectorAll('[data-copy]').forEach(button=>button.addEventListener('click',()=>copy(button.dataset.copy,button)));if(!routes.length){summary.textContent='当前无可检查线路';return}summary.textContent='正在检查 '+routes.length+' 条线路';Promise.all(routes.map(checkRoute)).then(results=>{results.sort((a,b)=>Number(b.ok)-Number(a.ok)||a.ms-b.ms||a.index-b.index).forEach(item=>container.append(item.card));const online=results.filter(item=>item.ok).length,timeouts=results.length-online;summary.textContent='访客线路检测完成:'+online+' 条正常,'+timeouts+' 条检查超时'})})();
27
27
  </script></body></html>
package/index.html CHANGED
@@ -22,6 +22,6 @@
22
22
  <span class="route-line" aria-hidden="true"></span>
23
23
  <div class="route-copy"><div class="route-title"><h2>小星星爱导航</h2><span class="official">主站</span></div><p>官方网站入口</p><span class="route-url">https://link.chinazhangsan.ccwu.cc/</span></div>
24
24
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://link.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
25
- </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月21日 10:52(北京时间)</p></footer></main><script>
25
+ </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月21日 11:56(北京时间)</p></footer></main><script>
26
26
  (()=>{'use strict';const routes=[...document.querySelectorAll('[data-route]')],summary=document.querySelector('#check-summary'),container=document.querySelector('#routes');async function copy(value,button){try{await navigator.clipboard.writeText(value)}catch{const area=document.createElement('textarea');area.value=value;area.style.position='fixed';area.style.opacity='0';document.body.append(area);area.select();document.execCommand('copy');area.remove()}const old=button.textContent;button.textContent='已复制';setTimeout(()=>{button.textContent=old},1600)}function checkRoute(card,index){return new Promise(resolve=>{const status=card.querySelector('[data-status]'),probeUrl=new URL('/.well-known/route-health.gif',card.dataset.url),image=new Image(),started=performance.now();let finished=false;probeUrl.searchParams.set('_t',Date.now().toString());probeUrl.searchParams.set('_r',Math.random().toString(36).slice(2));function finish(ok,reason){if(finished)return;finished=true;clearTimeout(timer);const elapsed=Math.max(1,Math.round(performance.now()-started));status.textContent=ok?'正常':'检查超时';status.className='route-status '+(ok?'online':'offline');image.onload=null;image.onerror=null;resolve({card,ok,ms:ok?elapsed:999999,index,reason})}image.referrerPolicy='no-referrer';image.onload=()=>finish(image.naturalWidth===1&&image.naturalHeight===1,'invalid_image');image.onerror=()=>finish(false,'load_error');const timer=setTimeout(()=>finish(false,'timeout'),5000);image.src=probeUrl.href})}document.querySelectorAll('[data-copy]').forEach(button=>button.addEventListener('click',()=>copy(button.dataset.copy,button)));if(!routes.length){summary.textContent='当前无可检查线路';return}summary.textContent='正在检查 '+routes.length+' 条线路';Promise.all(routes.map(checkRoute)).then(results=>{results.sort((a,b)=>Number(b.ok)-Number(a.ok)||a.ms-b.ms||a.index-b.index).forEach(item=>container.append(item.card));const online=results.filter(item=>item.ok).length,timeouts=results.length-online;summary.textContent='访客线路检测完成:'+online+' 条正常,'+timeouts+' 条检查超时'})})();
27
27
  </script></body></html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "link-status-page",
3
- "version": "0.0.50",
3
+ "version": "0.0.54",
4
4
  "description": "小星星爱导航 npm 完整永久发布页",
5
5
  "private": false,
6
6
  "license": "UNLICENSED",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "format": "webring-publish-page-v1",
3
3
  "site": "小星星爱导航",
4
- "generated_at": "2026-09-21T02:52:12.469Z",
5
- "sha256": "ff17f541fe214bc0b196dfd6bc2e15c8f2c02fdc054e06ece5acfa17a627bb12",
4
+ "generated_at": "2026-09-21T03:56:42.362Z",
5
+ "sha256": "0bd837ddb49d14cf58adb9a7c4bc27bdd636cc4db9b1f440a1144ddd7e498e6b",
6
6
  "addresses": {
7
7
  "permanent": "https://yongjiufabuye.chinazhangsan.ccwu.cc/",
8
8
  "github_pages": "https://chinazhangsan999-crypto.github.io/control-center-fabuye",