feat: Identity storage.

This commit is contained in:
Hayden Young
2023-02-10 00:35:07 +00:00
committed by haad
parent 4f0c3e2b36
commit 5d7c4e407f
3 changed files with 48 additions and 4 deletions

32
src/identity-storage.js Normal file
View File

@@ -0,0 +1,32 @@
import Entry from './entry.js'
import IPFSBlockStorage from './ipfs-block-storage.js'
import * as dagCbor from '@ipld/dag-cbor'
import { sha256 } from 'multiformats/hashes/sha2'
import { base58btc } from 'multiformats/bases/base58'
import * as Block from 'multiformats/block'
const codec = dagCbor
const hasher = sha256
const IdentityStorage = async ({ storage }) => {
const put = async (identity) => {
const { cid, bytes } = await Block.encode({ value: identity.toJSON(), codec, hasher })
await storage.put(cid.toString(base58btc), bytes)
}
const get = async (hash) => {
const bytes = await storage.get(hash)
if (bytes) {
const { value } = await Block.decode({ bytes, codec, hasher })
return value
}
}
return {
put,
get
}
}
export default IdentityStorage

View File

@@ -8,6 +8,7 @@ import MemoryStorage from './memory-storage.js'
import LRUStorage from './lru-storage.js'
import LevelStorage from './level-storage.js'
import ComposedStorage from './composed-storage.js'
import IdentityStorage from './identity-storage.js'
import { isDefined } from './utils/index.js'
const { LastWriteWins, NoZeroes } = Sorting
@@ -464,4 +465,4 @@ export { Log }
export { Sorting }
export { Entry }
export { DefaultAccessController }
export { IPFSBlockStorage, MemoryStorage, LRUStorage, LevelStorage, ComposedStorage }
export { IPFSBlockStorage, MemoryStorage, LRUStorage, LevelStorage, ComposedStorage, IdentityStorage }