@liascript/exporter
Version:
A generic exporter for LiaScript
1 lines • 8.71 kB
JavaScript
!function(e,t,n,s,r){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof o[s]&&o[s],c=i.cache||{},l="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!c[t]){if(!e[t]){var r="function"==typeof o[s]&&o[s];if(!n&&r)return r(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var a=new Error("Cannot find module '"+t+"'");throw a.code="MODULE_NOT_FOUND",a}d.resolve=function(n){var s=e[t][1][n];return null!=s?s:n},d.cache={};var h=c[t]=new u.Module(t);e[t][0].call(h.exports,d,h,h.exports,this)}return c[t].exports;function d(e){var t=d.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=c,u.parent=i,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return o[s]}}),o[s]=u;for(var a=0;a<t.length;a++)u(t[a])}({"9Ro3S":[function(e,t,n){var s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(n),s.export(n,"Sync",(()=>c));var r=e("../Base/index"),o=e("../../../../node_modules/y-generic/dist/providers/websocket/index"),i=e("y-generic");class c extends r.Sync{syncFallbackTimer=null;destroy(){null!==this.syncFallbackTimer&&(clearTimeout(this.syncFallbackTimer),this.syncFallbackTimer=null),super.destroy(),this.provider?.disconnect()}async connect(e){if(super.connect(e),console.warn("WebSocket sync is experimental. Please report any issues you encounter.",e.config),this.serverUrl=e.config?.url,!this.serverUrl)return this.sendDisconnectError("You have to provide a WebSocket server URL.");this.init(!0)}init(e,t){const n=this.uniqueID(this.password);if(e&&n){this.transport=new(0,o.WebSocketTransport),this.provider=new(0,i.GenericProvider)(this.db.doc,this.transport,{verifyUpdates:!1}),this.db.setAwareness(this.provider.awareness);let e=!1;const t=()=>{e||(e=!0,null!==this.syncFallbackTimer&&(clearTimeout(this.syncFallbackTimer),this.syncFallbackTimer=null),this.sendConnect())};this.provider.on("synced",(e=>{console.log("WebSocket: document synchronized",e.synced),t()})),this.provider.on("status",(e=>{const n=e.state;console.log(`WebSocket status: ${n}`),"connected"===n?this.syncFallbackTimer=setTimeout((()=>{console.log("WebSocket: sync fallback, proceeding as first peer"),t()}),2e3):"disconnected"===n&&console.warn("WebSocket: disconnected")})),this.provider.pubsub.subscribe("*",((e,t)=>{this.onReceive?.(t,e)})),this.provider.connect({serverUrl:this.serverUrl,room:n})}else{let e="WebSocket unknown error";t&&(e="Could not connect: "+t),this.sendDisconnectError(e)}}pubsubSend(e,t){this.provider&&(this.provider.pubsub.publish(e,t),this.replyOnReceive&&this.onReceive?.(e,t))}}},{"../Base/index":"2cTju","../../../../node_modules/y-generic/dist/providers/websocket/index":"dJgmW","y-generic":"3M9RT","@parcel/transformer-js/src/esmodule-helpers.js":"XTfsy"}],dJgmW:[function(e,t,n){var s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(n),s.export(n,"WebSocketTransport",(()=>i));const r=(()=>{const e=new Uint32Array(256);for(let t=0;t<256;t++){let n=t;for(let e=0;e<8;e++)n=1&n?3988292384^n>>>1:n>>>1;e[t]=n}return e})();function o(e){const t=function(e){let t=4294967295;for(let n=0;n<e.length;n++)t=t>>>8^r[255&(t^e[n])];return(4294967295^t)>>>0}(e),n=new Uint8Array(4+e.length);return n[0]=t>>>24&255,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n.set(e,4),n}class i{constructor(){this.ws=null,this.config=null,this._isConnected=!1,this.debug=!1,this.reconnectAttempts=0,this.intentionalDisconnect=!1,this.messageQueue=[],this.receivedBuffer=[]}get isConnected(){return this._isConnected}async connect(e){if(this.config=e,this.debug=e.debug??!1,this.intentionalDisconnect=!1,!e.serverUrl)throw new Error("WebSocket serverUrl is required");if(!e.room)throw new Error("Room name is required");let t=e.serverUrl;return t.endsWith("/")&&(t=t.slice(0,-1)),t=`${t}/${encodeURIComponent(e.room)}`,this.log(`Connecting to WebSocket server: ${t}`),new Promise(((n,s)=>{try{this.ws=new WebSocket(t,e.protocols),this.ws.binaryType="arraybuffer";const r=setTimeout((()=>{this.ws&&this.ws.readyState!==WebSocket.OPEN&&(this.ws.close(),s(new Error("WebSocket connection timeout")))}),1e4);this.ws.onopen=()=>{clearTimeout(r),this._isConnected=!0,this.reconnectAttempts=0,this.log(`✅ WebSocket connected to room: ${e.room}`),this.flushMessageQueue(),n()},this.ws.onmessage=e=>{this.handleMessage(e.data)},this.ws.onerror=e=>{clearTimeout(r),this.log("❌ WebSocket error:",e),this._isConnected||s(new Error("WebSocket connection failed"))},this.ws.onclose=t=>{clearTimeout(r),this._isConnected=!1,this.log(`WebSocket closed: code=${t.code}, reason=${t.reason||"none"}`),!this.intentionalDisconnect&&(e.autoReconnect??1)&&this.attemptReconnect()}}catch(e){s(e)}}))}disconnect(){this.intentionalDisconnect=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=void 0),this.ws&&(this.log("Disconnecting from WebSocket..."),this.ws.close(1e3,"Client disconnect"),this.ws=null),this._isConnected=!1}send(e){if(!this.ws||this.ws.readyState!==WebSocket.OPEN)return this.log("⚠️ WebSocket not ready, queueing message"),void this.messageQueue.push(e);try{const t=function(e){return e.length>=4?e.subarray(4):e}(e);this.ws.send(t),this.log(`📤 Sent ${t.length} bytes (${e.length} with header)`)}catch(e){this.log("❌ Send error:",e)}}onMessage(e){if(this.messageCallback=e,this.receivedBuffer.length>0){this.log(`📦 Flushing ${this.receivedBuffer.length} buffered received messages`);for(const t of this.receivedBuffer)e(t);this.receivedBuffer=[]}return()=>{this.messageCallback=void 0}}handleMessage(e){try{if("string"==typeof e)return void this.log("📨 Received text message:",e);const t=o(new Uint8Array(e));this.log(`📨 Received ${t.length-4} bytes`),this.messageCallback?this.messageCallback(t):(this.log("⏳ Buffering message (callback not yet registered)"),this.receivedBuffer.push(t))}catch(e){this.log("❌ Error handling message:",e)}}flushMessageQueue(){if(0!==this.messageQueue.length){this.log(`📦 Flushing ${this.messageQueue.length} queued messages`);for(const e of this.messageQueue)this.send(e);this.messageQueue=[]}}attemptReconnect(){if(!this.config)return;const e=this.config.maxReconnectAttempts??0;if(e>0&&this.reconnectAttempts>=e)return void this.log(`❌ Max reconnection attempts (${e}) reached`);this.reconnectAttempts++;const t=this.config.reconnectDelay??2e3;this.log(`🔄 Attempting reconnection #${this.reconnectAttempts} in ${t}ms...`),this.reconnectTimer=setTimeout((async()=>{try{await this.connect(this.config),this.log("✅ Reconnected successfully")}catch(e){this.log("❌ Reconnection failed:",e)}}),t)}log(e,...t){this.debug&&console.log(`[WebSocketTransport] ${e}`,...t)}}},{"@parcel/transformer-js/src/esmodule-helpers.js":"XTfsy"}],fDdlt:[function(e,t,n){var s,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function l(e){if(s===setTimeout)return setTimeout(e,0);if((s===i||!s)&&setTimeout)return s=setTimeout,setTimeout(e,0);try{return s(e,0)}catch(t){try{return s.call(null,e,0)}catch(t){return s.call(this,e,0)}}}!function(){try{s="function"==typeof setTimeout?setTimeout:i}catch(e){s=i}try{r="function"==typeof clearTimeout?clearTimeout:c}catch(e){r=c}}();var u,a=[],h=!1,d=-1;function f(){h&&u&&(h=!1,u.length?a=u.concat(a):d=-1,a.length&&g())}function g(){if(!h){var e=l(f);h=!0;for(var t=a.length;t;){for(u=a,a=[];++d<t;)u&&u[d].run();d=-1,t=a.length}u=null,h=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===c||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function p(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];a.push(new m(e,t)),1!==a.length||h||l(g)},m.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=p,o.addListener=p,o.once=p,o.off=p,o.removeListener=p,o.removeAllListeners=p,o.emit=p,o.prependListener=p,o.prependOnceListener=p,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}]},[],0,"parcelRequire55a5");