wooorm / module-exports

Get the exports of a module
MIT License
12 stars 0 forks source link
api export module node typescript

module-exports

Build Coverage Downloads

πŸ‰ Note: this is new software doing complex things that hasn’t been used much. Here be dragons!

Get the exports of a module.

Contents

What is this?

This package finds out what is exposed from a module.

When should I use this?

You can use this to programatically figure out what can be used from a module. Primarily, so that you can then generate docs.

Install

This package is ESM only. In Node.js (version 18+), install with npm:

npm install module-exports

Use

import {toMarkdown} from 'mdast-util-to-markdown'
import {createFinder, defaultFormat} from 'module-exports'

const finder = createFinder()
const result = await finder(new URL('index.js', import.meta.url))

const tree = await defaultFormat(result.symbols)

console.log(toMarkdown(tree))

Yields:

### `Name`

Name fields.

###### Fields

* `name` (`Identifier | NumericLiteral | StringLiteral`)
  β€” name node
* `nameDisplay` (`string`)
  β€” serialized symbol name to sort on
* `nameDisplayPrefix` (`string`)
  β€” prefix to display before name
* `nameDisplaySuffix` (`string`)
  β€” suffix to display after name

<!-- … -->

### `defaultFormat(symbols)`

Format symbols.

###### Parameters

* `symbols` (`ReadonlyArray<Symbol>`)
  β€” list of symbols

###### Returns

Promise to an mdast tree of formatted symbols (`Promise<Root>`).

API

This package exports the identifiers createFinder and defaultFormat. It exports the TypeScript types Name, Result, Symbol, and Value. There is no default export.

Name

Name fields.

Fields

Result

Result.

Fields

Symbol

Value with name.

Extends

Value

Value without name.

Fields

createFinder()

Create a finder.

Parameters

There are no parameters.

Returns

Finder ((url: Readonly<URL>) => Promise<Result>).

defaultFormat(symbols)

Format symbols.

Parameters
Returns

Promise to an mdast tree of formatted symbols (Promise<Root>).

Compatibility

This projects is compatible with maintained versions of Node.js.

When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, module-exports@2, compatible with Node.js 18.

Version

module-exports does not strictly follow SemVer yet while being super new.

Thanks

Special thanks go out to:

Security

This package is safe.

Contribute

Yes please! See How to Contribute to Open Source.

License

MIT Β© Titus Wormer