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

@ductus/adapter-dart

v0.3.0

Published

Ductus Dart adapter wrapper — delegates to the pub.dev `ductus` adapter CLI

Readme

@ductus/adapter-dart

Der npm-Wrapper, der den Ductus-Dart-Adapter für @ductus/core startbar macht — die eigentliche Code-Analyse lebt im pub.dev-Paket ductus und läuft in der Dart-Toolchain.

Dieses Paket enthält keine Analyse-Logik. Es stellt nur das Binary ductus-adapter-dart bereit, das dart run ductus:adapter mit dem passenden Paketkontext aufruft, stdout/stderr und Exit-Code durchreicht und dabei garantiert: stdout ist genau ein Graph-JSON-Dokument (pub-Vorspann wie Resolving dependencies... wird nach stderr umgeleitet, nichts geht verloren).

Voraussetzung: ein installiertes Dart SDK im PATH (bei Flutter-Projekten bereits vorhanden). Node.js ≥ 20.

Installation

npm install --save-dev @ductus/core @ductus/adapter-dart

Zusätzlich muss ductus:adapter in der Dart-Welt auflösbar sein — eine der beiden Optionen genügt:

# Option 1: im Zielprojekt (empfohlen, versioniert mit dem Projekt)
dart pub add dev:ductus

# Option 2: global, ganz ohne Eintrag im Zielprojekt
dart pub global activate ductus

Wer die Dart-Annotationen (Weg B, siehe unten) in lib/ importiert, nimmt ductus stattdessen als reguläre Dependency auf: dart pub add ductus.

Quickstart mit @ductus/core

npx ductus init       # legt ductus.config.yaml an
npx ductus extract    # ruft den Dart-Adapter auf → journey-graph.json
npx ductus generate   # LLM (BYOK) → Endnutzer-Doku als MDX oder Website

Der relevante Ausschnitt der ductus.config.yaml (so erzeugt sie ductus init):

adapters:
  - dart:
      project: .
      deriveFrom: [go_router, auto_route]

Mehr zu Konfiguration, LLM-Providern und Ausgabeformaten steht im README von @ductus/core.

Wie @ductus/core den Adapter findet

ductus extract löst den Befehl für den Adapter-Eintrag dart in dieser Reihenfolge auf (identisch implementiert im Core-Runner und in diesem Wrapper):

| # | Quelle | Verhalten | |---|--------|-----------| | 1 | command: im Adapter-Eintrag der ductus.config.yaml | Gewinnt immer — der konfigurierte Befehl wird unverändert ausgeführt. | | 2 | Binary ductus-adapter-dart (dieses Paket) | Gesucht in node_modules/.bin neben der Config, dann im PATH. Der Wrapper setzt intern die Kette 3–5 fort. | | 3 | Umgebungsvariable DUCTUS_DART_ADAPTER_DIR | dart run ductus:adapter mit diesem Verzeichnis als Arbeitsverzeichnis — nützlich, wenn weder Projekt noch pub-global das Paket kennen (z. B. Monorepo-Checkout). | | 4 | pubspec.yaml des Zielprojekts deklariert ductus | dart run ductus:adapter direkt im Zielprojekt (dependencies oder dev_dependencies). | | 5 | Global aktiviertes Paket (dart pub global activate ductus) | dart pub global run ductus:adapter; bei einer path-Aktivierung läuft dart run direkt im Quellverzeichnis. |

Greift keine Stufe, bricht der Aufruf mit einer Fehlermeldung ab, die die Optionen nennt (dart pub add dev:ductus, dart pub global activate ductus oder DUCTUS_DART_ADAPTER_DIR). Das Zielprojekt braucht also keine ductus-Dependency, solange eine der anderen Stufen greift.

Welche Quellen der Adapter versteht

Der Dart-Adapter kombiniert vier Eingabewege zu einem Graphen; manuelle Angaben überschreiben abgeleitete Werte feldweise:

| Weg | Quelle | Dependency im Zielprojekt? | |-----|--------|----------------------------| | A | Kommentar-Konvention @journey:screen, @journey:action, @journey:decision, @journey:flow in //-////-Kommentaren | Keine — komplett buildfrei | | B | Dart-Annotationen @JourneyScreen, @JourneyAction, @JourneyDecision, @JourneyFlow | ductus (nur für den Import, kein Laufzeitverhalten) | | C | Automatische Ableitung aus go_router (GoRoute → Screens, ShellRoute → Flows, redirect: → Decisions, context.go()/push()/… → Transitions) und aus auto_route (@RoutePage() → Screens, best effort) | Keine (nur das Router-Paket selbst) | | D | build_runner-Artefakt ductus_builder.g.json — der Builder aus dem ductus-Paket läuft als Build-Schritt mit und löst auch nicht-literale Konstanten auf; der Adapter reicht das Artefakt mit --from-builder bzw. Config-Key fromBuilder: true durch | ductus + build_runner |

Details, Beispiele und Best Practices zu allen vier Wegen: README des ductus-Pakets. Zwei lauffähige Demo-Apps (Weg A pur sowie Weg B+C kombiniert) liegen unter examples/.

Direkter Aufruf (optional)

Normalerweise startet ductus extract den Wrapper automatisch. Manuell:

ductus-adapter-dart --project <dir> [--config <json-datei>] [--no-debug-file] [--from-builder]
  • --project <dir> (Pflicht): das zu analysierende Dart-/Flutter-Projekt.
  • --config <json-datei>: Adapter-Konfiguration als JSON-Objekt mit den Schlüsseln deriveFrom (Default ["go_router", "auto_route"]), include (Glob-Muster relativ zum Projekt, Default ["lib/**"]) und fromBuilder (Default false). @ductus/core erzeugt diese Datei automatisch aus dem Adapter-Eintrag der ductus.config.yaml.
  • --no-debug-file: unterdrückt die Debug-Datei ductus_graph.g.json im Projektverzeichnis.
  • --from-builder: reicht das build_runner-Artefakt ductus_builder.g.json durch, statt selbst zu scannen (Weg D; äquivalent zum Config-Key fromBuilder: true, das Flag gewinnt).

stdout ist genau ein kanonisches Graph-JSON; Warnungen und Diagnostik gehen auf stderr. Der Exit-Code des Dart-Adapters wird unverändert durchgereicht.

Links

Lizenz

MIT