@arcblock/did
Version:
Javascript lib to work with ArcBlock DID
36 lines (34 loc) • 1.2 kB
JavaScript
import { isAliasMethod, isCryptoMethod } from "./method.mjs";
import { isValid } from "./index.mjs";
//#region src/validate.ts
/**
* DID Validation Functions
*
* isValid and isFromPublicKey remain in index.ts (too many dependencies to move).
* This file provides isKnownDid which covers all methods including did:name.
*/
/**
* Check if a DID string is a known valid DID.
*
* Unlike `isValid` (which only validates cryptographic addresses),
* `isKnownDid` covers all known methods:
* - Crypto methods (abt/afs/aos/spaces): delegates to `isValid` for checksum validation
* - Alias methods (name): checks for non-empty identifier
* - Unknown methods: returns false
* - Bare cryptographic addresses: delegates to `isValid`
*
* @param did - DID string to validate
* @returns true if the DID is valid for its method
*/
function isKnownDid(did) {
if (typeof did !== "string" || !did) return false;
const match = did.match(/^did:([a-z0-9]+):(.*)$/);
if (!match) return isValid(did);
const [, method, identifier] = match;
if (!identifier) return false;
if (isCryptoMethod(method)) return isValid(did);
if (isAliasMethod(method)) return true;
return false;
}
//#endregion
export { isKnownDid };