@opencode-ai/client
Advanced tools
+19
-18
| export * as SharedEvents from "./shared-events.js"; | ||
| export function make(connect) { | ||
| let current; | ||
| const delivered = Promise.resolve(); | ||
| const capacity = 4_096; | ||
| function stop(connection) { | ||
@@ -24,3 +24,3 @@ connection.connected = undefined; | ||
| connection.connected = item.value; | ||
| await Promise.all(Array.from(connection.subscribers, (subscriber) => subscriber.push(item.value))); | ||
| connection.subscribers.forEach((subscriber) => subscriber.push(item.value)); | ||
| } | ||
@@ -48,10 +48,10 @@ } | ||
| const pending = []; | ||
| const queued = []; | ||
| let started = false; | ||
| let completion; | ||
| let connection; | ||
| let offered; | ||
| function finish(result) { | ||
| function finish(result, discard = true) { | ||
| completion = result; | ||
| offered?.accepted.resolve(); | ||
| offered = undefined; | ||
| if (discard) | ||
| queued.length = 0; | ||
| options?.signal?.removeEventListener("abort", abort); | ||
@@ -71,14 +71,18 @@ if (connection?.subscribers.delete(subscriber) && !connection.subscribers.size) | ||
| const subscriber = { | ||
| finish, | ||
| finish(result) { | ||
| finish(result, false); | ||
| }, | ||
| push(value) { | ||
| if (completion) | ||
| return delivered; | ||
| return; | ||
| const request = pending.shift(); | ||
| if (request) { | ||
| request.resolve({ done: false, value }); | ||
| return delivered; | ||
| return; | ||
| } | ||
| const accepted = Promise.withResolvers(); | ||
| offered = { value, accepted }; | ||
| return accepted.promise; | ||
| if (queued.length === capacity) { | ||
| finish({ error: new Error(`Event subscriber exceeded its ${capacity}-event capacity`) }); | ||
| return; | ||
| } | ||
| queued.push(value); | ||
| }, | ||
@@ -103,8 +107,5 @@ }; | ||
| next() { | ||
| if (offered) { | ||
| const current = offered; | ||
| offered = undefined; | ||
| current.accepted.resolve(); | ||
| return Promise.resolve({ done: false, value: current.value }); | ||
| } | ||
| const value = queued.shift(); | ||
| if (value) | ||
| return Promise.resolve({ done: false, value }); | ||
| if (completion) { | ||
@@ -111,0 +112,0 @@ if ("error" in completion) |
+4
-4
| { | ||
| "$schema": "https://json.schemastore.org/package.json", | ||
| "name": "@opencode-ai/client", | ||
| "version": "0.0.0-beta-18721", | ||
| "version": "0.0.0-beta-18743", | ||
| "type": "module", | ||
@@ -60,4 +60,4 @@ "license": "MIT", | ||
| "dependencies": { | ||
| "@opencode-ai/schema": "0.0.0-beta-18721", | ||
| "@opencode-ai/protocol": "0.0.0-beta-18721" | ||
| "@opencode-ai/schema": "0.0.0-beta-18743", | ||
| "@opencode-ai/protocol": "0.0.0-beta-18743" | ||
| }, | ||
@@ -78,3 +78,3 @@ "peerDependencies": { | ||
| "@effect/platform-node": "4.0.0-rc.112", | ||
| "@opencode-ai/httpapi-codegen": "0.0.0-beta-18721", | ||
| "@opencode-ai/httpapi-codegen": "0.0.0-beta-18743", | ||
| "@tsconfig/bun": "1.0.9", | ||
@@ -81,0 +81,0 @@ "@types/bun": "1.3.13", |
Sorry, the diff of this file is too big to display
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
1027498
0.02%22803
0.02%+ Added
+ Added
- Removed
- Removed