0.8.2 • Published 2 months ago

@byu-oit-sdk/client-byu v0.8.2

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 months ago

@byu-oit-sdk/client-byu

An OAuth 2.0-compliant library, effectively replacing byu-wso2-request.

Requirements:

  • Node.js 18+
    • or Node.js 10+ with fetch and crypto polyfills
  • npm v9+

Features

  • Isomorphic (work in NodeJS and the browser)
  • Automatically fetches and refreshes access tokens
  • Automatic retries for 401 responses with a 100ms delay
  • Automatically add headers to help identify the request
    • byu-oit-sdk-request supplies the attempt number and maximum number of requests
    • byu-oit-sdk-invocation-id supplies a unique identifier to track requests

Client

Initializing the client is simple. The BYU Client can be configured with some options to override the default behavior if desired.

const client = new Client()
// or
const client = new Client({ /* options here */ })

Here are a list of supported options:

OptionTypeDefault ValuePurpose
loggerLogger, from pinoByuLogger()(Optional) Logging information from client functionality
credentialsCredentialProvider (or false)ChainedCredentialProvider()(Optional) The credential provider used resolving access tokens
retry{ strategy: RetryMiddlewareConfiguration }{ strategy: new RetryStrategy() }(Optional) Configures the retry middleware. The default configuration will attempt one retry when the response contains a 401 HTTP status code.

The default credential provider is the Client Credentials provider. Any of the parameters that it accepts may be supplied via environment variables with the prefix BYU_OIT_. If a different credential provider is needed, such as the Authorization Code provider, it should be configured and passed into the BYU Client constructor.

The default retry strategy retries once on 401 HTTP response codes after a 100-millisecond delay. The token middleware will try to get a new token before the request is sent. Any middleware added after the retry middleware will also be invoked prior to each request retry.

Note Disable automatic authentication by setting the credentials option to false

const client = new Client({credentials: false})

Command

The Command class is a wrapper for the fetch options. Every command has a middleware stack that is merged into the client middleware stake upon sending a request. To instantiate a command, use the same options as the fetch API.

const command = new Command('https://example.com', { method: 'POST' })

Middleware

Middleware can be placed on the middleware stack on a command or client. If placed on the command's middleware stack, only that command will run the middleware. When placed on the client, all commands using that client instance will run the middleware.

Usage

import { Client, Command } from '@byu-oit-sdk/client-byu'

/** Instantiate the client with environment variables */
const client = new Client()

/** The issuer must be downloaded from the discovery endpoint */
const issuer = await client.issuer()
const uri = new URL('echo/v1/echo/test', issuer) // i.e. https://api.byu.edu/echo/v1/echo/test
const command = new Command(uri/**, Addtional fetch options */)

/** Send the command */
const response = await client.send(command)
0.8.2-beta.0

2 months ago

0.8.2

2 months ago

0.8.1-beta.5

2 months ago

0.8.1-beta.4

2 months ago

0.8.1

2 months ago

0.8.1-beta.3

3 months ago

0.8.1-beta.2

4 months ago

0.8.1-beta.1

4 months ago

0.7.3-beta.0

9 months ago

0.7.3-beta.1

9 months ago

0.7.3-beta.2

9 months ago

0.8.0-beta.7

8 months ago

0.8.0-beta.8

8 months ago

0.8.0-beta.5

9 months ago

0.8.0-beta.6

9 months ago

0.8.0-beta.9

8 months ago

0.8.0-beta.0

9 months ago

0.8.1-beta.0

8 months ago

0.8.0-beta.3

9 months ago

0.8.0-beta.4

9 months ago

0.8.0-beta.1

9 months ago

0.8.0-beta.2

9 months ago

0.7.2

10 months ago

0.8.0

8 months ago

0.7.1

10 months ago

0.6.2

11 months ago

0.7.0

11 months ago

0.6.1

11 months ago

1.0.0-beta.0

11 months ago

0.5.0

11 months ago

0.4.1

11 months ago

0.4.0

11 months ago

0.5.2

11 months ago

0.4.3

11 months ago

0.6.0

11 months ago

0.5.1

11 months ago

0.4.2

11 months ago

0.3.0

12 months ago

0.2.3

12 months ago

0.2.1

1 year ago

0.2.0

1 year ago

0.2.2

1 year ago

0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago