JSPM

  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q11633F
  • License MIT

Lightweight AWS Cognito client for the browser.

Package Exports

  • @heat/cognito
  • @heat/cognito/src/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@heat/cognito) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@heat/cognito NPM Version

Lightweight AWS Cognito client for the browser. Uses the native web crypto & BigInt features in the browser & designed the API to be tree shakable to keep the package as small as possible.

GZip Size: ~12kB

The code is still a bit buggy.

Known Issue's

  • The Cognito Login API will sometimes respond with a "incorrect username or password" error, even tho the username & password are correct.

Installation

npm install --save @heat/cognito

# using yarn:
yarn add @heat/cognito

Stores

Depending on your use case you might want to use one of the following stores.

  • MemoryStore - Mostly used for debugging and when you don't want to persist the login token.

  • LocalStore - Used to store the login token on the client only.

  • CookieStore - The CookieStore is useful in scenarios like SSR, when you need access to the login token on the client as well as on the server. (The server will need to polyfill the fetch & web crypto API)

Examples

Setup

import { Client, LocalStore } from '@heat/cognito';

const store = new LocalStore();
const client = new Client({
  clientId: 'CLIENT_ID',
  userPoolId: 'USER_POOL_ID',
  store,
});

Sign Up

import { signUpCommand, confirmSignUpCommand } from '@heat/cognito';

await signUpCommand(client, {
  email: 'EMAIL',
  username: 'USER',
  password: 'PASS',
});

// Let the user fill in his confirmation code.
await confirmSignUpCommand(client, {
  username: 'USER',
  code: 'SIGN_UP_CONFIRMATION_CODE'
})

Sign In

const session = await signInCommand(client, {
  username: 'USER',
  password: 'PASS',
});

// Log logged in user.
console.log(session.getUser());

Sign Out

await signOutCommand(client);

Get Active Login Session

const session = await sessionCommand(client);

// Log access token
console.log(session.accessToken.toString());

Change Password

await changePasswordCommand(client, {
  previousPassword: 'PREV_PASS',
  proposedPassword: 'NEW_PASS',
});

Custom Call

const response = await client.call('API_NAME', {
  ...
});

License

MIT