smart-contract-linear-vesting v0.2.18
Smart Contract Linear Vesting TypeScript Package
Install dependencies
Install dependencies with npm:
npm i
Write your code
Make necessary changes in package.json (name, version, description, keywords, author, homepage and other URLs).
Write your code in src folder, and unit test in test folder, replacing the original files there.
The VS Code shortcuts for formatting of a code file are: Shift + Alt + F (Windows); Shift + Option (Alt) + F (MacOS); Ctrl + Shift + I (Linux).
Change code linting and formatting settings in .prettierrc.js if you want.
Test
Test your code with Jest framework:
npm run test
Note: Example TypeScript Package uses husky, pinst and commitlint to automatically execute test and lint commit message before every commit.
Build
Build production (distribution) files in your dist folder:
npm run build
It generates CommonJS (in dist/cjs folder), ES Modules (in dist/esm folder), bundled and minified UMD (in dist/umd folder), as well as TypeScript declaration files (in dist/types folder).
Try it before publishing
Run:
npm link
npm link will create a symlink in the global folder, which may be {prefix}/lib/node_modules/smart-contract-linear-vesting or C:\Users\\AppData\Roaming\npm\node_modules\smart-contract-linear-vesting.
Create an empty folder elsewhere, you don't even need to npm init
(to generate package.json). Open the folder with VS Code, open a terminal and just run:
npm uninstall smart-contract-linear-vesting -g
Prepare to publish
Create an npm account.
Manual publishing to npm
Log in:
npm adduser
And publish:
npm publish
API doc:
Functions:
handleWeb3Provider: () => Promise;
handleGetDetailInfoAddress: (pool: string, account: string) => Promise<{ address: string; amount: number; claimed: number; claimable: number; remain: number; } | null>;
handleGetErc20Balance: (account: string, token: string) => Promise;
handleClaim: (address?: string) => Promise;
handleChangeStakeholder: (prevStakeholder: string, newStakeholder: string, address?: string) => Promise;
handleApproveStakeholders: (poolAddress: string, token?: string, amount?: number) => Promise;
handleAddStakeholders: (poolAddress: string, amountList?: never[]) => Promise;
handleCreatePool: (name: string, token: string, start: number, duration: number) => Promise;
handleTransferOwnership: (poolAddress: string, valueAddress: string) => Promise;
handleAddManager: (poolAddress: string, token: string, itemManager: string) => Promise;
handleRemoveManager: (poolAddress: string, token: string, itemManager: string) => Promise;
Using:
const { handleGetErc20Balance } = new SmartContractLinearVesting()
(async () => {
const balance = await handleGetErc20Balance(account, process.env.REACT_APP_TOKEN_ADDRESS || '')
balance && dispatch(updateErc20Balance(balance))
})()