JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 54
  • Score
    100M100P100Q83977F
  • License MIT

ReScript bindings for ky HTTP client

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@dck/rescript-ky) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    rescript-ky

    ReScript bindings for ky HTTP client (targeted version : ~1.2.0)

    Setup

    1. Install the module
    bun install @dck/rescript-ky
    # or
    yarn install @dck/rescript-ky
    # or
    npm install @dck/rescript-ky
    1. Add it to your rescript.json config
    {
      "bsc-dependencies": ["@dck/rescript-ky"]
    }

    Usage

    The functions can be accessed through Ky module.

    type data = {anything: string}
    type errorPayload = {
      code: string
    }
    
    let fetchSomething = async () => {
      try {
        let response: data = await Ky.fetch("test", {prefixUrl: "https://fake.com", method: GET})->Ky.Response.jsonFromPromise()
        // handle response data
      } catch {
        | JsError(err) => {
          let errorResponse = (err->Ky.unkownToError).response->Option.getExn
          let errorData: errorPayload = await errorResponse->Ky.Response.json()
    
          switch (errorData.code) {
            | "CODE_1" => () // do something
            | _ => ()
          }
        }
      }
    }

    Use shortcut method :

    type data = {anything: string}
    
    let fetchSomething = async () => {
      try {
        let response: data = await Ky.get("test", {prefixUrl: "https://fake.com"})->Ky.Response.jsonFromPromise()
        // handle response data
      } catch {
        | JsError(err) => {
          // handle err
          Js.log(err)
        }
      }
    }

    Instance

    let instance = Ky.Instance.create({prefixUrl: "https://fake.com"})
    
    type data = {anything: string}
    
    let fetchSomething = async () => {
      try {
        let response: data = await (instance->Ky.Instance.get("test"))->Ky.Response.jsonFromPromise()
        // handle response data
      } catch {
        | JsError(err) => {
          // handle err
          Js.log(err)
        }
      }
    }

    Extend

    let instance = Ky.Instance.create({prefixUrl: "https://fake.com"})
    let extendedInstance = instance->Ky.Instance.extend({
      prefixUrl: `${mockBasePath}/extend`,
      headers: Ky.Headers.fromObj({
        "custom-header": "test",
      }),
    })
    
    type data = {anything: string}
    
    let fetchSomething = async () => {
      try {
        let response: data = await (extendedInstance->Ky.Instance.get("test"))->Ky.Response.jsonFromPromise()
        // handle response data
      } catch {
        | JsError(err) => {
          // handle err
          Js.log(err)
        }
      }
    }