wooorm / module-exports

Get the exports of a module

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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
  • 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

Result

Result.

Fields
  • messages (Array<VFileMessage>) β€” messages
  • symbols (Array<Symbol>) β€” symbols

Symbol

Value with name.

Extends
  • Name
  • Value

Value

Value without name.

Fields
  • description (Root | undefined) β€” symbol description
  • heritage (Array<Value>) β€” things this inherits from
  • parameters (Array<Symbol>) β€” parameters
  • properties (Array<Symbol>) β€” properties
  • return (Value | undefined) β€” return value
  • typeExpression (Type) β€” type of value itself
  • typeExpressionDisplay (string) β€” seralized type

createFinder()

Create a finder.

Parameters

There are no parameters.

Returns

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

defaultFormat(symbols)

Format symbols.

Parameters
  • symbols (ReadonlyArray<Symbol>) β€” list of symbols
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

About

Get the exports of a module

License:MIT License


Languages

Language:JavaScript 96.5%Language:TypeScript 3.5%