- Add GETTING_STARTED.md with quick start guide and development modes - Add INSTALL.sh automated installation script - Add INSTALLATION_CHECKLIST.md, INSTALLATION_SUCCESS.md, and INSTALLATION_SUMMARY.md - Add QUICK_REFERENCE.md for common commands - Add SETUP_GUIDE.md with detailed setup instructions - Update README.md with improved project overview - Add did-wallet app dependencies and node_modules
93 lines
2.6 KiB
JavaScript
93 lines
2.6 KiB
JavaScript
// Linter can see that API is used in types.
|
|
// eslint-disable-next-line
|
|
import * as API from "./link/interface.js"
|
|
import { CID, format, toJSON, fromJSON } from './cid.js'
|
|
// This way TS will also expose all the types from module
|
|
export * from './link/interface.js'
|
|
|
|
const DAG_PB_CODE = 0x70
|
|
// eslint-disable-next-line
|
|
const SHA_256_CODE = 0x12
|
|
|
|
/**
|
|
* Simplified version of `create` for CIDv0.
|
|
*
|
|
* @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.
|
|
* @returns {API.LegacyLink}
|
|
*/
|
|
export const createLegacy = digest => CID.create(0, DAG_PB_CODE, digest)
|
|
|
|
/**
|
|
* Simplified version of `create` for CIDv1.
|
|
*
|
|
* @template {unknown} Data
|
|
* @template {number} Code
|
|
* @template {number} Alg
|
|
* @param {Code} code - Content encoding format code.
|
|
* @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.
|
|
* @returns {API.Link<Data, Code, Alg>}
|
|
*/
|
|
export const create = (code, digest) => CID.create(1, code, digest)
|
|
|
|
/**
|
|
* Type predicate returns true if value is the link.
|
|
*
|
|
* @template {API.Link<unknown, number, number, 0|1>} L
|
|
* @param {unknown|L} value
|
|
* @returns {value is L & CID}
|
|
*/
|
|
export const isLink = value => {
|
|
if (value == null) {
|
|
return false
|
|
}
|
|
|
|
const withSlash = /** @type {{'/'?: Uint8Array, bytes: Uint8Array}} */ (value)
|
|
|
|
if (withSlash['/'] != null && withSlash['/'] === withSlash.bytes) {
|
|
return true
|
|
}
|
|
|
|
const withAsCID = /** @type {{'asCID'?: unknown}} */ (value)
|
|
|
|
if (withAsCID.asCID === value) {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
/**
|
|
* Takes cid in a string representation and creates an instance. If `base`
|
|
* decoder is not provided will use a default from the configuration. It will
|
|
* throw an error if encoding of the CID is not compatible with supplied (or
|
|
* a default decoder).
|
|
*
|
|
* @template {string} Prefix
|
|
* @template {unknown} Data
|
|
* @template {number} Code
|
|
* @template {number} Alg
|
|
* @template {API.Version} Ver
|
|
* @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source
|
|
* @param {API.MultibaseDecoder<Prefix>} [base]
|
|
* @returns {API.Link<Data, Code, Alg, Ver>}
|
|
*/
|
|
export const parse = (source, base) => CID.parse(source, base)
|
|
|
|
export { format, toJSON, fromJSON }
|
|
|
|
/**
|
|
* Decoded a CID from its binary representation. The byte array must contain
|
|
* only the CID with no additional bytes.
|
|
*
|
|
* An error will be thrown if the bytes provided do not contain a valid
|
|
* binary representation of a CID.
|
|
*
|
|
* @template {unknown} Data
|
|
* @template {number} Code
|
|
* @template {number} Alg
|
|
* @template {API.Version} Ver
|
|
* @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes
|
|
* @returns {API.Link<Data, Code, Alg, Ver>}
|
|
*/
|
|
export const decode = bytes => CID.decode(bytes)
|