sonic-ws 2.0.0 → 2.0.1
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/bundled/bundle.js +6 -0
- package/bundled/bundle.wasm +0 -0
- package/dist/ts/native/wasm/node/README.md +6 -0
- package/dist/ts/native/wasm/node/package.json +13 -0
- package/dist/ts/native/wasm/node/sonic_ws_core.d.ts +53 -0
- package/dist/ts/native/wasm/node/sonic_ws_core.js +7 -0
- package/dist/ts/native/wasm/node/sonic_ws_core_bg.wasm +0 -0
- package/dist/ts/native/wasm/node/sonic_ws_core_bg.wasm.d.ts +37 -0
- package/dist/ts/native/wasm/pkg/README.md +6 -0
- package/dist/ts/native/wasm/pkg/package.json +19 -0
- package/dist/ts/native/wasm/pkg/sonic_ws_core.d.ts +53 -0
- package/dist/ts/native/wasm/pkg/sonic_ws_core.js +7 -0
- package/dist/ts/native/wasm/pkg/sonic_ws_core_bg.js +7 -0
- package/dist/ts/native/wasm/pkg/sonic_ws_core_bg.wasm +0 -0
- package/dist/ts/native/wasm/pkg/sonic_ws_core_bg.wasm.d.ts +37 -0
- package/package.json +12 -4
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
(()=>{"use strict";var __webpack_modules__={14(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.EnumPackage=t.TYPE_CONVERSION_MAP=void 0;const a=n(113),r=n(864),s={string:0,number:1,boolean:2,undefined:3,object:4};function i(e){const t=typeof e;if(!(t in s)&&null!=e)throw new Error(`Cannot serialize type "${t}" in an enum!`);return s[t]}t.TYPE_CONVERSION_MAP={0:e=>e,1:e=>parseFloat(e),2:e=>"true"==e,3:()=>{},4:()=>null};t.EnumPackage=class{tag;values;constructor(e,t){this.tag=e,this.values=t,this.wrap=this.wrap.bind(this)}serialize(){const e=(0,a.processCharCodes)(this.tag);return[this.tag.length,...e,this.values.length,...this.values.map(e=>[String(e).length,i(e),...(0,a.processCharCodes)(String(e))]).flat()]}wrap(e){return(0,r.WrapEnum)(this.tag,e)}}},26(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.decompressBools=t.compressBools=t.EMPTY_UINT8=t.MAX_UVARINT=t.MAX_BYTE=void 0,t.convertVarInt=function(e){if(!Number.isSafeInteger(e)||e<0||e>t.MAX_UVARINT)throw new Error(`Variable Ints must be within range 0 and ${t.MAX_UVARINT}: ${e}`);const n=[];do{let t=e%128;(e=Math.floor(e/128))>0&&(t|=128),n.push(t)}while(e>0);return n},t.readVarInt=function(e,t){let n=0,a=1;for(let r=0;r<8;r++){if(t>=e.length)throw new Error("Truncated variable integer");const r=e[t++];if(n+=(127&r)*a,!(128&r))return[t,n];a*=128}throw new Error("Variable integer is too long")},t.MAX_BYTE=255,t.MAX_UVARINT=128**7-1,t.EMPTY_UINT8=new Uint8Array([]);t.compressBools=e=>e.reduce((e,t,n)=>e|Number(t)<<7-n,0);t.decompressBools=e=>Array.from({length:8},(t,n)=>!!(e&1<<7-n))},113(e,t){function n(e){return String.fromCodePoint(...e)}Object.defineProperty(t,"__esModule",{value:!0}),t.processCharCodes=function(e){return Array.from(e,e=>e.codePointAt(0))},t.convertCharCodes=n,t.as8String=function(e){return n(Array.from(e))}},197(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MiddlewareHolder=void 0;t.MiddlewareHolder=class{middlewares=[];addMiddleware(e){this.middlewares.push(e);const t=e;try{"function"==typeof t.init&&t.init(this)}catch(e){console.warn("Middleware init threw an error:",e)}}async callMiddleware(e,...t){let n=!1;for(const a of this.middlewares){const r=a[e];if(r)try{await r(...t)&&(n=!0)}catch(t){console.warn(`Middleware ${String(e)} threw an error:`,t)}}return n}}},241(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.DebugClient=void 0;t.DebugClient=class{host;constructor(e){this.host=e;const t=document.createElement("sonicws");t.innerHTML="<style>sws-h3{margin:0;color:#fff;font-size:16px;font-weight:600}#sonicws-container{display:flex;flex-direction:column;position:absolute;top:50px;left:50px;width:75vw;min-width:33vw;min-height:25vh;max-height:75vh;max-width:75vw;font-family:Arial,sans-serif;background-color:#2c2c2c;border-radius:10px;box-shadow:0 8px 20px rgba(0,0,0,.4);overflow:hidden;user-select:none;transition:box-shadow .2s ease;z-index:2147483647}#sonicws-container:hover{box-shadow:0 12px 28px rgba(0,0,0,.6)}#sonicws-header{display:flex;justify-content:space-between;align-items:center;cursor:move;background:linear-gradient(90deg,#4a90e2,#357ab7);padding:10px 12px;border-top-left-radius:10px;border-top-right-radius:10px}#sonicws-toggle{font-size:18px;font-weight:700;cursor:pointer;color:#fff;user-select:none}#sonicws-body{flex:1;display:flex;padding:12px;color:#e0e0e0;font-size:14px;min-height:0}#sonicws-stats{display:flex;flex-direction:column;min-width:140px}#sonicws-stats sws-p{margin:4px 0}#sonicws-packets{min-height:0;display:flex;flex-direction:column;flex:1;margin-left:10px;background-color:#1e1e1e;padding:8px;border-radius:8px;overflow-y:scroll}sws-div.packet{background-color:#2a2a2a;border-radius:6px;padding:3px 5px;margin-bottom:2px;cursor:pointer;transition:background .2s ease,transform .1s ease;display:flex;flex-direction:column}sws-div.packet:hover{background-color:#3a3a3a;transform:translateY(-1px)}sws-div.packet-header{display:flex;align-items:flex-start;flex-wrap:wrap;font-size:11px;white-space:normal;word-break:break-word}sws-span.packet-arrow{font-weight:700;margin-right:6px}sws-div.packet-details{margin-top:6px;font-size:10px;color:#aaa;display:none;flex-direction:column}sws-div.packet.expanded sws-div.packet-details{display:flex}#sonicws-resizer{width:12px;height:12px;background:#666;position:absolute;right:0;bottom:0;cursor:se-resize;border-bottom-right-radius:10px;transition:background .2s ease}#sonicws-resizer:hover{background:#888}#sonicws-container.minimized{width:auto!important;height:auto!important;min-width:unset;min-height:unset}#sonicws-container.minimized #sonicws-body,#sonicws-container.minimized #sonicws-resizer{display:none}#sonicws-container.minimized #sonicws-header{padding:8px 12px}#sonicws-container.minimized #sonicws-title{font-size:14px}</style><sws-div id=sonicws-container><sws-div id=sonicws-header><sws-h3 id=sonicws-title>SonicWS Debug Menu</sws-h3><sws-span id=sonicws-toggle>−</sws-span></sws-div><sws-div id=sonicws-body><sws-div id=sonicws-stats><sws-p>Status:<sws-span id=sonicws-status>Connecting</sws-span></sws-p><sws-p>Sent Packets:<sws-span id=sonicws-sent>0</sws-span></sws-p><sws-p>Received Packets:<sws-span id=sonicws-received>0</sws-span></sws-p><sws-p>Total Bytes Sent:<sws-span id=sonicws-sentbytes>0</sws-span></sws-p><sws-p>Total Bytes Received:<sws-span id=sonicws-receivedbytes>0</sws-span></sws-p><sws-p>Total Bytes Saved:<sws-span id=sonicws-savedbytes>0</sws-span></sws-p></sws-div><sws-div id=sonicws-packets></sws-div></sws-div><sws-div id=sonicws-resizer></sws-div></sws-div>",document.body?(document.body.appendChild(t),this._loadDebugScript()):document.addEventListener("DOMContentLoaded",()=>{document.body.appendChild(t),this._loadDebugScript()})}_evalInScope(e){const t=this.host;return new Function("send","WrapEnum","DeWrapEnum","FlattenData","UnFlattenData",`"use strict"; return (${e});`)(t.send.bind(t),t.WrapEnum.bind(t),t.DeWrapEnum.bind(t),t.FlattenData.bind(t),t.UnFlattenData.bind(t))}_loadDebugScript(){const e={},t={},n=this.host;this.host.addMiddleware(new class{onReceive_pre(e,n){t[e]??=[],t[e].push([n,performance.now()])}onReceive_post(e,a){const[r,s]=t[e].shift();T("received",`${e} (0x${n.serverPackets.getKey(e).toString(16).toUpperCase()})`,r,JSON.stringify(a),performance.now()-s)}onSend_pre(t,n){e[t]??=[],e[t].push([n,performance.now()])}onSend_post(t,a){const[r,s]=e[t].shift();T("sent",`${t} (0x${n.clientPackets.getKey(t).toString(16).toUpperCase()})`,a,JSON.stringify(r),performance.now()-s)}onStatusChange(e){S(e)}});const a=e=>document.getElementById(e),r=a("sonicws-container"),s=a("sonicws-header"),i=a("sonicws-resizer"),o=a("sonicws-status"),c=a("sonicws-packets"),d=a("sonicws-sent"),l=a("sonicws-received"),u=a("sonicws-sentbytes"),h=a("sonicws-receivedbytes"),p=a("sonicws-savedbytes"),f=document.getElementById("sonicws-toggle"),w=document.getElementById("sonicws-title");let _=!1;const y=document.createElement("input");y.type="text",y.placeholder='send("tag", 5)',y.style.marginTop="8px",y.style.width="100%",y.style.boxSizing="border-box";const m=document.createElement("button");function g(){const e=r.getBoundingClientRect(),t=window.innerWidth-e.width,n=window.innerHeight-e.height,a=Math.min(Math.max(0,e.left),Math.max(0,t)),s=Math.min(Math.max(0,e.top),Math.max(0,n));r.style.left=a+"px",r.style.top=s+"px"}m.innerText="Run",m.style.marginTop="4px",m.style.width="100%",a("sonicws-stats").appendChild(y),a("sonicws-stats").appendChild(m),m.addEventListener("click",()=>{try{this._evalInScope(y.value)}catch(e){console.error(e)}}),f.addEventListener("click",e=>{e.stopPropagation(),_=!_,_?(r.classList.add("minimized"),w.innerText="SWS",f.innerText="+",r.style.width="",r.style.height=""):(r.classList.remove("minimized"),w.innerText="SonicWS Debug Menu",f.innerText="−"),g()});const b={sentPackets:0,receivedPackets:0,totalBytesSent:0,totalBytesReceived:0,totalBytesSaved:0},v=new Proxy(b,{get(e,t){switch(t){case"sonicws-sent":return b.sentPackets;case"sonicws-received":return b.receivedPackets;case"sonicws-sentbytes":return b.totalBytesSent;case"sonicws-receivedbytes":return b.totalBytesReceived;case"sonicws-savedbytes":return b.totalBytesSaved;default:return}},set(e,t,n){switch(t){case"sonicws-sent":return b.sentPackets=n,d.innerText=n.toLocaleString(),!0;case"sonicws-received":return b.receivedPackets=n,l.innerText=n.toLocaleString(),!0;case"sonicws-sentbytes":{b.totalBytesSent=n;const{amt:e,unit:t}=k(n);return u.innerText=e+t,!0}case"sonicws-receivedbytes":{b.totalBytesReceived=n;const{amt:e,unit:t}=k(n);return h.innerText=e+t,!0}case"sonicws-savedbytes":{b.totalBytesSaved=n;const{amt:e,unit:t}=k(n);return p.innerText=e+t,!0}default:return!1}}}),k=e=>{if(!Number.isFinite(e)||e<0)return{amt:0,unit:"B"};const t=["B","KB","MB","GB","TB"];let n=e,a=0;for(;n>=1024&&a<t.length-1;)n/=1024,a++;return{amt:0==a?n.toString():n.toFixed(2),unit:t[a]}};function S(e){switch(e){case WebSocket.CLOSED:o.innerText="Closed",o.style.color="#f00";break;case WebSocket.CLOSING:o.innerText="Closing",o.style.color="#fa0";break;case WebSocket.OPEN:o.innerText="Open",o.style.color="#0f0";break;case WebSocket.CONNECTING:o.innerText="Connecting",o.style.color="#ff0";break;default:o.innerText="Unknown",o.style.color="#777"}}S(WebSocket.CONNECTING);const E=new TextEncoder;function T(e,t,n,a,r){const s=new Date,i=n.length+("sent"==e?1:0),o=E.encode(a).length-i+1,d=document.createElement("sws-div");d.classList.add("packet");const l=document.createElement("sws-div");l.classList.add("packet-header");const u=document.createElement("sws-span");u.classList.add("packet-arrow"),u.innerText="sent"===e?"⬆":"⬇",u.style.color="sent"===e?"#0f0":"#f00";const h=document.createElement("sws-span");h.innerText=t+": "+a,l.appendChild(u),l.appendChild(h);const p=document.createElement("sws-div");p.classList.add("packet-details"),p.innerHTML=`\n <sws-p> Raw Bytes: ${i}b (saved ~${o}b)</sws-p>\n <sws-p> Processed At: ${s.toISOString()} </sws-p>\n <sws-p> Processing Time: <sws-span class="processing-time" > ${r.toFixed(1)} </sws-span> ms</sws-p>\n `,d.appendChild(l),d.appendChild(p),c.append(d),l.addEventListener("click",()=>d.classList.toggle("expanded")),"sent"===e?(v["sonicws-sent"]++,v["sonicws-sentbytes"]+=i):(v["sonicws-received"]++,v["sonicws-receivedbytes"]+=i),v["sonicws-savedbytes"]+=o}let N=!1,P=0,A=0,O=0,x=0,M=!1,C=0,I=0,B=0,R=0;s.addEventListener("mousedown",e=>{N=!0,P=e.clientX,A=e.clientY;const t=r.getBoundingClientRect();O=t.left,x=t.top,e.preventDefault()}),i.addEventListener("mousedown",e=>{M=!0,C=e.clientX,I=e.clientY;const t=r.getBoundingClientRect();B=t.width,R=t.height,e.preventDefault()}),document.addEventListener("mousemove",e=>{N&&(r.style.left=O+e.clientX-P+"px",r.style.top=x+e.clientY-A+"px",g()),M&&!_&&(r.style.width=B+e.clientX-C+"px",r.style.height=R+e.clientY-I+"px",g())}),document.addEventListener("mouseup",()=>{N=!1,M=!1}),g(),window.addEventListener("resize",g)}}},284(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.BatchHelper=void 0;const a=n(818),r=n(795);t.BatchHelper=class{batchInfo={};batchTimeouts={};batchedData={};conn;registerSendPackets(e,t){this.conn=t,e.getTags().forEach(t=>{const n=e.getPacket(t);if(0==n.dataBatching)return;const a=e.getKey(t);this.initiateBatch(a,n.dataBatching,n.gzipCompression)})}initiateBatch(e,t,n){this.batchedData[e]=[],this.batchInfo[e]=[t,n]}startBatch(e){const[t,n]=this.batchInfo[e];this.batchTimeouts[e]=this.conn.setInterval(()=>{if(0==this.batchedData[e].length)return;const t=(0,r.encodeNativeBatch)(this.batchedData[e],n);this.conn.raw_send((0,a.toPacketBuffer)(e,t)),this.batchedData[e]=[],delete this.batchTimeouts[e]},t)}batchPacket(e,t){this.batchedData[e].push(t),this.batchTimeouts[e]||this.startBatch(e)}static async unravelBatch(e,t,n){let a;try{a=(0,r.decodeNativeBatch)(t,e.gzipCompression,e.maxBatchSize)}catch(e){return"Invalid batch: "+e}const s=[];for(const t of a){const a=await e.listen(t,n);if("string"==typeof a)return"Batched packet: "+a;s.push([a[0],!e.dontSpread])}return s}}},302(e,t,n){function a(e,t,n,a){const r=ee.decodeBatch(e,t,n,q(a)?Number.MAX_SAFE_INTEGER:a>>>0);if(r[2])throw J(r[1]);return J(r[0])}function r(e,t){const n=ee.decodeBooleans(e,t);if(n[2])throw J(n[1]);return J(n[0])}function s(e,t){const n=ee.decodeFloats(e,t);if(n[2])throw J(n[1]);return J(n[0])}function i(e){let t,n;try{const s=ee.decodeHex(e);var a=s[0],r=s[1];if(s[3])throw a=0,r=0,J(s[2]);return t=a,n=r,H(a,r)}finally{ee.__wbindgen_free(t,n,1)}}function o(e){const t=ee.decodeRaw(e);if(t[2])throw J(t[1]);return J(t[0])}function c(e,t){const n=ee.decodeSigned(e,t);if(n[2])throw J(n[1]);return J(n[0])}function d(e,t){const n=ee.decodeStrings(e,t);if(n[2])throw J(n[1]);return J(n[0])}function l(e,t){const n=ee.decodeUnsigned(e,t);if(n[2])throw J(n[1]);return J(n[0])}function u(e){const t=ee.deflateRaw(e);if(t[2])throw J(t[1]);return J(t[0])}function h(e,t){const n=ee.encodeBatch(e,t);if(n[2])throw J(n[1]);return J(n[0])}function p(e){const t=ee.encodeBooleans(e);if(t[2])throw J(t[1]);return J(t[0])}function f(e,t){const n=ee.encodeFloats(e,t);if(n[2])throw J(n[1]);return J(n[0])}function w(e){const t=Y(e,ee.__wbindgen_malloc,ee.__wbindgen_realloc),n=te,a=ee.encodeHex(t,n);if(a[2])throw J(a[1]);return J(a[0])}function _(e){const t=ee.encodeRaw(e);if(t[2])throw J(t[1]);return J(t[0])}function y(e,t){const n=ee.encodeSigned(e,t);if(n[2])throw J(n[1]);return J(n[0])}function m(e,t){const n=ee.encodeStrings(e,t);if(n[2])throw J(n[1]);return J(n[0])}function g(e,t){const n=ee.encodeUnsigned(e,t);if(n[2])throw J(n[1]);return J(n[0])}function b(e){const t=ee.frameObject(e);if(t[2])throw J(t[1]);return J(t[0])}function v(e,t){const n=ee.inflateRaw(e,q(t)?Number.MAX_SAFE_INTEGER:t>>>0);if(n[2])throw J(n[1]);return J(n[0])}function k(e,t){const n=ee.unframeObject(e,t);if(n[2])throw J(n[1]);return J(n[0])}function S(e,t,n,a,r,s,i){const o=ee.validateEncoded(e,t,n,a,r,s,q(i)?Number.MAX_SAFE_INTEGER:i>>>0);if(o[1])throw J(o[0])}function E(e,t,n,a){const r=ee.validateEnum(e,t,n,a);if(r[1])throw J(r[0])}function T(e,t,n,a,r){const s=ee.validateObject(e,t,n,a,r);if(s[1])throw J(s[0])}function N(e){const t="boolean"==typeof e?e:void 0;return q(t)?16777215:t?1:0}function P(e,t){const n="number"==typeof t?t:void 0;W().setFloat64(e+8,q(n)?0:n,!0),W().setInt32(e+0,!q(n),!0)}function A(e,t){const n="string"==typeof t?t:void 0;var a=q(n)?0:Y(n,ee.__wbindgen_malloc,ee.__wbindgen_realloc),r=te;W().setInt32(e+4,r,!0),W().setInt32(e+0,a,!0)}function O(e,t){throw new Error(H(e,t))}function x(e,t){return e[t>>>0]}function M(e){return e.length}function C(e){return e.length}function I(){return new Array}function B(e){return new Uint8Array(e)}function R(e,t){return new Uint8Array(z(e,t))}function U(e,t,n){Uint8Array.prototype.set.call(z(e,t),n)}function L(e,t){return e.push(t)}function D(e){return e}function j(e,t){return H(e,t)}function F(){const e=ee.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}function z(e,t){return e>>>=0,K().subarray(e/1,e/1+t)}n.d(t,{$:()=>_,B4:()=>h,BV:()=>R,Dq:()=>o,EF:()=>i,EW:()=>B,F6:()=>O,JV:()=>P,NR:()=>D,Pt:()=>M,Q5:()=>T,Sg:()=>C,Tb:()=>L,Ts:()=>y,U_:()=>j,XC:()=>m,_s:()=>f,at:()=>u,bL:()=>F,cv:()=>k,gV:()=>I,hD:()=>S,i1:()=>E,i4:()=>s,iT:()=>p,iX:()=>r,jN:()=>a,lI:()=>ne,mU:()=>w,mk:()=>l,nt:()=>b,oF:()=>A,pe:()=>U,qO:()=>g,sL:()=>N,ss:()=>x,tD:()=>c,wS:()=>v,zC:()=>d});let V=null;function W(){return(null===V||!0===V.buffer.detached||void 0===V.buffer.detached&&V.buffer!==ee.memory.buffer)&&(V=new DataView(ee.memory.buffer)),V}function H(e,t){return function(e,t){Q+=t,Q>=X&&(G=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),G.decode(),Q=t);return G.decode(K().subarray(e,e+t))}(e>>>0,t)}let $=null;function K(){return null!==$&&0!==$.byteLength||($=new Uint8Array(ee.memory.buffer)),$}function q(e){return null==e}function Y(e,t,n){if(void 0===n){const n=Z.encode(e),a=t(n.length,1)>>>0;return K().subarray(a,a+n.length).set(n),te=n.length,a}let a=e.length,r=t(a,1)>>>0;const s=K();let i=0;for(;i<a;i++){const t=e.charCodeAt(i);if(t>127)break;s[r+i]=t}if(i!==a){0!==i&&(e=e.slice(i)),r=n(r,a,a=i+3*e.length,1)>>>0;const t=K().subarray(r+i,r+a);i+=Z.encodeInto(e,t).written,r=n(r,a,i,1)>>>0}return te=i,r}function J(e){const t=ee.__wbindgen_externrefs.get(e);return ee.__externref_table_dealloc(e),t}let G=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});G.decode();const X=2146435072;let Q=0;const Z=new TextEncoder;"encodeInto"in Z||(Z.encodeInto=function(e,t){const n=Z.encode(e);return t.set(n),{read:e.length,written:n.length}});let ee,te=0;function ne(e){ee=e}},319(e,t){var n;Object.defineProperty(t,"__esModule",{value:!0}),t.PacketType=void 0,function(e){e[e.NONE=0]="NONE",e[e.RAW=1]="RAW",e[e.STRINGS_ASCII=2]="STRINGS_ASCII",e[e.STRINGS_UTF16=3]="STRINGS_UTF16",e[e.STRINGS=2]="STRINGS",e[e.ENUMS=4]="ENUMS",e[e.BYTES=5]="BYTES",e[e.UBYTES=6]="UBYTES",e[e.SHORTS=7]="SHORTS",e[e.USHORTS=8]="USHORTS",e[e.VARINT=9]="VARINT",e[e.UVARINT=10]="UVARINT",e[e.DELTAS=11]="DELTAS",e[e.FLOATS=12]="FLOATS",e[e.DOUBLES=13]="DOUBLES",e[e.BOOLEANS=14]="BOOLEANS",e[e.KEY_EFFECTIVE=15]="KEY_EFFECTIVE",e[e.JSON=16]="JSON",e[e.HEX=17]="HEX"}(n||(t.PacketType=n={}))},322(e,t,n){n.a(e,async(e,a)=>{try{n.r(t),n.d(t,{decodeBatch:()=>s.jN,decodeBooleans:()=>s.iX,decodeFloats:()=>s.i4,decodeHex:()=>s.EF,decodeRaw:()=>s.Dq,decodeSigned:()=>s.tD,decodeStrings:()=>s.zC,decodeUnsigned:()=>s.mk,deflateRaw:()=>s.at,encodeBatch:()=>s.B4,encodeBooleans:()=>s.iT,encodeFloats:()=>s._s,encodeHex:()=>s.mU,encodeRaw:()=>s.$,encodeSigned:()=>s.Ts,encodeStrings:()=>s.XC,encodeUnsigned:()=>s.qO,frameObject:()=>s.nt,inflateRaw:()=>s.wS,unframeObject:()=>s.cv,validateEncoded:()=>s.hD,validateEnum:()=>s.i1,validateObject:()=>s.Q5});var r=n(575),s=n(302),i=e([r]);r=(i.then?(await i)():i)[0],(0,s.lI)(r),r.__wbindgen_start(),a()}catch(e){a(e)}})},402(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.PacketSchema=t.Packet=void 0;const a=n(864),r=n(14),s=n(26),i=n(917),o=n(319),c=n(113),d=n(795),l=n(980);class u{defaultEnabled;tag;maxSize;minSize;type;enumData;dataMax;dataMin;dataBatching;maxBatchSize;dontSpread;autoFlatten;rateLimit;async;rereference;gzipCompression;object;client;processReceive;processSend;validate;customValidator;lastReceived={};lastSent={};constructor(e,t,n,a,r){if(this.tag=e,this.defaultEnabled=a,this.client=r,this.async=t.async,this.enumData=t.enumData,this.rateLimit=t.rateLimit,this.dontSpread=t.dontSpread,this.autoFlatten=t.autoFlatten,this.rereference=t.rereference,this.dataBatching=t.dataBatching,this.maxBatchSize=r?1/0:t.maxBatchSize,this.gzipCompression=t.gzipCompression,this.object=t.object,this.type=t.type,this.dataMax=t.dataMax,this.dataMin=t.dataMin,t.testObject(this)){this.maxSize=this.minSize=this.type.length;for(let e=0;e<this.type.length;e++)this.type[e]==o.PacketType.NONE&&(this.dataMax[e]=this.dataMin[e]=0);const e={types:this.type,dataMins:this.dataMin,dataMaxes:this.dataMax,enumData:this.enumData};this.processReceive=t=>(0,d.decodeNativeObject)(e,t).map((e,t)=>this.type[t]===o.PacketType.JSON?(0,l.decompressJSON)(e):e),this.processSend=async t=>{let n=0;const a=t.map((e,t)=>{if(this.type[t]===o.PacketType.JSON)return(0,l.compressJSON)(e);if(this.type[t]!==o.PacketType.ENUMS)return e;const a=this.enumData[n++];return(Array.isArray(e)?e:[e]).map(e=>{if(!Number.isInteger(e)||e<0||e>=a.values.length)throw new Error(`Invalid wrapped enum index: ${e}`);return a.values[e]})});return(0,d.encodeNativeObject)(e,a)},this.validate=async t=>{(0,d.validateNativeObject)(e,t);return(0,d.decodeNativeObject)(e,t).forEach((e,t)=>{if(this.type[t]!==o.PacketType.JSON)return;const n=(0,l.decompressJSON)(e),a=Array.isArray(n)?n.length:1;if(a<this.dataMin[t]||a>this.dataMax[t])throw new Error("JSON value count is outside schema limits")}),[t,!0]}}else{{this.maxSize=this.dataMax,this.minSize=this.dataMin,this.type==o.PacketType.NONE&&(this.dataMax=this.dataMin=0);const e=this.enumData[0];this.processReceive=t=>this.type===o.PacketType.JSON?(0,l.decompressJSON)(t):(0,d.decodeNative)(this.type,t,this.dataMax,e),this.processSend=async t=>{let n;if(this.type===o.PacketType.JSON)n=(0,l.compressJSON)(t);else if(this.type===o.PacketType.ENUMS)n=Uint8Array.from(t);else{const a=this.type===o.PacketType.RAW&&1===t.length&&t[0]instanceof Uint8Array?t[0]:t;n=(0,d.encodeNative)(this.type,a,e)}return this.gzipCompression&&0===this.dataBatching?(0,d.deflateNative)(n):n},this.validate=async t=>{const n=this.gzipCompression&&0===this.dataBatching?(0,d.inflateNative)(t):t;if(this.type===o.PacketType.JSON){const e=(0,l.decompressJSON)(n),t=Array.isArray(e)?e.length:1;if(t<this.dataMin||t>this.dataMax)throw new Error("JSON value count is outside schema limits")}else(0,d.validateNative)(this.type,n,this.dataMin,this.dataMax,{enumData:e});return[n,!0]}}}this.customValidator=n}async listen(e,t){try{const[n,a]=await this.validate(e);if(!this.client&&!1===a)return"Invalid packet";const r=this.processReceive(n,a),s=this.autoFlatten?(0,i.UnFlattenData)(r):r;if(null!=this.customValidator)if(this.dontSpread){if(!this.customValidator(t,s))return"Didn't pass custom validator"}else if(!this.customValidator(t,...s))return"Didn't pass custom validator";return[s,!this.dontSpread]}catch(e){return console.error("There was an error processing the packet! This is probably my fault... report at https://github.com/liwybloc/sonic-ws",e),"Error: "+e}}serialize(){const e=[this.tag.length,...(0,c.processCharCodes)(this.tag),(0,s.compressBools)([this.dontSpread,this.async,this.object,this.autoFlatten,this.gzipCompression,this.rereference]),this.dataBatching,this.enumData.length,...this.enumData.map(e=>e.serialize()).flat()];return this.object?[...e,this.maxSize,...this.dataMax.map(s.convertVarInt).flat(),...this.dataMin.map(s.convertVarInt).flat(),...this.type]:[...e,...(0,s.convertVarInt)(this.dataMax),...(0,s.convertVarInt)(this.dataMin),this.type]}static readVarInts(e,t,n){const a=[];for(let r=0;r<n;r++){const[n,r]=(0,s.readVarInt)(e,t);t=n,a.push(r)}return[a,t]}static deserialize(e,t,n){const i=t,d=e[t++],l=(0,c.as8String)(e.slice(t,t+=d)),[h,f,w,_,y,m]=(0,s.decompressBools)(e[t++]),g=e[t++],b=e[t++],v=[];for(let n=0;n<b;n++){const n=e[t++],s=(0,c.as8String)(e.slice(t,t+=n)),i=e[t++],o=[];for(let n=0;n<i;n++){const n=e[t++],a=e[t++],s=(0,c.as8String)(e.slice(t,t+=n));o.push(r.TYPE_CONVERSION_MAP[a](s))}v.push((0,a.DefineEnum)(s,o))}if(w){const a=e[t++],[r,s]=this.readVarInts(e,t,a);t=s;const[c,d]=this.readVarInts(e,t,a);t=d;const w=Array.from(e.slice(t,t+=a));let m=0;const b=w.map(e=>e==o.PacketType.ENUMS?v[m++]:e),k=new p(!0,b,f,c,r,-1,h,_,!1,g,-1,y);return[new u(l,k,null,!1,n),t-i]}const[k,S]=(0,s.readVarInt)(e,t);t=k;const[E,T]=(0,s.readVarInt)(e,t);t=E;const N=e[t++],P=N==o.PacketType.ENUMS?v[0]:N,A=new p(!1,P,f,T,S,-1,h,!1,m,g,-1,y);return[new u(l,A,null,!1,n),t-i]}static deserializeAll(e,t){const n=[];let a=0;for(;a<e.length;){const[r,s]=this.deserialize(e,a,t);n.push(r),a+=s}return n}}t.Packet=u;const h=(e,t)=>e instanceof r.EnumPackage?(t.push(e),o.PacketType.ENUMS):e;class p{type;enumData=[];dataMax;dataMin;dataBatching;maxBatchSize;rateLimit;dontSpread=!1;autoFlatten=!1;async=!1;rereference=!1;gzipCompression=!1;object;constructor(e,t,n,a,r,s,i,o,c,d,l,u){this.object=e,this.async=n,this.dataMin=a,this.dataMax=r,this.rateLimit=s,this.dontSpread=i,this.autoFlatten=o,this.rereference=c,this.dataBatching=d,this.maxBatchSize=l,this.gzipCompression=u,this.type=e?t.map(e=>h(e,this.enumData)):h(t,this.enumData)}testObject(e){return this.object}}t.PacketSchema=p},549(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.CloseCodes=t.Connection=void 0,t.getClosureCause=function(e){if(e>=4e3)return i[e]??"UNKNOWN";switch(e){case 1e3:return"NORMAL_CLOSURE";case 1001:return"GOING_AWAY";case 1002:return"PROTOCOL_ERROR";case 1003:return"UNSUPPORTED_DATA";case 1006:return"ABNORMAL_CLOSURE";default:return"UNKNOWN"}};const a=n(197),r=n(284);class s extends a.MiddlewareHolder{listeners;name;closed=!1;socket;_timers={};batcher;_on;_off;id;constructor(e,t,n,a,s){super(),this.id=t,this.listeners={},this.name=n,this.socket=e,this.batcher=new r.BatchHelper,this._on=a,this._off=s,this._on("close",()=>{this.callMiddleware("onStatusChange",WebSocket.CLOSED),this.closed=!0;for(const[e,t,n]of Object.values(this._timers))this.clearTimeout(e),n&&t(!0)}),this._on("open",()=>this.callMiddleware("onStatusChange",WebSocket.OPEN))}setTimeout(e,t,n=!1){const a=setTimeout(()=>{e(),this.clearTimeout(a)},t);return this._timers[a]=[a,e,n],a}setInterval(e,t,n=!1){const a=setInterval(e,t);return this._timers[a]=[a,e,n],a}clearTimeout(e){clearTimeout(e),delete this._timers[e]}clearInterval(e){this.clearTimeout(e)}raw_send(e){this.socket.send(e)}raw_onmessage(e){this._on("message",e)}close(e=1e3,t){this.closed=!0,this.socket.close(e,t?.toString())}isClosed(){return this.closed||this.socket.readyState==WebSocket.CLOSED}async setName(e){await this.callMiddleware("onNameChange",e)||(this.name=e)}getName(){return this.name}}var i;t.Connection=s,function(e){e[e.RATELIMIT=4e3]="RATELIMIT",e[e.SMALL=4001]="SMALL",e[e.INVALID_KEY=4002]="INVALID_KEY",e[e.INVALID_PACKET=4003]="INVALID_PACKET",e[e.INVALID_DATA=4004]="INVALID_DATA",e[e.REPEATED_HANDSHAKE=4005]="REPEATED_HANDSHAKE",e[e.DISABLED_PACKET=4006]="DISABLED_PACKET",e[e.MIDDLEWARE=4007]="MIDDLEWARE",e[e.MANUAL_SHUTDOWN=4008]="MANUAL_SHUTDOWN"}(i||(t.CloseCodes=i={}))},575(e,t,n){var a=n(302);e.exports=n.v(t,e.id,"a6f0905881362e81621d",{"./sonic_ws_core_bg.js":{__wbg_get_unchecked_6e0ad6d2a41b06f6:a.ss,__wbg_length_370319915dc99107:a.Sg,__wbg_push_d2ae3af0c1217ae6:a.Tb,__wbg_new_32b398fb48b6d94a:a.gV,__wbg_new_cd45aabdf6073e84:a.EW,__wbg_length_1f0964f4a5e2c6d8:a.Pt,__wbg_prototypesetcall_4770620bbe4688a0:a.pe,__wbg_new_from_slice_77cdfb7977362f3c:a.BV,__wbg___wbindgen_string_get_b0ca35b86a603356:a.oF,__wbg___wbindgen_number_get_394265ed1e1b84ee:a.JV,__wbg___wbindgen_throw_344f42d3211c4765:a.F6,__wbg___wbindgen_boolean_get_fa956cfa2d1bd751:a.sL,__wbindgen_init_externref_table:a.bL,__wbindgen_cast_0000000000000001:a.NR,__wbindgen_cast_0000000000000002:a.U_}})},576(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PacketHolder=void 0;t.PacketHolder=class{key;keys;tags;packetMap;packets;constructor(e){this.key=1,this.keys={},this.tags={},this.packetMap={},e&&this.holdPackets(e)}createKey(e){this.keys[e]=this.key,this.tags[this.key]=e,this.key++}holdPackets(e){this.packets=e;for(const t of e)this.createKey(t.tag),this.packetMap[t.tag]=t}getKey(e){if(!(e in this.keys))throw new Error(`Not a valid tag: ${e}`);return this.keys[e]}getTag(e){if(e in this.tags)return this.tags[e]}getPacket(e){if(!(e in this.packetMap))throw new Error("Unknown packet tag: "+e);return this.packetMap[e]}hasKey(e){return e in this.tags}hasTag(e){return e in this.keys}getKeys(){return this.keys}getTagMap(){return this.tags}getTags(){return Object.values(this.tags)}getPackets(){return this.packets}serialize(){return this.packets.map(e=>e.serialize()).flat()}}},718(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.setHashFunc=function(e){i=e?r:s},t.hashValue=function(e){return i(e)};const n=1099511628211n,a=(1n<<64n)-1n,r=e=>{let t=14695981039346656037n;const r=e=>{if(null===e)return t^=0n,void(t=t*n&a);const s=typeof e;if("number"===s)return t^=BigInt(Math.trunc(e)),void(t=t*n&a);if("string"!==s){if("boolean"===s)return t^=e?1n:0n,void(t=t*n&a);if(Array.isArray(e))for(let t=0;t<e.length;t++)r(e[t]);else if("object"===s){const s=Object.keys(e).sort();for(let i=0;i<s.length;i++){const o=s[i];for(let e=0;e<o.length;e++)t^=BigInt(o.charCodeAt(e)),t=t*n&a;r(e[o])}}}else for(let r=0;r<e.length;r++)t^=BigInt(e.charCodeAt(r)),t=t*n&a};return r(e),t},s=e=>{let t=2166136261;const n=e=>{if(null===e)return void(t^=0);const a=typeof e;if("number"===a)return t^=0|e,void(t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24));if("string"!==a)if("boolean"!==a){if(Array.isArray(e))for(let t=0;t<e.length;t++)n(e[t]);else if("object"===a){const a=Object.keys(e).sort();for(let r=0;r<a.length;r++){const s=a[r];for(let e=0;e<s.length;e++)t^=s.charCodeAt(e),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);n(e[s])}}}else t^=e?1:0;else for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)};return n(e),t>>>0};let i=r},765(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.SonicWSCore=void 0;const a=n(576),r=n(26),s=n(795),i=n(917),o=n(766),c=n(402),d=n(284),l=n(818),u=n(549),h=n(113);class p extends u.Connection{preListen;clientPackets=new a.PacketHolder;serverPackets=new a.PacketHolder;pastKeys=!1;readyListeners=[];bufferHandler;_timers={};asyncData={};asyncMap={};constructor(e,t,n,a){super(e,-1,"LocalSocket",n,a),this.socket=e,this.preListen={},this.invalidPacket=this.invalidPacket.bind(this),this.serverKeyHandler=this.serverKeyHandler.bind(this),this.messageHandler=this.messageHandler.bind(this),this._on("message",this.serverKeyHandler),this._on("close",()=>{this.callMiddleware("onStatusChange",WebSocket.CLOSED);for(const[e,t,n]of Object.values(this._timers))this.clearTimeout(e),n&&t(!0);for(const e of this.clientPackets.getPackets())delete e.lastSent[0];for(const e of this.serverPackets.getPackets())delete e.lastReceived[0]}),this.bufferHandler=t}reading=!1;readQueue=[];async serverKeyHandler(e){if(this.reading)return this.readQueue.push(e);this.reading=!0;const t=await this.bufferHandler(e);if(t.length<3||(0,h.as8String)(t.slice(0,3))!=o.SERVER_SUFFIX)throw this.close(1e3),new Error("The server requested is not a Sonic WS server.");const n=t[3];if(n!=o.VERSION)throw this.close(1e3),new Error(`Version mismatch: ${n>o.VERSION?"client":"server"} is outdated (server: ${n}, client: ${o.VERSION})`);const a=(0,s.inflateNative)(t.subarray(4,t.length)),[i,d]=(0,r.readVarInt)(a,0);this.id=d;const[l,u]=(0,r.readVarInt)(a,i),p=a.subarray(l,l+u);this.clientPackets.holdPackets(c.Packet.deserializeAll(p,!0));const f=a.subarray(l+u,a.length);this.serverPackets.holdPackets(c.Packet.deserializeAll(f,!0)),this.batcher.registerSendPackets(this.clientPackets,this);for(const e of this.serverPackets.getPackets()){const t=this.serverPackets.getKey(e.tag);this.asyncMap[t]=e.async,e.async&&(this.asyncData[t]=[!1,[]])}Object.keys(this.preListen).forEach(e=>this.preListen[e].forEach(t=>{if(!this.serverPackets.hasTag(e))return console.error(new Error(`The server does not send the packet with tag "${e}"!`));this.listen(e,t)})),this.preListen=null,this.pastKeys=!0,this.readyListeners.forEach(e=>e()),this.readyListeners=null,this._off("message",this.serverKeyHandler),this._on("message",this.messageHandler),this.readQueue.forEach(e=>this.messageHandler(e)),this.readQueue=[]}invalidPacket(e){throw console.error(e),new Error("An error occured with data from the server!! This is probably my fault.. make an issue at https://github.com/liwybloc/sonic-ws")}listenLock=!1;packetQueue=[];async listenPacket(e,t,n,a,r){const s=this.listeners[t];if(!s)return console.warn("Warn: No listener for packet "+t);await this.enqueuePacket(e,s,n,a,r),await this.callMiddleware("onReceive_post",t,"string"==typeof e?[e]:e[0])}isAsync(e){return this.asyncMap[e]}async enqueuePacket(e,t,n,a,r){await(0,i.listenPacket)(e,t,this.invalidPacket),await this.triggerNextPacket(n,a,r)}async triggerNextPacket(e,t,n){t?n[0]=!1:this.listenLock=!1,e.length>0&&this.dataHandler(e.shift())}async dataHandler(e){const t=e[0],n=e.slice(1),a=this.isAsync(t);let r,s,i;if(a?(i=this.asyncData[t],r=i[0],s=i[1]):(r=this.listenLock,s=this.packetQueue),r)return void s.push(e);a?i[0]=!0:this.listenLock=!0;const o=this.serverPackets.getTag(t),c=this.serverPackets.getPacket(o);if(await this.callMiddleware("onReceive_pre",c.tag,e,e.length))return;if(c.rereference&&0==n.length)return void 0===c.lastReceived[0]?this.invalidPacket("No previous value to rereference"):void this.listenPacket(c.lastReceived[0],o,s,a,i);if(0==c.dataBatching){const e=c.lastReceived[0]=await c.listen(n,null);return void this.listenPacket(e,o,s,a,i)}const l=await d.BatchHelper.unravelBatch(c,n,null);if("string"==typeof l)return this.invalidPacket(l);l.forEach(e=>this.listenPacket(e,o,s,a,i))}async messageHandler(e){const t=await this.bufferHandler(e);t.length<1||await this.dataHandler(t)}listen(e,t){this.serverPackets.hasTag(e)?(this.listeners[e]??=[]).push(t):console.log("Tag is not available on server: "+e)}raw_onsend(e){this.listeners.send.push(e)}sendQueue=[!1,[],void 0];async send(e,...t){if(await this.callMiddleware("onSend_pre",e,t,Date.now(),performance.now()))return;const[n,a,r]=await(0,i.processPacket)(this.clientPackets,e,t,this.sendQueue,0);0==r.dataBatching?this.raw_send((0,l.toPacketBuffer)(n,a)):this.batcher.batchPacket(n,a),await this.callMiddleware("onSend_post",e,a,a.length)}on_ready(e){this.pastKeys?e():this.readyListeners.push(e)}on_close(e){this._on("close",e)}on(e,t){if(this.socket.readyState!==WebSocket.OPEN)return this.preListen[e]||(this.preListen[e]=[]),void this.preListen[e].push(t);this.listen(e,t)}}t.SonicWSCore=p},766(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.SERVER_SUFFIX_NUMS=t.SERVER_SUFFIX=t.VERSION=void 0;const a=n(113);t.VERSION=22,t.SERVER_SUFFIX="SWS",t.SERVER_SUFFIX_NUMS=(0,a.processCharCodes)(t.SERVER_SUFFIX)},795(__unused_webpack_module,exports,__webpack_require__){var __webpack_dirname__="/";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setNativeCore=setNativeCore,exports.initializeWasmCore=initializeWasmCore,exports.loadNativeCore=loadNativeCore,exports.encodeNative=encodeNative,exports.decodeNative=decodeNative,exports.validateNative=validateNative,exports.encodeNativeObject=encodeNativeObject,exports.decodeNativeObject=decodeNativeObject,exports.validateNativeObject=validateNativeObject,exports.encodeNativeBatch=encodeNativeBatch,exports.decodeNativeBatch=decodeNativeBatch,exports.deflateNative=deflateNative,exports.inflateNative=inflateNative;const PacketType_1=__webpack_require__(319);let loadedCore;function buffer(e){return"undefined"!=typeof Buffer?Buffer.from(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function values(e){return Array.isArray(e)?[...e]:[e]}function assertNativeCore(e){const t=["encodeSigned","decodeSigned","encodeUnsigned","decodeUnsigned","encodeFloats","decodeFloats","encodeStrings","decodeStrings","encodeBooleans","decodeBooleans","encodeRaw","decodeRaw","encodeHex","decodeHex","frameObject","unframeObject","encodeBatch","decodeBatch","deflateRaw","inflateRaw","validateEncoded","validateEnum","validateObject"].filter(t=>"function"!=typeof e[t]);if(t.length>0)throw new Error(`Invalid SonicWS native addon; missing: ${t.join(", ")}`)}function setNativeCore(e){assertNativeCore(e),loadedCore=e}async function initializeWasmCore(){const wasm="undefined"==typeof window?eval("require")("./wasm/node/sonic_ws_core.js"):await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,322));return setNativeCore(wasm),loadedCore}function loadNativeCore(addonPath){if(loadedCore&&!addonPath)return loadedCore;const candidates=addonPath?[addonPath]:["undefined"!=typeof process?process.env.SONIC_WS_CORE_PATH:void 0,`${__webpack_dirname__}/sonic_ws_core.node`,`${__webpack_dirname__}/../../../native/sonic_ws_core.node`].filter(e=>Boolean(e)),failures=[],nodeRequire="undefined"==typeof window?eval("require"):void 0;for(const e of candidates)try{const t=nodeRequire(e);return assertNativeCore(t),addonPath||(loadedCore=t),t}catch(t){failures.push(`${e}: ${t instanceof Error?t.message:String(t)}`)}if("undefined"==typeof window)try{const e=nodeRequire("./wasm/node/sonic_ws_core.js");return assertNativeCore(e),loadedCore=e,e}catch(e){failures.push(`Node WASM fallback: ${e instanceof Error?e.message:String(e)}`)}throw new Error(`SonicWS codec is not initialized. In Node, set SONIC_WS_CORE_PATH; in browsers, await initializeWasmCore().\n${failures.join("\n")}`)}function enumIndex(e,t){const n=e.values.findIndex(e=>e===t||"number"==typeof e&&"number"==typeof t&&Number.isNaN(e)&&Number.isNaN(t));if(n<0)throw new Error(`Value ${String(t)} does not exist in enum ${e.tag}`);return n}function encodeNative(e,t,n,a=loadNativeCore()){switch(e){case PacketType_1.PacketType.NONE:if(null!=t&&(!Array.isArray(t)||0!==t.length))throw new TypeError("NONE only accepts null, undefined, or an empty array");return new Uint8Array(0);case PacketType_1.PacketType.RAW:case PacketType_1.PacketType.JSON:if(!(t instanceof Uint8Array||Array.isArray(t)))throw new TypeError((e===PacketType_1.PacketType.JSON?"JSON wire data":"RAW")+" requires a Uint8Array or number array");return a.encodeRaw(t instanceof Uint8Array?buffer(t):Uint8Array.from(t));case PacketType_1.PacketType.BYTES:case PacketType_1.PacketType.SHORTS:case PacketType_1.PacketType.VARINT:case PacketType_1.PacketType.DELTAS:return a.encodeSigned(e,values(t));case PacketType_1.PacketType.UBYTES:case PacketType_1.PacketType.USHORTS:case PacketType_1.PacketType.UVARINT:return a.encodeUnsigned(e,values(t));case PacketType_1.PacketType.FLOATS:case PacketType_1.PacketType.DOUBLES:return a.encodeFloats(e,values(t));case PacketType_1.PacketType.STRINGS_ASCII:case PacketType_1.PacketType.STRINGS_UTF16:return a.encodeStrings(e,values(t));case PacketType_1.PacketType.BOOLEANS:return a.encodeBooleans(values(t));case PacketType_1.PacketType.HEX:{const e=Array.isArray(t)?t[0]:t;if("string"!=typeof e)throw new TypeError("HEX requires one string");return a.encodeHex(e)}case PacketType_1.PacketType.ENUMS:if(!n)throw new Error("ENUMS requires an EnumPackage");return Uint8Array.from(values(t).map(e=>enumIndex(n,e)));case PacketType_1.PacketType.KEY_EFFECTIVE:throw new Error("KEY_EFFECTIVE is not implemented");default:throw new Error(`Unknown packet type: ${e}`)}}function decodeNative(e,t,n=4294967295,a,r=loadNativeCore()){const s=buffer(t);switch(e){case PacketType_1.PacketType.NONE:if(0!==t.byteLength)throw new Error("NONE packet contains data");return;case PacketType_1.PacketType.RAW:case PacketType_1.PacketType.JSON:return r.decodeRaw(s);case PacketType_1.PacketType.BYTES:case PacketType_1.PacketType.SHORTS:case PacketType_1.PacketType.VARINT:case PacketType_1.PacketType.DELTAS:return r.decodeSigned(e,s);case PacketType_1.PacketType.UBYTES:case PacketType_1.PacketType.USHORTS:case PacketType_1.PacketType.UVARINT:return r.decodeUnsigned(e,s);case PacketType_1.PacketType.FLOATS:case PacketType_1.PacketType.DOUBLES:return r.decodeFloats(e,s);case PacketType_1.PacketType.STRINGS_ASCII:case PacketType_1.PacketType.STRINGS_UTF16:return r.decodeStrings(e,s);case PacketType_1.PacketType.BOOLEANS:return r.decodeBooleans(s,n);case PacketType_1.PacketType.HEX:return r.decodeHex(s);case PacketType_1.PacketType.ENUMS:if(!a)throw new Error("ENUMS requires an EnumPackage");return[...t].map(e=>{if(e>=a.values.length)throw new Error(`Enum index ${e} is out of range`);return a.values[e]});case PacketType_1.PacketType.KEY_EFFECTIVE:throw new Error("KEY_EFFECTIVE is not implemented");default:throw new Error(`Unknown packet type: ${e}`)}}function validateNative(e,t,n,a,r={},s=loadNativeCore()){if(e!==PacketType_1.PacketType.ENUMS)s.validateEncoded(e,buffer(t),n,a,r.compressed??!1,r.batched??!1,r.maxBatchSize);else{if(!r.enumData)throw new Error("ENUMS requires an EnumPackage");s.validateEnum(buffer(t),r.enumData.values.length,n,a)}}function encodeNativeObject(e,t,n=loadNativeCore()){if(t.length!==e.types.length)throw new Error("Object field count does not match schema");let a=0;const r=e.types.map((r,s)=>encodeNative(r,t[s],r===PacketType_1.PacketType.ENUMS?e.enumData?.[a++]:void 0,n));return n.frameObject(r)}function decodeNativeObject(e,t,n=loadNativeCore()){const a=n.unframeObject(buffer(t),e.types.length);let r=0;return a.map((t,a)=>decodeNative(e.types[a],t,e.dataMaxes[a],e.types[a]===PacketType_1.PacketType.ENUMS?e.enumData?.[r++]:void 0,n))}function validateNativeObject(e,t,n=loadNativeCore()){n.validateObject(buffer(t),[...e.types],[...e.dataMins],[...e.dataMaxes],(e.enumData??[]).map(e=>e.values.length))}function encodeNativeBatch(e,t,n=loadNativeCore()){return n.encodeBatch(e.map(buffer),t)}function decodeNativeBatch(e,t,n=0,a,r=loadNativeCore()){const s=Number.isFinite(n)&&n>0?n:0;return r.decodeBatch(buffer(e),t,s,a)}function deflateNative(e,t=loadNativeCore()){return t.deflateRaw(buffer(e))}function inflateNative(e,t,n=loadNativeCore()){return n.inflateRaw(buffer(e),t)}},818(e,t){function n(e,t){const n=[];for(let a=0;a<e.length;a+=t){const r=e.slice(a,a+t);n.push(r)}return n}Object.defineProperty(t,"__esModule",{value:!0}),t.splitArray=n,t.toPacketBuffer=function(e,t){const n=new Uint8Array(1+t.length);return n[0]=e,n.set(t,1),n},t.splitBuffer=function(e,t){return n(Array.from(e),t)},t.stringifyBuffer=function(e){return`<Buffer ${Array.from(e).map(e=>e.toString(16).padStart(2,"0")).join(" ")}>`}},864(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.SET_PACKAGES=t.ENUM_KEY_TO_TAG=t.ENUM_TAG_TO_KEY=t.MAX_ENUM_SIZE=void 0,t.DefineEnum=function(e,n){const a=t.SET_PACKAGES[e];if(a){if(a.values.find((e,t)=>n[t]!=e))throw new Error(`Pre-existing enum package of tag '${e}' is set and different!`);return a}if(n.length>t.MAX_ENUM_SIZE)throw new Error(`An enum can only hold ${t.MAX_ENUM_SIZE} possible values.`);return t.ENUM_TAG_TO_KEY[e]=Object.fromEntries(n.map((e,t)=>[e,t])),t.ENUM_KEY_TO_TAG[e]=Object.fromEntries(n.map((e,t)=>[t,e])),t.SET_PACKAGES[e]=new r.EnumPackage(e,n)},t.WrapEnum=function(e,n){if(!(n in t.ENUM_TAG_TO_KEY[e]))throw new Error(`Value "${n}" does not exist in enum "${e}"`);return t.ENUM_TAG_TO_KEY[e][n]},t.DeWrapEnum=function(e,n){return t.ENUM_KEY_TO_TAG[e][n]};const a=n(26),r=n(14);t.MAX_ENUM_SIZE=a.MAX_BYTE,t.ENUM_TAG_TO_KEY={},t.ENUM_KEY_TO_TAG={},t.SET_PACKAGES={}},917(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.processPacket=c,t.listenPacket=async function(e,t,n){if("string"==typeof e)return n(e);const[a,r]=e;try{if(r&&Array.isArray(a))for(const e of t)await e(...a);else for(const e of t)await e(a)}catch(e){console.error(e),n(e)}},t.CreatePacket=p,t.CreateObjPacket=function(e){let{tag:t,types:n=[],dataMaxes:s,dataMins:i,noDataRange:o=!1,dontSpread:c=!1,autoFlatten:p=!1,validator:f=null,dataBatching:w=0,maxBatchSize:_=10,rateLimit:y=0,enabled:m=!0,async:g=!1,gzipCompression:b=n&&n.includes(r.PacketType.JSON)}=e;if(!t)throw new Error("Tag not selected!");if(!n||0==n.length)throw new Error("Types is set to 0 length");for(const e of n)if(d(e))throw new Error(`Invalid packet type in "${t}" packet: ${e}`);o?(s=Array.from({length:n.length}).map(()=>l),i=Array.from({length:n.length}).map(()=>0)):(null==s?s=Array.from({length:n.length}).map(()=>1):Array.isArray(s)||(s=Array.from({length:n.length}).map(()=>s)),null==i?i=Array.from({length:n.length}).map((e,t)=>s[t]):Array.isArray(i)||(i=Array.from({length:n.length}).map(()=>i)));const v=s.map(u),k=i.map((e,t)=>n[t]==r.PacketType.NONE?0:h(e,v[t])),S=new a.PacketSchema(!0,n,g,k,v,y,c,p,!1,w,_,b);return new a.Packet(t,S,f,m,!1)},t.CreateEnumPacket=function(e){const{tag:t,enumData:n,dataMax:a=1,dataMin:r=0,noDataRange:s=!1,dontSpread:i=!1,validator:o=null,dataBatching:c=0,maxBatchSize:d=10,rateLimit:l=0,enabled:u=!0,async:h=!1}=e;return p({tag:t,type:n,dataMax:a,dataMin:r,noDataRange:s,dontSpread:i,validator:o,dataBatching:c,maxBatchSize:d,rateLimit:l,enabled:u,async:h})},t.CreateKeyEffective=function(e){const{tag:t,count:n=2,validator:a=null,async:r=!1}=e;if(!t)throw new Error("Tag not selected!");if(n<2)throw new Error("Must have at least 2 key consumptions on key effective packet!");throw new Error("Currently W.I.P.")},t.FlattenData=f,t.UnFlattenData=function(e){return e[0]?.map((t,n)=>e.map(e=>e[n]))??[]};const a=n(402),r=n(319),s=n(14),i=n(26),o=n(718);async function c(e,t,n,a,s,d=!1){const l=e.getKey(t),u=e.getPacket(t);return async function(e,t,n,a,r,s,i){if(e[0]&&!s)return new Promise(t=>e[1].push([t,a,r]));e[0]=!0;const o=await i();if(e[1].length>0){const[a,r,s]=e[1].shift();queueMicrotask(async()=>{a(await c(t,r,s,e,n,!0))})}else e[0]=!1;return o}(a,e,s,t,n,d,async()=>{if(u.rereference){if(-1===s)throw new Error("Cannot send a re-referenced packet from the server-wide sender!");const e=(0,o.hashValue)(n);if(u.lastSent[s]===e)return[l,i.EMPTY_UINT8,u];u.lastSent[s]=e}if(u.autoFlatten)n=f(n[0]);else{if(n.length>u.maxSize)throw new Error(`Packet "${t}" only allows ${u.maxSize} values!`);if(n.length<u.minSize)throw new Error(`Packet "${t}" requires at least ${u.minSize} values!`)}if(u.object){if(n=n.map(e=>Array.isArray(e)?e:[e]),!u.autoFlatten){const e=u.dataMin,a=u.dataMax;for(let r=0;r<e.length;r++){if(n[r].length<e[r])throw new Error(`Section ${r+1} of packet "${t}" requires at least ${e[r]} values!`);if(n[r].length>a[r])throw new Error(`Section ${r+1} of packet "${t}" only allows ${a[r]} values!`)}}}else if(u.type!==r.PacketType.JSON){const e=n.find(e=>"object"==typeof e&&null!=e);e&&console.warn(`Passing an array will result in undefined behavior (${JSON.stringify(e)}). Spread the array with ...arr`)}const e=n.length>0?await u.processSend(n):i.EMPTY_UINT8;return[l,e,u]})}function d(e){return!(("number"==typeof e&&e in r.PacketType||e instanceof s.EnumPackage)&&e!=r.PacketType.KEY_EFFECTIVE)}const l=2048383;function u(e){return e<0?(console.warn("Having a data maximum below 0 does not do anything!"),0):e>l?(console.warn("Only 2048383 values can be sent on a type! Uhh make an issue if you want to send more."),l):e}function h(e,t){return e<0?(console.warn("Having a data minimum below 0 does not do anything!"),0):e>t?(console.warn("Data minimum can not be higher than the data maximum!"),t):e}function p(e){let{tag:t,type:n=r.PacketType.NONE,dataMax:s=1,dataMin:i=1,noDataRange:o=!1,dontSpread:c=!1,validator:p=null,dataBatching:f=0,maxBatchSize:w=10,rateLimit:_=0,enabled:y=!0,async:m=!1,gzipCompression:g=n==r.PacketType.JSON,rereference:b=!1}=e;if(!t)throw new Error("Tag not selected!");if(o?(i=b?1:0,s=l):null==i&&(i=n==r.PacketType.NONE?0:s),b&&0==i)throw new Error("Rereference cannot be true if the dataMin is 0");if(d(n))throw new Error(`Invalid packet type: ${n}`);const v=new a.PacketSchema(!1,n,m,h(i,s),u(s),_,c,!1,b,f,w,g);return new a.Packet(t,v,p,y,!1)}function f(e){if(null==e)return[];const t=e[0];if(null==t)return[];if(!Array.isArray(t))throw new Error(`Cannot flatten array: ${e}`);return t.map((t,n)=>e.map(e=>e[n]))??[]}},980(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.decompressJSON=t.compressJSON=void 0;const a=n(818),r=e=>Array.from({length:8},(t,n)=>!!(e&1<<7-n));function s(e){if(!Number.isInteger(e)||e<0)throw new Error(`Invalid JSON variable integer: ${e}`);const t=[];do{let n=127&e;(e>>>=7)>0&&(n|=128),t.push(n)}while(e>0);return t}function i(e,t){let n=0,a=0;for(;;){if(t>=e.length||a>28)throw new Error("Invalid JSON variable integer");const r=e[t++];if(n+=(127&r)<<a,!(128&r))return[t,n];a+=7}}var o;!function(e){e[e.NULL=0]="NULL",e[e.BOOL=1]="BOOL",e[e.INT=2]="INT",e[e.FLOAT=3]="FLOAT",e[e.STRING=4]="STRING",e[e.ARRAY=5]="ARRAY",e[e.OBJECT=6]="OBJECT"}(o||(o={}));const c=e=>{const t=(new TextEncoder).encode(e);return[...s(t.length),...t]},d=(e,t)=>{const[n,a]=i(e,t);return{value:(new TextDecoder).decode(e.subarray(n,n+a)),length:n+a-t}},l=e=>{let t="";for(const n of e)t+=n.toString(2).padStart(3,"0");return(e=>new Uint8Array(e.match(/.{1,8}/g)?.map(e=>parseInt(e.padEnd(8,"0"),2))??[]))(t)},u=(e,t)=>{const n=(e=>Array.from(e,e=>e.toString(2).padStart(8,"0")).join(""))(e),a=[];for(let e=0;e<t;e++)a.push(parseInt(n.slice(3*e,3*e+3),2));return a};t.compressJSON=e=>{const t=[],n=[],r=[],i=e=>{switch(null===e?"null":Array.isArray(e)?"array":typeof e){case"null":r.push(o.NULL);break;case"boolean":r.push(o.BOOL),t.push(e);break;case"number":Number.isInteger(e)?(r.push(o.INT),n.push(...s((e=>e<<1^e>>31)(e)))):(r.push(o.FLOAT),n.push(...function(e){if(Number.isNaN(e))return[127,128,0,1];const t=e<0?1:0;if(0===(e=Math.abs(e)))return[0,0,0,0];const n=Math.floor(Math.log2(e));if(!Number.isFinite(e)||n>127||n<-126)return[t?255:127,128,0,0];const a=(t<<31|n+127<<23|8388607&Math.round((e/2**n-1)*2**23))>>>0;return[a>>>24,a>>>16&255,a>>>8&255,255&a]}(e)));break;case"string":r.push(o.STRING),n.push(...c(e));break;case"array":r.push(o.ARRAY),n.push(...s(e.length));for(const t of e)i(t);break;case"object":{r.push(o.OBJECT);const t=Object.keys(e);n.push(...s(t.length));for(const a of t)n.push(...c(a)),i(e[a]);break}default:throw new Error("Unsupported type")}};i(e);const d=t.length?(0,a.splitArray)(t,8).map(e=>e.reduce((e,t,n)=>e|Number(t)<<7-n,0)):[],u=l(r),h=[...s(d.length),...s(u.length)];return Uint8Array.from([...h,...d.flat(),...u,...n])};t.decompressJSON=e=>{let t=0;const[n,a]=i(e,t);t=n;const[s,c]=i(e,t);t=s;const l=[];for(let n=0;n<a;n++)l.push(...r(e[t++]));let h=0;const p=e.subarray(t,t+c);t+=c;const f=u(p,8*p.length/3);let w=0;const _=n=>{if(n>500)throw new Error("JSON array too deep.");const a=f[w++];switch(a){case o.NULL:return null;case o.BOOL:return l[h++];case o.INT:{const[n,a]=i(e,t);return t=n,(r=a)>>>1^-(1&r)}case o.FLOAT:{const n=function(e){const t=(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0,n=t>>>23&255,a=(0===n?0:1)+(8388607&t)/2**23,r=255===n?0===a?1/0:NaN:a*2**(0===n?-126:n-127);return t>>>31?-r:r}(Array.from(e.subarray(t,t+4)));return t+=4,n}case o.STRING:{const{value:n,length:a}=d(e,t);return t+=a,n}case o.ARRAY:{const[a,r]=i(e,t);t=a;const s=[];for(let e=0;e<r;e++)s.push(_(n+1));return s}case o.OBJECT:{const[a,r]=i(e,t);t=a;const s={};for(let a=0;a<r;a++){const{value:a,length:r}=d(e,t);t+=r,s[a]=_(n+1)}return s}default:throw new Error(`Unknown type ${a}`)}var r};return _(0)}}},__webpack_module_cache__={},hasSymbol,webpackQueues,webpackExports,webpackError,resolveQueue;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e](n,n.exports,__webpack_require__),n.exports}hasSymbol="function"==typeof Symbol,webpackQueues=hasSymbol?Symbol("webpack queues"):"__webpack_queues__",webpackExports=hasSymbol?Symbol("webpack exports"):"__webpack_exports__",webpackError=hasSymbol?Symbol("webpack error"):"__webpack_error__",resolveQueue=e=>{e&&e.d<1&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))},__webpack_require__.a=(e,t,n)=>{var a;n&&((a=[]).d=-1);var r,s,i,o=new Set,c=e.exports,d=new Promise((e,t)=>{i=t,s=e});d[webpackExports]=c,d[webpackQueues]=e=>(a&&e(a),o.forEach(e),d.catch(e=>{})),e.exports=d,t(e=>{var t;r=(e=>e.map(e=>{if(null!==e&&"object"==typeof e){if(e[webpackQueues])return e;if(e.then){var t=[];t.d=0,e.then(e=>{n[webpackExports]=e,resolveQueue(t)},e=>{n[webpackError]=e,resolveQueue(t)});var n={};return n[webpackQueues]=e=>e(t),n}}var a={};return a[webpackQueues]=e=>{},a[webpackExports]=e,a}))(e);var n=()=>r.map(e=>{if(e[webpackError])throw e[webpackError];return e[webpackExports]}),s=new Promise(e=>{(t=()=>e(n)).r=0;var s=e=>e!==a&&!o.has(e)&&(o.add(e),e&&!e.d&&(t.r++,e.push(t)));r.map(e=>e[webpackQueues](s))});return t.r?s:n()},e=>(e?i(d[webpackError]=e):s(c),resolveQueue(a))),a&&a.d<0&&(a.d=0)},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.v=(e,t,n,a)=>{var r=fetch(__webpack_require__.p+"bundle.wasm"),s=()=>r.then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,a)).then(t=>Object.assign(e,t.instance.exports));return r.then(t=>"function"==typeof WebAssembly.instantiateStreaming?WebAssembly.instantiateStreaming(t,a).then(t=>Object.assign(e,t.instance.exports),e=>{if("application/wasm"!==t.headers.get("Content-Type"))return console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e),s();throw e}):s())},(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var t=__webpack_require__.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var a=n.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=n[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})();var __webpack_exports__={};(()=>{const e=__webpack_require__(241),t=__webpack_require__(864),n=__webpack_require__(917),a=__webpack_require__(765),r=__webpack_require__(795);class s extends a.SonicWSCore{static initialize(){return(0,r.initializeWasmCore)()}antiTamperCall=()=>{};constructor(e,t,n=!1){const a=new WebSocket(e,t);if(super(a,async e=>new Uint8Array(await e.data.arrayBuffer()),a.addEventListener.bind(a),a.removeEventListener.bind(a)),n){const e=this,t=a.send.bind(a),n=this.send.bind(this);let r;this.send=async(t,...a)=>(r=e.clientPackets.getKey(t),await n(t,...a)),a.send=n=>n instanceof Uint8Array&&r==n[0]?t(n):(e.antiTamperCall(),void e.close())}}on_tamper(e){this.antiTamperCall=e}WrapEnum(e,n){return(0,t.WrapEnum)(e,n)}DeWrapEnum(e,n){return(0,t.DeWrapEnum)(e,n)}FlattenData(e){return(0,n.FlattenData)(e)}UnFlattenData(e){return(0,n.UnFlattenData)(e)}debugClient=null;OpenDebug(){if(null!=this.debugClient)throw new Error("Debug client has already been opened!");this.debugClient=new e.DebugClient(this)}}window.SonicWS=s})()})();
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sonic-ws-core",
|
|
3
|
+
"description": "Language-neutral SonicWS packet codec core",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"license": "SEE LICENSE IN ../../LICENSE",
|
|
6
|
+
"files": [
|
|
7
|
+
"sonic_ws_core_bg.wasm",
|
|
8
|
+
"sonic_ws_core.js",
|
|
9
|
+
"sonic_ws_core.d.ts"
|
|
10
|
+
],
|
|
11
|
+
"main": "sonic_ws_core.js",
|
|
12
|
+
"types": "sonic_ws_core.d.ts"
|
|
13
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export function decodeBatch(data: Uint8Array, compressed: boolean, max: number, max_output_size?: number | null): Array<any>;
|
|
10
|
+
|
|
11
|
+
export function decodeBooleans(data: Uint8Array, count: number): Array<any>;
|
|
12
|
+
|
|
13
|
+
export function decodeFloats(value: number, data: Uint8Array): Array<any>;
|
|
14
|
+
|
|
15
|
+
export function decodeHex(data: Uint8Array): string;
|
|
16
|
+
|
|
17
|
+
export function decodeRaw(data: Uint8Array): Uint8Array;
|
|
18
|
+
|
|
19
|
+
export function decodeSigned(value: number, data: Uint8Array): Array<any>;
|
|
20
|
+
|
|
21
|
+
export function decodeStrings(value: number, data: Uint8Array): Array<any>;
|
|
22
|
+
|
|
23
|
+
export function decodeUnsigned(value: number, data: Uint8Array): Array<any>;
|
|
24
|
+
|
|
25
|
+
export function deflateRaw(data: Uint8Array): Uint8Array;
|
|
26
|
+
|
|
27
|
+
export function encodeBatch(values: Array<any>, compressed: boolean): Uint8Array;
|
|
28
|
+
|
|
29
|
+
export function encodeBooleans(values: Array<any>): Uint8Array;
|
|
30
|
+
|
|
31
|
+
export function encodeFloats(value: number, values: Array<any>): Uint8Array;
|
|
32
|
+
|
|
33
|
+
export function encodeHex(value: string): Uint8Array;
|
|
34
|
+
|
|
35
|
+
export function encodeRaw(data: Uint8Array): Uint8Array;
|
|
36
|
+
|
|
37
|
+
export function encodeSigned(value: number, values: Array<any>): Uint8Array;
|
|
38
|
+
|
|
39
|
+
export function encodeStrings(value: number, values: Array<any>): Uint8Array;
|
|
40
|
+
|
|
41
|
+
export function encodeUnsigned(value: number, values: Array<any>): Uint8Array;
|
|
42
|
+
|
|
43
|
+
export function frameObject(sectors: Array<any>): Uint8Array;
|
|
44
|
+
|
|
45
|
+
export function inflateRaw(data: Uint8Array, max_output_size?: number | null): Uint8Array;
|
|
46
|
+
|
|
47
|
+
export function unframeObject(data: Uint8Array, count: number): Array<any>;
|
|
48
|
+
|
|
49
|
+
export function validateEncoded(value: number, data: Uint8Array, min: number, max: number, compressed: boolean, batched: boolean, max_batch?: number | null): void;
|
|
50
|
+
|
|
51
|
+
export function validateEnum(data: Uint8Array, size: number, min: number, max: number): void;
|
|
52
|
+
|
|
53
|
+
export function validateObject(data: Uint8Array, kinds: Array<any>, mins: Array<any>, maxes: Array<any>, enum_sizes: Array<any>): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
function e(e,n){return e>>>=0,c().subarray(e/1,e/1+n)}exports.decodeBatch=function(e,n,t,o){const r=b.decodeBatch(e,n,t,i(o)?Number.MAX_SAFE_INTEGER:o>>>0);if(r[2])throw d(r[1]);return d(r[0])},exports.decodeBooleans=function(e,n){const t=b.decodeBooleans(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.decodeFloats=function(e,n){const t=b.decodeFloats(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.decodeHex=function(e){let n,t;try{const i=b.decodeHex(e);var r=i[0],c=i[1];if(i[3])throw r=0,c=0,d(i[2]);return n=r,t=c,o(r,c)}finally{b.__wbindgen_free(n,t,1)}},exports.decodeRaw=function(e){const n=b.decodeRaw(e);if(n[2])throw d(n[1]);return d(n[0])},exports.decodeSigned=function(e,n){const t=b.decodeSigned(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.decodeStrings=function(e,n){const t=b.decodeStrings(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.decodeUnsigned=function(e,n){const t=b.decodeUnsigned(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.deflateRaw=function(e){const n=b.deflateRaw(e);if(n[2])throw d(n[1]);return d(n[0])},exports.encodeBatch=function(e,n){const t=b.encodeBatch(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.encodeBooleans=function(e){const n=b.encodeBooleans(e);if(n[2])throw d(n[1]);return d(n[0])},exports.encodeFloats=function(e,n){const t=b.encodeFloats(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.encodeHex=function(e){const n=_(e,b.__wbindgen_malloc,b.__wbindgen_realloc),t=s,o=b.encodeHex(n,t);if(o[2])throw d(o[1]);return d(o[0])},exports.encodeRaw=function(e){const n=b.encodeRaw(e);if(n[2])throw d(n[1]);return d(n[0])},exports.encodeSigned=function(e,n){const t=b.encodeSigned(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.encodeStrings=function(e,n){const t=b.encodeStrings(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.encodeUnsigned=function(e,n){const t=b.encodeUnsigned(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.frameObject=function(e){const n=b.frameObject(e);if(n[2])throw d(n[1]);return d(n[0])},exports.inflateRaw=function(e,n){const t=b.inflateRaw(e,i(n)?Number.MAX_SAFE_INTEGER:n>>>0);if(t[2])throw d(t[1]);return d(t[0])},exports.unframeObject=function(e,n){const t=b.unframeObject(e,n);if(t[2])throw d(t[1]);return d(t[0])},exports.validateEncoded=function(e,n,t,o,r,c,_){const u=b.validateEncoded(e,n,t,o,r,c,i(_)?Number.MAX_SAFE_INTEGER:_>>>0);if(u[1])throw d(u[0])},exports.validateEnum=function(e,n,t,o){const r=b.validateEnum(e,n,t,o);if(r[1])throw d(r[0])},exports.validateObject=function(e,n,t,o,r){const c=b.validateObject(e,n,t,o,r);if(c[1])throw d(c[0])};let n=null;function t(){return(null===n||!0===n.buffer.detached||void 0===n.buffer.detached&&n.buffer!==b.memory.buffer)&&(n=new DataView(b.memory.buffer)),n}function o(e,n){return function(e,n){return u.decode(c().subarray(e,e+n))}(e>>>0,n)}let r=null;function c(){return null!==r&&0!==r.byteLength||(r=new Uint8Array(b.memory.buffer)),r}function i(e){return null==e}function _(e,n,t){if(void 0===t){const t=f.encode(e),o=n(t.length,1)>>>0;return c().subarray(o,o+t.length).set(t),s=t.length,o}let o=e.length,r=n(o,1)>>>0;const i=c();let _=0;for(;_<o;_++){const n=e.charCodeAt(_);if(n>127)break;i[r+_]=n}if(_!==o){0!==_&&(e=e.slice(_)),r=t(r,o,o=_+3*e.length,1)>>>0;const n=c().subarray(r+_,r+o);_+=f.encodeInto(e,n).written,r=t(r,o,_,1)>>>0}return s=_,r}function d(e){const n=b.__wbindgen_externrefs.get(e);return b.__externref_table_dealloc(e),n}let u=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});u.decode();const f=new TextEncoder;"encodeInto"in f||(f.encodeInto=function(e,n){const t=f.encode(e);return n.set(t),{read:e.length,written:t.length}});let s=0;const a=`${__dirname}/sonic_ws_core_bg.wasm`,l=require("fs").readFileSync(a),w=new WebAssembly.Module(l);let b=new WebAssembly.Instance(w,{__proto__:null,"./sonic_ws_core_bg.js":{__proto__:null,__wbg___wbindgen_boolean_get_fa956cfa2d1bd751:function(e){const n="boolean"==typeof e?e:void 0;return i(n)?16777215:n?1:0},__wbg___wbindgen_number_get_394265ed1e1b84ee:function(e,n){const o="number"==typeof n?n:void 0;t().setFloat64(e+8,i(o)?0:o,!0),t().setInt32(e+0,!i(o),!0)},__wbg___wbindgen_string_get_b0ca35b86a603356:function(e,n){const o="string"==typeof n?n:void 0;var r=i(o)?0:_(o,b.__wbindgen_malloc,b.__wbindgen_realloc),c=s;t().setInt32(e+4,c,!0),t().setInt32(e+0,r,!0)},__wbg___wbindgen_throw_344f42d3211c4765:function(e,n){throw new Error(o(e,n))},__wbg_get_unchecked_6e0ad6d2a41b06f6:function(e,n){return e[n>>>0]},__wbg_length_1f0964f4a5e2c6d8:function(e){return e.length},__wbg_length_370319915dc99107:function(e){return e.length},__wbg_new_32b398fb48b6d94a:function(){return new Array},__wbg_new_cd45aabdf6073e84:function(e){return new Uint8Array(e)},__wbg_new_from_slice_77cdfb7977362f3c:function(n,t){return new Uint8Array(e(n,t))},__wbg_prototypesetcall_4770620bbe4688a0:function(n,t,o){Uint8Array.prototype.set.call(e(n,t),o)},__wbg_push_d2ae3af0c1217ae6:function(e,n){return e.push(n)},__wbindgen_cast_0000000000000001:function(e){return e},__wbindgen_cast_0000000000000002:function(e,n){return o(e,n)},__wbindgen_init_externref_table:function(){const e=b.__wbindgen_externrefs,n=e.grow(4);e.set(0,void 0),e.set(n+0,void 0),e.set(n+1,null),e.set(n+2,!0),e.set(n+3,!1)}}}).exports;b.__wbindgen_start();
|
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export const memory: WebAssembly.Memory;
|
|
9
|
+
export const decodeBatch: (a: any, b: number, c: number, d: number) => [number, number, number];
|
|
10
|
+
export const decodeBooleans: (a: any, b: number) => [number, number, number];
|
|
11
|
+
export const decodeFloats: (a: number, b: any) => [number, number, number];
|
|
12
|
+
export const decodeHex: (a: any) => [number, number, number, number];
|
|
13
|
+
export const decodeRaw: (a: any) => [number, number, number];
|
|
14
|
+
export const decodeSigned: (a: number, b: any) => [number, number, number];
|
|
15
|
+
export const decodeStrings: (a: number, b: any) => [number, number, number];
|
|
16
|
+
export const decodeUnsigned: (a: number, b: any) => [number, number, number];
|
|
17
|
+
export const deflateRaw: (a: any) => [number, number, number];
|
|
18
|
+
export const encodeBatch: (a: any, b: number) => [number, number, number];
|
|
19
|
+
export const encodeBooleans: (a: any) => [number, number, number];
|
|
20
|
+
export const encodeFloats: (a: number, b: any) => [number, number, number];
|
|
21
|
+
export const encodeHex: (a: number, b: number) => [number, number, number];
|
|
22
|
+
export const encodeRaw: (a: any) => [number, number, number];
|
|
23
|
+
export const encodeSigned: (a: number, b: any) => [number, number, number];
|
|
24
|
+
export const encodeStrings: (a: number, b: any) => [number, number, number];
|
|
25
|
+
export const encodeUnsigned: (a: number, b: any) => [number, number, number];
|
|
26
|
+
export const frameObject: (a: any) => [number, number, number];
|
|
27
|
+
export const inflateRaw: (a: any, b: number) => [number, number, number];
|
|
28
|
+
export const unframeObject: (a: any, b: number) => [number, number, number];
|
|
29
|
+
export const validateEncoded: (a: number, b: any, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
30
|
+
export const validateEnum: (a: any, b: number, c: number, d: number) => [number, number];
|
|
31
|
+
export const validateObject: (a: any, b: any, c: any, d: any, e: any) => [number, number];
|
|
32
|
+
export const __wbindgen_malloc: (a: number, b: number) => number;
|
|
33
|
+
export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
34
|
+
export const __wbindgen_externrefs: WebAssembly.Table;
|
|
35
|
+
export const __externref_table_dealloc: (a: number) => void;
|
|
36
|
+
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
37
|
+
export const __wbindgen_start: () => void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sonic-ws-core",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"description": "Language-neutral SonicWS packet codec core",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"license": "SEE LICENSE IN ../../LICENSE",
|
|
7
|
+
"files": [
|
|
8
|
+
"sonic_ws_core_bg.wasm",
|
|
9
|
+
"sonic_ws_core.js",
|
|
10
|
+
"sonic_ws_core_bg.js",
|
|
11
|
+
"sonic_ws_core.d.ts"
|
|
12
|
+
],
|
|
13
|
+
"main": "sonic_ws_core.js",
|
|
14
|
+
"types": "sonic_ws_core.d.ts",
|
|
15
|
+
"sideEffects": [
|
|
16
|
+
"./sonic_ws_core.js",
|
|
17
|
+
"./snippets/*"
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export function decodeBatch(data: Uint8Array, compressed: boolean, max: number, max_output_size?: number | null): Array<any>;
|
|
10
|
+
|
|
11
|
+
export function decodeBooleans(data: Uint8Array, count: number): Array<any>;
|
|
12
|
+
|
|
13
|
+
export function decodeFloats(value: number, data: Uint8Array): Array<any>;
|
|
14
|
+
|
|
15
|
+
export function decodeHex(data: Uint8Array): string;
|
|
16
|
+
|
|
17
|
+
export function decodeRaw(data: Uint8Array): Uint8Array;
|
|
18
|
+
|
|
19
|
+
export function decodeSigned(value: number, data: Uint8Array): Array<any>;
|
|
20
|
+
|
|
21
|
+
export function decodeStrings(value: number, data: Uint8Array): Array<any>;
|
|
22
|
+
|
|
23
|
+
export function decodeUnsigned(value: number, data: Uint8Array): Array<any>;
|
|
24
|
+
|
|
25
|
+
export function deflateRaw(data: Uint8Array): Uint8Array;
|
|
26
|
+
|
|
27
|
+
export function encodeBatch(values: Array<any>, compressed: boolean): Uint8Array;
|
|
28
|
+
|
|
29
|
+
export function encodeBooleans(values: Array<any>): Uint8Array;
|
|
30
|
+
|
|
31
|
+
export function encodeFloats(value: number, values: Array<any>): Uint8Array;
|
|
32
|
+
|
|
33
|
+
export function encodeHex(value: string): Uint8Array;
|
|
34
|
+
|
|
35
|
+
export function encodeRaw(data: Uint8Array): Uint8Array;
|
|
36
|
+
|
|
37
|
+
export function encodeSigned(value: number, values: Array<any>): Uint8Array;
|
|
38
|
+
|
|
39
|
+
export function encodeStrings(value: number, values: Array<any>): Uint8Array;
|
|
40
|
+
|
|
41
|
+
export function encodeUnsigned(value: number, values: Array<any>): Uint8Array;
|
|
42
|
+
|
|
43
|
+
export function frameObject(sectors: Array<any>): Uint8Array;
|
|
44
|
+
|
|
45
|
+
export function inflateRaw(data: Uint8Array, max_output_size?: number | null): Uint8Array;
|
|
46
|
+
|
|
47
|
+
export function unframeObject(data: Uint8Array, count: number): Array<any>;
|
|
48
|
+
|
|
49
|
+
export function validateEncoded(value: number, data: Uint8Array, min: number, max: number, compressed: boolean, batched: boolean, max_batch?: number | null): void;
|
|
50
|
+
|
|
51
|
+
export function validateEnum(data: Uint8Array, size: number, min: number, max: number): void;
|
|
52
|
+
|
|
53
|
+
export function validateObject(data: Uint8Array, kinds: Array<any>, mins: Array<any>, maxes: Array<any>, enum_sizes: Array<any>): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import*as e from"./sonic_ws_core_bg.wasm";import{__wbg_set_wasm as d}from"./sonic_ws_core_bg.js";d(e),e.__wbindgen_start();export{decodeBatch,decodeBooleans,decodeFloats,decodeHex,decodeRaw,decodeSigned,decodeStrings,decodeUnsigned,deflateRaw,encodeBatch,encodeBooleans,encodeFloats,encodeHex,encodeRaw,encodeSigned,encodeStrings,encodeUnsigned,frameObject,inflateRaw,unframeObject,validateEncoded,validateEnum,validateObject}from"./sonic_ws_core_bg.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export function decodeBatch(e,n,t,o){const r=w.decodeBatch(e,n,t,i(o)?Number.MAX_SAFE_INTEGER:o>>>0);if(r[2])throw f(r[1]);return f(r[0])}export function decodeBooleans(e,n){const t=w.decodeBooleans(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function decodeFloats(e,n){const t=w.decodeFloats(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function decodeHex(e){let n,t;try{const i=w.decodeHex(e);var r=i[0],c=i[1];if(i[3])throw r=0,c=0,f(i[2]);return n=r,t=c,o(r,c)}finally{w.__wbindgen_free(n,t,1)}}export function decodeRaw(e){const n=w.decodeRaw(e);if(n[2])throw f(n[1]);return f(n[0])}export function decodeSigned(e,n){const t=w.decodeSigned(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function decodeStrings(e,n){const t=w.decodeStrings(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function decodeUnsigned(e,n){const t=w.decodeUnsigned(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function deflateRaw(e){const n=w.deflateRaw(e);if(n[2])throw f(n[1]);return f(n[0])}export function encodeBatch(e,n){const t=w.encodeBatch(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function encodeBooleans(e){const n=w.encodeBooleans(e);if(n[2])throw f(n[1]);return f(n[0])}export function encodeFloats(e,n){const t=w.encodeFloats(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function encodeHex(e){const n=d(e,w.__wbindgen_malloc,w.__wbindgen_realloc),t=l,o=w.encodeHex(n,t);if(o[2])throw f(o[1]);return f(o[0])}export function encodeRaw(e){const n=w.encodeRaw(e);if(n[2])throw f(n[1]);return f(n[0])}export function encodeSigned(e,n){const t=w.encodeSigned(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function encodeStrings(e,n){const t=w.encodeStrings(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function encodeUnsigned(e,n){const t=w.encodeUnsigned(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function frameObject(e){const n=w.frameObject(e);if(n[2])throw f(n[1]);return f(n[0])}export function inflateRaw(e,n){const t=w.inflateRaw(e,i(n)?Number.MAX_SAFE_INTEGER:n>>>0);if(t[2])throw f(t[1]);return f(t[0])}export function unframeObject(e,n){const t=w.unframeObject(e,n);if(t[2])throw f(t[1]);return f(t[0])}export function validateEncoded(e,n,t,o,r,c,d){const u=w.validateEncoded(e,n,t,o,r,c,i(d)?Number.MAX_SAFE_INTEGER:d>>>0);if(u[1])throw f(u[0])}export function validateEnum(e,n,t,o){const r=w.validateEnum(e,n,t,o);if(r[1])throw f(r[0])}export function validateObject(e,n,t,o,r){const c=w.validateObject(e,n,t,o,r);if(c[1])throw f(c[0])}export function __wbg___wbindgen_boolean_get_fa956cfa2d1bd751(e){const n="boolean"==typeof e?e:void 0;return i(n)?16777215:n?1:0}export function __wbg___wbindgen_number_get_394265ed1e1b84ee(e,n){const o="number"==typeof n?n:void 0;t().setFloat64(e+8,i(o)?0:o,!0),t().setInt32(e+0,!i(o),!0)}export function __wbg___wbindgen_string_get_b0ca35b86a603356(e,n){const o="string"==typeof n?n:void 0;var r=i(o)?0:d(o,w.__wbindgen_malloc,w.__wbindgen_realloc),c=l;t().setInt32(e+4,c,!0),t().setInt32(e+0,r,!0)}export function __wbg___wbindgen_throw_344f42d3211c4765(e,n){throw new Error(o(e,n))}export function __wbg_get_unchecked_6e0ad6d2a41b06f6(e,n){return e[n>>>0]}export function __wbg_length_1f0964f4a5e2c6d8(e){return e.length}export function __wbg_length_370319915dc99107(e){return e.length}export function __wbg_new_32b398fb48b6d94a(){return new Array}export function __wbg_new_cd45aabdf6073e84(e){return new Uint8Array(e)}export function __wbg_new_from_slice_77cdfb7977362f3c(n,t){return new Uint8Array(e(n,t))}export function __wbg_prototypesetcall_4770620bbe4688a0(n,t,o){Uint8Array.prototype.set.call(e(n,t),o)}export function __wbg_push_d2ae3af0c1217ae6(e,n){return e.push(n)}export function __wbindgen_cast_0000000000000001(e){return e}export function __wbindgen_cast_0000000000000002(e,n){return o(e,n)}export function __wbindgen_init_externref_table(){const e=w.__wbindgen_externrefs,n=e.grow(4);e.set(0,void 0),e.set(n+0,void 0),e.set(n+1,null),e.set(n+2,!0),e.set(n+3,!1)}function e(e,n){return e>>>=0,c().subarray(e/1,e/1+n)}let n=null;function t(){return(null===n||!0===n.buffer.detached||void 0===n.buffer.detached&&n.buffer!==w.memory.buffer)&&(n=new DataView(w.memory.buffer)),n}function o(e,n){return function(e,n){a+=n,a>=_&&(u=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),u.decode(),a=n);return u.decode(c().subarray(e,e+n))}(e>>>0,n)}let r=null;function c(){return null!==r&&0!==r.byteLength||(r=new Uint8Array(w.memory.buffer)),r}function i(e){return null==e}function d(e,n,t){if(void 0===t){const t=s.encode(e),o=n(t.length,1)>>>0;return c().subarray(o,o+t.length).set(t),l=t.length,o}let o=e.length,r=n(o,1)>>>0;const i=c();let d=0;for(;d<o;d++){const n=e.charCodeAt(d);if(n>127)break;i[r+d]=n}if(d!==o){0!==d&&(e=e.slice(d)),r=t(r,o,o=d+3*e.length,1)>>>0;const n=c().subarray(r+d,r+o);d+=s.encodeInto(e,n).written,r=t(r,o,d,1)>>>0}return l=d,r}function f(e){const n=w.__wbindgen_externrefs.get(e);return w.__externref_table_dealloc(e),n}let u=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});u.decode();const _=2146435072;let a=0;const s=new TextEncoder;"encodeInto"in s||(s.encodeInto=function(e,n){const t=s.encode(e);return n.set(t),{read:e.length,written:t.length}});let w,l=0;export function __wbg_set_wasm(e){w=e}
|
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Lily (liwybloc)
|
|
3
|
+
* License-Identifier: LicenseRef-Lily-Personal-NonCommercial-2026
|
|
4
|
+
* See LICENSE for personal, non-commercial license terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export const memory: WebAssembly.Memory;
|
|
9
|
+
export const decodeBatch: (a: any, b: number, c: number, d: number) => [number, number, number];
|
|
10
|
+
export const decodeBooleans: (a: any, b: number) => [number, number, number];
|
|
11
|
+
export const decodeFloats: (a: number, b: any) => [number, number, number];
|
|
12
|
+
export const decodeHex: (a: any) => [number, number, number, number];
|
|
13
|
+
export const decodeRaw: (a: any) => [number, number, number];
|
|
14
|
+
export const decodeSigned: (a: number, b: any) => [number, number, number];
|
|
15
|
+
export const decodeStrings: (a: number, b: any) => [number, number, number];
|
|
16
|
+
export const decodeUnsigned: (a: number, b: any) => [number, number, number];
|
|
17
|
+
export const deflateRaw: (a: any) => [number, number, number];
|
|
18
|
+
export const encodeBatch: (a: any, b: number) => [number, number, number];
|
|
19
|
+
export const encodeBooleans: (a: any) => [number, number, number];
|
|
20
|
+
export const encodeFloats: (a: number, b: any) => [number, number, number];
|
|
21
|
+
export const encodeHex: (a: number, b: number) => [number, number, number];
|
|
22
|
+
export const encodeRaw: (a: any) => [number, number, number];
|
|
23
|
+
export const encodeSigned: (a: number, b: any) => [number, number, number];
|
|
24
|
+
export const encodeStrings: (a: number, b: any) => [number, number, number];
|
|
25
|
+
export const encodeUnsigned: (a: number, b: any) => [number, number, number];
|
|
26
|
+
export const frameObject: (a: any) => [number, number, number];
|
|
27
|
+
export const inflateRaw: (a: any, b: number) => [number, number, number];
|
|
28
|
+
export const unframeObject: (a: any, b: number) => [number, number, number];
|
|
29
|
+
export const validateEncoded: (a: number, b: any, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
30
|
+
export const validateEnum: (a: any, b: number, c: number, d: number) => [number, number];
|
|
31
|
+
export const validateObject: (a: any, b: any, c: any, d: any, e: any) => [number, number];
|
|
32
|
+
export const __wbindgen_malloc: (a: number, b: number) => number;
|
|
33
|
+
export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
34
|
+
export const __wbindgen_externrefs: WebAssembly.Table;
|
|
35
|
+
export const __externref_table_dealloc: (a: number) => void;
|
|
36
|
+
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
37
|
+
export const __wbindgen_start: () => void;
|
package/package.json
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sonic-ws",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Ultra-lightweight, high-performance, and bandwidth efficient websocket library",
|
|
5
5
|
"main": "dist/ts/index.js",
|
|
6
6
|
"types": "dist/ts/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/ts/**/*",
|
|
9
|
+
"bundled/bundle.js",
|
|
10
|
+
"bundled/bundle.wasm",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE"
|
|
13
|
+
],
|
|
7
14
|
"scripts": {
|
|
8
15
|
"webpack": "webpack --mode production",
|
|
9
16
|
"build_wasm_browser": "wasm-pack build --release --target bundler --out-dir ../ts/native/wasm/pkg --out-name sonic_ws_core ./src/core --features wasm --no-default-features",
|
|
10
17
|
"build_wasm_node": "wasm-pack build --release --target nodejs --out-dir ../ts/native/wasm/node --out-name sonic_ws_core ./src/core --features wasm --no-default-features",
|
|
11
18
|
"build_wasm": "npm run build_wasm_browser && npm run build_wasm_node",
|
|
12
|
-
"build_web": "npm run build_wasm_browser && tsc --moduleResolution nodenext --module nodenext --outDir ./dist/ts src/ts/ws/client/browser/ClientBrowser.ts && cpy \"src/ts/native/wasm/pkg/*\" dist/ts/native/wasm/pkg --flat && npm run webpack",
|
|
13
|
-
"build_node": "npm run build_wasm && rimraf ./dist/ts && tsc -d && cpy \"src/ts/native/wasm/node/*\" dist/ts/native/wasm/node --flat",
|
|
19
|
+
"build_web": "npm run build_wasm_browser && tsc --moduleResolution nodenext --module nodenext --outDir ./dist/ts src/ts/ws/client/browser/ClientBrowser.ts && cpy \"src/ts/native/wasm/pkg/*\" dist/ts/native/wasm/pkg --flat && rimraf ./dist/ts/native/wasm/pkg/.gitignore && npm run webpack",
|
|
20
|
+
"build_node": "npm run build_wasm && rimraf ./dist/ts && tsc -d && cpy \"src/ts/native/wasm/node/*\" dist/ts/native/wasm/node --flat && rimraf ./dist/ts/native/wasm/node/.gitignore",
|
|
14
21
|
"build": "npm run build_node && npm run build_web && rimraf ./dist/ts/ws/client/browser && rimraf ./dist/ts/ws/debug/DebugClient.d.ts && rimraf ./dist/ts/ws/debug/DebugClient.js && node minify",
|
|
15
22
|
"test_web": "npm run build && node tests/test_web.mjs",
|
|
16
23
|
"test_node": "npm --prefix src/core/tests/typescript run build:native && npm run build_node && node tests/test_node.mjs",
|
|
17
|
-
"
|
|
24
|
+
"prepack": "npm run build",
|
|
25
|
+
"publish": "rimraf ./release/SonicWS_bundle.js ./release/SonicWS_core.wasm && cp ./bundled/bundle.js ./release/bundle.js && cp ./bundled/bundle.wasm ./release/bundle.wasm"
|
|
18
26
|
},
|
|
19
27
|
"repository": {
|
|
20
28
|
"type": "git",
|