
✅ Cover SDK
Cover SDK is JavaScript and TypeScript client library for integrating the Cover protocol into applications.
Cover's SDK makes it easy to:
- Manage build configs
- Submit new builds
- Check a canister's verified status
- Query data from the Cover canister
... And more!
Contents Table
Installation
npm i @psychedelic/cover
Import
const {Cover} = require('@psychedelic/cover');
import {Cover} from '@psychedelic/cover';
API
- Construct a new Cover object with your identity
const cover = new Cover(identity: SignIdentity);
cover.verify(canisterId: Principal): Promise<boolean>;
cover.getCoverHash(canisterId: Principal): Promise<string | undefined>;
cover.getICHash(canisterId: Principal): Promise<string | undefined>;
cover.getAllVerifications(paginationInfo: PaginationInfo): Promise<VerificationPagination>;
cover.getVerificationByCanisterId(canisterId: Principal): Promise<Verification | undefined>;
cover.getVerificationStats(): Promise<Stats>;
cover.getMyVerificationStats(): Promise<Stats>;
- APIs with pagination info parameter will return an object like this
interface Pagination {
page_index: bigint;
data: Array<T>;
total_pages: bigint;
total_items: bigint;
is_first_page: boolean;
items_per_page: bigint;
is_last_page: boolean;
}
- Interact with build configs of given identity (the identity passed in the Cover constructor)
cover.getMyBuildConfigs(): Promise<Array<BuildConfig>>;
cover.getMyBuildConfigById(canisterId: Principal): Promise<BuildConfig | undefined>;
cover.deleteMyBuildConfig(canisterId: Principal): Promise<void>;
- Get recent activities from Cover
cover.getActivities(paginationInfo: PaginationInfo): Promise<ActivityPagination>;
cover.getMyActivities(paginationInfo: PaginationInfo): Promise<MyActivityPagination>;
- Get Cover Metadata information
cover.coverMetadata(canisterId: Principal): Promise<CoverMetadata>;
Cover.anonymousCoverMetadata(canisterId: Principal): Promise<CoverMetadata>;
- Interact with Cover Validator, more info about the validator and the parameters used below, see here
- Cover SDK will get public key and signature from your identity and send to Cover Validator
cover.saveBuildConfig(buildConfigRequest: BuildConfigRequest): Promise<void>;
cover.build(buildRequest: BuildRequest): Promise<void>;
cover.buildWithConfig(buildWithConfigRequest: BuildWithConfigRequest): Promise<void>;
Cover.anonymousSaveBuildConfig(buildConfigRequest: AnonymousBuildConfigRequest, coverConfig?: CoverConfig): Promise<void>;
Cover.anonymousBuild(buildRequest: AnonymousBuildRequest, coverConfig?: CoverConfig): Promise<void>;
Cover.anonymousBuildWithConfig(buildWithConfigRequest: AnonymousBuildWithConfigRequest, coverConfig?: CoverConfig): Promise<void>;
Cover.buildWithCoverMetadata(coverMetadataRequest: CoverMetadataRequest, coverConfig?: CoverConfig): Promise<void>;
- Get public key and sign a signature with your identity and current timestamp
getPublicKey: (identity: SignIdentity) => string;
sign: (identity: SignIdentity, timestamp: number) => Promise<string>;
- Error code with Validator's APIs above
ERR_XXX;
SDK_ERR_XXX;
{
code: string;
message: string;
details: unknown;
}
Typescript Example
Example extract identity from PEM using SDK
import {Cover, getPublicKey, sign} from '@psychedelic/cover';
import {Ed25519KeyIdentity} from '@dfinity/identity';
import {Principal} from '@dfinity/principal';
import {SignIdentity} from '@dfinity/agent';
const identity = Ed25519KeyIdentity.generate() as SignIdentity;
const cover = new Cover(identity);
const isVerified = await cover.verify(Principal.fromText('iftvq-niaaa-aaaai-qasga-cai'));
const icHash = await cover.getICHash(Principal.fromText('iftvq-niaaa-aaaai-qasga-cai'));
const coverHash = await cover.getCoverHash(Principal.fromText('iftvq-niaaa-aaaai-qasga-cai'));
const verification = await cover.getVerificationByCanisterId(Principal.fromText('iftvq-niaaa-aaaai-qasga-cai'));
const publicKey = getPublicKey(identity);
const timestamp = new Date().getTime();
const signature = await sign(identity, timestamp);