@heat/cognito

0.0.42 • Public • Published

@heat/cognito NPM Version

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

GZip Size: ~12kB

Installation

npm install --save @heat/cognito

# using yarn:
yarn add @heat/cognito

NodeJS

In nodejs you should polyfill both the webcrypto & fetch API if nodejs doesn't already support it.

import { webcrypto } from 'node:crypto';
import fetch from 'node-fetch';

globalThis.crypto = webcrypto;
globalThis.fetch = fetch;

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 client = new Client({
  clientId: 'CLIENT_ID',
  userPoolId: 'USER_POOL_ID',
  store: new LocalStore()
});

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());

// Log ID token
console.log(session.idToken.toString());

Change Password

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

Custom Call

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

License

MIT

Package Sidebar

Install

npm i @heat/cognito

Weekly Downloads

1

Version

0.0.42

License

MIT

Unpacked Size

38.9 kB

Total Files

32

Last publish

Collaborators

  • micmonen
  • ivands