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

@escaladesports/esca-api-client

v3.1.0

Published

A JavaScript client library for Escalade Sports microservices

Downloads

24

Readme

esca-api-client

A JavaScript client library for Escalade Sports microservices

Usage

Step 1 – Instantiate the client

/**
 * Note: the below import should work as written; if not, you may need
 * to import from either '@escaladesports/esca-api-client/browser' or
 * '@escaladesports/esca-api-client/node' depending on your environment
 */
import EscaAPIClient from '@escaladesports/esca-api-client'

const client = new EscaAPIClient({
  environment: `prod`,              // 'test' or 'prod'; defaults to 'test'
  site: `lifeline`,                 // site name; same as ESC-API-Context header
  apiKey: `123abc789xyz`,           // optional; uses relative URLs if not given
  devHost: `http://localhost:8000`  // optional; specifies exact host/port in dev
})

Important notes on API URLs:

  • If apiKey is not provided, relative URLs formatted like /api/{resource}/{action} will be used (e.g. /api/products/load). Otherwise, the full escsportsapi.com URLs will be used (e.g. https://products.escsportsapi.com/load) unless devHost is set.
  • If devHost is provided, URLs will permanently be the value of devHost followed by the relative URL structure described above. This config property should be conditionally included if using the client in a development context and left out completely for production.

Step 2 – Use the client

Here's an example using the loadProducts method:

const products = await client.loadProducts({
  fields: [`inventory`, `price`], // optional; returns name & sku by default
  skus: [`2-FMT-3`, `2-FMT-5`],   // optional; defaults to 'all'
  byParent: true  // optional; groups variants by base product
  // These alternatives are also accepted:
  //    groupByParent: true
  //    groupby: `parent`
  //    groupBy: `parent`
})

Methods

TODO: document these

| Method | Description | | --- | --- | | loadProducts | | | shippingQuote | | | calculateTaxes | | | loadCoupon | | | calculateDiscount | | | validateCoupon | | | getOrderId | | | loadOrder | | | storeOrder | |

Error Handling & Reporting

The client is meant to handle & report most errors. All functions will either:

A) return the expected data or appropriate empty structure (e.g. empty array for products)

B) potentially throw an error (for create/update/delete actions); the error will always be a proper Error object with a message suitable for displaying to the user

Functions which only load data (e.g. loadProducts) will never throw errors but may log failed requests or other problems to the console. Any problems such as failed API calls (non-404) will be reported to Sentry.

Development Notes

This package uses Jest for testing. Run yarn test to run all tests throughout the package.

The test files use these environment variables to make requests to the services, so make sure they are set:

| Variable | Description | | --- | --- | | TEST_API_ENV | Environment for the API to use (dev, test, or prod) | | TEST_API_KEY | API key to use for the services |

Within the test files, these variables can be accessed simply as TEST_API_ENV and TEST_API_KEY (without process.env prepended). They are set up as Jest globals in jest.config.js via the dotenv package.