UNPKG

@ceramicnetwork/core

Version:

Typescript implementation of the Ceramic protocol

42 lines 1.79 kB
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