@learncard/init
v2.5.10
Published
Primary initialization of LearnCard SDK
Keywords
Readme
@learncard/init
The main entry point for the LearnCard SDK. initLearnCard builds a LearnCard wallet with the right set of @learncard/* plugins for the config you pass in, so you don't have to wire plugins by hand.
Documentation
All LearnCard documentation can be found at: https://docs.learncard.com
Install
bun add @learncard/initUsage
import { initLearnCard } from '@learncard/init';
// Full wallet from a 32-byte hex seed (shorter strings are left-padded with 0s)
const learnCard = await initLearnCard({ seed: 'a'.repeat(64) });
const unsigned = learnCard.invoke.getTestVc();
const vc = await learnCard.invoke.issueCredential(unsigned);
const result = await learnCard.invoke.verifyCredential(vc);Other configs initLearnCard accepts:
| Config | What you get |
| --------------------------------- | -------------------------------------------------------------------- |
| {} | Read/verify-only wallet, no keys |
| { seed } | Full wallet (DIDKit, did:key, VC, templates, LearnCloud, CHAPI, ...) |
| { seed, network: true } | Full wallet plus LearnCard Network (@learncard/network-plugin) |
| { seed, network: true, didWeb } | Network wallet acting as a did:web |
| { apiKey, network: true } | Network wallet authenticated with an API key, no local seed |
| { vcApi: true \| url } | Wallet that signs through a remote VC-API |
| { custom: true } | Empty wallet; add your own plugins with addPlugin |
On Node, pass didkit: 'node' to use @learncard/didkit-plugin-node instead of the WASM build.
Adding a plugin to any wallet:
import { initLearnCard } from '@learncard/init';
import { DynamicLoaderPlugin } from '@learncard/dynamic-loader-plugin';
const learnCard = await initLearnCard({ custom: true });
// DynamicLoaderPlugin has no dependencies. Most plugins need others first
// (e.g. templates need an ID plane), so check each plugin's README.
const withLoader = await learnCard.addPlugin(DynamicLoaderPlugin);Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
