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

@inwink-mcp/backoffice-extension-helpers

v1.0.8

Published

CLI pour bootstrapper, packager et vérifier les extensions backoffice inwink.

Readme

@inwink-mcp/backoffice-extension-helpers

CLI pour bootstrapper, packager et vérifier les extensions backoffice inwink.

Une extension inwink est une SPA React/TypeScript 100 % client-side, qui s'authentifie en OIDC (Authorization Code + PKCE) et appelle les API inwink en Bearer token. Cette CLI génère le squelette conforme (auth, config Vite, manifest, packaging) pour éviter de le réécrire à la main, puis automatise le build + zip + contrôle de conformité.

S'utilise via npx, sans installation :

npx @inwink-mcp/backoffice-extension-helpers@latest <commande> [options]

Commandes

bootstrap

Génère le squelette d'une extension dans le dossier courant (ou --dir).

npx @inwink-mcp/backoffice-extension-helpers@latest bootstrap \
  --name mon-extension \
  --display-name "Mon Extension" \
  --description "Ce que fait l'extension." \
  --author [email protected] \
  --event-api-url https://.../event \
  --community-api-url https://.../community \
  --customer-api-url https://.../customer

| Option | Description | |--------|-------------| | --name <slug> | (requis) Slug unique (minuscules, chiffres, tirets) | | --display-name <name> | (requis) Nom affiché dans l'interface inwink | | --description <text> | (requis) Description courte | | --author <email> | (requis) Email de l'auteur | | --event-api-url <url> | (requis) URL de base de l'API Event | | --community-api-url <url> | (requis) URL de base de l'API Community | | --customer-api-url <url> | (requis) URL de base de l'API Customer | | --template <id> | Template à utiliser (défaut : vite-extension) | | --dir <path> | Dossier cible (défaut : dossier courant) | | --force | Écrire même si le dossier cible n'est pas vide | | --install | Lancer npm install après la génération |

Fichiers générés : extension.manifest.json, package.json, vite.config.ts, tsconfig*.json, index.html, src/ (auth OIDC, api/endpoints.ts, hooks useInwink*Api, main.tsx, App.tsx), scripts/zip-build.mjs, ainsi que AGENTS.md et CLAUDE.md pour guider les agents IA. Les URLs d'API sont injectées dans src/api/endpoints.ts.

package

Build + zip {name}-{version}.zip + vérification de conformité, en une commande.

npx @inwink-mcp/backoffice-extension-helpers@latest package

| Option | Description | |--------|-------------| | --dir <path> | Dossier du projet (défaut : dossier courant) |

Lance npm run build dans le projet, zippe le contenu de dist/, puis vérifie la conformité. Sort en code ≠ 0 si la conformité échoue.

verify

Vérifie la conformité sans rebuild (utile en CI ou après un build manuel).

npx @inwink-mcp/backoffice-extension-helpers@latest verify

| Option | Description | |--------|-------------| | --dir <path> | Dossier du projet (défaut : dossier courant) | | --zip <file> | Chemin d'un zip à inspecter |

Contrôles effectués :

  • extension.manifest.json présent, name (slug) et version (semver) valides ;
  • dist/ contient index.html + extension.manifest.json à la racine + assets/ ;
  • le zip contient index.html et extension.manifest.json à la racine, sans node_modules/, src/ ni dist/ ;
  • avertissements : base: './' absent de vite.config.ts, usage de BrowserRouter.

Templates

Les templates sont des sous-dossiers de templates/. Le seul template actuel est vite-extension. En ajouter d'autres : créer un nouveau sous-dossier (les fichiers .tpl voient leurs placeholders __NAME__, __DISPLAY_NAME__, __DESCRIPTION__, __AUTHOR__ substitués et leur suffixe .tpl retiré ; les autres fichiers sont copiés tels quels).

Développement

npm install
npm run build     # compile src/ → dist/cli.js (tsup, ESM, shebang)
npm run dev       # build en watch

Test local rapide :

node dist/cli.js bootstrap --name demo --display-name "Demo" --description "..." --author [email protected] --dir /tmp/demo