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

@openfn/adaptor-apis

v0.3.0

Published

Describes OpenFn Adaptor APIs

Downloads

131

Readme

Adaptor APIs

A new openfn package to report API docs for any given adaptor

This parses an adpator's JS docs and returns a JSON representation.

This is designed to replace @openfn/describe-package and @openfn/simple-ast

Doc Representation

At the time of writing, docs are represented as a JSDoc parse tree in JSON:

[{
  "id": "fn",
  "longname": "fn",
  "name": "fn()",
  "kind": "external",
  "scope": "global",
  "description": "Creates a custom step (or operation) for more flexible job writing.",
  "params": [
    {
      "type": { "names": ["function"] },
      "description": "is the function",
      "name": "func"
    }
  ],
  "examples": [
    "fn(state => {\n  // do some things to state\n  return state;\n});"
  ],
  "returns": [{ "type": { "names": ["Operation"] } }],
  "access": "public",
  "meta": {
    "lineno": 76,
    "filename": "Adaptor.js",
    "path": "/home/joe/repo/openfn/adaptors/tools/adaptor-apis/.adaptors/[email protected]/src"
  },
  "order": 3,
  "source": "@openfn/language-common",
  "common": true
}],

A couple of things to note:

  • The scope field denotes the namespace. Top-level operations (like fn()) have a scope of global, whereas namespace things (like http.get) have a scope with the namespaced name (eg, http)
  • Docs exported from common are included. These entries have a source of @openfn/language-common, and rather redundantly a common:true flag.

How it Works

The best source of truth for adaptor docs is the JSDoc annotations inside the adaptor. So this package leverages the existing doc build pipeline of the adaptors repo and exposes it to be used directly.

The module does a couple of things:

  • Downloads adaptor source from github (just the stuff it needs)
  • Downloads the common adaptor source if neccessary
  • Runs the jsdoc parser (exactly the same as the doc site uses) to generate a JSON representation of the API
  • This includes functions exported from common
  • Optionally writes compiled docs to disk

@latest

Since version 0.2.4, adaptor-apis is compatible with @latest versions.

When fetching latest, note that:

  • the local file system cache will be skipped (latest will always re-download files)
  • Files will be pulled from the main on github, not a tagged build

CLI Usage

You can generate docs for any single adaptor from this repo:

pnpm gen <adaptor>@<version>

Eg:

pnpm gen [email protected]

This will generate docs for your adaptor and log the final location of the JSON

NPM Usage

You can also use the module programmatically in node.js or bun or whatever you like:

import { installAndGen } from '@openfn/adaptor-apis';

const specifier = "[email protected]" // Version MUST be specified!
const outputDir = ".adaptors" // optional!

const {
  docs, // the docs JSON
  path,    // the dir that docs are written to
} = await installAndGen(specifier, outputDir)

Issues and Future Work

  • I intend to add a signature field to the output
  • Need to provide TypeScript interfaces
  • I may restructure the output, removing irrelevant stuff and cleaning
  • Better error hanlding for tags that don't exist in particular