Module: codecs
Common codecs for DID packages.
Purpose
Codecs for encoding, decoding and validating types used by the DID packages.
Installation
npm install @didtools/codecs
Usage
Validate a string is a valid DID:
import { didString } from '@didtools/codecs'
import { isRight, validate } from 'codeco'
const result = validate(didString, 'did:key:...')
const isValid = isRight(result)
Encode and decode a Uint8Array as base64-encoded string:
import { uint8ArrayAsBase64 } from '@didtools/codecs'
import { decode } from 'codeco'
const bytes = new Uint8Array(...)
const encoded = uint8ArrayAsBase64.encode(bytes)
const decoded = decode(uint8ArrayAsBase64, encoded)
Type Aliases
Cacao
Ƭ Cacao: Object
Type declaration
| Name | Type |
|---|---|
h | CacaoHeader |
p | CacaoPayload |
s? | CacaoSignature |
CacaoHeader
Ƭ CacaoHeader: Object
Type declaration
| Name | Type |
|---|---|
t | "eip4361" | "caip122" |
CacaoPayload
Ƭ CacaoPayload: Object
Type declaration
| Name | Type |
|---|---|
aud | string |
domain | string |
exp? | string |
iat | string |
iss | string |
nbf? | string |
nonce | string |
requestId? | string |
resources? | string[] |
statement? | string |
version | string |
CacaoSignature
Ƭ CacaoSignature: Object
Type declaration
| Name | Type |
|---|---|
m? | SignatureMeta |
s | string |
t | "eip191" | "eip1271" | "solana:ed25519" | "tezos:ed25519" | "stacks:secp256k1" | "webauthn:p256" |
DIDString
Ƭ DIDString: Opaque<string, "DIDString">
DagJWS
Ƭ DagJWS: Object
Type declaration
| Name | Type |
|---|---|
link? | CID |
payload | string |
signatures | JWSSignature[] |
GeneralJWS
Ƭ GeneralJWS: Object
Type declaration
| Name | Type |
|---|---|
payload | string |
signatures | JWSSignature[] |
JWSSignature
Ƭ JWSSignature: Object
Type declaration
| Name | Type |
|---|---|
protected | string |
signature | string |
SignatureMeta
Ƭ SignatureMeta: any
SignedCacao
Ƭ SignedCacao: Object
Type declaration
| Name | Type |
|---|---|
h | CacaoHeader |
p | CacaoPayload |
s | CacaoSignature |
Variables
Cacao
• Const Cacao: SparseCodec<{ h: ExactCodec<TypeCodec<{ t: KeyOfCodec<{ caip122: null = null; eip4361: null = null }> }>> = CacaoHeader; p: SparseCodec<{ aud: TrivialCodec<string> = string; domain: TrivialCodec<string> = string; exp: OptionalCodec<TrivialCodec<string>> ; iat: TrivialCodec<string> = string; iss: TrivialCodec<string> = string; nbf: OptionalCodec<TrivialCodec<string>> ; nonce: TrivialCodec<string> = string; requestId: OptionalCodec<TrivialCodec<string>> ; resources: OptionalCodec<Codec<string[], string[], unknown> & {}> ; statement: OptionalCodec<TrivialCodec<string>> ; version: TrivialCodec<string> = string }> = CacaoPayload; s: OptionalCodec<ExactCodec<TypeCodec<{ s: TrivialCodec<string> = string; t: KeyOfCodec<{ eip1271: null = null; eip191: null = null; solana:ed25519: null = null; stacks:secp256k1: null = null; tezos:ed25519: null = null }> }>>> }>
CacaoHeader
• Const CacaoHeader: ExactCodec<TypeCodec<{ t: KeyOfCodec<{ caip122: null = null; eip4361: null = null }> }>>
CacaoPayload
• Const CacaoPayload: SparseCodec<{ aud: TrivialCodec<string> = string; domain: TrivialCodec<string> = string; exp: OptionalCodec<TrivialCodec<string>> ; iat: TrivialCodec<string> = string; iss: TrivialCodec<string> = string; nbf: OptionalCodec<TrivialCodec<string>> ; nonce: TrivialCodec<string> = string; requestId: OptionalCodec<TrivialCodec<string>> ; resources: OptionalCodec<Codec<string[], string[], unknown> & {}> ; statement: OptionalCodec<TrivialCodec<string>> ; version: TrivialCodec<string> = string }>
CacaoSignature
• Const CacaoSignature: ExactCodec<TypeCodec<{ s: TrivialCodec<string> = string; t: KeyOfCodec<{ eip1271: null = null; eip191: null = null; solana:ed25519: null = null; stacks:secp256k1: null = null; tezos:ed25519: null = null }> }>>
DagJWS
• Const DagJWS: SparseCodec<{ link: OptionalCodec<Type<CID<unknown, number, number, Version>, string, string>> ; payload: TrivialCodec<string> = string; signatures: Codec<MapIn<{ protected: TrivialCodec<string> = string; signature: TrivialCodec<string> = string }, $TypeOf>[], MapIn<{ protected: TrivialCodec<string> = string; signature: TrivialCodec<string> = string }, $OutputOf>[], unknown> & {} }>
GeneralJWS
• Const GeneralJWS: ExactCodec<TypeCodec<{ payload: TrivialCodec<string> = string; signatures: Codec<MapIn<{ protected: TrivialCodec<string> = string; signature: TrivialCodec<string> = string }, $TypeOf>[], MapIn<{ protected: TrivialCodec<string> = string; signature: TrivialCodec<string> = string }, $OutputOf>[], unknown> & {} }>>
JWSSignature
• Const JWSSignature: ExactCodec<TypeCodec<{ protected: TrivialCodec<string> = string; signature: TrivialCodec<string> = string }>>
SignedCacao
• Const SignedCacao: ExactCodec<TypeCodec<{ h: ExactCodec<TypeCodec<{ t: KeyOfCodec<{ caip122: null = null; eip4361: null = null }> }>> = CacaoHeader; p: SparseCodec<{ aud: TrivialCodec<string> = string; domain: TrivialCodec<string> = string; exp: OptionalCodec<TrivialCodec<string>> ; iat: TrivialCodec<string> = string; iss: TrivialCodec<string> = string; nbf: OptionalCodec<TrivialCodec<string>> ; nonce: TrivialCodec<string> = string; requestId: OptionalCodec<TrivialCodec<string>> ; resources: OptionalCodec<Codec<string[], string[], unknown> & {}> ; statement: OptionalCodec<TrivialCodec<string>> ; version: TrivialCodec<string> = string }> = CacaoPayload; s: ExactCodec<TypeCodec<{ s: TrivialCodec<string> = string; t: KeyOfCodec<{ eip1271: null = null; eip191: null = null; solana:ed25519: null = null; stacks:secp256k1: null = null; tezos:ed25519: null = null }> }>> = CacaoSignature }>>
cid
• Const cid: Type<CID<unknown, number, number, Version>, CID<unknown, number, number, Version>, unknown>
Passthrough codeco codec for CID.
cidAsString
• Const cidAsString: Type<CID<unknown, number, number, Version>, string, string>
codeco codec for CID encoded as string.
didString
• Const didString: RefinementCodec<TrivialCodec<string>, string & WithOpaque<"DIDString">>
codeco codec for a vanilla DID string, i.e. did:method:id.
uint8ArrayAsBase64
• Const uint8ArrayAsBase64: Type<Uint8Array, string, string>
codeco codec for Uint8Array as base64-encoded string.
uint8ArrayAsBase64pad
• Const uint8ArrayAsBase64pad: Type<Uint8Array, string, string>
codeco codec for Uint8Array as base64pad-encoded string.
uint8ArrayAsBase64url
• Const uint8ArrayAsBase64url: Type<Uint8Array, string, string>
codeco codec for Uint8Array as base64url-encoded string.
uint8array
• Const uint8array: TrivialCodec<Uint8Array>
codeco codec for JS Uint8Array.
Functions
asDIDString
▸ asDIDString(input): DIDString
Type cast input as DIDString.
Parameters
| Name | Type |
|---|---|
input | string |
Returns
createUint8ArrayAsString
▸ createUint8ArrayAsString(encoding): Type<Uint8Array, string, string>
Factory for codeco codec for Uint8Array as encoded string.
Parameters
| Name | Type |
|---|---|
encoding | SupportedEncodings |
Returns
Type<Uint8Array, string, string>
isDIDString
▸ isDIDString(input): input is string & WithOpaque<"DIDString">
Verify if input is DID string, i.e. conforms to did:method:id format.
Parameters
| Name | Type |
|---|---|
input | string |
Returns
input is string & WithOpaque<"DIDString">
isUint8Array
▸ isUint8Array(input): input is Uint8Array
Check if the input is a JS Uint8Array.
Parameters
| Name | Type |
|---|---|
input | unknown |
Returns
input is Uint8Array