¿Qué es Sqids?

Sqids es una biblioteca de código abierto que te permite generar identificadores cortos únicos a partir de números. Estos IDs son seguros para URL, pueden codificar varios números y no contienen palabras malsonantes comunes. Leer más .

Así es cómo lucen:

https://example.com/Lqj8a0

Ejemplo rápido de codificación y decodificación:

case sqids (encode [1, 2, 3]) of
  Left  {} -> print "Something went wrong."
  Right id -> print id -- "86Rf07"
case sqids (decode "86Rf07") of
  Left  {}      -> print "Something went wrong."
  Right numbers -> print numbers -- [1, 2, 3]

Si los IDs son muy cortos, puedes rellenarlos hasta cierta longitud:

case runSqids defaultSqidsOptions{ minLength = 10 } (encode [1, 2, 3]) of
  Left  {} -> print "Something went wrong."
  Right id -> print id -- "86Rf07xd4z"

Crea IDs únicos al barajar el alfabeto:

case runSqids defaultSqidsOptions{ alphabet = "k3G7QAe51FCsPW92uEOyq4Bg6Sp8YzVTmnU0liwDdHXLajZrfxNhobJIRcMvKt" } (encode [1, 2, 3]) of
  Left  {} -> print "Something went wrong."
  Right id -> print id -- "XRKUdQ"

La documentación completa está en https://github.com/sqids/sqids-haskell

Si estás buscando el Hashids Haskell original, puedes encontrarlo aquí: https://github.com/laserpants/hashids-haskell

Casos de uso

El uso principal de Sqids es puramente visual. Si prefieres usar IDs en lugar de números en tu proyecto, Sqids podría ser una buena elección.

Bueno Para

  • Codificación de claves primarias Si estás usando una base de datos relacional
  • Ahorro de consultas a la base de datos Al codificar varios objetos
  • Tokens de inicio de sesión temporales Libre de vulgaridades y seguro para URL

No Bueno Para

  • Datos sensibles Esto no es una biblioteca de encriptación
  • IDs de Usuario Puede revelar la cantidad de usuarios si alguien descubre el alfabeto de codificación

Características

  • 🆔 Generar IDs cortos a partir de números no negativos
  • Codificación y decodificación sencillas
  • 🫣 Los IDs autogenerados no contienen palabras malsonantes comunes
  • 🎲 Soporte para IDs personalizados a través de un alfabeto aleatorio
  • 🥳 44 integraciones (75% utilizan un nuevo diseño)
  • 📌 Cada versión produce los mismos IDs
  • 🍻 Biblioteca pequeña con una licencia permisiva

Ejemplo / Playground