@apiquest/fracture 1.0.2 → 1.0.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 (168) hide show
  1. package/README.md +119 -0
  2. package/bin/cli.js +2 -2
  3. package/dist/CollectionRunner.js +3 -3
  4. package/dist/ScriptEngine.js +4 -4
  5. package/dist/cli/plugin-commands.d.ts.map +1 -1
  6. package/dist/cli/plugin-commands.js +2 -1
  7. package/dist/cli/plugin-commands.js.map +1 -1
  8. package/package.json +55 -50
  9. package/src/CollectionAnalyzer.ts +102 -102
  10. package/src/CollectionRunner.ts +1423 -1423
  11. package/src/CollectionRunner.types.ts +9 -9
  12. package/src/CollectionValidator.ts +289 -289
  13. package/src/ConsoleReporter.ts +143 -143
  14. package/src/CookieJar.ts +258 -258
  15. package/src/DagScheduler.ts +439 -439
  16. package/src/Logger.ts +85 -85
  17. package/src/PluginLoader.ts +126 -126
  18. package/src/PluginManager.ts +208 -208
  19. package/src/PluginResolver.ts +154 -154
  20. package/src/QuestAPI.ts +764 -764
  21. package/src/QuestAPI.types.ts +33 -33
  22. package/src/QuestTestAPI.ts +164 -164
  23. package/src/RequestFilter.ts +224 -224
  24. package/src/ScriptEngine.ts +219 -219
  25. package/src/ScriptValidator.ts +428 -428
  26. package/src/TaskGraph.ts +598 -598
  27. package/src/TestCounter.ts +109 -109
  28. package/src/VariableResolver.ts +114 -114
  29. package/src/cli/index.ts +480 -480
  30. package/src/cli/plugin-commands.ts +342 -341
  31. package/src/cli/plugin-discovery.ts +44 -44
  32. package/src/index.ts +24 -24
  33. package/src/utils.ts +52 -52
  34. package/tsconfig.json +20 -20
  35. package/tsconfig.test.json +5 -5
  36. package/vitest.config.ts +22 -22
  37. package/dist/ExecutionTree.d.ts +0 -77
  38. package/dist/ExecutionTree.d.ts.map +0 -1
  39. package/dist/ExecutionTree.js +0 -265
  40. package/dist/ExecutionTree.js.map +0 -1
  41. package/dist/fracture/src/CollectionAnalyzer.d.ts +0 -17
  42. package/dist/fracture/src/CollectionAnalyzer.d.ts.map +0 -1
  43. package/dist/fracture/src/CollectionAnalyzer.js +0 -70
  44. package/dist/fracture/src/CollectionAnalyzer.js.map +0 -1
  45. package/dist/fracture/src/CollectionRunner.d.ts +0 -39
  46. package/dist/fracture/src/CollectionRunner.d.ts.map +0 -1
  47. package/dist/fracture/src/CollectionRunner.js +0 -802
  48. package/dist/fracture/src/CollectionRunner.js.map +0 -1
  49. package/dist/fracture/src/CollectionRunner.types.d.ts +0 -8
  50. package/dist/fracture/src/CollectionRunner.types.d.ts.map +0 -1
  51. package/dist/fracture/src/CollectionRunner.types.js +0 -2
  52. package/dist/fracture/src/CollectionRunner.types.js.map +0 -1
  53. package/dist/fracture/src/CollectionValidator.d.ts +0 -14
  54. package/dist/fracture/src/CollectionValidator.d.ts.map +0 -1
  55. package/dist/fracture/src/CollectionValidator.js +0 -145
  56. package/dist/fracture/src/CollectionValidator.js.map +0 -1
  57. package/dist/fracture/src/ConsoleReporter.d.ts +0 -24
  58. package/dist/fracture/src/ConsoleReporter.d.ts.map +0 -1
  59. package/dist/fracture/src/ConsoleReporter.js +0 -123
  60. package/dist/fracture/src/ConsoleReporter.js.map +0 -1
  61. package/dist/fracture/src/CookieJar.d.ts +0 -70
  62. package/dist/fracture/src/CookieJar.d.ts.map +0 -1
  63. package/dist/fracture/src/CookieJar.js +0 -233
  64. package/dist/fracture/src/CookieJar.js.map +0 -1
  65. package/dist/fracture/src/ExecutionTree.d.ts +0 -77
  66. package/dist/fracture/src/ExecutionTree.d.ts.map +0 -1
  67. package/dist/fracture/src/ExecutionTree.js +0 -258
  68. package/dist/fracture/src/ExecutionTree.js.map +0 -1
  69. package/dist/fracture/src/Logger.d.ts +0 -25
  70. package/dist/fracture/src/Logger.d.ts.map +0 -1
  71. package/dist/fracture/src/Logger.js +0 -78
  72. package/dist/fracture/src/Logger.js.map +0 -1
  73. package/dist/fracture/src/PluginLoader.d.ts +0 -23
  74. package/dist/fracture/src/PluginLoader.d.ts.map +0 -1
  75. package/dist/fracture/src/PluginLoader.js +0 -102
  76. package/dist/fracture/src/PluginLoader.js.map +0 -1
  77. package/dist/fracture/src/PluginManager.d.ts +0 -64
  78. package/dist/fracture/src/PluginManager.d.ts.map +0 -1
  79. package/dist/fracture/src/PluginManager.js +0 -162
  80. package/dist/fracture/src/PluginManager.js.map +0 -1
  81. package/dist/fracture/src/PluginResolver.d.ts +0 -35
  82. package/dist/fracture/src/PluginResolver.d.ts.map +0 -1
  83. package/dist/fracture/src/PluginResolver.js +0 -128
  84. package/dist/fracture/src/PluginResolver.js.map +0 -1
  85. package/dist/fracture/src/QuestAPI.d.ts +0 -9
  86. package/dist/fracture/src/QuestAPI.d.ts.map +0 -1
  87. package/dist/fracture/src/QuestAPI.js +0 -679
  88. package/dist/fracture/src/QuestAPI.js.map +0 -1
  89. package/dist/fracture/src/QuestAPI.types.d.ts +0 -35
  90. package/dist/fracture/src/QuestAPI.types.d.ts.map +0 -1
  91. package/dist/fracture/src/QuestAPI.types.js +0 -3
  92. package/dist/fracture/src/QuestAPI.types.js.map +0 -1
  93. package/dist/fracture/src/QuestTestAPI.d.ts +0 -12
  94. package/dist/fracture/src/QuestTestAPI.d.ts.map +0 -1
  95. package/dist/fracture/src/QuestTestAPI.js +0 -133
  96. package/dist/fracture/src/QuestTestAPI.js.map +0 -1
  97. package/dist/fracture/src/ScriptEngine.d.ts +0 -21
  98. package/dist/fracture/src/ScriptEngine.d.ts.map +0 -1
  99. package/dist/fracture/src/ScriptEngine.js +0 -183
  100. package/dist/fracture/src/ScriptEngine.js.map +0 -1
  101. package/dist/fracture/src/ScriptValidator.d.ts +0 -68
  102. package/dist/fracture/src/ScriptValidator.d.ts.map +0 -1
  103. package/dist/fracture/src/ScriptValidator.js +0 -351
  104. package/dist/fracture/src/ScriptValidator.js.map +0 -1
  105. package/dist/fracture/src/TestCounter.d.ts +0 -18
  106. package/dist/fracture/src/TestCounter.d.ts.map +0 -1
  107. package/dist/fracture/src/TestCounter.js +0 -82
  108. package/dist/fracture/src/TestCounter.js.map +0 -1
  109. package/dist/fracture/src/VariableResolver.d.ts +0 -20
  110. package/dist/fracture/src/VariableResolver.d.ts.map +0 -1
  111. package/dist/fracture/src/VariableResolver.js +0 -100
  112. package/dist/fracture/src/VariableResolver.js.map +0 -1
  113. package/dist/fracture/src/cli/index.d.ts +0 -3
  114. package/dist/fracture/src/cli/index.d.ts.map +0 -1
  115. package/dist/fracture/src/cli/index.js +0 -347
  116. package/dist/fracture/src/cli/index.js.map +0 -1
  117. package/dist/fracture/src/cli/plugin-commands.d.ts +0 -6
  118. package/dist/fracture/src/cli/plugin-commands.d.ts.map +0 -1
  119. package/dist/fracture/src/cli/plugin-commands.js +0 -263
  120. package/dist/fracture/src/cli/plugin-commands.js.map +0 -1
  121. package/dist/fracture/src/cli/plugin-discovery.d.ts +0 -11
  122. package/dist/fracture/src/cli/plugin-discovery.d.ts.map +0 -1
  123. package/dist/fracture/src/cli/plugin-discovery.js +0 -64
  124. package/dist/fracture/src/cli/plugin-discovery.js.map +0 -1
  125. package/dist/fracture/src/index.d.ts +0 -13
  126. package/dist/fracture/src/index.d.ts.map +0 -1
  127. package/dist/fracture/src/index.js +0 -17
  128. package/dist/fracture/src/index.js.map +0 -1
  129. package/dist/fracture/src/utils.d.ts +0 -28
  130. package/dist/fracture/src/utils.d.ts.map +0 -1
  131. package/dist/fracture/src/utils.js +0 -48
  132. package/dist/fracture/src/utils.js.map +0 -1
  133. package/dist/plugin-auth/src/apikey-auth.d.ts +0 -3
  134. package/dist/plugin-auth/src/apikey-auth.d.ts.map +0 -1
  135. package/dist/plugin-auth/src/apikey-auth.js +0 -73
  136. package/dist/plugin-auth/src/apikey-auth.js.map +0 -1
  137. package/dist/plugin-auth/src/basic-auth.d.ts +0 -3
  138. package/dist/plugin-auth/src/basic-auth.d.ts.map +0 -1
  139. package/dist/plugin-auth/src/basic-auth.js +0 -61
  140. package/dist/plugin-auth/src/basic-auth.js.map +0 -1
  141. package/dist/plugin-auth/src/bearer-auth.d.ts +0 -3
  142. package/dist/plugin-auth/src/bearer-auth.d.ts.map +0 -1
  143. package/dist/plugin-auth/src/bearer-auth.js +0 -49
  144. package/dist/plugin-auth/src/bearer-auth.js.map +0 -1
  145. package/dist/plugin-auth/src/helpers.d.ts +0 -3
  146. package/dist/plugin-auth/src/helpers.d.ts.map +0 -1
  147. package/dist/plugin-auth/src/helpers.js +0 -8
  148. package/dist/plugin-auth/src/helpers.js.map +0 -1
  149. package/dist/plugin-auth/src/index.d.ts +0 -10
  150. package/dist/plugin-auth/src/index.d.ts.map +0 -1
  151. package/dist/plugin-auth/src/index.js +0 -25
  152. package/dist/plugin-auth/src/index.js.map +0 -1
  153. package/dist/plugin-auth/src/oauth2-auth.d.ts +0 -35
  154. package/dist/plugin-auth/src/oauth2-auth.d.ts.map +0 -1
  155. package/dist/plugin-auth/src/oauth2-auth.js +0 -266
  156. package/dist/plugin-auth/src/oauth2-auth.js.map +0 -1
  157. package/dist/plugin-http/src/index.d.ts +0 -4
  158. package/dist/plugin-http/src/index.d.ts.map +0 -1
  159. package/dist/plugin-http/src/index.js +0 -266
  160. package/dist/plugin-http/src/index.js.map +0 -1
  161. package/dist/plugin-vault-file/src/index.d.ts +0 -67
  162. package/dist/plugin-vault-file/src/index.d.ts.map +0 -1
  163. package/dist/plugin-vault-file/src/index.js +0 -171
  164. package/dist/plugin-vault-file/src/index.js.map +0 -1
  165. package/dist/types.d.ts +0 -374
  166. package/dist/types.d.ts.map +0 -1
  167. package/dist/types.js +0 -13
  168. package/dist/types.js.map +0 -1
@@ -1,266 +0,0 @@
1
- // OAuth 2.0 Authentication
2
- import got from 'got';
3
- import { isNullOrEmpty, isNullOrWhitespace } from './helpers.js';
4
- // Simple in-memory token cache
5
- const tokenCache = new Map();
6
- // Helper function for OAuth2 token retrieval
7
- async function getOAuth2AccessToken(config, logger) {
8
- logger?.trace('OAuth2', 'Token request initiated');
9
- logger?.trace('OAuth2', '- Grant type:', config.grantType);
10
- logger?.trace('OAuth2', '- URL:', config.accessTokenUrl);
11
- logger?.trace('OAuth2', '- Client ID:', config.clientId);
12
- logger?.trace('OAuth2', '- Client auth method:', config.clientAuthentication ?? 'body');
13
- const cachingEnabled = (config.cacheToken ?? true);
14
- logger?.trace('OAuth2', '- Caching:', cachingEnabled ? 'enabled' : 'disabled');
15
- // Create cache key
16
- const cacheKey = `${config.accessTokenUrl}:${config.clientId}:${config.grantType}`;
17
- // Check cache (only if caching is enabled, defaults to true)
18
- const useCaching = (config.cacheToken ?? true);
19
- if (useCaching) {
20
- const cached = tokenCache.get(cacheKey);
21
- if (cached !== undefined && cached.expiresAt > Date.now()) {
22
- logger?.trace('OAuth2', 'Using cached token (expires in', Math.floor((cached.expiresAt - Date.now()) / 1000), 'seconds)');
23
- return cached.token;
24
- }
25
- else if (cached !== undefined) {
26
- logger?.trace('OAuth2', 'Cached token expired, fetching new token');
27
- }
28
- }
29
- else {
30
- logger?.trace('OAuth2', 'Token caching disabled, fetching new token');
31
- }
32
- // Determine client authentication method (default to 'body')
33
- const clientAuth = config.clientAuthentication ?? 'body';
34
- // Build request parameters
35
- const params = new URLSearchParams();
36
- params.append('grant_type', config.grantType);
37
- // Add client credentials based on authentication method
38
- if (clientAuth === 'body') {
39
- params.append('client_id', config.clientId);
40
- params.append('client_secret', config.clientSecret);
41
- }
42
- // Add scope if specified
43
- if (!isNullOrWhitespace(config.scope) && config.scope !== undefined) {
44
- params.append('scope', config.scope);
45
- }
46
- // Grant type specific params
47
- if (config.grantType === 'password' && !isNullOrEmpty(config.username) && !isNullOrEmpty(config.password)) {
48
- params.append('username', config.username ?? '');
49
- params.append('password', config.password ?? '');
50
- }
51
- else if (config.grantType === 'authorization_code' && !isNullOrEmpty(config.authorizationCode)) {
52
- params.append('code', config.authorizationCode ?? '');
53
- if (!isNullOrEmpty(config.redirectUri)) {
54
- params.append('redirect_uri', config.redirectUri ?? '');
55
- }
56
- }
57
- // Add extra body parameters
58
- if (config.extraBody !== null && config.extraBody !== undefined) {
59
- for (const [key, value] of Object.entries(config.extraBody)) {
60
- params.append(key, String(value));
61
- }
62
- }
63
- // Build headers
64
- const headers = {
65
- 'Content-Type': 'application/x-www-form-urlencoded'
66
- };
67
- // Add client credentials to headers if needed
68
- if (clientAuth === 'basic') {
69
- const credentials = Buffer.from(`${config.clientId}:${config.clientSecret}`).toString('base64');
70
- headers['Authorization'] = `Basic ${credentials}`;
71
- }
72
- else if (clientAuth === 'header') {
73
- const idField = config.clientIdField ?? 'X-Client-Id';
74
- const secretField = config.clientSecretField ?? 'X-Client-Secret';
75
- headers[idField] = config.clientId;
76
- headers[secretField] = config.clientSecret;
77
- }
78
- // Add extra headers
79
- if (config.extraHeaders !== null && config.extraHeaders !== undefined) {
80
- Object.assign(headers, config.extraHeaders);
81
- }
82
- // Build URL with query parameters if needed
83
- let tokenUrl = config.accessTokenUrl;
84
- if (clientAuth === 'query') {
85
- const url = new URL(config.accessTokenUrl);
86
- const idField = config.clientIdField ?? 'client_id';
87
- const secretField = config.clientSecretField ?? 'client_secret';
88
- url.searchParams.set(idField, config.clientId);
89
- url.searchParams.set(secretField, config.clientSecret);
90
- // Add extra query parameters
91
- if (config.extraQuery !== null && config.extraQuery !== undefined) {
92
- for (const [key, value] of Object.entries(config.extraQuery)) {
93
- url.searchParams.set(key, value);
94
- }
95
- }
96
- tokenUrl = url.toString();
97
- }
98
- // Debug logging - showing raw values for troubleshooting
99
- logger?.trace('OAuth2', '- URL:', tokenUrl);
100
- logger?.trace('OAuth2', '- Headers:', JSON.stringify(headers, null, 2));
101
- logger?.trace('OAuth2', '- Body:', params.toString());
102
- try {
103
- const response = await got.post(tokenUrl, {
104
- body: params.toString(),
105
- headers,
106
- responseType: 'json'
107
- });
108
- const data = response.body;
109
- const accessToken = data.access_token;
110
- const expiresIn = (typeof data.expires_in === 'number' && data.expires_in > 0) ? data.expires_in : 3600; // Default 1 hour
111
- logger?.trace('OAuth2', 'Token retrieved successfully (expires in', expiresIn, 'seconds)');
112
- if (accessToken === undefined) {
113
- throw new Error('No access_token in OAuth2 response');
114
- }
115
- // Cache token (expire 5 minutes early to be safe) if caching is enabled
116
- if (useCaching) {
117
- const expiresAt = Date.now() + (expiresIn - 300) * 1000;
118
- tokenCache.set(cacheKey, { token: accessToken, expiresAt });
119
- logger?.trace('OAuth2', 'Token cached until', new Date(expiresAt).toISOString());
120
- }
121
- return accessToken;
122
- }
123
- catch (error) {
124
- const err = error;
125
- const details = [];
126
- details.push(`OAuth2 token request failed: ${err.message}`);
127
- if (err.response !== undefined) {
128
- details.push(` Status: ${err.response.statusCode}`);
129
- details.push(` Response: ${JSON.stringify(err.response.body)}`);
130
- }
131
- details.push(` URL: ${tokenUrl}`);
132
- details.push(` Method: ${clientAuth}`);
133
- details.push(` Body: ${params.toString()}`);
134
- const fullError = details.join('\n');
135
- logger?.debug('OAuth2', 'Error details:', fullError);
136
- throw new Error(fullError);
137
- }
138
- }
139
- export const oauth2Auth = {
140
- // Identity
141
- name: 'OAuth 2.0',
142
- version: '1.0.0',
143
- description: 'OAuth 2.0 authentication (multiple grant types supported)',
144
- // What auth types this provides
145
- authTypes: ['oauth2'],
146
- // Which protocols this works with
147
- protocols: ['http', 'graphql', 'grpc'],
148
- dataSchema: {
149
- type: 'object',
150
- required: ['grantType', 'accessTokenUrl', 'clientId', 'clientSecret'],
151
- properties: {
152
- grantType: {
153
- type: 'string',
154
- enum: ['client_credentials', 'password', 'authorization_code'],
155
- description: 'OAuth 2.0 grant type'
156
- },
157
- accessTokenUrl: {
158
- type: 'string',
159
- description: 'Token endpoint URL'
160
- },
161
- clientId: {
162
- type: 'string',
163
- description: 'OAuth client ID (always required, contains the credential value)'
164
- },
165
- clientSecret: {
166
- type: 'string',
167
- description: 'OAuth client secret (always required, contains the credential value)'
168
- },
169
- username: {
170
- type: 'string',
171
- description: 'Username (for password grant)'
172
- },
173
- password: {
174
- type: 'string',
175
- description: 'Password (for password grant)'
176
- },
177
- scope: {
178
- type: 'string',
179
- description: 'OAuth scope'
180
- },
181
- authorizationCode: {
182
- type: 'string',
183
- description: 'Authorization code (for authorization_code grant)'
184
- },
185
- redirectUri: {
186
- type: 'string',
187
- description: 'Redirect URI'
188
- },
189
- clientAuthentication: {
190
- type: 'string',
191
- enum: ['body', 'basic', 'header', 'query'],
192
- default: 'body',
193
- description: 'How to send client credentials: body (form), basic (HTTP Basic Auth), header (custom headers), query (URL params)'
194
- },
195
- clientIdField: {
196
- type: 'string',
197
- description: 'Field name for client ID when using header or query authentication (default: client_id for query, X-Client-Id for header)'
198
- },
199
- clientSecretField: {
200
- type: 'string',
201
- description: 'Field name for client secret when using header or query authentication (default: client_secret for query, X-Client-Secret for header)'
202
- },
203
- extraHeaders: {
204
- type: 'object',
205
- description: 'Additional headers to include in token request (e.g., {"X-Trace-Id": "trace-123"})'
206
- },
207
- extraBody: {
208
- type: 'object',
209
- description: 'Additional form body parameters to include in token request (e.g., {"audience": "api"})'
210
- },
211
- extraQuery: {
212
- type: 'object',
213
- description: 'Additional query parameters to include in token request (e.g., {"audience": "api"})'
214
- },
215
- cacheToken: {
216
- type: 'boolean',
217
- default: true,
218
- description: 'Whether to cache tokens across requests (default: true). Set to false for deterministic/stateless execution.'
219
- }
220
- }
221
- },
222
- validate(auth, options) {
223
- const errors = [];
224
- const config = auth.data;
225
- if (config === null || config === undefined || isNullOrWhitespace(config.accessTokenUrl)) {
226
- errors.push({
227
- message: 'OAuth2 accessTokenUrl is required',
228
- location: '',
229
- source: 'auth'
230
- });
231
- }
232
- if (config === null || config === undefined || isNullOrWhitespace(config.clientId)) {
233
- errors.push({
234
- message: 'OAuth2 clientId is required',
235
- location: '',
236
- source: 'auth'
237
- });
238
- }
239
- if (config === null || config === undefined || isNullOrWhitespace(config.clientSecret)) {
240
- errors.push({
241
- message: 'OAuth2 clientSecret is required',
242
- location: '',
243
- source: 'auth'
244
- });
245
- }
246
- return errors.length > 0 ? { valid: false, errors } : { valid: true };
247
- },
248
- async apply(request, auth, options, logger) {
249
- // Skip if Authorization header already exists
250
- if (request.data.headers?.['Authorization'] !== undefined) {
251
- return request;
252
- }
253
- const config = auth.data;
254
- if (isNullOrEmpty(config.accessTokenUrl) || isNullOrEmpty(config.clientId) || isNullOrEmpty(config.clientSecret)) {
255
- throw new Error('OAuth2 requires accessTokenUrl, clientId, and clientSecret');
256
- }
257
- // Get access token
258
- const token = await getOAuth2AccessToken(config, logger);
259
- // Ensure headers exist
260
- request.data.headers ??= {};
261
- // Add Authorization header
262
- request.data.headers['Authorization'] = `Bearer ${token}`;
263
- return request;
264
- }
265
- };
266
- //# sourceMappingURL=oauth2-auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth2-auth.js","sourceRoot":"","sources":["../../../../plugin-auth/src/oauth2-auth.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { IProtocolPlugin } from '@apiquest/types';
2
- export declare const httpPlugin: IProtocolPlugin;
3
- export default httpPlugin;
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../plugin-http/src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAA2G,MAAM,iBAAiB,CAAC;AAmBhK,eAAO,MAAM,UAAU,EAAE,eAmRxB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,266 +0,0 @@
1
- import got, { RequestError } from 'got';
2
- // Helper functions for string validation
3
- function isNullOrEmpty(value) {
4
- return value === null || value === undefined || value === '';
5
- }
6
- function isNullOrWhitespace(value) {
7
- return value === null || value === undefined || value.trim() === '';
8
- }
9
- export const httpPlugin = {
10
- name: 'HTTP Client',
11
- version: '1.0.0',
12
- description: 'HTTP/HTTPS protocol support for REST APIs',
13
- // What protocols this plugin provides
14
- protocols: ['http'],
15
- // Supported authentication types
16
- supportedAuthTypes: ['bearer', 'basic', 'oauth2', 'apikey', 'digest', 'ntlm'],
17
- // Accept additional auth plugins beyond the listed types
18
- strictAuthList: false,
19
- // Data schema for HTTP requests
20
- dataSchema: {
21
- type: 'object',
22
- required: ['method', 'url'],
23
- properties: {
24
- method: {
25
- type: 'string',
26
- enum: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],
27
- description: 'HTTP method'
28
- },
29
- url: {
30
- type: 'string',
31
- description: 'Request URL'
32
- },
33
- headers: {
34
- type: 'object',
35
- description: 'HTTP headers',
36
- additionalProperties: { type: 'string' }
37
- },
38
- body: {
39
- description: 'Request body (string or structured object)',
40
- oneOf: [
41
- { type: 'string' },
42
- { type: 'object' }
43
- ]
44
- }
45
- }
46
- },
47
- // Options schema for runtime configuration
48
- optionsSchema: {
49
- keepAlive: {
50
- type: 'boolean',
51
- default: true,
52
- description: 'Keep TCP connections alive between requests'
53
- },
54
- timeout: {
55
- type: 'number',
56
- default: 30000,
57
- description: 'Request timeout in milliseconds'
58
- },
59
- followRedirects: {
60
- type: 'boolean',
61
- default: true,
62
- description: 'Follow HTTP redirects automatically'
63
- },
64
- maxRedirects: {
65
- type: 'number',
66
- default: 5,
67
- description: 'Maximum number of redirects to follow'
68
- },
69
- validateCertificates: {
70
- type: 'boolean',
71
- default: true,
72
- description: 'Validate SSL/TLS certificates'
73
- }
74
- },
75
- async execute(request, context, options, emitEvent, logger) {
76
- const startTime = Date.now();
77
- // Extract URL early so it's available in catch block for cookie storage
78
- const url = String(request.data.url ?? '');
79
- try {
80
- // Extract HTTP-specific data from request
81
- const method = String(request.data.method ?? 'GET');
82
- const headers = typeof request.data.headers === 'object' && request.data.headers !== null
83
- ? Object.fromEntries(Object.entries(request.data.headers).map(([k, v]) => [k, String(v)]))
84
- : {};
85
- const body = request.data.body;
86
- if (isNullOrWhitespace(url)) {
87
- throw new Error('URL is required for HTTP requests');
88
- }
89
- // Get HTTP-specific options (with defaults)
90
- const httpOptions = options.plugins?.http ?? {};
91
- const httpTimeout = typeof httpOptions.timeout === 'number' ? httpOptions.timeout : null;
92
- const timeout = options.timeout?.request ?? httpTimeout ?? 60000;
93
- const httpFollowRedirects = typeof httpOptions.followRedirects === 'boolean' ? httpOptions.followRedirects : null;
94
- const followRedirects = options.followRedirects ?? httpFollowRedirects ?? true;
95
- const httpMaxRedirects = typeof httpOptions.maxRedirects === 'number' ? httpOptions.maxRedirects : null;
96
- const maxRedirects = options.maxRedirects ?? httpMaxRedirects ?? 5;
97
- const httpValidateCerts = typeof httpOptions.validateCertificates === 'boolean' ? httpOptions.validateCertificates : null;
98
- const validateCerts = options.ssl?.validateCertificates ?? httpValidateCerts ?? true;
99
- // Get cookies from jar and add Cookie header if cookies exist
100
- const cookieHeader = context.cookieJar.getCookieHeader(url);
101
- if (cookieHeader !== null) {
102
- headers['Cookie'] = cookieHeader;
103
- }
104
- // Build got options
105
- const gotOptions = {
106
- method: method.toUpperCase(),
107
- headers: { ...headers },
108
- throwHttpErrors: false, // We handle non-2xx statuses ourselves
109
- timeout: { request: timeout },
110
- followRedirect: followRedirects,
111
- allowGetBody: true,
112
- https: {
113
- rejectUnauthorized: validateCerts
114
- }
115
- };
116
- // Add body if present (and method supports it)
117
- if (body !== undefined && body !== null && body !== '') {
118
- if (typeof body === 'string') {
119
- gotOptions.body = body;
120
- }
121
- else if (typeof body === 'object') {
122
- // Handle body objects
123
- const bodyObj = body;
124
- // Skip if mode is 'none'
125
- if (bodyObj.mode === 'none') {
126
- // Intentionally do nothing - no body should be sent
127
- }
128
- else if (bodyObj.mode === 'raw' && typeof bodyObj.raw === 'string') {
129
- gotOptions.body = bodyObj.raw;
130
- }
131
- else if (bodyObj.mode === 'urlencoded' && Array.isArray(bodyObj.urlencoded)) {
132
- // Convert to URLSearchParams
133
- const params = new URLSearchParams();
134
- bodyObj.urlencoded.forEach((item) => {
135
- if (typeof item.key === 'string' && item.value !== undefined) {
136
- params.append(item.key, String(item.value));
137
- }
138
- });
139
- gotOptions.body = params.toString();
140
- gotOptions.headers ??= {};
141
- gotOptions.headers['content-type'] = 'application/x-www-form-urlencoded';
142
- }
143
- else if (bodyObj.mode === 'formdata' && Array.isArray(bodyObj.formdata)) {
144
- // For form-data, we'd need FormData which isn't straightforward in Node
145
- // For now, treat as JSON
146
- gotOptions.json = bodyObj;
147
- }
148
- else {
149
- gotOptions.json = bodyObj;
150
- }
151
- }
152
- }
153
- // Execute request
154
- const response = await got(url, gotOptions);
155
- const duration = Date.now() - startTime;
156
- // Normalize headers to lowercase keys
157
- // got returns Record<string, string | string[]> - preserve multi-value headers
158
- const normalizedHeaders = {};
159
- if (typeof response.headers === 'object' && response.headers !== null) {
160
- Object.entries(response.headers).forEach(([key, value]) => {
161
- if (Array.isArray(value)) {
162
- // Multi-value header (e.g., set-cookie)
163
- normalizedHeaders[key.toLowerCase()] = value.map(item => String(item));
164
- }
165
- else if (value !== undefined && value !== null) {
166
- normalizedHeaders[key.toLowerCase()] = String(value);
167
- }
168
- });
169
- }
170
- // Store cookies from Set-Cookie headers into jar
171
- if (normalizedHeaders['set-cookie'] !== undefined) {
172
- context.cookieJar.store(normalizedHeaders['set-cookie'], url);
173
- }
174
- // Build response object
175
- return {
176
- status: response.statusCode,
177
- statusText: (response.statusMessage !== null && response.statusMessage !== undefined && response.statusMessage.length > 0) ? response.statusMessage : '',
178
- headers: normalizedHeaders,
179
- body: String(response.body), // got always returns string
180
- duration,
181
- };
182
- }
183
- catch (err) {
184
- const duration = Date.now() - startTime;
185
- const error = err;
186
- // Handle got errors
187
- if (error instanceof RequestError) {
188
- if (error.response !== undefined) {
189
- // Server responded with error status
190
- const normalizedHeaders = {};
191
- if (typeof error.response.headers === 'object' && error.response.headers !== null) {
192
- Object.entries(error.response.headers).forEach(([key, value]) => {
193
- if (Array.isArray(value)) {
194
- normalizedHeaders[key.toLowerCase()] = value.map(item => String(item));
195
- }
196
- else if (value !== undefined && value !== null) {
197
- normalizedHeaders[key.toLowerCase()] = String(value);
198
- }
199
- });
200
- }
201
- // Store cookies from Set-Cookie headers into jar (even for error responses)
202
- if (normalizedHeaders['set-cookie'] !== undefined) {
203
- context.cookieJar.store(normalizedHeaders['set-cookie'], url);
204
- }
205
- return {
206
- status: error.response.statusCode,
207
- statusText: (error.response.statusMessage !== null && error.response.statusMessage !== undefined && error.response.statusMessage.length > 0) ? error.response.statusMessage : '',
208
- headers: normalizedHeaders,
209
- body: String(error.response.body),
210
- duration,
211
- };
212
- }
213
- else {
214
- // Request made but no response received (network error)
215
- return {
216
- status: 0,
217
- statusText: 'Network Error',
218
- headers: {},
219
- body: '',
220
- duration,
221
- error: !isNullOrEmpty(error.message) ? error.message : 'Network request failed'
222
- };
223
- }
224
- }
225
- // Other errors
226
- return {
227
- status: 0,
228
- statusText: 'Error',
229
- headers: {},
230
- body: '',
231
- duration,
232
- error: err instanceof Error ? err.message : String(err)
233
- };
234
- }
235
- },
236
- validate(request, options) {
237
- const errors = [];
238
- // Check URL
239
- if (typeof request.data.url !== 'string' || isNullOrWhitespace(request.data.url)) {
240
- errors.push({
241
- message: 'URL is required',
242
- location: '',
243
- source: 'protocol'
244
- });
245
- }
246
- // Check method
247
- const method = (typeof request.data.method === 'string' && !isNullOrEmpty(request.data.method)) ? request.data.method.toUpperCase() : 'GET';
248
- const validMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'];
249
- if (!validMethods.includes(method)) {
250
- errors.push({
251
- message: `Invalid HTTP method: ${method}`,
252
- location: '',
253
- source: 'protocol'
254
- });
255
- }
256
- if (errors.length > 0) {
257
- return {
258
- valid: false,
259
- errors
260
- };
261
- }
262
- return { valid: true };
263
- }
264
- };
265
- export default httpPlugin;
266
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../plugin-http/src/index.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- import { IValueProviderPlugin, ValidationResult, ExecutionContext } from '@apiquest/types';
2
- /**
3
- * File-based Vault Provider Plugin
4
- * Reads secrets from a JSON file
5
- *
6
- * Configuration:
7
- * - filePath: Path to JSON file containing secrets
8
- *
9
- * Usage in collection:
10
- * {
11
- * "variables": [
12
- * {
13
- * "key": "apiKey",
14
- * "value": "",
15
- * "provider": "vault:file",
16
- * "type": "secret"
17
- * }
18
- * ],
19
- * "options": {
20
- * "plugins": {
21
- * "vault:file": {
22
- * "filePath": "./secrets.json"
23
- * }
24
- * }
25
- * }
26
- * }
27
- *
28
- * secrets.json format:
29
- * {
30
- * "apiKey": "secret-value",
31
- * "database": {
32
- * "password": "db-password"
33
- * }
34
- * }
35
- *
36
- * Access nested keys with dot notation: "database.password"
37
- */
38
- export declare class FileVaultProvider implements IValueProviderPlugin {
39
- provider: string;
40
- name: string;
41
- description: string;
42
- configSchema: {
43
- type: string;
44
- properties: {
45
- filePath: {
46
- type: string;
47
- description: string;
48
- };
49
- };
50
- required: string[];
51
- };
52
- private cache;
53
- getValue(key: string, config?: any, context?: ExecutionContext): Promise<string | null>;
54
- validate(config?: any): ValidationResult;
55
- /**
56
- * Get nested value from object using dot notation
57
- * Example: getNestedValue({ a: { b: { c: 'value' } } }, 'a.b.c') => 'value'
58
- */
59
- private getNestedValue;
60
- /**
61
- * Clear the cache (useful for testing or forcing reload)
62
- */
63
- clearCache(): void;
64
- }
65
- export declare const fileVaultProvider: FileVaultProvider;
66
- export default fileVaultProvider;
67
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../plugin-vault-file/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAmB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAI5G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IAC5D,QAAQ,SAAgB;IACxB,IAAI,SAAyB;IAC7B,WAAW,SAA8C;IAEzD,YAAY;;;;;;;;;MASV;IAEF,OAAO,CAAC,KAAK,CAA0B;IAEjC,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqCzB,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,gBAAgB;IAiExC;;;OAGG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AAGzD,eAAe,iBAAiB,CAAC"}