2.0.0 • Published 3 years ago
@expertbridge-ui/connection v2.0.0
@expertbridge-ui/connection
Connection modules for Expertbridge:
ExpertbridgeClientrequests and authentication- (future)
i18nlocales and translation
ExpertbridgeClient
The ExpertbridgeClient handles all client-side requests to the Expertbridge backend. It can be configured
for use within the Expertbridge application, or used to issue CORS requests in other applications. At
a high-level it supports:
CSRFtoken authentication- a token may be passed at configuration time, else the client will handle fetching and passing the token in all subsequent requests.
- queues requests in the case that another request is made before the token is received.
- it checks for a token before every request, and will fail if no token was received or if it has expired. In either case the user should be directed to re-authenticate.
- supports
GETandPOSTrequests (noPUTorDELETE) - timeouts
- query aborts through the
AbortControllerAPI - conditional
GETrequests usingIf-None-MatchandETagheaders
Example usage
// appSetup.js
import { ExpertbridgeClient } from `@expertbridge-ui/connection`;
// or import ExpertbridgeClient from `@expertbridge-ui/connection/lib|esm/ExpertbridgeClient`;
ExpertbridgeClient.configure(...clientConfig);
ExpertbridgeClient.init(); // CSRF auth, can also chain `.configure().init();
// anotherFile.js
import { ExpertbridgeClient } from `@expertbridge-ui/connection`;
ExpertbridgeClient.post(...requestConfig)
.then(({ request, json }) => ...)
.catch((error) => ...);API
Client Configuration
The following flags can be passed in the client config call
ExpertbridgeClient.configure(...clientConfig);
protocol = 'http:'hostheaderscredentials = 'same-origin'(set toincludefor non-Expertbridge apps)mode = 'same-origin'(set tocorsfor non-Expertbridge apps)timeoutcsrfTokenyou can configure the client with a CSRF token at configuration time, else the client will attempt to fetch this before any other requests are issued
Per-request Configuration
The following flags can be passed on a per-request call ExpertbridgeClient.get/post(...requestConfig);
urlorendpointheadersbodytimeoutsignal(for aborting, fromconst { signal } = (new AbortController()))- for
POSTrequestspostPayload(key values are added to anew FormData())stringifywhether to callJSON.stringifyonpostPayloadvalues
Request aborting
Per-request aborting is implemented through the AbortController API:
import { ExpertbridgeClient } from '@expertbridge-ui/connection';
import AbortController from 'abortcontroller-polyfill';
const controller = new AbortController();
const { signal } = controller;
ExpertbridgeClient.get({ ..., signal }).then(...).catch(...);
if (IWantToCancelForSomeReason) {
signal.abort(); // Promise is rejected, request `catch` is invoked
}Development
@data-ui/build-config is used to manage the build configuration for this package including babel
builds, jest testing, eslint, and prettier.