Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@superset-ui/connection

Package Overview
Dependencies
Maintainers
14
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@superset-ui/connection

Superset UI connection

  • 0.14.23
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
84
decreased by-43.24%
Maintainers
14
Weekly downloads
 
Created
Source

@superset-ui/connection

Version David (path)

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
// 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 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(); // 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.

Keywords

FAQs

Package last updated on 01 Sep 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc