erlc-api 3.3.0 → 3.3.2-a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,40 +4,42 @@
4
4
  [![License](https://img.shields.io/npm/l/erlc-api?style=flat-square)](https://opensource.org/licenses/MIT)
5
5
  [![Downloads](https://img.shields.io/npm/dt/erlc-api?style=flat-square)](https://www.npmjs.com/package/erlc-api)
6
6
 
7
- Una librería ligera, completa y **totalmente tipada** para interactuar con la API de *Emergency Response: Liberty County* (ER:LC). Diseñada para ofrecer la mejor experiencia de desarrollo tanto en JavaScript como en TypeScript.
7
+ [🇪🇸 Versión en Español](README_ES.md)
8
+
9
+ A lightweight, complete, and **fully typed** library for interacting with the *Emergency Response: Liberty County* (ER:LC) API. Designed to provide the best development experience in both JavaScript and TypeScript.
8
10
 
9
11
  ---
10
12
 
11
- ## ✨ Características
13
+ ## ✨ Features
12
14
 
13
- - 🎯 **Cobertura Total**: Soporte para el 100% de los endpoints de la API v1.
14
- - 🛡️ **Tipado TypeScript**: Definiciones de tipos incluidas nativamente.
15
- - ⚡ **Ligero y Rápido**: Sin dependencias pesadas innecesarias.
16
- - 🔒 **Seguro**: Validación de tokens y manejo de errores robusto.
17
- - 🆕 **Actualizado**: Soporte para `GlobalToken` opcional (v3.2.0+).
15
+ - 🎯 **Current API Support**: Uses `https://api.erlc.gg/v2` where available.
16
+ - 🛡️ **TypeScript Support**: Native type definitions included.
17
+ - ⚡ **Lightweight & Fast**: No unnecessary heavy dependencies.
18
+ - 🔒 **Secure**: Robust token validation and error handling.
19
+ - 🆕 **Up-to-date**: Supports optional global API keys for large-scale apps.
18
20
 
19
- ## 📦 Instalación
21
+ ## 📦 Installation
20
22
 
21
23
  ```bash
22
24
  npm install erlc-api
23
- # o
25
+ # or
24
26
  bun add erlc-api
25
27
  ```
26
28
 
27
- ## 🚀 Inicio Rápido
29
+ ## 🚀 Quick Start
28
30
 
29
- ### Inicialización
31
+ ### Initialization
30
32
 
31
- Puedes usar la librería con o sin un `Global Token` (requerido solo para aplicaciones a gran escala).
33
+ You can use the library with or without a `Global Token` (required only for large-scale applications).
32
34
 
33
35
  **JavaScript**
34
36
  ```javascript
35
37
  const erlc = require("erlc-api");
36
38
 
37
- // Inicialización simple (Recomendada para la mayoría)
39
+ // Simple initialization (Recommended for most users)
38
40
  const client = new erlc.Client();
39
41
 
40
- // O con Global Token (Para Large Apps)
42
+ // Or with Global Token (For Large Apps)
41
43
  // const client = new erlc.Client({ globalToken: "..." });
42
44
  ```
43
45
 
@@ -50,97 +52,104 @@ const client = new Client();
50
52
 
51
53
  ---
52
54
 
53
- ## 📖 Ejemplos de Uso
55
+ ## 📖 Usage Examples
54
56
 
55
- Asegúrate de tener tu `Server Key` a mano (obtenla en los ajustes de tu servidor privado en ER:LC).
57
+ Make sure to have your `Server Key` ready (get it from your private server settings in ER:LC).
56
58
 
57
- ### 🖥️ Información del Servidor
59
+ ### 🖥️ Server Information
58
60
 
59
61
  ```javascript
60
- const serverToken = "tu-server-key-aqui";
62
+ const serverToken = "your-server-key-here";
61
63
 
62
- // Obtener estado del servidor
64
+ // Get server status
63
65
  const server = await erlc.getServer(serverToken);
64
- console.log(`Servidor: ${server.Name} | Jugadores: ${server.CurrentPlayers}/${server.MaxPlayers}`);
66
+ console.log(`Server: ${server.Name} | Players: ${server.CurrentPlayers}/${server.MaxPlayers}`);
65
67
 
66
- // Obtener jugadores conectados
68
+ // Get connected players
67
69
  const players = await erlc.getPlayers(serverToken);
68
- console.table(players); // Muestra nombre, ID, permisos y equipo
70
+ console.table(players); // Shows name, ID, permission, and team
69
71
 
70
- // Obtener vehículos en el mapa
72
+ // Get vehicles on the map
71
73
  const vehicles = await erlc.getVehicles(serverToken);
74
+
75
+ // Get emergency calls
76
+ const emergencyCalls = await erlc.getEmergencyCalls(serverToken);
77
+
78
+ // Fetch server info with v2 include flags in one request
79
+ const fullServer = await erlc.getServer(serverToken, {
80
+ players: true,
81
+ staff: true,
82
+ emergencyCalls: true,
83
+ });
72
84
  ```
73
85
 
74
- ### 📜 Registros (Logs)
86
+ ### 📜 Logs
75
87
 
76
- Accede a los historiales de actividad de tu servidor:
88
+ Access your server's activity history:
77
89
 
78
90
  ```javascript
79
- // Logs de Entradas/Salidas
91
+ // Join/Leave Logs
80
92
  const joinLogs = await erlc.getJoinLogs(serverToken);
81
93
 
82
- // Logs de Muertes (Killfeed)
94
+ // Kill Logs (Killfeed)
83
95
  const killLogs = await erlc.getKillLogs(serverToken);
84
96
 
85
- // Logs de Comandos ejecutados
97
+ // Command Logs
86
98
  const commandLogs = await erlc.getCommandLogs(serverToken);
87
99
 
88
- // Logs de Llamadas a Moderadores
100
+ // Mod Call Logs
89
101
  const modCalls = await erlc.getModcallLogs(serverToken);
90
102
  ```
91
103
 
92
- ### 🛠️ Gestión y Administración
104
+ ### 🛠️ Management & Administration
93
105
 
94
106
  ```javascript
95
- // Ver lista de Baneos
107
+ // Get Ban List
96
108
  const bans = await erlc.getBans(serverToken);
97
109
 
98
- // Obtener Staff del servidor
110
+ // Get Server Staff
99
111
  const staff = await erlc.getStaff(serverToken);
100
112
 
101
- // Ejecutar comando remoto (Ej: Anuncio)
102
- await erlc.runCommand(serverToken, ":h ¡Hola desde la API!");
113
+ // Get Queue
114
+ const queue = await erlc.getQueue(serverToken);
115
+ ```
116
+
117
+ ### ⚡ Run Command
103
118
 
104
- // Resetear Global Key (Solo si tienes una configurada)
105
- // await erlc.resetGlobalKey();
119
+ Execute commands directly from your code:
120
+
121
+ ```javascript
122
+ const command = await erlc.runCommand(serverToken, ":announce This is an API test!");
123
+ console.log(command); // Returns true if successful
106
124
  ```
107
125
 
108
126
  ---
109
127
 
110
- ## 🚨 Manejo de Errores
128
+ ## ⚠️ Error Handling
111
129
 
112
- La librería lanza errores descriptivos (`ErlcError`) que facilitan la depuración.
130
+ The library throws descriptive errors. You should wrap your calls in `try/catch` blocks.
113
131
 
114
132
  ```javascript
115
133
  try {
116
- await erlc.getServer(serverToken);
134
+ const data = await erlc.getServer("invalid-token");
117
135
  } catch (error) {
118
- console.error(`Error ${error.code}: ${error.message}`);
119
-
120
- if (error.code === 4001) console.log("⏳ Rate limit alcanzado, espera un momento.");
121
- if (error.code === 2002) console.log("🔑 La Server Key es inválida o expiró.");
136
+ console.error(error.message); // e.g., "Forbidden: Access denied..."
122
137
  }
123
138
  ```
124
139
 
125
- ### Códigos Comunes
126
-
127
- | Código | Significado | Solución |
128
- |:---:|---|---|
129
- | **2002** | Key Inválida | Verifica tu `Server-Key` en el juego. |
130
- | **3002** | Servidor Offline | El servidor no tiene jugadores o está apagado. |
131
- | **4001** | Rate Limit | Estás enviando muchas peticiones muy rápido. |
132
- | **403** | No Autorizado | Verifica tus permisos o tokens. |
140
+ | Error Code | Description |
141
+ |------------|-------------|
142
+ | `2002` | Invalid or expired server key |
143
+ | `3002` | Server offline |
144
+ | `4001` | Rate limit exceeded |
145
+ | `9999` | In-game server module is out of date |
133
146
 
134
147
  ---
135
148
 
136
- ## 🔗 Enlaces Útiles
149
+ ## 🤝 Contributing
137
150
 
138
- - [Documentación Oficial de PRC](https://apidocs.policeroleplay.community/)
139
- - [Discord de Soporte PRC](https://discord.gg/prc)
140
- - [NPM Package](https://www.npmjs.com/package/erlc-api)
151
+ Contributions are welcome! Feel free to submit a Pull Request.
141
152
 
142
- ---
153
+ ## 📄 License
143
154
 
144
- <div align="center">
145
- <sub>Hecho con ❤️ para la comunidad de ER:LC</sub>
146
- </div>
155
+ This project is licensed under the [MIT License](LICENSE).
package/README_ES.md ADDED
@@ -0,0 +1,168 @@
1
+ # 🚔 ER:LC API Wrapper
2
+
3
+ [![npm version](https://img.shields.io/npm/v/erlc-api?style=flat-square)](https://www.npmjs.com/package/erlc-api)
4
+ [![License](https://img.shields.io/npm/l/erlc-api?style=flat-square)](https://opensource.org/licenses/MIT)
5
+ [![Downloads](https://img.shields.io/npm/dt/erlc-api?style=flat-square)](https://www.npmjs.com/package/erlc-api)
6
+
7
+ [🇬🇧 English Version](README.md)
8
+
9
+ Una librería ligera, completa y **totalmente tipada** para interactuar con la API de _Emergency Response: Liberty County_ (ER:LC). Diseñada para ofrecer la mejor experiencia de desarrollo tanto en JavaScript como en TypeScript.
10
+
11
+ ---
12
+
13
+ ## ✨ Características
14
+
15
+ - 🎯 **Soporte API Actual**: Usa `https://api.erlc.gg/v2` donde está disponible.
16
+ - 🛡️ **Tipado TypeScript**: Definiciones de tipos incluidas nativamente.
17
+ - ⚡ **Ligero y Rápido**: Sin dependencias pesadas innecesarias.
18
+ - 🔒 **Seguro**: Validación de tokens y manejo de errores robusto.
19
+ - 🆕 **Actualizado**: Soporte para global API keys opcionales en apps grandes.
20
+
21
+ ## 📦 Instalación
22
+
23
+ ```bash
24
+ npm install erlc-api
25
+ # o
26
+ bun add erlc-api
27
+ ```
28
+
29
+ ## 🚀 Inicio Rápido
30
+
31
+ ### Inicialización
32
+
33
+ Puedes usar la librería con o sin un `Global Token` (requerido solo para aplicaciones a gran escala).
34
+
35
+ **JavaScript**
36
+
37
+ ```javascript
38
+ const erlc = require("erlc-api");
39
+
40
+ // Inicialización simple (Recomendada para la mayoría)
41
+ const client = new erlc.Client();
42
+
43
+ // O con Global Token (Para Large Apps)
44
+ // const client = new erlc.Client({ globalToken: "..." });
45
+ ```
46
+
47
+ **TypeScript**
48
+
49
+ ```typescript
50
+ import { Client, getServer } from "erlc-api";
51
+
52
+ const client = new Client();
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 📖 Ejemplos de Uso
58
+
59
+ Asegúrate de tener tu `Server Key` a mano (obtenla en los ajustes de tu servidor privado en ER:LC).
60
+
61
+ ### 🖥️ Información del Servidor
62
+
63
+ ```javascript
64
+ const serverToken = "tu-server-key-aqui";
65
+
66
+ // Obtener estado del servidor
67
+ const server = await erlc.getServer(serverToken);
68
+ console.log(
69
+ `Servidor: ${server.Name} | Jugadores: ${server.CurrentPlayers}/${server.MaxPlayers}`,
70
+ );
71
+
72
+ // Obtener jugadores conectados
73
+ const players = await erlc.getPlayers(serverToken);
74
+ console.table(players); // Muestra nombre, ID, permisos y equipo
75
+
76
+ // Obtener vehículos en el mapa
77
+ const vehicles = await erlc.getVehicles(serverToken);
78
+
79
+ // Obtener llamadas de emergencia
80
+ const emergencyCalls = await erlc.getEmergencyCalls(serverToken);
81
+
82
+ // Obtener información del servidor con includes de v2 en una sola petición
83
+ const fullServer = await erlc.getServer(serverToken, {
84
+ players: true,
85
+ staff: true,
86
+ emergencyCalls: true,
87
+ });
88
+ ```
89
+
90
+ ### 📜 Registros (Logs)
91
+
92
+ Accede a los historiales de actividad de tu servidor:
93
+
94
+ ```javascript
95
+ // Logs de Entradas/Salidas
96
+ const joinLogs = await erlc.getJoinLogs(serverToken);
97
+
98
+ // Logs de Muertes (Killfeed)
99
+ const killLogs = await erlc.getKillLogs(serverToken);
100
+
101
+ // Logs de Comandos ejecutados
102
+ const commandLogs = await erlc.getCommandLogs(serverToken);
103
+
104
+ // Logs de Llamadas a Moderadores
105
+ const modCalls = await erlc.getModcallLogs(serverToken);
106
+ ```
107
+
108
+ ### 🛠️ Gestión y Administración
109
+
110
+ ```javascript
111
+ // Ver lista de Baneos
112
+ const bans = await erlc.getBans(serverToken);
113
+
114
+ // Obtener Staff del servidor
115
+ const staff = await erlc.getStaff(serverToken);
116
+ ```
117
+
118
+ ### 📢 Otros Comandos
119
+
120
+ ```javascript
121
+ // Ejecutar comando remoto (Ej: Anuncio)
122
+ await erlc.runCommand(serverToken, ":h ¡Hola desde la API!");
123
+
124
+ // Resetear Global Key (Solo si tienes una configurada)
125
+ // await erlc.resetGlobalKey();
126
+ ```
127
+
128
+ ---
129
+
130
+ ## 🚨 Manejo de Errores
131
+
132
+ La librería lanza errores descriptivos (`ErlcError`) que facilitan la depuración.
133
+
134
+ ```javascript
135
+ try {
136
+ await erlc.getServer(serverToken);
137
+ } catch (error) {
138
+ console.error(`Error ${error.code}: ${error.message}`);
139
+
140
+ if (error.code === 4001)
141
+ console.log("⏳ Rate limit alcanzado, espera un momento.");
142
+ if (error.code === 2002)
143
+ console.log("🔑 La Server Key es inválida o expiró.");
144
+ }
145
+ ```
146
+
147
+ ### Códigos Comunes
148
+
149
+ | Código | Significado | Solución |
150
+ | :------: | ---------------- | ---------------------------------------------- |
151
+ | **2002** | Key Inválida | Verifica tu `Server-Key` en el juego. |
152
+ | **3002** | Servidor Offline | El servidor no tiene jugadores o está apagado. |
153
+ | **4001** | Rate Limit | Estás enviando muchas peticiones muy rápido. |
154
+ | **403** | No Autorizado | Verifica tus permisos o tokens. |
155
+
156
+ ---
157
+
158
+ ## 🔗 Enlaces Útiles
159
+
160
+ - [Documentación Oficial de ER:LC](https://apidocs.erlc.gg/)
161
+ - [Discord de Soporte PRC](https://discord.gg/prc)
162
+ - [NPM Package](https://www.npmjs.com/package/erlc-api)
163
+
164
+ ---
165
+
166
+ <div align="center">
167
+ <sub>Hecho con ❤️ para la comunidad de ER:LC</sub>
168
+ </div>
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "erlc-api",
3
- "version": "3.3.0",
3
+ "version": "3.3.2a",
4
4
  "description": "An ER:LC API wrapper for JS/TS",
5
5
  "main": "index.js",
6
6
  "types": "src/types/index.d.ts",
7
+ "packageManager": "pnpm@11.1.2",
7
8
  "keywords": [
8
9
  "erlc",
9
10
  "roblox",
@@ -14,16 +15,22 @@
14
15
  "author": "egologics",
15
16
  "license": "MIT",
16
17
  "devDependencies": {
17
- "typescript": "^5.3.2"
18
+ "jest": "^30.4.2",
19
+ "typescript": "^6.0.3"
18
20
  },
19
21
  "dependencies": {
20
- "chalk": "^5.4.1",
22
+ "chalk": "^5.6.2",
21
23
  "cli-table3": "^0.6.5",
22
24
  "node-fetch": "^3.3.2",
23
- "ora": "^8.2.0"
25
+ "ora": "^9.4.0"
24
26
  },
25
27
  "scripts": {
26
- "test": "echo \"Error: no test specified\" && exit 1"
28
+ "test": "jest"
29
+ },
30
+ "pnpm": {
31
+ "onlyBuiltDependencies": [
32
+ "unrs-resolver"
33
+ ]
27
34
  },
28
35
  "repository": {
29
36
  "type": "git",
@@ -0,0 +1,2 @@
1
+ allowBuilds:
2
+ unrs-resolver: true
@@ -3,7 +3,13 @@ const assert = require("../functions/assert.js");
3
3
 
4
4
  /**
5
5
  * @typedef {Object} ClientConfig
6
- * @property {string} globalToken - Your ER:LC global API token
6
+ * @property {string} [globalToken] - Your ER:LC global API token
7
+ * @property {Object} [cache] - Cache configuration
8
+ * @property {boolean} [cache.enabled] - Enable in-memory cache
9
+ * @property {Object.<string, number>} [cache.ttlMs] - Per-endpoint TTL in ms
10
+ * @property {boolean} [cache.staleWhileRevalidate] - Placeholder for future strategy
11
+ * @property {Object} [logger] - Logger instance (console-compatible)
12
+ * @property {Function} [fetch] - Custom fetch implementation
7
13
  */
8
14
 
9
15
  /**
@@ -31,7 +37,12 @@ class Client {
31
37
  * @returns {ClientConfig} The client configuration.
32
38
  */
33
39
  config() {
34
- erlc.config = this.options;
40
+ // Mutate existing config object to preserve references
41
+ erlc.config.globalToken = this.options.globalToken;
42
+ erlc.config.serverToken = this.options.serverToken;
43
+ erlc.config.cache = this.options.cache;
44
+ erlc.config.logger = this.options.logger;
45
+ erlc.config.fetch = this.options.fetch;
35
46
  return erlc.config;
36
47
  }
37
48
  }
package/src/constants.js CHANGED
@@ -1,2 +1,5 @@
1
- exports.Vanity = "https://policeroleplay.community/join?code="
2
- exports.BASEURL = "https://api.policeroleplay.community/v1"
1
+ exports.Vanity = "https://erlc.gg/join/"
2
+ exports.API_ORIGIN = "https://api.erlc.gg"
3
+ exports.API_VERSION = "v2"
4
+ exports.BASEURL = `${exports.API_ORIGIN}/${exports.API_VERSION}`
5
+ exports.LEGACY_BASEURL = `${exports.API_ORIGIN}/v1`
package/src/erlc.js CHANGED
@@ -1,10 +1,33 @@
1
- exports.config = {};
1
+ exports.config = {
2
+ cache: {
3
+ enabled: false,
4
+ ttlMs: {
5
+ server: 10000,
6
+ players: 3000,
7
+ vehicles: 5000,
8
+ joinlogs: 3000,
9
+ killlogs: 3000,
10
+ commandlogs: 3000,
11
+ modcalls: 3000,
12
+ emergencycalls: 3000,
13
+ staff: 10000,
14
+ queue: 2000,
15
+ bans: 10000,
16
+ },
17
+ staleWhileRevalidate: false,
18
+ },
19
+ logger: console,
20
+ fetch: null,
21
+ };
22
+
23
+ Object.assign(exports, require("./constants.js"));
2
24
 
3
25
  exports.getBans = require("./functions/server/getBans.js");
4
26
  exports.getCommandLogs = require("./functions/server/getCommandLogs.js");
5
27
  exports.getJoinLogs = require("./functions/server/getJoinLogs.js");
6
28
  exports.getKillLogs = require("./functions/server/getKillLogs.js");
7
29
  exports.getModcallLogs = require("./functions/server/getModcallLogs.js");
30
+ exports.getEmergencyCalls = require("./functions/server/getEmergencyCalls.js");
8
31
  exports.getPlayers = require("./functions/server/getPlayers.js");
9
32
  exports.getServer = require("./functions/server/getServer.js");
10
33
  exports.getQueue = require("./functions/server/getQueue.js");
@@ -14,3 +37,8 @@ exports.getStaff = require("./functions/server/getStaff.js");
14
37
  exports.resetGlobalKey = require("./functions/global/resetGlobalKey.js");
15
38
 
16
39
  exports.Client = require("./classes/client.js");
40
+
41
+ exports.utils = {
42
+ cache: require("./utils/cache.js"),
43
+ discord: require("./utils/discord.js"),
44
+ };
@@ -21,6 +21,9 @@ class ErlcError extends Error {
21
21
  message: this.message,
22
22
  code: this.code,
23
23
  status: this.status,
24
+ retryAfter: this.retryAfter,
25
+ bucket: this.bucket,
26
+ commandId: this.commandId,
24
27
  timestamp: this.timestamp,
25
28
  stack: this.stack,
26
29
  };
@@ -1,4 +1,4 @@
1
- const { BASEURL } = require("../../constants.js");
1
+ const { LEGACY_BASEURL } = require("../../constants.js");
2
2
  const { processError } = require("../../utils/errorHandler.js");
3
3
 
4
4
  /**
@@ -8,20 +8,24 @@ const { processError } = require("../../utils/errorHandler.js");
8
8
  module.exports = () => {
9
9
  return new Promise(async (resolve, reject) => {
10
10
  try {
11
- const fetch = await import("node-fetch");
12
- const { config } = await import("../../erlc.js");
11
+ const { config } = require("../../erlc.js");
13
12
 
14
13
  // Check if global token is configured
15
14
  if (!config?.globalToken) {
16
15
  const error = await processError(
17
16
  new Error(
18
- "Global token not configured. Please initialize the client first."
19
- )
17
+ "Global token not configured. Please initialize the client first.",
18
+ ),
20
19
  );
21
20
  return reject(error);
22
21
  }
23
22
 
24
- const res = await fetch.default(`${BASEURL}/api-key/reset`, {
23
+ const f =
24
+ config?.fetch ||
25
+ (typeof globalThis.fetch === "function"
26
+ ? globalThis.fetch
27
+ : (await import("node-fetch")).default);
28
+ const res = await f(`${LEGACY_BASEURL}/api-key/reset`, {
25
29
  method: "POST",
26
30
  headers: {
27
31
  Authorization: config.globalToken,
@@ -44,13 +48,13 @@ module.exports = () => {
44
48
  // However, looking at other endpoints, they return data directly.
45
49
  // Let's assume it returns a JSON with the key, or we can inspect the response content type.
46
50
  // But for now, let's try to parse as JSON.
47
-
51
+
48
52
  const data = await res.json();
49
53
  // If data has a specific field for the key, we should return that.
50
54
  // If the documentation doesn't specify, I'll return the whole data object or try to find the key.
51
55
  // Based on "This will send a new key", it might be { "apiKey": "..." } or just the string if it's text/plain.
52
56
  // Given other endpoints return JSON, this likely returns JSON.
53
-
57
+
54
58
  resolve(data);
55
59
  } catch (error) {
56
60
  const processedError = await processError(error);
@@ -1,47 +1,17 @@
1
- const { BASEURL } = require("../../constants.js");
2
- const { processError } = require("../../utils/errorHandler.js");
1
+ const { requestLegacyServer } = require("./requestServer.js");
3
2
 
4
3
  /**
5
- * Retrieves the list of banned players from a server
4
+ * Retrieves the list of banned players from a server.
5
+ *
6
+ * The current v2 server document does not expose Bans as an include flag,
7
+ * so this uses the documented v1 bans route on the new api.erlc.gg domain.
8
+ *
6
9
  * @param {string} serverToken - The server API key
7
10
  * @returns {Promise<Object>} Promise that resolves to banned players object
8
11
  */
9
- module.exports = (serverToken) => {
10
- return new Promise(async (resolve, reject) => {
11
- // Input validation
12
- if (!serverToken || typeof serverToken !== "string") {
13
- return reject(new Error("Server token is required and must be a string"));
14
- }
15
-
16
- try {
17
- const fetch = await import("node-fetch");
18
- const { config } = await import("../../erlc.js");
19
-
20
- const headers = {
21
- "Server-Key": serverToken,
22
- };
23
- if (config?.globalToken) {
24
- headers["Authorization"] = config.globalToken;
25
- }
26
-
27
- const res = await fetch.default(`${BASEURL}/server/bans`, {
28
- headers: headers,
29
- timeout: 10000, // 10 second timeout
30
- });
31
-
32
- if (!res.ok) {
33
- const errorData = await res
34
- .json()
35
- .catch(() => ({ error: "Unknown API error" }));
36
- const error = await processError(res, errorData);
37
- return reject(error);
38
- }
39
-
40
- const data = await res.json();
41
- resolve(data || {});
42
- } catch (error) {
43
- const processedError = await processError(error);
44
- reject(processedError);
45
- }
12
+ module.exports = (serverToken) =>
13
+ requestLegacyServer(serverToken, "/server/bans", {
14
+ endpoint: "bans",
15
+ defaultValue: {},
16
+ transform: (data) => data || {},
46
17
  });
47
- };