@takaro/gameserver 0.3.3 → 0.4.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.
@@ -5,6 +5,7 @@ import { MapInfoDTO } from '../../main.js';
5
5
  export declare class SdtdApiClient {
6
6
  private config;
7
7
  private client;
8
+ private log;
8
9
  constructor(config: SdtdConnectionInfo);
9
10
  private get url();
10
11
  getStats(): Promise<AxiosResponse<StatsResponse>>;
@@ -1 +1 @@
1
- {"version":3,"file":"sdtdAPIClient.d.ts","sourceRoot":"","sources":["../../../src/gameservers/7d2d/sdtdAPIClient.ts"],"names":[],"mappings":"AAAA,OAAc,EAAS,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,aAAa;IAGZ,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,MAAM,CAAQ;gBAEF,MAAM,EAAE,kBAAkB;IA0C9C,OAAO,KAAK,GAAG,GAEd;IAEK,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAIjD,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAI/E,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAInE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAIvE,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAIzE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAajC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOnE"}
1
+ {"version":3,"file":"sdtdAPIClient.d.ts","sourceRoot":"","sources":["../../../src/gameservers/7d2d/sdtdAPIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,aAAa;IAIZ,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,GAAG,CAAsB;gBAEb,MAAM,EAAE,kBAAkB;IAqB9C,OAAO,KAAK,GAAG,GAEd;IAEK,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAIjD,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAI/E,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAInE,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAIvE,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAIzE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAajC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOnE"}
@@ -1,12 +1,12 @@
1
- import axios from 'axios';
2
- import { addCounterToAxios, errors } from '@takaro/util';
1
+ import { addCounterToAxios, createAxios, logger } from '@takaro/util';
3
2
  import { MapInfoDTO } from '../../main.js';
4
3
  export class SdtdApiClient {
5
4
  constructor(config) {
6
5
  this.config = config;
7
- this.client = axios.create({
6
+ this.log = logger('7d2d:api');
7
+ this.client = createAxios({
8
8
  baseURL: this.url,
9
- });
9
+ }, { logger: this.log });
10
10
  addCounterToAxios(this.client, {
11
11
  name: 'sdtd_api_requests_total',
12
12
  help: 'Total number of requests to the 7D2D API',
@@ -16,26 +16,6 @@ export class SdtdApiClient {
16
16
  req.headers['X-SDTD-API-SECRET'] = config.adminToken;
17
17
  return req;
18
18
  });
19
- this.client.interceptors.response.use(function (response) {
20
- return response;
21
- }, function (error) {
22
- // Any status codes that falls outside the range of 2xx cause this function to trigger
23
- if (error.response) {
24
- const simplifiedError = new errors.BadRequestError('Axios error', {
25
- extra: 'A request to the 7D2D server failed',
26
- status: error.response.status,
27
- statusText: error.response.statusText,
28
- url: error.config.url,
29
- });
30
- return Promise.reject(simplifiedError);
31
- }
32
- const simplifiedError = new errors.BadRequestError('Axios error', {
33
- extra: 'A request to the 7D2D server failed',
34
- message: error.message,
35
- url: error.config.url,
36
- });
37
- return Promise.reject(simplifiedError);
38
- });
39
19
  }
40
20
  get url() {
41
21
  return `${this.config.useTls ? 'https' : 'http'}://${this.config.host}`;
@@ -1 +1 @@
1
- {"version":3,"file":"sdtdAPIClient.js","sourceRoot":"","sources":["../../../src/gameservers/7d2d/sdtdAPIClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdtdAPIClient.js","sourceRoot":"","sources":["../../../src/gameservers/7d2d/sdtdAPIClient.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"connectorClient.d.ts","sourceRoot":"","sources":["../../../src/gameservers/generic/connectorClient.ts"],"names":[],"mappings":"AA+DA,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAgB;;IAKxB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsB5E,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAehD"}
1
+ {"version":3,"file":"connectorClient.d.ts","sourceRoot":"","sources":["../../../src/gameservers/generic/connectorClient.ts"],"names":[],"mappings":"AA6BA,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAgB;;IAKxB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsB5E,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAehD"}
@@ -1,45 +1,21 @@
1
- import axios, { isAxiosError } from 'axios';
1
+ import { isAxiosError } from 'axios';
2
2
  import { config } from '../../config.js';
3
- import { errors, logger } from '@takaro/util';
3
+ import { errors, logger, createAxios } from '@takaro/util';
4
4
  function getConnectorClient() {
5
5
  const log = logger('client:connector');
6
- const connectorClient = axios.create({
6
+ const connectorClient = createAxios({
7
7
  baseURL: config.get('connector.host'),
8
8
  headers: {
9
9
  'Content-Type': 'application/json',
10
10
  'User-Agent': 'Takaro',
11
11
  },
12
- });
12
+ }, { logger: log });
13
+ // Add custom interceptor for operation logging
13
14
  connectorClient.interceptors.request.use((request) => {
14
- log.debug(`➡️ ${request.method?.toUpperCase()} ${request.url}`, {
15
- method: request.method,
16
- url: request.url,
17
- operation: request.data?.operation,
18
- });
19
- return request;
20
- });
21
- connectorClient.interceptors.response.use((response) => {
22
- log.debug(`⬅️ ${response.request.method?.toUpperCase()} ${response.request.path} ${response.status} ${response.statusText}`, {
23
- status: response.status,
24
- method: response.request.method,
25
- url: response.request.url,
26
- operation: response.config.data?.operation,
27
- });
28
- return response;
29
- }, (error) => {
30
- let details = {};
31
- if (error.response?.data) {
32
- const data = error.response.data;
33
- details = JSON.stringify(data.error_description);
15
+ if (request.data?.operation) {
16
+ log.debug(`Operation: ${request.data.operation}`);
34
17
  }
35
- log.warn(`☠️ Request errored: [${error.response?.status}] ${details}`, {
36
- status: error.response?.status,
37
- statusText: error.response?.statusText,
38
- method: error.config?.method,
39
- url: error.config?.url,
40
- response: error.response?.data,
41
- });
42
- return Promise.reject(error);
18
+ return request;
43
19
  });
44
20
  return connectorClient;
45
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connectorClient.js","sourceRoot":"","sources":["../../../src/gameservers/generic/connectorClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connectorClient.js","sourceRoot":"","sources":["../../../src/gameservers/generic/connectorClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEvC,MAAM,eAAe,GAAG,WAAW,CACjC;QACE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACrC,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,QAAQ;SACvB;KACF,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;IAEF,+CAA+C;IAC/C,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACnD,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,eAAe;IAE1B;QACE,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EAAU,EAAE,SAAiB,EAAE,IAAY;QACjE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAC/D,MAAM,IAAI,MAAM,CAAC,eAAe,CAC9B,mFAAmF,CACpF,CAAC;gBACJ,CAAC;gBAED,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;oBAC3B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;wBAClE,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAC/D,MAAM,IAAI,MAAM,CAAC,eAAe,CAC9B,mFAAmF,CACpF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takaro/gameserver",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "description": "Handles abstraction between Takaro and game servers",
5
5
  "main": "dist/main.js",
6
6
  "types": "dist/main.d.ts",
@@ -1,4 +1,4 @@
1
- import axios, { Axios, AxiosResponse } from 'axios';
1
+ import { Axios, AxiosResponse } from 'axios';
2
2
  import { SdtdConnectionInfo } from './connectionInfo.js';
3
3
  import {
4
4
  CommandResponse,
@@ -7,16 +7,20 @@ import {
7
7
  PlayerLocation,
8
8
  StatsResponse,
9
9
  } from './apiResponses.js';
10
- import { addCounterToAxios, errors } from '@takaro/util';
10
+ import { addCounterToAxios, createAxios, logger } from '@takaro/util';
11
11
  import { MapInfoDTO } from '../../main.js';
12
12
 
13
13
  export class SdtdApiClient {
14
14
  private client: Axios;
15
+ private log = logger('7d2d:api');
15
16
 
16
17
  constructor(private config: SdtdConnectionInfo) {
17
- this.client = axios.create({
18
- baseURL: this.url,
19
- });
18
+ this.client = createAxios(
19
+ {
20
+ baseURL: this.url,
21
+ },
22
+ { logger: this.log },
23
+ );
20
24
 
21
25
  addCounterToAxios(this.client, {
22
26
  name: 'sdtd_api_requests_total',
@@ -29,30 +33,6 @@ export class SdtdApiClient {
29
33
 
30
34
  return req;
31
35
  });
32
-
33
- this.client.interceptors.response.use(
34
- function (response) {
35
- return response;
36
- },
37
- function (error) {
38
- // Any status codes that falls outside the range of 2xx cause this function to trigger
39
- if (error.response) {
40
- const simplifiedError = new errors.BadRequestError('Axios error', {
41
- extra: 'A request to the 7D2D server failed',
42
- status: error.response.status,
43
- statusText: error.response.statusText,
44
- url: error.config.url,
45
- });
46
- return Promise.reject(simplifiedError);
47
- }
48
- const simplifiedError = new errors.BadRequestError('Axios error', {
49
- extra: 'A request to the 7D2D server failed',
50
- message: error.message,
51
- url: error.config.url,
52
- });
53
- return Promise.reject(simplifiedError);
54
- },
55
- );
56
36
  }
57
37
 
58
38
  private get url() {
@@ -1,63 +1,29 @@
1
- import axios, { AxiosError, AxiosInstance, isAxiosError } from 'axios';
1
+ import { AxiosInstance, isAxiosError } from 'axios';
2
2
  import { config } from '../../config.js';
3
- import { errors, logger } from '@takaro/util';
3
+ import { errors, logger, createAxios } from '@takaro/util';
4
4
 
5
5
  function getConnectorClient() {
6
6
  const log = logger('client:connector');
7
7
 
8
- const connectorClient = axios.create({
9
- baseURL: config.get('connector.host'),
10
- headers: {
11
- 'Content-Type': 'application/json',
12
- 'User-Agent': 'Takaro',
8
+ const connectorClient = createAxios(
9
+ {
10
+ baseURL: config.get('connector.host'),
11
+ headers: {
12
+ 'Content-Type': 'application/json',
13
+ 'User-Agent': 'Takaro',
14
+ },
13
15
  },
14
- });
16
+ { logger: log },
17
+ );
15
18
 
19
+ // Add custom interceptor for operation logging
16
20
  connectorClient.interceptors.request.use((request) => {
17
- log.debug(`➡️ ${request.method?.toUpperCase()} ${request.url}`, {
18
- method: request.method,
19
- url: request.url,
20
- operation: request.data?.operation,
21
- });
21
+ if (request.data?.operation) {
22
+ log.debug(`Operation: ${request.data.operation}`);
23
+ }
22
24
  return request;
23
25
  });
24
26
 
25
- connectorClient.interceptors.response.use(
26
- (response) => {
27
- log.debug(
28
- `⬅️ ${response.request.method?.toUpperCase()} ${response.request.path} ${response.status} ${
29
- response.statusText
30
- }`,
31
- {
32
- status: response.status,
33
- method: response.request.method,
34
- url: response.request.url,
35
- operation: response.config.data?.operation,
36
- },
37
- );
38
-
39
- return response;
40
- },
41
- (error: AxiosError) => {
42
- let details = {};
43
-
44
- if (error.response?.data) {
45
- const data = error.response.data as Record<string, unknown>;
46
- details = JSON.stringify(data.error_description);
47
- }
48
-
49
- log.warn(`☠️ Request errored: [${error.response?.status}] ${details}`, {
50
- status: error.response?.status,
51
- statusText: error.response?.statusText,
52
- method: error.config?.method,
53
- url: error.config?.url,
54
- response: error.response?.data,
55
- });
56
-
57
- return Promise.reject(error);
58
- },
59
- );
60
-
61
27
  return connectorClient;
62
28
  }
63
29