forked from discordjs/discord.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
generateRequires.mjs
41 lines (29 loc) · 1.42 KB
/
generateRequires.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { readdir, writeFile } from 'node:fs/promises';
import { Constants } from '../src/index.js';
async function writeWebsocketHandlerImports() {
const lines = ["'use strict';\n", 'const handlers = Object.fromEntries(['];
for (const name of Object.keys(Constants.WSEvents)) {
lines.push(` ['${name}', require('./${name}')],`);
}
lines.push(']);\n\nmodule.exports = handlers;\n');
const outputFile = new URL('../src/client/websocket/handlers/index.js', import.meta.url);
await writeFile(outputFile, lines.join('\n'));
}
async function writeClientActionImports() {
const lines = ["'use strict';\n", 'class ActionsManager {', ' constructor(client) {', ' this.client = client;\n'];
const actionsDirectory = new URL('../src/client/actions', import.meta.url);
for (const file of (await readdir(actionsDirectory)).sort()) {
if (file === 'Action.js' || file === 'ActionsManager.js') continue;
lines.push(` this.register(require('./${file.slice(0, -3)}'));`);
}
lines.push(' }\n');
lines.push(' register(Action) {');
lines.push(" this[Action.name.replace(/Action$/, '')] = new Action(this.client);");
lines.push(' }');
lines.push('}\n');
lines.push('module.exports = ActionsManager;\n');
const outputFile = new URL('../src/client/actions/ActionsManager.js', import.meta.url);
await writeFile(outputFile, lines.join('\n'));
}
writeWebsocketHandlerImports();
writeClientActionImports();