retell-sdk 2.2.3 → 2.2.6

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 (184) hide show
  1. package/example.js +48 -5
  2. package/example.js.map +1 -1
  3. package/lib/config.d.ts.map +1 -1
  4. package/lib/config.js.map +1 -1
  5. package/lib/sdks.d.ts.map +1 -1
  6. package/lib/sdks.js.map +1 -1
  7. package/lib/security.d.ts.map +1 -1
  8. package/lib/security.js +5 -1
  9. package/lib/security.js.map +1 -1
  10. package/models/components/agent.d.ts +3 -205
  11. package/models/components/agent.d.ts.map +1 -1
  12. package/models/components/agent.js +5 -187
  13. package/models/components/agent.js.map +1 -1
  14. package/models/components/agentpromptparams.d.ts.map +1 -1
  15. package/models/components/agentpromptparams.js.map +1 -1
  16. package/models/components/calldetail.d.ts +33 -22
  17. package/models/components/calldetail.d.ts.map +1 -1
  18. package/models/components/calldetail.js +44 -31
  19. package/models/components/calldetail.js.map +1 -1
  20. package/models/components/callphonenumber.d.ts.map +1 -1
  21. package/models/components/callphonenumber.js.map +1 -1
  22. package/models/components/index.d.ts +0 -3
  23. package/models/components/index.d.ts.map +1 -1
  24. package/models/components/index.js +0 -3
  25. package/models/components/index.js.map +1 -1
  26. package/models/components/phonenumber.d.ts.map +1 -1
  27. package/models/components/phonenumber.js.map +1 -1
  28. package/models/components/security.d.ts.map +1 -1
  29. package/models/errors/createagent.d.ts.map +1 -1
  30. package/models/errors/createagent.js +36 -12
  31. package/models/errors/createagent.js.map +1 -1
  32. package/models/errors/createphonecall.d.ts.map +1 -1
  33. package/models/errors/createphonecall.js +54 -18
  34. package/models/errors/createphonecall.js.map +1 -1
  35. package/models/errors/createphonenumber.d.ts.map +1 -1
  36. package/models/errors/createphonenumber.js +42 -14
  37. package/models/errors/createphonenumber.js.map +1 -1
  38. package/models/errors/deleteagent.d.ts.map +1 -1
  39. package/models/errors/deleteagent.js +36 -12
  40. package/models/errors/deleteagent.js.map +1 -1
  41. package/models/errors/deletephonenumber.d.ts.map +1 -1
  42. package/models/errors/deletephonenumber.js +33 -11
  43. package/models/errors/deletephonenumber.js.map +1 -1
  44. package/models/errors/getagent.d.ts.map +1 -1
  45. package/models/errors/getagent.js +36 -12
  46. package/models/errors/getagent.js.map +1 -1
  47. package/models/errors/getcall.d.ts.map +1 -1
  48. package/models/errors/getcall.js +30 -10
  49. package/models/errors/getcall.js.map +1 -1
  50. package/models/errors/getphonenumber.d.ts.map +1 -1
  51. package/models/errors/getphonenumber.js +36 -12
  52. package/models/errors/getphonenumber.js.map +1 -1
  53. package/models/errors/index.d.ts +1 -6
  54. package/models/errors/index.d.ts.map +1 -1
  55. package/models/errors/index.js +1 -6
  56. package/models/errors/index.js.map +1 -1
  57. package/models/errors/listagents.d.ts.map +1 -1
  58. package/models/errors/listagents.js +15 -5
  59. package/models/errors/listagents.js.map +1 -1
  60. package/models/errors/listcalls.d.ts.map +1 -1
  61. package/models/errors/listcalls.js +24 -8
  62. package/models/errors/listcalls.js.map +1 -1
  63. package/models/errors/listphonenumbers.d.ts.map +1 -1
  64. package/models/errors/listphonenumbers.js +27 -9
  65. package/models/errors/listphonenumbers.js.map +1 -1
  66. package/models/errors/registercall.d.ts +218 -0
  67. package/models/errors/registercall.d.ts.map +1 -0
  68. package/models/errors/registercall.js +386 -0
  69. package/models/errors/registercall.js.map +1 -0
  70. package/models/errors/updateagent.d.ts.map +1 -1
  71. package/models/errors/updateagent.js +36 -12
  72. package/models/errors/updateagent.js.map +1 -1
  73. package/models/errors/updatephoneagent.d.ts.map +1 -1
  74. package/models/errors/updatephoneagent.js +36 -12
  75. package/models/errors/updatephoneagent.js.map +1 -1
  76. package/models/operations/createagent.d.ts +3 -16
  77. package/models/operations/createagent.d.ts.map +1 -1
  78. package/models/operations/createagent.js +4 -12
  79. package/models/operations/createagent.js.map +1 -1
  80. package/models/operations/createphonecall.d.ts.map +1 -1
  81. package/models/operations/createphonecall.js +18 -6
  82. package/models/operations/createphonecall.js.map +1 -1
  83. package/models/operations/createphonenumber.d.ts.map +1 -1
  84. package/models/operations/createphonenumber.js +6 -2
  85. package/models/operations/createphonenumber.js.map +1 -1
  86. package/models/operations/createwebcall.d.ts.map +1 -1
  87. package/models/operations/deleteagent.d.ts.map +1 -1
  88. package/models/operations/deleteagent.js.map +1 -1
  89. package/models/operations/deletephonenumber.d.ts.map +1 -1
  90. package/models/operations/deletephonenumber.js.map +1 -1
  91. package/models/operations/getagent.d.ts.map +1 -1
  92. package/models/operations/getagent.js.map +1 -1
  93. package/models/operations/getcall.d.ts +1 -1
  94. package/models/operations/getcall.d.ts.map +1 -1
  95. package/models/operations/getcall.js.map +1 -1
  96. package/models/operations/getphonenumber.d.ts.map +1 -1
  97. package/models/operations/getphonenumber.js +6 -2
  98. package/models/operations/getphonenumber.js.map +1 -1
  99. package/models/operations/index.d.ts +1 -7
  100. package/models/operations/index.d.ts.map +1 -1
  101. package/models/operations/index.js +1 -7
  102. package/models/operations/index.js.map +1 -1
  103. package/models/operations/listagents.d.ts.map +1 -1
  104. package/models/operations/listagents.js.map +1 -1
  105. package/models/operations/listcalls.d.ts +1 -7
  106. package/models/operations/listcalls.d.ts.map +1 -1
  107. package/models/operations/listcalls.js +6 -6
  108. package/models/operations/listcalls.js.map +1 -1
  109. package/models/operations/listphonenumbers.d.ts.map +1 -1
  110. package/models/operations/listphonenumbers.js +6 -2
  111. package/models/operations/listphonenumbers.js.map +1 -1
  112. package/models/operations/registercall.d.ts +74 -0
  113. package/models/operations/registercall.d.ts.map +1 -0
  114. package/models/operations/registercall.js +104 -0
  115. package/models/operations/registercall.js.map +1 -0
  116. package/models/operations/updateagent.d.ts +3 -16
  117. package/models/operations/updateagent.d.ts.map +1 -1
  118. package/models/operations/updateagent.js +9 -13
  119. package/models/operations/updateagent.js.map +1 -1
  120. package/models/operations/updatephoneagent.d.ts.map +1 -1
  121. package/models/operations/updatephoneagent.js +6 -2
  122. package/models/operations/updatephoneagent.js.map +1 -1
  123. package/package.json +1 -1
  124. package/sdk/audioWsClient.d.ts +10 -0
  125. package/sdk/audioWsClient.d.ts.map +1 -0
  126. package/sdk/audioWsClient.js +60 -0
  127. package/sdk/audioWsClient.js.map +1 -0
  128. package/sdk/index.d.ts +1 -1
  129. package/sdk/index.d.ts.map +1 -1
  130. package/sdk/index.js +1 -1
  131. package/sdk/index.js.map +1 -1
  132. package/sdk/liveClient.d.ts.map +1 -1
  133. package/sdk/liveClient.js +7 -2
  134. package/sdk/liveClient.js.map +1 -1
  135. package/sdk/sdk.d.ts +1 -23
  136. package/sdk/sdk.d.ts.map +1 -1
  137. package/sdk/sdk.js +21 -430
  138. package/sdk/sdk.js.map +1 -1
  139. package/src/example.ts +136 -88
  140. package/src/lib/config.ts +32 -32
  141. package/src/lib/sdks.ts +91 -82
  142. package/src/lib/security.ts +133 -118
  143. package/src/models/components/agent.ts +71 -451
  144. package/src/models/components/calldetail.ts +147 -130
  145. package/src/models/components/index.ts +0 -3
  146. package/src/models/components/security.ts +1 -1
  147. package/src/models/errors/createagent.ts +359 -311
  148. package/src/models/errors/deleteagent.ts +359 -311
  149. package/src/models/errors/getagent.ts +358 -302
  150. package/src/models/errors/getcall.ts +348 -294
  151. package/src/models/errors/index.ts +1 -6
  152. package/src/models/errors/listagents.ts +174 -147
  153. package/src/models/errors/listcalls.ts +251 -211
  154. package/src/models/errors/registercall.ts +662 -0
  155. package/src/models/errors/updateagent.ts +359 -311
  156. package/src/models/operations/createagent.ts +124 -130
  157. package/src/models/operations/deleteagent.ts +94 -78
  158. package/src/models/operations/getagent.ts +104 -88
  159. package/src/models/operations/getcall.ts +101 -88
  160. package/src/models/operations/index.ts +1 -7
  161. package/src/models/operations/listagents.ts +68 -60
  162. package/src/models/operations/listcalls.ts +228 -213
  163. package/src/models/operations/registercall.ts +167 -0
  164. package/src/models/operations/updateagent.ts +180 -174
  165. package/src/sdk/audioWsClient.ts +63 -0
  166. package/src/sdk/index.ts +1 -1
  167. package/src/sdk/sdk.ts +802 -1162
  168. package/src/models/components/agentpromptparams.ts +0 -53
  169. package/src/models/components/callphonenumber.ts +0 -56
  170. package/src/models/components/phonenumber.ts +0 -83
  171. package/src/models/errors/createphonecall.ts +0 -597
  172. package/src/models/errors/createphonenumber.ts +0 -500
  173. package/src/models/errors/deletephonenumber.ts +0 -400
  174. package/src/models/errors/getphonenumber.ts +0 -397
  175. package/src/models/errors/listphonenumbers.ts +0 -297
  176. package/src/models/errors/updatephoneagent.ts +0 -397
  177. package/src/models/operations/createphonecall.ts +0 -308
  178. package/src/models/operations/createphonenumber.ts +0 -124
  179. package/src/models/operations/createwebcall.ts +0 -16
  180. package/src/models/operations/deletephonenumber.ts +0 -103
  181. package/src/models/operations/getphonenumber.ts +0 -114
  182. package/src/models/operations/listphonenumbers.ts +0 -76
  183. package/src/models/operations/updatephoneagent.ts +0 -159
  184. package/src/sdk/liveClient.ts +0 -109
package/src/lib/sdks.ts CHANGED
@@ -2,106 +2,115 @@
2
2
  * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
3
3
  */
4
4
 
5
- import { HTTPClient, matchResponse, matchStatusCode, unpackHeaders } from "./http";
6
- import { SecurityState, resolveSecurity, resolveGlobalSecurity } from "./security";
5
+ import {
6
+ HTTPClient,
7
+ matchResponse,
8
+ matchStatusCode,
9
+ unpackHeaders,
10
+ } from "./http";
11
+ import {
12
+ SecurityState,
13
+ resolveSecurity,
14
+ resolveGlobalSecurity,
15
+ } from "./security";
7
16
  import { pathToFunc } from "./url";
8
17
  import { encodeForm } from "./encodings";
9
18
  import { stringToBase64 } from "./base64";
10
19
 
11
20
  export type RequestOptions = {
12
- fetchOptions?: Omit<RequestInit, "method" | "body">;
21
+ fetchOptions?: Omit<RequestInit, "method" | "body">;
13
22
  };
14
23
 
15
24
  type RequestConfig = {
16
- method: string;
17
- path: string;
18
- baseURL?: string | URL;
19
- query?: string;
20
- body?: RequestInit["body"];
21
- headers?: HeadersInit;
22
- security?: SecurityState | null;
25
+ method: string;
26
+ path: string;
27
+ baseURL?: string | URL;
28
+ query?: string;
29
+ body?: RequestInit["body"];
30
+ headers?: HeadersInit;
31
+ security?: SecurityState | null;
23
32
  };
24
33
 
25
34
  export class ClientSDK {
26
- readonly #client: HTTPClient;
27
- protected readonly baseURL: URL;
35
+ readonly #client: HTTPClient;
36
+ protected readonly baseURL: URL;
28
37
 
29
- constructor(init: { client: HTTPClient; baseURL: URL }) {
30
- const url = init.baseURL;
31
- url.pathname = url.pathname.replace(/\/+$/, "") + "/";
38
+ constructor(init: { client: HTTPClient; baseURL: URL }) {
39
+ const url = init.baseURL;
40
+ url.pathname = url.pathname.replace(/\/+$/, "") + "/";
32
41
 
33
- this.#client = init.client;
34
- this.baseURL = url;
42
+ this.#client = init.client;
43
+ this.baseURL = url;
44
+ }
45
+
46
+ protected async fetch$(conf: RequestConfig, options?: RequestOptions) {
47
+ const { method, path, query, headers: opHeaders, security } = conf;
48
+
49
+ const reqURL = new URL(conf.baseURL ?? this.baseURL);
50
+ const inputURL = new URL(path, reqURL);
51
+
52
+ if (path) {
53
+ reqURL.pathname += inputURL.pathname.replace(/^\/+/, "");
54
+ }
55
+
56
+ let finalQuery = query || "";
57
+
58
+ const secQuery: string[] = [];
59
+ for (const [k, v] of Object.entries(security?.queryParams || {})) {
60
+ secQuery.push(encodeForm(k, v, { charEncoding: "percent" }));
61
+ }
62
+ if (secQuery.length) {
63
+ finalQuery += `&${secQuery.join("&")}`;
64
+ }
65
+
66
+ if (finalQuery) {
67
+ const q = finalQuery.startsWith("&") ? finalQuery.slice(1) : finalQuery;
68
+ reqURL.search = `?${q}`;
35
69
  }
36
70
 
37
- protected async fetch$(conf: RequestConfig, options?: RequestOptions) {
38
- const { method, path, query, headers: opHeaders, security } = conf;
39
-
40
- const reqURL = new URL(conf.baseURL ?? this.baseURL);
41
- const inputURL = new URL(path, reqURL);
42
-
43
- if (path) {
44
- reqURL.pathname += inputURL.pathname.replace(/^\/+/, "");
45
- }
46
-
47
- let finalQuery = query || "";
48
-
49
- const secQuery: string[] = [];
50
- for (const [k, v] of Object.entries(security?.queryParams || {})) {
51
- secQuery.push(encodeForm(k, v, { charEncoding: "percent" }));
52
- }
53
- if (secQuery.length) {
54
- finalQuery += `&${secQuery.join("&")}`;
55
- }
56
-
57
- if (finalQuery) {
58
- const q = finalQuery.startsWith("&") ? finalQuery.slice(1) : finalQuery;
59
- reqURL.search = `?${q}`;
60
- }
61
-
62
- const headers = new Headers(opHeaders);
63
-
64
- const username = security?.basic.username || "";
65
- const password = security?.basic.password || "";
66
- if (username) {
67
- const encoded = stringToBase64([username, password].join(":"));
68
- headers.set("Authorization", `Basic ${encoded}`);
69
- }
70
-
71
- const securityHeaders = new Headers(security?.headers || {});
72
- for (const [k, v] of securityHeaders) {
73
- headers.set(k, v);
74
- }
75
-
76
- let cookie = headers.get("cookie") || "";
77
- for (const [k, v] of Object.entries(security?.cookies || {})) {
78
- cookie += `; ${k}=${v}`;
79
- }
80
- cookie = cookie.startsWith("; ") ? cookie.slice(2) : cookie;
81
- headers.set("cookie", cookie);
82
-
83
- const userHeaders = new Headers(options?.fetchOptions?.headers);
84
- for (const [k, v] of userHeaders) {
85
- headers.set(k, v);
86
- }
87
-
88
- const req = new Request(reqURL, {
89
- ...options?.fetchOptions,
90
- body: conf.body ?? null,
91
- headers,
92
- method,
93
- });
94
-
95
- return this.#client.request(req);
71
+ const headers = new Headers(opHeaders);
72
+
73
+ const username = security?.basic.username || "";
74
+ const password = security?.basic.password || "";
75
+ if (username) {
76
+ const encoded = stringToBase64([username, password].join(":"));
77
+ headers.set("Authorization", `Basic ${encoded}`);
78
+ }
79
+
80
+ const securityHeaders = new Headers(security?.headers || {});
81
+ for (const [k, v] of securityHeaders) {
82
+ headers.set(k, v);
83
+ }
84
+
85
+ let cookie = headers.get("cookie") || "";
86
+ for (const [k, v] of Object.entries(security?.cookies || {})) {
87
+ cookie += `; ${k}=${v}`;
96
88
  }
89
+ cookie = cookie.startsWith("; ") ? cookie.slice(2) : cookie;
90
+ headers.set("cookie", cookie);
91
+
92
+ const userHeaders = new Headers(options?.fetchOptions?.headers);
93
+ for (const [k, v] of userHeaders) {
94
+ headers.set(k, v);
95
+ }
96
+
97
+ const req = new Request(reqURL, {
98
+ ...options?.fetchOptions,
99
+ body: conf.body ?? null,
100
+ headers,
101
+ method,
102
+ });
103
+
104
+ return this.#client.request(req);
105
+ }
97
106
 
98
- protected unpackHeaders = unpackHeaders;
107
+ protected unpackHeaders = unpackHeaders;
99
108
 
100
- protected matchStatusCode = matchStatusCode;
101
- protected matchResponse = matchResponse;
109
+ protected matchStatusCode = matchStatusCode;
110
+ protected matchResponse = matchResponse;
102
111
 
103
- protected templateURLComponent = pathToFunc;
112
+ protected templateURLComponent = pathToFunc;
104
113
 
105
- protected resolveSecurity = resolveSecurity;
106
- protected resolveGlobalSecurity = resolveGlobalSecurity;
114
+ protected resolveSecurity = resolveSecurity;
115
+ protected resolveGlobalSecurity = resolveGlobalSecurity;
107
116
  }
@@ -5,160 +5,175 @@
5
5
  import * as components from "../models/components";
6
6
 
7
7
  export enum SecurityErrorCode {
8
- Incomplete = "incomplete",
9
- UnrecognisedSecurityType = "unrecognized_security_type",
8
+ Incomplete = "incomplete",
9
+ UnrecognisedSecurityType = "unrecognized_security_type",
10
10
  }
11
11
 
12
12
  export class SecurityError extends Error {
13
- constructor(public code: SecurityErrorCode, message: string, options?: ErrorOptions) {
14
- super(message, options);
15
- this.name = "SecurityError";
16
- }
17
-
18
- static incomplete(): SecurityError {
19
- return new SecurityError(
20
- SecurityErrorCode.Incomplete,
21
- "Security requirements not met in order to perform the operation"
22
- );
23
- }
24
- static unrecognizedType(type: string): SecurityError {
25
- return new SecurityError(
26
- SecurityErrorCode.UnrecognisedSecurityType,
27
- `Unrecognised security type: ${type}`
28
- );
29
- }
13
+ constructor(
14
+ public code: SecurityErrorCode,
15
+ message: string,
16
+ options?: ErrorOptions,
17
+ ) {
18
+ super(message, options);
19
+ this.name = "SecurityError";
20
+ }
21
+
22
+ static incomplete(): SecurityError {
23
+ return new SecurityError(
24
+ SecurityErrorCode.Incomplete,
25
+ "Security requirements not met in order to perform the operation",
26
+ );
27
+ }
28
+ static unrecognizedType(type: string): SecurityError {
29
+ return new SecurityError(
30
+ SecurityErrorCode.UnrecognisedSecurityType,
31
+ `Unrecognised security type: ${type}`,
32
+ );
33
+ }
30
34
  }
31
35
 
32
36
  export type SecurityState = {
33
- basic: { username: string; password?: string };
34
- headers: Record<string, string>;
35
- queryParams: Record<string, string>;
36
- cookies: Record<string, string>;
37
+ basic: { username: string; password?: string };
38
+ headers: Record<string, string>;
39
+ queryParams: Record<string, string>;
40
+ cookies: Record<string, string>;
37
41
  };
38
42
 
39
43
  type SecurityInputBasicPacked = {
40
- type: "http:basic";
41
- value: { username: string; password?: string } | null | undefined;
44
+ type: "http:basic";
45
+ value: { username: string; password?: string } | null | undefined;
42
46
  };
43
47
 
44
48
  type SecurityInputBasic = {
45
- type: "http:basic";
46
- value: string | null | undefined;
47
- fieldName: "username" | "password";
49
+ type: "http:basic";
50
+ value: string | null | undefined;
51
+ fieldName: "username" | "password";
48
52
  };
49
53
 
50
54
  type SecurityInputBearer = {
51
- type: "http:bearer";
52
- value: string | null | undefined;
53
- fieldName: string;
55
+ type: "http:bearer";
56
+ value: string | null | undefined;
57
+ fieldName: string;
54
58
  };
55
59
 
56
60
  type SecurityInputAPIKey = {
57
- type: "apiKey:header" | "apiKey:query" | "apiKey:cookie";
58
- value: string | null | undefined;
59
- fieldName: string;
61
+ type: "apiKey:header" | "apiKey:query" | "apiKey:cookie";
62
+ value: string | null | undefined;
63
+ fieldName: string;
60
64
  };
61
65
 
62
66
  type SecurityInputOIDC = {
63
- type: "openIdConnect";
64
- value: string | null | undefined;
65
- fieldName: string;
67
+ type: "openIdConnect";
68
+ value: string | null | undefined;
69
+ fieldName: string;
66
70
  };
67
71
 
68
72
  type SecurityInputOAuth2 = {
69
- type: "oauth2";
70
- value: string | null | undefined;
71
- fieldName: string;
73
+ type: "oauth2";
74
+ value: string | null | undefined;
75
+ fieldName: string;
72
76
  };
73
77
 
74
78
  export type SecurityInput =
75
- | SecurityInputBasic
76
- | SecurityInputBasicPacked
77
- | SecurityInputBearer
78
- | SecurityInputAPIKey
79
- | SecurityInputOAuth2
80
- | SecurityInputOIDC;
81
-
82
- export function resolveSecurity(...options: SecurityInput[][]): SecurityState | null {
83
- const state: SecurityState = {
84
- basic: { username: "", password: "" },
85
- headers: {},
86
- queryParams: {},
87
- cookies: {},
88
- };
89
-
90
- const option = options.find((opts) => opts.every((o) => Boolean(o.value)));
91
- if (option == null) {
92
- return null;
93
- }
94
-
95
- option.forEach((spec) => {
96
- if (spec.value == null) {
97
- return;
98
- }
99
-
100
- const { type } = spec;
101
-
102
- switch (type) {
103
- case "apiKey:header":
104
- state.headers[spec.fieldName] = spec.value;
105
- break;
106
- case "apiKey:query":
107
- state.queryParams[spec.fieldName] = spec.value;
108
- break;
109
- case "apiKey:cookie":
110
- state.cookies[spec.fieldName] = spec.value;
111
- break;
112
- case "http:basic":
113
- applyBasic(state, spec);
114
- break;
115
- case "http:bearer":
116
- applyBearer(state, spec);
117
- break;
118
- case "oauth2":
119
- applyBearer(state, spec);
120
- break;
121
- case "openIdConnect":
122
- applyBearer(state, spec);
123
- break;
124
- default:
125
- spec satisfies never;
126
- throw SecurityError.unrecognizedType(type);
127
- }
128
- });
129
-
130
- return state;
131
- }
132
-
133
- function applyBasic(state: SecurityState, spec: SecurityInputBasic | SecurityInputBasicPacked) {
79
+ | SecurityInputBasic
80
+ | SecurityInputBasicPacked
81
+ | SecurityInputBearer
82
+ | SecurityInputAPIKey
83
+ | SecurityInputOAuth2
84
+ | SecurityInputOIDC;
85
+
86
+ export function resolveSecurity(
87
+ ...options: SecurityInput[][]
88
+ ): SecurityState | null {
89
+ const state: SecurityState = {
90
+ basic: { username: "", password: "" },
91
+ headers: {},
92
+ queryParams: {},
93
+ cookies: {},
94
+ };
95
+
96
+ const option = options.find((opts) => opts.every((o) => Boolean(o.value)));
97
+ if (option == null) {
98
+ return null;
99
+ }
100
+
101
+ option.forEach((spec) => {
134
102
  if (spec.value == null) {
135
- return;
103
+ return;
136
104
  }
137
105
 
138
- if ("fieldName" in spec) {
139
- state.basic[spec.fieldName] = spec.value;
140
- } else {
141
- state.basic = spec.value;
106
+ const { type } = spec;
107
+
108
+ switch (type) {
109
+ case "apiKey:header":
110
+ state.headers[spec.fieldName] = spec.value;
111
+ break;
112
+ case "apiKey:query":
113
+ state.queryParams[spec.fieldName] = spec.value;
114
+ break;
115
+ case "apiKey:cookie":
116
+ state.cookies[spec.fieldName] = spec.value;
117
+ break;
118
+ case "http:basic":
119
+ applyBasic(state, spec);
120
+ break;
121
+ case "http:bearer":
122
+ applyBearer(state, spec);
123
+ break;
124
+ case "oauth2":
125
+ applyBearer(state, spec);
126
+ break;
127
+ case "openIdConnect":
128
+ applyBearer(state, spec);
129
+ break;
130
+ default:
131
+ spec satisfies never;
132
+ throw SecurityError.unrecognizedType(type);
142
133
  }
134
+ });
135
+
136
+ return state;
137
+ }
138
+
139
+ function applyBasic(
140
+ state: SecurityState,
141
+ spec: SecurityInputBasic | SecurityInputBasicPacked,
142
+ ) {
143
+ if (spec.value == null) {
144
+ return;
145
+ }
146
+
147
+ if ("fieldName" in spec) {
148
+ state.basic[spec.fieldName] = spec.value;
149
+ } else {
150
+ state.basic = spec.value;
151
+ }
143
152
  }
144
153
 
145
154
  function applyBearer(
146
- state: SecurityState,
147
- spec: SecurityInputBearer | SecurityInputOAuth2 | SecurityInputOIDC
155
+ state: SecurityState,
156
+ spec: SecurityInputBearer | SecurityInputOAuth2 | SecurityInputOIDC,
148
157
  ) {
149
- if (spec.value == null) {
150
- return;
151
- }
158
+ if (spec.value == null) {
159
+ return;
160
+ }
152
161
 
153
- let value = spec.value;
154
- if (value.slice(0, 7).toLowerCase() !== "bearer ") {
155
- value = `Bearer ${value}`;
156
- }
162
+ let value = spec.value;
163
+ if (value.slice(0, 7).toLowerCase() !== "bearer ") {
164
+ value = `Bearer ${value}`;
165
+ }
157
166
 
158
- state.headers[spec.fieldName] = value;
167
+ state.headers[spec.fieldName] = value;
159
168
  }
160
- export function resolveGlobalSecurity(security: Partial<components.Security> | null | undefined) {
161
- return resolveSecurity([
162
- { value: security?.apiKey, fieldName: "Authorization", type: "http:bearer" },
163
- ]);
169
+ export function resolveGlobalSecurity(
170
+ security: Partial<components.Security> | null | undefined,
171
+ ) {
172
+ return resolveSecurity([
173
+ {
174
+ value: security?.apiKey,
175
+ fieldName: "Authorization",
176
+ type: "http:bearer",
177
+ },
178
+ ]);
164
179
  }