erlc-api 2.3.2 → 2.3.4

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 (61) hide show
  1. package/.gitattributes +2 -0
  2. package/README.md +110 -134
  3. package/index.js +1 -0
  4. package/package.json +34 -64
  5. package/src/classes/client.js +36 -0
  6. package/src/constants.js +2 -0
  7. package/src/erlc.js +14 -0
  8. package/src/functions/assert.js +5 -0
  9. package/src/functions/server/getBans.js +28 -0
  10. package/src/functions/server/getCommandLogs.js +28 -0
  11. package/src/functions/server/getJoinLogs.js +28 -0
  12. package/src/functions/server/getKillLogs.js +28 -0
  13. package/src/functions/server/getModcallLogs.js +28 -0
  14. package/src/functions/server/getPlayers.js +28 -0
  15. package/src/functions/server/getQueue.js +28 -0
  16. package/src/functions/server/getServer.js +52 -0
  17. package/src/functions/server/getVehicles.js +28 -0
  18. package/src/functions/server/runCommand.js +29 -0
  19. package/src/types/custom.d.ts +5 -0
  20. package/src/types/index.d.ts +91 -0
  21. package/dist/browser/erlc.min.js +0 -1
  22. package/dist/cjs/client.d.ts +0 -25
  23. package/dist/cjs/client.d.ts.map +0 -1
  24. package/dist/cjs/client.js +0 -152
  25. package/dist/cjs/client.js.map +0 -1
  26. package/dist/cjs/errors/index.d.ts +0 -13
  27. package/dist/cjs/errors/index.d.ts.map +0 -1
  28. package/dist/cjs/errors/index.js +0 -32
  29. package/dist/cjs/errors/index.js.map +0 -1
  30. package/dist/cjs/index.d.ts +0 -4
  31. package/dist/cjs/index.d.ts.map +0 -1
  32. package/dist/cjs/index.js +0 -20
  33. package/dist/cjs/index.js.map +0 -1
  34. package/dist/cjs/types/index.d.ts +0 -46
  35. package/dist/cjs/types/index.d.ts.map +0 -1
  36. package/dist/cjs/types/index.js +0 -3
  37. package/dist/cjs/types/index.js.map +0 -1
  38. package/dist/esm/client.d.ts +0 -25
  39. package/dist/esm/client.d.ts.map +0 -1
  40. package/dist/esm/client.js +0 -145
  41. package/dist/esm/client.js.map +0 -1
  42. package/dist/esm/errors/index.d.ts +0 -13
  43. package/dist/esm/errors/index.d.ts.map +0 -1
  44. package/dist/esm/errors/index.js +0 -25
  45. package/dist/esm/errors/index.js.map +0 -1
  46. package/dist/esm/index.d.ts +0 -4
  47. package/dist/esm/index.d.ts.map +0 -1
  48. package/dist/esm/index.js +0 -4
  49. package/dist/esm/index.js.map +0 -1
  50. package/dist/esm/types/index.d.ts +0 -46
  51. package/dist/esm/types/index.d.ts.map +0 -1
  52. package/dist/esm/types/index.js +0 -2
  53. package/dist/esm/types/index.js.map +0 -1
  54. package/dist/types/client.d.ts +0 -25
  55. package/dist/types/client.d.ts.map +0 -1
  56. package/dist/types/errors/index.d.ts +0 -13
  57. package/dist/types/errors/index.d.ts.map +0 -1
  58. package/dist/types/index.d.ts +0 -4
  59. package/dist/types/index.d.ts.map +0 -1
  60. package/dist/types/types/index.d.ts +0 -46
  61. 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,110 @@
1
- # ERLC API
2
-
3
- A modern TypeScript/JavaScript API wrapper for ER:LC (Emergency Response: Liberty County) with full browser support.
4
-
5
- ## Features
6
-
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
13
-
14
- ## Installation
15
-
16
- ```bash
17
- npm install erlc-api
18
- ```
19
-
20
- ## Usage
21
-
22
- ### TypeScript/ES Modules
23
-
24
- ```typescript
25
- import { Client } from 'erlc-api';
26
-
27
- const client = new Client({
28
- globalToken: 'your-global-token',
29
- });
30
-
31
- // Get server information
32
- const serverInfo = await client.getServer('server-token');
33
- console.log(serverInfo);
34
-
35
- // Get players
36
- const players = await client.getPlayers('server-token');
37
- console.log(players);
38
-
39
- //Run Command
40
- const Command = await client.runCommand('server-token', ':h Hello');
41
- console.log(Command);
42
- ```
43
-
44
- ### CommonJS
45
-
46
- ```javascript
47
- const { Client } = require('erlc-api');
48
-
49
- const client = new Client({
50
- globalToken: 'your-global-token',
51
- });
52
-
53
- // Using async/await
54
- async function getServerInfo() {
55
- try {
56
- const server = await client.getServer('server-token');
57
- console.log(server);
58
- } catch (error) {
59
- console.error('Error:', error.message);
60
- }
61
- }
62
- ```
63
-
64
- ### Browser
65
-
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
- });
72
-
73
- client
74
- .getServer('server-token')
75
- .then((server) => console.log(server))
76
- .catch((error) => console.error(error));
77
- </script>
78
- ```
79
-
80
- ## API Methods
81
-
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
92
-
93
- ## Error Handling
94
-
95
- The library includes custom error classes for better error handling:
96
-
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');
109
- }
110
- }
111
- ```
112
-
113
- ## Development
114
-
115
- ```bash
116
- # Install dependencies
117
- npm install
118
-
119
- # Run tests
120
- npm test
121
-
122
- # Build
123
- npm run build
124
-
125
- # Lint
126
- npm run lint
127
-
128
- # Format code
129
- npm run format
130
- ```
131
-
132
- ## License
133
-
134
- MIT License - see LICENSE file for details.
1
+ # ER:LC API Wrapper
2
+
3
+ A lightweight API Wrapper with 100% coverage of the ER:LC API. Fixed Error and Improvements
4
+ 7
5
+
6
+ ## Getting Started
7
+
8
+ First you need to install the package.
9
+
10
+ `npm i erlc-api`
11
+
12
+ ### Setting Up
13
+
14
+ Setting up is super simple:
15
+
16
+ ```js
17
+ // index.js
18
+ const erlc = require("erlc");
19
+ const client = new erlc.Client({
20
+ globalToken: "", // You get the global key directly from the ERLC developers. To increase your API request limits
21
+ });
22
+ client.config(); // Registers your client
23
+ ```
24
+
25
+ Now you can start using API Methods - here are a few examples:
26
+
27
+ ```js
28
+ // GetServerInfo.js
29
+ const erlc = require("erlc-api"); //JS
30
+ import erlc from "erlc-api"; // Module or typeScript
31
+
32
+ const getServerFunc = async () => {
33
+ const serverId = ""; // The server ApiKey you wish to target. You can get this api key in your (Server Settings)
34
+ const server = await erlc.getServer(serverId).catch(console.log); // Gets the server, logs any errors
35
+ console.log(server); // Logs the server object
36
+
37
+ // Expected Response:
38
+ // {
39
+ // Name: "Your Sever Name",
40
+ // CurrentPlayers: 0,
41
+ // MaxPlayers: 40,
42
+ // JoinKey: "Your Code Join",
43
+ // AccVerifiedReq: "Disabled" | "Email" | "Phone/ID",
44
+ // TeamBalance: true or false ,
45
+ // OwnerUsername: "Your Name",
46
+ // CoOwnerUsernames: [],
47
+ // VanityURL: "https://policeroleplay.community/join?code=YourCode",
48
+ // },
49
+ };
50
+
51
+ getServerFunc();
52
+ ```
53
+
54
+ ```js
55
+ // GetPlayers.js
56
+ const erlc = require("erlc-api"); //JS
57
+ import erlc from "erlc-api"; // Module or typeScript
58
+
59
+ const getPlayersFunc = async () => {
60
+ const serverId = ""; // The server ApiKey you wish to target. You can get this api key in your (Server Settings)
61
+ const server = await erlc.getPlayers(serverId).catch(console.log); // Gets the server, logs any errors
62
+ console.log(server); // Logs the server object
63
+ // Expected Response:
64
+ // [
65
+ // {
66
+ // "Permission": "Server Owner" Or Member, Moderator,
67
+ // "Player": "Player-Username and ID" ,
68
+ // "Team": "Civilian" Or Fire, Police, Sherift
69
+ // }
70
+ // ]
71
+ };
72
+ getPlayersFunc();
73
+ ```
74
+
75
+ ```js
76
+ //getmodCalls.js
77
+ const erlc = require("erlc-api"); //JS
78
+ import erlc from "erlc-api"; // Module or typeScript
79
+
80
+ const getModCallsFunc = async () => {
81
+ const serverId = ""; // The server ApiKey you wish to target. You can get this api key in your (Server Settings)
82
+ const server = await erlc.getModcallLogs(serverId).catch(console.log); // Gets the server, logs any errors
83
+ console.log(server); // Logs the server object
84
+ // Expected Response:
85
+ // {
86
+ // Caller: ErlcPlayer;
87
+ // Moderator?: ErlcPlayer; // If call is unanswered property is undefined
88
+ // Timestamp: number;
89
+ // }
90
+ };
91
+ getModCallsFunc()
92
+ ```
93
+
94
+ ### [Discord Bot](https://discord.com/oauth2/authorize?client_id=1014990793280323624)
95
+
96
+ The Discord Bot Back Online 29/05/2024
97
+
98
+ ## [Module Examples](https://scarlet-2.gitbook.io/erlc-api/)
99
+
100
+ ### [PRC API Docs](https://apidocs.policeroleplay.community/reference/api-reference)
101
+
102
+ ## [Liveries]("https://github.com/Exodo0/ERLC-API/tree/main/Custom%20Liveries")
103
+
104
+ ### Credits
105
+
106
+ Library Re-Development - [Egologics](https://twitter.com/0Adexus0)
107
+
108
+ API Development - [Police Roleplay Community](https://twitter.com/PRC_Roblox)
109
+
110
+ Apply for more API request limits - [Discord](https://discord.gg/prc)
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./src/erlc')
package/package.json CHANGED
@@ -1,64 +1,34 @@
1
- {
2
- "name": "erlc-api",
3
- "version": "2.3.2",
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
- },
25
- "keywords": [
26
- "erlc",
27
- "roblox",
28
- "prc",
29
- "erlc-api",
30
- "liberty-county",
31
- "typescript",
32
- "browser"
33
- ],
34
- "author": "egologics",
35
- "license": "MIT",
36
- "repository": {
37
- "type": "git",
38
- "url": "git+https://github.com/Exodo0/ERLC-API.git"
39
- },
40
- "bugs": {
41
- "url": "https://github.com/Exodo0/ERLC-API/issues"
42
- },
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
- }
64
- }
1
+ {
2
+ "name": "erlc-api",
3
+ "version": "2.3.4",
4
+ "description": "An ER:LC API wrapper for JS/TS",
5
+ "main": "index.js",
6
+ "types": "src/types/index.d.ts",
7
+ "keywords": [
8
+ "erlc",
9
+ "roblox",
10
+ "prc",
11
+ "erlc-api",
12
+ "liberty-county"
13
+ ],
14
+ "author": "egologics",
15
+ "license": "MIT",
16
+ "devDependencies": {
17
+ "typescript": "^5.3.2"
18
+ },
19
+ "dependencies": {
20
+ "erlc-api": "file:",
21
+ "node-fetch": "^3.3.2"
22
+ },
23
+ "scripts": {
24
+ "test": "echo \"Error: no test specified\" && exit 1"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/Exodo0/ERLC-API.git"
29
+ },
30
+ "bugs": {
31
+ "url": "https://github.com/Exodo0/ERLC-API/issues"
32
+ },
33
+ "homepage": "https://github.com/Exodo0/ERLC-API#readme"
34
+ }
@@ -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,14 @@
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
+
14
+ 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
+ }
@@ -0,0 +1,28 @@
1
+ const { BASEURL } = require("../../constants.js");
2
+
3
+ module.exports = (serverToken) => {
4
+ return new Promise(async (resolve, reject) => {
5
+ try {
6
+ const fetch = await import("node-fetch");
7
+ const { config } = await import("../../erlc.js");
8
+
9
+ const res = await fetch.default(`${BASEURL}/server/bans`, {
10
+ headers: {
11
+ "Authorization": config?.globalToken,
12
+ "Server-Key": serverToken,
13
+ },
14
+ });
15
+ const data = await res.json().catch((err) => {
16
+ return reject(err);
17
+ });
18
+
19
+ if (!res.ok) {
20
+ return reject(data);
21
+ }
22
+
23
+ resolve(data);
24
+ } catch (error) {
25
+ reject(error);
26
+ }
27
+ });
28
+ };
@@ -0,0 +1,28 @@
1
+ const { BASEURL } = require("../../constants.js");
2
+
3
+ module.exports = (serverToken) => {
4
+ return new Promise(async (resolve, reject) => {
5
+ try {
6
+ const fetch = await import("node-fetch");
7
+ const { config } = await import("../../erlc.js");
8
+
9
+ const res = await fetch.default(`${BASEURL}/server/commandlogs`, {
10
+ headers: {
11
+ "Authorization": config?.globalToken,
12
+ "Server-Key": serverToken,
13
+ },
14
+ });
15
+ const data = await res.json().catch((err) => {
16
+ return reject(err);
17
+ });
18
+
19
+ if (!res.ok) {
20
+ return reject(data);
21
+ }
22
+
23
+ resolve(data);
24
+ } catch (error) {
25
+ reject(error);
26
+ }
27
+ });
28
+ };
@@ -0,0 +1,28 @@
1
+ const { BASEURL } = require("../../constants.js");
2
+
3
+ module.exports = (serverToken) => {
4
+ return new Promise(async (resolve, reject) => {
5
+ try {
6
+ const fetch = await import("node-fetch");
7
+ const { config } = await import("../../erlc.js");
8
+
9
+ const res = await fetch.default(`${BASEURL}/server/joinlogs`, {
10
+ headers: {
11
+ "Authorization": config?.globalToken,
12
+ "Server-Key": serverToken,
13
+ },
14
+ });
15
+ const data = await res.json().catch((err) => {
16
+ return reject(err);
17
+ });
18
+
19
+ if (!res.ok) {
20
+ return reject(data);
21
+ }
22
+
23
+ resolve(data);
24
+ } catch (error) {
25
+ reject(error);
26
+ }
27
+ });
28
+ };
@@ -0,0 +1,28 @@
1
+ const { BASEURL } = require("../../constants.js");
2
+
3
+ module.exports = (serverToken) => {
4
+ return new Promise(async (resolve, reject) => {
5
+ try {
6
+ const fetch = await import("node-fetch");
7
+ const { config } = await import("../../erlc.js");
8
+
9
+ const res = await fetch.default(`${BASEURL}/server/killlogs`, {
10
+ headers: {
11
+ "Authorization": config?.globalToken,
12
+ "Server-Key": serverToken,
13
+ },
14
+ });
15
+ const data = await res.json().catch((err) => {
16
+ return reject(err);
17
+ });
18
+
19
+ if (!res.ok) {
20
+ return reject(data);
21
+ }
22
+
23
+ resolve(data);
24
+ } catch (error) {
25
+ reject(error);
26
+ }
27
+ });
28
+ };
@@ -0,0 +1,28 @@
1
+ const { BASEURL } = require("../../constants.js");
2
+
3
+ module.exports = (serverToken) => {
4
+ return new Promise(async (resolve, reject) => {
5
+ try {
6
+ const fetch = await import("node-fetch");
7
+ const { config } = await import("../../erlc.js");
8
+
9
+ const res = await fetch.default(`${BASEURL}/server/modcalls`, {
10
+ headers: {
11
+ "Authorization": config?.globalToken,
12
+ "Server-Key": serverToken,
13
+ },
14
+ });
15
+ const data = await res.json().catch((err) => {
16
+ return reject(err);
17
+ });
18
+
19
+ if (!res.ok) {
20
+ return reject(data);
21
+ }
22
+
23
+ resolve(data);
24
+ } catch (error) {
25
+ reject(error);
26
+ }
27
+ });
28
+ };
@@ -0,0 +1,28 @@
1
+ const { BASEURL } = require("../../constants.js");
2
+
3
+ module.exports = (serverToken) => {
4
+ return new Promise(async (resolve, reject) => {
5
+ try {
6
+ const fetch = await import("node-fetch");
7
+ const { config } = await import("../../erlc.js");
8
+
9
+ const res = await fetch.default(`${BASEURL}/server/players`, {
10
+ headers: {
11
+ "Authorization": config?.globalToken,
12
+ "Server-Key": serverToken,
13
+ },
14
+ });
15
+ const data = await res.json().catch((err) => {
16
+ return reject(err);
17
+ });
18
+
19
+ if (!res.ok) {
20
+ return reject(data);
21
+ }
22
+
23
+ resolve(data);
24
+ } catch (error) {
25
+ reject(error);
26
+ }
27
+ });
28
+ };
@@ -0,0 +1,28 @@
1
+ const { BASEURL } = require("../../constants.js");
2
+
3
+ module.exports = (serverToken) => {
4
+ return new Promise(async (resolve, reject) => {
5
+ try {
6
+ const fetch = await import("node-fetch");
7
+ const { config } = await import("../../erlc.js");
8
+
9
+ const res = await fetch.default(`${BASEURL}/server/queue`, {
10
+ headers: {
11
+ "Authorization": config?.globalToken,
12
+ "Server-Key": serverToken,
13
+ },
14
+ });
15
+ const data = await res.json().catch((err) => {
16
+ return reject(err);
17
+ });
18
+
19
+ if (!res.ok) {
20
+ return reject(data);
21
+ }
22
+
23
+ resolve(data);
24
+ } catch (error) {
25
+ reject(error);
26
+ }
27
+ });
28
+ };