Project forked from: https://github.com/s-KaiNet/node-sp-auth
npm install @lucaselb/node-sp-auth --save-devimport * as spauth from '@lucaselb/node-sp-auth';
import * as request from 'request-promise';
//get auth options
spauth.getAuth(url, credentialOptions)
  .then(options => {
    //perform request with any http-enabled library (request-promise in a sample below):
    let headers = options.headers;
    headers['Accept'] = 'application/json;odata=verbose';
    request.get({
      url: 'https://[your tenant].sharepoint.com/sites/dev/_api/web',
      headers: headers
    }).then(response => {
      //process data
    });
  });Promise resolving into object with following properties:
headers- http headers (normally containAuthorizationheader, may contain any other heraders as well)options- any additional options you may need to include for succesful request. For example, in case of on premise user credentials authentication, you need to setagentproperty on corresponding http client
url- required, string, url to SharePoint site,https://sp2013/sites/dev/orhttps:/[your tenant].sharepoint.com/sites/dev/credentialOptions- optional, object in a form of key-value. Each authentication option requires predefined credential object, depending on authentication type. Based on credentials provided,node-sp-authautomatically determines which authentication strategy to use (strategies listed in the top of the readme file).
Possible values for credentialOptions (depending on authentication strategy):
- 
SharePoint on premise (2013, 2016):
- Addin only permissions:
clientId,issuerId,realm,rsaPrivateKeyPath,shaThumbprint - User credentials through the http ntlm handshake:
username,password,domain,workstation - User credentials for form-based authentication (FBA):
username,password,fba= true - User credentials for Forefront TMG (reverse proxy):
username,password,tmg= true 
 - Addin only permissions:
 - 
SharePoint Online:
- Addin only permissions:
clientId,clientSecret - SAML based with user credentials
username,password,online 
 - Addin only permissions:
 - 
ADFS user credentials:
username,password,relyingParty,adfsUrl,adfsCookie - 
On demand authentication
ondemand= true,electron,force,persist,ttl - 
no authentication - do not provide any authentication data at all, like
spauth.getAuth(url).then(...). In that casenode-sp-authwill ask you for the site url and credentials. You will have to select any of the credential options listed above. Credentials will be stored in a user folder in an encrypted manner.
Credits: Andrew Koltyakov @koltyakov and his awesome node-sp-auth-config 
Please, use Wiki to see how you can configure your environment in order to use any of this authentication options.
configuration- object accepting some configuration values for node-sp-auth. Currently it supports only configuration of underlinerequestmodule via providing below code (for options available consider request repository):
spauth.setup({
   requestOptions: {... request options object}
 });