Skip to content

melange-community/melange-fetch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a876cc4 · Feb 16, 2025
Sep 26, 2023
Sep 27, 2023
Feb 16, 2025
Sep 19, 2023
May 28, 2023
Sep 27, 2023
Mar 21, 2017
Oct 24, 2023
Feb 16, 2025
Feb 11, 2025
Feb 11, 2025
Feb 16, 2025

Repository files navigation

melange-fetch

Low-level bindings to fetch for Melange.

Issues Last Commit

melange-fetch is intended as a thin layer atop the JS API, upon which more high-level and idiomatic libraries can be made. Once such a library has been established, these bindings will likely be refactored to be even thinner.

Example

Js.Promise.(
  Fetch.fetch("/api/hellos/1")
  |> then_(Fetch.Response.text)
  |> then_(text => print_endline(text) |> resolve)
);

Installation

opam install melange-fetch

Then add melange-fetch to the libraries field in your dune file:

(melange.emit ;; or (library ...)
 ...
 (libraries melange-fetch))

Usage

See usage examples in ocaml_examples.ml and reason_examples.re. The source is a single file!

Node.js polyfill

fetch is a Web API that isn't available out-of-the-box in Node.js, and will therefore need to be polyfilled. isomorphic-fetch one such polyfill that seems to work well. Just install it via npm and add [%raw "require('isomorphic-fetch')"] to the top of your main file, but be aware that there are some subtle differences and even parts that are missing entirely.

Changes

0.6.2

  • Added FormData bindings

0.6.0

  • Bugfix: Response._type was generating _type instead of type
  • Breaking: Rename Response._type to Response.type_ to follow the name mangling convention trends

0.5.2

  • Added AbortController

0.5.0

  • Fixed Headers.append and Headers.delete. They were missing the return type.

0.4.0

  • Bumped bs-platform to 5.0.4 to stop compiler from complaining.

0.3.0

  • Added HeadersInit.makeWithDict so as to be able to make headers in OCaml too
  • Require bs-platform >= 3.0.0 due to internal dependency on Js.boolean that has now been removed

0.2.0

  • Rename Bs_fetch module to Fetch. Bs_fetch is kept around as an alias for backwards compatibility, but should be considered deprecated.