brass-runtime 1.9.2 → 1.9.3

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.
@@ -80,13 +80,16 @@ type HttpResponseWithMeta<A> = {
80
80
  response: HttpResponse<A>;
81
81
  meta: HttpMeta;
82
82
  };
83
+ type AnyInitWithHeaders = {
84
+ headers?: any;
85
+ } & Record<string, any>;
83
86
  type Dx = {
84
- request: (req: HttpRequest) => any;
85
- get: (url: string, init?: any) => any;
86
- post: (url: string, body?: string, init?: any) => any;
87
- getText: (url: string, init?: any) => any;
88
- getJson: <A>(url: string, init?: any) => any;
89
- postJson: <A>(url: string, body?: any, init?: any) => any;
87
+ request: (req: HttpRequest) => AsyncWithPromise<unknown, HttpError, HttpWireResponse>;
88
+ get: (url: string, init?: AnyInitWithHeaders) => AsyncWithPromise<unknown, HttpError, HttpWireResponse>;
89
+ post: (url: string, body?: string, init?: AnyInitWithHeaders) => AsyncWithPromise<unknown, HttpError, HttpWireResponse>;
90
+ getText: (url: string, init?: InitNoMethodBody) => AsyncWithPromise<unknown, HttpError, HttpResponse<string>>;
91
+ getJson: <A>(url: string, init?: InitNoMethodBody) => AsyncWithPromise<unknown, HttpError, HttpResponse<A>>;
92
+ postJson: <A>(url: string, bodyObj: unknown, init?: AnyInitWithHeaders) => AsyncWithPromise<unknown, HttpError, HttpResponse<A>>;
90
93
  with: (mw: HttpMiddleware) => Dx;
91
94
  withRetry: (p: RetryPolicy) => Dx;
92
95
  wire: HttpClient;
@@ -125,10 +128,16 @@ declare function httpClientWithMeta(cfg?: MakeHttpConfig): {
125
128
  wire: HttpWireResponse;
126
129
  meta: HttpMeta;
127
130
  }>;
128
- postJson: <A>(url: string, bodyObj: A, init?: HttpInit & {
131
+ postJson: <A>(url: string, bodyObj: unknown, init?: HttpInit & {
129
132
  headers?: Record<string, string>;
130
133
  }) => AsyncWithPromise<unknown, HttpError, {
131
134
  wire: HttpWireResponse;
135
+ response: {
136
+ status: number;
137
+ statusText: string;
138
+ headers: Record<string, string>;
139
+ body: A;
140
+ };
132
141
  meta: HttpMeta;
133
142
  }>;
134
143
  };
@@ -80,13 +80,16 @@ type HttpResponseWithMeta<A> = {
80
80
  response: HttpResponse<A>;
81
81
  meta: HttpMeta;
82
82
  };
83
+ type AnyInitWithHeaders = {
84
+ headers?: any;
85
+ } & Record<string, any>;
83
86
  type Dx = {
84
- request: (req: HttpRequest) => any;
85
- get: (url: string, init?: any) => any;
86
- post: (url: string, body?: string, init?: any) => any;
87
- getText: (url: string, init?: any) => any;
88
- getJson: <A>(url: string, init?: any) => any;
89
- postJson: <A>(url: string, body?: any, init?: any) => any;
87
+ request: (req: HttpRequest) => AsyncWithPromise<unknown, HttpError, HttpWireResponse>;
88
+ get: (url: string, init?: AnyInitWithHeaders) => AsyncWithPromise<unknown, HttpError, HttpWireResponse>;
89
+ post: (url: string, body?: string, init?: AnyInitWithHeaders) => AsyncWithPromise<unknown, HttpError, HttpWireResponse>;
90
+ getText: (url: string, init?: InitNoMethodBody) => AsyncWithPromise<unknown, HttpError, HttpResponse<string>>;
91
+ getJson: <A>(url: string, init?: InitNoMethodBody) => AsyncWithPromise<unknown, HttpError, HttpResponse<A>>;
92
+ postJson: <A>(url: string, bodyObj: unknown, init?: AnyInitWithHeaders) => AsyncWithPromise<unknown, HttpError, HttpResponse<A>>;
90
93
  with: (mw: HttpMiddleware) => Dx;
91
94
  withRetry: (p: RetryPolicy) => Dx;
92
95
  wire: HttpClient;
@@ -125,10 +128,16 @@ declare function httpClientWithMeta(cfg?: MakeHttpConfig): {
125
128
  wire: HttpWireResponse;
126
129
  meta: HttpMeta;
127
130
  }>;
128
- postJson: <A>(url: string, bodyObj: A, init?: HttpInit & {
131
+ postJson: <A>(url: string, bodyObj: unknown, init?: HttpInit & {
129
132
  headers?: Record<string, string>;
130
133
  }) => AsyncWithPromise<unknown, HttpError, {
131
134
  wire: HttpWireResponse;
135
+ response: {
136
+ status: number;
137
+ statusText: string;
138
+ headers: Record<string, string>;
139
+ body: A;
140
+ };
132
141
  meta: HttpMeta;
133
142
  }>;
134
143
  };
@@ -1 +1 @@
1
- 'use strict';var chunk2NVQIUW5_js=require('../chunk-2NVQIUW5.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 f={headers:b.make(t=>t.headers??{},t=>e=>({...e,headers:t}))};var k=t=>e=>b.over(f.headers,r=>({...r,...t}))(e),w=t=>e=>b.over(f.headers,r=>({...t,...r}))(e),M=(t,e)=>r=>b.over(f.headers,n=>n[t]?n:{...n,[t]:e})(r);var dt=t=>e=>T(t(e)),T=t=>Object.assign((e=>t(e)),{with:e=>T(e(t))}),S=t=>t instanceof DOMException&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},C=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}}},I=t=>e=>{let r=Object.keys(t).length?w(t)(e):e,n=C(e.init?.headers);return n&&Object.keys(n).length&&(r=w(n)(r)),r};function W(t={}){let e=t.baseUrl??"",r=t.headers??{},n=I(r);return c=>chunk2NVQIUW5_js.M(async a=>{let y=n(c),i;try{i=new URL(y.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${y.url}`}}let p=performance.now(),s=await fetch(i,{...y.init??{},method:y.method,headers:f.headers.get(y),body:y.body,signal:a}),u={};s.headers.forEach((d,m)=>u[m]=d);let o=chunk2NVQIUW5_js.ia(s.body,S);return {status:s.status,statusText:s.statusText,headers:u,body:o,ms:Math.round(performance.now()-p)}},S)}function U(t={}){let e=t.baseUrl??"",r=t.headers??{},n=I(r);return T(a=>chunk2NVQIUW5_js.M(async y=>{let i=n(a),p;try{p=new URL(i.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${i.url}`}}let s=performance.now(),u=await fetch(p,{...i.init??{},method:i.method,headers:f.headers.get(i),body:i.body,signal:y}),o=await u.text(),d={};return u.headers.forEach((m,H)=>d[H]=m),{status:u.status,statusText:u.statusText,headers:d,bodyText:o,ms:Math.round(performance.now()-s)}},S))}var j=(t,e,r)=>Math.max(e,Math.min(r,t)),J=t=>t._tag==="FetchError",G=t=>t===408||t===429||t===500||t===502||t===503||t===504,F=(t,e,r)=>{let n=e*Math.pow(2,t),c=j(n,0,r);return Math.floor(Math.random()*c)},D=t=>chunk2NVQIUW5_js.M(e=>new Promise((r,n)=>{if(e.aborted)return n({_tag:"Abort"});let c=setTimeout(r,t);e.addEventListener("abort",()=>{clearTimeout(c),n({_tag:"Abort"});},{once:true});}),e=>typeof e=="object"&&e&&"_tag"in e?e:{_tag:"FetchError",message:String(e)}),z=t=>{let e=Object.keys(t).find(a=>a.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 c=Date.parse(r);if(Number.isFinite(c))return Math.max(0,c-Date.now())},_=t=>e=>(r=>{let n=c=>chunk2NVQIUW5_js.a(e(r),a=>{if(a._tag==="Abort"||a._tag==="BadUrl")return chunk2NVQIUW5_js.f(a);if(!(c<t.maxRetries&&(t.retryOnError??J)(a)))return chunk2NVQIUW5_js.f(a);let i=F(c,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(D(i),()=>n(c+1))},a=>{if(!(c<t.maxRetries&&(t.retryOnStatus??G)(a.status)))return chunk2NVQIUW5_js.e(a);let p=z(a.headers)??F(c,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(D(p),()=>n(c+1))});return n(0)});var Z=["GET","HEAD","OPTIONS"],$=t=>t===408||t===429||t===500||t===502||t===503||t===504,K=t=>t._tag==="FetchError",Q=t=>typeof t=="object"&&t!==null&&"name"in t&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},L=t=>chunk2NVQIUW5_js.M(e=>new Promise((r,n)=>{let c=setTimeout(r,t),a=()=>{clearTimeout(c);let y=typeof globalThis.DOMException=="function"?new globalThis.DOMException("Aborted","AbortError"):{name:"AbortError"};n(y);};if(e.aborted)return a();e.addEventListener("abort",a,{once:true});}),Q),V=(t,e,r)=>Math.max(e,Math.min(r,t)),N=(t,e,r)=>{let n=Math.max(0,e),c=Math.max(0,r),a=n*Math.pow(2,t),y=V(a,0,c);return Math.floor(Math.random()*y)},X=(t,e)=>{let r=Object.keys(t).find(n=>n.toLowerCase()===e.toLowerCase());return r?t[r]:void 0},Y=t=>{let e=X(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())},v=t=>e=>{let r=t.retryOnMethods??Z,n=t.retryOnStatus??$,c=t.retryOnError??K,a=i=>r.includes(i.method),y=(i,p)=>a(i)?chunk2NVQIUW5_js.a(e(i),s=>{if(s._tag==="Abort"||s._tag==="BadUrl")return chunk2NVQIUW5_js.f(s);if(!(p<t.maxRetries&&c(s)))return chunk2NVQIUW5_js.f(s);let o=N(p,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(L(o),()=>y(i,p+1))},s=>{if(!(p<t.maxRetries&&n(s.status)))return chunk2NVQIUW5_js.e(s);let d=Y(s.headers)??N(p,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(L(d),()=>y(i,p+1))}):e(i);return i=>y(i,0)};var tt=(t,e)=>{try{return new URL(e,t??"").toString()}catch{return (t??"")+e}},B=(t={})=>{let e=U(t),r=p=>chunk2NVQIUW5_js.n((s,u)=>chunk2NVQIUW5_js.I(s,u))(p),n=p=>e(p),c=p=>{let{headers:s,...u}=p??{};return {headers:C(s),init:u}},a=p=>s=>p?k(p)(s):s;return {cfg:t,wire:e,withPromise:r,requestRaw:n,splitInit:c,applyInitHeaders:a,buildReq:(p,s,u,o)=>{let d=c(u),m={method:p,url:s,...o&&o.length>0?{body:o}:{},init:d.init};return a(d.headers)(m)},toResponse:(p,s)=>({status:p.status,statusText:p.statusText,headers:p.headers,body:s})}};function Ft(t={}){let e=B(t),r=n=>{let c=o=>n(o),a=o=>e.withPromise(c(o));return {request:a,get:(o,d)=>a(e.buildReq("GET",o,d)),post:(o,d,m)=>a(e.buildReq("POST",o,m,d)),getText:(o,d)=>{let m=e.buildReq("GET",o,d);return e.withPromise(chunk2NVQIUW5_js.p(c(m),H=>e.toResponse(H,H.bodyText)))},getJson:(o,d)=>{let m=e.buildReq("GET",o,d),H=M("accept","application/json")(m);return e.withPromise(chunk2NVQIUW5_js.p(c(H),O=>e.toResponse(O,JSON.parse(O.bodyText))))},postJson:(o,d,m)=>a(e.buildReq("POST",o,m,JSON.stringify(d??{}))),with:o=>r(n.with(o)),withRetry:o=>r(n.with(v(o))),wire:n}};return r(e.wire)}function Dt(t={}){let e=B(t),r=(s,u,o)=>({request:s,urlFinal:tt(e.cfg.baseUrl,s.url),startedAt:o,durationMs:u.ms}),n=s=>{let u=Date.now();return e.withPromise(chunk2NVQIUW5_js.p(e.requestRaw(s),o=>({wire:o,meta:r(s,o,u)})))};return {request:n,get:(s,u)=>{let o=e.buildReq("GET",s,u);return n(o)},getText:(s,u)=>{let o=e.buildReq("GET",s,u),d=Date.now();return e.withPromise(chunk2NVQIUW5_js.p(e.requestRaw(o),m=>({wire:m,response:e.toResponse(m,m.bodyText),meta:r(o,m,d)})))},getJson:(s,u)=>{let o=e.buildReq("GET",s,u),d=M("accept","application/json")(o),m=Date.now();return e.withPromise(chunk2NVQIUW5_js.p(e.requestRaw(d),H=>({wire:H,response:e.toResponse(H,JSON.parse(H.bodyText)),meta:r(d,H,m)})))},post:(s,u,o)=>{let d=e.buildReq("POST",s,o,u);return n(d)},postJson:(s,u,o)=>{let d=e.buildReq("POST",s,o,JSON.stringify(u)),m=M("content-type","application/json")(M("accept","application/json")(d));return n(m)}}}function It(t={}){let e=W(t),r=n=>{let c=i=>chunk2NVQIUW5_js.n((p,s)=>chunk2NVQIUW5_js.I(p,s))(i),a=i=>c(n(i)),y=(i,p)=>{let s={method:"GET",url:i,init:p},u=M("accept","*/*")(s);return a(u)};return {request:a,getStream:y,get:y,with:i=>r(i(n)),withRetry:i=>r(_(i)(n)),wire:n}};return r(e)}exports.decorate=T;exports.httpClient=Ft;exports.httpClientStream=It;exports.httpClientWithMeta=Dt;exports.makeHttp=U;exports.makeHttpStream=W;exports.normalizeHeadersInit=C;exports.withMiddleware=dt;exports.withRetryStream=_;
1
+ 'use strict';var chunk2NVQIUW5_js=require('../chunk-2NVQIUW5.js');var A={make(t,e){return {get:t,set:e}},over(t,e){return r=>t.set(e(t.get(r)))(r)},compose(t,e){return A.make(r=>t.get(e.get(r)),r=>n=>e.set(t.set(r)(e.get(n)))(n))}};var M={headers:A.make(t=>t.headers??{},t=>e=>({...e,headers:t}))};var W=t=>e=>A.over(M.headers,r=>({...r,...t}))(e),S=t=>e=>A.over(M.headers,r=>({...t,...r}))(e),g=(t,e)=>r=>A.over(M.headers,n=>n[t]?n:{...n,[t]:e})(r);var mt=t=>e=>C(t(e)),C=t=>Object.assign((e=>t(e)),{with:e=>C(e(t))}),T=t=>t instanceof DOMException&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},O=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}}},F=t=>e=>{let r=Object.keys(t).length?S(t)(e):e,n=O(e.init?.headers);return n&&Object.keys(n).length&&(r=S(n)(r)),r};function N(t={}){let e=t.baseUrl??"",r=t.headers??{},n=F(r);return p=>chunk2NVQIUW5_js.M(async c=>{let m=n(p),i;try{i=new URL(m.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${m.url}`}}let a=performance.now(),s=await fetch(i,{...m.init??{},method:m.method,headers:M.headers.get(m),body:m.body,signal:c}),u={};s.headers.forEach((d,y)=>u[y]=d);let o=chunk2NVQIUW5_js.ia(s.body,T);return {status:s.status,statusText:s.statusText,headers:u,body:o,ms:Math.round(performance.now()-a)}},T)}function U(t={}){let e=t.baseUrl??"",r=t.headers??{},n=F(r);return C(c=>chunk2NVQIUW5_js.M(async m=>{let i=n(c),a;try{a=new URL(i.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${i.url}`}}let s=performance.now(),u=await fetch(a,{...i.init??{},method:i.method,headers:M.headers.get(i),body:i.body,signal:m}),o=await u.text(),d={};return u.headers.forEach((y,H)=>d[H]=y),{status:u.status,statusText:u.statusText,headers:d,bodyText:o,ms:Math.round(performance.now()-s)}},T))}var J=(t,e,r)=>Math.max(e,Math.min(r,t)),G=t=>t._tag==="FetchError",z=t=>t===408||t===429||t===500||t===502||t===503||t===504,I=(t,e,r)=>{let n=e*Math.pow(2,t),p=J(n,0,r);return Math.floor(Math.random()*p)},D=t=>chunk2NVQIUW5_js.M(e=>new Promise((r,n)=>{if(e.aborted)return n({_tag:"Abort"});let p=setTimeout(r,t);e.addEventListener("abort",()=>{clearTimeout(p),n({_tag:"Abort"});},{once:true});}),e=>typeof e=="object"&&e&&"_tag"in e?e:{_tag:"FetchError",message:String(e)}),Z=t=>{let e=Object.keys(t).find(c=>c.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 p=Date.parse(r);if(Number.isFinite(p))return Math.max(0,p-Date.now())},_=t=>e=>(r=>{let n=p=>chunk2NVQIUW5_js.a(e(r),c=>{if(c._tag==="Abort"||c._tag==="BadUrl")return chunk2NVQIUW5_js.f(c);if(!(p<t.maxRetries&&(t.retryOnError??G)(c)))return chunk2NVQIUW5_js.f(c);let i=I(p,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(D(i),()=>n(p+1))},c=>{if(!(p<t.maxRetries&&(t.retryOnStatus??z)(c.status)))return chunk2NVQIUW5_js.e(c);let a=Z(c.headers)??I(p,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(D(a),()=>n(p+1))});return n(0)});var $=["GET","HEAD","OPTIONS"],K=t=>t===408||t===429||t===500||t===502||t===503||t===504,Q=t=>t._tag==="FetchError",V=t=>typeof t=="object"&&t!==null&&"name"in t&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},L=t=>chunk2NVQIUW5_js.M(e=>new Promise((r,n)=>{let p=setTimeout(r,t),c=()=>{clearTimeout(p);let m=typeof globalThis.DOMException=="function"?new globalThis.DOMException("Aborted","AbortError"):{name:"AbortError"};n(m);};if(e.aborted)return c();e.addEventListener("abort",c,{once:true});}),V),X=(t,e,r)=>Math.max(e,Math.min(r,t)),v=(t,e,r)=>{let n=Math.max(0,e),p=Math.max(0,r),c=n*Math.pow(2,t),m=X(c,0,p);return Math.floor(Math.random()*m)},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())},B=t=>e=>{let r=t.retryOnMethods??$,n=t.retryOnStatus??K,p=t.retryOnError??Q,c=i=>r.includes(i.method),m=(i,a)=>c(i)?chunk2NVQIUW5_js.a(e(i),s=>{if(s._tag==="Abort"||s._tag==="BadUrl")return chunk2NVQIUW5_js.f(s);if(!(a<t.maxRetries&&p(s)))return chunk2NVQIUW5_js.f(s);let o=v(a,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(L(o),()=>m(i,a+1))},s=>{if(!(a<t.maxRetries&&n(s.status)))return chunk2NVQIUW5_js.e(s);let d=tt(s.headers)??v(a,t.baseDelayMs,t.maxDelayMs);return chunk2NVQIUW5_js.k(L(d),()=>m(i,a+1))}):e(i);return i=>m(i,0)};var et=(t,e)=>{try{return new URL(e,t??"").toString()}catch{return (t??"")+e}},j=(t={})=>{let e=U(t),r=a=>chunk2NVQIUW5_js.n((s,u)=>chunk2NVQIUW5_js.I(s,u))(a),n=a=>e(a),p=a=>{let{headers:s,...u}=a??{};return {headers:O(s),init:u}},c=a=>s=>a?W(a)(s):s;return {cfg:t,wire:e,withPromise:r,requestRaw:n,splitInit:p,applyInitHeaders:c,buildReq:(a,s,u,o)=>{let d=p(u),y={method:a,url:s,...o&&o.length>0?{body:o}:{},init:d.init};return c(d.headers)(y)},toResponse:(a,s)=>({status:a.status,statusText:a.statusText,headers:a.headers,body:s})}};function Dt(t={}){let e=j(t),r=n=>{let p=o=>n(o),c=o=>e.withPromise(p(o));return {request:c,get:(o,d)=>c(e.buildReq("GET",o,d)),post:(o,d,y)=>c(e.buildReq("POST",o,y,d)),getText:(o,d)=>{let y=e.buildReq("GET",o,d);return e.withPromise(chunk2NVQIUW5_js.p(p(y),H=>e.toResponse(H,H.bodyText)))},getJson:(o,d)=>{let y=e.buildReq("GET",o,d),H=g("accept","application/json")(y);return e.withPromise(chunk2NVQIUW5_js.p(p(H),l=>e.toResponse(l,JSON.parse(l.bodyText))))},postJson:(o,d,y)=>{let H=e.buildReq("POST",o,y,JSON.stringify(d??{})),l=g("content-type","application/json")(g("accept","application/json")(H));return e.withPromise(chunk2NVQIUW5_js.p(p(l),P=>e.toResponse(P,JSON.parse(P.bodyText))))},with:o=>r(n.with(o)),withRetry:o=>r(n.with(B(o))),wire:n}};return r(e.wire)}function Ft(t={}){let e=j(t),r=(s,u,o)=>({request:s,urlFinal:et(e.cfg.baseUrl,s.url),startedAt:o,durationMs:u.ms}),n=s=>{let u=Date.now();return e.withPromise(chunk2NVQIUW5_js.p(e.requestRaw(s),o=>({wire:o,meta:r(s,o,u)})))};return {request:n,get:(s,u)=>{let o=e.buildReq("GET",s,u);return n(o)},getText:(s,u)=>{let o=e.buildReq("GET",s,u),d=Date.now();return e.withPromise(chunk2NVQIUW5_js.p(e.requestRaw(o),y=>({wire:y,response:e.toResponse(y,y.bodyText),meta:r(o,y,d)})))},getJson:(s,u)=>{let o=e.buildReq("GET",s,u),d=g("accept","application/json")(o),y=Date.now();return e.withPromise(chunk2NVQIUW5_js.p(e.requestRaw(d),H=>({wire:H,response:e.toResponse(H,JSON.parse(H.bodyText)),meta:r(d,H,y)})))},post:(s,u,o)=>{let d=e.buildReq("POST",s,o,u);return n(d)},postJson:(s,u,o)=>{let d=e.buildReq("POST",s,o,JSON.stringify(u??{})),y=g("content-type","application/json")(g("accept","application/json")(d)),H=Date.now();return e.withPromise(chunk2NVQIUW5_js.p(e.requestRaw(y),l=>({wire:l,response:e.toResponse(l,JSON.parse(l.bodyText)),meta:r(y,l,H)})))}}}function Nt(t={}){let e=N(t),r=n=>{let p=i=>chunk2NVQIUW5_js.n((a,s)=>chunk2NVQIUW5_js.I(a,s))(i),c=i=>p(n(i)),m=(i,a)=>{let s={method:"GET",url:i,init:a},u=g("accept","*/*")(s);return c(u)};return {request:c,getStream:m,get:m,with:i=>r(i(n)),withRetry:i=>r(_(i)(n)),wire:n}};return r(e)}exports.decorate=C;exports.httpClient=Dt;exports.httpClientStream=Nt;exports.httpClientWithMeta=Ft;exports.makeHttp=U;exports.makeHttpStream=N;exports.normalizeHeadersInit=O;exports.withMiddleware=mt;exports.withRetryStream=_;
@@ -1 +1 @@
1
- import {M as M$1,ia,a,p,n,f as f$1,k as k$1,e,I as I$1}from'../chunk-JTRM4ZSS.mjs';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 f={headers:b.make(t=>t.headers??{},t=>e=>({...e,headers:t}))};var k=t=>e=>b.over(f.headers,r=>({...r,...t}))(e),w=t=>e=>b.over(f.headers,r=>({...t,...r}))(e),M=(t,e)=>r=>b.over(f.headers,n=>n[t]?n:{...n,[t]:e})(r);var dt=t=>e=>T(t(e)),T=t=>Object.assign((e=>t(e)),{with:e=>T(e(t))}),S=t=>t instanceof DOMException&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},C=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}}},I=t=>e=>{let r=Object.keys(t).length?w(t)(e):e,n=C(e.init?.headers);return n&&Object.keys(n).length&&(r=w(n)(r)),r};function W(t={}){let e=t.baseUrl??"",r=t.headers??{},n=I(r);return c=>M$1(async a=>{let y=n(c),i;try{i=new URL(y.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${y.url}`}}let p=performance.now(),s=await fetch(i,{...y.init??{},method:y.method,headers:f.headers.get(y),body:y.body,signal:a}),u={};s.headers.forEach((d,m)=>u[m]=d);let o=ia(s.body,S);return {status:s.status,statusText:s.statusText,headers:u,body:o,ms:Math.round(performance.now()-p)}},S)}function U(t={}){let e=t.baseUrl??"",r=t.headers??{},n=I(r);return T(a=>M$1(async y=>{let i=n(a),p;try{p=new URL(i.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${i.url}`}}let s=performance.now(),u=await fetch(p,{...i.init??{},method:i.method,headers:f.headers.get(i),body:i.body,signal:y}),o=await u.text(),d={};return u.headers.forEach((m,H)=>d[H]=m),{status:u.status,statusText:u.statusText,headers:d,bodyText:o,ms:Math.round(performance.now()-s)}},S))}var j=(t,e,r)=>Math.max(e,Math.min(r,t)),J=t=>t._tag==="FetchError",G=t=>t===408||t===429||t===500||t===502||t===503||t===504,F=(t,e,r)=>{let n=e*Math.pow(2,t),c=j(n,0,r);return Math.floor(Math.random()*c)},D=t=>M$1(e=>new Promise((r,n)=>{if(e.aborted)return n({_tag:"Abort"});let c=setTimeout(r,t);e.addEventListener("abort",()=>{clearTimeout(c),n({_tag:"Abort"});},{once:true});}),e=>typeof e=="object"&&e&&"_tag"in e?e:{_tag:"FetchError",message:String(e)}),z=t=>{let e=Object.keys(t).find(a=>a.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 c=Date.parse(r);if(Number.isFinite(c))return Math.max(0,c-Date.now())},_=t=>e$1=>(r=>{let n=c=>a(e$1(r),a=>{if(a._tag==="Abort"||a._tag==="BadUrl")return f$1(a);if(!(c<t.maxRetries&&(t.retryOnError??J)(a)))return f$1(a);let i=F(c,t.baseDelayMs,t.maxDelayMs);return k$1(D(i),()=>n(c+1))},a=>{if(!(c<t.maxRetries&&(t.retryOnStatus??G)(a.status)))return e(a);let p=z(a.headers)??F(c,t.baseDelayMs,t.maxDelayMs);return k$1(D(p),()=>n(c+1))});return n(0)});var Z=["GET","HEAD","OPTIONS"],$=t=>t===408||t===429||t===500||t===502||t===503||t===504,K=t=>t._tag==="FetchError",Q=t=>typeof t=="object"&&t!==null&&"name"in t&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},L=t=>M$1(e=>new Promise((r,n)=>{let c=setTimeout(r,t),a=()=>{clearTimeout(c);let y=typeof globalThis.DOMException=="function"?new globalThis.DOMException("Aborted","AbortError"):{name:"AbortError"};n(y);};if(e.aborted)return a();e.addEventListener("abort",a,{once:true});}),Q),V=(t,e,r)=>Math.max(e,Math.min(r,t)),N=(t,e,r)=>{let n=Math.max(0,e),c=Math.max(0,r),a=n*Math.pow(2,t),y=V(a,0,c);return Math.floor(Math.random()*y)},X=(t,e)=>{let r=Object.keys(t).find(n=>n.toLowerCase()===e.toLowerCase());return r?t[r]:void 0},Y=t=>{let e=X(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())},v=t=>e$1=>{let r=t.retryOnMethods??Z,n=t.retryOnStatus??$,c=t.retryOnError??K,a$1=i=>r.includes(i.method),y=(i,p)=>a$1(i)?a(e$1(i),s=>{if(s._tag==="Abort"||s._tag==="BadUrl")return f$1(s);if(!(p<t.maxRetries&&c(s)))return f$1(s);let o=N(p,t.baseDelayMs,t.maxDelayMs);return k$1(L(o),()=>y(i,p+1))},s=>{if(!(p<t.maxRetries&&n(s.status)))return e(s);let d=Y(s.headers)??N(p,t.baseDelayMs,t.maxDelayMs);return k$1(L(d),()=>y(i,p+1))}):e$1(i);return i=>y(i,0)};var tt=(t,e)=>{try{return new URL(e,t??"").toString()}catch{return (t??"")+e}},B=(t={})=>{let e=U(t),r=p=>n((s,u)=>I$1(s,u))(p),n$1=p=>e(p),c=p=>{let{headers:s,...u}=p??{};return {headers:C(s),init:u}},a=p=>s=>p?k(p)(s):s;return {cfg:t,wire:e,withPromise:r,requestRaw:n$1,splitInit:c,applyInitHeaders:a,buildReq:(p,s,u,o)=>{let d=c(u),m={method:p,url:s,...o&&o.length>0?{body:o}:{},init:d.init};return a(d.headers)(m)},toResponse:(p,s)=>({status:p.status,statusText:p.statusText,headers:p.headers,body:s})}};function Ft(t={}){let e=B(t),r=n=>{let c=o=>n(o),a=o=>e.withPromise(c(o));return {request:a,get:(o,d)=>a(e.buildReq("GET",o,d)),post:(o,d,m)=>a(e.buildReq("POST",o,m,d)),getText:(o,d)=>{let m=e.buildReq("GET",o,d);return e.withPromise(p(c(m),H=>e.toResponse(H,H.bodyText)))},getJson:(o,d)=>{let m=e.buildReq("GET",o,d),H=M("accept","application/json")(m);return e.withPromise(p(c(H),O=>e.toResponse(O,JSON.parse(O.bodyText))))},postJson:(o,d,m)=>a(e.buildReq("POST",o,m,JSON.stringify(d??{}))),with:o=>r(n.with(o)),withRetry:o=>r(n.with(v(o))),wire:n}};return r(e.wire)}function Dt(t={}){let e=B(t),r=(s,u,o)=>({request:s,urlFinal:tt(e.cfg.baseUrl,s.url),startedAt:o,durationMs:u.ms}),n=s=>{let u=Date.now();return e.withPromise(p(e.requestRaw(s),o=>({wire:o,meta:r(s,o,u)})))};return {request:n,get:(s,u)=>{let o=e.buildReq("GET",s,u);return n(o)},getText:(s,u)=>{let o=e.buildReq("GET",s,u),d=Date.now();return e.withPromise(p(e.requestRaw(o),m=>({wire:m,response:e.toResponse(m,m.bodyText),meta:r(o,m,d)})))},getJson:(s,u)=>{let o=e.buildReq("GET",s,u),d=M("accept","application/json")(o),m=Date.now();return e.withPromise(p(e.requestRaw(d),H=>({wire:H,response:e.toResponse(H,JSON.parse(H.bodyText)),meta:r(d,H,m)})))},post:(s,u,o)=>{let d=e.buildReq("POST",s,o,u);return n(d)},postJson:(s,u,o)=>{let d=e.buildReq("POST",s,o,JSON.stringify(u)),m=M("content-type","application/json")(M("accept","application/json")(d));return n(m)}}}function It(t={}){let e=W(t),r=n$1=>{let c=i=>n((p,s)=>I$1(p,s))(i),a=i=>c(n$1(i)),y=(i,p)=>{let s={method:"GET",url:i,init:p},u=M("accept","*/*")(s);return a(u)};return {request:a,getStream:y,get:y,with:i=>r(i(n$1)),withRetry:i=>r(_(i)(n$1)),wire:n$1}};return r(e)}export{T as decorate,Ft as httpClient,It as httpClientStream,Dt as httpClientWithMeta,U as makeHttp,W as makeHttpStream,C as normalizeHeadersInit,dt as withMiddleware,_ as withRetryStream};
1
+ import {M as M$1,ia,a,p,n,f,k,e,I as I$1}from'../chunk-JTRM4ZSS.mjs';var A={make(t,e){return {get:t,set:e}},over(t,e){return r=>t.set(e(t.get(r)))(r)},compose(t,e){return A.make(r=>t.get(e.get(r)),r=>n=>e.set(t.set(r)(e.get(n)))(n))}};var M={headers:A.make(t=>t.headers??{},t=>e=>({...e,headers:t}))};var W=t=>e=>A.over(M.headers,r=>({...r,...t}))(e),S=t=>e=>A.over(M.headers,r=>({...t,...r}))(e),g=(t,e)=>r=>A.over(M.headers,n=>n[t]?n:{...n,[t]:e})(r);var mt=t=>e=>C(t(e)),C=t=>Object.assign((e=>t(e)),{with:e=>C(e(t))}),T=t=>t instanceof DOMException&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},O=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}}},F=t=>e=>{let r=Object.keys(t).length?S(t)(e):e,n=O(e.init?.headers);return n&&Object.keys(n).length&&(r=S(n)(r)),r};function N(t={}){let e=t.baseUrl??"",r=t.headers??{},n=F(r);return p=>M$1(async c=>{let m=n(p),i;try{i=new URL(m.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${m.url}`}}let a=performance.now(),s=await fetch(i,{...m.init??{},method:m.method,headers:M.headers.get(m),body:m.body,signal:c}),u={};s.headers.forEach((d,y)=>u[y]=d);let o=ia(s.body,T);return {status:s.status,statusText:s.statusText,headers:u,body:o,ms:Math.round(performance.now()-a)}},T)}function U(t={}){let e=t.baseUrl??"",r=t.headers??{},n=F(r);return C(c=>M$1(async m=>{let i=n(c),a;try{a=new URL(i.url,e);}catch{throw {_tag:"BadUrl",message:`URL inv\xE1lida: ${i.url}`}}let s=performance.now(),u=await fetch(a,{...i.init??{},method:i.method,headers:M.headers.get(i),body:i.body,signal:m}),o=await u.text(),d={};return u.headers.forEach((y,H)=>d[H]=y),{status:u.status,statusText:u.statusText,headers:d,bodyText:o,ms:Math.round(performance.now()-s)}},T))}var J=(t,e,r)=>Math.max(e,Math.min(r,t)),G=t=>t._tag==="FetchError",z=t=>t===408||t===429||t===500||t===502||t===503||t===504,I=(t,e,r)=>{let n=e*Math.pow(2,t),p=J(n,0,r);return Math.floor(Math.random()*p)},D=t=>M$1(e=>new Promise((r,n)=>{if(e.aborted)return n({_tag:"Abort"});let p=setTimeout(r,t);e.addEventListener("abort",()=>{clearTimeout(p),n({_tag:"Abort"});},{once:true});}),e=>typeof e=="object"&&e&&"_tag"in e?e:{_tag:"FetchError",message:String(e)}),Z=t=>{let e=Object.keys(t).find(c=>c.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 p=Date.parse(r);if(Number.isFinite(p))return Math.max(0,p-Date.now())},_=t=>e$1=>(r=>{let n=p=>a(e$1(r),c=>{if(c._tag==="Abort"||c._tag==="BadUrl")return f(c);if(!(p<t.maxRetries&&(t.retryOnError??G)(c)))return f(c);let i=I(p,t.baseDelayMs,t.maxDelayMs);return k(D(i),()=>n(p+1))},c=>{if(!(p<t.maxRetries&&(t.retryOnStatus??z)(c.status)))return e(c);let a=Z(c.headers)??I(p,t.baseDelayMs,t.maxDelayMs);return k(D(a),()=>n(p+1))});return n(0)});var $=["GET","HEAD","OPTIONS"],K=t=>t===408||t===429||t===500||t===502||t===503||t===504,Q=t=>t._tag==="FetchError",V=t=>typeof t=="object"&&t!==null&&"name"in t&&t.name==="AbortError"?{_tag:"Abort"}:typeof t=="object"&&t&&"_tag"in t?t:{_tag:"FetchError",message:String(t)},L=t=>M$1(e=>new Promise((r,n)=>{let p=setTimeout(r,t),c=()=>{clearTimeout(p);let m=typeof globalThis.DOMException=="function"?new globalThis.DOMException("Aborted","AbortError"):{name:"AbortError"};n(m);};if(e.aborted)return c();e.addEventListener("abort",c,{once:true});}),V),X=(t,e,r)=>Math.max(e,Math.min(r,t)),v=(t,e,r)=>{let n=Math.max(0,e),p=Math.max(0,r),c=n*Math.pow(2,t),m=X(c,0,p);return Math.floor(Math.random()*m)},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())},B=t=>e$1=>{let r=t.retryOnMethods??$,n=t.retryOnStatus??K,p=t.retryOnError??Q,c=i=>r.includes(i.method),m=(i,a$1)=>c(i)?a(e$1(i),s=>{if(s._tag==="Abort"||s._tag==="BadUrl")return f(s);if(!(a$1<t.maxRetries&&p(s)))return f(s);let o=v(a$1,t.baseDelayMs,t.maxDelayMs);return k(L(o),()=>m(i,a$1+1))},s=>{if(!(a$1<t.maxRetries&&n(s.status)))return e(s);let d=tt(s.headers)??v(a$1,t.baseDelayMs,t.maxDelayMs);return k(L(d),()=>m(i,a$1+1))}):e$1(i);return i=>m(i,0)};var et=(t,e)=>{try{return new URL(e,t??"").toString()}catch{return (t??"")+e}},j=(t={})=>{let e=U(t),r=a=>n((s,u)=>I$1(s,u))(a),n$1=a=>e(a),p=a=>{let{headers:s,...u}=a??{};return {headers:O(s),init:u}},c=a=>s=>a?W(a)(s):s;return {cfg:t,wire:e,withPromise:r,requestRaw:n$1,splitInit:p,applyInitHeaders:c,buildReq:(a,s,u,o)=>{let d=p(u),y={method:a,url:s,...o&&o.length>0?{body:o}:{},init:d.init};return c(d.headers)(y)},toResponse:(a,s)=>({status:a.status,statusText:a.statusText,headers:a.headers,body:s})}};function Dt(t={}){let e=j(t),r=n=>{let p$1=o=>n(o),c=o=>e.withPromise(p$1(o));return {request:c,get:(o,d)=>c(e.buildReq("GET",o,d)),post:(o,d,y)=>c(e.buildReq("POST",o,y,d)),getText:(o,d)=>{let y=e.buildReq("GET",o,d);return e.withPromise(p(p$1(y),H=>e.toResponse(H,H.bodyText)))},getJson:(o,d)=>{let y=e.buildReq("GET",o,d),H=g("accept","application/json")(y);return e.withPromise(p(p$1(H),l=>e.toResponse(l,JSON.parse(l.bodyText))))},postJson:(o,d,y)=>{let H=e.buildReq("POST",o,y,JSON.stringify(d??{})),l=g("content-type","application/json")(g("accept","application/json")(H));return e.withPromise(p(p$1(l),P=>e.toResponse(P,JSON.parse(P.bodyText))))},with:o=>r(n.with(o)),withRetry:o=>r(n.with(B(o))),wire:n}};return r(e.wire)}function Ft(t={}){let e=j(t),r=(s,u,o)=>({request:s,urlFinal:et(e.cfg.baseUrl,s.url),startedAt:o,durationMs:u.ms}),n=s=>{let u=Date.now();return e.withPromise(p(e.requestRaw(s),o=>({wire:o,meta:r(s,o,u)})))};return {request:n,get:(s,u)=>{let o=e.buildReq("GET",s,u);return n(o)},getText:(s,u)=>{let o=e.buildReq("GET",s,u),d=Date.now();return e.withPromise(p(e.requestRaw(o),y=>({wire:y,response:e.toResponse(y,y.bodyText),meta:r(o,y,d)})))},getJson:(s,u)=>{let o=e.buildReq("GET",s,u),d=g("accept","application/json")(o),y=Date.now();return e.withPromise(p(e.requestRaw(d),H=>({wire:H,response:e.toResponse(H,JSON.parse(H.bodyText)),meta:r(d,H,y)})))},post:(s,u,o)=>{let d=e.buildReq("POST",s,o,u);return n(d)},postJson:(s,u,o)=>{let d=e.buildReq("POST",s,o,JSON.stringify(u??{})),y=g("content-type","application/json")(g("accept","application/json")(d)),H=Date.now();return e.withPromise(p(e.requestRaw(y),l=>({wire:l,response:e.toResponse(l,JSON.parse(l.bodyText)),meta:r(y,l,H)})))}}}function Nt(t={}){let e=N(t),r=n$1=>{let p=i=>n((a,s)=>I$1(a,s))(i),c=i=>p(n$1(i)),m=(i,a)=>{let s={method:"GET",url:i,init:a},u=g("accept","*/*")(s);return c(u)};return {request:c,getStream:m,get:m,with:i=>r(i(n$1)),withRetry:i=>r(_(i)(n$1)),wire:n$1}};return r(e)}export{C as decorate,Dt as httpClient,Nt as httpClientStream,Ft as httpClientWithMeta,U as makeHttp,N as makeHttpStream,O as normalizeHeadersInit,mt as withMiddleware,_ as withRetryStream};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brass-runtime",
3
- "version": "1.9.2",
3
+ "version": "1.9.3",
4
4
  "description": "Effect runtime utilities for TypeScript",
5
5
  "license": "ISC",
6
6
  "author": "",