npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@decisions/api-helpers

v0.2.0

Published

JavaScript toolkit for REST, etc. for external UIs using Decisions as a back-end.

Downloads

2

Readme

api-helpers

JavaScript toolkit for REST, etc. for clients interacting with a Decisions back-end. Its only goal is to minimize boilerplate for these clients by DRYing up common logic into helper functions.

Helper Functions

This is essentially a collection of helper functions, all of which are opt-in.

  1. "ApiConfig" contains some configuration that other helper functions depend on. This is essentially a singleton config object.
  2. "ApiHelpers" contains commands and helpers related to managing a decisions session. Other helper funcitions also depend on this state.
  3. "AuthApi" contains helper functions to simplify and DRY up logic related to forming URLs for various types of decisions end-points, as well as some convenience methods for retrieving data via fetch.

Usage

_If you are inside a Decisions web host, the helper functions should load auth IDs, etc. for you. _

Otherwise:

Configuration

Tell the API Where to find your Decisions instance

<script>
  // create global config variable:
  var DecisionsRestConfig = {
    cors: false,
    restRoot: "/decisions/Primary/"
  };
</script>

Alternately, you can put a rest-config.json at the web host root, but then your UI has to handle the fact that it's loaded asynchronously.

In your app code, tell that config to load:

import { ApiConfig } from "@decisions/api-helpers/ApiConfig";
// ...
ApiConfig.loadConfig();

Create a Session

(This is only necessary outside a Decisions Web Host.)

AuthApi.login(this.state.username, this.state.password)
  .then(() => { /* Handle successful login */}))
  .catch(() => { /* Handle successful */ });

Use Helper Functions

Use helper functions to generate URLs

import {
  getFlowIdUrl,
  getWrappedPostFetch
} from "@decisions/api-helpers/ApiHelpers";

//...

/**
 * builds the URL with little boilerplate:
 */
const url = getFlowIdUrl("123-flow-4567-uuid-8901");
const body = {/* ... */};

/**
 * Make `fetch` API call,
 * with a chunk of `Promise` boilerplate tucked away. 
 * 
 * @returns a promise  "resultPropIWant" 
 */ 
return getWrappedPostFetch(url, body, "resultPropIWant");

Road Map

  1. Unit tests
  2. Add support for Decisions Webhooks
  3. Abstract which API is making the requests
    • The fetch methods are fairly standard, and opt in. Good start.
    • Adding modules for other popular tools would be great.