brass-runtime 1.12.0 → 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/README.md +58 -188
- package/dist/agent/cli/main.cjs +16 -0
- package/dist/agent/cli/main.d.mts +1 -0
- package/dist/agent/cli/main.d.ts +1 -0
- package/dist/agent/cli/main.js +16 -0
- package/dist/agent/index.cjs +1 -0
- package/dist/agent/index.d.mts +688 -0
- package/dist/agent/index.d.ts +688 -0
- package/dist/agent/index.js +1 -0
- package/dist/chunk-6OUI6UGZ.cjs +25 -0
- package/dist/chunk-JAQUSSUV.js +1 -0
- package/dist/chunk-K47BP5A2.cjs +2 -0
- package/dist/chunk-LTHJNW5A.js +2 -0
- package/dist/chunk-W6TVAMYC.js +25 -0
- package/dist/chunk-XPOARCND.cjs +1 -0
- package/dist/effect-ISvXPLgc.d.mts +797 -0
- package/dist/effect-ISvXPLgc.d.ts +797 -0
- package/dist/http/index.cjs +1 -0
- package/dist/http/index.d.mts +2 -1
- package/dist/http/index.d.ts +2 -1
- package/dist/http/index.js +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.d.mts +159 -39
- package/dist/index.d.ts +159 -39
- package/dist/index.js +1 -1
- package/dist/stream-BvukHxCv.d.ts +66 -0
- package/dist/stream-C0-LWnUP.d.mts +66 -0
- package/package.json +52 -14
- package/dist/chunk-5PIZGM6Q.js +0 -1
- package/dist/chunk-CNA5AQHG.mjs +0 -1
- package/dist/http/index.mjs +0 -1
- package/dist/index.mjs +0 -1
- package/dist/stream-DVfZWtYZ.d.mts +0 -430
- package/dist/stream-DVfZWtYZ.d.ts +0 -430
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkXPOARCND_cjs=require('../chunk-XPOARCND.cjs'),chunkK47BP5A2_cjs=require('../chunk-K47BP5A2.cjs');var b={make(t,e){return {get:t,set:e}},over(t,e){return r=>t.set(e(t.get(r)))(r)},compose(t,e){return b.make(r=>t.get(e.get(r)),r=>n=>e.set(t.set(r)(e.get(n)))(n))}};var A={headers:b.make(t=>t.headers??{},t=>e=>({...e,headers:t}))};var I=t=>e=>b.over(A.headers,r=>({...r,...t}))(e),C=t=>e=>b.over(A.headers,r=>({...t,...r}))(e),g=(t,e)=>r=>b.over(A.headers,n=>n[t]?n:{...n,[t]:e})(r);var v=t=>typeof t=="object"&&t!==null&&"_tag"in t,J=t=>v(t)?t:typeof t=="object"&&t!==null&&t.name==="AbortError"?{_tag:"Abort"}:{_tag:"FetchError",message:String(t)},M=t=>chunkK47BP5A2_cjs.da(e=>new Promise((r,n)=>{if(e.aborted)return n({_tag:"Abort"});let u=setTimeout(r,t),p=()=>{clearTimeout(u),n({_tag:"Abort"});};e.addEventListener("abort",p,{once:true});}),J);var lt=t=>e=>T(t(e)),T=t=>Object.assign((e=>t(e)),{with:e=>T(e(t))}),O=t=>t instanceof DOMException&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},k=t=>{if(t){if(typeof Headers<"u"&&t instanceof Headers){let e={};return t.forEach((r,n)=>e[n]=r),e}if(Array.isArray(t))return Object.fromEntries(t);if(typeof t=="object")return {...t}}},D=t=>e=>{let r=Object.keys(t).length?C(t)(e):e,n=k(e.init?.headers);return n&&Object.keys(n).length&&(r=C(n)(r)),r};function N(t={}){let e=t.baseUrl??"",r=t.headers??{},n=D(r);return u=>chunkK47BP5A2_cjs.da(async p=>{let y=n(u),i;try{i=new URL(y.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${y.url}`}}let a=performance.now(),s=await fetch(i,{...y.init??{},method:y.method,headers:A.headers.get(y),body:y.body,signal:p}),c={};s.headers.forEach((d,m)=>c[m]=d);let o=chunkXPOARCND_cjs.s(s.body,O);return {status:s.status,statusText:s.statusText,headers:c,body:o,ms:Math.round(performance.now()-a)}},O)}function _(t={}){let e=t.baseUrl??"",r=t.headers??{},n=D(r);return T(p=>chunkK47BP5A2_cjs.da(async y=>{let i=n(p),a;try{a=new URL(i.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${i.url}`}}let s=performance.now(),c=await fetch(a,{...i.init??{},method:i.method,headers:A.headers.get(i),body:i.body,signal:y}),o=await c.text(),d={};return c.headers.forEach((m,H)=>d[H]=m),{status:c.status,statusText:c.statusText,headers:d,bodyText:o,ms:Math.round(performance.now()-s)}},O))}var G=(t,e,r)=>Math.max(e,Math.min(r,t)),z=t=>t._tag==="FetchError",Z=t=>t===408||t===429||t===500||t===502||t===503||t===504,F=(t,e,r)=>{let n=e*Math.pow(2,t),u=G(n,0,r);return Math.floor(Math.random()*u)},$=t=>{let e=Object.keys(t).find(p=>p.toLowerCase()==="retry-after");if(!e)return;let r=t[e]?.trim();if(!r)return;let n=Number(r);if(Number.isFinite(n))return Math.max(0,Math.floor(n*1e3));let u=Date.parse(r);if(Number.isFinite(u))return Math.max(0,u-Date.now())},U=t=>e=>(r=>{let n=u=>chunkK47BP5A2_cjs.b(e(r),p=>{if(p._tag==="Abort"||p._tag==="BadUrl")return chunkK47BP5A2_cjs.g(p);if(!(u<t.maxRetries&&(t.retryOnError??z)(p)))return chunkK47BP5A2_cjs.g(p);let i=F(u,t.baseDelayMs,t.maxDelayMs);return chunkK47BP5A2_cjs.l(M(i),()=>n(u+1))},p=>{if(!(u<t.maxRetries&&(t.retryOnStatus??Z)(p.status)))return chunkK47BP5A2_cjs.f(p);let a=$(p.headers)??F(u,t.baseDelayMs,t.maxDelayMs);return chunkK47BP5A2_cjs.l(M(a),()=>n(u+1))});return n(0)});var K=["GET","HEAD","OPTIONS"],Q=t=>t===408||t===429||t===500||t===502||t===503||t===504,V=t=>t._tag==="FetchError";var X=(t,e,r)=>Math.max(e,Math.min(r,t)),L=(t,e,r)=>{let n=Math.max(0,e),u=Math.max(0,r),p=n*Math.pow(2,t),y=X(p,0,u);return Math.floor(Math.random()*y)},Y=(t,e)=>{let r=Object.keys(t).find(n=>n.toLowerCase()===e.toLowerCase());return r?t[r]:void 0},tt=t=>{let e=Y(t,"retry-after")?.trim();if(!e)return;let r=Number(e);if(Number.isFinite(r))return Math.max(0,Math.floor(r*1e3));let n=Date.parse(e);if(Number.isFinite(n))return Math.max(0,n-Date.now())},j=t=>e=>{let r=t.retryOnMethods??K,n=t.retryOnStatus??Q,u=t.retryOnError??V,p=i=>r.includes(i.method),y=(i,a)=>p(i)?chunkK47BP5A2_cjs.b(e(i),s=>{if(s._tag==="Abort"||s._tag==="BadUrl")return chunkK47BP5A2_cjs.g(s);if(!(a<t.maxRetries&&u(s)))return chunkK47BP5A2_cjs.g(s);let o=L(a,t.baseDelayMs,t.maxDelayMs);return chunkK47BP5A2_cjs.l(M(o),()=>y(i,a+1))},s=>{if(!(a<t.maxRetries&&n(s.status)))return chunkK47BP5A2_cjs.f(s);let d=tt(s.headers)??L(a,t.baseDelayMs,t.maxDelayMs);return chunkK47BP5A2_cjs.l(M(d),()=>y(i,a+1))}):e(i);return i=>y(i,0)};var et=(t,e)=>{try{return new URL(e,t??"").toString()}catch{return (t??"")+e}},B=(t={})=>{let e=_(t),r=a=>chunkK47BP5A2_cjs.o((s,c)=>chunkK47BP5A2_cjs.ca(s,c))(a),n=a=>e(a),u=a=>{let{headers:s,...c}=a??{};return {headers:k(s),init:c}},p=a=>s=>a?I(a)(s):s;return {cfg:t,wire:e,withPromise:r,requestRaw:n,splitInit:u,applyInitHeaders:p,buildReq:(a,s,c,o)=>{let d=u(c),m={method:a,url:s,...o&&o.length>0?{body:o}:{},init:d.init};return p(d.headers)(m)},toResponse:(a,s)=>({status:a.status,statusText:a.statusText,headers:a.headers,body:s})}};function _t(t={}){let e=B(t),r=n=>{let u=o=>n(o),p=o=>e.withPromise(u(o));return {request:p,get:(o,d)=>p(e.buildReq("GET",o,d)),post:(o,d,m)=>p(e.buildReq("POST",o,m,d)),getText:(o,d)=>{let m=e.buildReq("GET",o,d);return e.withPromise(chunkK47BP5A2_cjs.q(u(m),H=>e.toResponse(H,H.bodyText)))},getJson:(o,d)=>{let m=e.buildReq("GET",o,d),H=g("accept","application/json")(m);return e.withPromise(chunkK47BP5A2_cjs.q(u(H),l=>e.toResponse(l,JSON.parse(l.bodyText))))},postJson:(o,d,m)=>{let H=e.buildReq("POST",o,m,JSON.stringify(d??{})),l=g("content-type","application/json")(g("accept","application/json")(H));return e.withPromise(chunkK47BP5A2_cjs.q(u(l),P=>e.toResponse(P,JSON.parse(P.bodyText))))},with:o=>r(n.with(o)),withRetry:o=>r(n.with(j(o))),wire:n}};return r(e.wire)}function Ut(t={}){let e=B(t),r=(s,c,o)=>({request:s,urlFinal:et(e.cfg.baseUrl,s.url),startedAt:o,durationMs:c.ms}),n=s=>{let c=Date.now();return e.withPromise(chunkK47BP5A2_cjs.q(e.requestRaw(s),o=>({wire:o,meta:r(s,o,c)})))};return {request:n,get:(s,c)=>{let o=e.buildReq("GET",s,c);return n(o)},getText:(s,c)=>{let o=e.buildReq("GET",s,c),d=Date.now();return e.withPromise(chunkK47BP5A2_cjs.q(e.requestRaw(o),m=>({wire:m,response:e.toResponse(m,m.bodyText),meta:r(o,m,d)})))},getJson:(s,c)=>{let o=e.buildReq("GET",s,c),d=g("accept","application/json")(o),m=Date.now();return e.withPromise(chunkK47BP5A2_cjs.q(e.requestRaw(d),H=>({wire:H,response:e.toResponse(H,JSON.parse(H.bodyText)),meta:r(d,H,m)})))},post:(s,c,o)=>{let d=e.buildReq("POST",s,o,c);return n(d)},postJson:(s,c,o)=>{let d=e.buildReq("POST",s,o,JSON.stringify(c??{})),m=g("content-type","application/json")(g("accept","application/json")(d)),H=Date.now();return e.withPromise(chunkK47BP5A2_cjs.q(e.requestRaw(m),l=>({wire:l,response:e.toResponse(l,JSON.parse(l.bodyText)),meta:r(m,l,H)})))}}}function Lt(t={}){let e=N(t),r=n=>{let u=i=>chunkK47BP5A2_cjs.o((a,s)=>chunkK47BP5A2_cjs.ca(a,s))(i),p=i=>u(n(i)),y=(i,a)=>{let s={method:"GET",url:i,init:a},c=g("accept","*/*")(s);return p(c)};return {request:p,getStream:y,get:y,with:i=>r(i(n)),withRetry:i=>r(U(i)(n)),wire:n}};return r(e)}exports.decorate=T;exports.httpClient=_t;exports.httpClientStream=Lt;exports.httpClientWithMeta=Ut;exports.makeHttp=_;exports.makeHttpStream=N;exports.normalizeHeadersInit=k;exports.withMiddleware=lt;exports.withRetryStream=U;
|
package/dist/http/index.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A as Async, a as AsyncWithPromise } from '../effect-ISvXPLgc.mjs';
|
|
2
|
+
import { Z as ZStream } from '../stream-C0-LWnUP.mjs';
|
|
2
3
|
|
|
3
4
|
type RetryPolicy = {
|
|
4
5
|
maxRetries: number;
|
package/dist/http/index.d.ts
CHANGED
package/dist/http/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import {s}from'../chunk-JAQUSSUV.js';import {da,q,b as b$1,g as g$1,l,f,o,ca}from'../chunk-LTHJNW5A.js';var b={make(t,e){return {get:t,set:e}},over(t,e){return r=>t.set(e(t.get(r)))(r)},compose(t,e){return b.make(r=>t.get(e.get(r)),r=>n=>e.set(t.set(r)(e.get(n)))(n))}};var A={headers:b.make(t=>t.headers??{},t=>e=>({...e,headers:t}))};var I=t=>e=>b.over(A.headers,r=>({...r,...t}))(e),C=t=>e=>b.over(A.headers,r=>({...t,...r}))(e),g=(t,e)=>r=>b.over(A.headers,n=>n[t]?n:{...n,[t]:e})(r);var v=t=>typeof t=="object"&&t!==null&&"_tag"in t,J=t=>v(t)?t:typeof t=="object"&&t!==null&&t.name==="AbortError"?{_tag:"Abort"}:{_tag:"FetchError",message:String(t)},M=t=>da(e=>new Promise((r,n)=>{if(e.aborted)return n({_tag:"Abort"});let u=setTimeout(r,t),p=()=>{clearTimeout(u),n({_tag:"Abort"});};e.addEventListener("abort",p,{once:true});}),J);var lt=t=>e=>T(t(e)),T=t=>Object.assign((e=>t(e)),{with:e=>T(e(t))}),O=t=>t instanceof DOMException&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},k=t=>{if(t){if(typeof Headers<"u"&&t instanceof Headers){let e={};return t.forEach((r,n)=>e[n]=r),e}if(Array.isArray(t))return Object.fromEntries(t);if(typeof t=="object")return {...t}}},D=t=>e=>{let r=Object.keys(t).length?C(t)(e):e,n=k(e.init?.headers);return n&&Object.keys(n).length&&(r=C(n)(r)),r};function N(t={}){let e=t.baseUrl??"",r=t.headers??{},n=D(r);return u=>da(async p=>{let y=n(u),i;try{i=new URL(y.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${y.url}`}}let a=performance.now(),s$1=await fetch(i,{...y.init??{},method:y.method,headers:A.headers.get(y),body:y.body,signal:p}),c={};s$1.headers.forEach((d,m)=>c[m]=d);let o=s(s$1.body,O);return {status:s$1.status,statusText:s$1.statusText,headers:c,body:o,ms:Math.round(performance.now()-a)}},O)}function _(t={}){let e=t.baseUrl??"",r=t.headers??{},n=D(r);return T(p=>da(async y=>{let i=n(p),a;try{a=new URL(i.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${i.url}`}}let s=performance.now(),c=await fetch(a,{...i.init??{},method:i.method,headers:A.headers.get(i),body:i.body,signal:y}),o=await c.text(),d={};return c.headers.forEach((m,H)=>d[H]=m),{status:c.status,statusText:c.statusText,headers:d,bodyText:o,ms:Math.round(performance.now()-s)}},O))}var G=(t,e,r)=>Math.max(e,Math.min(r,t)),z=t=>t._tag==="FetchError",Z=t=>t===408||t===429||t===500||t===502||t===503||t===504,F=(t,e,r)=>{let n=e*Math.pow(2,t),u=G(n,0,r);return Math.floor(Math.random()*u)},$=t=>{let e=Object.keys(t).find(p=>p.toLowerCase()==="retry-after");if(!e)return;let r=t[e]?.trim();if(!r)return;let n=Number(r);if(Number.isFinite(n))return Math.max(0,Math.floor(n*1e3));let u=Date.parse(r);if(Number.isFinite(u))return Math.max(0,u-Date.now())},U=t=>e=>(r=>{let n=u=>b$1(e(r),p=>{if(p._tag==="Abort"||p._tag==="BadUrl")return g$1(p);if(!(u<t.maxRetries&&(t.retryOnError??z)(p)))return g$1(p);let i=F(u,t.baseDelayMs,t.maxDelayMs);return l(M(i),()=>n(u+1))},p=>{if(!(u<t.maxRetries&&(t.retryOnStatus??Z)(p.status)))return f(p);let a=$(p.headers)??F(u,t.baseDelayMs,t.maxDelayMs);return l(M(a),()=>n(u+1))});return n(0)});var K=["GET","HEAD","OPTIONS"],Q=t=>t===408||t===429||t===500||t===502||t===503||t===504,V=t=>t._tag==="FetchError";var X=(t,e,r)=>Math.max(e,Math.min(r,t)),L=(t,e,r)=>{let n=Math.max(0,e),u=Math.max(0,r),p=n*Math.pow(2,t),y=X(p,0,u);return Math.floor(Math.random()*y)},Y=(t,e)=>{let r=Object.keys(t).find(n=>n.toLowerCase()===e.toLowerCase());return r?t[r]:void 0},tt=t=>{let e=Y(t,"retry-after")?.trim();if(!e)return;let r=Number(e);if(Number.isFinite(r))return Math.max(0,Math.floor(r*1e3));let n=Date.parse(e);if(Number.isFinite(n))return Math.max(0,n-Date.now())},j=t=>e=>{let r=t.retryOnMethods??K,n=t.retryOnStatus??Q,u=t.retryOnError??V,p=i=>r.includes(i.method),y=(i,a)=>p(i)?b$1(e(i),s=>{if(s._tag==="Abort"||s._tag==="BadUrl")return g$1(s);if(!(a<t.maxRetries&&u(s)))return g$1(s);let o=L(a,t.baseDelayMs,t.maxDelayMs);return l(M(o),()=>y(i,a+1))},s=>{if(!(a<t.maxRetries&&n(s.status)))return f(s);let d=tt(s.headers)??L(a,t.baseDelayMs,t.maxDelayMs);return l(M(d),()=>y(i,a+1))}):e(i);return i=>y(i,0)};var et=(t,e)=>{try{return new URL(e,t??"").toString()}catch{return (t??"")+e}},B=(t={})=>{let e=_(t),r=a=>o((s,c)=>ca(s,c))(a),n=a=>e(a),u=a=>{let{headers:s,...c}=a??{};return {headers:k(s),init:c}},p=a=>s=>a?I(a)(s):s;return {cfg:t,wire:e,withPromise:r,requestRaw:n,splitInit:u,applyInitHeaders:p,buildReq:(a,s,c,o)=>{let d=u(c),m={method:a,url:s,...o&&o.length>0?{body:o}:{},init:d.init};return p(d.headers)(m)},toResponse:(a,s)=>({status:a.status,statusText:a.statusText,headers:a.headers,body:s})}};function _t(t={}){let e=B(t),r=n=>{let u=o=>n(o),p=o=>e.withPromise(u(o));return {request:p,get:(o,d)=>p(e.buildReq("GET",o,d)),post:(o,d,m)=>p(e.buildReq("POST",o,m,d)),getText:(o,d)=>{let m=e.buildReq("GET",o,d);return e.withPromise(q(u(m),H=>e.toResponse(H,H.bodyText)))},getJson:(o,d)=>{let m=e.buildReq("GET",o,d),H=g("accept","application/json")(m);return e.withPromise(q(u(H),l=>e.toResponse(l,JSON.parse(l.bodyText))))},postJson:(o,d,m)=>{let H=e.buildReq("POST",o,m,JSON.stringify(d??{})),l=g("content-type","application/json")(g("accept","application/json")(H));return e.withPromise(q(u(l),P=>e.toResponse(P,JSON.parse(P.bodyText))))},with:o=>r(n.with(o)),withRetry:o=>r(n.with(j(o))),wire:n}};return r(e.wire)}function Ut(t={}){let e=B(t),r=(s,c,o)=>({request:s,urlFinal:et(e.cfg.baseUrl,s.url),startedAt:o,durationMs:c.ms}),n=s=>{let c=Date.now();return e.withPromise(q(e.requestRaw(s),o=>({wire:o,meta:r(s,o,c)})))};return {request:n,get:(s,c)=>{let o=e.buildReq("GET",s,c);return n(o)},getText:(s,c)=>{let o=e.buildReq("GET",s,c),d=Date.now();return e.withPromise(q(e.requestRaw(o),m=>({wire:m,response:e.toResponse(m,m.bodyText),meta:r(o,m,d)})))},getJson:(s,c)=>{let o=e.buildReq("GET",s,c),d=g("accept","application/json")(o),m=Date.now();return e.withPromise(q(e.requestRaw(d),H=>({wire:H,response:e.toResponse(H,JSON.parse(H.bodyText)),meta:r(d,H,m)})))},post:(s,c,o)=>{let d=e.buildReq("POST",s,o,c);return n(d)},postJson:(s,c,o)=>{let d=e.buildReq("POST",s,o,JSON.stringify(c??{})),m=g("content-type","application/json")(g("accept","application/json")(d)),H=Date.now();return e.withPromise(q(e.requestRaw(m),l=>({wire:l,response:e.toResponse(l,JSON.parse(l.bodyText)),meta:r(m,l,H)})))}}}function Lt(t={}){let e=N(t),r=n=>{let u=i=>o((a,s)=>ca(a,s))(i),p=i=>u(n(i)),y=(i,a)=>{let s={method:"GET",url:i,init:a},c=g("accept","*/*")(s);return p(c)};return {request:p,getStream:y,get:y,with:i=>r(i(n)),withRetry:i=>r(U(i)(n)),wire:n}};return r(e)}export{T as decorate,_t as httpClient,Lt as httpClientStream,Ut as httpClientWithMeta,_ as makeHttp,N as makeHttpStream,k as normalizeHeadersInit,lt as withMiddleware,U as withRetryStream};
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkXPOARCND_cjs=require('./chunk-XPOARCND.cjs'),chunkK47BP5A2_cjs=require('./chunk-K47BP5A2.cjs');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 chunkK47BP5A2_cjs.h(()=>X(n,e,t))}function X(n,e,t){let r=chunkK47BP5A2_cjs.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=>chunkK47BP5A2_cjs.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:()=>chunkK47BP5A2_cjs.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=false,i=null,a=null,o=n,s=c=>chunkK47BP5A2_cjs.f(c._tag==="None"?Y:{_tag:"Fail",error:c.value}),u=([c,E])=>chunkK47BP5A2_cjs.h(()=>(o=E,{_tag:"Elem",value:c})),l=()=>chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(o),s,u),f=c=>chunkK47BP5A2_cjs.l(B(e,t),E=>{i=E;let x,Z=()=>x._tag!=="Elem"?chunkK47BP5A2_cjs.f(void 0):Q(),v=z=>(x=z,chunkK47BP5A2_cjs.l(i.offer(z),Z)),Q=()=>chunkK47BP5A2_cjs.l(l(),v);return a=chunkK47BP5A2_cjs.aa(Q(),c),chunkK47BP5A2_cjs.f(void 0)}),y={_tag:"Async",register:(c,E)=>{(()=>{if(!r){r=true,chunkK47BP5A2_cjs.O().fork(f(c)).join(()=>{R(c,E);});return}R(c,E);})();}};function R(c,E){let x=i.take();chunkK47BP5A2_cjs.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,chunkXPOARCND_cjs.b(y)]});return;case "End":a?.interrupt?.(),E({_tag:"Failure",cause:{_tag:"Fail",error:chunkK47BP5A2_cjs.r}});return;case "Fail":a?.interrupt?.(),E({_tag:"Failure",cause:{_tag:"Fail",error:chunkK47BP5A2_cjs.s(v.error)}});return}});}return chunkXPOARCND_cjs.b(y)}var $=n=>n==="BackPressure"?"backpressure":n==="Dropping"?"dropping":"sliding";function ee(n,e="BackPressure"){let t=new Set,r=false,i=u=>{if(r)return chunkK47BP5A2_cjs.f(false);let l=t.size;if(l===0)return chunkK47BP5A2_cjs.f(true);if(l===1)return t.values().next().value.offer(u);let f=chunkK47BP5A2_cjs.f(true);for(let y of t)f=chunkK47BP5A2_cjs.l(f,R=>chunkK47BP5A2_cjs.l(y.offer(u),c=>chunkK47BP5A2_cjs.f(R&&c)));return f};return {publish:i,publishAll:u=>{let l=chunkK47BP5A2_cjs.f(true),f=u[Symbol.iterator]();for(;;){let y=f.next();if(y.done)break;let R=y.value;l=chunkK47BP5A2_cjs.l(l,c=>chunkK47BP5A2_cjs.l(i(R),E=>chunkK47BP5A2_cjs.f(c&&E)));}return l},subscribe:()=>r?chunkK47BP5A2_cjs.i(()=>{throw {_tag:"HubClosed"}}):chunkK47BP5A2_cjs.l(B(n,$(e)),u=>chunkK47BP5A2_cjs.h(()=>(t.add(u),{...u,unsubscribe:()=>{t.has(u)&&(t.delete(u),u.shutdown());}}))),shutdown:()=>chunkK47BP5A2_cjs.h(()=>{if(!r){r=true;for(let u of t)u.shutdown();t.clear();}})}}var $n=ee;function et(n,e){return chunkXPOARCND_cjs.p(n,t=>chunkK47BP5A2_cjs.l(e.publish(t),()=>chunkK47BP5A2_cjs.f(void 0)))}function nt(n){return chunkXPOARCND_cjs.d(chunkK47BP5A2_cjs.l(n.subscribe(),e=>{let t=chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.l(chunkK47BP5A2_cjs.d(e.take(),r=>chunkK47BP5A2_cjs.r),r=>chunkK47BP5A2_cjs.f([r,t])));return chunkK47BP5A2_cjs.f({stream:t,release:r=>chunkK47BP5A2_cjs.h(()=>e.unsubscribe())})}))}var _;function G(){return _!==void 0||(_=chunkK47BP5A2_cjs.G()?.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=Math.max(1,e|0),i=o=>chunkXPOARCND_cjs.b(a(o,ne(r,t))),a=(o,s)=>chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(o),u=>u._tag==="None"&&!s.isEmpty()?chunkK47BP5A2_cjs.f([s.takeChunk(),chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.g(chunkK47BP5A2_cjs.r))]):chunkK47BP5A2_cjs.g(u),([u,l])=>(s.push(u),s.isFull()?chunkK47BP5A2_cjs.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 chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.f([s,i(u,o)]))}return chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(o),s=>chunkK47BP5A2_cjs.g(s),([s,u])=>{let l=t(s);return chunkXPOARCND_cjs.k(i(l,u))}))};return i([],F(n,e,r))}function L(n,e,t={}){return(r=>{let i=F(r,n,t),a=(o,s)=>{if(o.length>0){let[u,...l]=o;return chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.f([u,a(l,s)]))}return chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.b(chunkK47BP5A2_cjs.d(chunkXPOARCND_cjs.k(s),u=>chunkXPOARCND_cjs.a(u)),u=>chunkK47BP5A2_cjs.g(u),([u,l])=>chunkK47BP5A2_cjs.b(chunkK47BP5A2_cjs.d(e(u),f=>({_tag:"Some",value:f})),f=>chunkK47BP5A2_cjs.g(f),f=>chunkXPOARCND_cjs.k(a(f,l)))))};return a([],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=>chunkK47BP5A2_cjs.g(a),r=([a,o])=>chunkK47BP5A2_cjs.f([n(a),i(o)]),i=a=>chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(a),t,r));return i(e)})}function Ct(n){return(e=>{let t=o=>chunkK47BP5A2_cjs.g(o),r=([o,s])=>n(o)?chunkK47BP5A2_cjs.f([o,a(s)]):i(s),i=o=>chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(o),t,r),a=o=>chunkXPOARCND_cjs.b(i(o));return a(e)})}function Zt(n){return(e=>{let t=a=>chunkK47BP5A2_cjs.g(a),r=a=>chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(a),t,([o,s])=>{let u=n(o);return u._tag==="Some"?chunkK47BP5A2_cjs.f([u.value,i(s)]):r(s)}),i=a=>chunkXPOARCND_cjs.b(r(a));return i(e)})}function wt(n){let e=Math.max(0,n|0);return(t=>{let r=(i,a)=>a<=0?chunkXPOARCND_cjs.f():chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(i),o=>chunkK47BP5A2_cjs.g(o),([o,s])=>chunkK47BP5A2_cjs.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:chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(i),o=>chunkK47BP5A2_cjs.g(o),([o,s])=>chunkXPOARCND_cjs.k(r(s,a-1))));return r(t,e)})}function re(n){return(e=>{let t=i=>chunkK47BP5A2_cjs.d(i,a=>chunkK47BP5A2_cjs.s(a)),r=i=>chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.b(chunkK47BP5A2_cjs.d(chunkXPOARCND_cjs.k(i),a=>chunkXPOARCND_cjs.a(a)),a=>chunkK47BP5A2_cjs.g(a),([a,o])=>chunkK47BP5A2_cjs.b(t(n(a)),s=>chunkK47BP5A2_cjs.g(s),s=>chunkK47BP5A2_cjs.f([s,r(o)]))));return r(e)})}function Bt(n){return re(e=>chunkK47BP5A2_cjs.l(n(e),()=>chunkK47BP5A2_cjs.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?chunkK47BP5A2_cjs.f({chunk:s,rest:a}):chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(a),u=>u._tag==="None"?chunkK47BP5A2_cjs.f({chunk:s,rest:chunkXPOARCND_cjs.f()}):chunkK47BP5A2_cjs.g(u),([u,l])=>r(l,o-1,[...s,u])),i=a=>chunkXPOARCND_cjs.b(chunkK47BP5A2_cjs.b(chunkXPOARCND_cjs.k(a),o=>chunkK47BP5A2_cjs.g(o),([o,s])=>chunkK47BP5A2_cjs.l(r(s,e-1,[o]),({chunk:u,rest:l})=>chunkK47BP5A2_cjs.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"}}Object.defineProperty(exports,"assertNever",{enumerable:true,get:function(){return chunkXPOARCND_cjs.l}});Object.defineProperty(exports,"collectStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.r}});Object.defineProperty(exports,"concatStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.h}});Object.defineProperty(exports,"emitStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.g}});Object.defineProperty(exports,"emptyStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.f}});Object.defineProperty(exports,"flattenStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.i}});Object.defineProperty(exports,"foreachStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.p}});Object.defineProperty(exports,"fromArray",{enumerable:true,get:function(){return chunkXPOARCND_cjs.q}});Object.defineProperty(exports,"fromPull",{enumerable:true,get:function(){return chunkXPOARCND_cjs.b}});Object.defineProperty(exports,"managedStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.d}});Object.defineProperty(exports,"mapStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.m}});Object.defineProperty(exports,"merge",{enumerable:true,get:function(){return chunkXPOARCND_cjs.j}});Object.defineProperty(exports,"mergeStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.e}});Object.defineProperty(exports,"rangeStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.n}});Object.defineProperty(exports,"streamFromReadableStream",{enumerable:true,get:function(){return chunkXPOARCND_cjs.s}});Object.defineProperty(exports,"uncons",{enumerable:true,get:function(){return chunkXPOARCND_cjs.k}});Object.defineProperty(exports,"unwrapScoped",{enumerable:true,get:function(){return chunkXPOARCND_cjs.c}});Object.defineProperty(exports,"widenOpt",{enumerable:true,get:function(){return chunkXPOARCND_cjs.a}});Object.defineProperty(exports,"zip",{enumerable:true,get:function(){return chunkXPOARCND_cjs.o}});Object.defineProperty(exports,"Async",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.a}});Object.defineProperty(exports,"Cause",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.t}});Object.defineProperty(exports,"DefaultHostExecutor",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.Q}});Object.defineProperty(exports,"EngineFiberHandle",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.U}});Object.defineProperty(exports,"Exit",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.u}});Object.defineProperty(exports,"HostRegistry",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.S}});Object.defineProperty(exports,"JsFiberEngine",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.R}});Object.defineProperty(exports,"NoopHooks",{enumerable:true,get:function(){return chunkK47BP5A2_cjs._}});Object.defineProperty(exports,"ProgramBuilder",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.T}});Object.defineProperty(exports,"PushStatus",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.E}});Object.defineProperty(exports,"ReferenceWasmBridge",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.V}});Object.defineProperty(exports,"RingBuffer",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.F}});Object.defineProperty(exports,"Runtime",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.$}});Object.defineProperty(exports,"RuntimeFiber",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.M}});Object.defineProperty(exports,"Scheduler",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.I}});Object.defineProperty(exports,"Scope",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.fa}});Object.defineProperty(exports,"WasmFiberEngine",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.Y}});Object.defineProperty(exports,"WasmFiberRegistryBridge",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.X}});Object.defineProperty(exports,"WasmPackFiberBridge",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.W}});Object.defineProperty(exports,"acquireRelease",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.m}});Object.defineProperty(exports,"async",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.j}});Object.defineProperty(exports,"asyncCatchAll",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.c}});Object.defineProperty(exports,"asyncFail",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.g}});Object.defineProperty(exports,"asyncFlatMap",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.l}});Object.defineProperty(exports,"asyncFold",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.b}});Object.defineProperty(exports,"asyncInterruptible",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.n}});Object.defineProperty(exports,"asyncMap",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.k}});Object.defineProperty(exports,"asyncMapError",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.d}});Object.defineProperty(exports,"asyncSucceed",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.f}});Object.defineProperty(exports,"asyncSync",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.h}});Object.defineProperty(exports,"asyncTotal",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.i}});Object.defineProperty(exports,"catchAll",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.B}});Object.defineProperty(exports,"collectAllPar",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ka}});Object.defineProperty(exports,"end",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.D}});Object.defineProperty(exports,"fail",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.w}});Object.defineProperty(exports,"flatMap",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.z}});Object.defineProperty(exports,"fork",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.aa}});Object.defineProperty(exports,"fromPromiseAbortable",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.da}});Object.defineProperty(exports,"getBenchmarkBudget",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.L}});Object.defineProperty(exports,"getCurrentFiber",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.N}});Object.defineProperty(exports,"globalScheduler",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.J}});Object.defineProperty(exports,"makeBoundedRingBuffer",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.H}});Object.defineProperty(exports,"map",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.y}});Object.defineProperty(exports,"mapAsync",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.p}});Object.defineProperty(exports,"mapError",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.A}});Object.defineProperty(exports,"mapTryAsync",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.q}});Object.defineProperty(exports,"none",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.r}});Object.defineProperty(exports,"orElseOptional",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.C}});Object.defineProperty(exports,"race",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ia}});Object.defineProperty(exports,"raceWith",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.la}});Object.defineProperty(exports,"runtimeCapabilities",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.Z}});Object.defineProperty(exports,"setBenchmarkBudget",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.K}});Object.defineProperty(exports,"some",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.s}});Object.defineProperty(exports,"succeed",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.v}});Object.defineProperty(exports,"sync",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.x}});Object.defineProperty(exports,"toPromise",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ca}});Object.defineProperty(exports,"unit",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.e}});Object.defineProperty(exports,"unsafeGetCurrentRuntime",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.O}});Object.defineProperty(exports,"unsafeRunAsync",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ba}});Object.defineProperty(exports,"unsafeRunFoldWithEnv",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ea}});Object.defineProperty(exports,"withAsyncPromise",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.o}});Object.defineProperty(exports,"withCurrentFiber",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.P}});Object.defineProperty(exports,"withScope",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ha}});Object.defineProperty(exports,"withScopeAsync",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ga}});Object.defineProperty(exports,"zipPar",{enumerable:true,get:function(){return chunkK47BP5A2_cjs.ja}});exports.andThen=te;exports.bounded=B;exports.broadcast=$n;exports.broadcastToHub=et;exports.buffer=q;exports.bufferP=Tt;exports.chunks=F;exports.chunksP=_t;exports.compose=bt;exports.dropP=Ot;exports.engineStats=It;exports.filterMapP=Zt;exports.filterP=Ct;exports.fromHub=nt;exports.groupedP=Ft;exports.identity=xt;exports.linkAbortController=An;exports.makeCancelToken=En;exports.makeHub=ee;exports.makeStreamChunker=ne;exports.mapChunks=pt;exports.mapChunksEffect=L;exports.mapChunksEffectP=Pt;exports.mapEffectP=re;exports.mapP=vt;exports.selectedEngineStats=Ht;exports.takeP=wt;exports.tapEffectP=Bt;exports.via=kt;
|
package/dist/index.d.mts
CHANGED
|
@@ -1,44 +1,123 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
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.mjs';
|
|
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.mjs';
|
|
3
|
+
import { Z as ZStream } from './stream-C0-LWnUP.mjs';
|
|
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-C0-LWnUP.mjs';
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
private head;
|
|
12
|
-
private tail;
|
|
13
|
-
private len;
|
|
14
|
-
get length(): number;
|
|
15
|
-
isEmpty(): boolean;
|
|
16
|
-
push(value: T): Node<T>;
|
|
17
|
-
shift(): T | undefined;
|
|
18
|
-
remove(node: Node<T>): void;
|
|
19
|
-
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;
|
|
20
13
|
}
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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;
|
|
26
48
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
private
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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;
|
|
42
121
|
}
|
|
43
122
|
|
|
44
123
|
declare function buffer<R, E, A>(stream: ZStream<{} & R, E, A>, capacity: number, strategy?: "backpressure" | "dropping" | "sliding"): ZStream<{} & R, E, A>;
|
|
@@ -76,7 +155,8 @@ type Queue<A> = {
|
|
|
76
155
|
size: () => number;
|
|
77
156
|
shutdown: () => void;
|
|
78
157
|
};
|
|
79
|
-
|
|
158
|
+
type QueueOptions = RingBufferOptions;
|
|
159
|
+
declare function bounded<A>(capacity: number, strategy?: Strategy, options?: QueueOptions): Async<unknown, unknown, Queue<A>>;
|
|
80
160
|
|
|
81
161
|
type HubStrategy = "BackPressure" | "Dropping" | "Sliding";
|
|
82
162
|
type HubClosed = {
|
|
@@ -96,6 +176,42 @@ declare const broadcast: typeof makeHub;
|
|
|
96
176
|
declare function broadcastToHub<R, E, A>(stream: ZStream<R, E, A>, hub: Hub<A>): Async<R, E, void>;
|
|
97
177
|
declare function fromHub<A>(hub: Hub<A>): ZStream<unknown, HubClosed, A>;
|
|
98
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
|
+
|
|
99
215
|
/**
|
|
100
216
|
* ZPipeline-style transformer.
|
|
101
217
|
*
|
|
@@ -127,6 +243,10 @@ declare function dropP<A>(n: number): ZPipeline<unknown, never, A, A>;
|
|
|
127
243
|
declare function mapEffectP<Rp, Ep, A, B>(f: (a: A) => Async<Rp, Ep, B>): ZPipeline<Rp, Ep, A, B>;
|
|
128
244
|
/** Tap each element with an effect, preserving the element. */
|
|
129
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>;
|
|
130
250
|
/** Buffer upstream using your existing queue-based buffer implementation. */
|
|
131
251
|
declare function bufferP<A>(capacity: number, strategy?: "backpressure" | "dropping" | "sliding"): ZPipeline<unknown, never, A, A>;
|
|
132
252
|
/**
|
|
@@ -135,4 +255,4 @@ declare function bufferP<A>(capacity: number, strategy?: "backpressure" | "dropp
|
|
|
135
255
|
*/
|
|
136
256
|
declare function groupedP<A>(n: number): ZPipeline<unknown, never, A, A[]>;
|
|
137
257
|
|
|
138
|
-
export { Async, Exit, Fiber, type Hub, type HubClosed, type HubStrategy,
|
|
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.d.ts
CHANGED
|
@@ -1,44 +1,123 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
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';
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
private head;
|
|
12
|
-
private tail;
|
|
13
|
-
private len;
|
|
14
|
-
get length(): number;
|
|
15
|
-
isEmpty(): boolean;
|
|
16
|
-
push(value: T): Node<T>;
|
|
17
|
-
shift(): T | undefined;
|
|
18
|
-
remove(node: Node<T>): void;
|
|
19
|
-
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;
|
|
20
13
|
}
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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;
|
|
26
48
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
private
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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;
|
|
42
121
|
}
|
|
43
122
|
|
|
44
123
|
declare function buffer<R, E, A>(stream: ZStream<{} & R, E, A>, capacity: number, strategy?: "backpressure" | "dropping" | "sliding"): ZStream<{} & R, E, A>;
|
|
@@ -76,7 +155,8 @@ type Queue<A> = {
|
|
|
76
155
|
size: () => number;
|
|
77
156
|
shutdown: () => void;
|
|
78
157
|
};
|
|
79
|
-
|
|
158
|
+
type QueueOptions = RingBufferOptions;
|
|
159
|
+
declare function bounded<A>(capacity: number, strategy?: Strategy, options?: QueueOptions): Async<unknown, unknown, Queue<A>>;
|
|
80
160
|
|
|
81
161
|
type HubStrategy = "BackPressure" | "Dropping" | "Sliding";
|
|
82
162
|
type HubClosed = {
|
|
@@ -96,6 +176,42 @@ declare const broadcast: typeof makeHub;
|
|
|
96
176
|
declare function broadcastToHub<R, E, A>(stream: ZStream<R, E, A>, hub: Hub<A>): Async<R, E, void>;
|
|
97
177
|
declare function fromHub<A>(hub: Hub<A>): ZStream<unknown, HubClosed, A>;
|
|
98
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
|
+
|
|
99
215
|
/**
|
|
100
216
|
* ZPipeline-style transformer.
|
|
101
217
|
*
|
|
@@ -127,6 +243,10 @@ declare function dropP<A>(n: number): ZPipeline<unknown, never, A, A>;
|
|
|
127
243
|
declare function mapEffectP<Rp, Ep, A, B>(f: (a: A) => Async<Rp, Ep, B>): ZPipeline<Rp, Ep, A, B>;
|
|
128
244
|
/** Tap each element with an effect, preserving the element. */
|
|
129
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>;
|
|
130
250
|
/** Buffer upstream using your existing queue-based buffer implementation. */
|
|
131
251
|
declare function bufferP<A>(capacity: number, strategy?: "backpressure" | "dropping" | "sliding"): ZPipeline<unknown, never, A, A>;
|
|
132
252
|
/**
|
|
@@ -135,4 +255,4 @@ declare function bufferP<A>(capacity: number, strategy?: "backpressure" | "dropp
|
|
|
135
255
|
*/
|
|
136
256
|
declare function groupedP<A>(n: number): ZPipeline<unknown, never, A, A[]>;
|
|
137
257
|
|
|
138
|
-
export { Async, Exit, Fiber, type Hub, type HubClosed, type HubStrategy,
|
|
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 };
|