@univerjs-pro/collaboration-transport-node 1.0.0-insiders.20260727-46ed76c

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.
@@ -0,0 +1,2 @@
1
+ export { createNodeTransport, NodeTransportError, } from "./transport.js";
2
+ export type { INodeTransport, NodeHttpTransportContext, NodeTransportConnection, NodeTransportContext, NodeTransportErrorCode, NodeTransportMiddleware, NodeTransportMiddlewareObject, NodeTransportNext, NodeTransportOptions, NodeWebSocketCloseTransportContext, NodeWebSocketMessageTransportContext, NodeWebSocketOpenTransportContext, TransportDisposable, TransportCustomData, } from "./transport.js";
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ 'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['NodeTransportError']=exports['createNodeTransport']=void 0x0;var transport_js_1=require('./transport.js');Object['defineProperty'](exports,'createNodeTransport',{'enumerable':!![],'get':function(){return transport_js_1['createNodeTransport'];}}),Object['defineProperty'](exports,'NodeTransportError',{'enumerable':!![],'get':function(){return transport_js_1['NodeTransportError'];}});
@@ -0,0 +1,6 @@
1
+ import type { NodeTransportContext, NodeTransportMiddleware, NodeTransportMiddlewareObject } from "./transport.js";
2
+ export interface MiddlewareEntry {
3
+ readonly value: NodeTransportMiddleware | NodeTransportMiddlewareObject;
4
+ disposed: boolean;
5
+ }
6
+ export declare function runTransportMiddleware(entries: readonly MiddlewareEntry[], context: NodeTransportContext): Promise<void>;
@@ -0,0 +1 @@
1
+ 'use strict';const _0x4b2bc0=_0x4396;(function(_0x265527,_0x4f18be){const _0xffa222=_0x4396,_0x5a4f8f=_0x265527();while(!![]){try{const _0x372fb6=parseInt(_0xffa222(0x18c))/0x1+parseInt(_0xffa222(0x192))/0x2+-parseInt(_0xffa222(0x19b))/0x3+parseInt(_0xffa222(0x196))/0x4*(parseInt(_0xffa222(0x18d))/0x5)+parseInt(_0xffa222(0x194))/0x6*(parseInt(_0xffa222(0x19a))/0x7)+-parseInt(_0xffa222(0x18e))/0x8+-parseInt(_0xffa222(0x195))/0x9*(parseInt(_0xffa222(0x198))/0xa);if(_0x372fb6===_0x4f18be)break;else _0x5a4f8f['push'](_0x5a4f8f['shift']());}catch(_0x4443a0){_0x5a4f8f['push'](_0x5a4f8f['shift']());}}}(_0x9520,0x3c974));Object[_0x4b2bc0(0x18b)](exports,_0x4b2bc0(0x190),{'value':!![]}),exports['runTransportMiddleware']=runTransportMiddleware;function _0x4396(_0x625231,_0x1d32b0){_0x625231=_0x625231-0x18b;const _0x952032=_0x9520();let _0x4396ae=_0x952032[_0x625231];return _0x4396ae;}function handlerOf(_0x2a2882){const _0x254a8c=_0x4b2bc0;return typeof _0x2a2882===_0x254a8c(0x199)?_0x2a2882:_0x2a2882[_0x254a8c(0x193)][_0x254a8c(0x18f)](_0x2a2882);}function _0x9520(){const _0x5d55a0=['bind','__esModule','disposed','655264snYgUs','handle','133698qxhwFX','3818223JZAbal','4408LhQjND','Transport\x20middleware\x20called\x20next()\x20more\x20than\x20once','10WVmbUW','function','147UtbvQp','1267215jBPRqF','filter','defineProperty','142249KZrTZX','1535KjOEZO','1450448zseIlD'];_0x9520=function(){return _0x5d55a0;};return _0x9520();}async function runTransportMiddleware(_0x2b2851,_0x23baf2){const _0x30c952=_0x4b2bc0,_0x164e1a=_0x2b2851[_0x30c952(0x19c)](_0x956f0a=>!_0x956f0a[_0x30c952(0x191)])['map'](_0x173150=>handlerOf(_0x173150['value'])),_0x8f281a=async _0x343e56=>{const _0x3f5bcd=_0x164e1a[_0x343e56];if(!_0x3f5bcd)return;let _0x4c5fed=![],_0x24058a;const _0x2988f2=()=>{const _0x5172b1=_0x4396;if(_0x4c5fed)throw new Error(_0x5172b1(0x197));return _0x4c5fed=!![],_0x24058a=_0x8f281a(_0x343e56+0x1),_0x24058a;};try{await _0x3f5bcd(_0x23baf2,_0x2988f2);}catch(_0x4fdb7b){if(_0x24058a)try{await _0x24058a;}catch{}throw _0x4fdb7b;}_0x24058a&&await _0x24058a;};await _0x8f281a(0x0);}
@@ -0,0 +1,25 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { Duplex } from "node:stream";
3
+ import { type INodeTransport, type NodeTransportMiddleware, type NodeTransportMiddlewareObject, type NodeTransportOptions, type TransportDisposable } from "./transport.js";
4
+ export declare class NodeTransport implements INodeTransport {
5
+ private readonly _entries;
6
+ private readonly _webSocketServer;
7
+ private readonly _connections;
8
+ private readonly _eventQueues;
9
+ private readonly _failedConnections;
10
+ private readonly _connectionClosed;
11
+ private readonly _maxRequestBodyBytes;
12
+ private _disposed;
13
+ constructor(options?: NodeTransportOptions);
14
+ use(middleware: NodeTransportMiddleware | NodeTransportMiddlewareObject): TransportDisposable;
15
+ handleRequest(request: IncomingMessage, response: ServerResponse): void;
16
+ handleUpgrade(request: IncomingMessage, socket: Duplex, head: Buffer): void;
17
+ dispose(): Promise<void>;
18
+ private _acceptWebSocket;
19
+ private _enqueue;
20
+ private _dispatch;
21
+ private _writeHttpError;
22
+ private _disposeMiddleware;
23
+ private _assertRunning;
24
+ }
25
+ export declare function createNodeTransport(options?: NodeTransportOptions): INodeTransport;
@@ -0,0 +1 @@
1
+ 'use strict';const _0x2617bf=_0x10c1;(function(_0x5a067a,_0x1fca89){const _0x35f164=_0x10c1,_0x32e64d=_0x5a067a();while(!![]){try{const _0x1643d6=-parseInt(_0x35f164(0x1b6))/0x1*(parseInt(_0x35f164(0x187))/0x2)+parseInt(_0x35f164(0x18d))/0x3*(-parseInt(_0x35f164(0x15b))/0x4)+-parseInt(_0x35f164(0x19d))/0x5+-parseInt(_0x35f164(0x162))/0x6*(parseInt(_0x35f164(0x181))/0x7)+-parseInt(_0x35f164(0x1a0))/0x8*(-parseInt(_0x35f164(0x18c))/0x9)+-parseInt(_0x35f164(0x1ab))/0xa+parseInt(_0x35f164(0x1b2))/0xb;if(_0x1643d6===_0x1fca89)break;else _0x32e64d['push'](_0x32e64d['shift']());}catch(_0x7d0ef2){_0x32e64d['push'](_0x32e64d['shift']());}}}(_0x31d4,0xea455));var __createBinding=this&&this[_0x2617bf(0x168)]||(Object[_0x2617bf(0x1ae)]?function(_0x395089,_0x46bdbf,_0x2f5030,_0x3b967b){const _0x34a0bf=_0x2617bf;if(_0x3b967b===undefined)_0x3b967b=_0x2f5030;var _0x4189d5=Object[_0x34a0bf(0x14b)](_0x46bdbf,_0x2f5030);(!_0x4189d5||(_0x34a0bf(0x176)in _0x4189d5?!_0x46bdbf[_0x34a0bf(0x177)]:_0x4189d5['writable']||_0x4189d5[_0x34a0bf(0x154)]))&&(_0x4189d5={'enumerable':!![],'get':function(){return _0x46bdbf[_0x2f5030];}}),Object[_0x34a0bf(0x191)](_0x395089,_0x3b967b,_0x4189d5);}:function(_0x5c757a,_0x1b932d,_0x549706,_0x4c8200){if(_0x4c8200===undefined)_0x4c8200=_0x549706;_0x5c757a[_0x4c8200]=_0x1b932d[_0x549706];}),__setModuleDefault=this&&this[_0x2617bf(0x156)]||(Object[_0x2617bf(0x1ae)]?function(_0x3559f3,_0x7d8c89){const _0x1286f3=_0x2617bf;Object['defineProperty'](_0x3559f3,_0x1286f3(0x1b5),{'enumerable':!![],'value':_0x7d8c89});}:function(_0x52b864,_0x68fff5){_0x52b864['default']=_0x68fff5;}),__importStar=this&&this[_0x2617bf(0x184)]||(function(){var _0x43a187=function(_0xca8ff9){return _0x43a187=Object['getOwnPropertyNames']||function(_0x2615cd){const _0x11e1a3=_0x10c1;var _0x174632=[];for(var _0x2bfd3c in _0x2615cd)if(Object[_0x11e1a3(0x179)]['hasOwnProperty'][_0x11e1a3(0x1b0)](_0x2615cd,_0x2bfd3c))_0x174632[_0x174632['length']]=_0x2bfd3c;return _0x174632;},_0x43a187(_0xca8ff9);};return function(_0x2633c3){const _0x17a998=_0x10c1;if(_0x2633c3&&_0x2633c3['__esModule'])return _0x2633c3;var _0x183c10={};if(_0x2633c3!=null){for(var _0x229049=_0x43a187(_0x2633c3),_0x6c0ae3=0x0;_0x6c0ae3<_0x229049['length'];_0x6c0ae3++)if(_0x229049[_0x6c0ae3]!==_0x17a998(0x1b5))__createBinding(_0x183c10,_0x2633c3,_0x229049[_0x6c0ae3]);}return __setModuleDefault(_0x183c10,_0x2633c3),_0x183c10;};}());Object[_0x2617bf(0x191)](exports,_0x2617bf(0x177),{'value':!![]}),exports[_0x2617bf(0x15c)]=void 0x0,exports[_0x2617bf(0x145)]=createNodeTransport;const node_crypto_1=require('node:crypto'),ws_1=__importStar(require('ws')),middleware_chain_js_1=require('./middleware-chain.js'),transport_js_1=require('./transport.js'),DEFAULT_MAX_BYTES=0x10*0x400*0x400;class TransportConnection{[_0x2617bf(0x193)];['id']=(0x0,node_crypto_1['randomUUID'])();['customData']={};[_0x2617bf(0x15a)]=![];constructor(_0x425eaf){const _0x214a19=_0x2617bf;this[_0x214a19(0x193)]=_0x425eaf;}['send'](_0x4b4428){const _0x199453=_0x2617bf;if(this['_closed']||this[_0x199453(0x193)][_0x199453(0x15d)]!==ws_1[_0x199453(0x1b5)][_0x199453(0x16a)])return Promise[_0x199453(0x18f)](new Error(_0x199453(0x19a)));return new Promise((_0x29b7e8,_0x305daf)=>{const _0x13cd01=_0x199453;this[_0x13cd01(0x193)][_0x13cd01(0x199)](_0x4b4428,_0x1f8e5b=>{_0x1f8e5b?_0x305daf(_0x1f8e5b):_0x29b7e8();});});}['close'](_0x22212f,_0x528c42){const _0x11355a=_0x2617bf;if(this[_0x11355a(0x15a)])return;this[_0x11355a(0x15a)]=!![],(this[_0x11355a(0x193)][_0x11355a(0x15d)]===ws_1[_0x11355a(0x1b5)][_0x11355a(0x16a)]||this['socket']['readyState']===ws_1['default'][_0x11355a(0x165)])&&this[_0x11355a(0x193)][_0x11355a(0x15f)](_0x22212f,_0x528c42);}['terminate'](){const _0x298868=_0x2617bf;this[_0x298868(0x15a)]=!![],this[_0x298868(0x193)][_0x298868(0x15d)]!==ws_1[_0x298868(0x1b5)][_0x298868(0x158)]&&this[_0x298868(0x193)][_0x298868(0x18b)]();}}function positiveLimit(_0x2da332,_0x961396){const _0x4c61ee=_0x2617bf;if(_0x2da332===undefined)return _0x961396;if(!Number[_0x4c61ee(0x1a8)](_0x2da332)||_0x2da332<=0x0)throw new TypeError(_0x4c61ee(0x14e));return _0x2da332;}function createBodyReader(_0x1d6983,_0x170c70){let _0x10732f;return()=>{return _0x10732f??=new Promise((_0x96fdc3,_0x27dd5b)=>{const _0x1fc86e=_0x10c1,_0x59aa02=_0x1d6983['headers'][_0x1fc86e(0x174)];if(_0x59aa02!==undefined&&Number[_0x1fc86e(0x155)](Number(_0x59aa02))&&Number(_0x59aa02)>_0x170c70){_0x1d6983[_0x1fc86e(0x197)](),_0x27dd5b(new transport_js_1[(_0x1fc86e(0x149))]('REQUEST_BODY_TOO_LARGE',_0x1fc86e(0x161)+_0x170c70+_0x1fc86e(0x1a7)));return;}const _0x4ae789=[];let _0xaea718=0x0,_0x5f55c1=![];const _0x1d2a28=_0x2dd0da=>{if(_0x5f55c1)return;_0x5f55c1=!![],_0x27dd5b(_0x2dd0da);};_0x1d6983['on']('data',_0x29987e=>{const _0xf4f0a6=_0x1fc86e;if(_0x5f55c1)return;const _0x16ebd1=typeof _0x29987e===_0xf4f0a6(0x172)?Buffer[_0xf4f0a6(0x185)](_0x29987e):_0x29987e;_0xaea718+=_0x16ebd1[_0xf4f0a6(0x150)];if(_0xaea718>_0x170c70){_0x1d6983[_0xf4f0a6(0x197)](),_0x1d2a28(new transport_js_1[(_0xf4f0a6(0x149))](_0xf4f0a6(0x17c),'Request\x20body\x20exceeds\x20'+_0x170c70+_0xf4f0a6(0x1a7)));return;}_0x4ae789['push'](_0x16ebd1);}),_0x1d6983[_0x1fc86e(0x182)]('end',()=>{const _0xa50aee=_0x1fc86e;if(_0x5f55c1)return;_0x5f55c1=!![],_0x96fdc3(Buffer[_0xa50aee(0x18a)](_0x4ae789,_0xaea718));}),_0x1d6983['once'](_0x1fc86e(0x17a),()=>{const _0x3c7744=_0x1fc86e;_0x1d2a28(new transport_js_1[(_0x3c7744(0x149))](_0x3c7744(0x1ad),_0x3c7744(0x1ac)));}),_0x1d6983[_0x1fc86e(0x182)](_0x1fc86e(0x1a5),_0x215d9e=>{const _0xdffe98=_0x1fc86e;_0x1d2a28(new transport_js_1[(_0xdffe98(0x149))](_0xdffe98(0x1ad),'Request\x20stream\x20failed',{'cause':_0x215d9e}));});}),_0x10732f;};}function _0x10c1(_0x401a52,_0x48d8d9){_0x401a52=_0x401a52-0x144;const _0x31d4da=_0x31d4();let _0x10c1e8=_0x31d4da[_0x401a52];return _0x10c1e8;}function _0x31d4(){const _0x5980e7=['message','send','WebSocket\x20connection\x20is\x20not\x20open','Bad\x20Request','statusCode','8778450fEdVcy','end','value','24HVHoJD','dispose','resolve','utf8','_disposed','error','_connectionClosed','\x20bytes','isSafeInteger','handleRequest','maxWebSocketMessageBytes','16829160lhVRIS','Request\x20was\x20aborted','REQUEST_ABORTED','create','use','call','allSettled','75202853xBoLHJ','delete','Service\x20Unavailable','default','63419MWBWlO','toString','createNodeTransport','parse','text/plain;\x20charset=utf-8','websocket-close','NodeTransportError','TRANSPORT_DISPOSED','getOwnPropertyDescriptor','websocket-open','catch','Transport\x20byte\x20limits\x20must\x20be\x20positive\x20safe\x20integers','reverse','byteLength','disposed','setHeader','push','configurable','isFinite','__setModuleDefault','_entries','CLOSED','code','_closed','56DAxUOe','NodeTransport','readyState','writableEnded','close','isArray','Request\x20body\x20exceeds\x20','27012yQGNbt','maxRequestBodyBytes','kind','CONNECTING','then','_dispatch','__createBinding','finally','OPEN','function','runTransportMiddleware','Internal\x20Server\x20Error','_enqueue','content-type','WebSocketServer','_connections','string','destroyed','content-length','values','get','__esModule','map','prototype','aborted','_failedConnections','REQUEST_BODY_TOO_LARGE','_maxRequestBodyBytes','websocket-message','_acceptWebSocket','_writeHttpError','2212OWbRBy','once','handleUpgrade','__importStar','from','add','26TvMMyP','_webSocketServer','set','concat','terminate','1475883nlUVZd','146427NFWjJf','Payload\x20Too\x20Large','reject','_eventQueues','defineProperty','INVALID_JSON','socket','Transport\x20is\x20disposed','byteOffset','destroy','resume'];_0x31d4=function(){return _0x5980e7;};return _0x31d4();}function jsonReader(_0x2e69fb){return async()=>{const _0x2badfc=_0x10c1,_0x5a88ef=await _0x2e69fb();try{return JSON[_0x2badfc(0x146)](Buffer[_0x2badfc(0x185)](_0x5a88ef)['toString'](_0x2badfc(0x1a3)));}catch(_0x5db302){throw new transport_js_1[(_0x2badfc(0x149))](_0x2badfc(0x192),'Request\x20body\x20is\x20not\x20valid\x20JSON',{'cause':_0x5db302});}};}function rawDataToBuffer(_0x3e1a26){const _0x8fb2e5=_0x2617bf;if(Array[_0x8fb2e5(0x160)](_0x3e1a26))return Buffer[_0x8fb2e5(0x18a)](_0x3e1a26);if(_0x3e1a26 instanceof ArrayBuffer)return Buffer[_0x8fb2e5(0x185)](_0x3e1a26);return Buffer[_0x8fb2e5(0x185)](_0x3e1a26['buffer'],_0x3e1a26[_0x8fb2e5(0x195)],_0x3e1a26[_0x8fb2e5(0x150)]);}class NodeTransport{[_0x2617bf(0x157)]=[];[_0x2617bf(0x188)];[_0x2617bf(0x171)]=new Set();['_eventQueues']=new Map();[_0x2617bf(0x17b)]=new Set();[_0x2617bf(0x1a6)]=new Map();[_0x2617bf(0x17d)];['_disposed']=![];constructor(_0x401d7b={}){const _0x363632=_0x2617bf;this[_0x363632(0x17d)]=positiveLimit(_0x401d7b[_0x363632(0x163)],DEFAULT_MAX_BYTES);const _0x5f211d=positiveLimit(_0x401d7b[_0x363632(0x1aa)],this[_0x363632(0x17d)]);this[_0x363632(0x188)]=new ws_1[(_0x363632(0x170))]({'noServer':!![],'maxPayload':_0x5f211d});}[_0x2617bf(0x1af)](_0x45e7cf){const _0x4abbbd=_0x2617bf;this['_assertRunning']();const _0x2aa243={'value':_0x45e7cf,'disposed':![]};return this[_0x4abbbd(0x157)][_0x4abbbd(0x153)](_0x2aa243),{'dispose':async()=>{const _0x990b74=_0x4abbbd;if(_0x2aa243[_0x990b74(0x151)])return;_0x2aa243['disposed']=!![],await this['_disposeMiddleware'](_0x2aa243[_0x990b74(0x19f)]);}};}[_0x2617bf(0x1a9)](_0x14deff,_0x3806d4){const _0x5106f5=_0x2617bf;if(this[_0x5106f5(0x1a4)]){this[_0x5106f5(0x180)](_0x3806d4,new transport_js_1[(_0x5106f5(0x149))](_0x5106f5(0x14a),'Transport\x20is\x20disposed'));return;}const _0x431672=createBodyReader(_0x14deff,this[_0x5106f5(0x17d)]),_0x388076={'kind':'http','incomingMessage':_0x14deff,'response':_0x3806d4,'customData':{},'readBody':_0x431672,'readJson':jsonReader(_0x431672)};void this[_0x5106f5(0x167)](_0x388076)['catch'](_0x1b69ae=>{const _0x514920=_0x5106f5;this[_0x514920(0x180)](_0x3806d4,_0x1b69ae);});}[_0x2617bf(0x183)](_0x1e9af5,_0x50d9bd,_0x23826e){const _0x12d6a3=_0x2617bf;if(this['_disposed']){_0x50d9bd[_0x12d6a3(0x196)]();return;}try{this[_0x12d6a3(0x188)][_0x12d6a3(0x183)](_0x1e9af5,_0x50d9bd,_0x23826e,_0x4708d3=>{if(this['_disposed']){_0x4708d3['terminate']();return;}this['_acceptWebSocket'](_0x1e9af5,_0x4708d3);});}catch{_0x50d9bd['destroy']();}}async[_0x2617bf(0x1a1)](){const _0x47ec3f=_0x2617bf;if(this[_0x47ec3f(0x1a4)])return;this[_0x47ec3f(0x1a4)]=!![];const _0x3158fd=[...this[_0x47ec3f(0x1a6)][_0x47ec3f(0x175)]()][_0x47ec3f(0x178)](_0x581edd=>_0x581edd['promise']);for(const _0x36e03a of this[_0x47ec3f(0x171)]){_0x36e03a[_0x47ec3f(0x18b)]();}await Promise[_0x47ec3f(0x1b1)](_0x3158fd),await Promise['allSettled']([...this[_0x47ec3f(0x190)][_0x47ec3f(0x175)]()]);const _0x590787=[...this[_0x47ec3f(0x157)]][_0x47ec3f(0x14f)]();for(const _0x389dcf of _0x590787){if(_0x389dcf['disposed'])continue;_0x389dcf[_0x47ec3f(0x151)]=!![],await this['_disposeMiddleware'](_0x389dcf[_0x47ec3f(0x19f)]);}this[_0x47ec3f(0x157)]['length']=0x0;}[_0x2617bf(0x17f)](_0x27e550,_0x39ef3a){const _0x3ed87b=_0x2617bf,_0x1b1b5e=new TransportConnection(_0x39ef3a);this[_0x3ed87b(0x171)][_0x3ed87b(0x186)](_0x1b1b5e),this['_eventQueues'][_0x3ed87b(0x189)](_0x1b1b5e,Promise['resolve']());let _0xbc6861;const _0x4086d7=new Promise(_0x22d5f4=>{_0xbc6861=_0x22d5f4;});this[_0x3ed87b(0x1a6)]['set'](_0x1b1b5e,{'promise':_0x4086d7,'resolve':_0xbc6861}),_0x39ef3a['on'](_0x3ed87b(0x198),(_0x2b2260,_0x5ea85b)=>{const _0x3b10da=_0x3ed87b,_0x171d2d=rawDataToBuffer(_0x2b2260),_0x316117=_0x5ea85b?new Uint8Array(_0x171d2d):_0x171d2d[_0x3b10da(0x144)](_0x3b10da(0x1a3));this['_enqueue'](_0x1b1b5e,{'kind':_0x3b10da(0x17e),'connection':_0x1b1b5e,'data':_0x316117,'customData':{}});}),_0x39ef3a['once'](_0x3ed87b(0x15f),(_0x11db47,_0xf8ce34)=>{const _0x3411af=_0x3ed87b;this[_0x3411af(0x16e)](_0x1b1b5e,{'kind':'websocket-close','connection':_0x1b1b5e,'code':_0x11db47,'reason':_0xf8ce34[_0x3411af(0x144)](_0x3411af(0x1a3)),'customData':{}},!![]);}),_0x39ef3a['on']('error',()=>{}),this['_enqueue'](_0x1b1b5e,{'kind':_0x3ed87b(0x14c),'incomingMessage':_0x27e550,'connection':_0x1b1b5e,'customData':{}});}[_0x2617bf(0x16e)](_0x2b5b1a,_0x149d69,_0x4d4d57=![]){const _0x4a55b3=_0x2617bf,_0x409b38=this[_0x4a55b3(0x190)][_0x4a55b3(0x176)](_0x2b5b1a)??Promise['resolve'](),_0x5371df=_0x409b38[_0x4a55b3(0x14d)](()=>undefined)[_0x4a55b3(0x166)](async()=>{const _0x2aa707=_0x4a55b3;if(this[_0x2aa707(0x17b)]['has'](_0x2b5b1a)&&_0x149d69[_0x2aa707(0x164)]!==_0x2aa707(0x148))return;await this[_0x2aa707(0x167)](_0x149d69);})[_0x4a55b3(0x14d)](()=>{const _0x38a9d2=_0x4a55b3;this[_0x38a9d2(0x17b)][_0x38a9d2(0x186)](_0x2b5b1a),_0x2b5b1a[_0x38a9d2(0x15f)](0x3f3,'Transport\x20middleware\x20failure');})[_0x4a55b3(0x169)](()=>{const _0x2c5766=_0x4a55b3;_0x4d4d57&&(this[_0x2c5766(0x171)][_0x2c5766(0x1b3)](_0x2b5b1a),this['_eventQueues'][_0x2c5766(0x1b3)](_0x2b5b1a),this[_0x2c5766(0x17b)][_0x2c5766(0x1b3)](_0x2b5b1a),this[_0x2c5766(0x1a6)][_0x2c5766(0x176)](_0x2b5b1a)?.[_0x2c5766(0x1a2)](),this[_0x2c5766(0x1a6)][_0x2c5766(0x1b3)](_0x2b5b1a));});this[_0x4a55b3(0x190)][_0x4a55b3(0x189)](_0x2b5b1a,_0x5371df);}async[_0x2617bf(0x167)](_0x35da13){const _0x1e07f4=_0x2617bf;if(this['_disposed']&&_0x35da13[_0x1e07f4(0x164)]!==_0x1e07f4(0x148))throw new transport_js_1['NodeTransportError'](_0x1e07f4(0x14a),'Transport\x20is\x20disposed');await(0x0,middleware_chain_js_1[_0x1e07f4(0x16c)])([...this['_entries']],_0x35da13);}[_0x2617bf(0x180)](_0x264c39,_0x448971){const _0x11ca38=_0x2617bf;if(_0x264c39[_0x11ca38(0x15e)]||_0x264c39[_0x11ca38(0x173)])return;const _0xb456ae=_0x448971 instanceof transport_js_1['NodeTransportError']?_0x448971[_0x11ca38(0x159)]===_0x11ca38(0x17c)?0x19d:_0x448971[_0x11ca38(0x159)]===_0x11ca38(0x192)||_0x448971[_0x11ca38(0x159)]===_0x11ca38(0x1ad)?0x190:0x1f7:0x1f4,_0x29e6f7=_0xb456ae===0x19d?_0x11ca38(0x18e):_0xb456ae===0x190?_0x11ca38(0x19b):_0xb456ae===0x1f7?_0x11ca38(0x1b4):_0x11ca38(0x16d);!_0x264c39['headersSent']?(_0x264c39[_0x11ca38(0x19c)]=_0xb456ae,_0x264c39[_0x11ca38(0x152)](_0x11ca38(0x16f),_0x11ca38(0x147)),_0x264c39[_0x11ca38(0x19e)](_0x29e6f7)):_0x264c39[_0x11ca38(0x196)](_0x448971 instanceof Error?_0x448971:undefined);}async['_disposeMiddleware'](_0x3fbe4f){const _0x128196=_0x2617bf;typeof _0x3fbe4f!==_0x128196(0x16b)&&await _0x3fbe4f[_0x128196(0x1a1)]?.();}['_assertRunning'](){const _0x478fc3=_0x2617bf;if(this[_0x478fc3(0x1a4)])throw new transport_js_1[(_0x478fc3(0x149))]('TRANSPORT_DISPOSED',_0x478fc3(0x194));}}exports['NodeTransport']=NodeTransport;function createNodeTransport(_0x33c797){return new NodeTransport(_0x33c797);}
@@ -0,0 +1,62 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { Duplex } from "node:stream";
3
+ export type TransportCustomData = Record<string, unknown>;
4
+ export interface TransportDisposable {
5
+ dispose(): void | Promise<void>;
6
+ }
7
+ export type NodeTransportErrorCode = "INVALID_JSON" | "REQUEST_BODY_TOO_LARGE" | "REQUEST_ABORTED" | "TRANSPORT_DISPOSED";
8
+ export declare class NodeTransportError extends Error {
9
+ readonly code: NodeTransportErrorCode;
10
+ constructor(code: NodeTransportErrorCode, message: string, options?: ErrorOptions);
11
+ }
12
+ export interface NodeTransportConnection {
13
+ readonly id: string;
14
+ readonly customData: TransportCustomData;
15
+ send(data: string | Uint8Array): void | Promise<void>;
16
+ close(code?: number, reason?: string): void;
17
+ }
18
+ interface BaseNodeTransportContext {
19
+ readonly customData: TransportCustomData;
20
+ userId?: string;
21
+ }
22
+ export interface NodeHttpTransportContext extends BaseNodeTransportContext {
23
+ readonly kind: "http";
24
+ readonly incomingMessage: IncomingMessage;
25
+ readonly response: ServerResponse;
26
+ readBody(): Promise<Uint8Array>;
27
+ readJson<T = unknown>(): Promise<T>;
28
+ }
29
+ export interface NodeWebSocketOpenTransportContext extends BaseNodeTransportContext {
30
+ readonly kind: "websocket-open";
31
+ readonly incomingMessage: IncomingMessage;
32
+ readonly connection: NodeTransportConnection;
33
+ }
34
+ export interface NodeWebSocketMessageTransportContext extends BaseNodeTransportContext {
35
+ readonly kind: "websocket-message";
36
+ readonly connection: NodeTransportConnection;
37
+ readonly data: string | Uint8Array;
38
+ }
39
+ export interface NodeWebSocketCloseTransportContext extends BaseNodeTransportContext {
40
+ readonly kind: "websocket-close";
41
+ readonly connection: NodeTransportConnection;
42
+ readonly code?: number;
43
+ readonly reason?: string;
44
+ }
45
+ export type NodeTransportContext = NodeHttpTransportContext | NodeWebSocketOpenTransportContext | NodeWebSocketMessageTransportContext | NodeWebSocketCloseTransportContext;
46
+ export type NodeTransportNext = () => Promise<void>;
47
+ export type NodeTransportMiddleware = (ctx: NodeTransportContext, next: NodeTransportNext) => void | Promise<void>;
48
+ export interface NodeTransportMiddlewareObject {
49
+ handle(ctx: NodeTransportContext, next: NodeTransportNext): void | Promise<void>;
50
+ dispose?(): void | Promise<void>;
51
+ }
52
+ export interface NodeTransportOptions {
53
+ readonly maxRequestBodyBytes?: number;
54
+ readonly maxWebSocketMessageBytes?: number;
55
+ }
56
+ export interface INodeTransport {
57
+ use(middleware: NodeTransportMiddleware | NodeTransportMiddlewareObject): TransportDisposable;
58
+ handleRequest(request: IncomingMessage, response: ServerResponse): void;
59
+ handleUpgrade(request: IncomingMessage, socket: Duplex, head: Buffer): void;
60
+ dispose(): Promise<void>;
61
+ }
62
+ export { createNodeTransport } from "./node-transport.js";
@@ -0,0 +1 @@
1
+ 'use strict';var _0x505fe9=_0x15f5;(function(_0x912954,_0x552aa7){var _0x2559bf=_0x15f5,_0x1c80e8=_0x912954();while(!![]){try{var _0x1d24cd=parseInt(_0x2559bf(0x16b))/0x1*(-parseInt(_0x2559bf(0x166))/0x2)+-parseInt(_0x2559bf(0x170))/0x3*(parseInt(_0x2559bf(0x16f))/0x4)+-parseInt(_0x2559bf(0x160))/0x5+-parseInt(_0x2559bf(0x16e))/0x6*(parseInt(_0x2559bf(0x16c))/0x7)+parseInt(_0x2559bf(0x161))/0x8*(-parseInt(_0x2559bf(0x163))/0x9)+-parseInt(_0x2559bf(0x164))/0xa*(-parseInt(_0x2559bf(0x169))/0xb)+-parseInt(_0x2559bf(0x165))/0xc*(-parseInt(_0x2559bf(0x162))/0xd);if(_0x1d24cd===_0x552aa7)break;else _0x1c80e8['push'](_0x1c80e8['shift']());}catch(_0x27e4ee){_0x1c80e8['push'](_0x1c80e8['shift']());}}}(_0x3b9d,0xa3b30));function _0x15f5(_0x41ba90,_0x5139af){_0x41ba90=_0x41ba90-0x15e;var _0x3b9d45=_0x3b9d();var _0x15f59e=_0x3b9d45[_0x41ba90];return _0x15f59e;}function _0x3b9d(){var _0x1ff495=['code','537860pQYeie','33640IroPbg','65RRLtqQ','1935YeBdAS','11456710rGCtIm','5713284EHLRJD','2PqUdsz','NodeTransportError','createNodeTransport','11WsiLoX','__esModule','723430cJbvHe','7TFGNtf','defineProperty','4711998tAOCRk','436GmSTdf','9228IzRtXQ','name'];_0x3b9d=function(){return _0x1ff495;};return _0x3b9d();}Object[_0x505fe9(0x16d)](exports,_0x505fe9(0x16a),{'value':!![]}),exports[_0x505fe9(0x168)]=exports[_0x505fe9(0x167)]=void 0x0;class NodeTransportError extends Error{[_0x505fe9(0x15f)];constructor(_0x2c980a,_0x25adc3,_0x2b1173){var _0x354b1f=_0x505fe9;super(_0x25adc3,_0x2b1173),this[_0x354b1f(0x15f)]=_0x2c980a,this[_0x354b1f(0x15e)]='NodeTransportError';}}exports[_0x505fe9(0x167)]=NodeTransportError;var node_transport_js_1=require('./node-transport.js');Object['defineProperty'](exports,'createNodeTransport',{'enumerable':!![],'get':function(){return node_transport_js_1['createNodeTransport'];}});
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@univerjs-pro/collaboration-transport-node",
3
+ "type": "commonjs",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js",
10
+ "require": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "version": "1.0.0-insiders.20260727-46ed76c",
17
+ "dependencies": {
18
+ "ws": "^8.21.1"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ }
23
+ }