0.0.6 • Published 2 years ago

crypg v0.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

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();