dsh-pocket 1.13.3 → 1.13.4

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.
Files changed (2) hide show
  1. package/lib/proxy.mjs +7 -4
  2. package/package.json +1 -1
package/lib/proxy.mjs CHANGED
@@ -19,13 +19,16 @@ import { createHash } from 'node:crypto';
19
19
  const DEFAULT_UPSTREAM = { host: '127.0.0.1', port: 3080 };
20
20
 
21
21
  /**
22
- * 非安全上下文(http://<LAN-IP>:端口)里浏览器没有 crypto.randomUUID,
23
- * 前端(DSH 连接层 mint RPC id 用)会直接抛 "crypto.randomUUID is not a function"。
24
- * 通过代理给 HTML 文档注入 polyfill(只在缺少时生效,用 getRandomValues 实现 v4)。
22
+ * 非安全上下文(http://<LAN-IP>:端口)里浏览器缺两个 API,由代理注入 polyfill
23
+ * (只在缺少时生效,不覆盖原生实现):
24
+ * 1. crypto.randomUUID——DSH 连接层 mint RPC id 用,缺失直接抛错;
25
+ * 2. AbortSignal.any(issue #53)——Android 厂商浏览器/WebView(Chrome < 116)
26
+ * 无原生实现,DSH 连接层发送消息会调 AbortSignal.any([...]),缺失则消息发不出。
25
27
  * 带 data-dsh-pocket-polyfill 标记:注入判重用它,而不是搜索 "crypto.randomUUID"
26
28
  * 字样(dsh 页面源码里可能恰好出现该字符串,导致误判为已注入而跳过)。
27
29
  */
28
- const RANDOM_UUID_POLYFILL = `<script data-dsh-pocket-polyfill="1">!function(){try{if(self.crypto&&!self.crypto.randomUUID){self.crypto.randomUUID=function(){var b=new Uint8Array(16);self.crypto.getRandomValues(b);b[6]=b[6]&15|64;b[8]=b[8]&63|128;var h="";for(var i=0;i<16;i++){var x=b[i].toString(16);h+=(x.length<2?"0":"")+x;if(i===3||i===5||i===7||i===9)h+="-";}return h;}}}catch(e){}}();</script>`;
30
+ export const RANDOM_UUID_POLYFILL = `<script data-dsh-pocket-polyfill="1">!function(){try{if(self.crypto&&!self.crypto.randomUUID){self.crypto.randomUUID=function(){var b=new Uint8Array(16);self.crypto.getRandomValues(b);b[6]=b[6]&15|64;b[8]=b[8]&63|128;var h="";for(var i=0;i<16;i++){var x=b[i].toString(16);h+=(x.length<2?"0":"")+x;if(i===3||i===5||i===7||i===9)h+="-";}return h;}}}catch(e){}}();
31
+ !function(){try{if(self.AbortSignal&&!self.AbortSignal.any){self.AbortSignal.any=function(signals){var controller=new AbortController();var list=Array.from(signals||[]);var done=false;var handlers=list.map(function(signal){return function(){abort(signal);};});function cleanup(){for(var i=0;i<list.length;i++){try{list[i].removeEventListener('abort',handlers[i]);}catch(e){}}}function abort(signal){if(done)return;done=true;cleanup();try{controller.abort(signal.reason);}catch(e){controller.abort();}}for(var j=0;j<list.length;j++){var sig=list[j];if(sig.aborted){abort(sig);break;}sig.addEventListener('abort',handlers[j],{once:true});}return controller.signal;};}}catch(e){}}();</script>`;
29
32
 
30
33
  const INJECT_MARK = 'data-dsh-pocket-polyfill="1"';
31
34
 
package/package.json CHANGED
@@ -76,5 +76,5 @@
76
76
  "access": "public",
77
77
  "registry": "https://registry.npmjs.org/"
78
78
  },
79
- "version": "1.13.3"
79
+ "version": "1.13.4"
80
80
  }