@stacksjs/realtime 0.75.231 → 0.75.236

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.
Files changed (2) hide show
  1. package/dist/stream.js +1 -1
  2. package/package.json +3 -3
package/dist/stream.js CHANGED
@@ -1,4 +1,4 @@
1
- import{getServer}from"./server-instance";export async function createBroadcastResponse(options){if(!options.channels.length||typeof options.authorize!=="function")throw Error("Broadcast streams require channels and authorization");if(!await options.authorize())return new Response("Unauthorized",{status:401});const server=getServer();if(!server)throw Error("Broadcast server not initialized");const channels=new Set(options.channels),encoder=new TextEncoder,maxPending=options.maxPending??64;if(!Number.isSafeInteger(maxPending)||maxPending<1||maxPending>1024||options.heartbeatMs!==void 0&&(!Number.isFinite(options.heartbeatMs)||options.heartbeatMs<1))throw Error("Invalid broadcast stream configuration");let cleanup=()=>{};const stream=new ReadableStream({start(controller){let closed=!1,pending=0,chain=Promise.resolve(),timer,remove=()=>{};function close(){if(closed)return;closed=!0;remove();clearInterval(timer);options.signal?.removeEventListener("abort",close);try{controller.close()}catch{}}function enqueue(frame){if(closed)return;if((controller.desiredSize??0)<=0){close();return}controller.enqueue(encoder.encode(frame))}function deliver(frame){if(closed)return;if(++pending>maxPending){close();return}chain=chain.then(async()=>{if(closed)return;if(!await options.authorize()){close();return}enqueue(frame)}).catch(close).finally(()=>{pending--})}cleanup=close;remove=server.addBroadcastHook(({channel,event,data})=>{if(channels.has(channel))deliver(`data: ${JSON.stringify({channel,event,data})}
1
+ import{AsyncResource}from"node:async_hooks";import{getServer}from"./server-instance";export async function createBroadcastResponse(options){if(!options.channels.length||typeof options.authorize!=="function")throw Error("Broadcast streams require channels and authorization");const authorize=AsyncResource.bind(options.authorize,void 0,options);if(!await authorize())return new Response("Unauthorized",{status:401});const server=getServer();if(!server)throw Error("Broadcast server not initialized");const channels=new Set(options.channels),encoder=new TextEncoder,maxPending=options.maxPending??64;if(!Number.isSafeInteger(maxPending)||maxPending<1||maxPending>1024||options.heartbeatMs!==void 0&&(!Number.isFinite(options.heartbeatMs)||options.heartbeatMs<1))throw Error("Invalid broadcast stream configuration");let cleanup=()=>{};const stream=new ReadableStream({start(controller){let closed=!1,pending=0,chain=Promise.resolve(),timer,remove=()=>{};function close(){if(closed)return;closed=!0;remove();clearInterval(timer);options.signal?.removeEventListener("abort",close);try{controller.close()}catch{}}function enqueue(frame){if(closed)return;if((controller.desiredSize??0)<=0){close();return}controller.enqueue(encoder.encode(frame))}function deliver(frame){if(closed)return;if(++pending>maxPending){close();return}chain=chain.then(async()=>{if(closed)return;if(!await authorize()){close();return}enqueue(frame)}).catch(close).finally(()=>{pending--})}cleanup=close;remove=server.addBroadcastHook(({channel,event,data})=>{if(channels.has(channel))deliver(`data: ${JSON.stringify({channel,event,data})}
2
2
 
3
3
  `)});enqueue(`: connected
4
4
 
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/realtime",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.75.231",
5
+ "version": "0.75.236",
6
6
  "description": "The Stacks realtime integration. Built on top of ts-broadcasting.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -58,8 +58,8 @@
58
58
  "prepublishOnly": "bun run build"
59
59
  },
60
60
  "dependencies": {
61
- "@stacksjs/logging": "0.75.231",
62
- "@stacksjs/path": "0.75.231",
61
+ "@stacksjs/logging": "0.75.236",
62
+ "@stacksjs/path": "0.75.236",
63
63
  "ts-broadcasting": "^0.0.11"
64
64
  },
65
65
  "devDependencies": {