Aller au contenu principal

Arkhe

ἀρχή - « origine »

Alternative moderne et légère à lodash. Manipulation de données, type guards et utilitaires de fonctions avec un design TypeScript-first et un tree-shaking optimal.

Arkhe fournit un ensemble soigné de fonctions utilitaires pour le développement TypeScript quotidien. Contrairement à Lodash, chaque fonction est écrite en TypeScript de A à Z, avec une inférence de types stricte et aucune vérification de types runtime. Les données en entrée sont validées et les erreurs remontent immédiatement (fail fast, fail loud).

La bibliothèque est distribuée en ES modules avec des imports granulaires, pour que les bundlers puissent éliminer automatiquement le code inutilisé.


Quelques exemples

Chaque import cible une seule fonction pour un tree-shaking optimal. Votre bundler n'inclut que le code que vous utilisez réellement, gardant votre bundle de production minimal :

import { chunk } from "pithos/arkhe/array/chunk";
import { groupBy } from "pithos/arkhe/array/group-by";
import { get } from "pithos/arkhe/object/get";
import { debounce } from "pithos/arkhe/function/debounce";

const users = [{ name: "Alice", role: "admin" }, { name: "Bob", role: "user" }];

chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
groupBy(users, (u) => u.role); // { admin: [...], user: [...] }
get(users[0], "name", "Anonymous"); // "Alice"
debounce(handleSearch, 300);
  • chunk découpe un tableau en groupes d'une taille donnée.
  • groupBy catégorise les éléments par une fonction clé.
  • get accède en toute sécurité aux propriétés imbriquées avec une valeur par défaut.
  • debounce limite la fréquence d'appel d'une fonction, utile pour les champs de recherche ou les handlers de resize

Quand l'utiliser

Arkhe couvre les besoins les plus courants de manipulation de données dans les projets TypeScript. Que vous transformiez des collections, remodéliez des objets, formatiez des chaînes de caractères ou contrôliez l'exécution de fonctions, Arkhe fournit un utilitaire type-safe et immuable pour le travail :

  • Tableaux : chunk, groupBy, partition, difference, intersection, orderBy...
  • Objets : get, set, merge, pick, omit, evolve...
  • Chaînes de caractères : camelCase, kebabCase, capitalize, template...
  • Fonctions : debounce, throttle, memoize, pipe, curry...
  • Async : retry, parallel, defer, sleep...
  • Types : Nullable, Arrayable, PartialKeys, type guards...

Quand NE PAS l'utiliser

Arkhe se concentre sur les utilitaires de données à usage général. Pour des besoins spécialisés, d'autres modules Pithos sont plus adaptés :

BesoinUtilisez plutôt
Validation de schémasKanon
Gestion des erreurs (Result/Either)Zygos

Migrer depuis Lodash

Étape 1 : Installer Pithos

npm install @pithos/core

Étape 2 : Remplacer les imports progressivement

Pas besoin de tout migrer d'un coup. Remplacez une fonction à la fois :

// Avant
import { chunk, groupBy } from "lodash-es";

// Après : remplacer une à la fois
import { chunk } from "pithos/arkhe/array/chunk";
import { groupBy } from "lodash-es"; // migrer plus tard

Étape 3 : Consulter la table d'équivalence

Toutes les fonctions Lodash n'ont pas un équivalent Arkhe. Certaines ont des remplacements JavaScript natifs, et certaines sont intentionnellement exclues. Consultez la table d'équivalence complète pour une correspondance exhaustive.

Étape 4 : Exécuter vos tests

Arkhe fournit des utilitaires similaires à Lodash mais le comportement peut différer sur certains cas limites :

  • null/undefined : Arkhe throw sur une entrée invalide, Lodash retourne silencieusement undefined ou une valeur par défaut
  • Clonage profond : les objets complexes (Date, Map, Set, RegExp...) peuvent être gérés différemment
  • Prototypes : Arkhe ignore __proto__, seules les propriétés propres comptent

Pour les fonctions qui ont été remplacées par du JavaScript natif, Taphos fournit des fonctions dépréciées avec des suggestions IDE pour une migration en douceur vers leurs équivalents natifs.


Ressources associées