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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@wepin/sdk-js

v0.0.24

Published

Wepin Widget Javascript SDK for Web

Downloads

396

Readme

@wepin/sdk-js

npm version npm downloads

The Wepin SDK is designed for use in both Web environments. This package is exclusively available for use in web environments.

⚠️ Notice:

This package is only available for web environments and cannot be used in Android or iOS hybrid apps (Webview).

If you are using this package in a Server Side Rendering (SSR) environment, make sure to load the package only on the Client Side Rendering (CSR) side.

Please refer to the following code for implementation:

const initWepinSDK = async () => {
   const { WepinSDK } = await import('@wepin/sdk-js');
   const wepinSDK = new WepinSDK({
       appKey: '',
       appId: '',
   });
   await wepinSDK.init();
}

⏩ Document

typedoc

⏩ Get App ID and Key

After signing up for Wepin Workspace, go to the development tools menu and enter the information for each app platform to receive your App ID and App Key.

⏩ Install

To install the Wepin Widget SDK, you can use npm, yarn, or a CDN: Using npm:

npm install @wepin/sdk-js

Using yarn:

yarn add @wepin/sdk-js

Using CDN: You can also include the library directly via CDN by adding the following script tag to your HTML file:

<script src="https://cdn.jsdelivr.net/npm/@wepin/sdk-js/dist/umd/wepin-widget-sdk.umd.js"></script>

⏩ Import SDK

Using npm or yarn:

import { WepinSDK } from '@wepin/sdk-js'

Using CDN:

const { WepinSDK } = window.WepinWidgetSDK

⏩ Initialize

Create a new instance of WepinSDK and initialize it with your application's ID and key:

const wepinSdk = new WepinSDK({
    appId: 'your-wepin-app-id',
    appKey: 'your-wepin-app-key',
})

init

await wepinSdk.init(attributes?)

Parameters

  • attributes <IWepinSDKAttributes> optional
    • type: This determines how the widget is displayed when Wepin is initiated. The default value is 'hide' and currently, only 'hide' is supported.
    • defaultLanguage: - defaultLanguage: The language to be displayed on the widget (default: 'en') Currently, only ko, en, and ja are supported.
    • defaultCurrency: The currency to be displayed on the widget (default: 'USD') Currently, only 'KRW','USD' and 'JPY' are supported.
    • loginProviders: optional An array of login providers to configure the widget.
      • If not provided, all available login providers will be displayed on the widget.
      • If an empty array is provided, only the email login function is available. (from version v0.0.3)

Example

await wepinSdk.init({
    type: 'hide',
    defaultLanguage: 'ko',
    defaultCurrency: 'KRW',
})

// google, apple login
await wepinSdk.init({
    type: 'hide',
    defaultLanguage: 'ko',
    defaultCurrency: 'KRW',
    loginProviders: ['google', 'apple']
})

// only email login
await wepinSdk.init({
    type: 'hide',
    defaultLanguage: 'ko',
    defaultCurrency: 'KRW',
    loginProviders: []
})

isInitialized

wepinSdk.isInitialized()

The isInitialized() method checks Wepin SDK is initialized.

Returns

  • <boolean>
    • true if Wepin SDK is already initialized.

changeLanguage

wepinSdk.changeLanguage({language, currency})

Change the language and currency of the widget.

Parameters

  • language <string> - The language to be displayed on the widget. Currently, only 'ko', 'en' and 'ja' are supported.
  • currency <string> - The currency to be displayed on the widget. Currently, only 'KRW', 'USD' and 'JPY' are supported.

Returns

  • void

Example

wepinSdk.changeLanguage({
   currency: 'KRW',
   language: 'ko'
})

⏩ Method

Methods can be used after initialization of Wepin SDK.

getStatus

await wepinSdk.getStatus()

Returns lifecycle of wepin.

Parameters

  • void

Returns

  • Promise<WepinLifeCycle>
    • The lifecycle of the wepin is defined as follows.
      • 'not_initialized': if wepin is not initialized
      • 'initializing': if wepin is initializing
      • 'initialized': if wepin is initialized
      • 'before_login': if wepin is initialized but the user is not logged in
      • 'login': if the user is logged in
      • 'login_before_register': if the user is logged in but the user is NOT registered in wepin

Example

const status = await wepinSdk.getStatus()

openWidget

await wepinSdk.openWidget()

The openWidget() method displays the Wepin widget. If a user is not logged in, the widget will not open. Therefore, you must log in to Wepin before using this method. To log in to Wepin, use the loginWithUI method or the loginWepin method from the @wepin/login-js.

Parameters

  • void

Returns

  • Promise <void>

Example

await wepinSdk.openWidget()

closeWidget

wepinSdk.closeWidget()

The closeWidget() method closes Wepin widget.

Parameters

  • void

Returns

  • void

Example

wepinSdk.closeWidget()

loginWithUI

await wepinSdk.loginWithUI({email}?)

The loginWithUI() method returns the information of the user who is logged in. If no user is logged in, the Wepin widget will display a login page. To perform a login without the widget, use the loginWepin() method from @wepin/login-js instead.

Parameters

  • email <string> optional
    • The email parameter allows users to log in using the specified email address, providing access to the login service.

Returns

  • Promise<IWepinUser>
    • status <'success'|'fail'>
    • userInfo <object> optional
      • userId <string>
      • email <string>
      • provider <'google'|'apple'|'naver'|'discord'|'email'|'external_token'>
      • use2FA <boolean>
    • userStatus: <object> - The user's status of wepin login. including:
      • loginStatus: <'complete' | 'pinRequired' | 'registerRequired'> - If the user's loginStatus value is not complete, it must be registered in the wepin.
      • pinRequired?:
    • walletId <string>

Example

//without email
const userInfo = await wepinSdk.loginWithUI()
//with email
const userInfo = await wepinSdk.loginWithUI({email})
  • response
{
    "status": "success",
      "userInfo": {
        "userId": "120349034824234234",
        "email": "[email protected]",
        "provider": "google",
        "use2FA": true,
      },
}

register

await wepinSdk.register()

Register the user with Wepin. After joining and logging in, the Register page of the Wepin widget opens and registers (wipe and account creation) the Wepin service. Available only if the life cycle of the WepinSDK is login_before_register. After calling the loginWepin() method in @wepin/login-js, if the loginStatus value in the userStatus is not 'complete', this method must be called.

Parameters

  • void

Returns

  • Promise<IWepinUser>
    • status <'success'|'fail'>
    • userInfo <object> optional
      • userId <string>
      • email <string>
      • provider <'google'|'apple'|'naver'|'discord'|'email'|'external_token'>
      • use2FA <boolean>
    • userStatus: <object> - The user's status of wepin login. including:
      • loginStatus: <'complete' | 'pinRequired' | 'registerRequired'> - If the user's loginStatus value is not complete, it must be registered in the wepin.
      • pinRequired?:
    • walletId <string>

Exception

Example

const userInfo = await wepinSdk.register()

registerUserEmail

await wepinSdk.registerUserEmail(param)

The registerUserEmail function registers an email for accounts from OAuth providers that do not already have an email associated with them.

Supported Version

Supported in version 0.0.18 and later

Parameters

  • provider <LoginProviders> - Provider for Firebase login. The value must be one of the supported login provider names in lowercase, such as 'google', 'naver', 'discord', 'apple', 'facebook', or 'line'. Please refer to Wepin Social Login Auth Provider documentation to check the supported login providers.
  • idToken <string> - id token value to be used for login
  • accessToken <string> - access token value to be used for login

Return Value

  • Promise<IWepinUser>
    • status <'success'|'fail'>
    • userInfo <object> optional
      • userId <string>
      • email <string>
      • provider <'google'|'apple'|'naver'|'discord'|'email'|'external_token'>
      • use2FA <boolean>
    • userStatus: <object> - The user's status of wepin login. including:
      • loginStatus: <'complete' | 'pinRequired' | 'registerRequired'> - If the user's loginStatus value is not complete, it must be registered in the wepin.
      • pinRequired?:
    • walletId <string>

Example

await wepinSdk.registerUserEmail({
    provider: 'google',
    idToken: 'google-idToken',
})

logout

await wepinSdk.logout()

The logout() method performs a wepin logout.

Parameters

  • void

Returns

  • Promise <void>

getAccounts

await wepinSdk.getAccounts()
await wepinSdk.getAccounts(options?)

The getAccounts() method returns user accounts. It is recommended to use getAccounts() method without argument to get all user accounts. It can be only usable after widget login.

Parameters
  • options:
    • networks: <Array> optional A list of network names to filter the accounts.
      • network <string> optional
    • withEoa: <boolean> optional If AA accounts are included, whether to include EOA accounts

Returns

  • Promise <Account[]> - A promise that resolves to an array of the user's accounts.
    • address <string>
    • network <string>
    • contract <string> optional token contract address.
    • isAA <boolean> optional Whether it is aa account or not

Example

const result = await wepinSdk.getAccounts({
  networks: ['Ethereum'], 
  withEoa: true
})
  • response
[
  {
    "address": "0x0000001111112222223333334444445555556666",
    "network": "Ethereum",
  },
  {
    "address": "0x0000001111112222223333334444445555556666",
    "network": "Ethereum",
    "contract": "0x777777888888999999000000111111222222333333",
  },
  {
    "address": "0x4444445555556666000000111111222222333333",
    "network": "Ethereum",
    "isAA": true,
  },
]

getBalance

await wepinSdk.getBalance(accounts)
await wepinSdk.getBalance()

It returns the account's balance information. It can be only usable after widget login. It use getBalance() method without argument to get all user accounts.

Parameters

  • accounts <Account[]> optional
    • network <string>
    • address <string>
    • isAA <boolean> optional Whether it is aa account or not

Returns

  • Promise <AccountBalanceInfo[]>
    • network <string>
    • address <string>
    • symbol <string> - symbol of account
    • balance <string> - balance of account
    • tokens <Array<TokenBalanceInfo>> - token balance information for account
      • symbol <string> - token symbol
      • balance <string> - token balance
      • contract <string> - token contract address

Example

const result = await wepinSdk.getBalance([{
  address: '0x0000001111112222223333334444445555556666',
  network: 'Ethereum',
}])
  • response
[
    {
        "network": "Ethereum",
        "address": "0x0000001111112222223333334444445555556666",
        "symbol": "ETH",
        "balance": "1.1",
        "tokens":[
            {
                "contract": "0x123...213",
                "symbol": "TEST",
                "balance": "10"
            },
        ]
    }
]

send

await wepinSdk.send({account, txData?})

It returns the sent transaction id information. It can be only usable after widget login.

Parameters

  • account <Account>
    • network <string>
    • address <string>
  • txData <object> optional
    • to <string>
    • amount <string>

Returns

  • Promise <object>
    • txId <string>

Example

const result = await wepinSdk.send({
    account: {
        address: '0x0000001111112222223333334444445555556666',
        network: 'Ethereum',
    },
    txData: {
        to: '0x9999991111112222223333334444445555556666',
        amount: '0.1',
    }
})
  • response
{
    "txId": "0x76bafd4b700ed959999d08ab76f95d7b6ab2249c0446921c62a6336a70b84f32"
}

finalize

await wepinSdk.finalize()

The finalize() method finalizes the Wepin SDK.

Parameters

  • Promise<void>

Returns

  • void

Example

await wepinSdk.finalize()

⏩ WepinSDK Events Registration

Registering WepinSDK events allows you to trigger responses based on changes in the user's connection status. WepinSDK triggers specific events such as wepinLifeCycleChange, send_in_process, send_complete, and more. Generally, this is not a mandatory step and is only performed when necessary.

on(EVENT, CALLBACK)

WepinSDK defines the following events to monitor state changes.

Events

|Event Name | WEPIN_SDK_EVENTS | Event Text | Description | |-------------------------|-------------------------------------------|-------------------------|---------------------------------------------------| | wepinLifeCycleChange | WEPIN_SDK_EVENTS.WEPIN_LIFECYCLE_CHANGE | “wepinLifeCycleChange” | Triggered when the lifeCycle of WepinSDK changes | | send_in_process | WEPIN_SDK_EVENTS.SEND_IN_PROGRESS | send_in_progress | Triggered when a send is in progress | | send_complete | WEPIN_SDK_EVENTS.SEND_COMPLETE | send_complete | Triggered when a send is complete |

Example

import { WEPIN_SDK_EVENTS, WepinLifeCycle, IWepinUser, WepinSDK } from "@wepin/sdk-js";

const subscribeWepinEvents = (wepinSDK: WepinSDK) => {
  wepinSDK.on(
    WEPIN_SDK_EVENTS.WEPIN_LIFECYCLE_CHANGE,
    (lifecycle: WepinLifeCycle, userInfo?: IWepinUser) => {
      console.log('wepinLifeCycleChange', lifecycle)
      if (lifecycle == 'login' || lifecycle === 'login_before_register') {
        console.log('userInfo', userInfo)
      }
    }
  )
  wepinSDK.on(WEPIN_SDK_EVENTS.SEND_IN_PROGRESS, () => {
    console.log('send_in_progress')
  })
  wepinSDK.on(
    WEPIN_SDK_EVENTS.SEND_COMPLETE,
    (success: boolean, message?: string) => {
      if (success) {
        console.log('send_complete: success', message)
      } else {
        console.log('send_complete: failure', message)
      }
    }
  )
}