[Pas2js] window.fetch API

Michael Van Canneyt michael at freepascal.org
Sat Jul 27 13:01:43 CEST 2019


Hello,

This is great  ! Thank you for this !

I will add them to the web unit, they were on my ToDo list, you saved me
some work :-)

Michael.

On Sat, 27 Jul 2019, Simon Ameis wrote:

> Hello all,
>
> I'd like to contribute the bindings for the Fetch API as documented
> here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
>
> The methods in TWindowHelper may be integrated into TJSWindow directly.
> However I didn't want to modify the pas2js sources for my project.
>
>  TJSReadableStream = class external name 'ReadableStream'
>   private
>     flocked: Boolean; external name 'locked';
>   public
>     property locked: Boolean read flocked;
>     constructor new(underlyingSource: TJSObject);
>     constructor new(underlyingSource, queueingStrategy: TJSObject);
>     function cancel(reason: TJSDOMString): TJSPromise;
>     function getReader(): TJSObject; overload;
>     function getReader(mode: TJSObject): TJSObject; overload;
>     function pipeThrough(transformStream: TJSObject): TJSReadableStream;
> overload;
>     function pipeThrough(transformStream, options: TJSObject):
> TJSReadableStream; overload;
>     function pipeTo(destination: TJSObject): TJSPromise; overload;
>     function pipeTo(destination, options: TJSObject): TJSPromise; overload;
>     function tee(): TJSArray; // array containing two TJSReadableStream
> instances
>   end;
>
>   TJSBody = class external name 'Body' (TJSObject)
>   private
>     fbody: TJSReadableStream; external name 'body';
>     fbodyUsed: Boolean; external name 'bodyUsed';
>   public
>     property body: TJSReadableStream read fbody;
>     property bodyUsed: Boolean read fbodyUsed;
>     function arrayBuffer(): TJSPromise; // resolves to TJSArrayBuffer
>     function blob(): TJSPromise; // resolves to TJSBlob
>     function json(): TJSPromise; // resolves to JSON / TJSValue
>     function text(): TJSPromise; // resolves to USVString, always
> decoded using UTF-8
>   end;
>
>   TJSResponse = class external name 'Response' (TJSBody)
>   private
>     fheaders: TJSObject;  external name 'headers';
>     fok: Boolean; external name 'ok';
>     fredirected: Boolean; external name 'redirected';
>     fstatus: NativeInt; external name 'status';
>     fstatusText: String; external name 'statusText';
>     ftype: String; external name 'type';
>     furl: String; external name 'url';
>     fuseFinalUrl: Boolean; external name 'useFinalUrl';
>   public
>     property headers: TJSObject read fheaders; //
>     property ok: Boolean read fok;
>     property redirected: Boolean read fredirected;
>     property status: NativeInt read fstatus;
>     property statusText: String read fstatusText; //
>     property _type: String read ftype; //
>     property url: String read furl; //
>     property useFinalUrl: Boolean read fuseFinalUrl write fuseFinalUrl;
>     constructor new(body: TJSObject; init: TJSObject); varargs; external
> name 'new';
>     function clone(): TJSResponse;
>     function error(): TJSResponse;
>     function redirect(url: String; Status: NativeInt): TJSResponse;
>   end;
>
>   TWindowHelper = class helper for TJSWindow
>     function fetch(resource: String; init: TJSObject): TJSPromise;
> overload; external name 'fetch';
>     function fetch(resource: String): TJSPromise; overload; external
> name 'fetch';
>     function fetch(resource: TJSObject; init: TJSObject): TJSPromise;
> overload; external name 'fetch';
>     function fetch(resource: TJSObject): TJSPromise; overload; external
> name 'fetch';
>   end; 
>
> Kind Regards
> Simon Ameis
>
> _______________________________________________
> Pas2js maillist  -  Pas2js at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/pas2js


More information about the Pas2js mailing list