brass-runtime 1.12.1 → 1.13.2

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.
package/dist/index.d.ts CHANGED
@@ -1,46 +1,123 @@
1
- import { A as Async, S as Scope, E as Exit, F as Fiber, O as Option } from './effect-NSaHksNl.js';
2
- export { a as AsyncWithPromise, C as CancelToken, b as Canceler, c as Cause, d as FiberId, e as FiberStatus, I as Interrupted, N as None, R as Runtime, f as RuntimeFiber, g as Scheduler, h as ScopeId, i as Some, T as Task, Z as ZIO, j as acquireRelease, k as async, l as asyncCatchAll, m as asyncFail, n as asyncFlatMap, o as asyncFold, p as asyncInterruptible, q as asyncMap, r as asyncMapError, s as asyncSucceed, t as asyncSync, u as asyncTotal, v as catchAll, w as end, x as fail, y as flatMap, z as fork, B as fromPromiseAbortable, D as getCurrentFiber, G as globalScheduler, H as linkAbortController, J as makeCancelToken, K as map, L as mapAsync, M as mapError, P as mapTryAsync, Q as none, U as orElseOptional, V as some, W as succeed, X as sync, Y as toPromise, _ as unit, $ as unsafeGetCurrentRuntime, a0 as unsafeRunAsync, a1 as unsafeRunFoldWithEnv, a2 as withAsyncPromise, a3 as withCurrentFiber, a4 as withScope, a5 as withScopeAsync } from './effect-NSaHksNl.js';
3
- import { Z as ZStream } from './stream-DNTGNv-G.js';
4
- export { C as Concat, E as Emit, a as Empty, F as Flatten, b as FromPull, M as Managed, c as Merge, N as Normalize, S as Scoped, d as assertNever, e as collectStream, f as concatStream, g as emitStream, h as emptyStream, i as flattenStream, j as foreachStream, k as fromArray, l as fromPull, m as managedStream, n as mapStream, o as merge, p as mergeStream, r as rangeStream, s as streamFromReadableStream, u as uncons, q as unwrapScoped, w as widenOpt, z as zip } from './stream-DNTGNv-G.js';
1
+ import { F as FiberEngine, W as WasmEngineRuntime, A as Async, R as RuntimeFiber, b as FiberEngineStats, c as Fiber, d as FiberId, e as FiberStatus, E as Exit, f as RuntimeEvent, g as WasmBridge, h as OpcodeProgram, i as FiberId$1, j as EngineEvent, k as RefId, N as NodeId, l as OpcodeNode, S as Scope, m as RingBufferOptions, n as EngineStats, O as Option } from './effect-ISvXPLgc.js';
2
+ export { o as AsyncRegisterRef, a as AsyncWithPromise, p as BoundedRingBuffer, C as CancelToken, q as Canceler, r as Cause, s as CustomHostAction, D as DbHostAction, t as DecodeRef, u as DefaultHostExecutor, v as EngineKind, w as EngineSelection, x as EngineSelectionMode, y as FiberEngineKind, z as FlatMapRef, B as FoldFailureRef, G as FoldSuccessRef, H as HostAction, I as HostActionKind, J as HostActionResult, K as HostExecutionContext, L as HostExecutor, M as HostRegistry, P as HttpHostAction, Q as Interrupted, T as Joiner, U as None, V as NoopHooks, X as ProgramBuilder, Y as ProgramPatch, _ as PushStatus, $ as QueueHostAction, a0 as RingBuffer, a1 as RingBufferEngine, a2 as RingBufferStatsData, a3 as Runtime, a4 as RuntimeCapabilities, a5 as RuntimeEngineMode, a6 as RuntimeOptions, a7 as Scheduler, a8 as SchedulerEngine, a9 as SchedulerOptions, aa as SchedulerStats, ab as SchedulerStatsData, ac as ScopeId, ad as Some, ae as SyncRef, af as Task, ag as WasmFiberEngine, ah as WasmFiberEngineOptions, Z as ZIO, ai as acquireRelease, aj as async, ak as asyncCatchAll, al as asyncFail, am as asyncFlatMap, an as asyncFold, ao as asyncInterruptible, ap as asyncMap, aq as asyncMapError, ar as asyncSucceed, as as asyncSync, at as asyncTotal, au as catchAll, av as end, aw as engineStats, ax as fail, ay as flatMap, az as fork, aA as fromPromiseAbortable, aB as getBenchmarkBudget, aC as getCurrentFiber, aD as globalScheduler, aE as linkAbortController, aF as makeBoundedRingBuffer, aG as makeCancelToken, aH as map, aI as mapAsync, aJ as mapError, aK as mapTryAsync, aL as none, aM as orElseOptional, aN as runtimeCapabilities, aO as selectedEngineStats, aP as setBenchmarkBudget, aQ as some, aR as succeed, aS as sync, aT as toPromise, aU as unit, aV as unsafeGetCurrentRuntime, aW as unsafeRunAsync, aX as unsafeRunFoldWithEnv, aY as withAsyncPromise, aZ as withCurrentFiber, a_ as withScope, a$ as withScopeAsync } from './effect-ISvXPLgc.js';
3
+ import { Z as ZStream } from './stream-BvukHxCv.js';
4
+ export { C as Concat, E as Emit, a as Empty, F as Flatten, b as FromPull, M as Managed, c as Merge, N as Normalize, S as Scoped, d as assertNever, e as collectStream, f as concatStream, g as emitStream, h as emptyStream, i as flattenStream, j as foreachStream, k as fromArray, l as fromPull, m as managedStream, n as mapStream, o as merge, p as mergeStream, r as rangeStream, s as streamFromReadableStream, u as uncons, q as unwrapScoped, w as widenOpt, z as zip } from './stream-BvukHxCv.js';
5
5
 
6
- type Node<T> = {
7
- value: T;
8
- next: Node<T> | null;
9
- prev: Node<T> | null;
10
- removed: boolean;
11
- };
12
- declare class LinkedQueue<T> {
13
- private head;
14
- private tail;
15
- private len;
16
- get length(): number;
17
- isEmpty(): boolean;
18
- push(value: T): Node<T>;
19
- shift(): T | undefined;
20
- remove(node: Node<T>): void;
21
- private unlink;
6
+ declare class JsFiberEngine<R> implements FiberEngine<R> {
7
+ private readonly runtime;
8
+ readonly kind: "js";
9
+ private startedFibers;
10
+ constructor(runtime: WasmEngineRuntime<R> & any);
11
+ fork<E, A>(effect: Async<R, E, A>, scopeId?: number): RuntimeFiber<R, E, A>;
12
+ stats(): FiberEngineStats;
22
13
  }
23
14
 
24
- declare const enum PushStatus {
25
- Ok = 0,
26
- Grew = 1,
27
- Dropped = 2
15
+ type InternalFiberStatus = "queued" | "running" | "suspended" | "done" | "failed" | "interrupted";
16
+ declare class EngineFiberHandle<R, E, A> implements Fiber<E, A> {
17
+ private readonly onScheduledStep;
18
+ private readonly onInterrupt;
19
+ private readonly onJoiner?;
20
+ private readonly onQueued?;
21
+ readonly id: FiberId;
22
+ readonly runtime: WasmEngineRuntime<R> & any;
23
+ fiberContext: any;
24
+ name?: string;
25
+ scopeId?: number;
26
+ parentFiberId?: number;
27
+ private result;
28
+ private readonly joiners;
29
+ private readonly finalizers;
30
+ private finalizersDrained;
31
+ private internalStatus;
32
+ private queued;
33
+ constructor(id: FiberId, runtime: WasmEngineRuntime<R> & any, onScheduledStep: (fiberId: FiberId) => void, onInterrupt: (fiberId: FiberId, reason: unknown) => void, onJoiner?: ((fiberId: FiberId) => void) | undefined, onQueued?: ((fiberId: FiberId) => void) | undefined);
34
+ status(): FiberStatus;
35
+ engineStatus(): InternalFiberStatus;
36
+ setEngineStatus(status: InternalFiberStatus): void;
37
+ join(cb: (exit: Exit<E, A>) => void): void;
38
+ interrupt(): void;
39
+ addFinalizer(f: (exit: Exit<E, A>) => void): void;
40
+ schedule(tag?: string): void;
41
+ emit(ev: RuntimeEvent): void;
42
+ succeed(value: A): void;
43
+ fail(error: E): void;
44
+ die(defect: unknown): void;
45
+ interrupted(): void;
46
+ complete(exit: Exit<E, A>): void;
47
+ private runFinalizersOnce;
28
48
  }
29
- declare class RingBuffer<T> {
30
- private buf;
31
- private head;
32
- private tail;
33
- private size_;
34
- private readonly maxCap;
35
- constructor(initialCapacity?: number, maxCapacity?: number);
36
- get length(): number;
37
- get capacity(): number;
38
- isEmpty(): boolean;
39
- push(value: T): PushStatus;
40
- shift(): T | undefined;
41
- clear(): void;
42
- private grow;
43
- private nextPow2;
49
+
50
+ declare class ReferenceWasmBridge implements WasmBridge {
51
+ readonly kind: "wasm-reference";
52
+ private nextFiberId;
53
+ private readonly fibers;
54
+ private started;
55
+ private completed;
56
+ private failed;
57
+ private interrupted;
58
+ createFiber(program: OpcodeProgram): FiberId$1;
59
+ poll(fiberId: FiberId$1): EngineEvent;
60
+ provideValue(fiberId: FiberId$1, valueRef: RefId): EngineEvent;
61
+ provideError(fiberId: FiberId$1, errorRef: RefId): EngineEvent;
62
+ provideEffect(fiberId: FiberId$1, root: NodeId, nodes: OpcodeNode[]): EngineEvent;
63
+ interrupt(fiberId: FiberId$1, reasonRef: RefId): EngineEvent;
64
+ dropFiber(fiberId: FiberId$1): void;
65
+ stats(): unknown;
66
+ private mustFiber;
67
+ private step;
68
+ private success;
69
+ private failure;
70
+ private suspend;
71
+ private markDone;
72
+ private markFailed;
73
+ }
74
+
75
+ declare class WasmPackFiberBridge implements WasmBridge {
76
+ readonly kind: "wasm";
77
+ private readonly vm;
78
+ constructor(modulePath?: string);
79
+ createFiber(program: OpcodeProgram): FiberId$1;
80
+ poll(fiberId: FiberId$1): EngineEvent;
81
+ provideValue(fiberId: FiberId$1, valueRef: RefId): EngineEvent;
82
+ provideError(fiberId: FiberId$1, errorRef: RefId): EngineEvent;
83
+ provideEffect(fiberId: FiberId$1, root: NodeId, nodes: OpcodeNode[]): EngineEvent;
84
+ interrupt(fiberId: FiberId$1, reasonRef: RefId): EngineEvent;
85
+ dropFiber(fiberId: FiberId$1): void;
86
+ stats(): unknown;
87
+ }
88
+
89
+ type WasmFiberRegistryStats = {
90
+ readonly live: number;
91
+ readonly queued: number;
92
+ readonly running: number;
93
+ readonly suspended: number;
94
+ readonly done: number;
95
+ readonly failed: number;
96
+ readonly interrupted: number;
97
+ readonly wakeQueueLen: number;
98
+ readonly registered: number;
99
+ readonly completed: number;
100
+ readonly wakeups: number;
101
+ readonly duplicateWakeups: number;
102
+ readonly joins: number;
103
+ };
104
+ type FiberRegistryStatus = "queued" | "running" | "suspended" | "done" | "failed" | "interrupted";
105
+ declare class WasmFiberRegistryBridge {
106
+ private readonly registry;
107
+ constructor();
108
+ registerFiber(fiberId: FiberId$1, parentId?: number, scopeId?: number): void;
109
+ markQueued(fiberId: FiberId$1): void;
110
+ markRunning(fiberId: FiberId$1): void;
111
+ markSuspended(fiberId: FiberId$1): void;
112
+ markDone(fiberId: FiberId$1, status: Exclude<FiberRegistryStatus, "queued" | "running" | "suspended">): number;
113
+ dropFiber(fiberId: FiberId$1): void;
114
+ addJoiner(fiberId: FiberId$1): void;
115
+ wake(fiberId: FiberId$1): boolean;
116
+ drainWakeup(): FiberId$1 | undefined;
117
+ drainWakeups(): FiberId$1[];
118
+ wakeQueueLength(): number;
119
+ stateOf(fiberId: FiberId$1): FiberRegistryStatus | "missing";
120
+ stats(): WasmFiberRegistryStats;
44
121
  }
45
122
 
46
123
  declare function buffer<R, E, A>(stream: ZStream<{} & R, E, A>, capacity: number, strategy?: "backpressure" | "dropping" | "sliding"): ZStream<{} & R, E, A>;
@@ -78,7 +155,8 @@ type Queue<A> = {
78
155
  size: () => number;
79
156
  shutdown: () => void;
80
157
  };
81
- declare function bounded<A>(capacity: number, strategy?: Strategy): Async<unknown, unknown, Queue<A>>;
158
+ type QueueOptions = RingBufferOptions;
159
+ declare function bounded<A>(capacity: number, strategy?: Strategy, options?: QueueOptions): Async<unknown, unknown, Queue<A>>;
82
160
 
83
161
  type HubStrategy = "BackPressure" | "Dropping" | "Sliding";
84
162
  type HubClosed = {
@@ -98,6 +176,42 @@ declare const broadcast: typeof makeHub;
98
176
  declare function broadcastToHub<R, E, A>(stream: ZStream<R, E, A>, hub: Hub<A>): Async<R, E, void>;
99
177
  declare function fromHub<A>(hub: Hub<A>): ZStream<unknown, HubClosed, A>;
100
178
 
179
+ type StreamChunkEngine = "auto" | "js" | "wasm";
180
+ type StreamChunkOptions = {
181
+ /**
182
+ * auto: use WASM when wasm/pkg is available, otherwise JS.
183
+ * js: always use the JS array chunker.
184
+ * wasm: require BrassWasmChunkBuffer from wasm/pkg.
185
+ */
186
+ engine?: StreamChunkEngine;
187
+ };
188
+ type StreamChunkStats = {
189
+ len: number;
190
+ maxChunkSize: number;
191
+ emittedChunks: number;
192
+ emittedItems: number;
193
+ flushes: number;
194
+ };
195
+ type Chunker<A> = {
196
+ readonly length: number;
197
+ readonly maxChunkSize: number;
198
+ push(value: A): boolean;
199
+ isFull(): boolean;
200
+ isEmpty(): boolean;
201
+ takeChunk(): readonly A[];
202
+ clear(): void;
203
+ stats(): EngineStats<StreamChunkStats>;
204
+ };
205
+ declare function makeStreamChunker<A>(chunkSize: number, options?: StreamChunkOptions): Chunker<A>;
206
+ /**
207
+ * Re-chunk a stream so downstream operators receive arrays instead of single
208
+ * items. This is the intended WASM boundary: pay the JS↔WASM crossing while
209
+ * assembling chunks, then process bigger batches downstream.
210
+ */
211
+ declare function chunks<R, E, A>(input: ZStream<R, E, A>, chunkSize: number, options?: StreamChunkOptions): ZStream<R, E, readonly A[]>;
212
+ declare function mapChunks<R, E, A, B>(input: ZStream<R, E, A>, chunkSize: number, f: (chunk: readonly A[]) => readonly B[], options?: StreamChunkOptions): ZStream<R, E, B>;
213
+ declare function mapChunksEffect<Rp, Ep, A, B>(chunkSize: number, f: (chunk: readonly A[]) => Async<Rp, Ep, readonly B[]>, options?: StreamChunkOptions): <R, E>(input: ZStream<R, E, A>) => ZStream<R & Rp, E | Ep, B>;
214
+
101
215
  /**
102
216
  * ZPipeline-style transformer.
103
217
  *
@@ -129,6 +243,10 @@ declare function dropP<A>(n: number): ZPipeline<unknown, never, A, A>;
129
243
  declare function mapEffectP<Rp, Ep, A, B>(f: (a: A) => Async<Rp, Ep, B>): ZPipeline<Rp, Ep, A, B>;
130
244
  /** Tap each element with an effect, preserving the element. */
131
245
  declare function tapEffectP<Rp, Ep, A>(f: (a: A) => Async<Rp, Ep, any>): ZPipeline<Rp, Ep, A, A>;
246
+ /** Re-chunk a stream into arrays of up to `chunkSize` elements. */
247
+ declare function chunksP<A>(chunkSize: number, options?: StreamChunkOptions): ZPipeline<unknown, never, A, readonly A[]>;
248
+ /** Apply one effect per chunk and flatten the returned chunk back to elements. */
249
+ declare function mapChunksEffectP<Rp, Ep, A, B>(chunkSize: number, f: (chunk: readonly A[]) => Async<Rp, Ep, readonly B[]>, options?: StreamChunkOptions): ZPipeline<Rp, Ep, A, B>;
132
250
  /** Buffer upstream using your existing queue-based buffer implementation. */
133
251
  declare function bufferP<A>(capacity: number, strategy?: "backpressure" | "dropping" | "sliding"): ZPipeline<unknown, never, A, A>;
134
252
  /**
@@ -137,4 +255,4 @@ declare function bufferP<A>(capacity: number, strategy?: "backpressure" | "dropp
137
255
  */
138
256
  declare function groupedP<A>(n: number): ZPipeline<unknown, never, A, A[]>;
139
257
 
140
- export { Async, Exit, Fiber, type Hub, type HubClosed, type HubStrategy, LinkedQueue, type Node, Option, PushStatus, type Queue, type QueueClosed, RingBuffer, Scope, type Strategy, type Subscription, type ZPipeline, ZStream, andThen, bounded, broadcast, broadcastToHub, buffer, bufferP, collectAllPar, compose, dropP, filterMapP, filterP, fromHub, groupedP, identity, makeHub, mapEffectP, mapP, race, raceWith, takeP, tapEffectP, via, zipPar };
258
+ export { Async, EngineEvent, EngineFiberHandle, EngineStats, Exit, Fiber, FiberEngine, FiberEngineStats, FiberId, FiberStatus, type Hub, type HubClosed, type HubStrategy, type InternalFiberStatus, JsFiberEngine, NodeId, OpcodeNode, OpcodeProgram, Option, type Queue, type QueueClosed, type QueueOptions, RefId, ReferenceWasmBridge, RingBufferOptions, RuntimeFiber, Scope, type Strategy, type StreamChunkEngine, type StreamChunkOptions, type StreamChunkStats, type Subscription, WasmBridge, WasmEngineRuntime, WasmFiberRegistryBridge, type WasmFiberRegistryStats, WasmPackFiberBridge, type ZPipeline, ZStream, andThen, bounded, broadcast, broadcastToHub, buffer, bufferP, chunks, chunksP, collectAllPar, compose, dropP, filterMapP, filterP, fromHub, groupedP, identity, makeHub, makeStreamChunker, mapChunks, mapChunksEffect, mapChunksEffectP, mapEffectP, mapP, race, raceWith, takeP, tapEffectP, via, zipPar };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {b,p,d,k,a,f as f$1}from'./chunk-MAR4TNUH.js';export{l as assertNever,r as collectStream,h as concatStream,g as emitStream,f as emptyStream,i as flattenStream,p as foreachStream,q as fromArray,b as fromPull,d as managedStream,m as mapStream,j as merge,e as mergeStream,n as rangeStream,s as streamFromReadableStream,k as uncons,c as unwrapScoped,a as widenOpt,o as zip}from'./chunk-MAR4TNUH.js';import {h,F,j,i,l,f,d as d$1,r,K,s,b as b$1,g,N as N$1}from'./chunk-63MXGA7P.js';export{a as Async,t as Cause,u as Exit,E as PushStatus,F as RingBuffer,M as Runtime,I as RuntimeFiber,G as Scheduler,S as Scope,m as acquireRelease,j as async,c as asyncCatchAll,g as asyncFail,l as asyncFlatMap,b as asyncFold,n as asyncInterruptible,k as asyncMap,d as asyncMapError,f as asyncSucceed,h as asyncSync,i as asyncTotal,B as catchAll,X as collectAllPar,D as end,w as fail,z as flatMap,N as fork,Q as fromPromiseAbortable,J as getCurrentFiber,H as globalScheduler,y as map,p as mapAsync,A as mapError,q as mapTryAsync,r as none,C as orElseOptional,V as race,Y as raceWith,s as some,v as succeed,x as sync,P as toPromise,e as unit,K as unsafeGetCurrentRuntime,O as unsafeRunAsync,R as unsafeRunFoldWithEnv,o as withAsyncPromise,L as withCurrentFiber,U as withScope,T as withScopeAsync,W as zipPar}from'./chunk-63MXGA7P.js';function ze(){let t=false,e=new Set;return {isCancelled:()=>t,onCancel:r=>{if(t){try{r();}catch{}return ()=>{}}return e.add(r),()=>{e.delete(r);}},cancel:()=>{t||(t=true,e.forEach(r=>r()),e.clear());}}}function De(t,e){return t.onCancel(()=>e.abort())}var v=class{head=null;tail=null;len=0;get length(){return this.len}isEmpty(){return this.len===0}push(e){let n={value:e,next:null,prev:this.tail,removed:false};return this.tail?this.tail.next=n:this.head=n,this.tail=n,this.len++,n}shift(){let e=this.head;if(e)return this.unlink(e),e.value}remove(e){e.removed||this.unlink(e);}unlink(e){e.removed=true;let{prev:n,next:r}=e;n?n.next=r:this.head=r,r?r.prev=n:this.tail=n,e.next=null,e.prev=null,this.len--;}};function Z(t,e="backpressure"){return h(()=>I(t,e))}function I(t,e){let n=new F(t),r=false,s={_tag:"QueueClosed"},o=new v,a=new v,l=()=>{for(;a.length>0&&n.length>0;){let u=a.shift(),f=n.shift();u({_tag:"Success",value:f});}for(;o.length>0&&n.length<t&&a.length===0;){let u=o.shift();n.push(u.a),u.cb(true);}for(;a.length>0&&o.length>0;){let u=a.shift(),f=o.shift();f.cb(true),u({_tag:"Success",value:f.a});}};return {size:()=>n.length,shutdown:()=>{if(!r){for(r=true;a.length>0;)a.shift()({_tag:"Failure",cause:{_tag:"Fail",error:s}});for(;o.length>0;)o.shift().cb(false);n.clear();}},offer:u=>j((f,i)=>{if(r){i({_tag:"Success",value:false});return}if(a.length>0){a.shift()({_tag:"Success",value:u}),i({_tag:"Success",value:true});return}if(n.length<t){n.push(u),i({_tag:"Success",value:true}),l();return}if(e==="dropping"){i({_tag:"Success",value:false});return}if(e==="sliding"){n.shift(),n.push(u),i({_tag:"Success",value:true}),l();return}let m=o.push({a:u,cb:A=>i({_tag:"Success",value:A})});return ()=>{o.remove(m);}}),take:()=>j((u,f)=>{if(n.length>0){let A=n.shift();f({_tag:"Success",value:A}),l();return}if(o.length>0){let A=o.shift();A.cb(true),f({_tag:"Success",value:A.a});return}if(r){f({_tag:"Failure",cause:{_tag:"Fail",error:s}});return}let i=A=>f(A),m=a.push(i);return ()=>{a.remove(m);}})}}function M(t,e,n="backpressure"){let r$1=false,s$1=null,o=null,a=t,l$1=()=>b$1(k(a),i=>f(i._tag==="None"?{_tag:"End"}:{_tag:"Fail",error:i.value}),([i,m])=>h(()=>(a=m,{_tag:"Elem",value:i}))),p=i=>l(Z(e,n),m=>{s$1=m;let S=()=>l(l$1(),A=>l(s$1.offer(A),()=>A._tag==="End"||A._tag==="Fail"?f(void 0):S()));return o=N$1(S(),i),r$1=true,f(void 0)}),u={_tag:"Async",register:(i,m)=>{(()=>{if(!r$1){K().fork(p(i)).join(()=>{f$1(i,m);});return}f$1(i,m);})();}};function f$1(i,m){let S=s$1.take();K().fork(S).join(A=>{if(A._tag!=="Success")return;let w=A.value;switch(w._tag){case "Elem":m({_tag:"Success",value:[w.value,b(u)]});return;case "End":o?.interrupt?.(),m({_tag:"Failure",cause:{_tag:"Fail",error:r}});return;case "Fail":o?.interrupt?.(),m({_tag:"Failure",cause:{_tag:"Fail",error:s(w.error)}});return}});}return b(u)}var N=t=>t==="BackPressure"?"backpressure":t==="Dropping"?"dropping":"sliding";function z(t,e="BackPressure"){let n=new Set,r=false,s=p=>{if(r)return f(false);let u=Array.from(n),f$1=f(true);return u.forEach(i=>{f$1=l(f$1,m=>l(i.offer(p),S=>f(m&&S)));}),f$1};return {publish:s,publishAll:p=>{let u=f(true),f$1=p[Symbol.iterator]();for(;;){let i=f$1.next();if(i.done)break;let m=i.value;u=l(u,S=>l(s(m),A=>f(S&&A)));}return u},subscribe:()=>r?i(()=>{throw {_tag:"HubClosed"}}):l(Z(t,N(e)),p=>h(()=>(n.add(p),{...p,unsubscribe:()=>{n.has(p)&&(n.delete(p),p.shutdown());}}))),shutdown:()=>h(()=>{r||(r=true,Array.from(n).forEach(p=>p.shutdown()),n.clear());})}}var dn=z;function Rn(t,e){return p(t,n=>l(e.publish(n),()=>f(void 0)))}function Sn(t){return d(l(t.subscribe(),e=>{let n=b(l(d$1(e.take(),r$1=>r),r=>f([r,n])));return f({stream:n,release:r=>h(()=>e.unsubscribe())})}))}function Cn(t,e){return e(t)}function D(t,e){return(n=>e(t(n)))}function On(t,e){return D(e,t)}function Pn(){return(t=>t)}function Bn(t){return(e=>{let n=r=>b(b$1(k(r),s=>g(s),([s,o])=>f([t(s),n(o)])));return n(e)})}function Tn(t){return(e=>{let n=s=>b$1(k(s),o=>g(o),([o,a])=>t(o)?f([o,r(a)]):n(a)),r=s=>b(n(s));return r(e)})}function Fn(t){return(e=>{let n=s=>b$1(k(s),o=>g(o),([o,a])=>{let l=t(o);return l._tag==="Some"?f([l.value,r(a)]):n(a)}),r=s=>b(n(s));return r(e)})}function Hn(t){let e=Math.max(0,t|0);return(n=>{let r=(s,o)=>o<=0?f$1():b(b$1(k(s),a=>g(a),([a,l])=>f([a,r(l,o-1)])));return r(n,e)})}function Qn(t){let e=Math.max(0,t|0);return(n=>{let r=(s,o)=>o<=0?s:b(b$1(k(s),a=>g(a),([a,l])=>k(r(l,o-1))));return r(n,e)})}function W(t){return(e=>{let n=s$1=>d$1(s$1,o=>s(o)),r=s=>b(b$1(d$1(k(s),o=>a(o)),o=>g(o),([o,a])=>b$1(n(t(o)),l=>g(l),l=>f([l,r(a)]))));return r(e)})}function Mn(t){return W(e=>l(t(e),()=>f(e)))}function In(t,e="backpressure"){return(n=>M(n,t,e))}function Nn(t){let e=Math.max(1,t|0);return(n=>{let r=(o,a,l)=>a<=0?f({chunk:l,rest:o}):b$1(k(o),p=>p._tag==="None"?f({chunk:l,rest:f$1()}):g(p),([p,u])=>r(u,a-1,[...l,p])),s=o=>b(b$1(k(o),a=>g(a),([a,l$1])=>l(r(l$1,e-1,[a]),({chunk:p,rest:u})=>f([p,s(u)]))));return s(n)})}export{v as LinkedQueue,D as andThen,Z as bounded,dn as broadcast,Rn as broadcastToHub,M as buffer,In as bufferP,On as compose,Qn as dropP,Fn as filterMapP,Tn as filterP,Sn as fromHub,Nn as groupedP,Pn as identity,De as linkAbortController,ze as makeCancelToken,z as makeHub,W as mapEffectP,Bn as mapP,Hn as takeP,Mn as tapEffectP,Cn as via};
1
+ import {b,p,d,k,a,f as f$1}from'./chunk-JAQUSSUV.js';export{l as assertNever,r as collectStream,h as concatStream,g as emitStream,f as emptyStream,i as flattenStream,p as foreachStream,q as fromArray,b as fromPull,d as managedStream,m as mapStream,j as merge,e as mergeStream,n as rangeStream,s as streamFromReadableStream,k as uncons,c as unwrapScoped,a as widenOpt,o as zip}from'./chunk-JAQUSSUV.js';import {h,H,j,i,l,f,d as d$1,r,O,s,b as b$1,g,G as G$1,aa}from'./chunk-LTHJNW5A.js';export{a as Async,t as Cause,Q as DefaultHostExecutor,U as EngineFiberHandle,u as Exit,S as HostRegistry,R as JsFiberEngine,_ as NoopHooks,T as ProgramBuilder,E as PushStatus,V as ReferenceWasmBridge,F as RingBuffer,$ as Runtime,M as RuntimeFiber,I as Scheduler,fa as Scope,Y as WasmFiberEngine,X as WasmFiberRegistryBridge,W as WasmPackFiberBridge,m as acquireRelease,j as async,c as asyncCatchAll,g as asyncFail,l as asyncFlatMap,b as asyncFold,n as asyncInterruptible,k as asyncMap,d as asyncMapError,f as asyncSucceed,h as asyncSync,i as asyncTotal,B as catchAll,ka as collectAllPar,D as end,w as fail,z as flatMap,aa as fork,da as fromPromiseAbortable,L as getBenchmarkBudget,N as getCurrentFiber,J as globalScheduler,H as makeBoundedRingBuffer,y as map,p as mapAsync,A as mapError,q as mapTryAsync,r as none,C as orElseOptional,ia as race,la as raceWith,Z as runtimeCapabilities,K as setBenchmarkBudget,s as some,v as succeed,x as sync,ca as toPromise,e as unit,O as unsafeGetCurrentRuntime,ba as unsafeRunAsync,ea as unsafeRunFoldWithEnv,o as withAsyncPromise,P as withCurrentFiber,ha as withScope,ga as withScopeAsync,ja as zipPar}from'./chunk-LTHJNW5A.js';function En(){let n=false,e=new Set;return {isCancelled:()=>n,onCancel:r=>{if(n){try{r();}catch{}return ()=>{}}return e.add(r),()=>{e.delete(r);}},cancel:()=>{n||(n=true,e.forEach(r=>r()),e.clear());}}}function An(n,e){return n.onCancel(()=>e.abort())}var C=class{head=null;tail=null;len=0;get length(){return this.len}isEmpty(){return this.len===0}push(e){let t={value:e,next:null,prev:this.tail,removed:false};return this.tail?this.tail.next=t:this.head=t,this.tail=t,this.len++,t}shift(){let e=this.head;if(e)return this.unlink(e),e.value}remove(e){e.removed||this.unlink(e);}unlink(e){e.removed=true;let{prev:t,next:r}=e;t?t.next=r:this.head=r,r?r.prev=t:this.tail=t,e.next=null,e.prev=null,this.len--;}};function B(n,e="backpressure",t={}){return h(()=>X(n,e,t))}function X(n,e,t){let r=H(n,n,t),i=false,a={_tag:"QueueClosed"},o=new C,s=new C;return {size:()=>r.length,shutdown:()=>{if(!i){for(i=true;s.length>0;)s.shift()({_tag:"Failure",cause:{_tag:"Fail",error:a}});for(;o.length>0;)o.shift().cb(false);r.clear();}},offer:l=>j((f,y)=>{if(i){y({_tag:"Success",value:false});return}if(s.length>0){s.shift()({_tag:"Success",value:l}),y({_tag:"Success",value:true});return}if(r.length<n){r.push(l),y({_tag:"Success",value:true});return}if(e==="dropping"){y({_tag:"Success",value:false});return}if(e==="sliding"){r.shift(),r.push(l),y({_tag:"Success",value:true});return}let R=o.push({a:l,cb:E=>y({_tag:"Success",value:E})});return ()=>{o.remove(R);}}),take:()=>j((l,f)=>{if(r.length>0){let c=r.shift();if(f({_tag:"Success",value:c}),o.length>0&&r.length<n){let E=o.shift();r.push(E.a),E.cb(true);}return}if(o.length>0){let c=o.shift();c.cb(true),f({_tag:"Success",value:c.a});return}if(i){f({_tag:"Failure",cause:{_tag:"Fail",error:a}});return}let y=s.push(f);return ()=>{s.remove(y);}})}}var Y={_tag:"End"};function q(n,e,t="backpressure"){let r$1=false,i=null,a=null,o=n,s$1=c=>f(c._tag==="None"?Y:{_tag:"Fail",error:c.value}),u=([c,E])=>h(()=>(o=E,{_tag:"Elem",value:c})),l$1=()=>b$1(k(o),s$1,u),f$1=c=>l(B(e,t),E=>{i=E;let x,Z=()=>x._tag!=="Elem"?f(void 0):Q(),v=z=>(x=z,l(i.offer(z),Z)),Q=()=>l(l$1(),v);return a=aa(Q(),c),f(void 0)}),y={_tag:"Async",register:(c,E)=>{(()=>{if(!r$1){r$1=true,O().fork(f$1(c)).join(()=>{R(c,E);});return}R(c,E);})();}};function R(c,E){let x=i.take();O().fork(x).join(Z=>{if(Z._tag!=="Success")return;let v=Z.value;switch(v._tag){case "Elem":E({_tag:"Success",value:[v.value,b(y)]});return;case "End":a?.interrupt?.(),E({_tag:"Failure",cause:{_tag:"Fail",error:r}});return;case "Fail":a?.interrupt?.(),E({_tag:"Failure",cause:{_tag:"Fail",error:s(v.error)}});return}});}return b(y)}var $=n=>n==="BackPressure"?"backpressure":n==="Dropping"?"dropping":"sliding";function ee(n,e="BackPressure"){let t=new Set,r=false,i$1=u=>{if(r)return f(false);let l$1=t.size;if(l$1===0)return f(true);if(l$1===1)return t.values().next().value.offer(u);let f$1=f(true);for(let y of t)f$1=l(f$1,R=>l(y.offer(u),c=>f(R&&c)));return f$1};return {publish:i$1,publishAll:u=>{let l$1=f(true),f$1=u[Symbol.iterator]();for(;;){let y=f$1.next();if(y.done)break;let R=y.value;l$1=l(l$1,c=>l(i$1(R),E=>f(c&&E)));}return l$1},subscribe:()=>r?i(()=>{throw {_tag:"HubClosed"}}):l(B(n,$(e)),u=>h(()=>(t.add(u),{...u,unsubscribe:()=>{t.has(u)&&(t.delete(u),u.shutdown());}}))),shutdown:()=>h(()=>{if(!r){r=true;for(let u of t)u.shutdown();t.clear();}})}}var $n=ee;function et(n,e){return p(n,t=>l(e.publish(t),()=>f(void 0)))}function nt(n){return d(l(n.subscribe(),e=>{let t=b(l(d$1(e.take(),r$1=>r),r=>f([r,t])));return f({stream:t,release:r=>h(()=>e.unsubscribe())})}))}var _;function G(){return _!==void 0||(_=G$1()?.BrassWasmChunkBuffer??null),_}var P=class{constructor(e,t=false){this.maxChunkSize=e;this.fallbackUsed=t;}maxChunkSize;fallbackUsed;engine="js";values=[];emittedChunks=0;emittedItems=0;flushes=0;get length(){return this.values.length}push(e){return this.values.length>=this.maxChunkSize?false:(this.values.push(e),true)}isFull(){return this.values.length>=this.maxChunkSize}isEmpty(){return this.values.length===0}takeChunk(){this.flushes+=1;let e=this.values;return this.values=[],e.length>0&&(this.emittedChunks+=1,this.emittedItems+=e.length),e}clear(){this.values=[];}stats(){return {engine:"js",fallbackUsed:this.fallbackUsed,data:{len:this.values.length,maxChunkSize:this.maxChunkSize,emittedChunks:this.emittedChunks,emittedItems:this.emittedItems,flushes:this.flushes}}}},T=class{engine="wasm";fallbackUsed=false;inner;constructor(e){let t=G();if(!t)throw new Error("brass-runtime wasm chunk buffer is not available. Run npm run build:wasm first.");this.inner=new t(e);}get length(){return this.inner.len()}get maxChunkSize(){return this.inner.max_chunk_size()}push(e){return this.inner.push(e)}isFull(){return this.inner.is_full()}isEmpty(){return this.inner.is_empty()}takeChunk(){return Array.from(this.inner.take_chunk())}clear(){this.inner.clear();}stats(){return {engine:"wasm",fallbackUsed:false,data:JSON.parse(this.inner.stats_json())}}};function ne(n,e={}){let t=Math.max(1,n|0),r=e.engine??"auto";return r==="js"?new P(t,false):r==="wasm"?new T(t):G()?new T(t):new P(t,true)}function F(n,e,t={}){let r$1=Math.max(1,e|0),i=o=>b(a(o,ne(r$1,t))),a=(o,s)=>b$1(k(o),u=>u._tag==="None"&&!s.isEmpty()?f([s.takeChunk(),b(g(r))]):g(u),([u,l])=>(s.push(u),s.isFull()?f([s.takeChunk(),i(l)]):a(l,s)));return i(n)}function pt(n,e,t,r={}){let i=(a,o)=>{if(a.length>0){let[s,...u]=a;return b(f([s,i(u,o)]))}return b(b$1(k(o),s=>g(s),([s,u])=>{let l=t(s);return k(i(l,u))}))};return i([],F(n,e,r))}function L(n,e,t={}){return(r=>{let i=F(r,n,t),a$1=(o,s)=>{if(o.length>0){let[u,...l]=o;return b(f([u,a$1(l,s)]))}return b(b$1(d$1(k(s),u=>a(u)),u=>g(u),([u,l])=>b$1(d$1(e(u),f=>({_tag:"Some",value:f})),f=>g(f),f=>k(a$1(f,l)))))};return a$1([],i)})}function kt(n,e){return e(n)}function te(n,e){return(t=>e(n(t)))}function bt(n,e){return te(e,n)}function xt(){return(n=>n)}function vt(n){return(e=>{let t=a=>g(a),r=([a,o])=>f([n(a),i(o)]),i=a=>b(b$1(k(a),t,r));return i(e)})}function Ct(n){return(e=>{let t=o=>g(o),r=([o,s])=>n(o)?f([o,a(s)]):i(s),i=o=>b$1(k(o),t,r),a=o=>b(i(o));return a(e)})}function Zt(n){return(e=>{let t=a=>g(a),r=a=>b$1(k(a),t,([o,s])=>{let u=n(o);return u._tag==="Some"?f([u.value,i(s)]):r(s)}),i=a=>b(r(a));return i(e)})}function wt(n){let e=Math.max(0,n|0);return(t=>{let r=(i,a)=>a<=0?f$1():b(b$1(k(i),o=>g(o),([o,s])=>f([o,r(s,a-1)])));return r(t,e)})}function Ot(n){let e=Math.max(0,n|0);return(t=>{let r=(i,a)=>a<=0?i:b(b$1(k(i),o=>g(o),([o,s])=>k(r(s,a-1))));return r(t,e)})}function re(n){return(e=>{let t=i=>d$1(i,a=>s(a)),r=i=>b(b$1(d$1(k(i),a$1=>a(a$1)),a=>g(a),([a,o])=>b$1(t(n(a)),s=>g(s),s=>f([s,r(o)]))));return r(e)})}function Bt(n){return re(e=>l(n(e),()=>f(e)))}function _t(n,e={}){return(t=>F(t,n,e))}function Pt(n,e,t={}){return L(n,e,t)}function Tt(n,e="backpressure"){return(t=>q(t,n,e))}function Ft(n){let e=Math.max(1,n|0);return(t=>{let r=(a,o,s)=>o<=0?f({chunk:s,rest:a}):b$1(k(a),u=>u._tag==="None"?f({chunk:s,rest:f$1()}):g(u),([u,l])=>r(l,o-1,[...s,u])),i=a=>b(b$1(k(a),o=>g(o),([o,s])=>l(r(s,e-1,[o]),({chunk:u,rest:l})=>f([u,i(l)]))));return i(t)})}function It(n,e,t=false){return {engine:n,data:e,fallbackUsed:t}}function Ht(n,e,t){return {requested:n,engine:e,data:t,fallbackUsed:n==="auto"&&e!=="wasm"}}export{te as andThen,B as bounded,$n as broadcast,et as broadcastToHub,q as buffer,Tt as bufferP,F as chunks,_t as chunksP,bt as compose,Ot as dropP,It as engineStats,Zt as filterMapP,Ct as filterP,nt as fromHub,Ft as groupedP,xt as identity,An as linkAbortController,En as makeCancelToken,ee as makeHub,ne as makeStreamChunker,pt as mapChunks,L as mapChunksEffect,Pt as mapChunksEffectP,re as mapEffectP,vt as mapP,Ht as selectedEngineStats,wt as takeP,Bt as tapEffectP,kt as via};
@@ -1,4 +1,4 @@
1
- import { Z as ZIO, O as Option, E as Exit, A as Async } from './effect-NSaHksNl.js';
1
+ import { Z as ZIO, O as Option, E as Exit, A as Async } from './effect-ISvXPLgc.js';
2
2
 
3
3
  type Empty<R, E, A> = {
4
4
  readonly _tag: "Empty";
@@ -1,4 +1,4 @@
1
- import { Z as ZIO, O as Option, E as Exit, A as Async } from './effect-NSaHksNl.mjs';
1
+ import { Z as ZIO, O as Option, E as Exit, A as Async } from './effect-ISvXPLgc.mjs';
2
2
 
3
3
  type Empty<R, E, A> = {
4
4
  readonly _tag: "Empty";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brass-runtime",
3
- "version": "1.12.1",
3
+ "version": "1.13.2",
4
4
  "description": "Effect runtime utilities for TypeScript",
5
5
  "license": "MIT",
6
6
  "author": "Augusto Vivaldelli",
@@ -23,10 +23,16 @@
23
23
  "import": "./dist/agent/index.js",
24
24
  "require": "./dist/agent/index.cjs"
25
25
  },
26
- "./package.json": "./package.json"
26
+ "./package.json": "./package.json",
27
+ "./wasm/pkg/brass_runtime_wasm_engine.js": "./wasm/pkg/brass_runtime_wasm_engine.js",
28
+ "./wasm/pkg/brass_runtime_wasm_engine_bg.wasm": "./wasm/pkg/brass_runtime_wasm_engine_bg.wasm"
27
29
  },
28
30
  "files": [
29
31
  "dist",
32
+ "wasm/pkg/brass_runtime_wasm_engine.js",
33
+ "wasm/pkg/brass_runtime_wasm_engine_bg.wasm",
34
+ "wasm/pkg/package.json",
35
+ "wasm/pkg/*.d.ts",
30
36
  "README.md",
31
37
  "LICENSE",
32
38
  "package.json"
@@ -50,12 +56,18 @@
50
56
  "scripts": {
51
57
  "dev": "tsx src/examples/index.ts",
52
58
  "clean": "rimraf dist",
59
+ "test": "vitest run",
60
+ "test:watch": "vitest",
61
+ "test:coverage": "vitest run --coverage",
62
+ "test:types": "tsc -p tsconfig.json --noEmit",
63
+ "check": "npm run test:types && npm run test && npm run test:coverage",
64
+ "check:full": "npm run clean && npm run build && npm run test",
53
65
  "build": "tsup",
54
66
  "build:legacy": "npm run clean && npm run build:types && npm run build:esm && npm run build:cjs",
55
67
  "build:types": "tsc -p tsconfig.types.json",
56
68
  "build:esm": "tsc -p tsconfig.esm.json",
57
69
  "build:cjs": "tsc -p tsconfig.cjs.json",
58
- "prepublishOnly": "npm run build",
70
+ "prepublishOnly": "npm run build:wasm && npm run build",
59
71
  "agent:dev": "tsx src/agent/cli/main.ts",
60
72
  "agent:doctor": "tsx src/agent/cli/main.ts --doctor",
61
73
  "agent:vscode:package": "node scripts/install-vscode-extension.mjs --no-code-install --no-settings",
@@ -73,23 +85,22 @@
73
85
  "agent:vscode:install:global": "npm run agent:link && node scripts/install-vscode-extension.mjs --use-global-command --no-root-build",
74
86
  "agent:vscode:bundle": "npm run build && node scripts/prepare-vscode-bundle.mjs",
75
87
  "agent:vscode:uninstall:global": "npm run agent:vscode:clean && npm run agent:unlink",
76
- "agent:vscode:reinstall:global": "npm run agent:vscode:uninstall:global && npm run agent:vscode:install:global"
88
+ "agent:vscode:reinstall:global": "npm run agent:vscode:uninstall:global && npm run agent:vscode:install:global",
89
+ "benchmark": "tsx src/benchmarks/runner.ts",
90
+ "benchmark:json": "tsx src/benchmarks/runner.ts --json",
91
+ "test:coverage:html": "vitest run --coverage --reporter=default",
92
+ "build:wasm": "cd crates/brass-runtime-wasm-engine && wasm-pack build --target nodejs --out-dir ../../wasm/pkg"
77
93
  },
78
94
  "devDependencies": {
79
- "@semantic-release/changelog": "^6.0.0",
80
- "@semantic-release/commit-analyzer": "^13.0.0",
81
- "@semantic-release/git": "^10.0.0",
82
- "@semantic-release/github": "^11.0.0",
83
- "@semantic-release/npm": "^13.1.3",
84
- "@semantic-release/release-notes-generator": "^14.0.0",
85
- "@types/node": "^25.6.0",
86
- "conventional-changelog-conventionalcommits": "^7.x.x",
95
+ "@types/node": "^22.15.0",
96
+ "@vitest/coverage-v8": "^4.1.5",
97
+ "conventional-changelog-conventionalcommits": "^9.3.1",
98
+ "fast-check": "^4.7.0",
87
99
  "rimraf": "^6.1.2",
88
- "semantic-release": "^25.0.2",
89
- "ts-node-dev": "^2.0.0",
90
100
  "tsup": "^8.5.1",
91
101
  "tsx": "^4.21.0",
92
- "typescript": "^5.9.3"
102
+ "typescript": "^5.9.3",
103
+ "vitest": "^4.1.5"
93
104
  },
94
105
  "repository": {
95
106
  "type": "git",
@@ -100,6 +111,6 @@
100
111
  },
101
112
  "homepage": "https://github.com/BaldrVivaldelli/brass-runtime#readme",
102
113
  "bin": {
103
- "brass-agent": "./dist/agent/cli/main.cjs"
114
+ "brass-agent": "dist/agent/cli/main.cjs"
104
115
  }
105
116
  }
@@ -1 +0,0 @@
1
- var O={succeed:n=>({_tag:"Succeed",value:n}),fail:n=>({_tag:"Fail",error:n}),sync:n=>({_tag:"Sync",thunk:n}),async:n=>({_tag:"Async",register:n})};function v(n,e,t){return {_tag:"Fold",first:n,onFailure:e,onSuccess:t}}function ne(n,e){return v(n,t=>e(t),t=>R(t))}function B(n,e){return v(n,t=>k(e(t)),t=>R(t))}var g=()=>R(void 0),R=n=>({_tag:"Succeed",value:n}),k=n=>({_tag:"Fail",error:n}),I=n=>({_tag:"Sync",thunk:n}),re=n=>I(()=>n()),y=n=>({_tag:"Async",register:n});function P(n,e){return p(n,t=>R(e(t)))}function p(n,e){return {_tag:"FlatMap",first:n,andThen:e}}function se(n,e,t){return p(n,r=>(t.addFinalizer(s=>e(r,s)),R(r)))}function ie(n){return y(n)}var oe=n=>e=>{let t=e;return t.toPromise||(t.toPromise=r=>n(e,r),t.unsafeRunPromise=()=>n(e,{})),t},ae=(n,e)=>p(n,t=>R(e(t))),ce=(n,e)=>p(n,t=>I(()=>e(t)));var z={_tag:"None"},le=n=>({_tag:"Some",value:n});var h={fail:n=>({_tag:"Fail",error:n}),interrupt:()=>({_tag:"Interrupt"}),die:n=>({_tag:"Die",defect:n})},d={succeed:n=>({_tag:"Success",value:n}),failCause:n=>({_tag:"Failure",cause:n})},he=n=>R(n),G=n=>k(n),fe=n=>I(e=>n(e)),Ae=(n,e)=>P(n,e),Ee=(n,e)=>p(n,t=>e(t)),Re=(n,e)=>B(n,e),me=(n,e)=>v(n,t=>e(t),t=>R(t));function ge(n,e){return v(n,t=>t._tag==="Some"?k(t):e(),t=>R(t))}var ve=()=>G(z);var $=(r=>(r[r.Ok=0]="Ok",r[r.Grew=1]="Grew",r[r.Dropped=2]="Dropped",r))($||{}),C=class{buf;head=0;tail=0;size_=0;maxCap;constructor(e=1024,t=e){let r=Math.max(2,this.nextPow2(e)),s=Math.max(r,this.nextPow2(t));this.buf=new Array(r),this.maxCap=s;}get length(){return this.size_}get capacity(){return this.buf.length}isEmpty(){return this.size_===0}push(e){return this.size_===this.buf.length?this.buf.length>=this.maxCap?2:(this.grow(),this.buf[this.tail]=e,this.tail=this.tail+1&this.buf.length-1,this.size_++,1):(this.buf[this.tail]=e,this.tail=this.tail+1&this.buf.length-1,this.size_++,0)}shift(){if(this.size_===0)return;let e=this.buf[this.head];return this.buf[this.head]=void 0,this.head=this.head+1&this.buf.length-1,this.size_--,e}clear(){this.buf.fill(void 0),this.head=0,this.tail=0,this.size_=0;}grow(){let e=this.buf,t=Math.min(e.length*2,this.maxCap),r=new Array(t);for(let s=0;s<this.size_;s++)r[s]=e[this.head+s&e.length-1];this.buf=r,this.head=0,this.tail=this.size_;}nextPow2(e){let t=1;for(;t<e;)t<<=1;return t}};var U=2048,j=4096,J=(()=>{if(typeof globalThis.setImmediate=="function")return n=>globalThis.setImmediate(n);if(typeof globalThis.MessageChannel=="function"){let n=new globalThis.MessageChannel,e=null;return n.port1.onmessage=()=>{let t=e;e=null,t?.();},t=>{e=t,n.port2.postMessage(0);}}return n=>setTimeout(n,0)})(),N=class{queue=new C(1024);flushing=false;scheduled=false;schedule(e,t="anonymous"){if(typeof e=="function"&&(this.queue.push({tag:t,task:e}),!this.flushing&&!this.scheduled)){this.scheduled=true;let r=this.queue.length>j?"macro":"micro";this.requestFlush(r);}}requestFlush(e){e==="micro"?queueMicrotask(()=>this.flush()):J(()=>this.flush());}flush(){if(this.flushing)return;this.flushing=true,this.scheduled=false;let e=0;try{for(;e<U;){let t=this.queue.shift();if(!t)break;e++;try{t.task();}catch(r){console.error(`[Scheduler] task threw (tag=${t.tag})`,r);}}}finally{if(this.flushing=false,this.queue.length>0&&!this.scheduled){this.scheduled=true;let t=e>=U||this.queue.length>j?"macro":"micro";this.requestFlush(t);}}}},b=new N;var M={parent:null,patch:Object.create(null)};function q(n,e){let t=L(n);return {initChild(r,s,i){let o=s?.fiberContext,a=V(t,o?.trace??null);r.fiberContext={log:o?.log??M,trace:a},r.parentFiberId=s?.id,r.name=t.childName(s?.name),i!==void 0&&(r.scopeId=i),e.emit({type:"fiber.start",fiberId:r.id,parentFiberId:s?.id,scopeId:r.scopeId,name:r.name},{fiberId:s?.id,traceId:o?.trace?.traceId,spanId:o?.trace?.spanId});}}}function L(n){let e={newTraceId:()=>Z("trace"),newSpanId:()=>Z("span")},t=n?.brass,r=t?.tracer??e,s=t?.traceSeed,i=t?.childName??(o=>o?`${o}/child`:void 0);return {tracer:r,seed:s,childName:i}}function Z(n){let e=globalThis.crypto;return typeof e?.randomUUID=="function"?e.randomUUID():`${n}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function V(n,e){return e?{traceId:e.traceId,spanId:n.tracer.newSpanId(),parentSpanId:e.spanId,sampled:e.sampled}:n.seed?{...n.seed}:{traceId:n.tracer.newTraceId(),spanId:n.tracer.newSpanId(),sampled:true}}var Q={emit(){}},F=class n{env;scheduler;hooks;forkPolicy;registry;constructor(e){this.env=e.env,this.scheduler=e.scheduler??b,this.hooks=e.hooks??Q,this.forkPolicy=q(this.env,this.hooks);}provide(e){return new n({env:Object.assign({},this.env,e),scheduler:this.scheduler,hooks:this.hooks})}emit(e){let t=x(),r={fiberId:t?.id,scopeId:t?.scopeId,traceId:t?.fiberContext?.trace?.traceId,spanId:t?.fiberContext?.trace?.spanId};this.hooks.emit(e,r);}fork(e,t){let r=x(),s=new _(this,e);return t!==void 0&&(s.scopeId=t),this.forkPolicy.initChild(s,r,t),s.schedule("initial-step"),s}unsafeRunAsync(e,t){this.fork(e).join(t);}toPromise(e){return new Promise((t,r)=>{this.fork(e).join(i=>{if(i._tag==="Success")t(i.value);else {let o=i.cause;o?._tag==="Fail"?r(o.error):r(new Error("Interrupted"));}});})}unsafeRun(e){this.unsafeRunAsync(e,()=>{});}delay(e,t){return y((r,s)=>{let i=setTimeout(()=>{this.unsafeRunAsync(t,s);},e);return ()=>clearTimeout(i)})}static make(e,t=b){return new n({env:e,scheduler:t})}log(e,t,r){this.emit({type:"log",level:e,message:t,fields:r});}};function ze(n,e){return F.make(e??{}).fork(n)}function T(n,e,t){F.make(e??{}).unsafeRunAsync(n,t);}function Ue(n,e){return F.make(e??{}).toPromise(n)}function je(n,e){return {_tag:"Async",register:(t,r)=>{let s=new AbortController,i=false;return n(s.signal,t).then(o=>{i||(i=true,r(d.succeed(o)));}).catch(o=>{i||(i=true,r(d.failCause(h.fail(e(o)))));}),()=>{i||(i=true,s.abort(),r(d.failCause(h.interrupt())));}}}}function Me(n,e,t,r){T(n,e,s=>{s._tag==="Failure"?t(s.cause):r(s.value);});}var w=null,A={CONTINUE:"Continue",SUSPEND:"Suspend",DONE:"Done"},m={QUEUED:"Queued",RUNNING:"Running",SUSPENDED:"Suspended",DONE:"Done"},W=1,H=1024;function K(n){let e=n;for(;e._tag==="FlatMap"&&e.first?._tag==="FlatMap";){let t=e.first,r=e.andThen;e={_tag:"FlatMap",first:t.first,andThen:s=>({_tag:"FlatMap",first:t.andThen(s),andThen:r})};}return e}var _=class{id;runtime;closing=null;finishing=false;runState=m.RUNNING;interrupted=false;result=null;joiners=[];current;stack=[];fiberFinalizers=[];finalizersDrained=false;fiberContext;name;scopeId;constructor(e,t){this.id=W++,this.runtime=e,this.current=t;}get env(){return this.runtime.env}get scheduler(){return this.runtime.scheduler??b}emit(e){this.runtime.hooks.emit(e,{fiberId:this.id,scopeId:this.scopeId,traceId:this.fiberContext?.trace?.traceId,spanId:this.fiberContext?.trace?.spanId});}addFinalizer(e){this.fiberFinalizers.push(e);}status(){return this.result==null?"Running":this.result._tag==="Failure"&&this.result.cause._tag==="Interrupt"?"Interrupted":"Done"}join(e){this.result!=null?e(this.result):this.joiners.push(e);}interrupt(){this.result==null&&(this.interrupted||(this.interrupted=true,this.schedule("interrupt-step")));}schedule(e="step"){this.runState===m.DONE||this.runState===m.QUEUED||(this.runState===m.SUSPENDED&&this.emit({type:"fiber.resume",fiberId:this.id}),this.runState=m.QUEUED,this.scheduler.schedule(()=>{X(this,()=>{if(this.runState===m.DONE)return;switch(this.runState=m.RUNNING,this.step()){case A.CONTINUE:this.schedule("continue");return;case A.SUSPEND:this.runState=m.SUSPENDED,this.emit({type:"fiber.suspend",fiberId:this.id});return;case A.DONE:this.runState=m.DONE;return}});},`fiber#${this.id}.${e}`));}runFinalizersOnce(e){if(!this.finalizersDrained)for(this.finalizersDrained=true;this.fiberFinalizers.length>0;){let t=this.fiberFinalizers.pop();try{let r=t(e);r&&typeof r=="object"&&"_tag"in r&&T(r,this.env,()=>{});}catch{}}}notify(e){if(this.result!=null||this.closing!=null)return;this.finishing=true,this.closing=e,this.runFinalizersOnce(e),this.result=e;let t=e._tag==="Success"?"success":e.cause._tag==="Interrupt"?"interrupted":"failure";this.emit({type:"fiber.end",fiberId:this.id,status:t,error:e._tag==="Failure"?e.cause:void 0});for(let r of this.joiners)r(e);this.joiners.length=0;}onSuccess(e){let t=this.stack.pop();if(!t){this.notify(d.succeed(e));return}if(t._tag==="SuccessCont"){try{this.current=t.k(e);}catch(r){this.notify(d.failCause(h.die(r)));}return}try{this.current=t.onSuccess(e);}catch(r){this.notify(d.failCause(h.die(r)));}}onFailure(e){for(;this.stack.length>0;){let t=this.stack.pop();if(t._tag==="FoldCont")try{this.current=t.onFailure(e);return}catch(r){e=r;continue}}this.notify(d.failCause(h.fail(e)));}budget=H;step(){if(this.result!=null)return A.DONE;if(this.interrupted)return this.notify(d.failCause(h.interrupt())),A.DONE;for(this.budget=H;this.budget-- >0;){this.current=K(this.current);let e=this.current;switch(e._tag){case "Succeed":{this.onSuccess(e.value);break}case "Fail":{this.onFailure(e.error);break}case "FlatMap":{this.stack.push({_tag:"SuccessCont",k:e.andThen}),this.current=e.first;break}case "Fold":{this.stack.push({_tag:"FoldCont",onFailure:e.onFailure,onSuccess:e.onSuccess}),this.current=e.first;break}case "Async":{if(this.finishing)return this.result!=null?A.DONE:A.CONTINUE;let t=false,r=i=>{if(t||(t=true,this.result!=null||this.closing!=null))return;if(i._tag==="Success"){this.current=O.succeed(i.value),this.schedule("async-resume");return}let o=i.cause;if(o._tag==="Interrupt"){this.notify(d.failCause(h.interrupt()));return}if(o._tag==="Fail"){this.current=O.fail(o.error),this.schedule("async-resume");return}this.notify(d.failCause(h.die(o.defect)));},s=e.register(this.env,r);return typeof s=="function"&&this.addFinalizer(()=>{t=true;try{s();}catch{}}),A.SUSPEND}case "Fork":{let t=this.runtime.fork(e.effect,e.scopeId);this.onSuccess(t);break}case "Sync":{try{let t=e.thunk(this.env);this.onSuccess(t);}catch(t){this.onFailure(t);}break}default:return this.onFailure(new Error(`Unknown opcode: ${e._tag}`)),A.CONTINUE}if(this.result!=null)return A.DONE}return A.CONTINUE}};function x(){return w}function Ve(){let n=x();if(!n?.runtime)throw new Error("unsafeGetCurrentRuntime: no current fiber/runtime");return n.runtime}function X(n,e){let t=w;w=n;try{return e()}finally{w=t;}}var Y=1;function ee(n){return y((e,t)=>{let r=n.length;if(r===0){t({_tag:"Success",value:void 0});return}for(let s of n)s.join(()=>{r-=1,r===0&&t({_tag:"Success",value:void 0});});})}var D=class n{constructor(e,t){this.runtime=e;this.parentScopeId=t;this.id=Y++;let r=this.parentScopeId??x()?.scopeId;this.runtime.emit({type:"scope.open",scopeId:this.id,parentScopeId:r});}id;closed=false;children=new Set;subScopes=new Set;finalizers=[];addFinalizer(e){if(this.closed)throw new Error("Trying to add finalizer to closed scope");this.finalizers.push(e);}subScope(){if(this.closed)throw new Error("Scope closed");let e=new n(this.runtime,this.id);return this.subScopes.add(e),e}fork(e){if(this.closed)throw new Error("Scope closed");let t=this.runtime.fork(e,this.id);return this.children.add(t),t.join(()=>this.children.delete(t)),t}close(e={_tag:"Success",value:void 0}){this.runtime.fork(this.closeAsync(e));}closeAsync(e={_tag:"Success",value:void 0},t={awaitChildren:true}){return p(g(),()=>y((r,s)=>{if(this.closed){s({_tag:"Success",value:void 0});return}this.closed=true;let i=Array.from(this.children),o=Array.from(this.subScopes);for(let l of i)l.interrupt();let a=o.reduceRight((l,c)=>p(l,()=>c.closeAsync(e,t)),g()),u=this.finalizers.reduceRight((l,c)=>p(l,()=>v(c(e),()=>g(),()=>g())),g()),f=t.awaitChildren?ee(i):g(),E=p(a,()=>p(f,()=>u));this.runtime.fork(E).join(()=>{let l=e._tag==="Success"?"success":e.cause._tag==="Interrupt"?"interrupted":"failure";this.runtime.emit({type:"scope.close",scopeId:this.id,status:l,error:e._tag==="Failure"&&e.cause._tag==="Fail"?e.cause.error:void 0}),s({_tag:"Success",value:void 0});});}))}};function te(n,e){return y((t,r)=>{let s=new D(n),i=false,o=u=>{n.fork(s.closeAsync(u)).join(()=>{i||(i=true,r(u));});},a=n.fork(e(s));return a.join(o),()=>{i||(a.interrupt(),n.fork(s.closeAsync(d.failCause(h.interrupt()))));}})}function tt(n,e){return te(n,t=>{let r=e(t);return r&&typeof r=="object"&&"_tag"in r?r:g()})}function it(n,e,t){return y((r,s)=>{let i=t.subScope(),o=false,a=E=>{o||(o=true,i.close(E),s(E));},u=i.fork(n),f=i.fork(e);u.join(a),f.join(a);})}function ot(n,e,t){return y((r,s)=>{let i=t.subScope(),o=null,a=null,u=false,f=()=>{if(!o||!a||u)return;if(u=true,o._tag==="Success"&&a._tag==="Success"){i.close({_tag:"Success",value:void 0}),s({_tag:"Success",value:[o.value,a.value]});return}let c;if(o._tag==="Failure")c=o.cause;else if(a._tag==="Failure")c=a.cause;else throw new Error("zipPar: unreachable state (no Failure exit)");let S={_tag:"Failure",cause:c};i.close(S),s(S);},E=i.fork(n),l=i.fork(e);E.join(c=>{o=c,f();}),l.join(c=>{a=c,f();});})}function at(n,e){return y((t,r)=>{let s=e.subScope(),i=new Array(n.length),o=0,a=false;n.forEach((u,f)=>{s.fork(u).join(l=>{if(!a){if(l._tag==="Failure"){a=true;let c={_tag:"Failure",cause:l.cause};s.close(c),r(c);return}if(i[f]=l.value,o++,o===n.length){a=true;let c={_tag:"Success",value:i};s.close({_tag:"Success",value:void 0}),r(c);}}});});})}function ct(n,e,t,r,s){return y((i,o)=>{let a=t.subScope(),u=false,f=a.fork(n),E=a.fork(e),l=c=>{a.fork(c).join(S=>{a.close(S),o(S);});};f.join(c=>{u||(u=true,l(r(c,E,a)));}),E.join(c=>{u||(u=true,l(s(c,f,a)));});})}export{Re as A,me as B,ge as C,ve as D,$ as E,C as F,N as G,b as H,_ as I,x as J,Ve as K,X as L,F as M,ze as N,T as O,Ue as P,je as Q,Me as R,D as S,te as T,tt as U,it as V,ot as W,at as X,ct as Y,O as a,v as b,ne as c,B as d,g as e,R as f,k as g,I as h,re as i,y as j,P as k,p as l,se as m,ie as n,oe as o,ae as p,ce as q,z as r,le as s,h as t,d as u,he as v,G as w,fe as x,Ae as y,Ee as z};
@@ -1 +0,0 @@
1
- 'use strict';var chunkT3QEEHK6_cjs=require('./chunk-T3QEEHK6.cjs');var N=e=>e._tag==="None"?chunkT3QEEHK6_cjs.r:chunkT3QEEHK6_cjs.s(e.value),A=e=>({_tag:"FromPull",pull:e}),T=(e,a)=>({_tag:"Scoped",acquire:e,release:a}),K=e=>({_tag:"Managed",acquire:e}),Q=(e,a,r=true)=>({_tag:"Merge",left:e,right:a,flip:r}),b=()=>({_tag:"Empty"}),$=e=>({_tag:"Emit",value:e}),B=(e,a)=>({_tag:"Concat",left:e,right:a}),z=e=>({_tag:"Flatten",stream:e});function G(e,a,r,t,n){return (o,E,R)=>{if(o._tag,o._tag,o._tag==="Success"){let[s,i]=o.value;E.interrupt();let d=A(e==="L"?k(i,r):k(a,i));return chunkT3QEEHK6_cjs.f([s,d])}if(o.cause._tag==="Interrupt")return chunkT3QEEHK6_cjs.j((s,i)=>{i(chunkT3QEEHK6_cjs.u.failCause(chunkT3QEEHK6_cjs.t.interrupt()));});let u=o.cause.error;return u._tag==="None"?c(e==="L"?r:a):chunkT3QEEHK6_cjs.g(u)}}function k(e,a,r,t){return chunkT3QEEHK6_cjs.j((n,o)=>{let R=chunkT3QEEHK6_cjs.K(),u=new chunkT3QEEHK6_cjs.S(R),s=c(e),i=c(a),d=G("L",e,a),y=G("R",e,a),m=chunkT3QEEHK6_cjs.Y(s,i,u,d,y);u.fork(m).join(h=>{u.close(h),o(h);});})}function me(e,a){return A(k(e,a))}function c(e){switch(e._tag){case "Empty":return chunkT3QEEHK6_cjs.w(chunkT3QEEHK6_cjs.r);case "Emit":return chunkT3QEEHK6_cjs.y(chunkT3QEEHK6_cjs.A(e.value,a=>chunkT3QEEHK6_cjs.s(a)),a=>[a,b()]);case "FromPull":return e.pull;case "Concat":return chunkT3QEEHK6_cjs.C(chunkT3QEEHK6_cjs.y(c(e.left),([a,r])=>[a,B(r,e.right)]),()=>c(e.right));case "Flatten":return chunkT3QEEHK6_cjs.z(c(e.stream),([a,r])=>chunkT3QEEHK6_cjs.C(chunkT3QEEHK6_cjs.y(c(a),([t,n])=>[t,B(n,z(r))]),()=>c(z(r))));case "Merge":return k(e.left,e.right,e.flip);case "Scoped":return chunkT3QEEHK6_cjs.j((a,r)=>{let t=chunkT3QEEHK6_cjs.K(),n=new chunkT3QEEHK6_cjs.S(t);chunkT3QEEHK6_cjs.J()?.addFinalizer(u=>{try{n.close(u);}catch{}});let E=u=>{if(u._tag==="Failure"){let s=u.cause.error;if(s&&typeof s=="object"&&s._tag==="None"){n.close({_tag:"Success",value:void 0});return}}n.close(u);},R=u=>A(chunkT3QEEHK6_cjs.j((s,i)=>{let d=c(u);chunkT3QEEHK6_cjs.R(d,s,y=>{let m=chunkT3QEEHK6_cjs.u.failCause(y);E(m),i(m);},([y,m])=>{i(chunkT3QEEHK6_cjs.u.succeed([y,R(m)]));});}));n.fork(e.acquire).join(u=>{if(u._tag==="Failure"){E(u),r({_tag:"Failure",cause:{_tag:"Fail",error:chunkT3QEEHK6_cjs.s(u.cause.error)}});return}n.addFinalizer(i=>e.release(i));let s=u.value;chunkT3QEEHK6_cjs.K().fork(c(R(s))).join(r);});});case "Managed":return chunkT3QEEHK6_cjs.j((a,r)=>{let t=chunkT3QEEHK6_cjs.K(),n=new chunkT3QEEHK6_cjs.S(t);chunkT3QEEHK6_cjs.J()?.addFinalizer(E=>{try{n.close(E);}catch{}});let o=E=>{if(E._tag==="Failure"){let R=E.cause.error;if(R&&typeof R=="object"&&R._tag==="None"){n.close({_tag:"Success",value:void 0});return}}n.close(E);};n.fork(e.acquire).join(E=>{if(E._tag==="Failure"){n.close(E),r({_tag:"Failure",cause:{_tag:"Fail",error:chunkT3QEEHK6_cjs.s(E.cause.error)}});return}let{stream:R,release:u}=E.value;n.addFinalizer(i=>u(i));let s=i=>A(chunkT3QEEHK6_cjs.j((d,y)=>{c(i)(d,m=>{if(m._tag==="Failure"){o(m),y(m);return}let[h,J]=m.value;y(chunkT3QEEHK6_cjs.u.succeed([h,s(J)]));});}));chunkT3QEEHK6_cjs.K().fork(c(s(R))).join(r);});})}}function X(e,a){throw new Error(a??`Unexpected value: ${String(e)}`)}function l(e,a){switch(e._tag){case "Empty":return b();case "Emit":return $(chunkT3QEEHK6_cjs.y(e.value,a));case "FromPull":return A(chunkT3QEEHK6_cjs.y(e.pull,([r,t])=>[a(r),l(t,a)]));case "Concat":return B(l(e.left,a),l(e.right,a));case "Flatten":{let r=l(e.stream,t=>l(t,a));return z(r)}case "Merge":return Q(l(e.left,a),l(e.right,a),e.flip);case "Scoped":return T(chunkT3QEEHK6_cjs.y(e.acquire,r=>l(r,a)),e.release);case "Managed":return K(chunkT3QEEHK6_cjs.y(e.acquire,({stream:r,release:t})=>({stream:l(r,a),release:t})));default:return X(e)}}function Ae(e,a){let r=t=>A(t>a?chunkT3QEEHK6_cjs.g(chunkT3QEEHK6_cjs.r):chunkT3QEEHK6_cjs.f([t,r(t+1)]));return r(e)}function Y(e,a){let r=chunkT3QEEHK6_cjs.b(chunkT3QEEHK6_cjs.d(c(e),t=>N(t)),t=>chunkT3QEEHK6_cjs.g(t),([t,n])=>chunkT3QEEHK6_cjs.b(chunkT3QEEHK6_cjs.d(c(a),o=>N(o)),o=>chunkT3QEEHK6_cjs.g(o),([o,E])=>chunkT3QEEHK6_cjs.f([[t,o],Y(n,E)])));return A(r)}function le(e,a){let r=t=>chunkT3QEEHK6_cjs.b(chunkT3QEEHK6_cjs.d(c(t),n=>N(n)),n=>n._tag==="None"?chunkT3QEEHK6_cjs.f(void 0):chunkT3QEEHK6_cjs.g(n),([n,o])=>chunkT3QEEHK6_cjs.l(chunkT3QEEHK6_cjs.d(a(n),E=>chunkT3QEEHK6_cjs.s(E)),()=>r(o)));return chunkT3QEEHK6_cjs.b(r(e),t=>t._tag==="None"?chunkT3QEEHK6_cjs.f(void 0):chunkT3QEEHK6_cjs.g(t.value),()=>chunkT3QEEHK6_cjs.f(void 0))}function ye(e){let a=b();for(let r=e.length-1;r>=0;r--){let t=$(chunkT3QEEHK6_cjs.v(e[r]));a=B(t,a);}return a}function pe(e){let a=(r,t)=>chunkT3QEEHK6_cjs.b(c(r),n=>n._tag==="None"?chunkT3QEEHK6_cjs.v(t):chunkT3QEEHK6_cjs.w(n),([n,o])=>a(o,[...t,n]));return chunkT3QEEHK6_cjs.A(a(e,[]),r=>{if(r._tag==="Some")return r.value;throw new Error("unreachable: stream end handled as success")})}function ee(e,a){let r=chunkT3QEEHK6_cjs.j((t,n)=>{e.read().then(({done:o,value:E})=>{if(o){n({_tag:"Failure",cause:{_tag:"Fail",error:chunkT3QEEHK6_cjs.r}});return}n({_tag:"Success",value:[E,A(r)]});}).catch(o=>{n({_tag:"Failure",cause:{_tag:"Fail",error:chunkT3QEEHK6_cjs.s(a(o))}});});});return A(r)}function Se(e,a){if(!e)return b();let r;return T(chunkT3QEEHK6_cjs.x(()=>(r=e.getReader(),ee(r,a))),()=>chunkT3QEEHK6_cjs.h(()=>{try{r?.cancel();}catch{}}))}exports.a=N;exports.b=A;exports.c=T;exports.d=K;exports.e=Q;exports.f=b;exports.g=$;exports.h=B;exports.i=z;exports.j=me;exports.k=c;exports.l=X;exports.m=l;exports.n=Ae;exports.o=Y;exports.p=le;exports.q=ye;exports.r=pe;exports.s=Se;
@@ -1 +0,0 @@
1
- import {r,s,j,K as K$1,S,J,z as z$1,C,y,A as A$1,w,b as b$1,d,g,f,v,h,x,u,R,l as l$1,Y as Y$1,t}from'./chunk-63MXGA7P.js';var N=e=>e._tag==="None"?r:s(e.value),A=e=>({_tag:"FromPull",pull:e}),T=(e,a)=>({_tag:"Scoped",acquire:e,release:a}),K=e=>({_tag:"Managed",acquire:e}),Q=(e,a,r=true)=>({_tag:"Merge",left:e,right:a,flip:r}),b=()=>({_tag:"Empty"}),$=e=>({_tag:"Emit",value:e}),B=(e,a)=>({_tag:"Concat",left:e,right:a}),z=e=>({_tag:"Flatten",stream:e});function G(e,a,r,t$1,n){return (o,E,R)=>{if(o._tag,o._tag,o._tag==="Success"){let[s,i]=o.value;E.interrupt();let d=A(e==="L"?k(i,r):k(a,i));return f([s,d])}if(o.cause._tag==="Interrupt")return j((s,i)=>{i(u.failCause(t.interrupt()));});let u$1=o.cause.error;return u$1._tag==="None"?c(e==="L"?r:a):g(u$1)}}function k(e,a,r,t){return j((n,o)=>{let R=K$1(),u=new S(R),s=c(e),i=c(a),d=G("L",e,a),y=G("R",e,a),m=Y$1(s,i,u,d,y);u.fork(m).join(h=>{u.close(h),o(h);});})}function me(e,a){return A(k(e,a))}function c(e){switch(e._tag){case "Empty":return w(r);case "Emit":return y(A$1(e.value,a=>s(a)),a=>[a,b()]);case "FromPull":return e.pull;case "Concat":return C(y(c(e.left),([a,r])=>[a,B(r,e.right)]),()=>c(e.right));case "Flatten":return z$1(c(e.stream),([a,r])=>C(y(c(a),([t,n])=>[t,B(n,z(r))]),()=>c(z(r))));case "Merge":return k(e.left,e.right,e.flip);case "Scoped":return j((a,r)=>{let t=K$1(),n=new S(t);J()?.addFinalizer(u=>{try{n.close(u);}catch{}});let E=u=>{if(u._tag==="Failure"){let s=u.cause.error;if(s&&typeof s=="object"&&s._tag==="None"){n.close({_tag:"Success",value:void 0});return}}n.close(u);},R$1=u$1=>A(j((s,i)=>{let d=c(u$1);R(d,s,y=>{let m=u.failCause(y);E(m),i(m);},([y,m])=>{i(u.succeed([y,R$1(m)]));});}));n.fork(e.acquire).join(u=>{if(u._tag==="Failure"){E(u),r({_tag:"Failure",cause:{_tag:"Fail",error:s(u.cause.error)}});return}n.addFinalizer(i=>e.release(i));let s$1=u.value;K$1().fork(c(R$1(s$1))).join(r);});});case "Managed":return j((a,r)=>{let t=K$1(),n=new S(t);J()?.addFinalizer(E=>{try{n.close(E);}catch{}});let o=E=>{if(E._tag==="Failure"){let R=E.cause.error;if(R&&typeof R=="object"&&R._tag==="None"){n.close({_tag:"Success",value:void 0});return}}n.close(E);};n.fork(e.acquire).join(E=>{if(E._tag==="Failure"){n.close(E),r({_tag:"Failure",cause:{_tag:"Fail",error:s(E.cause.error)}});return}let{stream:R,release:u$1}=E.value;n.addFinalizer(i=>u$1(i));let s$1=i=>A(j((d,y)=>{c(i)(d,m=>{if(m._tag==="Failure"){o(m),y(m);return}let[h,J]=m.value;y(u.succeed([h,s$1(J)]));});}));K$1().fork(c(s$1(R))).join(r);});})}}function X(e,a){throw new Error(a??`Unexpected value: ${String(e)}`)}function l(e,a){switch(e._tag){case "Empty":return b();case "Emit":return $(y(e.value,a));case "FromPull":return A(y(e.pull,([r,t])=>[a(r),l(t,a)]));case "Concat":return B(l(e.left,a),l(e.right,a));case "Flatten":{let r=l(e.stream,t=>l(t,a));return z(r)}case "Merge":return Q(l(e.left,a),l(e.right,a),e.flip);case "Scoped":return T(y(e.acquire,r=>l(r,a)),e.release);case "Managed":return K(y(e.acquire,({stream:r,release:t})=>({stream:l(r,a),release:t})));default:return X(e)}}function Ae(e,a){let r$1=t=>A(t>a?g(r):f([t,r$1(t+1)]));return r$1(e)}function Y(e,a){let r=b$1(d(c(e),t=>N(t)),t=>g(t),([t,n])=>b$1(d(c(a),o=>N(o)),o=>g(o),([o,E])=>f([[t,o],Y(n,E)])));return A(r)}function le(e,a){let r=t=>b$1(d(c(t),n=>N(n)),n=>n._tag==="None"?f(void 0):g(n),([n,o])=>l$1(d(a(n),E=>s(E)),()=>r(o)));return b$1(r(e),t=>t._tag==="None"?f(void 0):g(t.value),()=>f(void 0))}function ye(e){let a=b();for(let r=e.length-1;r>=0;r--){let t=$(v(e[r]));a=B(t,a);}return a}function pe(e){let a=(r,t)=>b$1(c(r),n=>n._tag==="None"?v(t):w(n),([n,o])=>a(o,[...t,n]));return A$1(a(e,[]),r=>{if(r._tag==="Some")return r.value;throw new Error("unreachable: stream end handled as success")})}function ee(e,a){let r$1=j((t,n)=>{e.read().then(({done:o,value:E})=>{if(o){n({_tag:"Failure",cause:{_tag:"Fail",error:r}});return}n({_tag:"Success",value:[E,A(r$1)]});}).catch(o=>{n({_tag:"Failure",cause:{_tag:"Fail",error:s(a(o))}});});});return A(r$1)}function Se(e,a){if(!e)return b();let r;return T(x(()=>(r=e.getReader(),ee(r,a))),()=>h(()=>{try{r?.cancel();}catch{}}))}export{N as a,A as b,T as c,K as d,Q as e,b as f,$ as g,B as h,z as i,me as j,c as k,X as l,l as m,Ae as n,Y as o,le as p,ye as q,pe as r,Se as s};
@@ -1 +0,0 @@
1
- 'use strict';var O={succeed:n=>({_tag:"Succeed",value:n}),fail:n=>({_tag:"Fail",error:n}),sync:n=>({_tag:"Sync",thunk:n}),async:n=>({_tag:"Async",register:n})};function v(n,e,t){return {_tag:"Fold",first:n,onFailure:e,onSuccess:t}}function ne(n,e){return v(n,t=>e(t),t=>R(t))}function B(n,e){return v(n,t=>k(e(t)),t=>R(t))}var g=()=>R(void 0),R=n=>({_tag:"Succeed",value:n}),k=n=>({_tag:"Fail",error:n}),I=n=>({_tag:"Sync",thunk:n}),re=n=>I(()=>n()),y=n=>({_tag:"Async",register:n});function P(n,e){return p(n,t=>R(e(t)))}function p(n,e){return {_tag:"FlatMap",first:n,andThen:e}}function se(n,e,t){return p(n,r=>(t.addFinalizer(s=>e(r,s)),R(r)))}function ie(n){return y(n)}var oe=n=>e=>{let t=e;return t.toPromise||(t.toPromise=r=>n(e,r),t.unsafeRunPromise=()=>n(e,{})),t},ae=(n,e)=>p(n,t=>R(e(t))),ce=(n,e)=>p(n,t=>I(()=>e(t)));var z={_tag:"None"},le=n=>({_tag:"Some",value:n});var h={fail:n=>({_tag:"Fail",error:n}),interrupt:()=>({_tag:"Interrupt"}),die:n=>({_tag:"Die",defect:n})},d={succeed:n=>({_tag:"Success",value:n}),failCause:n=>({_tag:"Failure",cause:n})},he=n=>R(n),G=n=>k(n),fe=n=>I(e=>n(e)),Ae=(n,e)=>P(n,e),Ee=(n,e)=>p(n,t=>e(t)),Re=(n,e)=>B(n,e),me=(n,e)=>v(n,t=>e(t),t=>R(t));function ge(n,e){return v(n,t=>t._tag==="Some"?k(t):e(),t=>R(t))}var ve=()=>G(z);var $=(r=>(r[r.Ok=0]="Ok",r[r.Grew=1]="Grew",r[r.Dropped=2]="Dropped",r))($||{}),C=class{buf;head=0;tail=0;size_=0;maxCap;constructor(e=1024,t=e){let r=Math.max(2,this.nextPow2(e)),s=Math.max(r,this.nextPow2(t));this.buf=new Array(r),this.maxCap=s;}get length(){return this.size_}get capacity(){return this.buf.length}isEmpty(){return this.size_===0}push(e){return this.size_===this.buf.length?this.buf.length>=this.maxCap?2:(this.grow(),this.buf[this.tail]=e,this.tail=this.tail+1&this.buf.length-1,this.size_++,1):(this.buf[this.tail]=e,this.tail=this.tail+1&this.buf.length-1,this.size_++,0)}shift(){if(this.size_===0)return;let e=this.buf[this.head];return this.buf[this.head]=void 0,this.head=this.head+1&this.buf.length-1,this.size_--,e}clear(){this.buf.fill(void 0),this.head=0,this.tail=0,this.size_=0;}grow(){let e=this.buf,t=Math.min(e.length*2,this.maxCap),r=new Array(t);for(let s=0;s<this.size_;s++)r[s]=e[this.head+s&e.length-1];this.buf=r,this.head=0,this.tail=this.size_;}nextPow2(e){let t=1;for(;t<e;)t<<=1;return t}};var U=2048,j=4096,J=(()=>{if(typeof globalThis.setImmediate=="function")return n=>globalThis.setImmediate(n);if(typeof globalThis.MessageChannel=="function"){let n=new globalThis.MessageChannel,e=null;return n.port1.onmessage=()=>{let t=e;e=null,t?.();},t=>{e=t,n.port2.postMessage(0);}}return n=>setTimeout(n,0)})(),N=class{queue=new C(1024);flushing=false;scheduled=false;schedule(e,t="anonymous"){if(typeof e=="function"&&(this.queue.push({tag:t,task:e}),!this.flushing&&!this.scheduled)){this.scheduled=true;let r=this.queue.length>j?"macro":"micro";this.requestFlush(r);}}requestFlush(e){e==="micro"?queueMicrotask(()=>this.flush()):J(()=>this.flush());}flush(){if(this.flushing)return;this.flushing=true,this.scheduled=false;let e=0;try{for(;e<U;){let t=this.queue.shift();if(!t)break;e++;try{t.task();}catch(r){console.error(`[Scheduler] task threw (tag=${t.tag})`,r);}}}finally{if(this.flushing=false,this.queue.length>0&&!this.scheduled){this.scheduled=true;let t=e>=U||this.queue.length>j?"macro":"micro";this.requestFlush(t);}}}},b=new N;var M={parent:null,patch:Object.create(null)};function q(n,e){let t=L(n);return {initChild(r,s,i){let o=s?.fiberContext,a=V(t,o?.trace??null);r.fiberContext={log:o?.log??M,trace:a},r.parentFiberId=s?.id,r.name=t.childName(s?.name),i!==void 0&&(r.scopeId=i),e.emit({type:"fiber.start",fiberId:r.id,parentFiberId:s?.id,scopeId:r.scopeId,name:r.name},{fiberId:s?.id,traceId:o?.trace?.traceId,spanId:o?.trace?.spanId});}}}function L(n){let e={newTraceId:()=>Z("trace"),newSpanId:()=>Z("span")},t=n?.brass,r=t?.tracer??e,s=t?.traceSeed,i=t?.childName??(o=>o?`${o}/child`:void 0);return {tracer:r,seed:s,childName:i}}function Z(n){let e=globalThis.crypto;return typeof e?.randomUUID=="function"?e.randomUUID():`${n}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function V(n,e){return e?{traceId:e.traceId,spanId:n.tracer.newSpanId(),parentSpanId:e.spanId,sampled:e.sampled}:n.seed?{...n.seed}:{traceId:n.tracer.newTraceId(),spanId:n.tracer.newSpanId(),sampled:true}}var Q={emit(){}},F=class n{env;scheduler;hooks;forkPolicy;registry;constructor(e){this.env=e.env,this.scheduler=e.scheduler??b,this.hooks=e.hooks??Q,this.forkPolicy=q(this.env,this.hooks);}provide(e){return new n({env:Object.assign({},this.env,e),scheduler:this.scheduler,hooks:this.hooks})}emit(e){let t=x(),r={fiberId:t?.id,scopeId:t?.scopeId,traceId:t?.fiberContext?.trace?.traceId,spanId:t?.fiberContext?.trace?.spanId};this.hooks.emit(e,r);}fork(e,t){let r=x(),s=new _(this,e);return t!==void 0&&(s.scopeId=t),this.forkPolicy.initChild(s,r,t),s.schedule("initial-step"),s}unsafeRunAsync(e,t){this.fork(e).join(t);}toPromise(e){return new Promise((t,r)=>{this.fork(e).join(i=>{if(i._tag==="Success")t(i.value);else {let o=i.cause;o?._tag==="Fail"?r(o.error):r(new Error("Interrupted"));}});})}unsafeRun(e){this.unsafeRunAsync(e,()=>{});}delay(e,t){return y((r,s)=>{let i=setTimeout(()=>{this.unsafeRunAsync(t,s);},e);return ()=>clearTimeout(i)})}static make(e,t=b){return new n({env:e,scheduler:t})}log(e,t,r){this.emit({type:"log",level:e,message:t,fields:r});}};function ze(n,e){return F.make(e??{}).fork(n)}function T(n,e,t){F.make(e??{}).unsafeRunAsync(n,t);}function Ue(n,e){return F.make(e??{}).toPromise(n)}function je(n,e){return {_tag:"Async",register:(t,r)=>{let s=new AbortController,i=false;return n(s.signal,t).then(o=>{i||(i=true,r(d.succeed(o)));}).catch(o=>{i||(i=true,r(d.failCause(h.fail(e(o)))));}),()=>{i||(i=true,s.abort(),r(d.failCause(h.interrupt())));}}}}function Me(n,e,t,r){T(n,e,s=>{s._tag==="Failure"?t(s.cause):r(s.value);});}var w=null,A={CONTINUE:"Continue",SUSPEND:"Suspend",DONE:"Done"},m={QUEUED:"Queued",RUNNING:"Running",SUSPENDED:"Suspended",DONE:"Done"},W=1,H=1024;function K(n){let e=n;for(;e._tag==="FlatMap"&&e.first?._tag==="FlatMap";){let t=e.first,r=e.andThen;e={_tag:"FlatMap",first:t.first,andThen:s=>({_tag:"FlatMap",first:t.andThen(s),andThen:r})};}return e}var _=class{id;runtime;closing=null;finishing=false;runState=m.RUNNING;interrupted=false;result=null;joiners=[];current;stack=[];fiberFinalizers=[];finalizersDrained=false;fiberContext;name;scopeId;constructor(e,t){this.id=W++,this.runtime=e,this.current=t;}get env(){return this.runtime.env}get scheduler(){return this.runtime.scheduler??b}emit(e){this.runtime.hooks.emit(e,{fiberId:this.id,scopeId:this.scopeId,traceId:this.fiberContext?.trace?.traceId,spanId:this.fiberContext?.trace?.spanId});}addFinalizer(e){this.fiberFinalizers.push(e);}status(){return this.result==null?"Running":this.result._tag==="Failure"&&this.result.cause._tag==="Interrupt"?"Interrupted":"Done"}join(e){this.result!=null?e(this.result):this.joiners.push(e);}interrupt(){this.result==null&&(this.interrupted||(this.interrupted=true,this.schedule("interrupt-step")));}schedule(e="step"){this.runState===m.DONE||this.runState===m.QUEUED||(this.runState===m.SUSPENDED&&this.emit({type:"fiber.resume",fiberId:this.id}),this.runState=m.QUEUED,this.scheduler.schedule(()=>{X(this,()=>{if(this.runState===m.DONE)return;switch(this.runState=m.RUNNING,this.step()){case A.CONTINUE:this.schedule("continue");return;case A.SUSPEND:this.runState=m.SUSPENDED,this.emit({type:"fiber.suspend",fiberId:this.id});return;case A.DONE:this.runState=m.DONE;return}});},`fiber#${this.id}.${e}`));}runFinalizersOnce(e){if(!this.finalizersDrained)for(this.finalizersDrained=true;this.fiberFinalizers.length>0;){let t=this.fiberFinalizers.pop();try{let r=t(e);r&&typeof r=="object"&&"_tag"in r&&T(r,this.env,()=>{});}catch{}}}notify(e){if(this.result!=null||this.closing!=null)return;this.finishing=true,this.closing=e,this.runFinalizersOnce(e),this.result=e;let t=e._tag==="Success"?"success":e.cause._tag==="Interrupt"?"interrupted":"failure";this.emit({type:"fiber.end",fiberId:this.id,status:t,error:e._tag==="Failure"?e.cause:void 0});for(let r of this.joiners)r(e);this.joiners.length=0;}onSuccess(e){let t=this.stack.pop();if(!t){this.notify(d.succeed(e));return}if(t._tag==="SuccessCont"){try{this.current=t.k(e);}catch(r){this.notify(d.failCause(h.die(r)));}return}try{this.current=t.onSuccess(e);}catch(r){this.notify(d.failCause(h.die(r)));}}onFailure(e){for(;this.stack.length>0;){let t=this.stack.pop();if(t._tag==="FoldCont")try{this.current=t.onFailure(e);return}catch(r){e=r;continue}}this.notify(d.failCause(h.fail(e)));}budget=H;step(){if(this.result!=null)return A.DONE;if(this.interrupted)return this.notify(d.failCause(h.interrupt())),A.DONE;for(this.budget=H;this.budget-- >0;){this.current=K(this.current);let e=this.current;switch(e._tag){case "Succeed":{this.onSuccess(e.value);break}case "Fail":{this.onFailure(e.error);break}case "FlatMap":{this.stack.push({_tag:"SuccessCont",k:e.andThen}),this.current=e.first;break}case "Fold":{this.stack.push({_tag:"FoldCont",onFailure:e.onFailure,onSuccess:e.onSuccess}),this.current=e.first;break}case "Async":{if(this.finishing)return this.result!=null?A.DONE:A.CONTINUE;let t=false,r=i=>{if(t||(t=true,this.result!=null||this.closing!=null))return;if(i._tag==="Success"){this.current=O.succeed(i.value),this.schedule("async-resume");return}let o=i.cause;if(o._tag==="Interrupt"){this.notify(d.failCause(h.interrupt()));return}if(o._tag==="Fail"){this.current=O.fail(o.error),this.schedule("async-resume");return}this.notify(d.failCause(h.die(o.defect)));},s=e.register(this.env,r);return typeof s=="function"&&this.addFinalizer(()=>{t=true;try{s();}catch{}}),A.SUSPEND}case "Fork":{let t=this.runtime.fork(e.effect,e.scopeId);this.onSuccess(t);break}case "Sync":{try{let t=e.thunk(this.env);this.onSuccess(t);}catch(t){this.onFailure(t);}break}default:return this.onFailure(new Error(`Unknown opcode: ${e._tag}`)),A.CONTINUE}if(this.result!=null)return A.DONE}return A.CONTINUE}};function x(){return w}function Ve(){let n=x();if(!n?.runtime)throw new Error("unsafeGetCurrentRuntime: no current fiber/runtime");return n.runtime}function X(n,e){let t=w;w=n;try{return e()}finally{w=t;}}var Y=1;function ee(n){return y((e,t)=>{let r=n.length;if(r===0){t({_tag:"Success",value:void 0});return}for(let s of n)s.join(()=>{r-=1,r===0&&t({_tag:"Success",value:void 0});});})}var D=class n{constructor(e,t){this.runtime=e;this.parentScopeId=t;this.id=Y++;let r=this.parentScopeId??x()?.scopeId;this.runtime.emit({type:"scope.open",scopeId:this.id,parentScopeId:r});}id;closed=false;children=new Set;subScopes=new Set;finalizers=[];addFinalizer(e){if(this.closed)throw new Error("Trying to add finalizer to closed scope");this.finalizers.push(e);}subScope(){if(this.closed)throw new Error("Scope closed");let e=new n(this.runtime,this.id);return this.subScopes.add(e),e}fork(e){if(this.closed)throw new Error("Scope closed");let t=this.runtime.fork(e,this.id);return this.children.add(t),t.join(()=>this.children.delete(t)),t}close(e={_tag:"Success",value:void 0}){this.runtime.fork(this.closeAsync(e));}closeAsync(e={_tag:"Success",value:void 0},t={awaitChildren:true}){return p(g(),()=>y((r,s)=>{if(this.closed){s({_tag:"Success",value:void 0});return}this.closed=true;let i=Array.from(this.children),o=Array.from(this.subScopes);for(let l of i)l.interrupt();let a=o.reduceRight((l,c)=>p(l,()=>c.closeAsync(e,t)),g()),u=this.finalizers.reduceRight((l,c)=>p(l,()=>v(c(e),()=>g(),()=>g())),g()),f=t.awaitChildren?ee(i):g(),E=p(a,()=>p(f,()=>u));this.runtime.fork(E).join(()=>{let l=e._tag==="Success"?"success":e.cause._tag==="Interrupt"?"interrupted":"failure";this.runtime.emit({type:"scope.close",scopeId:this.id,status:l,error:e._tag==="Failure"&&e.cause._tag==="Fail"?e.cause.error:void 0}),s({_tag:"Success",value:void 0});});}))}};function te(n,e){return y((t,r)=>{let s=new D(n),i=false,o=u=>{n.fork(s.closeAsync(u)).join(()=>{i||(i=true,r(u));});},a=n.fork(e(s));return a.join(o),()=>{i||(a.interrupt(),n.fork(s.closeAsync(d.failCause(h.interrupt()))));}})}function tt(n,e){return te(n,t=>{let r=e(t);return r&&typeof r=="object"&&"_tag"in r?r:g()})}function it(n,e,t){return y((r,s)=>{let i=t.subScope(),o=false,a=E=>{o||(o=true,i.close(E),s(E));},u=i.fork(n),f=i.fork(e);u.join(a),f.join(a);})}function ot(n,e,t){return y((r,s)=>{let i=t.subScope(),o=null,a=null,u=false,f=()=>{if(!o||!a||u)return;if(u=true,o._tag==="Success"&&a._tag==="Success"){i.close({_tag:"Success",value:void 0}),s({_tag:"Success",value:[o.value,a.value]});return}let c;if(o._tag==="Failure")c=o.cause;else if(a._tag==="Failure")c=a.cause;else throw new Error("zipPar: unreachable state (no Failure exit)");let S={_tag:"Failure",cause:c};i.close(S),s(S);},E=i.fork(n),l=i.fork(e);E.join(c=>{o=c,f();}),l.join(c=>{a=c,f();});})}function at(n,e){return y((t,r)=>{let s=e.subScope(),i=new Array(n.length),o=0,a=false;n.forEach((u,f)=>{s.fork(u).join(l=>{if(!a){if(l._tag==="Failure"){a=true;let c={_tag:"Failure",cause:l.cause};s.close(c),r(c);return}if(i[f]=l.value,o++,o===n.length){a=true;let c={_tag:"Success",value:i};s.close({_tag:"Success",value:void 0}),r(c);}}});});})}function ct(n,e,t,r,s){return y((i,o)=>{let a=t.subScope(),u=false,f=a.fork(n),E=a.fork(e),l=c=>{a.fork(c).join(S=>{a.close(S),o(S);});};f.join(c=>{u||(u=true,l(r(c,E,a)));}),E.join(c=>{u||(u=true,l(s(c,f,a)));});})}exports.A=Re;exports.B=me;exports.C=ge;exports.D=ve;exports.E=$;exports.F=C;exports.G=N;exports.H=b;exports.I=_;exports.J=x;exports.K=Ve;exports.L=X;exports.M=F;exports.N=ze;exports.O=T;exports.P=Ue;exports.Q=je;exports.R=Me;exports.S=D;exports.T=te;exports.U=tt;exports.V=it;exports.W=ot;exports.X=at;exports.Y=ct;exports.a=O;exports.b=v;exports.c=ne;exports.d=B;exports.e=g;exports.f=R;exports.g=k;exports.h=I;exports.i=re;exports.j=y;exports.k=P;exports.l=p;exports.m=se;exports.n=ie;exports.o=oe;exports.p=ae;exports.q=ce;exports.r=z;exports.s=le;exports.t=h;exports.u=d;exports.v=he;exports.w=G;exports.x=fe;exports.y=Ae;exports.z=Ee;