@takaro/apiclient 0.0.0-dev.3cc7003 → 0.0.0-dev.3ea3701

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.
@@ -1,8 +1,22 @@
1
1
  import { MetaApi } from '../generated/api.js';
2
2
  import { AxiosInstance } from 'axios';
3
+ /**
4
+ * Axios defaults to NO timeout, so a request whose TCP connection stalls blocks its
5
+ * await forever. During incident run-29688761260 a single POST hung for ~80 minutes
6
+ * (Tempo trace 15f5708701c38676355a0e42cb9f7ffe: a client span with no server span),
7
+ * freezing 3 of 4 CI shards until the 53-minute job timeout.
8
+ *
9
+ * 120s is deliberately generous — the goal is "not infinite", not "tight". The slowest
10
+ * legitimate single call is a domain create under full 4-shard CI load at roughly 30s.
11
+ * Individual long-running calls should pass a per-request `{ timeout }` override rather
12
+ * than raising this.
13
+ */
14
+ export declare const DEFAULT_REQUEST_TIMEOUT_MS = 120000;
3
15
  export interface IBaseApiClientConfig {
4
16
  url: string;
5
17
  log?: Logger | false;
18
+ /** Per-request timeout in ms. Defaults to DEFAULT_REQUEST_TIMEOUT_MS. */
19
+ timeoutMs?: number;
6
20
  }
7
21
  interface Logger {
8
22
  info: (msg: string, meta?: unknown) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"baseClient.d.ts","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAc,EAAc,aAAa,EAAsB,MAAM,OAAO,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB;AAED,UAAU,MAAM;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,oBAAoB;IAS3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IARxC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,MAAM,CAKnB;gBAE6B,MAAM,EAAE,CAAC;IAoBxC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIpC,SAAS,CAAC,QAAQ,EAAE,MAAM;IAI1B,IAAI,aAAa,kBAEhB;IAED,UAAU,CAAC,IAAI,EAAE,MAAM;IAIvB,OAAO,CAAC,UAAU;IAgElB;;;OAGG;IACG,gBAAgB,CAAC,OAAO,SAAS;IAqBvC,IAAI,IAAI,YAQP;CACF"}
1
+ {"version":3,"file":"baseClient.d.ts","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAc,EAAc,aAAa,EAAsB,MAAM,OAAO,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,MAAM;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,oBAAoB;IAS3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IARxC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,MAAM,CAKnB;gBAE6B,MAAM,EAAE,CAAC;IAqBxC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIpC,SAAS,CAAC,QAAQ,EAAE,MAAM;IAI1B,IAAI,aAAa,kBAEhB;IAED,UAAU,CAAC,IAAI,EAAE,MAAM;IAIvB,OAAO,CAAC,UAAU;IAgElB;;;OAGG;IACG,gBAAgB,CAAC,OAAO,SAAS;IAqBvC,IAAI,IAAI,YAQP;CACF"}
@@ -1,5 +1,17 @@
1
1
  import { MetaApi } from '../generated/api.js';
2
2
  import axios from 'axios';
3
+ /**
4
+ * Axios defaults to NO timeout, so a request whose TCP connection stalls blocks its
5
+ * await forever. During incident run-29688761260 a single POST hung for ~80 minutes
6
+ * (Tempo trace 15f5708701c38676355a0e42cb9f7ffe: a client span with no server span),
7
+ * freezing 3 of 4 CI shards until the 53-minute job timeout.
8
+ *
9
+ * 120s is deliberately generous — the goal is "not infinite", not "tight". The slowest
10
+ * legitimate single call is a domain create under full 4-shard CI load at roughly 30s.
11
+ * Individual long-running calls should pass a per-request `{ timeout }` override rather
12
+ * than raising this.
13
+ */
14
+ export const DEFAULT_REQUEST_TIMEOUT_MS = 120_000;
3
15
  export class BaseApiClient {
4
16
  constructor(config) {
5
17
  this.config = config;
@@ -21,6 +33,7 @@ export class BaseApiClient {
21
33
  ...(!isBrowser && { 'User-Agent': 'Takaro-API-Client' }),
22
34
  },
23
35
  withCredentials: true,
36
+ timeout: this.config.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
24
37
  };
25
38
  this.axios = this.addLoggers(axios.create(axiosConfig));
26
39
  if (this.config.log)
@@ -1 +1 @@
1
- {"version":3,"file":"baseClient.js","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseClient.js","sourceRoot":"","sources":["../../src/lib/baseClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@takaro/apiclient",
3
3
  "description": "API client for Takaro",
4
- "version": "0.0.0-dev.3cc7003",
4
+ "version": "0.0.0-dev.3ea3701",
5
5
  "author": "",
6
6
  "dependencies": {
7
7
  "axios": "1.7.7"
@@ -2264,6 +2264,24 @@ export interface DomainCreateInputDTO {
2264
2264
  * @memberof DomainCreateInputDTO
2265
2265
  */
2266
2266
  maxFunctionsInModule?: number;
2267
+ /**
2268
+ *
2269
+ * @type {number}
2270
+ * @memberof DomainCreateInputDTO
2271
+ */
2272
+ maxCustomRoles?: number;
2273
+ /**
2274
+ *
2275
+ * @type {number}
2276
+ * @memberof DomainCreateInputDTO
2277
+ */
2278
+ maxDiscordLinkedRoles?: number;
2279
+ /**
2280
+ *
2281
+ * @type {string}
2282
+ * @memberof DomainCreateInputDTO
2283
+ */
2284
+ serverRegistrationToken?: string;
2267
2285
  }
2268
2286
 
2269
2287
  export const DomainCreateInputDTOStateEnum = {
@@ -2422,6 +2440,18 @@ export interface DomainOutputDTO {
2422
2440
  * @memberof DomainOutputDTO
2423
2441
  */
2424
2442
  maxFunctionsInModule: number;
2443
+ /**
2444
+ *
2445
+ * @type {number}
2446
+ * @memberof DomainOutputDTO
2447
+ */
2448
+ maxCustomRoles: number;
2449
+ /**
2450
+ *
2451
+ * @type {number}
2452
+ * @memberof DomainOutputDTO
2453
+ */
2454
+ maxDiscordLinkedRoles: number;
2425
2455
  /**
2426
2456
  *
2427
2457
  * @type {string}
@@ -2653,6 +2683,18 @@ export interface DomainUpdateInputDTO {
2653
2683
  * @memberof DomainUpdateInputDTO
2654
2684
  */
2655
2685
  maxFunctionsInModule?: number;
2686
+ /**
2687
+ *
2688
+ * @type {number}
2689
+ * @memberof DomainUpdateInputDTO
2690
+ */
2691
+ maxCustomRoles?: number;
2692
+ /**
2693
+ *
2694
+ * @type {number}
2695
+ * @memberof DomainUpdateInputDTO
2696
+ */
2697
+ maxDiscordLinkedRoles?: number;
2656
2698
  }
2657
2699
 
2658
2700
  export const DomainUpdateInputDTOStateEnum = {
@@ -13360,7 +13402,7 @@ export interface RoleUpdateInputDTO {
13360
13402
  * @type {string}
13361
13403
  * @memberof RoleUpdateInputDTO
13362
13404
  */
13363
- linkedDiscordRoleId?: string;
13405
+ linkedDiscordRoleId?: string | null;
13364
13406
  }
13365
13407
  /**
13366
13408
  *
@@ -0,0 +1,17 @@
1
+ import { describe, it } from 'node:test';
2
+ import { expect } from '@takaro/test';
3
+ import { BaseApiClient, DEFAULT_REQUEST_TIMEOUT_MS } from '../baseClient.js';
4
+
5
+ describe('BaseApiClient timeouts', () => {
6
+ it('sets a default request timeout so a stalled request cannot hang forever', () => {
7
+ const client = new BaseApiClient({ url: 'http://localhost:3000', log: false });
8
+
9
+ expect(client.axiosInstance.defaults.timeout).to.equal(DEFAULT_REQUEST_TIMEOUT_MS);
10
+ });
11
+
12
+ it('lets a caller override the timeout', () => {
13
+ const client = new BaseApiClient({ url: 'http://localhost:3000', log: false, timeoutMs: 5000 });
14
+
15
+ expect(client.axiosInstance.defaults.timeout).to.equal(5000);
16
+ });
17
+ });
@@ -1,9 +1,24 @@
1
1
  import { MetaApi } from '../generated/api.js';
2
2
  import axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios';
3
3
 
4
+ /**
5
+ * Axios defaults to NO timeout, so a request whose TCP connection stalls blocks its
6
+ * await forever. During incident run-29688761260 a single POST hung for ~80 minutes
7
+ * (Tempo trace 15f5708701c38676355a0e42cb9f7ffe: a client span with no server span),
8
+ * freezing 3 of 4 CI shards until the 53-minute job timeout.
9
+ *
10
+ * 120s is deliberately generous — the goal is "not infinite", not "tight". The slowest
11
+ * legitimate single call is a domain create under full 4-shard CI load at roughly 30s.
12
+ * Individual long-running calls should pass a per-request `{ timeout }` override rather
13
+ * than raising this.
14
+ */
15
+ export const DEFAULT_REQUEST_TIMEOUT_MS = 120_000;
16
+
4
17
  export interface IBaseApiClientConfig {
5
18
  url: string;
6
19
  log?: Logger | false;
20
+ /** Per-request timeout in ms. Defaults to DEFAULT_REQUEST_TIMEOUT_MS. */
21
+ timeoutMs?: number;
7
22
  }
8
23
 
9
24
  interface Logger {
@@ -36,6 +51,7 @@ export class BaseApiClient<T extends IBaseApiClientConfig> {
36
51
  ...(!isBrowser && { 'User-Agent': 'Takaro-API-Client' }),
37
52
  },
38
53
  withCredentials: true,
54
+ timeout: this.config.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
39
55
  };
40
56
  this.axios = this.addLoggers(axios.create(axiosConfig));
41
57