3.8.4-beta.1 • Published 4 years ago

@mihanizm56/fetch-api v3.8.4-beta.1

Weekly downloads
430
License
MIT
Repository
github
Last release
4 years ago

@mihanizm56/fetch-api

Solution for the isomorphic fetch

Documentation here

Benefits:

  • Provides validation for responses (based on @hapi/joi Schema validation and may use your own validation function)
  • Provides the ability to make rest-api and json-rpc protocol requests in One interface
  • Provides query-params serialize (booleans,strings,numbers,arrays of numbers or strings and variable serialize options for different backend services, https://www.npmjs.com/package/query-string is used)
  • Provides cancel-request if the timeout is higher than timeout value (60 seconds by default)
  • Provides error catching (you dont need to use try/catch)
  • Provides the ability to match the exact error translation
  • Provides different kinds of the response formats to parse
  • Returns ALWAYS the hard prepared response structure (data, error, errorText, additionalErrors)
  • Works in modern browsers and ie11
  • Provides two main classes for REST API - RestRequest and PureRestReques. The difference is in the hard-structured response format
  • Provides the ability to cancel the request by throwing the special event (ABORT_REQUEST_EVENT_NAME)
  • Provides the ability to handle the response progress
  • Provides the ability to select necessary fields from the response (https://github.com/nemtsov/json-mask#readme used)
  • Provides the ability to use persistent params for all requests
  • Provides the ability to retry requests
  • Provides the ability to logging your error requests

Request input options:

  • endpoint(string): the request url
  • responseSchema: the response Schema that parsed by @hapi/joi (you must use the @hapi/joi in your project and insert the response Schema into this field)
  • body(JSON | FormData): the request body
  • mode('cors' | 'no-cors'): the cors type
  • queryParams(object): the object with the query parameters (they will be serialized automatically)
  • headers(object): the object with the headers
  • translateFunction(function): function that will be called with error text key and params (key, params)
  • isErrorTextStraightToOutput(boolean): flag not to prepare error text value - it goes straight from backend ("errorText" if REST and "message" if JSON-RPC)
  • extraValidationCallback(function): callback that can be used for custom response data validation or if you don't want to use @hapi/joi
  • customTimeout(number) - milliseconds for cancel the request on timeout (or a full package of requests if the "retry" parameter is activated)
  • retry - number of requests try to request if the response is negative

Request output options:

  • error (boolean) - the flag of the response status
  • errorText (string) - the text error message from the backend
  • data (object) - the main data from the backend
  • additionalErrors (object) - the additional error data from the backend
  • code (number) - status-code from backend

Features and recommendations

  • body will be serialized in JSON if body data NOT FormData

!!! Attention !!!

If you need to support ie11 - please add the following polyfills

import 'abortcontroller-polyfill/dist/polyfill-patch-fetch';
import 'whatwg-fetch';

installation

npm install @mihanizm56/fetch-api

Please, be careful. The response will be the object:

{
  error: boolean,
  data: Array<IResponse>,
  additionalErrors: null,
  errorText: string,
  code: number
}

The usage of the request api

const { error, errorText, data, additionalErrors } = await createItemsRequest(
  someData
);

Set persist options to all requests

import { ProxyController } from "@mihanizm56/fetch-api";

new ProxyController().setResponseTrackCallback(({
  requestParams, // all request parameters
  response, //  pure response protected object
  pureResponseData, // response body without formatting
  requestError: boolean, // is request crashed
  formattedResponseData // formatted response data in IResponse interface
}) => ({
 // do some metrics or logging here
}));

Set callback for metrics for all requests

import { ProxyController } from "@mihanizm56/fetch-api";

new ProxyController().setPersistentOptions(() => ({
  headers: {
    foo: 'bar',
  },
}));
4.0.0-beta.5

2 years ago

4.0.0-beta.4

2 years ago

4.0.0-beta.3

2 years ago

4.0.0-beta.1

2 years ago

3.10.1-beta.1

2 years ago

3.10.1

2 years ago

3.10.0

2 years ago

3.9.2-beta.5

3 years ago

3.9.2-beta.6

3 years ago

3.9.2-beta.3

3 years ago

3.9.2-beta.4

3 years ago

3.9.2-beta.9

3 years ago

3.9.2-beta.7

3 years ago

3.9.2-beta.8

3 years ago

3.9.2-beta.1

3 years ago

3.9.2-beta.2

3 years ago

3.9.0-beta.9

3 years ago

3.9.4-beta.6

3 years ago

3.9.4-beta.5

3 years ago

3.9.0-beta.5

3 years ago

3.9.0-beta.6

3 years ago

3.9.0-beta.7

3 years ago

3.9.0-beta.8

3 years ago

3.9.0-beta.1

3 years ago

3.9.0-beta.2

3 years ago

3.9.0-beta.3

3 years ago

3.9.0-beta.4

3 years ago

3.9.3

3 years ago

3.9.2

3 years ago

3.9.1

3 years ago

3.9.0

3 years ago

3.9.4

3 years ago

3.9.4-beta.4

3 years ago

3.9.4-beta.3

3 years ago

3.9.4-beta.2

3 years ago

3.9.4-beta.1

3 years ago

3.8.20

3 years ago

3.9.0-beta.10

3 years ago

3.9.0-beta.11

3 years ago

3.9.2-beta.13

3 years ago

3.9.2-beta.12

3 years ago

3.9.2-beta.11

3 years ago

3.9.2-beta.10

3 years ago

3.9.3-beta.1

3 years ago

3.9.3-beta.2

3 years ago

3.10.0-beta.2

3 years ago

3.10.0-beta.1

3 years ago

3.8.18

3 years ago

3.8.19

3 years ago

3.8.20-beta.1

3 years ago

3.8.20-beta.2

3 years ago

3.8.17

4 years ago

3.8.16

4 years ago

3.8.14

4 years ago

3.8.15

4 years ago

3.8.16-beta.1

4 years ago

3.8.17-beta.1

4 years ago

3.8.13-beta.4

4 years ago

3.8.13

4 years ago

3.8.13-beta.2

4 years ago

3.8.13-beta.3

4 years ago

3.8.13-beta.1

4 years ago

3.8.12

4 years ago

3.8.12-beta.3

4 years ago

3.8.12-beta.2

4 years ago

3.8.10

4 years ago

3.8.11

4 years ago

3.8.10-beta.1

4 years ago

3.8.9

4 years ago

3.8.12-beta.1

4 years ago

3.8.8

4 years ago

3.8.7

4 years ago

3.8.6

4 years ago

3.8.8-beta.1

4 years ago

3.8.8-beta.2

4 years ago

3.8.6-beta.2

4 years ago

3.8.6-beta.3

4 years ago

3.8.6-beta.1

4 years ago

3.8.5-beta.1

4 years ago

3.8.5

4 years ago

3.8.4-beta.1

4 years ago

3.8.4

4 years ago

3.8.3

4 years ago

3.8.2

4 years ago

3.8.2-beta.4

4 years ago

3.8.2-beta.3

4 years ago

3.8.2-beta.2

4 years ago

3.8.2-beta.1

4 years ago

3.8.1

5 years ago

3.8.1-beta.1

5 years ago

3.8.0

5 years ago

3.8.0-beta.1

5 years ago

3.7.4-beta.4

5 years ago

3.7.4

5 years ago

3.7.4-beta.3

5 years ago

3.7.4-beta.1

5 years ago

3.7.4-beta.2

5 years ago

3.7.3

5 years ago

3.7.3-beta.1

5 years ago

3.7.2

5 years ago

3.7.2-beta.2

5 years ago

3.7.2-beta.1

5 years ago

3.7.1

5 years ago

3.7.1-beta.1

5 years ago

3.7.0-beta.9

5 years ago

3.7.0-beta.8

5 years ago

3.7.0

5 years ago

3.7.0-beta.7

5 years ago

3.7.0-beta.6

5 years ago

3.7.0-beta.5

5 years ago

3.7.0-beta.4

5 years ago

3.7.0-beta.3

5 years ago

3.7.0-beta.2

5 years ago

3.7.0-beta.1

5 years ago

3.6.3

5 years ago

3.6.3-beta.0

5 years ago

4.0.0-beta.0

5 years ago

3.6.2

5 years ago

3.6.2-beta.3

5 years ago

3.6.2-beta.2

5 years ago

3.6.2-beta.1

5 years ago

3.6.1

5 years ago

3.6.1-beta.4

5 years ago

3.6.1-beta.3

5 years ago

3.6.1-beta.2

5 years ago

3.6.1-beta.1

5 years ago

3.6.0

5 years ago

3.5.2

5 years ago

3.4.6-beta.1

5 years ago

3.5.2-beta.2

5 years ago

3.4.6

5 years ago

3.5.2-beta.1

5 years ago

3.5.1

5 years ago

3.5.0

5 years ago

3.5.0-beta.4

5 years ago

3.5.0-beta.3

5 years ago

3.5.0-beta.1

5 years ago

3.5.0-beta.2

5 years ago

3.4.5

5 years ago

3.4.4

5 years ago

3.4.4-beta.1

5 years ago

3.4.3

5 years ago

3.4.3-beta.3

5 years ago

3.4.3-beta.2

5 years ago

3.4.3-beta.1

5 years ago

3.4.2-beta.2

5 years ago

3.4.2

5 years ago

3.4.2-beta.1

5 years ago

3.4.1

5 years ago

3.4.0

5 years ago

3.4.0-beta.6

5 years ago

3.3.23

5 years ago

3.4.0-beta.5

5 years ago

3.3.23-beta.1

5 years ago

3.3.21-beta.1

5 years ago

3.3.22

5 years ago

3.3.21

5 years ago

3.3.20

5 years ago

3.4.0-beta.4

5 years ago

3.4.0-beta.3

5 years ago

3.4.0-beta.2

5 years ago

3.4.0-beta.1

5 years ago

3.3.19-beta.2

5 years ago

3.3.19-beta.4

5 years ago

3.3.19-beta.3

5 years ago

3.3.19

5 years ago

3.3.18

5 years ago

3.3.18-beta.1

5 years ago

3.3.17

5 years ago

3.3.16

5 years ago

3.3.16-beta.6

5 years ago

3.3.16-beta.7

5 years ago

3.3.16-beta.5

5 years ago

3.3.16-beta.4

5 years ago

3.3.16-beta.3

5 years ago

3.3.16-beta.2

5 years ago

3.3.16-beta.1

5 years ago

3.3.15

5 years ago

3.3.15-beta-1

5 years ago

3.3.14-beta.2

6 years ago

3.3.14

6 years ago

3.3.14-beta.1

6 years ago

3.3.13-beta.1

6 years ago

3.3.13

6 years ago

3.3.12

6 years ago

3.3.12-beta.1

6 years ago

3.3.9

6 years ago

3.3.11-beta.0

6 years ago

3.3.9-beta.3

6 years ago

3.3.10

6 years ago

3.3.11

6 years ago

3.3.9-beta.1

6 years ago

3.3.9-beta.0

6 years ago

3.3.8

6 years ago

3.3.7

6 years ago

3.3.7-beta.2

6 years ago

3.3.7-beta.1

6 years ago

3.3.6-beta.1

6 years ago

3.3.6

6 years ago

3.3.5

6 years ago

3.3.5-beta.10

6 years ago

3.3.5-passport.4

6 years ago

3.3.5-beta.1

6 years ago

3.3.5-passport.1

6 years ago

3.3.5-passport.2

6 years ago

3.3.5-passport.3

6 years ago

3.3.4-beta.1

6 years ago

3.3.4

6 years ago

3.3.4-beta.0

6 years ago

3.3.3

6 years ago

3.3.3-beta.0

6 years ago

3.3.2

6 years ago

3.3.2-beta.3

6 years ago

3.3.2-beta.4

6 years ago

3.3.2-beta.5

6 years ago

3.3.2-beta.2

6 years ago

3.3.2-beta.1

6 years ago

3.3.2-beta.0

6 years ago

3.3.1

6 years ago

3.3.0-beta.11

6 years ago

3.3.0-beta.10

6 years ago

3.3.0-beta.9

6 years ago

3.3.0-beta.7

6 years ago

3.3.0-beta.6

6 years ago

3.3.0-beta.5

6 years ago

3.3.0-beta.2

6 years ago

3.3.0-beta.1

6 years ago

3.3.0-beta.0

6 years ago

3.2.1

6 years ago

3.2.0-beta.19

6 years ago

3.2.0-beta.18

6 years ago

3.2.0-beta.17

6 years ago

3.2.0-beta.16

6 years ago

3.2.0-beta.15

6 years ago

3.2.0-beta.14

6 years ago

3.2.0-beta.13

6 years ago

3.2.0-beta.12

6 years ago

3.2.0-beta.11

6 years ago

3.2.0-beta.10

6 years ago

3.2.0-beta.8

6 years ago

3.2.0-beta.9

6 years ago

3.2.0-beta.6

6 years ago

3.2.0-beta.7

6 years ago

3.2.0-beta.4

6 years ago

3.2.0-beta.5

6 years ago

3.2.0-beta.3

6 years ago

3.2.0-beta.2

6 years ago

3.2.0-beta.1

6 years ago

3.2.0-beta.0

6 years ago

3.1.4

6 years ago

3.0.5-beta.16

6 years ago

3.0.5-beta.17

6 years ago

3.0.5-beta.14

6 years ago

3.0.5-beta.15

6 years ago

3.0.5-beta.18

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.5-beta.12

6 years ago

3.0.5-beta.11

6 years ago

3.0.5-beta.10

6 years ago

3.0.5-beta.9

6 years ago

3.0.5-beta.8

6 years ago

3.0.5-beta.7

6 years ago

3.0.5-beta.6

6 years ago

3.0.5-beta.5

6 years ago

3.0.5-beta.4

6 years ago

3.0.5-beta.3

6 years ago

3.0.5-beta.2

6 years ago

3.0.5

6 years ago

3.0.5-beta.1

6 years ago

2.2.1

6 years ago

2.1.3

6 years ago

3.0.4

6 years ago

3.0.3

6 years ago

2.2.0

6 years ago

3.0.1

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.1.7

6 years ago

1.1.6

6 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago