@gjsify/eventsource 0.3.20 → 0.4.0

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 @@
1
+ var e=Object.defineProperty,__name=(t,n)=>e(t,`name`,{value:n,configurable:!0});export{__name};
package/lib/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import"@gjsify/web-streams/register";import{Event as e,EventTarget as t,MessageEvent as n}from"@gjsify/dom-events";const r=typeof globalThis.Event==`function`?globalThis.Event:e,i=typeof globalThis.EventTarget==`function`?globalThis.EventTarget:t,a=typeof globalThis.MessageEvent==`function`?globalThis.MessageEvent:n;var o=class extends TransformStream{#e=``;constructor(){super({transform:(e,t)=>this.#t(e,t),flush:e=>{this.#e.length>0&&e.enqueue(this.#e)}})}#t(e,t){for(e=this.#e+e;;){let n=e.indexOf(`
2
- `);if(n!==-1){let r=n;e[n-1]===`\r`&&r--,t.enqueue(e.slice(0,r)),e=e.slice(n+1);continue}let r=e.indexOf(`\r`);if(r!==-1&&r!==e.length-1){t.enqueue(e.slice(0,r)),e=e.slice(r+1);continue}break}this.#e=e}},s=class extends i{static CONNECTING=0;static OPEN=1;static CLOSED=2;CONNECTING=0;OPEN=1;CLOSED=2;#e=new AbortController;#t;#n=5e3;#r=``;#i=0;#a;#o;onopen=null;onmessage=null;onerror=null;constructor(e,t){super();let n=String(e);try{this.#a=new URL(n).href}catch{throw new DOMException(`Failed to construct 'EventSource': ${n} is not a valid URL`,`SyntaxError`)}this.#o=t?.withCredentials??!1,this.#s()}get readyState(){return this.#i}get url(){return this.#a}get withCredentials(){return this.#o}close(){this.#e.abort(),this.#i=2,this.#t!==void 0&&(clearTimeout(this.#t),this.#t=void 0)}dispatchEvent(e){let t=e.type;return t===`open`&&this.onopen?this.onopen.call(this,e):t===`message`&&this.onmessage?this.onmessage.call(this,e):t===`error`&&this.onerror&&this.onerror.call(this,e),super.dispatchEvent(e)}async#s(){let e={Accept:`text/event-stream`,"Cache-Control":`no-cache`};this.#r&&(e[`Last-Event-ID`]=this.#r);let t;try{t=await fetch(this.#a,{headers:e,signal:this.#e.signal})}catch{this.#c();return}let n=t.headers.get(`content-type`)||``;if(t.status!==200||!n.toLowerCase().includes(`text/event-stream`)){this.#l();return}if(this.#i===2)return;this.#i=1,this.dispatchEvent(new r(`open`));let i=``,s=``,c=this.#r;try{let e=t.body;if(!e){this.#c();return}let n=e.pipeThrough(new TextDecoderStream).pipeThrough(new o).getReader();for(;;){let{value:e,done:t}=await n.read();if(t)break;if(e===``){if(this.#r=c,i===``){s=``;continue}i.endsWith(`
3
- `)&&(i=i.slice(0,-1));let e=new a(s||`message`,{data:i,origin:this.#a,lastEventId:this.#r});i=``,s=``,this.#i!==2&&this.dispatchEvent(e)}else if(e.startsWith(`:`))continue;else{let t=e,n=``,r=e.indexOf(`:`);switch(r!==-1&&(t=e.slice(0,r),n=e.slice(r+1),n.startsWith(` `)&&(n=n.slice(1))),t){case`event`:s=n;break;case`data`:i+=n+`
4
- `;break;case`id`:n.includes(`\0`)||(c=n);break;case`retry`:{let e=Number(n);!Number.isNaN(e)&&Number.isFinite(e)&&(this.#n=e);break}}}}}catch{}this.#c()}#c(){this.#i!==2&&(this.#i=0,this.dispatchEvent(new r(`error`)),this.#t=setTimeout(()=>{this.#i===0&&(this.#e=new AbortController,this.#s())},this.#n))}#l(){this.#i!==2&&(this.#i=2,this.dispatchEvent(new r(`error`)))}};export{s as EventSource,s as default,o as TextLineStream};
1
+ import"./_virtual/_rolldown/runtime.js";import"@gjsify/web-streams/register";import{Event as e,EventTarget as t,MessageEvent as n}from"@gjsify/dom-events";const r=typeof globalThis.Event==`function`?globalThis.Event:e,i=typeof globalThis.EventTarget==`function`?globalThis.EventTarget:t,a=typeof globalThis.MessageEvent==`function`?globalThis.MessageEvent:n;var TextLineStream=class extends TransformStream{#e=``;constructor(){super({transform:(e,t)=>this.#t(e,t),flush:e=>{this.#e.length>0&&e.enqueue(this.#e)}})}#t(e,t){for(e=this.#e+e;;){let n=e.indexOf(`
2
+ `);if(n!==-1){let r=n;e[n-1]===`\r`&&r--,t.enqueue(e.slice(0,r)),e=e.slice(n+1);continue}let r=e.indexOf(`\r`);if(r!==-1&&r!==e.length-1){t.enqueue(e.slice(0,r)),e=e.slice(r+1);continue}break}this.#e=e}},EventSource=class extends i{static CONNECTING=0;static OPEN=1;static CLOSED=2;CONNECTING=0;OPEN=1;CLOSED=2;#e=new AbortController;#t;#n=5e3;#r=``;#i=0;#a;#o;onopen=null;onmessage=null;onerror=null;constructor(e,t){super();let n=String(e);try{this.#a=new URL(n).href}catch{throw new DOMException(`Failed to construct 'EventSource': ${n} is not a valid URL`,`SyntaxError`)}this.#o=t?.withCredentials??!1,this.#s()}get readyState(){return this.#i}get url(){return this.#a}get withCredentials(){return this.#o}close(){this.#e.abort(),this.#i=2,this.#t!==void 0&&(clearTimeout(this.#t),this.#t=void 0)}dispatchEvent(e){let t=e.type;return t===`open`&&this.onopen?this.onopen.call(this,e):t===`message`&&this.onmessage?this.onmessage.call(this,e):t===`error`&&this.onerror&&this.onerror.call(this,e),super.dispatchEvent(e)}async#s(){let e={Accept:`text/event-stream`,"Cache-Control":`no-cache`};this.#r&&(e[`Last-Event-ID`]=this.#r);let t;try{t=await fetch(this.#a,{headers:e,signal:this.#e.signal})}catch{this.#c();return}let n=t.headers.get(`content-type`)||``;if(t.status!==200||!n.toLowerCase().includes(`text/event-stream`)){this.#l();return}if(this.#i===2)return;this.#i=1,this.dispatchEvent(new r(`open`));let i=``,o=``,s=this.#r;try{let e=t.body;if(!e){this.#c();return}let n=e.pipeThrough(new TextDecoderStream).pipeThrough(new TextLineStream).getReader();for(;;){let{value:e,done:t}=await n.read();if(t)break;if(e===``){if(this.#r=s,i===``){o=``;continue}i.endsWith(`
3
+ `)&&(i=i.slice(0,-1));let e=new a(o||`message`,{data:i,origin:this.#a,lastEventId:this.#r});i=``,o=``,this.#i!==2&&this.dispatchEvent(e)}else if(e.startsWith(`:`))continue;else{let t=e,n=``,r=e.indexOf(`:`);switch(r!==-1&&(t=e.slice(0,r),n=e.slice(r+1),n.startsWith(` `)&&(n=n.slice(1))),t){case`event`:o=n;break;case`data`:i+=n+`
4
+ `;break;case`id`:n.includes(`\0`)||(s=n);break;case`retry`:{let e=Number(n);!Number.isNaN(e)&&Number.isFinite(e)&&(this.#n=e);break}}}}}catch{}this.#c()}#c(){this.#i!==2&&(this.#i=0,this.dispatchEvent(new r(`error`)),this.#t=setTimeout(()=>{this.#i===0&&(this.#e=new AbortController,this.#s())},this.#n))}#l(){this.#i!==2&&(this.#i=2,this.dispatchEvent(new r(`error`)))}};export{EventSource,EventSource as default,TextLineStream};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/eventsource",
3
- "version": "0.3.20",
3
+ "version": "0.4.0",
4
4
  "description": "W3C EventSource (Server-Sent Events) for GJS",
5
5
  "type": "module",
6
6
  "module": "lib/esm/index.js",
@@ -39,12 +39,12 @@
39
39
  "server-sent-events"
40
40
  ],
41
41
  "dependencies": {
42
- "@gjsify/dom-events": "^0.3.20",
43
- "@gjsify/web-streams": "^0.3.20"
42
+ "@gjsify/dom-events": "^0.4.0",
43
+ "@gjsify/web-streams": "^0.4.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@gjsify/cli": "^0.3.20",
47
- "@gjsify/unit": "^0.3.20",
46
+ "@gjsify/cli": "^0.4.0",
47
+ "@gjsify/unit": "^0.4.0",
48
48
  "@types/node": "^25.6.2",
49
49
  "typescript": "^6.0.3"
50
50
  }