2.1.0 • Published 6 months ago

@tfadev/discord.js-docs v2.1.0

Weekly downloads
-
License
GPL-3.0
Repository
github
Last release
6 months ago

A simple & powerful parser and wrapper for discord.js documentation website. This package uses axios as the main HTTP requests handler.

Installation

npm install @tfadev/discord.js-docs axios

Usage

Create a new parser using the class Docs. The parameter is based discord.js docs URL, by default it's "discord.js.org".

import { Docs as DiscordJSDocs } from '@tfadev/discord.js-docs';

const parser = new DiscordJSDocs();

Fetch from a source:

Get everything from a discord.js docs source using the method fetch().

await parser.fetch('main');

Search from a source by query:

The method to do this job is search().

The options of this method:

  • rate (number - 0.8): The rate of similarity of the keyword and the query, must be in this following condition: 0 < rate ≤ 1
  • include (KeywordTypes[] - undefined): Include single or multiple specific types, like classex, typedefs... etc
  • sort (boolean - false): Sort the response by points of each keyword or not?
  • strict (boolean - false): Enable strict mode; The keyword and the query must be exactly similar (not similar to rate: 1).
await parser.search('main', 'Client');

await parser.search('builders', 'SlashCommand', {
    rate: 0.5
    include: [
        'classes',
        'typedefs',
        ...
    ],
    sort: false,
    strict: true
});

Get a keyword's data:

To get a keyword's data (such as class properties, functions... etc), use get() method. If the keyword is not found, it will return null.

await parser.get('main', 'Client');

Format searched data:

Format the keywords using the method search(), it will return an objects array with some symbols.

The options of this method:

  • symbols (object - {}): Set the symbols of each keyword's type.
  • sort (boolean - false): Sort the response by points of each keyword or not?
  • pretty: (boolean - false): Make the JSDoc comments pretty; removes brackets ({ and }) and any prefixes starts with @ (@link, @see... etc).
import { DocsUtils } from '@tfadev/discord.js-docs';

DocsUtils.format([...]);

DocsUtils.format([ ..], {
    symbols: {
        classes: 'C',
        functions: 'F',
        ...
    },
    sort: true,
    pretty: true
});

Example

Here is a simple example using the search and format method.

import { Docs as DiscordJSDocs, DocsUtils } from '@tfadev/discord.js-docs';

const parser = new DiscordJSDocs();

(async () => {
    const searched = await parser.search('main', 'Channel', { rate: 0.7 });

    const formatted = DocsUtils.format(searched, {
        symbols: {
            classes: 'C',
            typedefs: 'T',
            interfaces: 'I',
            externals: 'E',
            functions: 'F'
        },
        sort: true,
        pretty: true
    }); 

    const result = formatted.map((v) => `[${v.symbol}] ${v.name}`);

    console.log(result);
})();

Expected output in terminal:

[
  '[C] DMChannel',
  '[E] APIChannel',
  '[C] BaseChannel',
  '[C] NewsChannel',
  '[C] TextChannel',
  '[F] channelLink',
  '[E] ChannelType',
  '[C] ForumChannel',
  '[C] GuildChannel',
  '[C] MediaChannel',
  '[C] StageChannel',
  '[C] VoiceChannel',
  '[E] ChannelFlags'
]

Known bugs

  • The url property (defined in the type DiscordJSDocsFormatOutput) has a chance to return an invalid URL, from the both base URLs.

License

GNU General Public License v3 (View here)