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

netlify

v13.2.0

Published

Netlify Node.js API client

Downloads

734,260

Readme

A Netlify OpenAPI client that works in the browser and Node.js.

Usage

import { NetlifyAPI } from 'netlify'

const client = new NetlifyAPI('1234myAccessToken')
const sites = await client.listSites()

Using OpenAPI operations

import { NetlifyAPI } from 'netlify'

const client = new NetlifyAPI('1234myAccessToken')

// Fetch sites
const sites = await client.listSites()

// Create a site. Notice `body` here for sending OpenAPI body
const site = await client.createSite({
  body: {
    name: `my-awesome-site`,
    // ... https://open-api.netlify.com/#/default/createSite
  },
})

// Delete site. Notice `site_id` is a path parameter https://open-api.netlify.com/#/default/deleteSite
await client.deleteSite({ site_id: siteId })

API

client = new NetlifyAPI([accessToken], [opts])

Create a new instance of the Netlify API client with the provided accessToken.

accessToken is optional. Without it, you can't make authorized requests.

opts includes:

const opts = {
  userAgent: 'netlify/js-client',
  scheme: 'https',
  host: 'api.netlify.com',
  pathPrefix: '/api/v1',
  accessToken: '1234myAccessToken',
  agent: undefined, // e.g. HttpsProxyAgent
  globalParams: {}, // parameters you want available for every request.
  // Global params are only sent of the OpenAPI spec specifies the provided params.
}

client.accessToken

A setter/getter that returns the accessToken that the client is configured to use. You can set this after the class is instantiated, and all subsequent calls will use the newly set accessToken.

client.basePath

A getter that returns the formatted base URL of the endpoint the client is configured to use.

OpenAPI Client methods

The client is dynamically generated from the OpenAPI definition file. Each method is is named after the operationId name of each operation. To see a list of available operations, please see the OpenAPI website.

Every OpenAPI operation has the following signature:

response = await client.operationId([params], [opts])

Performs a call to the given endpoint corresponding with the operationId. Returns a promise resolved with the body of the response, or rejected with an error with the details about the request attached. Rejects if the status > 400.

  • params is an object that includes any of the required or optional endpoint parameters.
  • params.body should be an object which gets serialized to JSON automatically. Any object can live here but refer to the OpenAPI specification for allowed fields in a particular request body. It can also be a function returning an object.
  • If the endpoint accepts binary, params.body can be a Node.js readable stream or a function returning one (e.g. () => fs.createReadStream('./foo')). Using a function is recommended.
// example params
const params = {
  any_param_needed: anyParamNeeded,
  paramsCanAlsoBeCamelCase,
  body: {
    an: 'arbitrary js object',
  },
}

Optional opts can include any property you want passed to node-fetch. The headers property is merged with some defaultHeaders.

// example opts
const opts = {
  headers: {
    // Default headers
    'User-agent': 'netlify-js-client',
    accept: 'application/json',
  },
  // any other properties for node-fetch
}

All operations are conveniently consumed with async/await:

try {
  const siteDeploy = await client.getSiteDeploy({
    siteId: '1234abcd',
    deploy_id: '4567',
  })
  // Calls may fail!
} catch {
  // handle error
}

If the response includes json in the contentType header, fetch will deserialize the JSON body. Otherwise the text of the response is returned.

API Flow Methods

Some methods have been added in addition to the open API operations that make certain actions simpler to perform.

accessToken = await client.getAccessToken(ticket, [opts])

Pass in a ticket and get back an accessToken. Call this with the response from a client.createTicket({ client_id }) call. Automatically sets the accessToken to this.accessToken and returns accessToken for the consumer to save for later.

Optional opts include:

const opts = {
  poll: 1000, // number of ms to wait between polling
  timeout: 3.6e6, // number of ms to wait before timing out
}

See the authenticating docs for more context.

import open from 'open'

const ticket = await client.createTicket({ clientId: CLIENT_ID })
// Open browser for authentication
await open(`https://app.netlify.com/authorize?response_type=ticket&ticket=${ticket.id}`)

// API is also set up to use the returned access token as a side effect
// Save this for later so you can quickly set up an authenticated client
const accessToken = await client.getAccessToken(ticket)

Proxy support

Node.js only: If this client is used behind a corporate proxy, you can pass an HttpsProxyAgent or any other http.Agent that can handle your situation as agent option:

import HttpsProxyAgent from 'https-proxy-agent'

const proxyUri = 'http(s)://[user:password@]proxyhost:port'
const agent = new HttpsProxyAgent(proxyUri)
const client = new NetlifyAPI('1234myAccessToken', { agent })

Site deployment

Support for site deployment has been removed from this package in version 7.0.0. You should consider using the deploy command of Netlify CLI.

License

MIT. See LICENSE for more details.