@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
and POST
requests (no PUT
or DELETE
) - timeouts
- query aborts through the
AbortController
API - conditional
GET
requests using If-None-Match
and ETag
headers
Example usage
import { SupersetClient } from `@superset-ui/connection`;
SupersetClient.configure(...clientConfig);
SupersetClient.init();
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 to include
for non-Superset apps)mode = 'same-origin'
(set to cors
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
or endpoint
headers
body
timeout
signal
(for aborting, from const { signal } = (new AbortController())
)- for
POST
requests
postPayload
(key values are added to a new FormData()
)stringify
whether to call JSON.stringify
on postPayload
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();
}
Development
@data-ui/build-config
is used to manage the build configuration for this package including babel
builds, jest testing, eslint, and prettier.
0.13.0 (2020-04-29)
Bug Fixes
- superset-ui-style: export superset theme props (#391) (8ebe0d1)
- superset-ui-query: add unit tests for #387 (#390) (7b5e5d2)
- superset-ui-query: make all filter operators uppercase (#378) (1f9e493)
Features
- control-utils: add packages control-utils (#417) (2f83074)
- preset-chart-nvd3: migration from plugins repo (#399) (dbd84f2)
BREAKING CHANGES
- plugin-word-cloud: change how wordcloud is exported (#418) (c5d3893)
Old behavior
exports default WordCloudChartPlugin
from index.
import WordCloudChartPlugin from '@superset-ui/plugin-chart-word-cloud';
users need to deep import /esm/legacy
to get the legacy version.
import LegacyWordCloudChartPlugin from '@superset-ui/plugin-chart-word-cloud/esm/legacy';
New behavior
exports both WordCloudChartPlugin
and LegacyWordCloudChartPlugin
from index
.
import { WordCloudChartPlugin, LegacyWordCloudChartPlugin } from '@superset-ui/plugin-chart-word-cloud';
- preset-chart-xy: migrate from plugins repo (#377) (fb5370e)
Signatures of the custom renderers for legend has changed.