celitech-sdk 1.1.71 → 1.1.72

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 (45) hide show
  1. package/.manifest.json +12 -12
  2. package/README.md +2 -2
  3. package/documentation/services/PurchasesService.md +6 -6
  4. package/examples/package.json +1 -1
  5. package/package.json +1 -1
  6. package/src/http/handlers/hook-handler.ts +6 -4
  7. package/src/http/handlers/response-validation-handler.ts +1 -1
  8. package/src/http/handlers/retry-handler.ts +8 -5
  9. package/src/http/hooks/hook.ts +3 -2
  10. package/src/http/serializer.ts +7 -4
  11. package/src/http/transport/request-builder.ts +145 -0
  12. package/src/http/transport/request.ts +45 -36
  13. package/src/services/destinations/destinations.ts +14 -11
  14. package/src/services/destinations/models/destinations.ts +3 -3
  15. package/src/services/destinations/models/list-destinations-ok-response.ts +3 -3
  16. package/src/services/e-sim/e-sim.ts +57 -45
  17. package/src/services/e-sim/models/device.ts +3 -3
  18. package/src/services/e-sim/models/get-esim-device-ok-response.ts +3 -3
  19. package/src/services/e-sim/models/get-esim-history-ok-response-esim.ts +3 -3
  20. package/src/services/e-sim/models/get-esim-history-ok-response.ts +3 -3
  21. package/src/services/e-sim/models/get-esim-mac-ok-response-esim.ts +3 -3
  22. package/src/services/e-sim/models/get-esim-mac-ok-response.ts +3 -3
  23. package/src/services/e-sim/models/get-esim-ok-response-esim.ts +3 -3
  24. package/src/services/e-sim/models/get-esim-ok-response.ts +3 -3
  25. package/src/services/e-sim/models/history.ts +3 -3
  26. package/src/services/packages/models/list-packages-ok-response.ts +3 -3
  27. package/src/services/packages/models/packages.ts +3 -3
  28. package/src/services/packages/packages.ts +22 -19
  29. package/src/services/purchases/models/create-purchase-ok-response-profile.ts +3 -3
  30. package/src/services/purchases/models/create-purchase-ok-response-purchase.ts +3 -3
  31. package/src/services/purchases/models/create-purchase-ok-response.ts +3 -3
  32. package/src/services/purchases/models/create-purchase-request.ts +3 -3
  33. package/src/services/purchases/models/edit-purchase-ok-response.ts +3 -3
  34. package/src/services/purchases/models/edit-purchase-request.ts +3 -3
  35. package/src/services/purchases/models/get-purchase-consumption-ok-response.ts +3 -3
  36. package/src/services/purchases/models/list-purchases-ok-response.ts +3 -3
  37. package/src/services/purchases/models/package_.ts +3 -3
  38. package/src/services/purchases/models/purchases-esim.ts +3 -3
  39. package/src/services/purchases/models/purchases.ts +3 -3
  40. package/src/services/purchases/models/top-up-esim-ok-response-profile.ts +3 -3
  41. package/src/services/purchases/models/top-up-esim-ok-response-purchase.ts +3 -3
  42. package/src/services/purchases/models/top-up-esim-ok-response.ts +3 -3
  43. package/src/services/purchases/models/top-up-esim-request.ts +3 -3
  44. package/src/services/purchases/purchases.ts +81 -66
  45. package/.github/PROTECTED_BRANCHES.txt +0 -1
package/.manifest.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
- "liblabVersion": "2.1.22",
3
- "date": "2024-07-23T14:32:38.632Z",
2
+ "liblabVersion": "2.1.23",
3
+ "date": "2024-07-24T16:11:13.332Z",
4
4
  "config": {
5
- "apiId": 819,
5
+ "apiId": 936,
6
6
  "sdkName": "Celitech",
7
- "sdkVersion": "1.1.71",
7
+ "sdkVersion": "1.1.72",
8
8
  "liblabVersion": "2",
9
9
  "deliveryMethods": ["zip"],
10
10
  "languages": ["typescript"],
11
- "apiVersion": "1.1.71",
11
+ "apiVersion": "1.1.72",
12
12
  "specFilePath": "swagger.yaml",
13
13
  "languageOptions": {
14
14
  "python": {
@@ -26,7 +26,7 @@
26
26
  "pypiPackageName": "celitech-sdk",
27
27
  "githubRepoName": "CelitechSDKPython",
28
28
  "liblabVersion": "2",
29
- "sdkVersion": "1.1.71"
29
+ "sdkVersion": "1.1.72"
30
30
  },
31
31
  "php": {
32
32
  "packageName": "celitech-sdk/sdk",
@@ -41,7 +41,8 @@
41
41
  }
42
42
  ],
43
43
  "githubRepoName": "CelitechSDKPHP",
44
- "sdkVersion": "1.1.71"
44
+ "liblabVersion": "2",
45
+ "sdkVersion": "1.1.72"
45
46
  },
46
47
  "typescript": {
47
48
  "bundle": false,
@@ -59,9 +60,8 @@
59
60
  }
60
61
  ],
61
62
  "githubRepoName": "CelitechSDKTypeScript",
62
- "ignoreFiles": [],
63
63
  "liblabVersion": "2",
64
- "sdkVersion": "1.1.71"
64
+ "sdkVersion": "1.1.72"
65
65
  }
66
66
  },
67
67
  "publishing": {
@@ -101,10 +101,10 @@
101
101
  },
102
102
  "multiTenant": true,
103
103
  "hooksLocation": {
104
- "bucketKey": "6342/hooks.zip",
104
+ "bucketKey": "6361/hooks.zip",
105
105
  "bucketName": "prod-liblab-api-stack-hooks"
106
106
  },
107
- "specUrl": "https://prod-liblab-api-stack-specs.s3.us-east-1.amazonaws.com/819/open-api-spec.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA5P3QKKDKGVNIJ2H7%2F20240723%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240723T143233Z&X-Amz-Expires=43200&X-Amz-Signature=e60e010fbb2260e633a3b6b6919d9e94ea1120bd4e68b4ff4215e5c4f959f644&X-Amz-SignedHeaders=host&x-id=GetObject",
107
+ "specUrl": "https://prod-liblab-api-stack-specs.s3.us-east-1.amazonaws.com/936/open-api-spec.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA5P3QKKDKGVNIJ2H7%2F20240724%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240724T161111Z&X-Amz-Expires=43200&X-Amz-Signature=0236628a6da6e1de7697560d1f6376f1176442f3899d75d7185d05b689f6b608&X-Amz-SignedHeaders=host&x-id=GetObject",
108
108
  "includeWatermark": false,
109
109
  "language": "typescript",
110
110
  "deliveryMethod": "zip",
@@ -127,7 +127,6 @@
127
127
  }
128
128
  ],
129
129
  "githubRepoName": "CelitechSDKTypeScript",
130
- "ignoreFiles": [],
131
130
  "typescriptVersion": "5.3.3",
132
131
  "zodVersion": "3.22.0",
133
132
  "compilerOptions": {
@@ -227,6 +226,7 @@
227
226
  "src/http/handlers/request-validation-handler.ts",
228
227
  ".devcontainer/devcontainer.json",
229
228
  "src/http/transport/request.ts",
229
+ "src/http/transport/request-builder.ts",
230
230
  "documentation/models/ListDestinationsOkResponse.md",
231
231
  "documentation/models/ListPackagesOkResponse.md",
232
232
  "documentation/models/GetEsimOkResponse.md",
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
- # Celitech TypeScript SDK 1.1.71
1
+ # Celitech TypeScript SDK 1.1.72
2
2
 
3
3
  Welcome to the Celitech SDK documentation. This guide will help you get started with integrating and using the Celitech SDK in your project.
4
4
 
5
5
  ## Versions
6
6
 
7
7
  - API version: `1.1.0`
8
- - SDK version: `1.1.71`
8
+ - SDK version: `1.1.72`
9
9
 
10
10
  ## About the API
11
11
 
@@ -87,8 +87,8 @@ import { Celitech, CreatePurchaseRequest } from 'celitech-sdk';
87
87
  email: 'example@domain.com',
88
88
  referenceId: 'abc111222333444',
89
89
  networkBrand: 'CELITECH',
90
- startTime: 2.37,
91
- endTime: 8.12,
90
+ startTime: 8.94,
91
+ endTime: 5.28,
92
92
  };
93
93
 
94
94
  const { data } = await celitech.purchases.createPurchase(input);
@@ -132,8 +132,8 @@ import { Celitech, TopUpEsimRequest } from 'celitech-sdk';
132
132
  endDate: '2023-11-20',
133
133
  email: 'example@domain.com',
134
134
  referenceId: 'abc111222333444',
135
- startTime: 8.12,
136
- endTime: 4.35,
135
+ startTime: 5.74,
136
+ endTime: 9.23,
137
137
  };
138
138
 
139
139
  const { data } = await celitech.purchases.topUpEsim(input);
@@ -174,8 +174,8 @@ import { Celitech, EditPurchaseRequest } from 'celitech-sdk';
174
174
  purchaseId: 'ae471106-c8b4-42cf-b83a-b061291f2922',
175
175
  startDate: '2023-11-01',
176
176
  endDate: '2023-11-20',
177
- startTime: 8.76,
178
- endTime: 4.68,
177
+ startTime: 1.27,
178
+ endTime: 5.18,
179
179
  };
180
180
 
181
181
  const { data } = await celitech.purchases.editPurchase(input);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Celitech",
3
- "version": "1.1.71",
3
+ "version": "1.1.72",
4
4
  "private": true,
5
5
  "dependencies": {
6
6
  "celitech-sdk": "file:../",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "celitech-sdk",
3
- "version": "1.1.71",
3
+ "version": "1.1.72",
4
4
  "description": "Welcome to the CELITECH API documentation! Useful links: [Homepage](https://www.celitech.com) | [Support email](mailto:support@celitech.com) | [Blog](https://www.celitech.com/blog/) ",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,18 +20,20 @@ export class HookHandler implements RequestHandler {
20
20
  const response = await this.next.handle(nextRequest);
21
21
 
22
22
  if (response.metadata.status < 400) {
23
- return await this.hook.afterResponse(request, response, hookParams);
23
+ return await this.hook.afterResponse(request.toHookRequest(), response, hookParams);
24
24
  }
25
25
 
26
- const error = await this.hook.onError(request, response, hookParams);
26
+ const error = await this.hook.onError(request.toHookRequest(), response, hookParams);
27
27
 
28
28
  throw new HttpError(error.metadata, error.error);
29
29
  }
30
30
 
31
31
  private async beforeRequest<T>(request: Request<T>, hookParams: Map<string, string>): Promise<Request<T>> {
32
- const hookRequest = await this.hook.beforeRequest(request, hookParams);
32
+ const hookRequest = request.toHookRequest();
33
33
 
34
- request.updateFromHookRequest(hookRequest);
34
+ const newRequest = await this.hook.beforeRequest(hookRequest, hookParams);
35
+
36
+ request.updateFromHookRequest(newRequest);
35
37
 
36
38
  return request;
37
39
  }
@@ -57,7 +57,7 @@ export class ResponseValidationHandler implements RequestHandler {
57
57
  }
58
58
 
59
59
  private validate<T>(request: Request<T>, data: any): T {
60
- if (request.config.validation?.responseValidation) {
60
+ if (request.validation?.responseValidation) {
61
61
  return request.responseSchema.parse(data);
62
62
  }
63
63
  return data;
@@ -10,15 +10,14 @@ export class RetryHandler implements RequestHandler {
10
10
  throw new Error('No next handler set in retry handler.');
11
11
  }
12
12
 
13
- const retry = request.getRetry();
14
- for (let attempt = 1; attempt <= retry.attempts; attempt++) {
13
+ for (let attempt = 1; attempt <= request.retry.attempts; attempt++) {
15
14
  try {
16
15
  return await this.next.handle(request);
17
16
  } catch (error: any) {
18
- if (!this.shouldRetry(error) || attempt === retry.attempts) {
17
+ if (!this.shouldRetry(error) || attempt === request.retry.attempts) {
19
18
  throw error;
20
19
  }
21
- await this.delay(retry.delayMs);
20
+ await this.delay(request.retry.delayMs);
22
21
  }
23
22
  }
24
23
 
@@ -29,7 +28,11 @@ export class RetryHandler implements RequestHandler {
29
28
  return error instanceof HttpError && (error.metadata.status >= 500 || error.metadata.status === 408);
30
29
  }
31
30
 
32
- private delay(delayMs: number): Promise<void> {
31
+ private delay(delayMs: number | undefined): Promise<void> {
32
+ if (!delayMs) {
33
+ return Promise.resolve();
34
+ }
35
+
33
36
  return new Promise((resolve, reject) => {
34
37
  setTimeout(() => resolve(), delayMs);
35
38
  });
@@ -1,12 +1,13 @@
1
1
  type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
2
2
 
3
3
  export interface HttpRequest {
4
+ baseUrl: string;
4
5
  method: HttpMethod;
5
6
  path: string;
6
- headers?: Map<string, unknown>;
7
+ headers: Map<string, unknown>;
7
8
  body?: BodyInit;
8
9
  abortSignal?: AbortSignal;
9
- queryParams?: Map<string, unknown>;
10
+ queryParams: Map<string, unknown>;
10
11
  }
11
12
 
12
13
  interface HttpMetadata {
@@ -25,7 +25,7 @@ export function serializeQuery(
25
25
  _style = SerializationStyle.FORM,
26
26
  explode = true,
27
27
  ): string {
28
- if (!queryParams || !Object.entries(queryParams)) {
28
+ if (!queryParams || !Object.entries(queryParams).length) {
29
29
  return '';
30
30
  }
31
31
 
@@ -58,9 +58,12 @@ export function serializeQuery(
58
58
  return `?${query}`;
59
59
  }
60
60
 
61
- export function serializeHeader(headers?: Record<string, unknown>, explode = false): Record<string, string> {
62
- if (!headers) {
63
- return {};
61
+ export function serializeHeader(
62
+ headers?: Record<string, unknown>,
63
+ explode = false,
64
+ ): Record<string, string> | undefined {
65
+ if (!headers || !Object.entries(headers).length) {
66
+ return undefined;
64
67
  }
65
68
 
66
69
  return Object.entries(headers).reduce((acc, [key, value]) => {
@@ -0,0 +1,145 @@
1
+ import z, { ZodType } from 'zod';
2
+ import { Request, CreateRequestParameters } from './request';
3
+ import { ContentType, HttpMethod, SdkConfig, RequestConfig, RetryOptions, ValidationOptions } from '../types';
4
+ import { Environment } from '../environment';
5
+
6
+ export class RequestBuilder<T> {
7
+ private params: CreateRequestParameters<T>;
8
+
9
+ constructor() {
10
+ this.params = {
11
+ baseUrl: Environment.DEFAULT,
12
+ method: 'GET',
13
+ path: '',
14
+ config: {},
15
+ responseSchema: z.any(),
16
+ requestSchema: z.any(),
17
+ requestContentType: ContentType.Json,
18
+ responseContentType: ContentType.Json,
19
+ retry: {
20
+ attempts: 3,
21
+ delayMs: 150,
22
+ },
23
+ validation: {
24
+ responseValidation: true,
25
+ },
26
+ pathParams: new Map(),
27
+ queryParams: new Map(),
28
+ headers: new Map(),
29
+ };
30
+ }
31
+
32
+ setRetryAttempts(sdkConfig?: SdkConfig, requestConfig?: RequestConfig): RequestBuilder<T> {
33
+ if (requestConfig?.retry?.attempts !== undefined) {
34
+ this.params.retry.attempts = requestConfig.retry.attempts;
35
+ } else if (sdkConfig?.retry?.attempts !== undefined) {
36
+ this.params.retry.attempts = sdkConfig.retry.attempts;
37
+ }
38
+
39
+ return this;
40
+ }
41
+
42
+ setRetryDelayMs(sdkConfig?: SdkConfig, requestConfig?: RequestConfig): RequestBuilder<T> {
43
+ if (requestConfig?.retry?.delayMs !== undefined) {
44
+ this.params.retry.delayMs = requestConfig.retry.delayMs;
45
+ } else if (sdkConfig?.retry?.delayMs !== undefined) {
46
+ this.params.retry.delayMs = sdkConfig.retry.delayMs;
47
+ }
48
+
49
+ return this;
50
+ }
51
+
52
+ setResponseValidation(sdkConfig: SdkConfig, requestConfig?: RequestConfig): RequestBuilder<T> {
53
+ if (requestConfig?.validation?.responseValidation !== undefined) {
54
+ this.params.validation.responseValidation = requestConfig.validation.responseValidation;
55
+ } else if (sdkConfig?.validation?.responseValidation !== undefined) {
56
+ this.params.validation.responseValidation = sdkConfig.validation.responseValidation;
57
+ }
58
+
59
+ return this;
60
+ }
61
+
62
+ setBaseUrl(sdkConfig: SdkConfig): RequestBuilder<T> {
63
+ if (sdkConfig?.baseUrl !== undefined) {
64
+ this.params.baseUrl = sdkConfig.baseUrl;
65
+ }
66
+
67
+ return this;
68
+ }
69
+
70
+ setMethod(method: HttpMethod): RequestBuilder<T> {
71
+ this.params.method = method;
72
+ return this;
73
+ }
74
+
75
+ setPath(path: string): RequestBuilder<T> {
76
+ this.params.path = path;
77
+ return this;
78
+ }
79
+
80
+ setConfig(config: SdkConfig): RequestBuilder<T> {
81
+ this.params.config = config;
82
+ return this;
83
+ }
84
+
85
+ setRequestContentType(contentType: ContentType): RequestBuilder<T> {
86
+ this.params.requestContentType = contentType;
87
+ return this;
88
+ }
89
+
90
+ setResponseContentType(contentType: ContentType): RequestBuilder<T> {
91
+ this.params.responseContentType = contentType;
92
+ return this;
93
+ }
94
+
95
+ setRequestSchema(requestSchema: ZodType): RequestBuilder<T> {
96
+ this.params.requestSchema = requestSchema;
97
+ return this;
98
+ }
99
+
100
+ setResponseSchema(responseSchema: ZodType): RequestBuilder<T> {
101
+ this.params.responseSchema = responseSchema;
102
+ return this;
103
+ }
104
+
105
+ addBody(body?: any): RequestBuilder<T> {
106
+ if (body !== undefined) {
107
+ this.params.body = body;
108
+ }
109
+ return this;
110
+ }
111
+
112
+ addPathParam(key: string, value: unknown): RequestBuilder<T> {
113
+ if (value === undefined) {
114
+ return this;
115
+ }
116
+
117
+ this.params.pathParams.set(key, value);
118
+
119
+ return this;
120
+ }
121
+
122
+ addQueryParam(key: string, value: unknown): RequestBuilder<T> {
123
+ if (value === undefined) {
124
+ return this;
125
+ }
126
+
127
+ this.params.queryParams.set(key, value);
128
+
129
+ return this;
130
+ }
131
+
132
+ addHeaderParam(key: string, value: unknown): RequestBuilder<T> {
133
+ if (value === undefined) {
134
+ return this;
135
+ }
136
+
137
+ this.params.headers.set(key, value);
138
+
139
+ return this;
140
+ }
141
+
142
+ public build(): Request<T> {
143
+ return new Request<T>(this.params);
144
+ }
145
+ }
@@ -1,21 +1,28 @@
1
1
  import { ZodType } from 'zod';
2
- import { ContentType, HttpMethod, SdkConfig, RetryOptions, RequestConfig } from '../types';
2
+ import { ContentType, HttpMethod, SdkConfig, RetryOptions, RequestConfig, ValidationOptions } from '../types';
3
3
  import { serializeHeader, serializePath, serializeQuery } from '../serializer';
4
4
  import { HttpRequest } from '../hooks/hook';
5
5
 
6
- interface CreateRequestParameters<T> {
6
+ export interface CreateRequestParameters<T> {
7
+ baseUrl: string;
7
8
  method: HttpMethod;
8
9
  body?: any;
10
+ headers: Map<string, unknown>;
11
+ queryParams: Map<string, unknown>;
12
+ pathParams: Map<string, unknown>;
9
13
  path: string;
10
14
  config: SdkConfig;
11
15
  responseSchema: ZodType<T, any, any>;
12
16
  requestSchema: ZodType;
13
17
  requestContentType: ContentType;
14
18
  responseContentType: ContentType;
15
- requestConfig?: RequestConfig;
19
+ validation: ValidationOptions;
20
+ retry: RetryOptions;
16
21
  }
17
22
 
18
23
  export class Request<T> {
24
+ public baseUrl: string = '';
25
+
19
26
  public headers: Map<string, unknown> = new Map();
20
27
 
21
28
  public queryParams: Map<string, unknown> = new Map();
@@ -40,23 +47,33 @@ export class Request<T> {
40
47
 
41
48
  private readonly pathPattern: string;
42
49
 
50
+ public validation: ValidationOptions = {} as any;
51
+
52
+ public retry: RetryOptions = {} as any;
53
+
43
54
  constructor(params: CreateRequestParameters<T>) {
55
+ this.baseUrl = params.baseUrl;
44
56
  this.method = params.method;
45
57
  this.pathPattern = params.path;
46
58
  this.body = params.body;
47
59
  this.path = this.constructPath();
48
60
  this.config = params.config;
61
+ this.pathParams = params.pathParams;
62
+ this.headers = params.headers;
63
+ this.queryParams = params.queryParams;
49
64
  this.responseSchema = params.responseSchema;
50
65
  this.requestSchema = params.requestSchema;
51
66
  this.requestContentType = params.requestContentType;
52
67
  this.responseContentType = params.responseContentType;
53
- this.applyRequestConfig(params.requestConfig);
68
+ this.retry = params.retry;
69
+ this.validation = params.validation;
54
70
  }
55
71
 
56
72
  addHeaderParam(key: string, value: unknown): void {
57
73
  if (value === undefined) {
58
74
  return;
59
75
  }
76
+
60
77
  this.headers.set(key, value);
61
78
  }
62
79
 
@@ -64,6 +81,7 @@ export class Request<T> {
64
81
  if (value === undefined) {
65
82
  return;
66
83
  }
84
+
67
85
  this.queryParams.set(key, value);
68
86
  }
69
87
 
@@ -71,6 +89,7 @@ export class Request<T> {
71
89
  if (value === undefined) {
72
90
  return;
73
91
  }
92
+
74
93
  this.pathParams.set(key, value);
75
94
  }
76
95
 
@@ -78,14 +97,8 @@ export class Request<T> {
78
97
  if (body === undefined) {
79
98
  return;
80
99
  }
81
- this.body = body;
82
- }
83
100
 
84
- getRetry(): Required<RetryOptions> {
85
- return {
86
- attempts: this.config.retry?.attempts ?? 3,
87
- delayMs: this.config.retry?.delayMs ?? 150,
88
- };
101
+ this.body = body;
89
102
  }
90
103
 
91
104
  getFetchArgs(): { url: string; requestInit: RequestInit } {
@@ -94,10 +107,14 @@ export class Request<T> {
94
107
  requestInit: {
95
108
  method: this.method,
96
109
  body: this.body,
97
- headers: this.constructHeadersInit(),
98
110
  },
99
111
  };
100
112
 
113
+ const headersInit = this.constructHeadersInit();
114
+ if (!!headersInit) {
115
+ fetchArgs.requestInit['headers'] = headersInit;
116
+ }
117
+
101
118
  if (this.config.timeout !== undefined) {
102
119
  fetchArgs.requestInit = {
103
120
  ...fetchArgs.requestInit,
@@ -109,39 +126,28 @@ export class Request<T> {
109
126
  }
110
127
 
111
128
  public updateFromHookRequest(hookRequest: HttpRequest) {
129
+ this.baseUrl = hookRequest.baseUrl;
112
130
  this.method = hookRequest.method;
113
131
  this.path = hookRequest.path;
114
132
  this.body = hookRequest.body;
115
- this.headers = hookRequest.headers || new Map();
116
- this.queryParams = hookRequest.queryParams || new Map();
133
+ this.headers = hookRequest.headers;
134
+ this.queryParams = hookRequest.queryParams;
117
135
  }
118
136
 
119
- private applyRequestConfig(requestConfig: RequestConfig | undefined) {
120
- this.config = {
121
- ...this.config,
122
- retry: {
123
- attempts: requestConfig?.retry?.attempts || this.config.retry?.attempts || 3,
124
- delayMs: requestConfig?.retry?.delayMs || this.config.retry?.delayMs || 150,
125
- },
126
- validation: {
127
- responseValidation: this.applyResponseValidation(requestConfig),
128
- },
137
+ public toHookRequest(): HttpRequest {
138
+ return {
139
+ baseUrl: this.baseUrl,
140
+ method: this.method,
141
+ path: this.path,
142
+ headers: this.headers,
143
+ body: this.body,
144
+ queryParams: this.queryParams,
129
145
  };
130
146
  }
131
147
 
132
- private applyResponseValidation(requestConfig: RequestConfig | undefined): boolean {
133
- if (requestConfig?.validation?.responseValidation !== undefined) {
134
- return requestConfig?.validation.responseValidation;
135
- }
136
- if (this.config?.validation?.responseValidation !== undefined) {
137
- return this.config?.validation?.responseValidation;
138
- }
139
- return true;
140
- }
141
-
142
148
  private constructFullUrl(): string {
143
149
  const queryString = this.constructQueryString();
144
- return `${this.config.baseUrl}${this.constructPath()}${queryString}`;
150
+ return `${this.baseUrl}${this.constructPath()}${queryString}`;
145
151
  }
146
152
 
147
153
  private constructPath(): string {
@@ -149,8 +155,11 @@ export class Request<T> {
149
155
  return serializePath(this.pathPattern, pathParamsRecord);
150
156
  }
151
157
 
152
- private constructHeadersInit(): HeadersInit {
158
+ private constructHeadersInit(): HeadersInit | undefined {
153
159
  const headerParamsRecord: Record<string, unknown> = this.constructParamsRecord(this.headers);
160
+ if (Object.entries(headerParamsRecord).length === 0) {
161
+ return undefined;
162
+ }
154
163
  return serializeHeader(headerParamsRecord);
155
164
  }
156
165
 
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { BaseService } from '../base-service';
3
3
  import { ContentType, HttpResponse } from '../../http';
4
4
  import { RequestConfig } from '../../http/types';
5
- import { Request } from '../../http/transport/request';
5
+ import { RequestBuilder } from '../../http/transport/request-builder';
6
6
  import { ListDestinationsOkResponse, listDestinationsOkResponseResponse } from './models/list-destinations-ok-response';
7
7
 
8
8
  export class DestinationsService extends BaseService {
@@ -11,16 +11,19 @@ export class DestinationsService extends BaseService {
11
11
  * @returns {Promise<HttpResponse<ListDestinationsOkResponse>>} Successful Response
12
12
  */
13
13
  async listDestinations(requestConfig?: RequestConfig): Promise<HttpResponse<ListDestinationsOkResponse>> {
14
- const request = new Request({
15
- method: 'GET',
16
- path: '/destinations',
17
- config: this.config,
18
- responseSchema: listDestinationsOkResponseResponse,
19
- requestSchema: z.any(),
20
- requestContentType: ContentType.Json,
21
- responseContentType: ContentType.Json,
22
- requestConfig,
23
- });
14
+ const request = new RequestBuilder<ListDestinationsOkResponse>()
15
+ .setConfig(this.config)
16
+ .setBaseUrl(this.config)
17
+ .setMethod('GET')
18
+ .setPath('/destinations')
19
+ .setRequestSchema(z.any())
20
+ .setResponseSchema(listDestinationsOkResponseResponse)
21
+ .setRequestContentType(ContentType.Json)
22
+ .setResponseContentType(ContentType.Json)
23
+ .setRetryAttempts(this.config, requestConfig)
24
+ .setRetryDelayMs(this.config, requestConfig)
25
+ .setResponseValidation(this.config, requestConfig)
26
+ .build();
24
27
  return this.client.call<ListDestinationsOkResponse>(request);
25
28
  }
26
29
  }
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  /**
4
4
  * The shape of the model inside the application code - what the users use
5
5
  */
6
- export const destinations: any = z.lazy(() => {
6
+ export const destinations = z.lazy(() => {
7
7
  return z.object({
8
8
  name: z.string().optional(),
9
9
  destination: z.string().optional(),
@@ -24,7 +24,7 @@ export type Destinations = z.infer<typeof destinations>;
24
24
  * The shape of the model mapping from the api schema into the application shape.
25
25
  * Is equal to application shape if all property names match the api schema
26
26
  */
27
- export const destinationsResponse: any = z.lazy(() => {
27
+ export const destinationsResponse = z.lazy(() => {
28
28
  return z
29
29
  .object({
30
30
  name: z.string().optional(),
@@ -42,7 +42,7 @@ export const destinationsResponse: any = z.lazy(() => {
42
42
  * The shape of the model mapping from the application shape into the api schema.
43
43
  * Is equal to application shape if all property names match the api schema
44
44
  */
45
- export const destinationsRequest: any = z.lazy(() => {
45
+ export const destinationsRequest = z.lazy(() => {
46
46
  return z
47
47
  .object({
48
48
  name: z.string().nullish(),
@@ -4,7 +4,7 @@ import { destinations, destinationsRequest, destinationsResponse } from './desti
4
4
  /**
5
5
  * The shape of the model inside the application code - what the users use
6
6
  */
7
- export const listDestinationsOkResponse: any = z.lazy(() => {
7
+ export const listDestinationsOkResponse = z.lazy(() => {
8
8
  return z.object({
9
9
  destinations: z.array(destinations).optional(),
10
10
  });
@@ -21,7 +21,7 @@ export type ListDestinationsOkResponse = z.infer<typeof listDestinationsOkRespon
21
21
  * The shape of the model mapping from the api schema into the application shape.
22
22
  * Is equal to application shape if all property names match the api schema
23
23
  */
24
- export const listDestinationsOkResponseResponse: any = z.lazy(() => {
24
+ export const listDestinationsOkResponseResponse = z.lazy(() => {
25
25
  return z
26
26
  .object({
27
27
  destinations: z.array(destinationsResponse).optional(),
@@ -35,7 +35,7 @@ export const listDestinationsOkResponseResponse: any = z.lazy(() => {
35
35
  * The shape of the model mapping from the application shape into the api schema.
36
36
  * Is equal to application shape if all property names match the api schema
37
37
  */
38
- export const listDestinationsOkResponseRequest: any = z.lazy(() => {
38
+ export const listDestinationsOkResponseRequest = z.lazy(() => {
39
39
  return z.object({ destinations: z.array(destinationsRequest).nullish() }).transform((data) => ({
40
40
  destinations: data['destinations'],
41
41
  }));