mirror of
https://github.com/apache/superset.git
synced 2024-09-19 20:19:37 -04:00
6c8e40c710
* [build] fix typescript builds * [typescript] ensure types pass in build * [typescript][connection] declare modules in tests * [typescript][connection] fix ts errors in tests * [typescript][connection] test/types.ts => types/external.d.ts * [chart][typescript] add @types/react-loadable * [chart][components] convert to ts * [charts][tests][broken] convert to ts * [chart][typescript] re-write component generics * [chart][typescript] fix reactify generic, add react-dom types * [chart][typescript] more iteration * - Tweaking reactify types (using Readonly types). - Uncovered an issue in which ReactifyProps and Props can collide on id and className. - Move @types/react-loadable to dev dependency - Fixing a lint error * [chart][deps] add @types/fetch-mock * [client][typescript] add and export SupersetClientInterface * [chart][clients] fix ts * [charts][components] more ts iterations * [chart][client] assert FormData type * [chart][deps] try adding newest @types/react * [chart][components][ts] fix reactify prop TS * [chart] lint * [chart][ts] lint #2, move @types to deps not dev-deps * [chart][jest] fix tests * [chart][tests] up branch coverage * [chart][ts][test] null => undefined * [chart][tests] hundo * [chart][tests] update name * [chart][ts] ChartClient type fixes |
||
---|---|---|
.. | ||
src | ||
test | ||
types | ||
.eslintrc | ||
package.json | ||
README.md |
@superset-ui/connection
Connection modules for Superset:
SupersetClient
requests and authentication- (future)
i18n
locales and translation
SupersetClient
The SupersetClient
handles all client-side requests to the Superset backend. It can be configured
for use within the Superset application, or used to issue CORS
requests in other applications. At
a high-level it supports:
CSRF
token 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
GET
andPOST
requests (noPUT
orDELETE
) - timeouts
- query aborts through the
AbortController
API
Example usage
// appSetup.js
import { SupersetClient } from `@superset-ui/connection`;
// or import SupersetClient from `@superset-ui/connection/lib|esm/SupersetClient`;
SupersetClient.configure(...clientConfig);
SupersetClient.init(); // CSRF auth, can also chain `.configure().init();
// anotherFile.js
import { SupersetClient } from `@superset-ui/connection`;
SupersetClient.post(...requestConfig)
.then(({ request, json }) => ...)
.catch((error) => ...);
API
Client Configuration
The following flags can be passed in the client config call
SupersetClient.configure(...clientConfig);
protocol = 'http:'
host
headers
credentials = 'same-origin'
(set toinclude
for non-Superset apps)mode = 'same-origin'
(set tocors
for non-Superset apps)timeout
csrfToken
you 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 SupersetClient.get/post(...requestConfig);
url
orendpoint
headers
body
timeout
signal
(for aborting, fromconst { signal } = (new AbortController())
)- for
POST
requestspostPayload
(key values are added to anew FormData()
)stringify
whether to callJSON.stringify
onpostPayload
values
Request aborting
Per-request aborting is implemented through the AbortController
API:
import { SupersetClient } from '@superset-ui/connection';
import AbortController from 'abortcontroller-polyfill';
const controller = new AbortController();
const { signal } = controller;
SupersetClient.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.