seroval-plugins 1.2.0 → 1.3.0

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.
@@ -1 +1 @@
1
- import{createPlugin as R}from"seroval";var P=R({tag:"seroval-plugins/web/Blob",test(e){return typeof Blob=="undefined"?!1:e instanceof Blob},parse:{async async(e,r){return{type:await r.parse(e.type),buffer:await r.parse(await e.arrayBuffer())}}},serialize(e,r){return"new Blob(["+r.serialize(e.buffer)+"],{type:"+r.serialize(e.type)+"})"},deserialize(e,r){return new Blob([r.deserialize(e.buffer)],{type:r.deserialize(e.type)})}}),N=P;import{createPlugin as h}from"seroval";function p(e){return{detail:e.detail,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed}}var E=h({tag:"seroval-plugins/web/CustomEvent",test(e){return typeof CustomEvent=="undefined"?!1:e instanceof CustomEvent},parse:{sync(e,r){return{type:r.parse(e.type),options:r.parse(p(e))}},async async(e,r){return{type:await r.parse(e.type),options:await r.parse(p(e))}},stream(e,r){return{type:r.parse(e.type),options:r.parse(p(e))}}},serialize(e,r){return"new CustomEvent("+r.serialize(e.type)+","+r.serialize(e.options)+")"},deserialize(e,r){return new CustomEvent(r.deserialize(e.type),r.deserialize(e.options))}}),F=E;import{createPlugin as D}from"seroval";var I=D({tag:"seroval-plugins/web/DOMException",test(e){return typeof DOMException=="undefined"?!1:e instanceof DOMException},parse:{sync(e,r){return{name:r.parse(e.name),message:r.parse(e.message)}},async async(e,r){return{name:await r.parse(e.name),message:await r.parse(e.message)}},stream(e,r){return{name:r.parse(e.name),message:r.parse(e.message)}}},serialize(e,r){return"new DOMException("+r.serialize(e.message)+","+r.serialize(e.name)+")"},deserialize(e,r){return new DOMException(r.deserialize(e.message),r.deserialize(e.name))}}),B=I;import{createPlugin as C}from"seroval";function u(e){return{bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed}}var L=C({tag:"seroval-plugins/web/Event",test(e){return typeof Event=="undefined"?!1:e instanceof Event},parse:{sync(e,r){return{type:r.parse(e.type),options:r.parse(u(e))}},async async(e,r){return{type:await r.parse(e.type),options:await r.parse(u(e))}},stream(e,r){return{type:r.parse(e.type),options:r.parse(u(e))}}},serialize(e,r){return"new Event("+r.serialize(e.type)+","+r.serialize(e.options)+")"},deserialize(e,r){return new Event(r.deserialize(e.type),r.deserialize(e.options))}}),O=L;import{createPlugin as U}from"seroval";var q=U({tag:"seroval-plugins/web/File",test(e){return typeof File=="undefined"?!1:e instanceof File},parse:{async async(e,r){return{name:await r.parse(e.name),options:await r.parse({type:e.type,lastModified:e.lastModified}),buffer:await r.parse(await e.arrayBuffer())}}},serialize(e,r){return"new File(["+r.serialize(e.buffer)+"],"+r.serialize(e.name)+","+r.serialize(e.options)+")"},deserialize(e,r){return new File([r.deserialize(e.buffer)],r.deserialize(e.name),r.deserialize(e.options))}}),d=q;import{createPlugin as y}from"seroval";function f(e){let r=[];return e.forEach((s,a)=>{r.push([a,s])}),r}var n={},H=y({tag:"seroval-plugins/web/FormDataFactory",test(e){return e===n},parse:{sync(){},async async(){return await Promise.resolve(void 0)},stream(){}},serialize(e,r){return r.createEffectfulFunction(["e","f","i","s","t"],"f=new FormData;for(i=0,s=e.length;i<s;i++)f.append((t=e[i])[0],t[1]);return f")},deserialize(){return n}}),M=y({tag:"seroval-plugins/web/FormData",extends:[d,H],test(e){return typeof FormData=="undefined"?!1:e instanceof FormData},parse:{sync(e,r){return{factory:r.parse(n),entries:r.parse(f(e))}},async async(e,r){return{factory:await r.parse(n),entries:await r.parse(f(e))}},stream(e,r){return{factory:r.parse(n),entries:r.parse(f(e))}}},serialize(e,r){return"("+r.serialize(e.factory)+")("+r.serialize(e.entries)+")"},deserialize(e,r){let s=new FormData,a=r.deserialize(e.entries);for(let t=0,b=a.length;t<b;t++){let c=a[t];s.append(c[0],c[1])}return s}}),A=M;import{createPlugin as T}from"seroval";function m(e){let r=[];return e.forEach((s,a)=>{r.push([a,s])}),r}var _=T({tag:"seroval-plugins/web/Headers",test(e){return typeof Headers=="undefined"?!1:e instanceof Headers},parse:{sync(e,r){return r.parse(m(e))},async async(e,r){return await r.parse(m(e))},stream(e,r){return r.parse(m(e))}},serialize(e,r){return"new Headers("+r.serialize(e)+")"},deserialize(e,r){return new Headers(r.deserialize(e))}}),i=_;import{createPlugin as k}from"seroval";var j=k({tag:"seroval-plugins/web/ImageData",test(e){return typeof ImageData=="undefined"?!1:e instanceof ImageData},parse:{sync(e,r){return{data:r.parse(e.data),width:r.parse(e.width),height:r.parse(e.height),options:r.parse({colorSpace:e.colorSpace})}},async async(e,r){return{data:await r.parse(e.data),width:await r.parse(e.width),height:await r.parse(e.height),options:await r.parse({colorSpace:e.colorSpace})}},stream(e,r){return{data:r.parse(e.data),width:r.parse(e.width),height:r.parse(e.height),options:r.parse({colorSpace:e.colorSpace})}}},serialize(e,r){return"new ImageData("+r.serialize(e.data)+","+r.serialize(e.width)+","+r.serialize(e.height)+","+r.serialize(e.options)+")"},deserialize(e,r){return new ImageData(r.deserialize(e.data),r.deserialize(e.width),r.deserialize(e.height),r.deserialize(e.options))}}),Y=j;import{createPlugin as w,createStream as v}from"seroval";var o={},V=w({tag:"seroval-plugins/web/ReadableStreamFactory",test(e){return e===o},parse:{sync(){},async async(){return await Promise.resolve(void 0)},stream(){}},serialize(e,r){return r.createFunction(["d"],"new ReadableStream({start:"+r.createEffectfulFunction(["c"],"d.on({next:"+r.createEffectfulFunction(["v"],"c.enqueue(v)")+",throw:"+r.createEffectfulFunction(["v"],"c.error(v)")+",return:"+r.createEffectfulFunction([],"c.close()")+"})")+"})")},deserialize(){return o}});function g(e){let r=v(),s=e.getReader();async function a(){try{let t=await s.read();t.done?r.return(t.value):(r.next(t.value),await a())}catch(t){r.throw(t)}}return a().catch(()=>{}),r}var G=w({tag:"seroval/plugins/web/ReadableStream",extends:[V],test(e){return typeof ReadableStream=="undefined"?!1:e instanceof ReadableStream},parse:{sync(e,r){return{factory:r.parse(o),stream:r.parse(v())}},async async(e,r){return{factory:await r.parse(o),stream:await r.parse(g(e))}},stream(e,r){return{factory:r.parse(o),stream:r.parse(g(e))}}},serialize(e,r){return"("+r.serialize(e.factory)+")("+r.serialize(e.stream)+")"},deserialize(e,r){let s=r.deserialize(e.stream);return new ReadableStream({start(a){s.on({next(t){a.enqueue(t)},throw(t){a.error(t)},return(){a.close()}})}})}}),l=G;import{createPlugin as J}from"seroval";function z(e,r){return{body:r,cache:e.cache,credentials:e.credentials,headers:e.headers,integrity:e.integrity,keepalive:e.keepalive,method:e.method,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy}}var K=J({tag:"seroval-plugins/web/Request",extends:[l,i],test(e){return typeof Request=="undefined"?!1:e instanceof Request},parse:{async async(e,r){return{url:await r.parse(e.url),options:await r.parse(z(e,e.body?await e.clone().arrayBuffer():null))}},stream(e,r){return{url:r.parse(e.url),options:r.parse(z(e,e.clone().body))}}},serialize(e,r){return"new Request("+r.serialize(e.url)+","+r.serialize(e.options)+")"},deserialize(e,r){return new Request(r.deserialize(e.url),r.deserialize(e.options))}}),Q=K;import{createPlugin as W}from"seroval";function S(e){return{headers:e.headers,status:e.status,statusText:e.statusText}}var X=W({tag:"seroval-plugins/web/Response",extends:[l,i],test(e){return typeof Response=="undefined"?!1:e instanceof Response},parse:{async async(e,r){return{body:await r.parse(e.body?await e.clone().arrayBuffer():null),options:await r.parse(S(e))}},stream(e,r){return{body:r.parse(e.clone().body),options:r.parse(S(e))}}},serialize(e,r){return"new Response("+r.serialize(e.body)+","+r.serialize(e.options)+")"},deserialize(e,r){return new Response(r.deserialize(e.body),r.deserialize(e.options))}}),Z=X;import{createPlugin as $}from"seroval";var x=$({tag:"seroval-plugins/web/URLSearchParams",test(e){return typeof URLSearchParams=="undefined"?!1:e instanceof URLSearchParams},parse:{sync(e,r){return r.parse(e.toString())},async async(e,r){return await r.parse(e.toString())},stream(e,r){return r.parse(e.toString())}},serialize(e,r){return"new URLSearchParams("+r.serialize(e)+")"},deserialize(e,r){return new URLSearchParams(r.deserialize(e))}}),ee=x;import{createPlugin as re}from"seroval";var ae=re({tag:"seroval-plugins/web/URL",test(e){return typeof URL=="undefined"?!1:e instanceof URL},parse:{sync(e,r){return r.parse(e.href)},async async(e,r){return await r.parse(e.href)},stream(e,r){return r.parse(e.href)}},serialize(e,r){return"new URL("+r.serialize(e)+")"},deserialize(e,r){return new URL(r.deserialize(e))}}),te=ae;export{N as BlobPlugin,F as CustomEventPlugin,B as DOMExceptionPlugin,O as EventPlugin,d as FilePlugin,A as FormDataPlugin,i as HeadersPlugin,Y as ImageDataPlugin,l as ReadableStreamPlugin,Q as RequestPlugin,Z as ResponsePlugin,te as URLPlugin,ee as URLSearchParamsPlugin};
1
+ import{createPlugin as d}from"seroval";function h(e){e(this.reason)}function A(e){this.addEventListener("abort",h.bind(this,e),{once:!0})}function E(e){return new Promise(A.bind(e))}var o=class{constructor(){this.controller=new AbortController}},F=d({tag:"seroval-plugins/web/AbortSignalController",test(e){return e instanceof o},parse:{stream(){}},serialize(e){return"new AbortController"},deserialize(e){return new o}}),s=class{constructor(r,a){this.controller=r;this.reason=a}},D=d({extends:[F],tag:"seroval-plugins/web/AbortSignalAbort",test(e){return e instanceof s},parse:{stream(e,r){return{controller:r.parse(e.controller),reason:r.parse(e.reason)}}},serialize(e,r){return r.serialize(e.controller)+".abort("+r.serialize(e.reason)+")"},deserialize(e,r){let a=r.deserialize(e.controller),t=r.deserialize(e.reason);return a.controller.abort(t),new s(a,t)}});var I=d({tag:"seroval-plugins/web/AbortSignal",extends:[D],test(e){return typeof AbortSignal=="undefined"?!1:e instanceof AbortSignal},parse:{sync(e,r){return e.aborted?{type:1,reason:r.parse(e.reason)}:{type:0}},async async(e,r){if(e.aborted)return{type:1,reason:await r.parse(e.reason)};let a=await E(e);return{type:1,reason:await r.parse(a)}},stream(e,r){if(e.aborted)return{type:1,reason:r.parse(e.reason)};let a=new o;return r.pushPendingState(),e.addEventListener("abort",()=>{let t=r.parseWithError(new s(a,e.reason));t&&r.onParse(t),r.popPendingState()},{once:!0}),{type:2,controller:r.parse(a)}}},serialize(e,r){return e.type===0?"(new AbortController).signal":e.type===1?"AbortSignal.abort("+r.serialize(e.reason)+")":"("+r.serialize(e.controller)+").signal"},deserialize(e,r){return e.type===0?new AbortController().signal:e.type===1?AbortSignal.abort(r.deserialize(e.reason)):r.deserialize(e.controller).controller.signal}}),C=I;import{createPlugin as B}from"seroval";var L=B({tag:"seroval-plugins/web/Blob",test(e){return typeof Blob=="undefined"?!1:e instanceof Blob},parse:{async async(e,r){return{type:await r.parse(e.type),buffer:await r.parse(await e.arrayBuffer())}}},serialize(e,r){return"new Blob(["+r.serialize(e.buffer)+"],{type:"+r.serialize(e.type)+"})"},deserialize(e,r){return new Blob([r.deserialize(e.buffer)],{type:r.deserialize(e.type)})}}),O=L;import{createPlugin as U}from"seroval";function f(e){return{detail:e.detail,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed}}var q=U({tag:"seroval-plugins/web/CustomEvent",test(e){return typeof CustomEvent=="undefined"?!1:e instanceof CustomEvent},parse:{sync(e,r){return{type:r.parse(e.type),options:r.parse(f(e))}},async async(e,r){return{type:await r.parse(e.type),options:await r.parse(f(e))}},stream(e,r){return{type:r.parse(e.type),options:r.parse(f(e))}}},serialize(e,r){return"new CustomEvent("+r.serialize(e.type)+","+r.serialize(e.options)+")"},deserialize(e,r){return new CustomEvent(r.deserialize(e.type),r.deserialize(e.options))}}),H=q;import{createPlugin as M}from"seroval";var T=M({tag:"seroval-plugins/web/DOMException",test(e){return typeof DOMException=="undefined"?!1:e instanceof DOMException},parse:{sync(e,r){return{name:r.parse(e.name),message:r.parse(e.message)}},async async(e,r){return{name:await r.parse(e.name),message:await r.parse(e.message)}},stream(e,r){return{name:r.parse(e.name),message:r.parse(e.message)}}},serialize(e,r){return"new DOMException("+r.serialize(e.message)+","+r.serialize(e.name)+")"},deserialize(e,r){return new DOMException(r.deserialize(e.message),r.deserialize(e.name))}}),_=T;import{createPlugin as k}from"seroval";function m(e){return{bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed}}var j=k({tag:"seroval-plugins/web/Event",test(e){return typeof Event=="undefined"?!1:e instanceof Event},parse:{sync(e,r){return{type:r.parse(e.type),options:r.parse(m(e))}},async async(e,r){return{type:await r.parse(e.type),options:await r.parse(m(e))}},stream(e,r){return{type:r.parse(e.type),options:r.parse(m(e))}}},serialize(e,r){return"new Event("+r.serialize(e.type)+","+r.serialize(e.options)+")"},deserialize(e,r){return new Event(r.deserialize(e.type),r.deserialize(e.options))}}),Y=j;import{createPlugin as V}from"seroval";var W=V({tag:"seroval-plugins/web/File",test(e){return typeof File=="undefined"?!1:e instanceof File},parse:{async async(e,r){return{name:await r.parse(e.name),options:await r.parse({type:e.type,lastModified:e.lastModified}),buffer:await r.parse(await e.arrayBuffer())}}},serialize(e,r){return"new File(["+r.serialize(e.buffer)+"],"+r.serialize(e.name)+","+r.serialize(e.options)+")"},deserialize(e,r){return new File([r.deserialize(e.buffer)],r.deserialize(e.name),r.deserialize(e.options))}}),c=W;import{createPlugin as S}from"seroval";function g(e){let r=[];return e.forEach((a,t)=>{r.push([t,a])}),r}var i={},G=S({tag:"seroval-plugins/web/FormDataFactory",test(e){return e===i},parse:{sync(){},async async(){return await Promise.resolve(void 0)},stream(){}},serialize(e,r){return r.createEffectfulFunction(["e","f","i","s","t"],"f=new FormData;for(i=0,s=e.length;i<s;i++)f.append((t=e[i])[0],t[1]);return f")},deserialize(){return i}}),J=S({tag:"seroval-plugins/web/FormData",extends:[c,G],test(e){return typeof FormData=="undefined"?!1:e instanceof FormData},parse:{sync(e,r){return{factory:r.parse(i),entries:r.parse(g(e))}},async async(e,r){return{factory:await r.parse(i),entries:await r.parse(g(e))}},stream(e,r){return{factory:r.parse(i),entries:r.parse(g(e))}}},serialize(e,r){return"("+r.serialize(e.factory)+")("+r.serialize(e.entries)+")"},deserialize(e,r){let a=new FormData,t=r.deserialize(e.entries);for(let n=0,R=t.length;n<R;n++){let b=t[n];a.append(b[0],b[1])}return a}}),K=J;import{createPlugin as Q}from"seroval";function y(e){let r=[];return e.forEach((a,t)=>{r.push([t,a])}),r}var X=Q({tag:"seroval-plugins/web/Headers",test(e){return typeof Headers=="undefined"?!1:e instanceof Headers},parse:{sync(e,r){return r.parse(y(e))},async async(e,r){return await r.parse(y(e))},stream(e,r){return r.parse(y(e))}},serialize(e,r){return"new Headers("+r.serialize(e)+")"},deserialize(e,r){return new Headers(r.deserialize(e))}}),l=X;import{createPlugin as Z}from"seroval";var $=Z({tag:"seroval-plugins/web/ImageData",test(e){return typeof ImageData=="undefined"?!1:e instanceof ImageData},parse:{sync(e,r){return{data:r.parse(e.data),width:r.parse(e.width),height:r.parse(e.height),options:r.parse({colorSpace:e.colorSpace})}},async async(e,r){return{data:await r.parse(e.data),width:await r.parse(e.width),height:await r.parse(e.height),options:await r.parse({colorSpace:e.colorSpace})}},stream(e,r){return{data:r.parse(e.data),width:r.parse(e.width),height:r.parse(e.height),options:r.parse({colorSpace:e.colorSpace})}}},serialize(e,r){return"new ImageData("+r.serialize(e.data)+","+r.serialize(e.width)+","+r.serialize(e.height)+","+r.serialize(e.options)+")"},deserialize(e,r){return new ImageData(r.deserialize(e.data),r.deserialize(e.width),r.deserialize(e.height),r.deserialize(e.options))}}),x=$;import{createPlugin as z,createStream as v}from"seroval";var p={},ee=z({tag:"seroval-plugins/web/ReadableStreamFactory",test(e){return e===p},parse:{sync(){},async async(){return await Promise.resolve(void 0)},stream(){}},serialize(e,r){return r.createFunction(["d"],"new ReadableStream({start:"+r.createEffectfulFunction(["c"],"d.on({next:"+r.createEffectfulFunction(["v"],"c.enqueue(v)")+",throw:"+r.createEffectfulFunction(["v"],"c.error(v)")+",return:"+r.createEffectfulFunction([],"c.close()")+"})")+"})")},deserialize(){return p}});function w(e){let r=v(),a=e.getReader();async function t(){try{let n=await a.read();n.done?r.return(n.value):(r.next(n.value),await t())}catch(n){r.throw(n)}}return t().catch(()=>{}),r}var re=z({tag:"seroval/plugins/web/ReadableStream",extends:[ee],test(e){return typeof ReadableStream=="undefined"?!1:e instanceof ReadableStream},parse:{sync(e,r){return{factory:r.parse(p),stream:r.parse(v())}},async async(e,r){return{factory:await r.parse(p),stream:await r.parse(w(e))}},stream(e,r){return{factory:r.parse(p),stream:r.parse(w(e))}}},serialize(e,r){return"("+r.serialize(e.factory)+")("+r.serialize(e.stream)+")"},deserialize(e,r){let a=r.deserialize(e.stream);return new ReadableStream({start(t){a.on({next(n){t.enqueue(n)},throw(n){t.error(n)},return(){t.close()}})}})}}),u=re;import{createPlugin as ae}from"seroval";function P(e,r){return{body:r,cache:e.cache,credentials:e.credentials,headers:e.headers,integrity:e.integrity,keepalive:e.keepalive,method:e.method,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy}}var te=ae({tag:"seroval-plugins/web/Request",extends:[u,l],test(e){return typeof Request=="undefined"?!1:e instanceof Request},parse:{async async(e,r){return{url:await r.parse(e.url),options:await r.parse(P(e,e.body?await e.clone().arrayBuffer():null))}},stream(e,r){return{url:r.parse(e.url),options:r.parse(P(e,e.clone().body))}}},serialize(e,r){return"new Request("+r.serialize(e.url)+","+r.serialize(e.options)+")"},deserialize(e,r){return new Request(r.deserialize(e.url),r.deserialize(e.options))}}),ne=te;import{createPlugin as oe}from"seroval";function N(e){return{headers:e.headers,status:e.status,statusText:e.statusText}}var se=oe({tag:"seroval-plugins/web/Response",extends:[u,l],test(e){return typeof Response=="undefined"?!1:e instanceof Response},parse:{async async(e,r){return{body:await r.parse(e.body?await e.clone().arrayBuffer():null),options:await r.parse(N(e))}},stream(e,r){return{body:r.parse(e.clone().body),options:r.parse(N(e))}}},serialize(e,r){return"new Response("+r.serialize(e.body)+","+r.serialize(e.options)+")"},deserialize(e,r){return new Response(r.deserialize(e.body),r.deserialize(e.options))}}),ie=se;import{createPlugin as le}from"seroval";var pe=le({tag:"seroval-plugins/web/URL",test(e){return typeof URL=="undefined"?!1:e instanceof URL},parse:{sync(e,r){return r.parse(e.href)},async async(e,r){return await r.parse(e.href)},stream(e,r){return r.parse(e.href)}},serialize(e,r){return"new URL("+r.serialize(e)+")"},deserialize(e,r){return new URL(r.deserialize(e))}}),ue=pe;import{createPlugin as de}from"seroval";var fe=de({tag:"seroval-plugins/web/URLSearchParams",test(e){return typeof URLSearchParams=="undefined"?!1:e instanceof URLSearchParams},parse:{sync(e,r){return r.parse(e.toString())},async async(e,r){return await r.parse(e.toString())},stream(e,r){return r.parse(e.toString())}},serialize(e,r){return"new URLSearchParams("+r.serialize(e)+")"},deserialize(e,r){return new URLSearchParams(r.deserialize(e))}}),me=fe;export{C as AbortSignalPlugin,O as BlobPlugin,H as CustomEventPlugin,_ as DOMExceptionPlugin,Y as EventPlugin,c as FilePlugin,K as FormDataPlugin,l as HeadersPlugin,x as ImageDataPlugin,u as ReadableStreamPlugin,ne as RequestPlugin,ie as ResponsePlugin,ue as URLPlugin,me as URLSearchParamsPlugin};
@@ -0,0 +1,19 @@
1
+ import type { SerovalNode } from 'seroval';
2
+ export declare function abortSignalToPromise(signal: AbortSignal): Promise<any>;
3
+ declare const enum AbortSignalState {
4
+ Pending = 0,
5
+ Aborted = 1,
6
+ Streaming = 2
7
+ }
8
+ type AbortSignalNode = {
9
+ type: AbortSignalState.Pending;
10
+ } | {
11
+ type: AbortSignalState.Aborted;
12
+ reason: SerovalNode;
13
+ } | {
14
+ type: AbortSignalState.Streaming;
15
+ controller: SerovalNode;
16
+ };
17
+ declare const AbortSignalPlugin: import("seroval").Plugin<AbortSignal, AbortSignalNode>;
18
+ export default AbortSignalPlugin;
19
+ //# sourceMappingURL=abort-signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-signal.d.ts","sourceRoot":"","sources":["../../../web/abort-signal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmB3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAEtE;AA4ED,mBAAW,gBAAgB;IACzB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,SAAS,IAAI;CACd;AAED,KAAK,eAAe,GAChB;IAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,CAAC;AAElE,QAAA,MAAM,iBAAiB,wDAsFrB,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { default as AbortSignalPlugin } from './abort-signal';
1
2
  export { default as BlobPlugin } from './blob';
2
3
  export { default as CustomEventPlugin } from './custom-event';
3
4
  export { default as DOMExceptionPlugin } from './dom-exception';
@@ -9,6 +10,6 @@ export { default as ImageDataPlugin } from './image-data';
9
10
  export { default as ReadableStreamPlugin } from './readable-stream';
10
11
  export { default as RequestPlugin } from './request';
11
12
  export { default as ResponsePlugin } from './response';
12
- export { default as URLSearchParamsPlugin } from './url-search-params';
13
13
  export { default as URLPlugin } from './url';
14
+ export { default as URLSearchParamsPlugin } from './url-search-params';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../web/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../web/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "seroval-plugins",
3
3
  "type": "module",
4
- "version": "1.2.0",
4
+ "version": "1.3.0",
5
5
  "files": [
6
6
  "dist",
7
7
  "web"
@@ -14,13 +14,13 @@
14
14
  "pridepack"
15
15
  ],
16
16
  "devDependencies": {
17
- "@types/node": "^22.10.2",
18
- "@vitest/ui": "^2.1.8",
19
- "pridepack": "2.6.1",
20
- "seroval": "1.2.0",
17
+ "@types/node": "^22.15.12",
18
+ "@vitest/ui": "^3.1.3",
19
+ "pridepack": "2.6.4",
20
+ "seroval": "1.3.0",
21
21
  "tslib": "^2.8.1",
22
- "typescript": "^5.7.2",
23
- "vitest": "^2.1.8"
22
+ "typescript": "^5.8.3",
23
+ "vitest": "^3.1.3"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "seroval": "^1.0"
@@ -52,13 +52,13 @@
52
52
  "author": "Alexis Munsayac",
53
53
  "exports": {
54
54
  "./web": {
55
+ "types": "./dist/types/web/index.d.ts",
55
56
  "development": {
56
57
  "require": "./dist/cjs/development/web.cjs",
57
58
  "import": "./dist/esm/development/web.mjs"
58
59
  },
59
60
  "require": "./dist/cjs/production/web.cjs",
60
- "import": "./dist/esm/production/web.mjs",
61
- "types": "./dist/types/web/index.d.ts"
61
+ "import": "./dist/esm/production/web.mjs"
62
62
  }
63
63
  },
64
64
  "typesVersions": {
@@ -68,5 +68,5 @@
68
68
  ]
69
69
  }
70
70
  },
71
- "gitHead": "8554d153be3359ef6fc0b6179d0d702c17f50c77"
71
+ "gitHead": "d068e79701dd00e5e0fc969adc9f1be36df95c33"
72
72
  }
@@ -0,0 +1,197 @@
1
+ import type { SerovalNode } from 'seroval';
2
+ import { createPlugin } from 'seroval';
3
+
4
+ function resolveAbortSignalResult(
5
+ this: AbortSignal,
6
+ resolve: (value: any) => void,
7
+ ): void {
8
+ resolve(this.reason);
9
+ }
10
+
11
+ function resolveAbortSignal(
12
+ this: AbortSignal,
13
+ resolve: (value: any) => void,
14
+ ): void {
15
+ this.addEventListener('abort', resolveAbortSignalResult.bind(this, resolve), {
16
+ once: true,
17
+ });
18
+ }
19
+
20
+ export function abortSignalToPromise(signal: AbortSignal): Promise<any> {
21
+ return new Promise(resolveAbortSignal.bind(signal));
22
+ }
23
+
24
+ class AbortSignalController {
25
+ controller = new AbortController();
26
+ }
27
+
28
+ const AbortSignalControllerPlugin = createPlugin<
29
+ AbortSignalController,
30
+ undefined
31
+ >({
32
+ tag: 'seroval-plugins/web/AbortSignalController',
33
+ test(value) {
34
+ // We didn't actually use the AbortController class
35
+ // directly because of some assumptions
36
+ return value instanceof AbortSignalController;
37
+ },
38
+ parse: {
39
+ stream() {
40
+ return undefined;
41
+ },
42
+ },
43
+ serialize(_node) {
44
+ return 'new AbortController';
45
+ },
46
+ deserialize(_node) {
47
+ return new AbortSignalController();
48
+ },
49
+ });
50
+
51
+ interface AbortSignalAbortNode {
52
+ controller: SerovalNode;
53
+ reason: SerovalNode;
54
+ }
55
+
56
+ class AbortSignalAbort {
57
+ constructor(
58
+ public controller: AbortSignalController,
59
+ public reason: unknown,
60
+ ) {}
61
+ }
62
+
63
+ const AbortSignalAbortPlugin = createPlugin<
64
+ AbortSignalAbort,
65
+ AbortSignalAbortNode
66
+ >({
67
+ extends: [AbortSignalControllerPlugin],
68
+ tag: 'seroval-plugins/web/AbortSignalAbort',
69
+ test(value) {
70
+ return value instanceof AbortSignalAbort;
71
+ },
72
+ parse: {
73
+ stream(value, ctx) {
74
+ return {
75
+ controller: ctx.parse(value.controller),
76
+ reason: ctx.parse(value.reason),
77
+ };
78
+ },
79
+ },
80
+ serialize(node, ctx) {
81
+ return (
82
+ ctx.serialize(node.controller) +
83
+ '.abort(' +
84
+ ctx.serialize(node.reason) +
85
+ ')'
86
+ );
87
+ },
88
+ deserialize(node, ctx) {
89
+ const controller = ctx.deserialize(
90
+ node.controller,
91
+ ) as AbortSignalController;
92
+ const reason = ctx.deserialize(node.reason);
93
+ controller.controller.abort(reason);
94
+ return new AbortSignalAbort(controller, reason);
95
+ },
96
+ });
97
+
98
+ const enum AbortSignalState {
99
+ Pending = 0,
100
+ Aborted = 1,
101
+ Streaming = 2,
102
+ }
103
+
104
+ type AbortSignalNode =
105
+ | { type: AbortSignalState.Pending }
106
+ | { type: AbortSignalState.Aborted; reason: SerovalNode }
107
+ | { type: AbortSignalState.Streaming; controller: SerovalNode };
108
+
109
+ const AbortSignalPlugin = createPlugin<AbortSignal, AbortSignalNode>({
110
+ tag: 'seroval-plugins/web/AbortSignal',
111
+ extends: [AbortSignalAbortPlugin],
112
+ test(value) {
113
+ if (typeof AbortSignal === 'undefined') {
114
+ return false;
115
+ }
116
+ return value instanceof AbortSignal;
117
+ },
118
+ parse: {
119
+ sync(value, ctx) {
120
+ if (value.aborted) {
121
+ return {
122
+ type: AbortSignalState.Aborted,
123
+ reason: ctx.parse(value.reason),
124
+ };
125
+ }
126
+ return {
127
+ type: AbortSignalState.Pending,
128
+ };
129
+ },
130
+ async async(value, ctx) {
131
+ if (value.aborted) {
132
+ return {
133
+ type: AbortSignalState.Aborted,
134
+ reason: await ctx.parse(value.reason),
135
+ };
136
+ }
137
+ const result = await abortSignalToPromise(value);
138
+ return {
139
+ type: AbortSignalState.Aborted,
140
+ reason: await ctx.parse(result),
141
+ };
142
+ },
143
+ stream(value, ctx) {
144
+ if (value.aborted) {
145
+ return {
146
+ type: AbortSignalState.Aborted,
147
+ reason: ctx.parse(value.reason),
148
+ };
149
+ }
150
+ const controller = new AbortSignalController();
151
+
152
+ ctx.pushPendingState();
153
+ value.addEventListener(
154
+ 'abort',
155
+ () => {
156
+ const result = ctx.parseWithError(
157
+ new AbortSignalAbort(controller, value.reason),
158
+ );
159
+ if (result) {
160
+ ctx.onParse(result);
161
+ }
162
+ ctx.popPendingState();
163
+ },
164
+ { once: true },
165
+ );
166
+
167
+ return {
168
+ type: AbortSignalState.Streaming,
169
+ controller: ctx.parse(controller),
170
+ };
171
+ },
172
+ },
173
+ serialize(node, ctx) {
174
+ if (node.type === AbortSignalState.Pending) {
175
+ return '(new AbortController).signal';
176
+ }
177
+ if (node.type === AbortSignalState.Aborted) {
178
+ return 'AbortSignal.abort(' + ctx.serialize(node.reason) + ')';
179
+ }
180
+ return '(' + ctx.serialize(node.controller) + ').signal';
181
+ },
182
+ deserialize(node, ctx) {
183
+ if (node.type === AbortSignalState.Pending) {
184
+ const controller = new AbortController();
185
+ return controller.signal;
186
+ }
187
+ if (node.type === AbortSignalState.Aborted) {
188
+ return AbortSignal.abort(ctx.deserialize(node.reason));
189
+ }
190
+ const controller = ctx.deserialize(
191
+ node.controller,
192
+ ) as AbortSignalController;
193
+ return controller.controller.signal;
194
+ },
195
+ });
196
+
197
+ export default AbortSignalPlugin;
package/web/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { default as AbortSignalPlugin } from './abort-signal';
1
2
  export { default as BlobPlugin } from './blob';
2
3
  export { default as CustomEventPlugin } from './custom-event';
3
4
  export { default as DOMExceptionPlugin } from './dom-exception';
@@ -9,5 +10,5 @@ export { default as ImageDataPlugin } from './image-data';
9
10
  export { default as ReadableStreamPlugin } from './readable-stream';
10
11
  export { default as RequestPlugin } from './request';
11
12
  export { default as ResponsePlugin } from './response';
12
- export { default as URLSearchParamsPlugin } from './url-search-params';
13
13
  export { default as URLPlugin } from './url';
14
+ export { default as URLSearchParamsPlugin } from './url-search-params';