Code Monkey home page Code Monkey logo

iid's Introduction

The Qid - "Quintessential Internet ID"

Yes, the name is contrived as hell. Iid was a bit confusing. All other cool initial letters were taken in npm ;-)

What's that? Simply uuid/v4, base62-encoded, zero-justified to 22 chars. It looks like "1eCH6Km2kWjIviA5l6q9VN" โ€” made up of only latin letters and numbers. You probably know all about it already.

Looking around, the packages I found seemed shady. Or maybe it was NIH.

The purpose of Qid

  • Clean and simple for APIs, micro-service messaging, apps โ€” you know; internet-stuff
  • Generate a 128-bit Uuid/v4, encoded as a 22-char base-62 string: "Qid"
  • Many mqtt broker implementations has max 22 chars for client_id. Perfect.
  • Since it's considered practically and reasonably collision-free (unless using a sucky PRNG like WinAPI), it can be used to create unique ID's in a decentralized fashion. Good for internet-stuff and mobile.
  • It's not as grotesquely in your face as "289b5d90-4f9b-4095-916b-d82451cf9f53" (uuid/v4 canonical hexadecimal string representation)
  • Convert to and from Uuid/v4 canonical 36-char format for interfacing with databases, external APIs, etc
  • Needless to say, loss-less conversion for all 128-bits, whereof 122 bits are entropy, as per specs.

Sidenotes

  • Written in TypeScript for safety's sake, type-defs included
  • Uses arrays instead of buffers for browser-friendlyness
  • Compiles to ES-mod and CommonJs-mod, to suit direct nodejs-usage, and pre-compiler chains for tree-shaking
  • It leverages quite a bit of tidsbits from "base-x" (through a lineage of different authors), and depends on the ubiquituous "uuid" module

Example

const {Qid} = require("qid") // Or `import {Qid} from "qid"`
say = console.log

const qid = Qid()
say(qid)

const uuid = Qid.toUuid(qid)
say(uuid)

const qid2 = Qid.fromUuid(uuid)
say(qid2)

say(qid === qid2)

Example output:

1eCH6Km2kWjIviA5l6q9VN
289b5d90-4f9b-4095-916b-d82451cf9f53
1eCH6Km2kWjIviA5l6q9VN
true

That's all folks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.