package sqids
OCaml port of Sqids
Install
Dune Dependency
Authors
Maintainers
Sources
0.1.0.tar.gz
md5=3ca341fc0dba4b556cc67ca2b9767a15
sha512=d56fd8ae742db5b5096b4e14390825233701f2e7af10e9b2d5bd92370ecf22b6de990cdf686f80445b01ef96d1d23166b5b6c998efd8dcb0749a576cc5e68395
Description
Generate short unique IDs from numbers.
Published: 12 Feb 2024
README
Sqids OCaml
Sqids (pronounced "squids") is a small library that lets you generate unique IDs from numbers. It's good for link shortening, fast & URL-safe ID generation and decoding back into numbers for quicker database lookups.
Features:
- Encode multiple numbers - generate short IDs from one or several non-negative numbers
- Quick decoding - easily decode IDs back into numbers
- Unique IDs - generate unique IDs by shuffling the alphabet once
- ID padding - provide minimum length to make IDs more uniform
- URL safe - auto-generated IDs do not contain common profanity
- Randomized output - Sequential input provides nonconsecutive IDs
- Many implementations - Support for 40+ programming languages
๐งฐ Use-cases
Good for:
- Generating IDs for public URLs (eg: link shortening)
- Generating IDs for internal systems (eg: event tracking)
- Decoding for quicker database lookups (eg: by primary keys)
Not good for:
- Sensitive data (this is not an encryption library)
- User IDs (can be decoded revealing user count)
๐ Getting started
Install:
opam install sqids
Add to dune-project
:
(sqids (= 0.1.0))
Add to dune
for your target:
(libraries sqids)
Try in utop
:
# require "sqids";;
let s = Sqids.make () in
Sqids.encode s [1; 2; 3]
๐ฉโ๐ป Examples
Simple encode & decode:
Enforce a minimum length for IDs:
let sqids = Sqids.make ~min_length:10 () in
let id = Sqids.encode sqids [1; 2; 3] in (* "86Rf07xd4z" *)
let numbers = Sqids.decode sqids id in (* [1; 2; 3] *)
Randomize IDs by providing a custom alphabet:
let sqids = Sqids.make ~alphabet:"FxnXM1kBN6cuhsAvjW3Co7l2RePyY8DwaU04Tzt9fHQrqSVKdpimLGIJOgb5ZE" () in
let id = Sqids.encode sqids [1; 2; 3] in (* "B4aajs" *)
let numbers = Sqids.decode sqids id in (* [1; 2; 3] *)
Prevent specific words from appearing anywhere in the auto-generated IDs:
let sqids = Sqids.make ~blocklist:["86Rf07"] () in
let id = Sqids.encode sqids [1; 2; 3] in (* "se8ojk" *)
let numbers = Sqids.decode sqids id in (* [1; 2; 3] *)
๐ License
Dev Dependencies (4)
-
odoc
with-doc
-
ocamlformat
with-dev-setup & >= "0.26.1"
-
ocaml-lsp-server
with-dev-setup
-
qcheck-core
with-test & >= "0.21.3"
Used by
None
Conflicts
None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page