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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@livechat/accounts-sdk

v2.2.3

Published

SDK for 'Sign in with LiveChat'.

Readme

accountsSDK

accountsSDK is a small library that installs the "Sign in with LiveChat" button on any website or app. It also wraps OAuth flow in an easy-to-use API.

Installation

npm install --save @livechat/accounts-sdk

Button

Example sign in with LiveChat button designs. Assets are available here.

Button Small button

Example popup

import AccountsSDK from '@livechat/accounts-sdk';

// create new SDK instance with it's options
const sdk = new AccountsSDK({
  client_id: '<your_app_client_id>'
});

document.getElementById('login-button').onclick = (e) => {
  if (e && e.preventDefault) {
    e.preventDefault();
  }

  sdk.popup().authorize().then((authorizeData)=>{
    const transaction = sdk.verify(authorizeData);
    if (transaction != null) {
      // authorization success
      // authorizeData contains `accessToken` or `code`
      // transation contains state and optional code_verifier (code + PKCE)
    }
  }).catch((e)=>{

  })
};

Flows

Authorize using a popup. It's possible to pass options to override constructor options.

const sdk = new AccountsSDK(options)
const promise = sdk.popup(options).authorize()

Authorize using iframe. It's possible to pass options to override constructor options. Works when a browser doesn't check for ITP, and user authentication is set.

const sdk = new AccountsSDK(options)
const promise = sdk.iframe(options).authorize()

Authorize using a full redirect. Authorize function performs full browser redirect to an authorization server. authorizeData function checks if authorization is set in URL.

const sdk = new AccountsSDK(options)

sdk.redirect().authorizeData().then((authorizeData)=>{
  // authorize data found in URL
  const transaction = sdk.verify(authorizeData);

}).catch((e)=>{
  // authorize data missing, redirect to authorization server
  sdk.redirect().authorize()
})

Options

  • client_id string required registered client ID
  • organization_id string organization ID
  • prompt string use consent to force consent prompt in a popup and redirect flows
  • response_type='token' string OAuth response type, use token or code
  • popup_flow='auto' string auto - don't show popup when credentials are not required, manual - always show popup
  • state string OAuth state param, auto generated by SDK when empty
  • verify_state=true bool a function that returns transaction should verify if the state matches
  • scope string - custom scope list, must be a subset of preconfigured client ID scopes
  • redirect_uri string OAuth redirect URI - current location by default
  • email_hint string fill in an email hint in forms
  • server_url='https://accounts.livechat.com' string authorization server url
  • path='' string option to provide a path when loading accounts, for example /signup
  • tracking object tracking querystring params
  • transaction.namespace='com.livechat.accounts' string transaction keys prefix
  • transaction.key_length=32 number transaction random state length
  • transaction.force_local_storage=false bool try to use local storage instead of cookies
  • pkce.enabled=true bool Oauth 2.1 PKCE extension enabled for code grant
  • pkce.code_verifier string override auto generated code verifier
  • pkce.code_verifier_length=128 number code verifier length, between 43 and 128 characters https://tools.ietf.org/html/rfc7636#section-4.1
  • pkce.code_challange_method='S256' string code challange method, use S256 or plain

SJCL

One of components uses crypto library called SJCL. We include a custom build in src/vendor/sjcl.js that only includes the pieces we need and avoids bundler errors caused by Node requires in standard version.

To do this build yourself and verify code integrity, do the following:

  1. Clone the SJCL repo.
  2. Check out a 1.0.8 version.
  3. Run ./configure --without-all --with-sha256 --compress=none to configure our build.
  4. Run make sjcl.js to build the file.
  5. Compare newly created sjcl.js with the one included in src/vendor.

Release

To release a new version of the package to npm:

  1. Make sure you're logged in:

    npm login

    This will prompt you for your npm username, password, and 2FA code (if enabled). You can confirm you're logged in with:

    npm whoami
  2. Verify you have publish permissions:

    npm publish --dry-run

    This will simulate publishing without actually publishing. If you don't have permission, you'll see:

    403 Forbidden - You do not have permission to publish to this organization

    You can also check your permissions with:

    npm access list collaborators @livechat/accounts-sdk | grep "$(npm whoami)"

    Or list all collaborators with write permission:

    npm access list collaborators @livechat/accounts-sdk | grep write
  3. Create a new branch for the release:

    git checkout -b release-v2.0.11  # use the appropriate version number
  4. Update the version in package.json following semantic versioning:

    npm version patch --no-git-tag-version  # for bug fixes (2.0.10 -> 2.0.11)
    npm version minor --no-git-tag-version  # for new features (2.0.10 -> 2.1.0)
    npm version major --no-git-tag-version  # for breaking changes (2.0.10 -> 3.0.0)
  5. Update the CHANGELOG.md:

    • Move all items from the [Unreleased] section to a new version section with the release version number and date
    • Ensure the changes are categorized properly (Added, Changed, Fixed, Security, Documentation)
    • Add a new empty [Unreleased] section at the top
    • Update the version comparison links at the bottom of the file

    Example:

    ## [Unreleased]
    
    
    ## [2.0.11] - 2026-02-09
    
    ### Fixed
    - Fix issue with authentication flow

    Then commit both changes:

    git add package.json package-lock.json CHANGELOG.md
    git commit -m "Bump version to 2.0.11"
  6. Build the package:

    npm run build
  7. Run tests to ensure everything works:

    npm test
  8. Push the branch:

    git push origin release-v2.0.11
  9. Create a pull request with the version update and get it reviewed and merged.

  10. After the PR is merged, checkout the default branch and pull the latest changes:

    git checkout master
    git pull
  11. Create and push the git tag on the merged commit:

    git tag v2.0.11
    git push origin v2.0.11
  12. Publish to npm:

    npm publish

Note: Tagging after the PR is merged keeps the tag on the commit that actually landed on the default branch (important when using squash/rebase merges). The prepare script will automatically run the build before publishing.

Beta Release Process

To release a beta version of the package for testing purposes:

  1. Make sure you're logged in to npm:

    npm login
    npm whoami  # confirm you're logged in
  2. Create a beta version (without committing):

    npm version prerelease --preid=beta --no-git-tag-version

    This will bump the version to something like 2.1.4-beta.0. For subsequent beta iterations:

    npm version prerelease --no-git-tag-version  # increments to beta.1, beta.2, etc.
  3. Build the package:

    npm run build
  4. Run tests to ensure everything works:

    npm test
  5. Publish to npm with the beta tag:

    npm publish --tag beta

Note: The --tag beta flag ensures that this version is not installed by default. Users must explicitly install it with npm install @livechat/accounts-sdk@beta. You can view all published beta versions with npm view @livechat/accounts-sdk versions.