@tfadev/discord.js-docs v2.1.1
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 axiosUsage
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 ≤ 1include(KeywordTypes[] -undefined): Include single or multiple specific types, like classex, typedefs... etcsort(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 torate: 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
urlproperty (defined in the typeDiscordJSDocsFormatOutput) has a chance to return an invalid URL, from the both base URLs.
License
GNU General Public License v3 (View here)