k2-im 0.1.2 → 0.1.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.
- package/dist/browser.js +1 -1
- package/dist/chat-kit-pinia.d.ts +22 -1
- package/dist/chat-kit-pinia.js +1 -1
- package/dist/chat-kit-vue.js +1 -1
- package/dist/chat-kit.d.ts +17 -4
- package/dist/chat-kit.js +1 -1
- package/dist/{chunk-JUJCY6DH.js → chunk-2WDWWQQI.js} +1 -1
- package/dist/chunk-AFW5LCKV.js +1 -0
- package/dist/{chunk-WYHMM3QR.js → chunk-CV4TIRRW.js} +1 -1
- package/dist/chunk-CVBX4JM4.js +2 -0
- package/dist/chunk-EBM5MOQO.js +1 -0
- package/dist/{chunk-FO2MMPPT.js → chunk-K3DSNX5G.js} +1 -1
- package/dist/{chunk-ZXNH42G2.js → chunk-OQT455AV.js} +1 -1
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +17 -4
- package/dist/index.js +1 -1
- package/dist/sdk.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-QGGCU24I.js +0 -1
- package/dist/chunk-VSMNRAAM.js +0 -1
- package/dist/chunk-ZJBW4MOG.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {h,l,b as b$1,g,m}from'./chunk-CVBX4JM4.js';import {Na,B as B$1,Ma}from'./chunk-K3DSNX5G.js';import {ba,a as a$1,b,Z,fa}from'./chunk-AFW5LCKV.js';import {a}from'./chunk-WOT6VMZA.js';var fn=14,un="game:rps",mn="game:dice";function Le(e){if(e.stableKey.length===0||e.stableKey.trim()!==e.stableKey)throw new TypeError("Emoji recent item \u9700\u8981\u975E\u7A7A\u4E14\u65E0\u9996\u5C3E\u7A7A\u767D\u7684 stableKey")}function gn(e,t){Le(t);let n=new Set([t.stableKey]),r=[t];for(let o of e)if(Le(o),!n.has(o.stableKey)&&(n.add(o.stableKey),r.push(o),r.length===14))break;return Object.freeze(r)}var Fe=["0x1f600","0x1f603","0x1f604","0x1f601","0x1f606","0x1f605","0x1f923","0x1f602","0x1f642","0x1f643","0x1f609","0x1f60a","0x1f607","0x1f970","0x1f60d","0x1f929","0x1f618","0x1f617","0x1f61a","0x1f619","0x1f60b","0x1f61b","0x1f61c","0x1f92a","0x1f61d","0x1f911","0x1f917","0x1f92d","0x1f92b","0x1f914","0x1f910","0x1f928","0x1f610","0x1f611","0x1f636","0x1f60f","0x1f612","0x1f644","0x1f62c","0x1f925","0x1f60c","0x1f614","0x1f62a","0x1f924","0x1f634","0x1f637","0x1f912","0x1f915","0x1f922","0x1f92e","0x1f927","0x1f975","0x1f976","0x1f974","0x1f635","0x1f92f","0x1f920","0x1f973","0x1f60e","0x1f913","0x1f9d0","0x1f615","0x1f61f","0x1f641","0x1f62e","0x1f62f","0x1f632","0x1f633","0x1f97a","0x1f626","0x1f627","0x1f628","0x1f630","0x1f625","0x1f622","0x1f62d","0x1f631","0x1f616","0x1f623","0x1f61e","0x1f613","0x1f629","0x1f62b","0x1f971","0x1f624","0x1f621","0x1f620","0x1f92c","0x1f608","0x1f47f","0x1f480","0x1f4a9","0x1f921","0x1f479","0x1f47a","0x1f47b","0x1f47d","0x1f47e","0x1f916","0x1f63a","0x1f638","0x1f639","0x1f63b","0x1f63c","0x1f63d","0x1f640","0x1f63f","0x1f63e","0x1f648","0x1f649","0x1f64a","0x1f48c","0x1f498","0x1f49d","0x1f496","0x1f497","0x1f493","0x1f49e","0x1f495","0x1f49f","0x1f494","0x1f9e1","0x1f49b","0x1f49a","0x1f499","0x1f49c","0x1f90e","0x1f5a4","0x1f90d","0x1f48b","0x1f4af","0x1f4a2","0x1f4a5","0x1f4ab","0x1f4a6","0x1f4a8","0x1f4ac","0x1f4ad","0x1f4a4","0x1f44b","0x1f91a","0x1f590","0x270b","0x1f596","0x1f44c","0x1f90f","0x270c","0x1f91e","0x1f91f","0x1f918","0x1f919","0x1f448","0x1f449","0x1f446","0x1f595","0x1f447","0x1f44d","0x1f44e","0x270a","0x1f44a","0x1f91b","0x1f91c","0x1f44f","0x1f64c","0x1f450","0x1f932","0x1f91d","0x1f64f","0x270d","0x1f485","0x1f933","0x1f4aa","0x1f9be","0x1f9bf","0x1f9b5","0x1f9b6","0x1f442","0x1f9bb","0x1f443","0x1f9e0","0x1f9b7","0x1f9b4","0x1f440","0x1f445","0x1f444","0x1f435","0x1f9a7","0x1f436","0x1f98a","0x1f99d","0x1f431","0x1f981","0x1f42f","0x1f42e","0x1f437","0x1f43d","0x1f42d","0x1f439","0x1f430","0x1f43b","0x1f428","0x1f43c","0x1f9a5","0x1f983","0x1f414","0x1f423","0x1f425","0x1f427","0x1f985","0x1f986","0x1f989","0x1f9a9","0x1f99a","0x1f99c","0x1f438","0x1f433","0x1f980","0x1f490","0x1f338","0x1f4ae","0x1f339","0x1f940","0x1f33a","0x1f33b","0x1f340","0x1f341","0x1f342","0x1f343","0x1f9c0","0x1f969","0x1f354","0x1f35f","0x1f355","0x1f32d","0x1f96a","0x1f32e","0x1f32f","0x1f365","0x1f36b","0x2615","0x1f37a","0x1f943","0x1f30f","0x1f9f1","0x1f6d1","0x1f6a7","0x2693","0x1f680","0x23f3","0x231a","0x23f0","0x1f553","0x1f319","0x1f31a","0x1f31b","0x1f31c","0x1f31d","0x1f31e","0x1fa90","0x2b50","0x1f31f","0x1f320","0x1f30c","0x26c5","0x1f300","0x1f308","0x1f302","0x2614","0x26a1","0x26c4","0x1f525","0x1f4a7","0x1f30a","0x1f383","0x1f384","0x1f386","0x1f387","0x1f9e8","0x2728","0x1f388","0x1f389","0x1f38a","0x1f38b","0x1f38d","0x1f38e","0x1f38f","0x1f390","0x1f391","0x1f9e7","0x1f380","0x1f381","0x1f3ab","0x1f3c6","0x1f3c5","0x1f947","0x1f948","0x1f949","0x1f3c1","0x1f6a9","0x1f38c","0x1f3f4"];var vn=1114111,yn=55296,Cn=57343,Ue=65039,xn="0123456789abcdef";function Mn(e,t){if(!e.startsWith("0x")||e.length<=2)throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${t}`);let n=e.slice(2);for(let o of n)if(!xn.includes(o))throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${t}`);let r=Number.parseInt(n,16);if(!Number.isSafeInteger(r)||r>vn||r>=yn&&r<=Cn)throw new RangeError(`Unicode emoji code point \u8D8A\u754C: ${t}`);return r}function ee(e){if(e.length===0||e.trim()!==e)throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${e}`);let t=e.split(" ");if(t.some(n=>n.length===0))throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${e}`);return Object.freeze(t.map(n=>Mn(n,e)))}function bn(e){return String.fromCodePoint(...ee(e))}function xe(e){return e.map(t=>`0x${t.toString(16)}`).join(" ")}function hn(e){let t=ee(e),n=xe(t);if(n!==e)throw new TypeError(`Unicode emoji code \u5FC5\u987B\u4F7F\u7528 canonical \u5C0F\u5199\u683C\u5F0F: ${e}`);return Object.freeze({stableKey:`unicode:${n}`,code:e,codePoints:t,text:String.fromCodePoint(...t),kind:"unicode"})}var Me=Object.freeze(Fe.map(hn)),z=new Map,K=new Map;for(let e of Me){if(z.has(e.code)||K.has(e.text))throw new Error(`Unicode emoji \u76EE\u5F55\u5B58\u5728\u91CD\u590D\u9879: ${e.code}`);z.set(e.code,e),K.set(e.text,e);}for(let e of Me){let n=e.codePoints.at(-1)===Ue?e.codePoints.slice(0,-1):[...e.codePoints,Ue],r=xe(n),o=String.fromCodePoint(...n);z.has(r)||z.set(r,e),K.has(o)||K.set(o,e);}function In(e){if(e.startsWith("0x")){let t=xe(ee(e));return z.get(t)}return K.get(e)}var Ve=["[100\u5206]","[VS]","[\u4E0A]","[\u4E0B]","[\u4E0D\u542C]","[\u4E0D\u770B]","[\u4E0D\u9AD8\u5174]","[\u4EB2\u543B]","[\u4F1E]","[\u51FB\u638C]","[\u5357\u74DC\u5934]","[\u53F3]","[\u54C8\u54C8]","[\u54E6]","[\u5564\u9152]","[\u55B7\u568F]","[\u5723\u8BDE\u6811]","[\u5929\u4F7F\u7B11]","[\u5956\u676F]","[\u5BB3\u6015]","[\u5DE6]","[\u5E73\u9759]","[\u5F3A\u58EE]","[\u5F69\u8679]","[\u5F97\u610F]","[\u5FAE\u7B11]","[\u5FC3\u7D2F]","[\u5FC3\u8DF3]","[\u601D\u8003]","[\u6076\u9B54\u6012]","[\u6076\u9B54\u7B11]","[\u6210\u957F]","[\u6293\u72C2]","[\u62F3\u5934]","[\u6325\u624B]","[\u63E1\u62F3]","[\u65E0]","[\u661F\u661F]","[\u661F\u661F\u773C]","[\u6708\u997C]","[\u6C14\u6124]","[\u6EE1\u8DB3]","[\u706B]","[\u718A\u732B]","[\u7231\u4F60]","[\u725B]","[\u72D7]","[\u732B]","[\u7591\u60D1]","[\u7687\u51A0]","[\u778C\u7761]","[\u795D]","[\u79D8]","[\u7BEE\u7403]","[\u7F8E\u5473]","[\u836F]","[\u8DB3\u7403]","[\u95EA\u7535]","[\u95EA\u8000\u7684\u5FC3]","[\u96EA\u82B1]","[\u997A\u5B50]","[\u9A6C]","[\u9B3C]","[\u9E21]","[\u9F13\u638C]","[\u9F20]","[ALLIN]","[\u4F24\u5FC3]","[\u4FBF\u4FBF]","[\u5077\u7B11]","[\u50B2\u6162]","[\u50BB\u7B11]","[\u5192\u6C57]","[\u51CB\u96F6]","[\u53D1\u5446]","[\u53EF\u601C]","[\u53F9\u6C14]","[\u5403\u60CA]","[\u5403\u74DC]","[\u5408\u638C]","[\u5446\u6EDE]","[\u5455\u5410]","[\u5492\u9A82]","[\u5496\u5561]","[\u54C7]","[\u559C\u7231]","[\u5634\u5507]","[\u563F\u54C8]","[\u56F0]","[\u56F0\u4F4F]","[\u5927\u54ED]","[\u5927\u7B11]","[\u592A\u9633]","[\u5931\u671B]","[\u594B\u6597]","[\u5978\u7B11]","[\u59D4\u5C48]","[\u5BB3\u7F9E]","[\u5C2C\u7B11]","[\u5E72\u676F]","[\u5E86\u795D]","[\u5FC3\u788E]","[\u6050\u60E7]","[\u60CA\u8BB6]","[\u6109\u60A6]","[\u611F\u5192]","[\u6124\u6012]","[\u61CA\u607C]","[\u620F\u5F04]","[\u6253\u51FB]","[\u62A0\u9F3B]","[\u62B1\u62F3]","[\u62C5\u5FC3]","[\u62DC\u62DC]","[\u62E5\u62B1]","[\u6342\u8138]","[\u63E1\u624B]","[\u642C\u7816]","[\u6536\u5230]","[\u6536\u5272]","[\u65B9\u5757]","[\u65E0\u8BED]","[\u6655]","[\u6708\u4EAE]","[\u673A\u667A]","[\u6C57]","[\u6D77\u8482]","[\u70B8\u5F39]","[\u70DF\u82B1]","[\u718A\u54ED\u4E86]","[\u7206\u7AF9]","[\u7231\u5FC3]","[\u725B\u5E02]","[\u72D7\u5934]","[\u732A]","[\u73AB\u7470]","[\u751F\u65E5\u86CB\u7CD5]","[\u767D\u773C]","[\u76B1\u7709]","[\u770B\u6DA8]","[\u770B\u8DCC]","[\u7728\u773C]","[\u7761\u89C9]","[\u793C\u7269]","[\u793E\u4F1A]","[\u798F]","[\u7B11\u54ED]","[\u7CD6\u679C]","[\u7EA2\u5305]","[\u8036]","[\u8138\u7EA2]","[\u82E6\u6DA9]","[\u83DC\u5200]","[\u8870]","[\u88C2\u5F00]","[\u8981\u54ED\u4E86]","[\u8C03\u76AE]","[\u8D5E]","[\u8E29]","[\u9119\u89C6]","[\u9177]","[\u91D1\u94B1]","[\u9501\u7BB1]","[\u957F\u8349]","[\u95EE\u53F7]","[\u95F9\u5267]","[\u9634\u9669]","[\u964D\u843D\u4F1E]","[\u96BE\u8FC7]","[\u98DE\u543B]","[\u9AB7\u9AC5]","[\u9EBB\u5C06]"];var ze=h,Tn=new Set(Ve),Pn="/images/emoji/v1",En=(()=>{let e=new Map;for(let t of ze)for(let n of t.tokens)e.set(n,t);return e})();function Rn(e){return En.get(e)}function kn(e,t=Pn){return `${t}/${e.file}`}var wn=/\[[^[\]]{1,20}\]/g,An=(()=>{let e=new Map;for(let t of ze)e.set(t.code,t);return e})();function Wt(e,t){let n=An.get(e);return n===void 0?void 0:kn(n,t)}var _n=/\[[^[\]]{1,20}\]/;function $t(e){return _n.test(e)}function Nn(){return e=>{let t=[];for(let n of e.matchAll(wn)){let r=Rn(n[0]);if(n.index!==void 0){if(r!==void 0){t.push({start:n.index,end:n.index+n[0].length-1,segment:{kind:"emoji",text:n[0],code:r.code}});continue}Tn.has(n[0])&&t.push({start:n.index,end:n.index+n[0].length-1,segment:{kind:"legacy-emoji-placeholder",text:n[0]}});}}return t}}var Dn=Nn();function Xt(e){if(e.contentType!=="text"||e.encryption.decryptFailed===true||e.mention!==void 0)return null;let t=e.body.text;if(t===void 0||t==="")return null;let n=Dn(t);if(n.length===0)return null;let r=0,o=[];for(let a of n){if(a.start!==r||a.segment.kind!=="emoji"&&a.segment.kind!=="legacy-emoji-placeholder")return null;o.push(a.segment),r=a.end+1;}return r!==t.length?null:Object.freeze({segments:Object.freeze(o),count:o.length})}function Ke(e){let t=new Map,n=new Set,r=e.revokeObjectUrl??(d=>URL.revokeObjectURL(d));function o(d){d.revoked||(d.revoked=true,n.delete(d),r(d.url));}function a(d){t.get(d.key)===d&&t.delete(d.key),d.retired=true,d.leases===0?o(d):n.add(d);}function s(){let d=0,l=0;for(let p of t.values())p.evictable&&(d+=1,l+=p.byteSize);return {entries:d,bytes:l}}function i(){let d=s();for(;d.entries>e.maxCachedEntries||d.bytes>e.maxCachedBytes;){let l;for(let p of t.values())if(p.evictable&&p.leases===0){l=p;break}if(l===void 0)return;a(l),d=s();}}function c(d,l,p){let h=p.byteSize??0,$=Number.isFinite(h)&&h>0?Math.floor(h):0,E=t.get(d);if(E?.url===l){E.byteSize=$,E.evictable=p.evictable,t.delete(d),t.set(d,E),i();return}E!==void 0&&a(E),t.set(d,{key:d,url:l,byteSize:$,evictable:p.evictable,leases:0,retired:false,revoked:false}),i();}function g(d,l){let p=t.get(d);if(p===void 0)return false;let h=t.get(l);return h!==void 0&&h!==p&&a(h),t.delete(d),p.key=l,t.set(l,p),true}function f(d,l){let p=t.get(d);return p===void 0?false:(l!==void 0&&Number.isFinite(l)&&l>0&&(p.byteSize=Math.floor(l)),p.evictable=true,t.delete(d),t.set(d,p),i(),t.get(d)===p)}function v(d){let l=t.get(d);if(l===void 0||l.revoked)return;l.leases+=1,t.delete(d),t.set(d,l);let p=false;return Object.freeze({url:l.url,release(){p||(p=true,l.leases=Math.max(0,l.leases-1),l.retired&&l.leases===0?o(l):i());}})}function u(d){let l=t.get(d);l!==void 0&&a(l);}function y(d){for(let l of [...t.keys()])l.startsWith(d)&&u(l);}function C(){let d=[...t.values()];t.clear();for(let l of [...d,...n])o(l);n.clear();}return {register:c,move:g,makeEvictable:f,acquire:v,remove:u,removeByPrefix:y,clearAll:C,getStats:()=>Object.freeze({activeEntries:t.size,retiredEntries:n.size,...s()})}}var On=20;function Gn(){if(typeof navigator>"u")return {maxCachedEntries:6,maxCachedBytes:512*1024*1024};let e=navigator,t=e.deviceMemory??4,n=/Android|iPhone|iPad|Mobile/i.test(e.userAgent);return e.connection?.saveData===true||t<=2||navigator.hardwareConcurrency<=2?{maxCachedEntries:2,maxCachedBytes:128*1024*1024}:n?{maxCachedEntries:4,maxCachedBytes:256*1024*1024}:t>=8&&navigator.hardwareConcurrency>=8?{maxCachedEntries:9,maxCachedBytes:1024*1024*1024}:{maxCachedEntries:6,maxCachedBytes:512*1024*1024}}function be(e){return `message\0${e.conversationType}\0${e.conversationId}\0${e.messageId}`}function jn(e){return `message\0${e.conversationType}\0${e.conversationId}\0`}function he(e){return `source\0${e}`}function Mr(e){let t=a$1(e.cachePrefix),n=b(t),r=e.createClient??l,o=e.createStorage??(m=>typeof indexedDB>"u"?void 0:Na({...m,mediaAssetCache:{strategies:b$1()}})),a=e.createProfile??(m=>B$1(m)),s=e.deleteStorage??(m=>Ma(m.accountId,{namespaceFactory:m.namespaceFactory})),i=null,c=null,g$1=false,f,v,u,y=0,C,d=false,l$1={wsUrl:"",userId:"",token:"",deviceToken:"",channelType:"0",cmHttpBaseUrl:""},p=g(e.debug,()=>({generation:y,...l$1.userId===""?{}:{accountId:l$1.userId}}));p.record("debug","chat-kit","session","runtime-created");function h(){return {generation:y,...l$1.userId===""?{}:{accountId:l$1.userId}}}function $(){l$1.userId="",l$1.token="",l$1.deviceToken="",l$1.channelType="0";}let E={},X={},Y={},k=new Map,A=Ke(Gn()),J=new Set,F=new Set,q=new Set;function U(){for(let m of q)m();}function ie(){let m=h(),M=i,b=v!==void 0||u!==void 0;v?.(),v=void 0,u?.(),u=void 0,b&&p.record("debug","chat-kit","session","client-subscriptions-released",()=>m),M?.connection.disconnect("im-chat-auth-changed"),i=null,c=null,Promise.resolve(f?.close?.()).catch(()=>{}),f=void 0,y+=1,E={},X={},Y={},se(),k.clear(),U();}function Q(){if(d)throw new Error("ChatRuntime \u5DF2 dispose\uFF0C\u4E0D\u80FD\u521B\u5EFA/\u590D\u7528 client");if(i===null){f=o({namespaceFactory:n});let M=C?.getCoreClient(),b=C?.getCoreApi?.();g$1=M!==void 0||b!==void 0;let P=C?.clientType??2,S=M?a({client:M,clientType:P,storage:f}):void 0,w={authProvider:{getLoginContext:async()=>{let R=C?.getSession?.(),H=C?.getSession!==void 0,de=(H?R?.userId:l$1.userId)?.trim()??"",Ge=(H?R?.token:l$1.token)?.trim()??"";return de===""||Ge===""||de!==l$1.userId?null:{userId:de,token:Ge,deviceToken:l$1.deviceToken,clientType:P,channelType:Number(l$1.channelType)}}},endpointProvider:{getEndpoints:async()=>[{url:l$1.wsUrl}],getCmHttpBaseUrl:async()=>l$1.cmHttpBaseUrl},cache:{prefix:t},adapters:{namespaceFactory:n,storage:{create:R=>{if(R.namespaceFactory!==n)throw new Error("ChatRuntime storage namespace factory \u4E0D\u4E00\u81F4");return f},purgeCurrentAccount:R=>s(R)}},profile:S,media:C?.getMediaConfig(),expressions:C?.getExpressionOptions?.(),coreApi:b,coreClient:M,debug:e.debug},j=r(w),ce=j.events;if(ce===void 0&&F.size>0)throw Promise.resolve(f?.close?.()).catch(()=>{}),f=void 0,new Error("IM client \u7F3A\u5C11\u4EA7\u54C1\u4E8B\u4EF6 API");i=j,v=i.connection.subscribe(R=>{for(let H of J)H(R);}),ce!==void 0&&(u=ce.subscribe(R=>{for(let H of F)H(R);})),p.record("debug","chat-kit","session","client-subscriptions-established",()=>h());}return i}function Oe(){let m$1=Q();return c??=m(m$1,{coreApiAvailable:g$1}),c}function se(){A.clearAll();}function ln(m){A.removeByPrefix(jn(m));}return {getClient:()=>i,getProductClient:()=>i===null?null:Oe(),ensureProductClient:Oe,getConnectionState:()=>i?.connection.state??"idle",getGeneration:()=>y,getCredentials:()=>l$1,getMediaConfig:()=>C?.getMediaConfig(),getDiagnostics:()=>p,configureHost(m){C=m;},applySession(m,M,b){let P=m?.userId??"",S=m?.token??"",w=i!==null&&(l$1.userId!==P||l$1.token!==S);return w&&ie(),l$1.wsUrl=M.wsUrl,l$1.cmHttpBaseUrl=M.cmHttpBaseUrl,l$1.userId=P,l$1.token=S,l$1.deviceToken=b,l$1.channelType="0",p.record("info","chat-kit","session","session-applied",()=>({data:{accountId:P,hasToken:S!=="",didReset:w}})),{didReset:w,hasToken:S!==""}},ensureClient:Q,async prepare(){if(d)return {ok:false,errorKey:"lifecycle.disposed"};if(l$1.userId==="")return {ok:false,errorKey:"lifecycle.missingLoginState"};let m=Date.now(),M=h();p.record("info","chat-kit","session","prepare-start",()=>M);try{return await Q().connection.prepare(),p.record("info","chat-kit","session","prepare-complete",()=>({...M,durationMs:Date.now()-m})),{ok:!0}}catch(b){return p.record("error","chat-kit","session","prepare-failed",()=>({...M,durationMs:Date.now()-m,error:{message:"ChatRuntime prepare \u5931\u8D25",data:b}})),{ok:false,errorKey:"lifecycle.prepareFailed",errorParams:{reason:b instanceof Error?b.message:String(b)}}}},async connect(){if(d)return {ok:false,errorKey:"lifecycle.disposed"};if(l$1.wsUrl===""||l$1.userId===""||l$1.token==="")return {ok:false,errorKey:"lifecycle.missingConnectParams"};let m=Date.now(),M=h();p.record("info","chat-kit","connection","connect-start",()=>M);try{return await Q().connection.connect(),p.record("info","chat-kit","connection","connect-complete",()=>({...M,durationMs:Date.now()-m})),{ok:!0}}catch(b){return p.record("error","chat-kit","connection","connect-failed",()=>({...M,durationMs:Date.now()-m,error:{message:"ChatRuntime connect \u5931\u8D25",data:b}})),{ok:false,errorKey:"lifecycle.connectFailed",errorParams:{reason:b instanceof Error?b.message:String(b)}}}},disconnect(){let m=h();p.record("info","chat-kit","connection","disconnect",()=>m),i?.connection.disconnect("im-chat-manual");},async logout(m){let M=Date.now(),b=h();p.record("info","chat-kit","session","logout-start",()=>({...b,data:m}));let P=i,S,w;if(P!==null)try{w=P.logout(m);}catch(j){S=j;}if($(),y+=1,w!==void 0)try{await w;}catch(j){S=j;}if(E={},X={},Y={},se(),k.clear(),U(),p.record(S===void 0?"info":"error","chat-kit","session",S===void 0?"logout-complete":"logout-failed",()=>({...b,durationMs:Date.now()-M,...S===void 0?{}:{error:{message:"ChatRuntime logout \u5931\u8D25",data:S}}})),S!==void 0)throw S},resetForAuthChange:ie,dispose(){let m=h();p.record("info","chat-kit","session","dispose",()=>m),ie(),J.clear(),F.clear(),q.clear(),d=true;},subscribeEvents(m){return J.add(m),()=>{J.delete(m);}},subscribeProductEvents(m){return F.add(m),()=>{F.delete(m);}},getSenderProfileCache:()=>E,setSenderProfileCache(m){E=m,U();},getGroupMemberNames:()=>X,setGroupMemberNames(m){X=m,U();},getChannelMemberProfiles:()=>Y,setChannelMemberProfiles(m){Y=m,U();},subscribeProfileChange(m){return q.add(m),()=>{q.delete(m);}},putSelfVoiceBytes(m,M){for(k.delete(m),k.set(m,M);k.size>On;){let b=k.keys().next().value;if(b===void 0)break;k.delete(b);}},getSelfVoiceBytes:m=>k.get(m),clearSelfVoiceBytes(){k.clear();},createLocalMediaPreview(m){let M=URL.createObjectURL(m);return A.register(he(M),M,{byteSize:m.size,evictable:false}),M},discardLocalMediaPreview(m){A.remove(he(m));},trackLocalMediaPreview(m,M){A.move(he(M),be(m));},resolveMediaPreviewToRemote(m,M,b){let P=be(m);M==="image"||M==="video"?A.makeEvictable(P,b):A.remove(P);},acquireMediaBlob(m){return A.acquire(be(m))},cleanupLocalMediaBlobs:se,cleanupConversationMediaBlobs:ln}}function We(e){return "group"in e?e.group:e.channel}function $e(e,t,n){if(t.conversationType!==e.ref.conversationType||t.conversationId!==e.ref.conversationId||t.status!=="sent"||t.recalled!==void 0||t.deletedForEveryone!==void 0||t.encryption.decryptFailed===true||!["text","image","video","voice","file","miniProgram","transfer","game"].includes(t.contentType))return false;if(n===null)return true;let r=We(n);return r.conversationType!==e.ref.conversationType||r.conversationId!==e.ref.conversationId||n.messageId!==t.id}function Hn(e){let{session:t,message:n,currentPinnedMessage:r,selfId:o,ownerId:a}=e;return t?.ref.conversationType==="group"&&(t.groupState===void 0||t.groupState==="active")&&o!==""&&a!==void 0&&a!==""&&o===a&&$e(t,n,r)}function Bn(e){let{session:t,message:n,currentPinnedMessage:r}=e;return t?.ref.conversationType==="channel"&&t.channelState==="active"&&t.channelPermissions?.moderateMessages===true&&$e(t,n,r)}function hr(e){return e.session?.ref.conversationType==="group"?Hn(e):e.session?.ref.conversationType==="channel"?Bn(e):false}function Xe(e,t){if(e===null)return false;let n=We(e);return n.conversationType===t.conversationType&&n.conversationId===t.conversationId&&e.messageId===t.id}function Sr(e,t,n,r,o){let a=e[r];if(a&&a.remark!=="")return a.remark;let s=n===""?void 0:t[n]?.[r];if(s!==void 0&&s!=="")return s;if(a&&a.nickname!=="")return a.nickname;let i=(o??"").trim();return i!==""?i:r.length>12?`${r.slice(0,6)}\u2026${r.slice(-4)}`:r}function Tr(e,t,n,r){let o=e[r];if(o?.remark!==void 0&&o.remark!=="")return o.remark;let a=t[n]?.[r]?.displayName;return a!==void 0&&a!==""?a:o?.nickname!==void 0&&o.nickname!==""?o.nickname:r}function Pr(e,t,n,r){let o=t[n]?.[r]?.avatar;return o!==void 0&&o!==""?o:Ln(e,r)}function Ln(e,t){return e[t]?.avatar??""}function Er(e,t){return e[t]?.nickname??""}function Rr(e){return (e.remark??"").trim()||e.nickname||e.id}function Ie(e,t,n=Date.now()){return e.senderId!==t||e.status!=="sent"||e.recalled!==void 0||e.deletedForEveryone!==void 0?false:n-(e.serverTime??e.createdAt)<=300*1e3}function Se(e,t,n,r=Date.now()){return e.senderId!==t||e.status!=="sent"||e.recalled!==void 0||e.deletedForEveryone!==void 0||e.body.text===void 0||e.body.text===""?false:r-(e.serverTime??e.createdAt)<=n}var I=Object.freeze({availability:"available",reason:"ok"});function x(e){return Object.freeze({availability:"unavailable",reason:e})}function Fn(e,t){return e.ref.conversationType===t.conversationType&&e.ref.conversationId===t.conversationId}function ne(e){if(e.status!=="sent"||e.recalled!==void 0||e.deletedForEveryone!==void 0||e.contentType==="system")return x("unsupported-type")}function Un(e){return e.status==="sent"&&e.recalled===void 0&&e.deletedForEveryone===void 0&&e.encryption.decryptFailed!==true&&["text","image","video","voice","file","miniProgram","game"].includes(e.contentType)}function Vn(e){return e.status==="sent"&&e.recalled===void 0&&e.deletedForEveryone===void 0}function W(e){return e.conversationType==="channel"?e.value.canMutateMessages:(e.conversationType==="group",e.value.canUseMessageActions)}function Ye(e,t,n={}){return t.availability==="available"?"":e==="direct"?n.mode!=="target"?"":t.reason==="blocked"||t.reason==="not-friend"?"directBlock.contactRequired":"":e==="group"?t.reason==="left"?"groupBlock.left":t.reason==="removed"?"groupBlock.removed":t.reason==="dismissed"?"groupBlock.dismissed":"groupBlock.unknownRestricted":e==="channel"?t.reason==="guest"?"channelBlock.guest":t.reason==="left"?"channelBlock.left":t.reason==="removed"?"channelBlock.removed":t.reason==="dismissed"?"channelBlock.dismissed":t.reason==="muted-all"?"channelBlock.allMembersMuted":t.reason==="muted-self"?"channelBlock.currentUserMuted":t.reason==="muted"?"channelBlock.muted":t.reason==="blacklisted"?"channelBlock.blacklisted":"channelBlock.unknownRestricted":""}function Nr(e,t){switch(t){case "conversation.openProfile":return e.conversationType==="direct"||e.conversationType==="group",e.value.canOpenProfile;case "conversation.readHistory":return e.conversationType==="direct"?I:e.value.canReadHistory;case "conversation.listPreferences":return e.conversationType==="channel"?e.value.state==="muted"?I:e.value.canOpenProfile:e.conversationType==="group"?e.value.canOpenProfile:I;case "composer.send":return e.value.canSendMessages;case "composer.mentionAll":return e.conversationType==="channel"?e.value.canMentionAll:I;case "profile.edit":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canEditProfile:I;case "relationship.manage":return e.conversationType==="direct"?e.value.canManageRelationship:x("unsupported-type");case "members.view":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canViewMembers:x("unsupported-type");case "members.manage":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canManageMembers:x("unsupported-type");case "members.invite":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canInviteMembers:x("unsupported-type");case "members.remove":return e.conversationType==="channel"?e.value.canRemoveMembers:e.conversationType==="group"?e.value.canManageMembers:x("unsupported-type");case "members.setAdmin":return e.conversationType==="channel"?e.value.canSetMemberAdmin:x("unsupported-type");case "ownership.transfer":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canTransferOwnership:x("unsupported-type");case "conversation.leave":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canLeave:x("unsupported-type");case "channel.manageMute":return e.conversationType==="channel"?e.value.canManageMute:x("unsupported-type");case "channel.setMemberPrivateChat":return e.conversationType==="channel"?e.value.canSetMemberPrivateChat:x("unsupported-type");case "channel.dismiss":return e.conversationType==="channel"?e.value.canDismiss:x("unsupported-type")}}function Dr(e,t){let{message:n,pinnedMessage:r,selfId:o,snapshot:a,nowMs:s=Date.now()}=t;if(!Fn(a,n))return x("unsupported-type");let i=Xe(r,n);switch(e){case "message.forward":{let c=ne(n);return c!==void 0?c:ba(n)?I:x("unsupported-type")}case "message.multiSelect":{let c=ne(n);return c!==void 0?c:i?x("message-protected"):I}case "message.reply":{let c=ne(n);return c!==void 0?c:a.conversationType==="direct"?I:W(a)}case "message.recall":return i?x("message-protected"):a.conversationType==="direct"?Ie(n,o,s)?I:x("role-insufficient"):W(a).availability!=="available"?W(a):Ie(n,o,s)?I:x("role-insufficient");case "message.edit":return i?x("message-protected"):a.conversationType==="direct"?Se(n,o,Z,s)?I:x("role-insufficient"):W(a).availability!=="available"?W(a):Se(n,o,Z,s)?I:x("role-insufficient");case "message.pin":return i?x("message-protected"):Un(n)&&(a.conversationType==="group"||a.conversationType==="channel")?a.value.canPinMessages:x("unsupported-type");case "message.unpin":return a.conversationType==="group"||a.conversationType==="channel"?a.value.canUnpinMessages:x("unsupported-type");case "message.deleteLocal":{if(i)return x("message-protected");let c=ne(n);return c!==void 0?c:n.contentType==="unknown"?x("unsupported-type"):a.conversationType==="direct"||a.conversationType==="group"?I:x("unsupported-type")}case "message.deleteForEveryone":return i?x("message-protected"):a.conversationType!=="channel"||!Vn(n)?x("unsupported-type"):a.value.canDeleteMessagesForEveryone}}function Or(e,t){let{selfId:n,snapshot:r,targetRole:o="unknown",targetUserId:a}=t;if(a===""||a===n)return x("role-insufficient");if(r.conversationType==="group"){if(e!=="members.removeTarget")return x("unsupported-type");let i=r.value.canManageMembers;return i.availability!=="available"?i:r.value.ownerId!==void 0&&a===r.value.ownerId?x("role-insufficient"):I}if(r.conversationType!=="channel")return x("unsupported-type");if(e==="members.removeTarget"||e==="members.editNicknameTarget"){let i=r.value.canRemoveMembers;return i.availability!=="available"?i:r.value.role==="owner"?o==="member"||o==="admin"?I:x("role-insufficient"):r.value.role==="admin"&&o==="member"?I:x("role-insufficient")}let s=r.value.canSetMemberAdmin;return s.availability!=="available"?s:r.value.role!=="owner"?x("role-insufficient"):e==="members.setAdminTarget"?o==="member"?I:x("role-insufficient"):o==="admin"?I:x("role-insufficient")}function Je(e){if(e===void 0||e==="active")return "";switch(e){case "guest":return "channelBlock.guest";case "left":return "channelBlock.left";case "removed":return "channelBlock.removed";case "dismissed":return "channelBlock.dismissed";case "muted":return "channelBlock.muted";case "blacklisted":return "channelBlock.blacklisted";case "unknown_restricted":return "channelBlock.unknownRestricted"}}function qe(e,t=Date.now()){if(e?.channelState===void 0)return "channelBlock.unknownRestricted";let n=fa({channelState:e.channelState,snapshot:e.channelAccessSnapshot,permissions:e.channelPermissions,nowMs:t});return n.channelState==="muted"?n.muteReason==="all-members"?"channelBlock.allMembersMuted":n.muteReason==="current-user"?"channelBlock.currentUserMuted":"channelBlock.muted":n.channelState!=="active"?Je(n.channelState)||"channelBlock.unknownRestricted":n.permissions.sendMessages?"":"channelBlock.unknownRestricted"}var N=9;function zn(e={}){let t=typeof navigator<"u"?navigator:void 0,n=e.deviceMemoryGb??(typeof t?.deviceMemory=="number"?t.deviceMemory:4),r=Math.floor(n*1024*1024*1024/8);return Math.min(512*1024*1024,Math.max(64*1024*1024,r))}async function Qe(e,t,n={}){if(e.length===0)return {processedCount:0,rejectedByLimit:false};let r=e.length>9;r&&n.onRejectedByLimit?.({reason:"count-limit",maxCount:9,selectedCount:e.length});let o=e.slice(0,9);if(n.startAll)return await Promise.all(o.map(g=>t(g).catch(()=>false))),{processedCount:o.length,rejectedByLimit:r};let a=zn(n),s=Math.max(1,Math.floor(n.maxConcurrency??Number.POSITIVE_INFINITY)),i=0,c=new Set;for(let g of o){for(;c.size>0&&(c.size>=s||i+g.size>a);)await Promise.race(c);i+=g.size;let f=t(g).catch(()=>false).finally(()=>{i-=g.size,c.delete(f);});c.add(f);}return await Promise.all(c),{processedCount:o.length,rejectedByLimit:r}}async function Te(e){let t=e.type.trim().toLowerCase(),n=new Uint8Array(await e.slice(0,6).arrayBuffer()),r=n.length===6?String.fromCharCode(...n):"",o=r==="GIF87a"||r==="GIF89a",a=t==="image/gif";return o&&(a||t==="")?"gif":o||a?"invalid-gif":"not-gif"}async function Pe(e){return await Te(e)==="gif"}var Kn=new Set(["group","channel"]),Wn=new Set(["group","channel"]),$n=30*1024*1024,Ze=200*1024*1024,en=200*1024*1024,Xn=3*1024*1024;function te(e,t,n){let r=e.getConversationHandle();if(!(r===void 0||n===void 0||n==="supergroup"))return r.ref.conversationId===t&&r.ref.conversationType===n?r:void 0}function re(e,t){return e.retainConversationHandle?.(t)??(()=>{})}function Ee(e,t){try{return e.getSnapshot().messages.find(n=>n.contentType==="video"?n.body.video?.url===t:n.contentType==="image"?n.body.image?.url===t:n.contentType==="sticker"?n.body.sticker?.url===t:!1)?.id}catch{return}}function Re(e){if(e===void 0)return;let t=e.atAll?[{userId:"0",displayName:""}]:[];for(let n of e.atUserIds)t.push({userId:n,displayName:e.atUsersName?.[n]??n});return t.length===0?void 0:t}function Yn(e){if(e===void 0||e==="active")return "";switch(e){case "left":return "groupBlock.left";case "removed":return "groupBlock.removed";case "dismissed":return "groupBlock.dismissed";default:return "groupBlock.unknownRestricted"}}function Kr(e){return Kn.has(e)}function Jn(e){return Wn.has(e)}function Wr(e,t=Date.now()){return e?.type==="channel"?qe(e,t):e?.type==="group"?Yn(e.groupState):""}function D(e,t,n,r={}){let o=e.getProductClient();if(o===null)return "";let a=n??o.conversations.list().find(i=>i.ref.conversationId===t)?.ref.conversationType;if(a===void 0||a==="supergroup")return "";let s=o.capabilities.get({conversationType:a,conversationId:t}).value.canSendMessages;return Ye(a,s,r)}async function $r(e,t,n){let r=e.getClient(),o=t.text.trim();if(r===null)return n.setNote(n.t("common.notConnected")),false;if(t.conversationId==="")return n.setNote(n.t("common.selectOrOpenConversation")),false;if(o==="")return false;let a=e.getGeneration();try{let s=t.conversationType;if(s===void 0)return n.setNote(n.t("common.conversationTypeNotReady")),!1;let i=te(n,t.conversationId,s);if(i===void 0)return n.setNote(n.t("common.conversationNotReady")),!1;let c=D(e,t.conversationId,s);if(c!=="")return n.setNote(n.t(c)),!1;let g=re(n,i);try{let f=await i.messages.sendText(o,{...Jn(s)?{mentions:Re(t.mention)}:{},...t.refMessageId===void 0?{}:{replyToMessageId:t.refMessageId}});return n.refreshActiveMessages(),f.ok?e.getGeneration()===a:(e.getGeneration()===a&&n.setNote(n.t("send.failed",{reason:f.error.code})),!1)}finally{g();}}catch(s){return e.getGeneration()===a&&n.setNote(n.t("send.failed",{reason:s instanceof Error?s.message:String(s)})),false}}async function nn(e,t,n){let{kind:r,file:o,conversationId:a,conversationType:s,refMessageId:i}=t,c=n.t(`label.${r}`);if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),false;if(a===""||s===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let f=te(n,a,s);if(f===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let v=D(e,a,s);if(v!=="")return n.setNote(n.t(v)),false;let u=r==="video"?Ze:r==="file"?en:r==="sticker"?Xn:$n;if(o.size>u)return n.pushMediaLimitItem({name:o.name,sizeMb:o.size/1024/1024,label:c,maxMb:Math.round(u/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:o.name,label:c,maxMb:Math.round(u/1024/1024)})),false;let y=e.getGeneration();if(o.size===0)return e.getGeneration()===y&&n.setNote(n.t("send.mediaEmpty",{label:c})),false;if(r==="sticker"&&!await Pe(o))return e.getGeneration()===y&&n.setNote(n.t("send.mediaFailed",{label:c,reason:"GIF signature mismatch"})),false;let C=re(n,f),d;try{d=r==="file"?void 0:e.createLocalMediaPreview(o);let l=t.localPreviewMetadata;if(e.getGeneration()!==y)return d!==void 0&&e.discardLocalMediaPreview(d),!1;let p=await(r==="image"?f.messages.sendImage(o,{...d===void 0?{}:{localPreviewUrl:d},...l===void 0?{}:{localPreviewMetadata:l},...i===void 0?{}:{replyToMessageId:i}}):r==="video"?f.messages.sendVideo(o,{...d===void 0?{}:{localPreviewUrl:d},...l===void 0?{}:{localPreviewMetadata:l},...i===void 0?{}:{replyToMessageId:i}}):r==="sticker"?f.messages.sendGif(o,{...d===void 0?{}:{localPreviewUrl:d},...i===void 0?{}:{replyToMessageId:i}}):f.messages.sendFile(o,{fileName:o.name,...i===void 0?{}:{replyToMessageId:i}}));if(n.refreshActiveMessages(),!p.ok){if(e.getGeneration()===y&&(p.error.code==="IM_SDK_VIDEO_DURATION_TOO_LONG"?n.showWarning?.(n.t("send.videoTooLong",{name:o.name,maxMinutes:5})):p.error.code==="IM_SDK_VIDEO_DURATION_UNAVAILABLE"?n.showWarning?.(n.t("send.videoDurationUnavailable",{name:o.name})):n.setNote(p.error.code==="IM_SDK_MEDIA_CANCELLED"?n.t("send.mediaCancelled",{label:c}):n.t("send.mediaFailed",{label:c,reason:p.error.code}))),d!==void 0){let h=Ee(f,d);h===void 0?e.discardLocalMediaPreview(d):e.trackLocalMediaPreview({conversationId:a,conversationType:s,messageId:h},d);}return !1}return e.getGeneration()===y}catch(l){if(e.getGeneration()===y&&n.setNote(n.t("send.mediaFailed",{label:c,reason:l instanceof Error?l.message:String(l)})),d!==void 0){let p=Ee(f,d);p===void 0?e.discardLocalMediaPreview(d):e.trackLocalMediaPreview({conversationId:a,conversationType:s,messageId:p},d);}return false}finally{C();}}async function Xr(e,t,n){let{kind:r,file:o,messageId:a,conversationId:s,conversationType:i}=t,c=n.t(`label.${r}`);if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),false;let g=te(n,s,i);if(g===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let f=D(e,s,i);if(f!=="")return n.setNote(n.t(f)),false;let v=r==="video"?Ze:en;if(o.size>v)return n.pushMediaLimitItem({name:o.name,sizeMb:o.size/1024/1024,label:c,maxMb:Math.round(v/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:o.name,label:c,maxMb:Math.round(v/1024/1024)})),false;let u=e.getGeneration();if(o.size===0)return e.getGeneration()===u&&n.setNote(n.t("send.mediaEmpty",{label:c})),false;let y=re(n,g),C;try{if(C=r==="video"?e.createLocalMediaPreview(o):void 0,e.getGeneration()!==u)return C!==void 0&&e.discardLocalMediaPreview(C),!1;let d=await(r==="video"?g.messages.replaceInterruptedVideo(a,o,{...C===void 0?{}:{localPreviewUrl:C}}):g.messages.replaceInterruptedFile(a,o,{fileName:o.name}));if(n.refreshActiveMessages(),!d.ok){e.getGeneration()===u&&(d.error.code==="IM_SDK_VIDEO_DURATION_TOO_LONG"?n.showWarning?.(n.t("send.videoTooLong",{name:o.name,maxMinutes:5})):d.error.code==="IM_SDK_VIDEO_DURATION_UNAVAILABLE"?n.showWarning?.(n.t("send.videoDurationUnavailable",{name:o.name})):n.setNote(n.t("send.mediaFailed",{label:c,reason:d.error.code})));let l=C!==void 0&&g.getSnapshot().messages.some(p=>p.id===a&&p.contentType==="video"&&p.body.video?.url===C);return C!==void 0&&!l?e.discardLocalMediaPreview(C):C!==void 0&&e.trackLocalMediaPreview({conversationId:s,conversationType:i,messageId:a},C),!1}return e.getGeneration()===u}catch(d){return e.getGeneration()===u&&n.setNote(n.t("send.mediaFailed",{label:c,reason:d instanceof Error?d.message:String(d)})),C!==void 0&&(Ee(g,C)===a?e.trackLocalMediaPreview({conversationId:s,conversationType:i,messageId:a},C):e.discardLocalMediaPreview(C)),false}finally{y();}}function qn(e){let t=e.getMediaConfig()?.buckets.voice;return t!==void 0&&t.bucket!==""&&t.host!==""}async function Yr(e,t,n){let{payload:r,conversationId:o,conversationType:a,refMessageId:s}=t;if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),false;if(o===""||a===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let c=te(n,o,a);if(c===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let g=D(e,o,a);if(g!=="")return n.setNote(n.t(g)),false;if(r.data.length===0)return n.setNote(n.t("send.voiceEmpty")),false;if(!qn(e))return n.setNote(n.t("send.voiceStorageNotConfigured")),false;let f=e.getGeneration(),v=re(n,c);try{let u=new File([r.data],r.filename,{type:r.mimeType}),y=await c.messages.sendVoice(u,{durationMs:r.durationMs,waveform:r.waveform,...s===void 0?{}:{replyToMessageId:s}});return n.refreshActiveMessages(),y.ok?e.getGeneration()!==f?!1:(e.putSelfVoiceBytes(y.message.id,r.data),!0):(e.getGeneration()===f&&n.setNote(y.error.code==="IM_SDK_MEDIA_CANCELLED"?n.t("send.voiceCancelled"):n.t("send.voiceFailed",{reason:y.error.code})),!1)}catch(u){return e.getGeneration()===f&&n.setNote(n.t("send.voiceFailed",{reason:u instanceof Error?u.message:String(u)})),false}finally{v();}}async function Jr(e,t,n){let r=t.files.slice(0,9);t.files.length>9&&(n.setMediaBatchLimit({selectedCount:t.files.length,maxCount:9}),n.showWarning?.(n.t("send.mediaCountLimit",{maxCount:9,ignoredCount:t.files.length-9})));let o=e.getGeneration(),a=[];for(let i of r){let c=await Te(i);if(e.getGeneration()!==o)break;let g=c!=="not-gif"?"sticker":i.type.startsWith("image/")?"image":i.type.startsWith("video/")?"video":"file";a.push(nn(e,{kind:g,file:i,conversationId:t.conversationId,conversationType:t.conversationType,...t.refMessageId===void 0?{}:{refMessageId:t.refMessageId}},n));}let s=await Promise.all(a.map(i=>i.catch(()=>false)));return Object.freeze({selectedCount:t.files.length,processedCount:a.length,acceptedCount:s.filter(Boolean).length,rejectedByLimit:t.files.length>9})}async function qr(e,t,n){let r=0,o=await Qe(t.files,async a=>{let s=await nn(e,{kind:"file",file:a,conversationId:t.conversationId,conversationType:t.conversationType,...t.refMessageId===void 0?{}:{refMessageId:t.refMessageId}},n);return s&&(r+=1),s},{startAll:true,onRejectedByLimit:a=>{n.setMediaBatchLimit({selectedCount:a.selectedCount,maxCount:a.maxCount}),n.showWarning?.(n.t("send.mediaCountLimit",{maxCount:a.maxCount,ignoredCount:a.selectedCount-a.maxCount}));}});return Object.freeze({selectedCount:t.files.length,processedCount:o.processedCount,acceptedCount:r,rejectedByLimit:o.rejectedByLimit})}async function Qr(e,t,n){let r=e.getClient(),o=n.getConversationHandle();if(r===null||o===void 0)return n.setNote(n.t("send.cancelFailed")),false;let a=e.getGeneration();try{let s=r.media.getSnapshot().filter(i=>i.direction==="upload"&&i.messageId===t&&i.ref.conversationType===o.ref.conversationType&&i.ref.conversationId===o.ref.conversationId);return s.length!==1?(n.setNote(n.t("send.cancelFailed")),!1):(await r.media.cancel(s[0].id),e.getGeneration()!==a||n.getConversationHandle()!==o?!1:(n.refreshActiveMessages(),!0))}catch{return e.getGeneration()===a&&n.getConversationHandle()===o&&n.setNote(n.t("send.cancelFailed")),false}}async function Zr(e,t,n){let r=e.getClient();if(r===null)return false;let o=n.getConversationHandle();if(o===void 0)return n.setNote(n.t("send.retryFailed")),false;let a=e.getGeneration(),s=r.media.getSnapshot().find(c=>c.direction==="upload"&&(c.state==="failed"||c.state==="canceled")&&c.messageId===t&&c.ref.conversationType===o.ref.conversationType&&c.ref.conversationId===o.ref.conversationId);if(s!==void 0)try{return await r.media.retry(s.id),e.getGeneration()!==a?!1:(n.refreshActiveMessages(),!0)}catch{return e.getGeneration()===a&&n.setNote(n.t("send.retryFailed")),false}let i=r.outbox.getSnapshot().find(c=>c.messageId===t);if(i===void 0||i.ref.conversationType!==o.ref.conversationType||i.ref.conversationId!==o.ref.conversationId)return n.setNote(n.t("send.retryFailed")),false;try{return await r.outbox.retry(t),e.getGeneration()!==a?!1:(n.refreshActiveMessages(),!0)}catch{return e.getGeneration()===a&&n.setNote(n.t("send.retryFailed")),false}}var ot={};a(ot,{executeForwardMessages:()=>tt,forwardMessages:()=>rt});function Qn(e,t){let n=e.getConversationHandle();if(n!==void 0)return t.every(r=>r.conversationType!=="supergroup"&&r.conversationType===n.ref.conversationType&&r.conversationId===n.ref.conversationId)?n:void 0}function Zn(e){let t=e?.code;return typeof t=="string"&&t!==""?t:"unknown"}function et(e,t){let n=e;return typeof n?.code=="string"&&typeof n.category=="string"&&typeof n.operation=="string"&&typeof n.retryable=="boolean"?n:Object.freeze({code:"IM_CHAT_KIT_FORWARD_FAILED",category:"state",operation:"message-operations.forward",retryable:false,conversation:Object.freeze({...t.ref}),cause:e})}function nt(e,t){return t.every(n=>n.conversationType!=="supergroup"&&n.conversationType===e.ref.conversationType&&n.conversationId===e.ref.conversationId)}async function tt(e,t){let n="forward";if(e.getProductClient()===null||e.getConnectionState()!=="authenticated"||t.handle===void 0||!nt(t.handle,t.messages))return Object.freeze({ok:false,operation:n,reason:"not-ready"});if(t.messages.length===0||t.targets.length===0)return Object.freeze({ok:false,operation:n,reason:"empty-input"});for(let f of t.targets){let v=D(e,f.conversationId,f.conversationType,{mode:"target"});if(v!=="")return Object.freeze({ok:false,operation:n,reason:"target-blocked",blockReason:v})}let o=t.messages.filter(ba),a=t.messages.length-o.length;if(o.length===0)return Object.freeze({ok:false,operation:n,reason:"all-skipped",skippedCount:a});let s=e.getGeneration(),i;try{i=await t.handle.messages.forward(o.map(f=>f.id),t.targets);}catch(f){return e.getGeneration()!==s?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:et(f,t.handle)})}if(e.getGeneration()!==s)return Object.freeze({ok:false,operation:n,reason:"stale"});let c=i.sent.length,g=a+i.skippedSourceMessageIds.length;return Object.freeze(c===0?{ok:false,operation:n,reason:i.failed.length>0?"sdk-rejected":"all-skipped",...i.failed[0]===void 0?{}:{error:i.failed[0].error},result:i,skippedCount:g}:{ok:true,operation:n,result:i,sentCount:c,skippedCount:g})}async function rt(e,t,n){if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),null;if(t.messages.length===0||t.targets.length===0)return n.setNote(n.t("forward.emptyInput")),null;let o=Qn(n,t.messages);if(o===void 0)return n.setNote(n.t("common.conversationNotReady")),null;for(let v of t.targets){let u=D(e,v.conversationId,v.conversationType,{mode:"target"});if(u!=="")return n.setNote(n.t(u)),null}let a=t.messages.filter(ba),s=t.messages.length-a.length;if(a.length===0)return n.setNote(n.t("forward.allSkipped")),null;let i=e.getGeneration(),c;try{c=await o.messages.forward(a.map(v=>v.id),t.targets);}catch(v){return e.getGeneration()===i&&n.getConversationHandle()===o&&n.setNote(n.t("forward.failed",{reason:Zn(v)})),null}if(e.getGeneration()!==i||n.getConversationHandle()!==o)return c;let g=c.sent.length,f=s+c.skippedSourceMessageIds.length;if(g===0){let v=c.failed[0];v!==void 0?n.setNote(n.t("forward.failed",{reason:v.error.code})):f>0?n.setNote(n.t("forward.allSkipped")):n.setNote(n.t("forward.failed",{reason:"unknown"}));}else f>0?n.setNote(n.t("forward.partialSkipped",{skipped:f,ok:g})):n.setNote(n.t("forward.done"));return n.refreshActiveMessages?.(),c}var vt={};a(vt,{deleteChannelMessageForEveryone:()=>gt,editMessage:()=>pt,executeDeleteChannelMessageForEveryone:()=>ft,executeDeleteLocalMessage:()=>lt,executeRecallMessage:()=>dt,executeRetryMessage:()=>ut,recallMessage:()=>mt});var at={IM_SDK_MESSAGE_NOT_FOUND:"recall.not-found",IM_SDK_MESSAGE_STATE_MISMATCH:"recall.not-found",IM_SDK_RECALL_NOT_OWN:"recall.not-own",IM_SDK_RECALL_NOT_SENT:"recall.not-sent",IM_SDK_RECALL_EXPIRED:"recall.expired",IM_SDK_RECALL_UNSUPPORTED:"recall.unsupported",IM_SDK_RECALL_TIMEOUT:"recall.timeout",IM_SDK_RECALL_FAILED:"recall.failed",IM_SDK_RECALL_DISCONNECTED:"recall.disconnected"},it={IM_SDK_MESSAGE_NOT_FOUND:"edit.not-found",IM_SDK_MESSAGE_STATE_MISMATCH:"edit.not-found",IM_SDK_EDIT_NOT_OWN:"edit.not-own",IM_SDK_EDIT_NOT_SENT:"edit.not-sent",IM_SDK_EDIT_RECALLED:"edit.recalled",IM_SDK_EDIT_DELETED:"edit.deleted",IM_SDK_EDIT_EXPIRED:"edit.expired",IM_SDK_EDIT_UNSUPPORTED:"edit.unsupported",IM_SDK_DIRECT_MENTION_UNSUPPORTED:"edit.unsupported",IM_SDK_EDIT_EMPTY:"edit.empty",IM_SDK_EDIT_RESTRICTED:"edit.restricted",IM_SDK_EDIT_CONTENT_UNSUPPORTED:"edit.unsupported-content",IM_SDK_EDIT_KEY_UNAVAILABLE:"edit.no-key",IM_SDK_EDIT_ENCRYPT_FAILED:"edit.encrypt-failed",IM_SDK_EDIT_TIMEOUT:"edit.timeout",IM_SDK_EDIT_FAILED:"edit.failed",IM_SDK_EDIT_DISCONNECTED:"edit.disconnected"},st={IM_SDK_MESSAGE_NOT_FOUND:"channelDelete.notFound",IM_SDK_CHANNEL_DELETE_UNSUPPORTED:"channelDelete.unsupported",IM_SDK_CHANNEL_DELETE_NOT_SENT:"channelDelete.notSent",IM_SDK_CHANNEL_DELETE_UNAVAILABLE:"channelDelete.unavailable",IM_SDK_CHANNEL_DELETE_FORBIDDEN:"channelDelete.forbidden",IM_SDK_CHANNEL_DELETE_TIMEOUT:"channelDelete.timeout",IM_SDK_CHANNEL_DELETE_FAILED:"channelDelete.failed",IM_SDK_CHANNEL_DELETE_DISCONNECTED:"channelDelete.disconnected"};function ke(e,t){let n=e.getConversationHandle();if(!(n===void 0||t.conversationType==="supergroup"))return n.ref.conversationType===t.conversationType&&n.ref.conversationId===t.conversationId?n:void 0}function we(e){return typeof e?.code=="string"?e.code:void 0}function ct(e){return typeof e=="object"&&e!==null&&typeof e.code=="string"&&typeof e.category=="string"&&typeof e.operation=="string"&&typeof e.retryable=="boolean"}function oe(e,t,n){return ct(e)?e:Object.freeze({code:"IM_CHAT_KIT_MESSAGE_OPERATION_FAILED",category:"state",operation:`message-operations.${t}`,retryable:false,...n===void 0?{}:{conversation:Object.freeze({...n.ref})},cause:e})}function Ae(e,t){return e!==void 0&&t.conversationType!=="supergroup"&&e.ref.conversationType===t.conversationType&&e.ref.conversationId===t.conversationId}async function dt(e,t){let n="recall";if(!Ae(t.handle,t.message))return Object.freeze({ok:false,operation:n,reason:"not-ready"});let r=e.getGeneration();try{await t.handle.messages.recall(t.message.id);}catch(o){return e.getGeneration()!==r?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:oe(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function lt(e,t){let n="delete-local";if(!Ae(t.handle,t.message)||t.handle.ref.conversationType!=="direct"&&t.handle.ref.conversationType!=="group"||t.message.conversationType!=="direct"&&t.message.conversationType!=="group")return Object.freeze({ok:false,operation:n,reason:"not-ready"});let r=e.getGeneration();try{await t.handle.messages.deleteLocal(t.message.id);}catch(o){return e.getGeneration()!==r?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:oe(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function ft(e,t){let n="delete-for-everyone";if(!Ae(t.handle,t.message)||t.handle.ref.conversationType!=="channel"||t.message.conversationType!=="channel")return Object.freeze({ok:false,operation:n,reason:"not-ready"});let r=e.getGeneration();try{await t.handle.messages.deleteForEveryone(t.message.id);}catch(o){return e.getGeneration()!==r?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:oe(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function ut(e,t){let n="retry",r=e.getProductClient(),o=t.handle;if(r===null||o===void 0)return Object.freeze({ok:false,operation:n,reason:"not-ready"});let a=e.getGeneration();try{let s=r.media.getSnapshot().find(i=>i.direction==="upload"&&(i.state==="failed"||i.state==="canceled")&&i.messageId===t.messageId&&i.ref.conversationType===o.ref.conversationType&&i.ref.conversationId===o.ref.conversationId);if(s!==void 0)await r.media.retry(s.id);else {let i=r.outbox.getSnapshot().find(c=>c.messageId===t.messageId);if(i===void 0||i.ref.conversationType!==o.ref.conversationType||i.ref.conversationId!==o.ref.conversationId)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});await r.outbox.retry(t.messageId);}}catch(s){return e.getGeneration()!==a?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:oe(s,n,o)})}return e.getGeneration()===a?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function mt(e,t,n){let r=ke(n,t.message);if(r===void 0){n.setNote(n.t("common.conversationNotReady"));return}let o=e.getGeneration();try{await r.messages.recall(t.message.id);}catch(a){if(e.getGeneration()!==o)return;n.setNote(n.t(at[we(a)??""]??"recall.failed"));}}async function gt(e,t,n){let r=ke(n,t.message);if(r===void 0||r.ref.conversationType!=="channel"||t.message.conversationType!=="channel"){n.setNote(n.t("common.conversationNotReady"));return}let o=e.getGeneration();try{await r.messages.deleteForEveryone(t.message.id);}catch(a){if(e.getGeneration()!==o)return;n.setNote(n.t(st[we(a)??""]??"channelDelete.failed"));}}async function pt(e,t,n){let r=ke(n,t.message);if(r===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let o=e.getGeneration(),a=Re(t.mention);try{await r.messages.editText(t.message.id,t.text,{...a===void 0?{}:{mentions:a}});}catch(s){return e.getGeneration()!==o||n.setNote(n.t(it[we(s)??""]??"edit.failed")),false}return e.getGeneration()===o}var Tt={};a(Tt,{executePinMessage:()=>Ct,executeSyncPinnedMessage:()=>Mt,executeUnpinMessage:()=>xt,getPinnedMessage:()=>It,peekPinnedMessage:()=>St,pinMessage:()=>bt,syncPinnedMessage:()=>rn,unpinMessage:()=>ht});function B(e,t){let n=e.getProductClient();return n===null||e.getConnectionState()!=="authenticated"?(t?.setNote(t.t("common.notConnected")),null):n}function yt(e){switch(e){case "permission":return "pinned.forbidden";case "network":return "pinned.network";case "contract":return "pinned.contract";case "unsupported":return "pinned.unsupported";default:return "pinned.failed"}}function tn(e){return typeof e=="object"&&e!==null&&typeof e.category=="string"}function _e(e,t,n){if(tn(e))return e;let r=typeof e?.kind=="string"?e.kind:void 0,o=r==="forbidden"?"permission":r==="network"?"network":r==="unsupported"?"unsupported":r==="contract"?"contract":"state";return Object.freeze({code:"IM_CHAT_KIT_PINNED_MESSAGE_OPERATION_FAILED",category:o,operation:`message-operations.${t}`,retryable:o==="network",conversation:Object.freeze({...n}),cause:e})}async function Ct(e,t){let r=B(e);if(r===null||t.message.conversationId!==t.conversation.conversationId||t.message.conversationType!==t.conversation.conversationType)return Object.freeze({ok:false,operation:"pin",reason:"not-ready"});let o=e.getGeneration();try{let a=t.conversation.conversationType==="group"?await r.groups.pinMessage(t.conversation,t.message.id):await r.channels.pinMessage(t.conversation,t.message.id);return e.getGeneration()===o?Object.freeze({ok:!0,operation:"pin",value:a}):Object.freeze({ok:!1,operation:"pin",reason:"stale"})}catch(a){return e.getGeneration()!==o?Object.freeze({ok:false,operation:"pin",reason:"stale"}):Object.freeze({ok:false,operation:"pin",reason:"sdk-rejected",error:_e(a,"pin",t.conversation)})}}async function xt(e,t){let n="unpin",r=B(e);if(r===null)return Object.freeze({ok:false,operation:n,reason:"not-ready"});let o=e.getGeneration();try{return t.conversationType==="group"?await r.groups.unpinMessage(t):await r.channels.unpinMessage(t),e.getGeneration()===o?Object.freeze({ok:!0,operation:n}):Object.freeze({ok:!1,operation:n,reason:"stale"})}catch(a){return e.getGeneration()!==o?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:_e(a,n,t)})}}async function Mt(e,t){let n="sync-pin",r=B(e);if(r===null)return Object.freeze({ok:false,operation:n,reason:"not-ready"});let o=e.getGeneration();try{let a=t.conversationType==="group"?await r.groups.getPinnedMessage(t):await r.channels.getPinnedMessage(t);return e.getGeneration()===o?Object.freeze({ok:!0,operation:n,value:a}):Object.freeze({ok:!1,operation:n,reason:"stale"})}catch(a){return e.getGeneration()!==o?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:_e(a,n,t)})}}function Ne(e,t,n,r){if(e.getGeneration()!==t)return;let o=tn(r)?yt(r.category):"pinned.failed";n.setNote(n.t(o));}async function bt(e,t,n){let r=B(e,n);if(r===null)return null;let o=e.getGeneration();try{let a=t.conversation.conversationType==="group"?await r.groups.pinMessage(t.conversation,t.message.id):await r.channels.pinMessage(t.conversation,t.message.id);return e.getGeneration()===o?a:null}catch(a){return Ne(e,o,n,a),null}}async function ht(e,t,n){let r=B(e,n);if(r===null)return false;let o=e.getGeneration();try{return t.conversationType==="group"?await r.groups.unpinMessage(t):await r.channels.unpinMessage(t),e.getGeneration()===o}catch(a){return Ne(e,o,n,a),false}}async function It(e,t,n){let r=await rn(e,t,n);return r.ok?r.value:null}async function rn(e,t,n){let r=B(e,n);if(r===null)return {ok:false};let o=e.getGeneration();try{let a=t.conversationType==="group"?await r.groups.getPinnedMessage(t):await r.channels.getPinnedMessage(t);return e.getGeneration()===o?{ok:!0,value:a}:{ok:!1}}catch(a){return Ne(e,o,n,a),{ok:false}}}function St(e,t){let n=e.getProductClient();return n===null?null:t.conversationType==="group"?n.groups.peekPinnedMessage(t):n.channels.peekPinnedMessage(t)}function io(e){return e.conversation.conversationType==="channel"&&e.channelProfile?.memberPrivateChatDisabled!==false?"blocked":e.relationship==="friend"?"friend-profile":"friend-contact"}var Ht={};a(Ht,{applyGroupMemberNickname:()=>Nt,applyGroupMemberRename:()=>At,applyMemberNames:()=>_t,clearGroupMemberNicknameProjection:()=>Dt,ensureSelfProfile:()=>Ot,prewarmActiveSenders:()=>jt,prewarmMemberAvatars:()=>Gt,refreshStaleSenders:()=>dn,resolveChannelMembers:()=>wt,resolveGroupMembers:()=>cn,resolveSenderName:()=>kt});var Pt=new WeakMap,Et=new WeakMap,Rt=new WeakMap;function De(e,t){let n=e.get(t);return n===void 0&&(n=new Map,e.set(t,n)),n}function an(e,t){return e===void 0?t===void 0?0:-1:t===void 0?1:e.length!==t.length?e.length>t.length?1:-1:e===t?0:e>t?1:-1}var on=new WeakMap;function T(e){return (e??"").trim()}function L(e){let t=on.get(e),n=e.getGeneration();return (t===void 0||t.generation!==n)&&(t={generation:n,groups:new Map},on.set(e,t)),t}function ae(e,t,n,r={}){let o=L(e).groups.get(t);if(o===void 0||o.size===0)return n;let a={...n};for(let[s,i]of o){let c=n[s];if((i===""?c===void 0:c===i)&&r.reconcile===true){o.delete(s);continue}i===""?delete a[s]:a[s]=i;}return o.size===0&&L(e).groups.delete(t),a}function sn(e,t,n){let r=L(e).groups.get(t);if(r!==void 0){if(n===void 0){L(e).groups.delete(t);return}r.delete(n.trim()),r.size===0&&L(e).groups.delete(t);}}function _(e,t,n,r){e.getDiagnostics().record("warn","chat-kit","profile",t,()=>({...r===void 0?{}:{data:r},error:{message:"\u8D44\u6599\u9884\u70ED\u5931\u8D25",data:n}}));}function kt(e,t,n){let r=e.getClient(),o=e.getCredentials().userId;if(t===""||t==="system"||t===o||r===null)return Promise.resolve(false);let a=n?.forceRefresh===true,s=De(Pt,e),i=a?void 0:s.get(t);if(i!==void 0)return i;let c=e.getSenderProfileCache();if(!a&&c[t]!==void 0)return Promise.resolve(true);c[t]===void 0&&e.setSenderProfileCache({...c,[t]:{remark:"",nickname:"",avatar:""}});let g=e.getGeneration(),f=r.contact.getProfile(t,a?{forceRefresh:true}:void 0).then(v=>{if(e.getGeneration()!==g)return false;let u=T(v?.remark),y=T(v?.nickname),C=T(v?.avatar);return (u!==""||y!==""||C!=="")&&e.setSenderProfileCache({...e.getSenderProfileCache(),[t]:{remark:u,nickname:y,avatar:C}}),true}).catch(v=>{if(e.getGeneration()!==g)return false;if(!a){let u={...e.getSenderProfileCache()};delete u[t],e.setSenderProfileCache(u);}return e.getDiagnostics().record("warn","chat-kit","profile","sender-profile-resolve-failed",()=>({data:{userId:t},error:{message:"\u89E3\u6790\u53D1\u9001\u8005\u8D44\u6599\u5931\u8D25",data:v}})),false}).finally(()=>{!a&&s.get(t)===f&&s.delete(t);});return a||s.set(t,f),f}function cn(e,t,n){let r=e.getClient();if(t===""||r===null)return Promise.resolve(false);let o=n?.forceRefresh===true,a=De(Et,e),s=o?void 0:a.get(t);if(s!==void 0)return s;let i=e.getGroupMemberNames();if(!o&&i[t]!==void 0)return Promise.resolve(true);let c=i[t]!==void 0;c||e.setGroupMemberNames({...i,[t]:{}});let g=e.getGeneration(),f=()=>{if(c||e.getGeneration()!==g)return;let u={...e.getGroupMemberNames()};delete u[t],e.setGroupMemberNames(u);},v=r.group.getMemberNames(t,{forceRefresh:o}).then(u=>e.getGeneration()!==g?false:u===null?(f(),false):(e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:ae(e,t,u,{reconcile:true})}),true)).catch(u=>(f(),e.getGeneration()===g&&_(e,"group-member-name-resolve-failed",u,{groupId:t}),false)).finally(()=>{!o&&a.get(t)===v&&a.delete(t);});return o||a.set(t,v),v}function wt(e,t,n,r){let o=e.getClient();if(o===null||t===""||r?.isCurrent?.()===false)return Promise.resolve(false);let a=r?.forceRefresh===true,s=e.getChannelMemberProfiles()[t]??{},i=[...new Set(n.map(y=>y.trim()).filter(y=>y!==""&&y!=="system"))].filter(y=>a||s[y]===void 0||s[y].expiresAt<=Date.now());if(i.length===0)return Promise.resolve(true);let c=De(Rt,e),g=`${t}:${[...i].sort().join(",")}`,f=a?void 0:c.get(g);if(f!==void 0)return f;let v=e.getGeneration(),u=o.channel.getMembersByIds(t,i,a?{forceRefresh:true}:void 0).then(y=>{if(e.getGeneration()!==v||r?.isCurrent?.()===false)return false;let C=Date.now()+3e5,d={...e.getChannelMemberProfiles()[t]??{}};for(let l of y){let p=d[l.userId];p!==void 0&&an(l.updateVersion,p.updateVersion)<0||(d[l.userId]={displayName:l.displayName,...l.avatar===void 0?{}:{avatar:l.avatar},role:l.role,...l.updateVersion===void 0?{}:{updateVersion:l.updateVersion},expiresAt:C});}return e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[t]:d}),true}).catch(y=>(e.getGeneration()===v&&e.getDiagnostics().record("warn","chat-kit","profile","channel-members-resolve-failed",()=>({conversation:{conversationType:"channel",conversationId:t},error:{message:"\u89E3\u6790 CHANNEL \u6210\u5458\u8D44\u6599\u5931\u8D25",data:y}})),false)).finally(()=>{!a&&c.get(g)===u&&c.delete(g);});return a||c.set(g,u),u}function At(e,t,n={}){let r=t.body.system;if(t.contentType!=="system"||r?.eventType!=="group_member_renamed")return;let o=new Set((n.preserveUserIds??[]).map(a=>a.trim()).filter(Boolean));for(let a of r.targetUserIds??[]){let s=a.trim();o.has(s)||sn(e,t.conversationId,s);}cn(e,t.conversationId,{forceRefresh:true});}function _t(e,t,n){let r={};for(let o of n)o.nickName!==""&&(r[o.userId]=o.nickName);e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:ae(e,t,r)});}function Nt(e,t,n,r){let o=t.trim(),a=n.trim();if(o===""||a==="")return;let s=r.trim(),i=L(e),c=i.groups.get(o)??new Map;c.set(a,s),i.groups.set(o,c);let g=e.getGroupMemberNames()[o];if(g===void 0)return;let f={...g};s===""?delete f[a]:f[a]=s,e.setGroupMemberNames({...e.getGroupMemberNames(),[o]:f});}function Dt(e,t,n={}){let r=t.trim();if(r===""||(sn(e,r),n.clearCachedNames!==true))return;let o=e.getGroupMemberNames();if(o[r]===void 0)return;let a={...o};delete a[r],e.setGroupMemberNames(a);}function Ot(e){let t=e.getClient(),n=e.getCredentials().userId;if(n===""||t===null||e.getSenderProfileCache()[n]!==void 0)return;let r=e.getGeneration();t.contact.getProfile(n).then(o=>{if(o===null||e.getGeneration()!==r)return;let a=T(o.remark),s=T(o.nickname),i=T(o.avatar);(a!==""||s!==""||i!=="")&&e.getSenderProfileCache()[n]===void 0&&e.setSenderProfileCache({...e.getSenderProfileCache(),[n]:{remark:a,nickname:s,avatar:i}});}).catch(o=>{e.getGeneration()===r&&_(e,"self-profile-prefetch-failed",o,{userId:n});});}async function Gt(e,t){let n=e.getClient();if(n===null)return;let r=e.getGeneration(),o=[];for(let a of t){let s=a.userId;e.getSenderProfileCache()[s]===void 0&&o.push((async()=>{let i;try{i=await n.contact.peekProfile(s);}catch(v){e.getGeneration()===r&&_(e,"member-avatar-prefetch-failed",v,{userId:s});return}if(i===null||e.getGeneration()!==r)return;let c=T(i.value.remark),g=T(i.value.nickname),f=T(i.value.avatar);(c!==""||g!==""||f!=="")&&e.getSenderProfileCache()[s]===void 0&&e.setSenderProfileCache({...e.getSenderProfileCache(),[s]:{remark:c,nickname:g,avatar:f}});})());}await Promise.allSettled(o);}async function jt(e,t,n,r){let o=e.getClient();if(o===null)return;let a=e.getCredentials().userId,s=e.getGeneration(),i=[],c=[],g=false,f=t[0]?.conversationType;f==="group"&&e.getGroupMemberNames()[n]===void 0&&i.push((async()=>{let u;try{u=await o.group.peekMemberNames(n);}catch(y){e.getGeneration()===s&&_(e,"group-member-name-prefetch-failed",y,{groupId:n});return}u===null||e.getGeneration()!==s||(e.getGroupMemberNames()[n]===void 0&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:ae(e,n,u.value)}),u.stale&&(g=true));})());let v=[...new Set(t.map(u=>u.senderId).filter(u=>u!==""&&u!=="system"&&u!==a))];f==="channel"&&v.length>0&&i.push((async()=>{let u;try{u=await o.channel.getMembersByIds(n,v);}catch(d){e.getGeneration()===s&&_(e,"channel-member-prefetch-failed",d,{conversation:{conversationType:"channel",conversationId:n}});return}if(e.getGeneration()!==s||r?.isCurrent?.()===false)return;let y=Date.now()+3e5,C={...e.getChannelMemberProfiles()[n]??{}};for(let d of u){let l=C[d.userId];l!==void 0&&an(d.updateVersion,l.updateVersion)<0||(C[d.userId]={displayName:d.displayName,...d.avatar===void 0?{}:{avatar:d.avatar},role:d.role,...d.updateVersion===void 0?{}:{updateVersion:d.updateVersion},expiresAt:y});}e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[n]:C});})());for(let u of v)e.getSenderProfileCache()[u]===void 0&&i.push((async()=>{let y;try{y=await o.contact.peekProfile(u);}catch(p){e.getGeneration()===s&&_(e,"sender-profile-prefetch-failed",p,{userId:u});return}if(y===null||e.getGeneration()!==s)return;let C=T(y.value.remark),d=T(y.value.nickname),l=T(y.value.avatar);(C!==""||d!==""||l!=="")&&e.getSenderProfileCache()[u]===void 0&&e.setSenderProfileCache({...e.getSenderProfileCache(),[u]:{remark:C,nickname:d,avatar:l}}),y.stale&&c.push(u);})());await Promise.allSettled(i),e.getGeneration()===s&&dn(e,c,g?n:void 0);}function dn(e,t,n){let r=e.getClient();if(r===null)return;let o=e.getGeneration();n!==void 0&&r.group.getMemberNames(n,{forceRefresh:true}).then(a=>{a!==null&&e.getGeneration()===o&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:ae(e,n,a,{reconcile:true})});}).catch(a=>{e.getGeneration()===o&&_(e,"group-member-name-refresh-failed",a,{groupId:n});});for(let a of t)r.contact.getProfile(a,{forceRefresh:true}).then(s=>{if(s===null||e.getGeneration()!==o)return;let i=T(s.remark),c=T(s.nickname),g=T(s.avatar),f=e.getSenderProfileCache()[a];(i!==""||c!==""||g!=="")&&(f===void 0||f.remark!==i||f.nickname!==c||f.avatar!==g)&&e.setSenderProfileCache({...e.getSenderProfileCache(),[a]:{remark:i,nickname:c,avatar:g}});}).catch(s=>{e.getGeneration()===o&&_(e,"sender-profile-refresh-failed",s,{userId:a});});}async function co(e,t){let n=O(e),r=t.keyword.trim();return G(n,()=>{switch(t.conversation.conversationType){case "direct":return n.inDirect({conversationType:"direct",conversationId:t.conversation.conversationId},r);case "group":return n.inGroup({conversationType:"group",conversationId:t.conversation.conversationId},r);case "channel":return n.inChannel({conversationType:"channel",conversationId:t.conversation.conversationId},r)}})}async function lo(e,t){let n=O(e),r=t.keyword.trim();return G(n,()=>n.texts(t.conversation,r))}function fo(e,t){let n=O(e),r=t.keyword?.trim();return G(n,()=>n.files(t.conversation,r===void 0||r===""?void 0:r))}function uo(e,t){let n=O(e);return G(n,()=>n.images(t.conversation))}function mo(e,t){let n=O(e);return G(n,()=>n.videos(t.conversation))}function go(e,t){let n=O(e);return G(n,()=>n.voices(t.conversation))}function po(e,t){let n=O(e);return G(n,()=>n.next(t))}function O(e){let t=e.getClient();if(t===null)throw new Error("IM client is not available");return t.search.messages}async function G(e,t){let n=await t();for(let r=0;r<5;r+=1){if(n.items.length>0||n.exhausted||r===4)return {results:n.items,...n.nextPageToken===void 0?{}:{nextPageToken:n.nextPageToken},exhausted:n.exhausted};if(n.nextPageToken===void 0)throw new Error("IM search page is missing nextPageToken");n=await e.next(n.nextPageToken);}throw new Error("Unreachable search pagination state")}export{tt as $,Er as A,go as Aa,Rr as B,po as Ba,Ie as C,Se as D,Ye as E,Nr as F,Dr as G,Or as H,Je as I,qe as J,N as K,zn as L,Qe as M,Pe as N,Yn as O,Kr as P,Jn as Q,Wr as R,$r as S,nn as T,Xr as U,qn as V,Yr as W,Jr as X,qr as Y,Qr as Z,Zr as _,fn as a,ot as aa,un as b,dt as ba,mn as c,lt as ca,gn as d,ft as da,ee as e,ut as ea,bn as f,vt as fa,Me as g,Ct as ga,In as h,xt as ha,ze as i,Mt as ia,Pn as j,St as ja,Rn as k,Tt as ka,kn as l,io as la,wn as m,kt as ma,Wt as n,cn as na,$t as o,wt as oa,Nn as p,At as pa,Xt as q,_t as qa,Mr as r,Nt as ra,Hn as s,Dt as sa,Bn as t,Ot as ta,hr as u,Ht as ua,Xe as v,co as va,Sr as w,lo as wa,Tr as x,fo as xa,Pr as y,uo as ya,Ln as z,mo as za};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {x as x$1,A,f,g,i,J,K,w,z as z$1,k,e,y,B as B$1,D,F as F$1,E,G as G$1,H as H$1,I,ka as ka$1,ja as ja$1,ia as ia$1,R,S,P,ha as ha$1,L as L$1,M,fa as fa$1,ea as ea$1,N,O as O$1}from'./chunk-VSMNRAAM.js';import*as V from'node-forge';import {deleteDB,openDB}from'idb';function Hr(e,n=async t=>{let{createBrowserApiProtocolClient:r}=await import('./browser-BKCNJDKR.js');return r(t)}){let t=null;function r(){if(t!==null)return t;let o=n(e);return t=o,o.catch(()=>{t===o&&(t=null);}),o}return async(o,a)=>(await r())(o,a)}function $r(){if(typeof window>"u"||typeof document>"u")return {recordingSupported:false,recordingBlockers:["no-media-devices"],playbackSupported:false};let e=[];window.isSecureContext===false&&e.push("insecure-context"),(typeof navigator>"u"||navigator.mediaDevices?.getUserMedia===void 0)&&e.push("no-media-devices"),typeof MediaRecorder>"u"&&e.push("no-media-recorder");let n=window,t=window.AudioContext!==void 0||n.webkitAudioContext!==void 0,r=window.OfflineAudioContext!==void 0||n.webkitOfflineAudioContext!==void 0;return (!t||!r)&&e.push("audio-context-blocked"),{recordingSupported:e.length===0,recordingBlockers:e,playbackSupported:typeof Audio<"u"}}var G=class extends Error{code;constructor(n,t,r){super(t??n,r),this.name="VoiceError",this.code=n;}};function Je(e){return e instanceof G?e.code:void 0}function lt(e){switch(e instanceof DOMException||e instanceof Error?e.name:""){case "NotAllowedError":case "SecurityError":case "PermissionDeniedError":return new G("permission-denied","\u9EA6\u514B\u98CE\u6743\u9650\u88AB\u62D2\u7EDD",{cause:e});case "NotFoundError":case "DevicesNotFoundError":return new G("device-not-found","\u672A\u627E\u5230\u53EF\u7528\u9EA6\u514B\u98CE",{cause:e});case "NotReadableError":case "TrackStartError":case "AbortError":return new G("device-busy","\u9EA6\u514B\u98CE\u88AB\u5360\u7528\u6216\u542F\u52A8\u5931\u8D25",{cause:e});default:return new G("device-busy",e instanceof Error?e.message:"\u9EA6\u514B\u98CE\u542F\u52A8\u5931\u8D25",{cause:e})}}var Z=16e3,Fr=new URL("./speex-runtime.txt",import.meta.url).href,fn=null;async function Jr(){if(document.querySelector('script[data-speex-runtime="true"]')!==null)return;let n=await fetch(Fr);if(!n.ok)throw new Error(`Speex runtime fetch failed: ${n.status}`);let t=await n.text(),r=document.createElement("script");r.dataset.speexRuntime="true",r.text=t,document.head.appendChild(r);}async function mn(){let e=typeof window>"u"?void 0:window;return e?.__speexInH5!==void 0?e.__speexInH5:(fn??=(async()=>{if(e===void 0||typeof document>"u")throw new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u4EC5\u53EF\u5728\u6D4F\u89C8\u5668\u73AF\u5883\u52A0\u8F7D");if(await Jr(),e.__speexInH5===void 0&&e.initAudio?.(),e.__speexInH5===void 0)throw new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u521D\u59CB\u5316\u5931\u8D25");return e.__speexInH5})().catch(n=>{throw fn=null,n instanceof G?n:new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u52A0\u8F7D\u5931\u8D25",{cause:n})}),fn)}function pt(){mn().catch(()=>{});}function ce(e,n,t){for(let r=0;r<t.length;r+=1)e.setUint8(n+r,t.charCodeAt(r));}function Vr(e,n){let r=new ArrayBuffer(44+e.length*2),o=new DataView(r);ce(o,0,"RIFF"),o.setUint32(4,36+e.length*2,true),ce(o,8,"WAVE"),ce(o,12,"fmt "),o.setUint32(16,16,true),o.setUint16(20,1,true),o.setUint16(22,1,true),o.setUint32(24,n,true),o.setUint32(28,n*2,true),o.setUint16(32,2,true),o.setUint16(34,16,true),ce(o,36,"data"),o.setUint32(40,e.length*2,true);let a=44;for(let s=0;s<e.length;s+=1){let d=Math.max(-1,Math.min(1,e[s]??0));o.setInt16(a,d<0?d*32768:d*32767,true),a+=2;}return r}function gn(e){if(e instanceof Int16Array)return e;let n=new Int16Array(e.length);for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,e[t]??0));n[t]=r<0?r*32768:r*32767;}return n}var jr=40,hn=120,qr=40,yn=80;function zr(e,n){let t=Math.min(Math.floor(n*jr/1e3),Math.floor(e.length/2));for(let r=0;r<t;r+=1){let o=r/t;e[r]=Math.round((e[r]??0)*o);let a=e.length-1-r;e[a]=Math.round((e[a]??0)*o);}return e}function Cn(e,n){if(e.length===0)return e;let t=Math.min(Math.floor(n*hn/1e3),Math.max(0,e.length-1)),r=t>0?e.subarray(t):e,o=new Float32Array(r),a=Math.min(Math.floor(n*qr/1e3),Math.floor(o.length/2));for(let s=0;s<a;s+=1){let d=s/a;o[s]=(o[s]??0)*d;let i=o.length-1-s;o[i]=(o[i]??0)*d;}return o}function Ve(e,n){let r=new ArrayBuffer(44+e.length*2),o=new DataView(r);return ce(o,0,"RIFF"),o.setUint32(4,36+e.length*2,true),ce(o,8,"WAVE"),ce(o,12,"fmt "),o.setUint32(16,16,true),o.setUint16(20,1,true),o.setUint16(22,1,true),o.setUint32(24,n,true),o.setUint32(28,n*2,true),o.setUint16(32,2,true),o.setUint16(34,16,true),ce(o,36,"data"),o.setUint32(40,e.length*2,true),new Int16Array(r,44).set(e),new Uint8Array(r)}function Wr(e){let n=new Uint8Array(e.length);for(let t=0;t<e.length;t+=1)n[t]=e.charCodeAt(t)&255;return n}function Yr(e){let t="";for(let r=0;r<e.length;r+=32768)t+=String.fromCharCode(...e.subarray(r,Math.min(r+32768,e.length)));return t}async function ft(e,n){let t=await mn(),r=Math.floor(n*yn/1e3),o=new Float32Array(r+e.length);o.set(e,r);let a=Vr(o,n);try{return Wr(t.encodeFile(a))}catch(s){throw new G("encode-failed","\u8BED\u97F3\u7F16\u7801\u5931\u8D25",{cause:s})}}async function mt(e){let n=await mn();try{let[t,r]=n.decodeFile(Yr(e));if(t.length===0)throw new Error("decoded empty pcm");let o=zr(gn(t),r.rate>0?r.rate:Z),a=r.rate>0?r.rate:Z;return {samples:o,sampleRate:a,durationMs:Math.round(o.length/a*1e3)}}catch(t){throw t instanceof G?t:new G("decode-failed","\u8BED\u97F3\u89E3\u7801\u5931\u8D25",{cause:t})}}async function gt(e){let n=await mt(e);return {wavData:Ve(n.samples,n.sampleRate),durationMs:n.durationMs}}function Qr(e={}){let n=e.cacheMax??8,t={activeId:"",isPlaying:false,loadingId:"",progress:0,currentTimeMs:0,errorIds:new Set},r=new Set;function o(){for(let l of r)l(t);}let a=null,s=new Map,d=0,i=false,f=false;function g(l){let _=s.get(l);return _!==void 0&&(s.delete(l),s.set(l,_)),_}function b(l,_){if(i)return URL.revokeObjectURL(_.url),_;let C=s.get(l);if(C!==void 0)return URL.revokeObjectURL(_.url),s.delete(l),s.set(l,C),C;for(s.set(l,_);s.size>n;){let I;for(let M of s.keys())if(M!==t.activeId){I=M;break}if(I===void 0)break;let S=s.get(I);s.delete(I),S!==void 0&&URL.revokeObjectURL(S.url);}return _}function h(l){l.paused||l.pause(),l.removeAttribute("src");try{l.load();}catch{}}function p(l,_){return !i&&l===d&&t.activeId===_}function A(){if(a!==null)return a;let l=new Audio;return l.preload="auto",l.addEventListener("timeupdate",()=>{t.activeId!==""&&(t.currentTimeMs=l.currentTime*1e3,t.progress=l.duration>0?Math.min(1,l.currentTime/l.duration):0,o());}),l.addEventListener("ended",()=>{v(),h(l),o();}),l.addEventListener("pause",()=>{t.activeId!==""&&(t.isPlaying=false,o());}),a=l,l}function v(){t.activeId="",t.isPlaying=false,t.progress=0,t.currentTimeMs=0;}function E(){d+=1,f=false,t.loadingId="",v(),a!==null&&h(a),o();}function c(l){t.errorIds=new Set([...t.errorIds,l]);}function u(l){if(!t.errorIds.has(l))return;let _=new Set(t.errorIds);_.delete(l),t.errorIds=_;}async function y(l,_){let C=g(l);if(C!==void 0)return {entry:C};let I;try{I=await _();}catch(S){return {entry:null,error:{code:Je(S),cause:S}}}if(I===null)return {entry:null};try{let{wavData:S,durationMs:M}=await gt(I),R={url:URL.createObjectURL(new Blob([S],{type:"audio/wav"})),durationMs:M};return {entry:b(l,R)}}catch(S){return {entry:null,error:{code:Je(S),cause:S}}}}async function m(l,_){if(i)return;let C=A();if(u(l),t.activeId===l){if(t.isPlaying){C.pause();return}let M=++d;try{await C.play();}catch{if(!p(M,l))return;c(l),o();return}if(!p(M,l))return;t.isPlaying=true,o(),_.onPlayStart?.();return}if(t.loadingId===l)return;E();let I=++d;t.loadingId=l,o();let S=await y(l,_.load);if(I===d){if(t.loadingId="",S.entry===null){c(l),o(),S.error!==void 0&&_.onDecodeError?.(S.error.code,S.error.cause);return}C.src=S.entry.url,t.activeId=l,t.progress=0,t.currentTimeMs=0,o();try{await C.play();}catch(M){if(!p(I,l))return;v(),h(C),c(l),o(),_.onDecodeError?.(void 0,M);return}p(I,l)&&(t.isPlaying=true,o(),_.onPlayStart?.());}}function P(l,_){a===null||t.activeId!==l||!Number.isFinite(a.duration)||a.duration<=0||(a.currentTime=Math.min(Math.max(_,0),.999)*a.duration);}function k(l){a===null||t.activeId!==l||t.isPlaying&&(f=true,a.pause());}function D(l){if(a===null||t.activeId!==l||!f)return;f=false;let _=++d;a.play().then(()=>{p(_,l)&&(t.isPlaying=true,o());}).catch(()=>{p(_,l)&&(c(l),o());});}function w(){if(!i){i=true,E();for(let l of s.values())URL.revokeObjectURL(l.url);s.clear(),r.clear(),a=null;}}return {getState:()=>t,subscribe:l=>(r.add(l),()=>r.delete(l)),toggle:m,seek:P,beginScrub:k,endScrub:D,stop:E,dispose:w}}function Xr(e){if(e.length===0)return 0;let n=0;for(let t=0;t<e.length;t+=1){let r=((e[t]??128)-128)/128;n+=r*r;}return Math.min(1,Math.sqrt(n/e.length)*Math.SQRT2)}function Zr(e,n,t){if(e.length===0||n<=0||t<=0)return 0;let r=n/t,o=0,a=0;for(let s=0;s<e.length;s+=1){let d=s*r,i=.2;d<200?i=.15:d<300?i=.4:d<=3400?i=1:d<=6e3&&(i=.45),o+=(e[s]??0)/255*i,a+=i;}return a>0?o/a:0}function ht(e){let n=Xr(e.timeDomain),t=Zr(e.frequency,e.sampleRate,e.fftSize),r=n*.55+t*.45;return Math.min(1,r*e.boost)**.72}var je=class{constructor(n=.45,t=.18){this.attack=n;this.release=t;}attack;release;value=0;next(n){let t=Math.min(1,Math.max(0,n));return t>this.value?this.value+=(t-this.value)*this.attack:this.value+=(t-this.value)*this.release,this.value}};function eo(){return {channelCount:1,echoCancellation:true,noiseSuppression:true,autoGainControl:true}}var no=50,to=.12,ro=2.6,oo=.06,io=256;function ao(){return typeof MediaRecorder>"u"?"":["audio/webm","audio/webm;codecs=opus","audio/mp4","audio/aac","audio/ogg;codecs=opus"].find(n=>MediaRecorder.isTypeSupported(n))??""}async function so(e,n,t){let r=window.AudioContext??window.webkitAudioContext,o=window.OfflineAudioContext??window.webkitOfflineAudioContext;if(o===void 0||t==null&&r===void 0)throw new G("audio-context-blocked","AudioContext \u4E0D\u53EF\u7528");let a=t??new r,s=t==null;try{a.state==="suspended"&&await a.resume().catch(()=>{});let d=await a.decodeAudioData(await e.arrayBuffer()),i=Math.max(1,Math.ceil(d.duration*n)),f=new o(1,i,n),g=f.createBufferSource();return g.buffer=d,g.connect(f.destination),g.start(0),(await f.startRendering()).getChannelData(0).slice()}catch(d){throw d instanceof G?d:new G("decode-failed","\u5F55\u97F3\u6BB5\u89E3\u7801\u5931\u8D25",{cause:d})}finally{s&&await a.close().catch(()=>{});}}function yt(e){let n=0;for(let o of e)n+=o.length;let t=new Float32Array(n),r=0;for(let o of e)t.set(o,r),r+=o.length;return t}async function co(e={}){if(typeof MediaRecorder>"u")throw new G("no-media-recorder","\u5F53\u524D\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u5F55\u97F3");let n;if(e.stream!==void 0)n=e.stream;else {if(typeof navigator>"u"||navigator.mediaDevices?.getUserMedia===void 0)throw new G("no-media-devices","\u5F53\u524D\u73AF\u5883\u4E0D\u652F\u6301\u9EA6\u514B\u98CE\u91C7\u96C6");try{n=await navigator.mediaDevices.getUserMedia({audio:eo()});}catch(C){throw lt(C)}}pt();let t=ao(),r=e.maxDurationMs??6e4,o="recording",a=[],s=0,d=[],i=null,f=null,g=null,b=[],h=0,p=false;function A(){try{let C;try{C=t!==""?new MediaRecorder(n,{mimeType:t}):new MediaRecorder(n);}catch{C=new MediaRecorder(n);}return b=[],C.ondataavailable=I=>{I.data.size>0&&b.push(I.data);},C.start(250),h=Date.now(),C}catch(C){throw C instanceof G?C:new G("device-busy","\u5F55\u97F3\u5668\u542F\u52A8\u5931\u8D25",{cause:C})}}let v=e.amplitude?.intervalMs??no,E=e.amplitude?.boost??ro,c=e.amplitude?.smoothing??to,u=e.amplitude?.minVolume??oo;function y(){let C=Math.floor(r/1e3*Z),I=0;for(let M of a)I+=M.length;if(I>C){let M=C,R=[];for(let T of a){if(M<=0)break;T.length<=M?(R.push(T),M-=T.length):(R.push(T.slice(0,M)),M=0);}a.length=0,a.push(...R);}s=Math.min(s,r);let S=Math.max(0,Math.ceil(r/v));d.length>S&&(d.length=S);}async function m(){if(o!=="recording"){e.onMaxDuration?.();return}e.onMaxDuration?.(),o="paused";let C=_().then(()=>y());g=C;try{await C;}catch(I){console.warn("[im-browser] pauseAtMaxDuration settle failed",I);}}let P=setInterval(()=>{!p&&o==="recording"&&w()>=r&&(p=true,m());},250),k=null,D=null;try{let C=window.AudioContext??window.webkitAudioContext;if(C!==void 0){k=new C,k.state==="suspended"&&k.resume().catch(()=>{});let I=k.createMediaStreamSource(n),S=k.createAnalyser();S.fftSize=io,S.smoothingTimeConstant=c,I.connect(S);let M=new Uint8Array(S.frequencyBinCount),R=new Uint8Array(S.fftSize),T=new je;D=setInterval(()=>{if(o!=="recording"||i===null)return;S.getByteFrequencyData(M),S.getByteTimeDomainData(R);let U=ht({timeDomain:R,frequency:M,sampleRate:k.sampleRate,fftSize:S.fftSize,boost:E}),N=T.next(U),$=N<u?0:N;d.push(Math.round($*255)),e.onAmplitude?.($);},v);}}catch(C){console.warn("[im-browser] amplitude analyser setup failed",C);}function w(){let C=o==="recording"&&i!==null?Date.now()-h:0;return s+C}function l(){P!==null&&(clearInterval(P),P=null),D!==null&&(clearInterval(D),D=null),k?.close().catch(()=>{}),k=null;for(let C of n.getTracks())C.stop();}function _(){if(f!==null)return f;let C=i;return C===null?Promise.resolve():(i=null,f=(async()=>{await new Promise(M=>{if(C.state==="inactive"){M();return}C.onstop=()=>M(),C.stop();});let I=new Blob(b,{type:C.mimeType||t||"audio/webm"});if(b=[],I.size===0)return;let S=await so(I,Z,k);S.length!==0&&(a.push(S),s+=S.length/Z*1e3);})().finally(()=>{f=null;}),f)}try{i=A();}catch(C){throw o="closed",l(),C}return {getState:()=>o,recordedMs:w,async pause(){o==="recording"&&(o="paused",await _(),(p||s>=r)&&y());},async resume(){o!=="paused"||p||(i=A(),o="recording");},async finish(){if(o==="closed")throw new G("empty-recording","\u5F55\u97F3\u4F1A\u8BDD\u5DF2\u7ED3\u675F");o="closed";try{g!==null?await g:await _(),y();}finally{l();}let C=yt(a);if(C.length===0)throw new G("empty-recording","\u5F55\u97F3\u5185\u5BB9\u4E3A\u7A7A");let I=Cn(C,Z);if(I.length===0)throw new G("empty-recording","\u5F55\u97F3\u5185\u5BB9\u4E3A\u7A7A");let S=Math.min(d.length,Math.ceil(hn/v));return {data:await ft(I,Z),durationMs:Math.round(I.length/Z*1e3)+yn,waveform:d.slice(S),filename:`AUDIO_${Date.now()}.ogg`,mimeType:"audio/ogg"}},cancel(){if(o==="closed")return;o="closed";let C=i;if(i=null,C!==null&&(C.ondataavailable=null,C.onstop=null,C.state!=="inactive"))try{C.stop();}catch{}a.length=0,l();},async previewWav(){g!==null?await g:f!==null&&await f,y();let C=yt(a),I=Cn(C,Z);if(I.length===0)throw new G("empty-recording","\u6682\u65E0\u53EF\u8BD5\u542C\u7684\u5F55\u97F3\u5185\u5BB9");return {wavData:Ve(gn(I),Z),durationMs:Math.round(I.length/Z*1e3)}}}}var ee=class extends Error{constructor(n,t){super(n,t),this.name="ChannelKeyError";}};function Ct(e){let n=e.trim(),t=n.replace(/-/g,"+").replace(/_/g,"/");if(t===""||!/^[A-Z0-9+/]*={0,2}$/i.test(t)||t.length%4===1)throw new ee("channel secret_key \u4E0D\u662F\u5408\u6CD5 Base64");let r=t.replace(/=+$/,""),o=r+"=".repeat((4-r.length%4)%4),a;try{a=atob(o);}catch(f){throw new ee("channel secret_key Base64 \u89E3\u7801\u5931\u8D25",{cause:f})}let s=Uint8Array.from(a,f=>f.charCodeAt(0)&255);if(s.length===0)throw new ee("channel secret_key Base64 \u89E3\u7801\u7ED3\u679C\u4E3A\u7A7A");let d=new Uint8Array(16);d.set(s.subarray(0,d.length));let i=n.length===16&&/^[\x20-\x7E]+$/.test(n)?Uint8Array.from(n,f=>f.charCodeAt(0)):void 0;return {canonical:d,...i===void 0?{}:{legacyAscii:i},metadata:{channelKeyCharLength:n.length,decodedByteLength:s.length,padByteCount:Math.max(0,16-s.length),legacyAsciiCandidate:i!==void 0}}}function uo(e){let n=new Map,t=new Map,r=new Map,o=new Map;function a(u){return {canonical:u.canonical.slice(),...u.legacyAscii===void 0?{}:{legacyAscii:u.legacyAscii.slice()},metadata:{...u.metadata}}}function s(u){return [{strategy:"canonical-base64-pad",key:u.canonical.slice()},...u.legacyAscii===void 0?[]:[{strategy:"legacy-ascii16",key:u.legacyAscii.slice()}]]}function d(u){n.delete(u),t.delete(u),r.delete(u),o.set(u,(o.get(u)??0)+1);}function i(u){let y=o.get(u)??0,m=(async()=>{try{let P=await e.loadSecretKey(u);if(P===null||P.trim()==="")throw new ee(`channel secret_key \u7F3A\u5931\uFF08channelId=${u}\uFF09`);let k=Ct(P);return (o.get(u)??0)===y&&n.set(u,a(k)),k}catch(P){let k=P instanceof ee?P:new ee(`channel secret_key \u52A0\u8F7D\u5931\u8D25\uFF08channelId=${u}\uFF09`,{cause:P});throw e.onError?.(k.message,P),k}})().finally(()=>{t.get(u)===m&&t.delete(u);});return t.set(u,m),m}function f(u,y){let m=u.trim();if(m===""){let k=new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");return e.onError?.(k.message),Promise.reject(k)}y?.force===true&&d(m);let P=n.get(m);return P!==void 0?Promise.resolve(a(P)):t.get(m)??i(m)}function g(u,y){let m=u.trim();if(m===""){let w=new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");return e.onError?.(w.message),Promise.reject(w)}y?.force===true&&d(m);let P=n.get(m);if(P!==void 0)return Promise.resolve(P.canonical.slice());let k=r.get(m);if(k!==void 0)return k;let D=(t.get(m)??i(m)).then(w=>w.canonical.slice()).finally(()=>{r.get(m)===D&&r.delete(m);});return r.set(m,D),D}function b(u){return n.get(u.trim())?.canonical.slice()??null}async function h(u,y){let m=await f(u,y);return s(m)}function p(u){let y=n.get(u.trim());return y===void 0?[]:s(y)}function A(u){let y=n.get(u.trim());return y===void 0?null:{...y.metadata}}function v(u,y){let m=u.trim();if(m==="")throw new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");let P=Ct(y);d(m),n.set(m,a(P));}function E(u){let y=u.trim();y!==""&&d(y);}function c(){let u=new Set([...n.keys(),...t.keys(),...r.keys(),...o.keys()]);for(let y of u)o.set(y,(o.get(y)??0)+1);n.clear(),t.clear(),r.clear();}return {getChannelKey:g,getCachedChannelKey:b,getChannelKeyCandidates:h,getCachedChannelKeyCandidates:p,getCachedChannelKeyMetadata:A,primeChannelKey:v,clearChannelKey:E,clearAll:c}}var lo="core";var xe=class extends Error{code=502;constructor(n,t){super(`core JSON \u4F20\u8F93\u5931\u8D25\uFF1A${n||"unknown transport error"}`,t===void 0?void 0:{cause:t}),this.name="CoreJsonTransportError";}},q=class extends Error{businessCode;operation;constructor(n,t,r){super(`${n}\u5931\u8D25\uFF1Acode=${t}${r?` ${r}`:""}`),this.name="CoreJsonBusinessError",this.businessCode=t,this.operation=n;}};async function x(e,n,t,r){let o=r!==void 0&&"responseMode"in r&&r.responseMode==="strict",a;try{a=await e(n,{target:lo,data:t,...r?.method===void 0?{}:{method:r.method},...r?.headers===void 0?{}:{headers:r.headers},...r?.prefix===void 0?{}:{prefix:r.prefix}});}catch(s){throw o?new xe(s instanceof Error?s.message:String(s),s):s}if(o){let s=typeof a.msg=="string"?a.msg:"";if(a.code===502)throw new xe(s);return a.code!==200?{ok:false,code:a.code,message:s,data:a.data}:{ok:true,code:200,message:s,data:a.data}}return {code:a.code,data:a.code===200&&a.data!=null?a.data:null}}function bt(e,n){let t=n.clientType===void 0?{public_key:n.publicKey}:{public_key:n.publicKey,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return x(e,"/user/encrypt_info/info",t,r)}function po(e){let n=e.trim().replace(/-/g,"+").replace(/_/g,"/"),t=n+"=".repeat((4-n.length%4)%4),r=atob(t),o=new Uint8Array(r.length);for(let a=0;a<r.length;a++)o[a]=r.charCodeAt(a)&255;return o}function fo(e){let n=e.clientType,t=new Map,r=new Map,o=null,a=null;function s(b,h){e.onError?.(b,h);}function d(){if(o!==null)return Promise.resolve(o);if(a!==null)return a;let b=Promise.resolve().then(()=>e.crypto.generateTempKeyPair()).then(h=>(o=h,h)).finally(()=>{a===b&&(a=null);});return a=b,b}async function i(b){let h;try{h=await d();}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u751F\u6210\u4E34\u65F6 RSA \u5BC6\u94A5\u5931\u8D25\uFF08userId=${b}\uFF09`,E),null}let p;try{p=await bt(e.client,{publicKey:h.publicKeyBase64,clientType:n});}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u8BF7\u6C42\u5F02\u5E38\uFF08userId=${b}\uFF09`,E),null}if(p.data===null)return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u4E1A\u52A1\u5931\u8D25\uFF08userId=${b}\uFF0Ccode=${p.code}\uFF09`),null;let A=p.data.prv_key??p.data.prvKey??"",v=String(p.data.version??"").trim();if(A==="")return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u54CD\u5E94\u7F3A\u5C11 prv_key\uFF08userId=${b}\uFF09`),null;try{let E=e.crypto.rsaDecryptPkcs1({data:po(A),privateKey:h.privateKey}),c=new TextDecoder().decode(E).trim();if(c==="")return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u89E3\u51FA\u7684\u79C1\u94A5\u4E3A\u7A7A\uFF08userId=${b}\uFF09`),null;let u={privateKey:c,version:v};return t.set(b,u),u}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u4E34\u65F6\u79C1\u94A5\u89E3 prv_key \u5931\u8D25\uFF08userId=${b}\uFF09`,E),null}}function f(b,h){let p=b.trim();if(p==="")return Promise.resolve(null);h?.force===true&&t.delete(p);let A=t.get(p);if(A!==void 0)return Promise.resolve(A);let v=r.get(p);if(v!==void 0)return v;let E=i(p).finally(()=>{r.get(p)===E&&r.delete(p);});return r.set(p,E),E}function g(b){return t.get(b.trim())??null}return {getUserPrivateKey:f,getCachedPrivateKey:g}}function Pt(e,n){let t=n.clientType===void 0?{group_id:n.groupId,public_key:n.publicKey}:{group_id:n.groupId,public_key:n.publicKey,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return x(e,"/user_group/encrypt_info",t,r)}function mo(e){let n=e.trim().replace(/-/g,"+").replace(/_/g,"/"),t=n+"=".repeat((4-n.length%4)%4),r=atob(t),o=new Uint8Array(r.length);for(let a=0;a<r.length;a++)o[a]=r.charCodeAt(a)&255;return o}function go(e){let n=e.clientType,t=new Map,r=new Map,o=new Map,a=null,s=null;function d(){if(a!==null)return Promise.resolve(a);if(s!==null)return s;let h=Promise.resolve().then(()=>e.crypto.generateTempKeyPair()).then(p=>(a=p,p)).finally(()=>{s===h&&(s=null);});return s=h,h}async function i(h){let p=o.get(h)??0,A;try{A=await d();}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u751F\u6210\u4E34\u65F6 RSA \u5BC6\u94A5\u5931\u8D25\uFF08groupId=${h}\uFF09`,m),null}let v;try{v=await Pt(e.client,{groupId:h,publicKey:A.publicKeyBase64,clientType:n});}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u8BF7\u6C42\u5F02\u5E38\uFF08groupId=${h}\uFF09`,m),null}if(v.data===null)return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u4E1A\u52A1\u5931\u8D25\uFF08groupId=${h}\uFF0Ccode=${v.code}\uFF09`),null;let E=v.data,c=String(E.prv_key??E.prvKey??E.private_key??"").trim(),u=String(E.pub_key??E.pubKey??E.public_key??"").trim(),y=String(E.version??"").trim();if(c==="")return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u54CD\u5E94\u7F3A\u5C11 prv_key\uFF08groupId=${h}\uFF09`),null;try{let m=e.crypto.rsaDecryptPkcs1({data:mo(c),privateKey:A.privateKey}),P=new TextDecoder().decode(m).trim();if(P==="")return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u89E3\u51FA\u7684\u7FA4\u79C1\u94A5\u4E3A\u7A7A\uFF08groupId=${h}\uFF09`),null;let k={privateKey:P,publicKey:u,version:y};return (o.get(h)??0)===p&&t.set(h,k),k}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u4E34\u65F6\u79C1\u94A5\u89E3 prv_key \u5931\u8D25\uFF08groupId=${h}\uFF09`,m),null}}function f(h,p){let A=h.trim();if(A==="")return Promise.resolve(null);p?.force===true&&t.delete(A);let v=t.get(A);if(v!==void 0)return Promise.resolve(v);let E=r.get(A);if(E!==void 0)return E;let c=i(A).finally(()=>{r.get(A)===c&&r.delete(A);});return r.set(A,c),c}function g(h){return t.get(h.trim())??null}function b(h){let p=h.trim();t.delete(p),r.delete(p),o.set(p,(o.get(p)??0)+1);}return {getGroupKeys:f,getCachedGroupKeys:g,clearGroupKeys:b}}async function Ee(e,n){let t=n.clientType===void 0?{other_user_openid:n.userId}:{other_user_openid:n.userId,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return (await x(e,"/user/info/other",t,r)).data}function ho(e){let n=e.clientType,t=new Map,r=new Map;async function o(s){try{let i=((await Ee(e.client,{userId:s,clientType:n}))?.public_key??"").trim();return i===""?(e.onError?.(`\u53D6\u5BF9\u7AEF\u516C\u94A5\uFF1A/user/info/other \u65E0 public_key\uFF08userId=${s}\uFF09`),null):(t.set(s,i),i)}catch(d){return e.onError?.(`\u53D6\u5BF9\u7AEF\u516C\u94A5\u8BF7\u6C42\u5F02\u5E38\uFF08userId=${s}\uFF09`,d),null}}function a(s,d){let i=s.trim();if(i==="")return Promise.resolve(null);d?.force===true&&t.delete(i);let f=t.get(i);if(f!==void 0)return Promise.resolve(f);let g=r.get(i);if(g!==void 0)return g;let b=o(i).finally(()=>{r.get(i)===b&&r.delete(i);});return r.set(i,b),b}return {getPeerPublicKey:a}}function yo(e){if(e.length<16)throw new Error(`TEA key \u957F\u5EA6\u4E0D\u8DB3\uFF1A${e.length}\uFF0C\u9700 \u2265 16 \u5B57\u8282`);let n=new DataView(e.buffer,e.byteOffset,16);return [n.getUint32(0,true),n.getUint32(4,true),n.getUint32(8,true),n.getUint32(12,true)]}function wt([e,n],[t,r,o,a]){let s=e>>>0,d=n>>>0,i=Math.imul(2654435769,16)>>>0;for(let f=0;f<16;f++)d=d-(Math.imul(s,16)+o^s+i^(s>>>5)+a)>>>0,s=s-(Math.imul(d,16)+t^d+i^(d>>>5)+r)>>>0,i=i-2654435769>>>0;return [s,d]}function It([e,n],[t,r,o,a]){let s=e>>>0,d=n>>>0,i=0;for(let f=0;f<16;f++)i=i+2654435769>>>0,s=s+(Math.imul(d,16)+t^d+i^(d>>>5)+r)>>>0,d=d+(Math.imul(s,16)+o^s+i^(s>>>5)+a)>>>0;return [s,d]}function qe(e,n,t,r){let o=yo(n),a=new Uint8Array(e.length),s=Math.floor(e.length/8),d=r===void 0?s:Math.min(s,Math.floor(r/8)),i=new DataView(e.buffer,e.byteOffset,e.byteLength),f=new DataView(a.buffer);for(let b=0;b<d;b++){let h=b*8,[p,A]=t([i.getUint32(h,true),i.getUint32(h+4,true)],o);f.setUint32(h,p,true),f.setUint32(h+4,A,true);}let g=d*8;return g<e.length&&a.set(e.subarray(g),g),a}function bn(e,n){return qe(n,e,wt)}function Pn(e,n){return qe(n,e,It)}function _t(e,n){return qe(n,e,It,32)}function At(e,n){return qe(n,e,wt,32)}var ue=16;function St(e){let n="";for(let t of e)n+=String.fromCharCode(t);return n}function vt(e){let n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t)&255;return n}function Mt(e){return e.replace(/(.{64})/g,`$1
|
|
1
|
+
import {x as x$1,A,f,g,i,J,K,w,z as z$1,k,e,y,B as B$1,D,F as F$1,E,G as G$1,H as H$1,I,ka as ka$1,ja as ja$1,ia as ia$1,R,S,P,ha as ha$1,L as L$1,M,fa as fa$1,ea as ea$1,N,O as O$1}from'./chunk-AFW5LCKV.js';import*as V from'node-forge';import {deleteDB,openDB}from'idb';function Hr(e,n=async t=>{let{createBrowserApiProtocolClient:r}=await import('./browser-BKCNJDKR.js');return r(t)}){let t=null;function r(){if(t!==null)return t;let o=n(e);return t=o,o.catch(()=>{t===o&&(t=null);}),o}return async(o,a)=>(await r())(o,a)}function $r(){if(typeof window>"u"||typeof document>"u")return {recordingSupported:false,recordingBlockers:["no-media-devices"],playbackSupported:false};let e=[];window.isSecureContext===false&&e.push("insecure-context"),(typeof navigator>"u"||navigator.mediaDevices?.getUserMedia===void 0)&&e.push("no-media-devices"),typeof MediaRecorder>"u"&&e.push("no-media-recorder");let n=window,t=window.AudioContext!==void 0||n.webkitAudioContext!==void 0,r=window.OfflineAudioContext!==void 0||n.webkitOfflineAudioContext!==void 0;return (!t||!r)&&e.push("audio-context-blocked"),{recordingSupported:e.length===0,recordingBlockers:e,playbackSupported:typeof Audio<"u"}}var G=class extends Error{code;constructor(n,t,r){super(t??n,r),this.name="VoiceError",this.code=n;}};function Je(e){return e instanceof G?e.code:void 0}function lt(e){switch(e instanceof DOMException||e instanceof Error?e.name:""){case "NotAllowedError":case "SecurityError":case "PermissionDeniedError":return new G("permission-denied","\u9EA6\u514B\u98CE\u6743\u9650\u88AB\u62D2\u7EDD",{cause:e});case "NotFoundError":case "DevicesNotFoundError":return new G("device-not-found","\u672A\u627E\u5230\u53EF\u7528\u9EA6\u514B\u98CE",{cause:e});case "NotReadableError":case "TrackStartError":case "AbortError":return new G("device-busy","\u9EA6\u514B\u98CE\u88AB\u5360\u7528\u6216\u542F\u52A8\u5931\u8D25",{cause:e});default:return new G("device-busy",e instanceof Error?e.message:"\u9EA6\u514B\u98CE\u542F\u52A8\u5931\u8D25",{cause:e})}}var Z=16e3,Fr=new URL("./speex-runtime.txt",import.meta.url).href,fn=null;async function Jr(){if(document.querySelector('script[data-speex-runtime="true"]')!==null)return;let n=await fetch(Fr);if(!n.ok)throw new Error(`Speex runtime fetch failed: ${n.status}`);let t=await n.text(),r=document.createElement("script");r.dataset.speexRuntime="true",r.text=t,document.head.appendChild(r);}async function mn(){let e=typeof window>"u"?void 0:window;return e?.__speexInH5!==void 0?e.__speexInH5:(fn??=(async()=>{if(e===void 0||typeof document>"u")throw new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u4EC5\u53EF\u5728\u6D4F\u89C8\u5668\u73AF\u5883\u52A0\u8F7D");if(await Jr(),e.__speexInH5===void 0&&e.initAudio?.(),e.__speexInH5===void 0)throw new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u521D\u59CB\u5316\u5931\u8D25");return e.__speexInH5})().catch(n=>{throw fn=null,n instanceof G?n:new G("codec-unavailable","Speex \u8FD0\u884C\u65F6\u52A0\u8F7D\u5931\u8D25",{cause:n})}),fn)}function pt(){mn().catch(()=>{});}function ce(e,n,t){for(let r=0;r<t.length;r+=1)e.setUint8(n+r,t.charCodeAt(r));}function Vr(e,n){let r=new ArrayBuffer(44+e.length*2),o=new DataView(r);ce(o,0,"RIFF"),o.setUint32(4,36+e.length*2,true),ce(o,8,"WAVE"),ce(o,12,"fmt "),o.setUint32(16,16,true),o.setUint16(20,1,true),o.setUint16(22,1,true),o.setUint32(24,n,true),o.setUint32(28,n*2,true),o.setUint16(32,2,true),o.setUint16(34,16,true),ce(o,36,"data"),o.setUint32(40,e.length*2,true);let a=44;for(let s=0;s<e.length;s+=1){let d=Math.max(-1,Math.min(1,e[s]??0));o.setInt16(a,d<0?d*32768:d*32767,true),a+=2;}return r}function gn(e){if(e instanceof Int16Array)return e;let n=new Int16Array(e.length);for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,e[t]??0));n[t]=r<0?r*32768:r*32767;}return n}var jr=40,hn=120,qr=40,yn=80;function zr(e,n){let t=Math.min(Math.floor(n*jr/1e3),Math.floor(e.length/2));for(let r=0;r<t;r+=1){let o=r/t;e[r]=Math.round((e[r]??0)*o);let a=e.length-1-r;e[a]=Math.round((e[a]??0)*o);}return e}function Cn(e,n){if(e.length===0)return e;let t=Math.min(Math.floor(n*hn/1e3),Math.max(0,e.length-1)),r=t>0?e.subarray(t):e,o=new Float32Array(r),a=Math.min(Math.floor(n*qr/1e3),Math.floor(o.length/2));for(let s=0;s<a;s+=1){let d=s/a;o[s]=(o[s]??0)*d;let i=o.length-1-s;o[i]=(o[i]??0)*d;}return o}function Ve(e,n){let r=new ArrayBuffer(44+e.length*2),o=new DataView(r);return ce(o,0,"RIFF"),o.setUint32(4,36+e.length*2,true),ce(o,8,"WAVE"),ce(o,12,"fmt "),o.setUint32(16,16,true),o.setUint16(20,1,true),o.setUint16(22,1,true),o.setUint32(24,n,true),o.setUint32(28,n*2,true),o.setUint16(32,2,true),o.setUint16(34,16,true),ce(o,36,"data"),o.setUint32(40,e.length*2,true),new Int16Array(r,44).set(e),new Uint8Array(r)}function Wr(e){let n=new Uint8Array(e.length);for(let t=0;t<e.length;t+=1)n[t]=e.charCodeAt(t)&255;return n}function Yr(e){let t="";for(let r=0;r<e.length;r+=32768)t+=String.fromCharCode(...e.subarray(r,Math.min(r+32768,e.length)));return t}async function ft(e,n){let t=await mn(),r=Math.floor(n*yn/1e3),o=new Float32Array(r+e.length);o.set(e,r);let a=Vr(o,n);try{return Wr(t.encodeFile(a))}catch(s){throw new G("encode-failed","\u8BED\u97F3\u7F16\u7801\u5931\u8D25",{cause:s})}}async function mt(e){let n=await mn();try{let[t,r]=n.decodeFile(Yr(e));if(t.length===0)throw new Error("decoded empty pcm");let o=zr(gn(t),r.rate>0?r.rate:Z),a=r.rate>0?r.rate:Z;return {samples:o,sampleRate:a,durationMs:Math.round(o.length/a*1e3)}}catch(t){throw t instanceof G?t:new G("decode-failed","\u8BED\u97F3\u89E3\u7801\u5931\u8D25",{cause:t})}}async function gt(e){let n=await mt(e);return {wavData:Ve(n.samples,n.sampleRate),durationMs:n.durationMs}}function Qr(e={}){let n=e.cacheMax??8,t={activeId:"",isPlaying:false,loadingId:"",progress:0,currentTimeMs:0,errorIds:new Set},r=new Set;function o(){for(let l of r)l(t);}let a=null,s=new Map,d=0,i=false,f=false;function g(l){let _=s.get(l);return _!==void 0&&(s.delete(l),s.set(l,_)),_}function b(l,_){if(i)return URL.revokeObjectURL(_.url),_;let C=s.get(l);if(C!==void 0)return URL.revokeObjectURL(_.url),s.delete(l),s.set(l,C),C;for(s.set(l,_);s.size>n;){let I;for(let M of s.keys())if(M!==t.activeId){I=M;break}if(I===void 0)break;let S=s.get(I);s.delete(I),S!==void 0&&URL.revokeObjectURL(S.url);}return _}function h(l){l.paused||l.pause(),l.removeAttribute("src");try{l.load();}catch{}}function p(l,_){return !i&&l===d&&t.activeId===_}function A(){if(a!==null)return a;let l=new Audio;return l.preload="auto",l.addEventListener("timeupdate",()=>{t.activeId!==""&&(t.currentTimeMs=l.currentTime*1e3,t.progress=l.duration>0?Math.min(1,l.currentTime/l.duration):0,o());}),l.addEventListener("ended",()=>{v(),h(l),o();}),l.addEventListener("pause",()=>{t.activeId!==""&&(t.isPlaying=false,o());}),a=l,l}function v(){t.activeId="",t.isPlaying=false,t.progress=0,t.currentTimeMs=0;}function E(){d+=1,f=false,t.loadingId="",v(),a!==null&&h(a),o();}function c(l){t.errorIds=new Set([...t.errorIds,l]);}function u(l){if(!t.errorIds.has(l))return;let _=new Set(t.errorIds);_.delete(l),t.errorIds=_;}async function y(l,_){let C=g(l);if(C!==void 0)return {entry:C};let I;try{I=await _();}catch(S){return {entry:null,error:{code:Je(S),cause:S}}}if(I===null)return {entry:null};try{let{wavData:S,durationMs:M}=await gt(I),R={url:URL.createObjectURL(new Blob([S],{type:"audio/wav"})),durationMs:M};return {entry:b(l,R)}}catch(S){return {entry:null,error:{code:Je(S),cause:S}}}}async function m(l,_){if(i)return;let C=A();if(u(l),t.activeId===l){if(t.isPlaying){C.pause();return}let M=++d;try{await C.play();}catch{if(!p(M,l))return;c(l),o();return}if(!p(M,l))return;t.isPlaying=true,o(),_.onPlayStart?.();return}if(t.loadingId===l)return;E();let I=++d;t.loadingId=l,o();let S=await y(l,_.load);if(I===d){if(t.loadingId="",S.entry===null){c(l),o(),S.error!==void 0&&_.onDecodeError?.(S.error.code,S.error.cause);return}C.src=S.entry.url,t.activeId=l,t.progress=0,t.currentTimeMs=0,o();try{await C.play();}catch(M){if(!p(I,l))return;v(),h(C),c(l),o(),_.onDecodeError?.(void 0,M);return}p(I,l)&&(t.isPlaying=true,o(),_.onPlayStart?.());}}function P(l,_){a===null||t.activeId!==l||!Number.isFinite(a.duration)||a.duration<=0||(a.currentTime=Math.min(Math.max(_,0),.999)*a.duration);}function k(l){a===null||t.activeId!==l||t.isPlaying&&(f=true,a.pause());}function D(l){if(a===null||t.activeId!==l||!f)return;f=false;let _=++d;a.play().then(()=>{p(_,l)&&(t.isPlaying=true,o());}).catch(()=>{p(_,l)&&(c(l),o());});}function w(){if(!i){i=true,E();for(let l of s.values())URL.revokeObjectURL(l.url);s.clear(),r.clear(),a=null;}}return {getState:()=>t,subscribe:l=>(r.add(l),()=>r.delete(l)),toggle:m,seek:P,beginScrub:k,endScrub:D,stop:E,dispose:w}}function Xr(e){if(e.length===0)return 0;let n=0;for(let t=0;t<e.length;t+=1){let r=((e[t]??128)-128)/128;n+=r*r;}return Math.min(1,Math.sqrt(n/e.length)*Math.SQRT2)}function Zr(e,n,t){if(e.length===0||n<=0||t<=0)return 0;let r=n/t,o=0,a=0;for(let s=0;s<e.length;s+=1){let d=s*r,i=.2;d<200?i=.15:d<300?i=.4:d<=3400?i=1:d<=6e3&&(i=.45),o+=(e[s]??0)/255*i,a+=i;}return a>0?o/a:0}function ht(e){let n=Xr(e.timeDomain),t=Zr(e.frequency,e.sampleRate,e.fftSize),r=n*.55+t*.45;return Math.min(1,r*e.boost)**.72}var je=class{constructor(n=.45,t=.18){this.attack=n;this.release=t;}attack;release;value=0;next(n){let t=Math.min(1,Math.max(0,n));return t>this.value?this.value+=(t-this.value)*this.attack:this.value+=(t-this.value)*this.release,this.value}};function eo(){return {channelCount:1,echoCancellation:true,noiseSuppression:true,autoGainControl:true}}var no=50,to=.12,ro=2.6,oo=.06,io=256;function ao(){return typeof MediaRecorder>"u"?"":["audio/webm","audio/webm;codecs=opus","audio/mp4","audio/aac","audio/ogg;codecs=opus"].find(n=>MediaRecorder.isTypeSupported(n))??""}async function so(e,n,t){let r=window.AudioContext??window.webkitAudioContext,o=window.OfflineAudioContext??window.webkitOfflineAudioContext;if(o===void 0||t==null&&r===void 0)throw new G("audio-context-blocked","AudioContext \u4E0D\u53EF\u7528");let a=t??new r,s=t==null;try{a.state==="suspended"&&await a.resume().catch(()=>{});let d=await a.decodeAudioData(await e.arrayBuffer()),i=Math.max(1,Math.ceil(d.duration*n)),f=new o(1,i,n),g=f.createBufferSource();return g.buffer=d,g.connect(f.destination),g.start(0),(await f.startRendering()).getChannelData(0).slice()}catch(d){throw d instanceof G?d:new G("decode-failed","\u5F55\u97F3\u6BB5\u89E3\u7801\u5931\u8D25",{cause:d})}finally{s&&await a.close().catch(()=>{});}}function yt(e){let n=0;for(let o of e)n+=o.length;let t=new Float32Array(n),r=0;for(let o of e)t.set(o,r),r+=o.length;return t}async function co(e={}){if(typeof MediaRecorder>"u")throw new G("no-media-recorder","\u5F53\u524D\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u5F55\u97F3");let n;if(e.stream!==void 0)n=e.stream;else {if(typeof navigator>"u"||navigator.mediaDevices?.getUserMedia===void 0)throw new G("no-media-devices","\u5F53\u524D\u73AF\u5883\u4E0D\u652F\u6301\u9EA6\u514B\u98CE\u91C7\u96C6");try{n=await navigator.mediaDevices.getUserMedia({audio:eo()});}catch(C){throw lt(C)}}pt();let t=ao(),r=e.maxDurationMs??6e4,o="recording",a=[],s=0,d=[],i=null,f=null,g=null,b=[],h=0,p=false;function A(){try{let C;try{C=t!==""?new MediaRecorder(n,{mimeType:t}):new MediaRecorder(n);}catch{C=new MediaRecorder(n);}return b=[],C.ondataavailable=I=>{I.data.size>0&&b.push(I.data);},C.start(250),h=Date.now(),C}catch(C){throw C instanceof G?C:new G("device-busy","\u5F55\u97F3\u5668\u542F\u52A8\u5931\u8D25",{cause:C})}}let v=e.amplitude?.intervalMs??no,E=e.amplitude?.boost??ro,c=e.amplitude?.smoothing??to,u=e.amplitude?.minVolume??oo;function y(){let C=Math.floor(r/1e3*Z),I=0;for(let M of a)I+=M.length;if(I>C){let M=C,R=[];for(let T of a){if(M<=0)break;T.length<=M?(R.push(T),M-=T.length):(R.push(T.slice(0,M)),M=0);}a.length=0,a.push(...R);}s=Math.min(s,r);let S=Math.max(0,Math.ceil(r/v));d.length>S&&(d.length=S);}async function m(){if(o!=="recording"){e.onMaxDuration?.();return}e.onMaxDuration?.(),o="paused";let C=_().then(()=>y());g=C;try{await C;}catch(I){console.warn("[im-browser] pauseAtMaxDuration settle failed",I);}}let P=setInterval(()=>{!p&&o==="recording"&&w()>=r&&(p=true,m());},250),k=null,D=null;try{let C=window.AudioContext??window.webkitAudioContext;if(C!==void 0){k=new C,k.state==="suspended"&&k.resume().catch(()=>{});let I=k.createMediaStreamSource(n),S=k.createAnalyser();S.fftSize=io,S.smoothingTimeConstant=c,I.connect(S);let M=new Uint8Array(S.frequencyBinCount),R=new Uint8Array(S.fftSize),T=new je;D=setInterval(()=>{if(o!=="recording"||i===null)return;S.getByteFrequencyData(M),S.getByteTimeDomainData(R);let U=ht({timeDomain:R,frequency:M,sampleRate:k.sampleRate,fftSize:S.fftSize,boost:E}),N=T.next(U),$=N<u?0:N;d.push(Math.round($*255)),e.onAmplitude?.($);},v);}}catch(C){console.warn("[im-browser] amplitude analyser setup failed",C);}function w(){let C=o==="recording"&&i!==null?Date.now()-h:0;return s+C}function l(){P!==null&&(clearInterval(P),P=null),D!==null&&(clearInterval(D),D=null),k?.close().catch(()=>{}),k=null;for(let C of n.getTracks())C.stop();}function _(){if(f!==null)return f;let C=i;return C===null?Promise.resolve():(i=null,f=(async()=>{await new Promise(M=>{if(C.state==="inactive"){M();return}C.onstop=()=>M(),C.stop();});let I=new Blob(b,{type:C.mimeType||t||"audio/webm"});if(b=[],I.size===0)return;let S=await so(I,Z,k);S.length!==0&&(a.push(S),s+=S.length/Z*1e3);})().finally(()=>{f=null;}),f)}try{i=A();}catch(C){throw o="closed",l(),C}return {getState:()=>o,recordedMs:w,async pause(){o==="recording"&&(o="paused",await _(),(p||s>=r)&&y());},async resume(){o!=="paused"||p||(i=A(),o="recording");},async finish(){if(o==="closed")throw new G("empty-recording","\u5F55\u97F3\u4F1A\u8BDD\u5DF2\u7ED3\u675F");o="closed";try{g!==null?await g:await _(),y();}finally{l();}let C=yt(a);if(C.length===0)throw new G("empty-recording","\u5F55\u97F3\u5185\u5BB9\u4E3A\u7A7A");let I=Cn(C,Z);if(I.length===0)throw new G("empty-recording","\u5F55\u97F3\u5185\u5BB9\u4E3A\u7A7A");let S=Math.min(d.length,Math.ceil(hn/v));return {data:await ft(I,Z),durationMs:Math.round(I.length/Z*1e3)+yn,waveform:d.slice(S),filename:`AUDIO_${Date.now()}.ogg`,mimeType:"audio/ogg"}},cancel(){if(o==="closed")return;o="closed";let C=i;if(i=null,C!==null&&(C.ondataavailable=null,C.onstop=null,C.state!=="inactive"))try{C.stop();}catch{}a.length=0,l();},async previewWav(){g!==null?await g:f!==null&&await f,y();let C=yt(a),I=Cn(C,Z);if(I.length===0)throw new G("empty-recording","\u6682\u65E0\u53EF\u8BD5\u542C\u7684\u5F55\u97F3\u5185\u5BB9");return {wavData:Ve(gn(I),Z),durationMs:Math.round(I.length/Z*1e3)}}}}var ee=class extends Error{constructor(n,t){super(n,t),this.name="ChannelKeyError";}};function Ct(e){let n=e.trim(),t=n.replace(/-/g,"+").replace(/_/g,"/");if(t===""||!/^[A-Z0-9+/]*={0,2}$/i.test(t)||t.length%4===1)throw new ee("channel secret_key \u4E0D\u662F\u5408\u6CD5 Base64");let r=t.replace(/=+$/,""),o=r+"=".repeat((4-r.length%4)%4),a;try{a=atob(o);}catch(f){throw new ee("channel secret_key Base64 \u89E3\u7801\u5931\u8D25",{cause:f})}let s=Uint8Array.from(a,f=>f.charCodeAt(0)&255);if(s.length===0)throw new ee("channel secret_key Base64 \u89E3\u7801\u7ED3\u679C\u4E3A\u7A7A");let d=new Uint8Array(16);d.set(s.subarray(0,d.length));let i=n.length===16&&/^[\x20-\x7E]+$/.test(n)?Uint8Array.from(n,f=>f.charCodeAt(0)):void 0;return {canonical:d,...i===void 0?{}:{legacyAscii:i},metadata:{channelKeyCharLength:n.length,decodedByteLength:s.length,padByteCount:Math.max(0,16-s.length),legacyAsciiCandidate:i!==void 0}}}function uo(e){let n=new Map,t=new Map,r=new Map,o=new Map;function a(u){return {canonical:u.canonical.slice(),...u.legacyAscii===void 0?{}:{legacyAscii:u.legacyAscii.slice()},metadata:{...u.metadata}}}function s(u){return [{strategy:"canonical-base64-pad",key:u.canonical.slice()},...u.legacyAscii===void 0?[]:[{strategy:"legacy-ascii16",key:u.legacyAscii.slice()}]]}function d(u){n.delete(u),t.delete(u),r.delete(u),o.set(u,(o.get(u)??0)+1);}function i(u){let y=o.get(u)??0,m=(async()=>{try{let P=await e.loadSecretKey(u);if(P===null||P.trim()==="")throw new ee(`channel secret_key \u7F3A\u5931\uFF08channelId=${u}\uFF09`);let k=Ct(P);return (o.get(u)??0)===y&&n.set(u,a(k)),k}catch(P){let k=P instanceof ee?P:new ee(`channel secret_key \u52A0\u8F7D\u5931\u8D25\uFF08channelId=${u}\uFF09`,{cause:P});throw e.onError?.(k.message,P),k}})().finally(()=>{t.get(u)===m&&t.delete(u);});return t.set(u,m),m}function f(u,y){let m=u.trim();if(m===""){let k=new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");return e.onError?.(k.message),Promise.reject(k)}y?.force===true&&d(m);let P=n.get(m);return P!==void 0?Promise.resolve(a(P)):t.get(m)??i(m)}function g(u,y){let m=u.trim();if(m===""){let w=new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");return e.onError?.(w.message),Promise.reject(w)}y?.force===true&&d(m);let P=n.get(m);if(P!==void 0)return Promise.resolve(P.canonical.slice());let k=r.get(m);if(k!==void 0)return k;let D=(t.get(m)??i(m)).then(w=>w.canonical.slice()).finally(()=>{r.get(m)===D&&r.delete(m);});return r.set(m,D),D}function b(u){return n.get(u.trim())?.canonical.slice()??null}async function h(u,y){let m=await f(u,y);return s(m)}function p(u){let y=n.get(u.trim());return y===void 0?[]:s(y)}function A(u){let y=n.get(u.trim());return y===void 0?null:{...y.metadata}}function v(u,y){let m=u.trim();if(m==="")throw new ee("channel id \u4E0D\u80FD\u4E3A\u7A7A");let P=Ct(y);d(m),n.set(m,a(P));}function E(u){let y=u.trim();y!==""&&d(y);}function c(){let u=new Set([...n.keys(),...t.keys(),...r.keys(),...o.keys()]);for(let y of u)o.set(y,(o.get(y)??0)+1);n.clear(),t.clear(),r.clear();}return {getChannelKey:g,getCachedChannelKey:b,getChannelKeyCandidates:h,getCachedChannelKeyCandidates:p,getCachedChannelKeyMetadata:A,primeChannelKey:v,clearChannelKey:E,clearAll:c}}var lo="core";var xe=class extends Error{code=502;constructor(n,t){super(`core JSON \u4F20\u8F93\u5931\u8D25\uFF1A${n||"unknown transport error"}`,t===void 0?void 0:{cause:t}),this.name="CoreJsonTransportError";}},q=class extends Error{businessCode;operation;constructor(n,t,r){super(`${n}\u5931\u8D25\uFF1Acode=${t}${r?` ${r}`:""}`),this.name="CoreJsonBusinessError",this.businessCode=t,this.operation=n;}};async function x(e,n,t,r){let o=r!==void 0&&"responseMode"in r&&r.responseMode==="strict",a;try{a=await e(n,{target:lo,data:t,...r?.method===void 0?{}:{method:r.method},...r?.headers===void 0?{}:{headers:r.headers},...r?.prefix===void 0?{}:{prefix:r.prefix}});}catch(s){throw o?new xe(s instanceof Error?s.message:String(s),s):s}if(o){let s=typeof a.msg=="string"?a.msg:"";if(a.code===502)throw new xe(s);return a.code!==200?{ok:false,code:a.code,message:s,data:a.data}:{ok:true,code:200,message:s,data:a.data}}return {code:a.code,data:a.code===200&&a.data!=null?a.data:null}}function bt(e,n){let t=n.clientType===void 0?{public_key:n.publicKey}:{public_key:n.publicKey,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return x(e,"/user/encrypt_info/info",t,r)}function po(e){let n=e.trim().replace(/-/g,"+").replace(/_/g,"/"),t=n+"=".repeat((4-n.length%4)%4),r=atob(t),o=new Uint8Array(r.length);for(let a=0;a<r.length;a++)o[a]=r.charCodeAt(a)&255;return o}function fo(e){let n=e.clientType,t=new Map,r=new Map,o=null,a=null;function s(b,h){e.onError?.(b,h);}function d(){if(o!==null)return Promise.resolve(o);if(a!==null)return a;let b=Promise.resolve().then(()=>e.crypto.generateTempKeyPair()).then(h=>(o=h,h)).finally(()=>{a===b&&(a=null);});return a=b,b}async function i(b){let h;try{h=await d();}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u751F\u6210\u4E34\u65F6 RSA \u5BC6\u94A5\u5931\u8D25\uFF08userId=${b}\uFF09`,E),null}let p;try{p=await bt(e.client,{publicKey:h.publicKeyBase64,clientType:n});}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u8BF7\u6C42\u5F02\u5E38\uFF08userId=${b}\uFF09`,E),null}if(p.data===null)return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u4E1A\u52A1\u5931\u8D25\uFF08userId=${b}\uFF0Ccode=${p.code}\uFF09`),null;let A=p.data.prv_key??p.data.prvKey??"",v=String(p.data.version??"").trim();if(A==="")return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\u54CD\u5E94\u7F3A\u5C11 prv_key\uFF08userId=${b}\uFF09`),null;try{let E=e.crypto.rsaDecryptPkcs1({data:po(A),privateKey:h.privateKey}),c=new TextDecoder().decode(E).trim();if(c==="")return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u89E3\u51FA\u7684\u79C1\u94A5\u4E3A\u7A7A\uFF08userId=${b}\uFF09`),null;let u={privateKey:c,version:v};return t.set(b,u),u}catch(E){return s(`\u7528\u6237\u5BC6\u94A5\u534F\u5546\uFF1A\u4E34\u65F6\u79C1\u94A5\u89E3 prv_key \u5931\u8D25\uFF08userId=${b}\uFF09`,E),null}}function f(b,h){let p=b.trim();if(p==="")return Promise.resolve(null);h?.force===true&&t.delete(p);let A=t.get(p);if(A!==void 0)return Promise.resolve(A);let v=r.get(p);if(v!==void 0)return v;let E=i(p).finally(()=>{r.get(p)===E&&r.delete(p);});return r.set(p,E),E}function g(b){return t.get(b.trim())??null}return {getUserPrivateKey:f,getCachedPrivateKey:g}}function Pt(e,n){let t=n.clientType===void 0?{group_id:n.groupId,public_key:n.publicKey}:{group_id:n.groupId,public_key:n.publicKey,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return x(e,"/user_group/encrypt_info",t,r)}function mo(e){let n=e.trim().replace(/-/g,"+").replace(/_/g,"/"),t=n+"=".repeat((4-n.length%4)%4),r=atob(t),o=new Uint8Array(r.length);for(let a=0;a<r.length;a++)o[a]=r.charCodeAt(a)&255;return o}function go(e){let n=e.clientType,t=new Map,r=new Map,o=new Map,a=null,s=null;function d(){if(a!==null)return Promise.resolve(a);if(s!==null)return s;let h=Promise.resolve().then(()=>e.crypto.generateTempKeyPair()).then(p=>(a=p,p)).finally(()=>{s===h&&(s=null);});return s=h,h}async function i(h){let p=o.get(h)??0,A;try{A=await d();}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u751F\u6210\u4E34\u65F6 RSA \u5BC6\u94A5\u5931\u8D25\uFF08groupId=${h}\uFF09`,m),null}let v;try{v=await Pt(e.client,{groupId:h,publicKey:A.publicKeyBase64,clientType:n});}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u8BF7\u6C42\u5F02\u5E38\uFF08groupId=${h}\uFF09`,m),null}if(v.data===null)return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u4E1A\u52A1\u5931\u8D25\uFF08groupId=${h}\uFF0Ccode=${v.code}\uFF09`),null;let E=v.data,c=String(E.prv_key??E.prvKey??E.private_key??"").trim(),u=String(E.pub_key??E.pubKey??E.public_key??"").trim(),y=String(E.version??"").trim();if(c==="")return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\u54CD\u5E94\u7F3A\u5C11 prv_key\uFF08groupId=${h}\uFF09`),null;try{let m=e.crypto.rsaDecryptPkcs1({data:mo(c),privateKey:A.privateKey}),P=new TextDecoder().decode(m).trim();if(P==="")return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u89E3\u51FA\u7684\u7FA4\u79C1\u94A5\u4E3A\u7A7A\uFF08groupId=${h}\uFF09`),null;let k={privateKey:P,publicKey:u,version:y};return (o.get(h)??0)===p&&t.set(h,k),k}catch(m){return e.onError?.(`\u7FA4\u5BC6\u94A5\u534F\u5546\uFF1A\u4E34\u65F6\u79C1\u94A5\u89E3 prv_key \u5931\u8D25\uFF08groupId=${h}\uFF09`,m),null}}function f(h,p){let A=h.trim();if(A==="")return Promise.resolve(null);p?.force===true&&t.delete(A);let v=t.get(A);if(v!==void 0)return Promise.resolve(v);let E=r.get(A);if(E!==void 0)return E;let c=i(A).finally(()=>{r.get(A)===c&&r.delete(A);});return r.set(A,c),c}function g(h){return t.get(h.trim())??null}function b(h){let p=h.trim();t.delete(p),r.delete(p),o.set(p,(o.get(p)??0)+1);}return {getGroupKeys:f,getCachedGroupKeys:g,clearGroupKeys:b}}async function Ee(e,n){let t=n.clientType===void 0?{other_user_openid:n.userId}:{other_user_openid:n.userId,clientType:n.clientType},r=n.clientType===void 0?void 0:{headers:{"Client-type":String(n.clientType)}};return (await x(e,"/user/info/other",t,r)).data}function ho(e){let n=e.clientType,t=new Map,r=new Map;async function o(s){try{let i=((await Ee(e.client,{userId:s,clientType:n}))?.public_key??"").trim();return i===""?(e.onError?.(`\u53D6\u5BF9\u7AEF\u516C\u94A5\uFF1A/user/info/other \u65E0 public_key\uFF08userId=${s}\uFF09`),null):(t.set(s,i),i)}catch(d){return e.onError?.(`\u53D6\u5BF9\u7AEF\u516C\u94A5\u8BF7\u6C42\u5F02\u5E38\uFF08userId=${s}\uFF09`,d),null}}function a(s,d){let i=s.trim();if(i==="")return Promise.resolve(null);d?.force===true&&t.delete(i);let f=t.get(i);if(f!==void 0)return Promise.resolve(f);let g=r.get(i);if(g!==void 0)return g;let b=o(i).finally(()=>{r.get(i)===b&&r.delete(i);});return r.set(i,b),b}return {getPeerPublicKey:a}}function yo(e){if(e.length<16)throw new Error(`TEA key \u957F\u5EA6\u4E0D\u8DB3\uFF1A${e.length}\uFF0C\u9700 \u2265 16 \u5B57\u8282`);let n=new DataView(e.buffer,e.byteOffset,16);return [n.getUint32(0,true),n.getUint32(4,true),n.getUint32(8,true),n.getUint32(12,true)]}function wt([e,n],[t,r,o,a]){let s=e>>>0,d=n>>>0,i=Math.imul(2654435769,16)>>>0;for(let f=0;f<16;f++)d=d-(Math.imul(s,16)+o^s+i^(s>>>5)+a)>>>0,s=s-(Math.imul(d,16)+t^d+i^(d>>>5)+r)>>>0,i=i-2654435769>>>0;return [s,d]}function It([e,n],[t,r,o,a]){let s=e>>>0,d=n>>>0,i=0;for(let f=0;f<16;f++)i=i+2654435769>>>0,s=s+(Math.imul(d,16)+t^d+i^(d>>>5)+r)>>>0,d=d+(Math.imul(s,16)+o^s+i^(s>>>5)+a)>>>0;return [s,d]}function qe(e,n,t,r){let o=yo(n),a=new Uint8Array(e.length),s=Math.floor(e.length/8),d=r===void 0?s:Math.min(s,Math.floor(r/8)),i=new DataView(e.buffer,e.byteOffset,e.byteLength),f=new DataView(a.buffer);for(let b=0;b<d;b++){let h=b*8,[p,A]=t([i.getUint32(h,true),i.getUint32(h+4,true)],o);f.setUint32(h,p,true),f.setUint32(h+4,A,true);}let g=d*8;return g<e.length&&a.set(e.subarray(g),g),a}function bn(e,n){return qe(n,e,wt)}function Pn(e,n){return qe(n,e,It)}function _t(e,n){return qe(n,e,It,32)}function At(e,n){return qe(n,e,wt,32)}var ue=16;function St(e){let n="";for(let t of e)n+=String.fromCharCode(t);return n}function vt(e){let n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t)&255;return n}function Mt(e){return e.replace(/(.{64})/g,`$1
|
|
2
2
|
`).trim()}function Co(e){return e.replace(/-----BEGIN[^-]+-----/g,"").replace(/-----END[^-]+-----/g,"").replace(/\s+/g,"")}function bo(e){let n=(e??"").trim();if(n==="")throw new Error("RSA \u79C1\u94A5\u4E3A\u7A7A");if(n.includes("-----BEGIN"))return V.pki.privateKeyFromPem(n);let t=n.replace(/\s+/g,""),r=[];try{return V.pki.privateKeyFromAsn1(V.asn1.fromDer(V.util.decode64(t)))}catch(a){r.push(a);}let o=Mt(t);for(let a of ["PRIVATE KEY","RSA PRIVATE KEY"])try{return V.pki.privateKeyFromPem(`-----BEGIN ${a}-----
|
|
3
3
|
${o}
|
|
4
4
|
-----END ${a}-----`)}catch(s){r.push(s);}throw new Error(`RSA \u79C1\u94A5\u89E3\u6790\u5931\u8D25\uFF08\u5DF2\u8BD5 PKCS1-DER / PKCS8-PEM / PKCS1-PEM\uFF09\uFF1A${r[0]instanceof Error?r[0].message:String(r[0])}`)}function xt(e){let n=bo(e.privateKey),t=Math.ceil(n.n.bitLength()/8),{data:r}=e;if(r.length===0)throw new Error("RSA \u89E3\u5BC6\uFF1A\u5BC6\u6587\u4E3A\u7A7A");let o=[];for(let i=0;i<r.length;i+=t){let f=Math.min(i+t,r.length);try{let g=n.decrypt(St(r.subarray(i,f)),"RSAES-PKCS1-V1_5");o.push(vt(g));}catch(g){let b=g instanceof Error?g.message:String(g);throw new Error(`RSA-PKCS1 \u89E3\u5BC6\u5931\u8D25\uFF08\u5BC6\u6587 ${r.length}B\uFF0C\u5757 ${i}..${f}\uFF0CkeySize ${t}B\uFF0C\u79C1\u94A5 ${n.n.bitLength()}bit\uFF09\uFF1A${b}`)}}let a=o.reduce((i,f)=>i+f.length,0),s=new Uint8Array(a),d=0;for(let i of o)s.set(i,d),d+=i.length;return s}function Po(e){let n=xt({data:e.secretKey,privateKey:e.privateKey});if(n.length<ue)throw new Error(`\u7AEF\u5230\u7AEF\u89E3\u5BC6\u5931\u8D25\uFF1ARSA \u89E3\u51FA\u7684 teaKey \u957F\u5EA6 ${n.length} < ${ue}`);return bn(n,e.cipherData)}function wo(e){let n=(e??"").trim();if(n==="")throw new Error("RSA \u516C\u94A5\u4E3A\u7A7A");if(n.includes("-----BEGIN"))return V.pki.publicKeyFromPem(n);let t=n.replace(/\s+/g,""),r=[];try{return V.pki.publicKeyFromAsn1(V.asn1.fromDer(V.util.decode64(t)))}catch(a){r.push(a);}let o=Mt(t);for(let a of ["PUBLIC KEY","RSA PUBLIC KEY"])try{return V.pki.publicKeyFromPem(`-----BEGIN ${a}-----
|