Skip to content
On this page




Config fields:

  • params?: parameters for the Query

    • You can declare Query parameters by call declareParams function.
    • If not passed, Query will be created without parameters.
  • initialData?: initial data of the Query, will be passed to the $data store as an initial value

  • request: declarative rules to formulate request to the API.

    • method: String
    • url: Sourced string
    • body: Sourced Json, any value which can be serialized to JSON and parsed back without loses by JavaScript native module JSON. For example, { a: 1, b: 2 }. Note that body cannot be used in GET and HEAD requests.
    • query?: Sourced object, keys of the object must be String and values must be String or Array<String> or (since v0.8) Sourced String containing ready-to-use query string
    • headers?: Sourced object, keys of the object must be String and values must be String or Array<String>
    • credentials?: since v0.7 String, available values:
      • omit — do not include credentials
      • same-origin — include credentials only if the request URL is the same origin
      • include — include credentials on all requests
  • response: declarative rules to handle response from the API.

    • contract: Contract allows you to validate the response and decide how your application should treat it — as a success response or as a failed one.
    • validate?: Validator allows you to dynamically validate received data.
    • mapData?: optional mapper for the response data, available overloads:
      • ({ result, params }) => mapped
      • { source: Store, fn: (data, { result, params }) => mapped }
  • concurrency?: concurrency settings for the Query

    Deprecation warning

    This field is deprecated since v0.12 and will be removed in v0.14. Use concurrency operator instead.

    Please read this ADR for more information and migration guide.

    • strategy?: available values:
      • TAKE_EVERY execute every request
      • TAKE_FIRST skip all requests if there is a pending one
      • TAKE_LATEST (default value) cancel all pending requests and execute the latest one
    • abort?: Event after calling which all in-flight requests will be aborted


Live demo

You can play around with the factory in the live demo below 👇

Released under the MIT License.