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

cirxx

v0.1.0

Published

De opdrachtregel van cirxx: instellingen ophalen als bestanden, wijzigen en terugzetten.

Readme

cirxx

De inrichting van een cirxx-omgeving als bestanden: ophalen, in git zetten, bewerken, terugzetten. Voor wie met meer mensen aan één omgeving bouwt of een pull request over een wijziging wil hebben. Wie liever praat met een AI heeft dit niet nodig: dan haak je de MCP-server aan (Setup › Integraties › Bouwen met een AI).

Nul afhankelijkheden, alleen Node 20 of nieuwer.

Beginnen

npx cirxx login sandbox-jansen.cirxx.com
npx cirxx pull

login opent je browser, jij logt in op je eigen omgeving en keurt één scherm goed. Er komt geen sleutel in je terminal: het gereedschap krijgt een token dat verloopt, dat namens jóu werkt (nooit met meer rechten dan je zelf hebt), en dat je kunt intrekken in Setup › Integraties › Verbonden apps.

De aanmelding staat in ~/.cirxx/omgevingen.json (rechten 0600). Er staat een vernieuwtoken in, dus dat bestand hoort nergens anders te komen.

Commando's

cirxx login <adres>          inloggen in de browser
cirxx omgevingen             waar je aangemeld bent
cirxx gebruik <naam>         welke omgeving de standaard is
cirxx afmelden               het token intrekken en hier weghalen

cirxx pull [soort…]          instellingen ophalen als bestanden
cirxx diff [soort…]          verschil tussen de map en de omgeving
cirxx push [soort…]          bestanden terugzetten in de omgeving
cirxx check                  controleren zonder op te slaan
cirxx test [flow]            de flowtests draaien
cirxx deploy [soort…]        van de sandbox naar productie, als wijzigingsset

Vlaggen: -o <naam> (welke omgeving), --map <map> (standaard ./cirxx), --overschrijf, en bij push ook --controleer (niets wijzigen) en --verwijder-wat-weg-is.

Meerdere omgevingen

Een bureau werkt in meer dan één omgeving. Meld je bij elk van ze aan; ze staan naast elkaar, elk met een eigen naam en een eigen token.

cirxx login sandbox-jansen.cirxx.com -o jansen
cirxx login sandbox-de-vries.cirxx.com -o devries
cirxx gebruik jansen         de standaard voor commando's zonder -o
cirxx pull -o devries        eenmalig ergens anders
cirxx omgevingen             wat er staat, met een ster bij de standaard

Eén aanmelding hoort bij één omgeving én bij één persoon. Er komt geen token dat overal bij kan: dan zou één gelekt bestand alle klanten zijn.

Doorvoeren naar productie

cirxx deploy --check                       controleren tegen productie
cirxx deploy --naam "Kenteken bij klussen" doorvoeren
cirxx deploy fields                        alleen de velden
cirxx deploy --klaarzetten                 als voorstel neerleggen

deploy neemt wat er in de sandbox anders is dan in productie en zet het door als wijzigingsset — dezelfde weg als Setup › Sandbox, met dezelfde controles en dezelfde terugdraaiknop. Wat het níet doet:

  • duwen. Wat nog in je map staat gaat niet mee; cirxx push komt eerst.
  • verwijderen. Verwijderde rijen zitten nooit in een wijzigingsset: verwijderen in productie kost gegevens en blijft handwerk.
  • doorvoeren zonder recht. Het recht wordt in productie gemeten, niet in de sandbox. Heb je het niet, dan is --klaarzetten de weg: dan legt de CLI een voorstel neer dat een collega in Setup met één knop doorvoert.

Is er in productie sinds de kopie iets veranderd, dan stopt deploy met een lijstje. Kies dan --overschrijf (de sandbox wint), laat die regels buiten de set, of los het per regel op in Setup › Sandbox.

De projectmap

cirxx/
  .stempels.json                 wat er in de omgeving stond toen je ophaalde
  objects/klus.json
  fields/klus/kenteken.json
  flows/f_3a1c.json
  translations/en/field/klus/kenteken.json

Eén bestand per rij, mappen per soort, en de bestandsnaam is de identiteit — niet een intern id, zodat git diff een leesbare regel geeft. De mapnaam is de soort zoals de API hem noemt (fields, saved_views, …): dezelfde naam die de wijzigingsset en de MCP-server gebruiken, en die niet meeverandert met de taal van wie hem ophaalt.

Welke rij het is, leest de CLI uit het veld identiteit in het bestand. De naam van het bestand is er voor jou; een bestand hernoemen breekt dus niets.

{
  "soort": "fields",
  "identiteit": { "object_api": "klus", "api_name": "kenteken" },
  "waarden": { "label": "Kenteken", "type": "text", "required": 0 }
}

Zet de map in git. Dan is git diff na een cirxx pull een leesbaar verslag van wat er in de omgeving veranderde — ook van een terugdraaiing.

Conflicten

pull bewaart per bestand een hash van wat er stond. Daardoor kijkt diff twee kanten op: wat jij veranderde, én wat er in de omgeving veranderde sinds je ophaalde. Is het aan beide kanten veranderd, dan weigert push dat bestand en gebeurt er niets — ook niet aan de andere bestanden in dezelfde opdracht.

Kies dan zelf:

  • cirxx pull --overschrijf — de omgeving heeft voorrang;
  • cirxx push --overschrijf — de map heeft voorrang.

push is bewust geen synchronisatie: wat niet in de map staat wordt niet verwijderd, tenzij je --verwijder-wat-weg-is meegeeft. Anders wist een halve pull je halve omgeving.

Wat er niet in gaat

  • De definitie van een flow. Die reist mee in het bestand (zodat je hem in git ziet), maar terugzetten gaat via de flowbouwer of via de flow-handelingen van de API — nooit als ruwe JSON. Bij een push zegt de CLI het als je een definitie gewijzigd hebt.
  • Een flow activeren. Een gereedschap maakt altijd een concept-versie; live zetten doet een mens.
  • Records. Dit gaat over instellingen. Klantgegevens importeren doe je met de import in de app of via /api/v1/records.
  • Rechtstreeks naar productie duwen. Lokale bestanden gaan naar een sandbox, en van daar met cirxx deploy als wijzigingsset naar productie — dezelfde weg als in Setup, met dezelfde controles. Heeft de omgeving geen sandbox, dan is Bouwen in productie (Setup › Integraties) de route en werkt push rechtstreeks; de harde weigeringen op gegevensverlies blijven gelden.

Uit deze repo draaien

node cli/bin/cirxx.mjs pull --map /pad/naar/projectmap

CIRXX_CONFIG verlegt het bestand met aanmeldingen, CIRXX_MAP de projectmap.