npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mostajs/paiement-contrat

v0.2.0

Published

Vocabulaire commun de l'encaissement : moyens, canaux, verdicts, capacités. Sépare le MOYEN (avec quoi on paie) du CANAL (comment il atteint la banque). Zéro dépendance, zéro exécution — adopté par @mostajs/payment et @mostajs/paiement-tpe sans qu'ils dép

Readme

@mostajs/paiement-contrat

Le vocabulaire commun de l'encaissement : moyens, canaux, verdicts, capacités.

Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later · Zéro dépendance


Le problème

Deux modules décrivent l'encaissement. @mostajs/payment parle aux banques, @mostajs/paiement-tpe parle aux appareils. Chacun a raison dans son périmètre, et personne ne tient le lien — au point que SATIM était décrit deux fois, dans deux vocabulaires.

Pire : les onze dialectes de payment déclarent seize chaînes libres (cib, edahabia, ideal, ussd, mobile_money…) alors que le type déclaré n'en contenait que quatre. Douze valeurs sur seize étaient hors du type — un switch écrit d'après le type manquait la moitié des cas, sans erreur.

L'idée

Un moyen n'est pas un canal.

| notion | question | valeurs | |---|---|---| | moyen | avec quoi le client paie-t-il ? | espèces · carte · virement · titre-restaurant · crypto | | canal | comment ce moyen atteint-il la banque ? | en présence · en ligne · hors ligne |

payment déclarait tpe parmi ses moyens. C'est la racine du désordre : un terminal n'est pas une façon de payer, c'est une façon de présenter une carte.

import { moyenDe, canauxDe } from '@mostajs/paiement-contrat';

moyenDe('cib');       // 'carte'
moyenDe('ideal');     // 'virement'
moyenDe('tpe');       // null  ← ce n'est pas un moyen
canauxDe(['tpe']);    // ['en-presence']  ← c'est un canal

Trois verdicts qu'on confond

  • indetermine — la réponse est perdue : on ignore si le client a été débité. Le cas le plus coûteux de tout l'encaissement.
  • en-attente — la réponse peut encore arriver. Juste tant qu'un chemin reste ouvert ; passé un délai, il devient indetermine.
  • saisie-manuelle — pas un échec, un mode : un humain tape le montant sur le terminal.

Ce que ce module ne fait pas

Il n'exécute rien. Pas de réseau, pas d'état, pas de dépendance — et il en restera ainsi. C'est ce qui permet à payment et paiement-tpe de l'adopter sans dépendre l'un de l'autre.

Adoption : par ajout, jamais par remplacement

Un dialecte garde ses champs actuels et en gagne de nouveaux. Retirer une valeur qu'un dialecte déclare serait une rupture pour ses consommateurs — le nettoyage se fait par mise en correspondance.

Documentation

llms.txt · CHANGELOG.md · docs/