erlc-api 2.3.3 → 3.0.0

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.
Files changed (62) hide show
  1. package/.gitattributes +2 -0
  2. package/README.md +381 -87
  3. package/index.js +1 -0
  4. package/package.json +18 -46
  5. package/src/classes/client.js +36 -0
  6. package/src/constants.js +2 -0
  7. package/src/erlc.js +15 -0
  8. package/src/functions/assert.js +5 -0
  9. package/src/functions/server/getBans.js +54 -0
  10. package/src/functions/server/getCommandLogs.js +54 -0
  11. package/src/functions/server/getJoinLogs.js +54 -0
  12. package/src/functions/server/getKillLogs.js +54 -0
  13. package/src/functions/server/getModcallLogs.js +54 -0
  14. package/src/functions/server/getPlayers.js +54 -0
  15. package/src/functions/server/getQueue.js +54 -0
  16. package/src/functions/server/getServer.js +78 -0
  17. package/src/functions/server/getStaff.js +54 -0
  18. package/src/functions/server/getVehicles.js +54 -0
  19. package/src/functions/server/runCommand.js +70 -0
  20. package/src/types/custom.d.ts +5 -0
  21. package/src/types/index.d.ts +98 -0
  22. package/dist/browser/erlc.min.js +0 -1
  23. package/dist/cjs/client.d.ts +0 -25
  24. package/dist/cjs/client.d.ts.map +0 -1
  25. package/dist/cjs/client.js +0 -152
  26. package/dist/cjs/client.js.map +0 -1
  27. package/dist/cjs/errors/index.d.ts +0 -13
  28. package/dist/cjs/errors/index.d.ts.map +0 -1
  29. package/dist/cjs/errors/index.js +0 -32
  30. package/dist/cjs/errors/index.js.map +0 -1
  31. package/dist/cjs/index.d.ts +0 -4
  32. package/dist/cjs/index.d.ts.map +0 -1
  33. package/dist/cjs/index.js +0 -20
  34. package/dist/cjs/index.js.map +0 -1
  35. package/dist/cjs/types/index.d.ts +0 -46
  36. package/dist/cjs/types/index.d.ts.map +0 -1
  37. package/dist/cjs/types/index.js +0 -3
  38. package/dist/cjs/types/index.js.map +0 -1
  39. package/dist/esm/client.d.ts +0 -25
  40. package/dist/esm/client.d.ts.map +0 -1
  41. package/dist/esm/client.js +0 -145
  42. package/dist/esm/client.js.map +0 -1
  43. package/dist/esm/errors/index.d.ts +0 -13
  44. package/dist/esm/errors/index.d.ts.map +0 -1
  45. package/dist/esm/errors/index.js +0 -25
  46. package/dist/esm/errors/index.js.map +0 -1
  47. package/dist/esm/index.d.ts +0 -4
  48. package/dist/esm/index.d.ts.map +0 -1
  49. package/dist/esm/index.js +0 -4
  50. package/dist/esm/index.js.map +0 -1
  51. package/dist/esm/types/index.d.ts +0 -46
  52. package/dist/esm/types/index.d.ts.map +0 -1
  53. package/dist/esm/types/index.js +0 -2
  54. package/dist/esm/types/index.js.map +0 -1
  55. package/dist/types/client.d.ts +0 -25
  56. package/dist/types/client.d.ts.map +0 -1
  57. package/dist/types/errors/index.d.ts +0 -13
  58. package/dist/types/errors/index.d.ts.map +0 -1
  59. package/dist/types/index.d.ts +0 -4
  60. package/dist/types/index.d.ts.map +0 -1
  61. package/dist/types/types/index.d.ts +0 -46
  62. package/dist/types/types/index.d.ts.map +0 -1
package/.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
package/README.md CHANGED
@@ -1,134 +1,428 @@
1
- # ERLC API
1
+ # 🚔 ER:LC API Wrapper
2
2
 
3
- A modern TypeScript/JavaScript API wrapper for ER:LC (Emergency Response: Liberty County) with full browser support.
3
+ [![npm version](https://badge.fury.io/js/erlc-api.svg)](https://badge.fury.io/js/erlc-api)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
5
 
5
- ## Features
6
+ A comprehensive, lightweight, and fully-typed API wrapper for Emergency Response: Liberty County (ER:LC) with 100% API coverage, robust error handling, and TypeScript support.
6
7
 
7
- - 🚀 Full TypeScript support
8
- - 🌐 Browser compatible
9
- - ⚡ Promise-based API
10
- - 🛡️ Comprehensive error handling
11
- - 📘 Type definitions included
12
- - 🔄 CommonJS and ES Module support
8
+ ## Features
13
9
 
14
- ## Installation
10
+ - 🎯 **100% API Coverage** - All ER:LC API endpoints supported
11
+ - 🛡️ **Robust Error Handling** - Comprehensive error catching and meaningful error messages
12
+ - 📝 **Full TypeScript Support** - Complete type definitions for all methods and responses
13
+ - ⚡ **Optimized Performance** - Efficient request handling with timeout management
14
+ - 🔒 **Secure** - Built-in validation and secure token handling
15
+ - 📚 **Well Documented** - Extensive documentation and examples
16
+ - 🚀 **Easy to Use** - Simple, intuitive API design
17
+
18
+ ## 📦 Installation
15
19
 
16
20
  ```bash
17
21
  npm install erlc-api
18
22
  ```
19
23
 
20
- ## Usage
24
+ ```bash
25
+ bun add erlc-api
26
+ ```
27
+
28
+ ## 🚀 Quick Start
21
29
 
22
- ### TypeScript/ES Modules
30
+ ### Basic Setup
31
+
32
+ ```javascript
33
+ const erlc = require("erlc-api");
34
+
35
+ // Initialize the client with your global token
36
+ const client = new erlc.Client({
37
+ globalToken: "your-global-token-here", // Get this from ER:LC developers
38
+ });
39
+
40
+ // Register your client
41
+ client.config();
42
+ ```
43
+
44
+ ### TypeScript Setup
23
45
 
24
46
  ```typescript
25
- import { Client } from 'erlc-api';
47
+ import erlc from "erlc-api";
26
48
 
27
- const client = new Client({
28
- globalToken: 'your-global-token',
49
+ const client = new erlc.Client({
50
+ globalToken: "your-global-token-here",
29
51
  });
30
52
 
31
- // Get server information
32
- const serverInfo = await client.getServer('server-token');
33
- console.log(serverInfo);
53
+ client.config();
54
+ ```
55
+
56
+ ## 📖 API Methods
57
+
58
+ ### 🖥️ Server Information
59
+
60
+ #### Get Server Details
34
61
 
35
- // Get players
36
- const players = await client.getPlayers('server-token');
37
- console.log(players);
62
+ ```javascript
63
+ const getServerInfo = async () => {
64
+ try {
65
+ const serverToken = "your-server-api-key"; // From Server Settings
66
+ const server = await erlc.getServer(serverToken);
38
67
 
39
- //Run Command
40
- const Command = await client.runCommand('server-token', ':h Hello');
41
- console.log(Command);
68
+ console.log(server);
69
+ /*
70
+ Expected Response:
71
+ {
72
+ Name: "Your Server Name",
73
+ OwnerUsername: "ServerOwner",
74
+ CoOwnerUsernames: ["CoOwner1", "CoOwner2"],
75
+ CurrentPlayers: 25,
76
+ MaxPlayers: 40,
77
+ JoinKey: "ABC123",
78
+ AccVerifiedReq: "Disabled", // "Email" | "Phone/ID"
79
+ TeamBalance: true,
80
+ VanityURL: "https://policeroleplay.community/join?code=ABC123"
81
+ }
82
+ */
83
+ } catch (error) {
84
+ console.error("Error fetching server info:", error.message);
85
+ }
86
+ };
42
87
  ```
43
88
 
44
- ### CommonJS
89
+ #### Get Current Players
45
90
 
46
91
  ```javascript
47
- const { Client } = require('erlc-api');
92
+ const getCurrentPlayers = async () => {
93
+ try {
94
+ const players = await erlc.getPlayers(serverToken);
95
+
96
+ console.log(players);
97
+ /*
98
+ Expected Response:
99
+ [
100
+ {
101
+ Player: "PlayerName:123456789",
102
+ Permission: "Server Owner", // "Member" | "Moderator" | "Server Administrator"
103
+ Team: "Police" // "Civilian" | "Fire" | "Sheriff"
104
+ }
105
+ ]
106
+ */
107
+ } catch (error) {
108
+ console.error("Error fetching players:", error.message);
109
+ }
110
+ };
111
+ ```
48
112
 
49
- const client = new Client({
50
- globalToken: 'your-global-token',
51
- });
113
+ #### Get Server Queue
52
114
 
53
- // Using async/await
54
- async function getServerInfo() {
115
+ ```javascript
116
+ const getServerQueue = async () => {
55
117
  try {
56
- const server = await client.getServer('server-token');
57
- console.log(server);
118
+ const queue = await erlc.getQueue(serverToken);
119
+ console.log(`Players in queue: ${queue.length}`);
120
+ } catch (error) {
121
+ console.error("Error fetching queue:", error.message);
122
+ }
123
+ };
124
+ ```
125
+
126
+ ### 👥 Staff Management
127
+
128
+ #### Get Staff Information
129
+
130
+ ```javascript
131
+ const getStaffInfo = async () => {
132
+ try {
133
+ const staff = await erlc.getStaff(serverToken);
134
+
135
+ console.log(staff);
136
+ /*
137
+ Expected Response:
138
+ {
139
+ CoOwners: [123456789, 987654321],
140
+ Admins: { "123456789": "AdminName" },
141
+ Mods: { "987654321": "ModName" }
142
+ }
143
+ */
58
144
  } catch (error) {
59
- console.error('Error:', error.message);
145
+ console.error("Error fetching staff:", error.message);
60
146
  }
61
- }
147
+ };
62
148
  ```
63
149
 
64
- ### Browser
150
+ ### 📊 Server Logs
65
151
 
66
- ```html
67
- <script src="node_modules/erlc-api/dist/browser/erlc.min.js"></script>
68
- <script>
69
- const client = new ERLC.Client({
70
- globalToken: 'your-global-token',
71
- });
152
+ #### Get Join/Leave Logs
72
153
 
73
- client
74
- .getServer('server-token')
75
- .then((server) => console.log(server))
76
- .catch((error) => console.error(error));
77
- </script>
154
+ ```javascript
155
+ const getJoinLogs = async () => {
156
+ try {
157
+ const logs = await erlc.getJoinLogs(serverToken);
158
+
159
+ logs.forEach((log) => {
160
+ const action = log.Join ? "joined" : "left";
161
+ console.log(
162
+ `${log.Player} ${action} at ${new Date(log.Timestamp * 1000)}`
163
+ );
164
+ });
165
+ } catch (error) {
166
+ console.error("Error fetching join logs:", error.message);
167
+ }
168
+ };
169
+ ```
170
+
171
+ #### Get Kill Logs
172
+
173
+ ```javascript
174
+ const getKillLogs = async () => {
175
+ try {
176
+ const kills = await erlc.getKillLogs(serverToken);
177
+
178
+ kills.forEach((kill) => {
179
+ console.log(
180
+ `${kill.Killer} killed ${kill.Killed} at ${new Date(
181
+ kill.Timestamp * 1000
182
+ )}`
183
+ );
184
+ });
185
+ } catch (error) {
186
+ console.error("Error fetching kill logs:", error.message);
187
+ }
188
+ };
78
189
  ```
79
190
 
80
- ## API Methods
191
+ #### Get Command Logs
81
192
 
82
- - `getServer(serverToken)` - Get server information
83
- - `getPlayers(serverToken)` - Get list of players
84
- - `getJoinLogs(serverToken)` - Get join/leave logs
85
- - `getKillLogs(serverToken)` - Get kill logs
86
- - `getCommandLogs(serverToken)` - Get command logs
87
- - `getModcallLogs(serverToken)` - Get modcall logs
88
- - `getBans(serverToken)` - Get server bans
89
- - `getVehicles(serverToken)` - Get vehicle information
90
- - `getQueue(serverToken)` - Get queue information
91
- - `runCommand(serverToken, command)` - Run a server command
193
+ ```javascript
194
+ const getCommandLogs = async () => {
195
+ try {
196
+ const commands = await erlc.getCommandLogs(serverToken);
92
197
 
93
- ## Error Handling
198
+ commands.forEach((cmd) => {
199
+ console.log(`${cmd.Player} executed: ${cmd.Command}`);
200
+ });
201
+ } catch (error) {
202
+ console.error("Error fetching command logs:", error.message);
203
+ }
204
+ };
205
+ ```
94
206
 
95
- The library includes custom error classes for better error handling:
207
+ #### Get Moderator Call Logs
96
208
 
97
- ```typescript
98
- import { AuthenticationError, ValidationError, NetworkError } from 'erlc-api';
99
-
100
- try {
101
- await client.getServer('server-token');
102
- } catch (error) {
103
- if (error instanceof AuthenticationError) {
104
- console.error('Authentication failed');
105
- } else if (error instanceof ValidationError) {
106
- console.error('Invalid input');
107
- } else if (error instanceof NetworkError) {
108
- console.error('Network error occurred');
209
+ ```javascript
210
+ const getModCalls = async () => {
211
+ try {
212
+ const modcalls = await erlc.getModcallLogs(serverToken);
213
+
214
+ modcalls.forEach((call) => {
215
+ const status = call.Moderator
216
+ ? `answered by ${call.Moderator}`
217
+ : "unanswered";
218
+ console.log(`${call.Caller} made a modcall - ${status}`);
219
+ });
220
+ } catch (error) {
221
+ console.error("Error fetching modcall logs:", error.message);
109
222
  }
110
- }
223
+ };
111
224
  ```
112
225
 
113
- ## Development
226
+ ### 🚗 Vehicle Management
114
227
 
115
- ```bash
116
- # Install dependencies
117
- npm install
228
+ #### Get Server Vehicles
229
+
230
+ ```javascript
231
+ const getVehicles = async () => {
232
+ try {
233
+ const vehicles = await erlc.getVehicles(serverToken);
234
+
235
+ vehicles.forEach((vehicle) => {
236
+ console.log(
237
+ `${vehicle.Name} owned by ${vehicle.Owner} - Texture: ${
238
+ vehicle.Texture || "Default"
239
+ }`
240
+ );
241
+ });
242
+ } catch (error) {
243
+ console.error("Error fetching vehicles:", error.message);
244
+ }
245
+ };
246
+ ```
247
+
248
+ ### 🔨 Server Management
249
+
250
+ #### Execute Server Commands
251
+
252
+ ```javascript
253
+ const executeCommand = async () => {
254
+ try {
255
+ const success = await erlc.runCommand(
256
+ serverToken,
257
+ ":h Welcome to our server!"
258
+ );
259
+
260
+ if (success) {
261
+ console.log("Command executed successfully!");
262
+ }
263
+ } catch (error) {
264
+ console.error("Error executing command:", error.message);
265
+ }
266
+ };
267
+ ```
268
+
269
+ #### Get Server Bans
270
+
271
+ ```javascript
272
+ const getBannedPlayers = async () => {
273
+ try {
274
+ const bans = await erlc.getBans(serverToken);
275
+
276
+ Object.entries(bans).forEach(([playerId, playerName]) => {
277
+ console.log(`${playerName} (${playerId}) is banned`);
278
+ });
279
+ } catch (error) {
280
+ console.error("Error fetching bans:", error.message);
281
+ }
282
+ };
283
+ ```
284
+
285
+ ## 🛠️ Advanced Usage
286
+
287
+ ### Error Handling Best Practices
288
+
289
+ ```javascript
290
+ const handleApiCall = async () => {
291
+ try {
292
+ const result = await erlc.getServer(serverToken);
293
+ return result;
294
+ } catch (error) {
295
+ // Handle specific error types
296
+ if (error.status === 401) {
297
+ console.error("Authentication failed - check your tokens");
298
+ } else if (error.status === 404) {
299
+ console.error("Server not found - check your server token");
300
+ } else if (error.message.includes("Network error")) {
301
+ console.error("Connection issue - check your internet connection");
302
+ } else if (error.message.includes("timeout")) {
303
+ console.error("Request timed out - try again later");
304
+ } else {
305
+ console.error("Unexpected error:", error.message);
306
+ }
307
+
308
+ throw error; // Re-throw if needed
309
+ }
310
+ };
311
+ ```
312
+
313
+ ### Batch Operations
314
+
315
+ ```javascript
316
+ const getServerOverview = async (serverToken) => {
317
+ try {
318
+ // Execute multiple API calls concurrently
319
+ const [serverInfo, players, staff, vehicles] = await Promise.all([
320
+ erlc.getServer(serverToken),
321
+ erlc.getPlayers(serverToken),
322
+ erlc.getStaff(serverToken),
323
+ erlc.getVehicles(serverToken),
324
+ ]);
325
+
326
+ return {
327
+ server: serverInfo,
328
+ playerCount: players.length,
329
+ staffCount:
330
+ Object.keys(staff.Admins).length + Object.keys(staff.Mods).length,
331
+ vehicleCount: vehicles.length,
332
+ };
333
+ } catch (error) {
334
+ console.error("Error getting server overview:", error.message);
335
+ throw error;
336
+ }
337
+ };
338
+ ```
339
+
340
+ ## 🔑 Authentication
341
+
342
+ ### Getting Your Tokens
343
+
344
+ 1. **Global Token**: Contact ER:LC developers through their [Discord](https://discord.gg/prc) to request increased API limits
345
+ 2. **Server Token**: Found in your server settings within ER:LC
346
+
347
+ ### Token Security
348
+
349
+ ```javascript
350
+ // ❌ Don't hardcode tokens
351
+ const client = new erlc.Client({
352
+ globalToken: "your-token-here",
353
+ });
354
+
355
+ // ✅ Use environment variables
356
+ const client = new erlc.Client({
357
+ globalToken: process.env.ERLC_GLOBAL_TOKEN,
358
+ });
359
+ ```
360
+
361
+ ## 📝 TypeScript Support
362
+
363
+ The package includes comprehensive TypeScript definitions:
118
364
 
119
- # Run tests
120
- npm test
365
+ ```typescript
366
+ import erlc, { ServerStatus, ServerPlayer, JoinLog } from "erlc-api";
121
367
 
122
- # Build
123
- npm run build
368
+ const client = new erlc.Client({
369
+ globalToken: process.env.ERLC_GLOBAL_TOKEN!,
370
+ });
124
371
 
125
- # Lint
126
- npm run lint
372
+ client.config();
127
373
 
128
- # Format code
129
- npm run format
374
+ // Fully typed responses
375
+ const server: ServerStatus = await erlc.getServer(serverToken);
376
+ const players: ServerPlayer[] = await erlc.getPlayers(serverToken);
377
+ const joinLogs: JoinLog[] = await erlc.getJoinLogs(serverToken);
130
378
  ```
131
379
 
132
- ## License
380
+ ## ⚡ Performance Tips
381
+
382
+ 1. **Use Promise.all()** for concurrent requests when fetching multiple endpoints
383
+ 2. **Implement caching** for frequently accessed data that doesn't change often
384
+ 3. **Handle rate limits** by implementing retry logic with exponential backoff
385
+ 4. **Use timeouts** - all methods have built-in 10-15 second timeouts
386
+
387
+ ## 🐛 Error Types
388
+
389
+ The wrapper provides detailed error information:
390
+
391
+ - **Network Errors**: Connection issues, DNS resolution failures
392
+ - **Authentication Errors**: Invalid tokens, insufficient permissions
393
+ - **API Errors**: Server-side errors with status codes and messages
394
+ - **Validation Errors**: Invalid input parameters
395
+ - **Timeout Errors**: Requests that take too long to complete
396
+
397
+ ## 🤝 Contributing
398
+
399
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
400
+
401
+ ## 📄 License
402
+
403
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
404
+
405
+ ## 🔗 Links
406
+
407
+ - **Discord Bot**: [Invite to your server](https://discord.com/oauth2/authorize?client_id=1014990793280323624)
408
+ - **API Documentation**: [PRC API Docs](https://apidocs.policeroleplay.community/reference/api-reference)
409
+ - **Discord Support**: [Join PRC Discord](https://discord.gg/prc)
410
+ - **Custom Liveries**: [Browse Collection](https://github.com/Exodo0/ERLC-API/tree/main/Custom%20Liveries)
411
+
412
+ ## 👨‍💻 Credits
413
+
414
+ - **Library Development**: [Egologics](https://twitter.com/0Adexus0)
415
+ - **NPM Package**: [ERLC-API](https://www.npmjs.com/package/erlc-api)
416
+ - **API Development**: [Police Roleplay Community](https://twitter.com/PRC_Roblox)
417
+ - **Community Support**: [PRC Discord Community](https://discord.gg/prc)
418
+
419
+ ---
133
420
 
134
- MIT License - see LICENSE file for details.
421
+ <div align="center">
422
+ <p>Made with ❤️ for the ER:LC community</p>
423
+ <p>
424
+ <a href="https://github.com/Exodo0/ERLC-API">⭐ Star us on GitHub</a> •
425
+ <a href="https://discord.gg/prc">💬 Join our Discord</a> •
426
+ <a href="https://twitter.com/0Adexus0">🐦 Follow on Twitter</a>
427
+ </p>
428
+ </div>
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./src/erlc')
package/package.json CHANGED
@@ -1,38 +1,30 @@
1
1
  {
2
2
  "name": "erlc-api",
3
- "version": "2.3.3",
4
- "description": "A modern API wrapper for ER:LC with TypeScript and browser support",
5
- "main": "dist/cjs/index.js",
6
- "module": "dist/esm/index.js",
7
- "types": "dist/types/index.d.ts",
8
- "browser": "dist/browser/erlc.min.js",
9
- "files": [
10
- "dist"
11
- ],
12
- "scripts": {
13
- "build": "npm run clean && npm run build:all",
14
- "build:all": "npm run build:esm && npm run build:cjs && npm run build:browser && npm run build:types",
15
- "build:esm": "tsc -p tsconfig.esm.json",
16
- "build:cjs": "tsc -p tsconfig.cjs.json",
17
- "build:browser": "webpack --config webpack.config.js",
18
- "build:types": "tsc -p tsconfig.types.json",
19
- "clean": "rimraf dist",
20
- "test": "jest",
21
- "lint": "eslint src --ext .ts",
22
- "format": "prettier --write \"src/**/*.ts\"",
23
- "docs": "typedoc"
24
- },
3
+ "version": "3.0.0",
4
+ "description": "An ER:LC API wrapper for JS/TS",
5
+ "main": "index.js",
6
+ "types": "src/types/index.d.ts",
25
7
  "keywords": [
26
8
  "erlc",
27
9
  "roblox",
28
10
  "prc",
29
11
  "erlc-api",
30
- "liberty-county",
31
- "typescript",
32
- "browser"
12
+ "liberty-county"
33
13
  ],
34
14
  "author": "egologics",
35
15
  "license": "MIT",
16
+ "devDependencies": {
17
+ "typescript": "^5.3.2"
18
+ },
19
+ "dependencies": {
20
+ "chalk": "^5.4.1",
21
+ "cli-table3": "^0.6.5",
22
+ "node-fetch": "^3.3.2",
23
+ "ora": "^8.2.0"
24
+ },
25
+ "scripts": {
26
+ "test": "echo \"Error: no test specified\" && exit 1"
27
+ },
36
28
  "repository": {
37
29
  "type": "git",
38
30
  "url": "git+https://github.com/Exodo0/ERLC-API.git"
@@ -40,25 +32,5 @@
40
32
  "bugs": {
41
33
  "url": "https://github.com/Exodo0/ERLC-API/issues"
42
34
  },
43
- "homepage": "https://github.com/Exodo0/ERLC-API#readme",
44
- "devDependencies": {
45
- "@types/jest": "^29.5.14",
46
- "@types/node": "^22.13.1",
47
- "@typescript-eslint/eslint-plugin": "^8.23.0",
48
- "@typescript-eslint/parser": "^8.23.0",
49
- "eslint": "^9.19.0",
50
- "jest": "^29.7.0",
51
- "prettier": "^3.4.2",
52
- "rimraf": "^6.0.1",
53
- "ts-jest": "^29.2.5",
54
- "ts-loader": "^9.5.2",
55
- "typedoc": "^0.27.6",
56
- "typescript": "^5.7.3",
57
- "webpack": "^5.97.1",
58
- "webpack-cli": "^6.0.1"
59
- },
60
- "dependencies": {
61
- "axios": "^1.7.9",
62
- "erlc-api": "file:"
63
- }
35
+ "homepage": "https://github.com/Exodo0/ERLC-API#readme"
64
36
  }
@@ -0,0 +1,36 @@
1
+ const erlc = require('../erlc.js')
2
+ const assert = require('../functions/assert.js')
3
+
4
+ /**
5
+ * @typedef {Object} ClientConfig
6
+ * @property {string} globalToken - Your ER:LC global API token
7
+ */
8
+
9
+ /**
10
+ * Creates an authorised ER:LC client for requests
11
+ * @class
12
+ * @param {ClientConfig} options - Client Options
13
+ */
14
+
15
+ class Client {
16
+
17
+ /**
18
+ * @constructor
19
+ * @param {ClientConfig} options - Client Options
20
+ */
21
+ constructor(options) {
22
+ assert(typeof options === 'object', `Syntax error: object expected for "options", received ${typeof options}`);
23
+ this.options = { ...options };
24
+ }
25
+
26
+ /**
27
+ * Updates and returns the client configurationg
28
+ * @returns {ClientConfig} The client configuration.
29
+ */
30
+ config() {
31
+ erlc.config = this.options
32
+ return erlc.config
33
+ }
34
+ }
35
+
36
+ module.exports = Client
@@ -0,0 +1,2 @@
1
+ exports.Vanity = "https://policeroleplay.community/join?code="
2
+ exports.BASEURL = "https://api.policeroleplay.community/v1"
package/src/erlc.js ADDED
@@ -0,0 +1,15 @@
1
+ exports.config = {};
2
+
3
+ exports.getBans = require("./functions/server/getBans.js");
4
+ exports.getCommandLogs = require("./functions/server/getCommandLogs.js");
5
+ exports.getJoinLogs = require("./functions/server/getJoinLogs.js");
6
+ exports.getKillLogs = require("./functions/server/getKillLogs.js");
7
+ exports.getModcallLogs = require("./functions/server/getModcallLogs.js");
8
+ exports.getPlayers = require("./functions/server/getPlayers.js");
9
+ exports.getServer = require("./functions/server/getServer.js");
10
+ exports.getQueue = require("./functions/server/getQueue.js");
11
+ exports.runCommand = require("./functions/server/runCommand.js");
12
+ exports.getVehicles = require("./functions/server/getVehicles.js");
13
+ exports.getStaff = require("./functions/server/getStaff.js");
14
+
15
+ exports.Client = require("./classes/client.js");
@@ -0,0 +1,5 @@
1
+ module.exports = function(condition, message) {
2
+ if (!condition) {
3
+ throw new Error(message);
4
+ }
5
+ }