JSPM

iam-client-lib

3.0.0-alpha.27
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1130
  • Score
    100M100P100Q99840F
  • License GPL-3.0-or-later

Library for Decentralized Identity and Access Management

Package Exports

  • iam-client-lib

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 (iam-client-lib) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Identity and Access Management (IAM) Client Library

TypeScript library to be used within decentralized applications for authentication and authorization using DIDs (Decentralized Identifiers) and VCs (Verifiable Credentials)

IAM-client-lib demos

Live Demos

react logo React Demo / angular logo Angular Demo / vue logo Vue Demo

Demo source code: iam-client-examples

Documentation

Read the Docs

Getting Started

For development purposes, please follow below steps to integrate the library with your dApps.

Prerequisites

iam-client-lib is written in TypeScript. Make sure to have Node.js (>= v10) installed. Create a folder named iam-client-lib and clone this GIT project.

Also note that having a DID document with a public key is a prerequisite for using iam-client-lib and during initialization the library with attempt to add a public key to the DID document if one doesn't exist. This addition of the public key requires the account to be funded.

Install

Latest stable version

$ npm i iam-client-lib

Prerelease version

$ npm i iam-client-lib@canary

Sample Config for browsers (TypeScript)

import {
  IAM,
  WalletProvider,
  setCacheClientOptions,
  setChainConfig,
  setMessagingOptions,
  MessagingMethod,
} from 'iam-client-lib'

export class App {
    private _iam: IAM;

    constructor() {
      // IAM has builtin default settings for VOLTA CHAIN

      // If you want to change default cache server config or add config for your network
      setCacheClientOptions(1111, {
        url: 'https://some-cache-server.com/',
        cacheServerSupportsAuth: true,
      })

      // If you want to change default chain config or add config for your network
      setChainConfig(1111, {
        didContractAddress: '0x3e2fb24edc3536d655720280b427c91bcb55f3d6',
        ensRegistryAddress: '0xa372d665f83197a63bbe633ebe19c7bfd4943003',
        ensResolverAddress: '0xe878bdcf5148307378043bfd2b584909aa48a227',
        rpcUrl: 'http://some-rpc.com',
      })

      // If you want to change default messaging config or add config for your network
      setMessagingOptions(1111, {
        messagingMethod: MessagingMethod.Nats,
        natsServerUrl: 'https://some-exchange-server.com',
      })

      // create IAM instance
      this._iam = new IAM();
    }

    async initializeIAM() {
      // this will show connection modal and authenticate
      const { did, connected } = await this._iam.initializeConnection({
        walletProvider: WalletProvider.MetaMask,
      });

      // after successfully authentication you can retrieve the signer
      const signer = this._iam.getSigner();
    }

Sample Config for Node.js (TypeScript)

import { IAM } from 'iam-client-lib'

export class App {
    private _iam: IAM;

    constructor() {
     // IAM has builtin default settings for VOLTA CHAIN

      // If you want to change default cache server config or add config for your network
      setCacheClientOptions(1111, {
        url: 'https://some-cache-server.com/',
        cacheServerSupportsAuth: true,
      })

      // If you want to change default chain config or add config for your network
      setChainConfig(1111, {
        didContractAddress: '0x3e2fb24edc3536d655720280b427c91bcb55f3d6',
        ensRegistryAddress: '0xa372d665f83197a63bbe633ebe19c7bfd4943003',
        ensResolverAddress: '0xe878bdcf5148307378043bfd2b584909aa48a227',
        rpcUrl: 'http://some-rpc.com',
      })

      // create IAM instance
      this._iam = new IAM({
        // only for Node.js env you need to pass rpcUrl in the constructor
        rpcUrl: 'http://some-rpc.com',
        privateKey: '9945c05be0b1b7b35b7cec937e78c6552ecedca764b53a772547d94a687db929'
      });
    }



    async initializeIAM() {
      // this will authenticate
      const { did, connected } = await this._iam.initializeConnection();

      // after successfully authentication you can retrieve the signer
      const signer = this._iam.getSigner();
    }

Development

For testing use npm run test:watch

Installing Dependencies

Using npm to install dependencies:

npm install ./energyweb-km-utils-v1.0.0.tgz
npm install ./energyweb-km-crypto-v1.0.0.tgz
npm install

Compile & Build

To generate bundled JS files and types, use the following command. Generated files are located in the dist folder.

$ npm run build

Active Maintainers

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

License

This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE file for details

FAQ

Frequently asked questions and their answers will be collected here.