crypg
v0.0.6
Published
Opaque identifier generation.
Downloads
5
Readme
Identifier
Opaque identifier generation.
Abstract
Randomly generating unique opaque identifiers is a common problem that this library proposes to solve with sane defaults for the local and global contexts.
Local identifiers
ID
Calculating the probability of collision in a set of n possible values is known as the birthday problem.
With a length of 20 characters picked at random from an alphabet of 62 symbols (a-zA-Z0-9), at a pace of 1,000,000 identifiers generated per second, it would take 4,000 years to reach a 1% collision probability (20 chars/62 symbols is the default this library settled for).
Global identifiers
UUID
A universally unique identifier (UUID) is 128-bits long and can guarantee uniqueness across space and time.
URN
A URN is a kind of Uniform Resource Identifier (URI).
UUIDs don't require a registration process to be unique, making them very low minting-cost Uniform Resource Names (URN) (other URN namespaces such as, for example, ISBN rely on a registration process).
The uuid
URN Namespace Identifier has been described and registered following due process, hence urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
is the valid URN representation of UUID f81d4fae-7dec-11d0-a765-00a0c91e6bf6
.
URL
A URL is a kind of Uniform Resource Identifier (URI) that, in addition to identifying a resource, provides a means of locating the resource by describing its primary access mechanism.
NamedNode
A NamedNode is the standard RDF/JS abstraction for RDF IRI nodes.
How to?
Generate a local identifier
import { id } from "crypg";
id();
Generate a UUID
import { uuid } from "crypg";
uuid();
Generate a URN
import { urn } from "crypg";
urn();
Generate a URL
import { url } from "crypg";
// Returns a URL with base https://example.org/
url();
// Returns a URL with base https://example.com/
url("https://example.com")
Generate a NamedNode
import { namednode } from "crypg";
// Returns a NamedNode with base URL https://example.org/ for its value
namednode("https://example.com");
// Returns a NamedNode that is a UUID URN
namednode();