@ceramicnetwork/core
Version:
Typescript implementation of the Ceramic protocol
42 lines • 1.79 kB
JavaScript
import { Ceramic } from '../ceramic.js';
import * as uint8arrays from 'uint8arrays';
import * as sha256 from '@stablelib/sha256';
import tmp from 'tmp-promise';
import { Ed25519Provider } from 'key-did-provider-ed25519';
import * as ThreeIdResolver from '@ceramicnetwork/3id-did-resolver';
import * as KeyDidResolver from 'key-did-resolver';
import { Resolver } from 'did-resolver';
import { DID } from 'dids';
const VERSION_INFO = { cliPackageVersion: '', gitHash: '', ceramicOneVersion: '' };
export async function createCeramic(ipfs, config) {
const databaseDir = await tmp.dir({ unsafeCleanup: true });
const databaseUrl = new URL(`sqlite://${databaseDir.path}/ceramic.sqlite`);
const appliedConfig = {
stateStoreDirectory: config?.stateStoreDirectory ?? (await tmp.tmpName()),
anchorOnRequest: config?.anchorOnRequest ?? false,
streamCacheLimit: 100,
pubsubTopic: '/ceramic/inmemory/test',
indexing: {
db: databaseUrl.href,
allowQueriesBeforeHistoricalSync: false,
disableComposedb: false,
enableHistoricalSync: false,
},
anchorLoopMinDurationMs: 0,
...config,
};
const ceramic = await Ceramic.create(ipfs, appliedConfig, VERSION_INFO);
const seed = sha256.hash(uint8arrays.fromString(appliedConfig.seed || 'SEED'));
const provider = new Ed25519Provider(seed);
const keyDidResolver = KeyDidResolver.getResolver();
const threeIdResolver = ThreeIdResolver.getResolver(ceramic);
const resolver = new Resolver({
...threeIdResolver,
...keyDidResolver,
});
const did = new DID({ provider, resolver });
await did.authenticate();
ceramic.did = did;
return ceramic;
}
//# sourceMappingURL=create-ceramic.js.map