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

@rawsql-ts/ddl-docs-cli

v0.3.0

Published

CLI tool that generates Markdown table definition docs from DDL files using rawsql-ts

Readme

@rawsql-ts/ddl-docs-cli

Generate Markdown table definition documents from DDL files.

  • DDL is treated as SSOT.
  • SQL parsing uses rawsql-ts.
  • CREATE TABLE and ALTER TABLE ... ADD CONSTRAINT are applied across the full DDL stream.
  • COMMENT ON TABLE/COLUMN is parsed via rawsql-ts.

Install

pnpm --filter @rawsql-ts/ddl-docs-cli build

Usage

ddl-docs generate --ddl-dir ztd/ddl --out-dir ztd/docs/tables

Show help:

ddl-docs help
ddl-docs help generate
ddl-docs help prune
ddl-docs help check

Generated layout:

  • ztd/docs/tables/index.md
  • ztd/docs/tables/<schema>/index.md
  • ztd/docs/tables/<schema>/<table>.md

Options:

  • --ddl-dir <directory> repeatable recursive directory input
  • --ddl-file <file> repeatable explicit file input
  • --ddl <file> alias of --ddl-file
  • --ddl-glob <pattern> repeatable glob pattern input
  • --extensions <csv> default .sql
  • --out-dir <directory> output root (default ztd/docs/tables)
  • --config <path> optional ztd.config.json path
  • --default-schema <name> schema override for unqualified table names
  • --search-path <csv> schema search path override
  • --table-docs <path> optional table documentation metadata JSON for review-only fields such as column samples
  • --relationship <path> optional DDL relationship metadata JSON for Related Concepts / Processes
  • --concept-relationship <path> optional concept registry JSON used to generate concept pages
  • --no-index skip index page generation
  • --strict fail when warnings exist
  • --column-order <mode> definition (default) or name

Table Docs Metadata

Use --table-docs <path> when review-only documentation should be rendered without writing it into database comments. For example, column samples can be provided from JSON and rendered in the generated table report before the Comment column.

{
  "schemaVersion": 1,
  "tables": {
    "public.transfer_active_black": {
      "columns": {
        "source_key_json": {
          "sample": {
            "sales_id": 123
          }
        }
      }
    }
  }
}

Design intent can be added without writing it into DB comments:

{
  "schemaVersion": 1,
  "tables": {
    "public.transfer_active_black": {
      "decision": "source_key_hash is kept as a lookup aid, not as identity.",
      "reviewRisk": "identity-boundary",
      "conceptRefs": ["active-black"],
      "processRefs": ["transfer-execution-process"],
      "tradeoff": [
        "Hash lookup improves large-scale search.",
        "Final identity remains source_key_json."
      ],
      "alternativesRejected": [
        "Do not include source_key_hash in unique identity."
      ]
    }
  }
}

When --relationship and --concept-relationship are supplied, generated table pages include Related Concepts / Processes, and review pages are emitted under:

  • <outDir>/concepts/
  • <outDir>/processes/

Prune generated files:

ddl-docs prune --out-dir ztd/docs/tables

Prune preview:

ddl-docs prune --out-dir ztd/docs/tables --dry-run

Optional orphan cleanup:

ddl-docs prune --out-dir ztd/docs/tables --prune-orphans

Metadata Check

Use check to detect stale review metadata before rendering or review. This command checks structure and references only; it does not judge whether the concept/process meaning is correct.

ddl-docs check \
  --ddl-dir packages/transfer/db/ddl \
  --table-docs packages/transfer/db/ddl/table-docs.json \
  --relationship packages/transfer/db/ddl/relationship.json \
  --order packages/transfer/db/ddl/order.json \
  --concept-relationship packages/transfer/docs/concepts/concept-relationship.json \
  --default-schema rawsql_transfer

Errors are intended for CI failure, such as missing files, stale table/column/index/constraint references, invalid JSON shape, or DDL files missing from order.json. Warnings are review aids, such as important constraints without review notes or JSON columns without samples.

VitePress Integration

This tool emits plain Markdown files and index pages. If you prefer VitePress-side navigation generation, run with --no-index and let your site config build navigation from the generated table pages.

Warnings

Warnings are emitted to <outDir>/_meta/warnings.json. Use --strict in CI to treat warnings as failures.

Memory Notes

Current implementation prioritizes correctness by applying the full DDL stream and aggregating table metadata before rendering. For large schemas (for example, ~300 tables), follow-up optimization should focus on reducing peak memory by keeping only compact table metadata and discarding statement-level objects early.

Minimal E2E Sample

See packages/ddl-docs-cli/examples/minimal-e2e.