@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.
- package/README.md +119 -0
- package/bin/cli.js +2 -2
- package/dist/CollectionRunner.js +3 -3
- package/dist/ScriptEngine.js +4 -4
- package/dist/cli/plugin-commands.d.ts.map +1 -1
- package/dist/cli/plugin-commands.js +2 -1
- package/dist/cli/plugin-commands.js.map +1 -1
- package/package.json +55 -50
- package/src/CollectionAnalyzer.ts +102 -102
- package/src/CollectionRunner.ts +1423 -1423
- package/src/CollectionRunner.types.ts +9 -9
- package/src/CollectionValidator.ts +289 -289
- package/src/ConsoleReporter.ts +143 -143
- package/src/CookieJar.ts +258 -258
- package/src/DagScheduler.ts +439 -439
- package/src/Logger.ts +85 -85
- package/src/PluginLoader.ts +126 -126
- package/src/PluginManager.ts +208 -208
- package/src/PluginResolver.ts +154 -154
- package/src/QuestAPI.ts +764 -764
- package/src/QuestAPI.types.ts +33 -33
- package/src/QuestTestAPI.ts +164 -164
- package/src/RequestFilter.ts +224 -224
- package/src/ScriptEngine.ts +219 -219
- package/src/ScriptValidator.ts +428 -428
- package/src/TaskGraph.ts +598 -598
- package/src/TestCounter.ts +109 -109
- package/src/VariableResolver.ts +114 -114
- package/src/cli/index.ts +480 -480
- package/src/cli/plugin-commands.ts +342 -341
- package/src/cli/plugin-discovery.ts +44 -44
- package/src/index.ts +24 -24
- package/src/utils.ts +52 -52
- package/tsconfig.json +20 -20
- package/tsconfig.test.json +5 -5
- package/vitest.config.ts +22 -22
- package/dist/ExecutionTree.d.ts +0 -77
- package/dist/ExecutionTree.d.ts.map +0 -1
- package/dist/ExecutionTree.js +0 -265
- package/dist/ExecutionTree.js.map +0 -1
- package/dist/fracture/src/CollectionAnalyzer.d.ts +0 -17
- package/dist/fracture/src/CollectionAnalyzer.d.ts.map +0 -1
- package/dist/fracture/src/CollectionAnalyzer.js +0 -70
- package/dist/fracture/src/CollectionAnalyzer.js.map +0 -1
- package/dist/fracture/src/CollectionRunner.d.ts +0 -39
- package/dist/fracture/src/CollectionRunner.d.ts.map +0 -1
- package/dist/fracture/src/CollectionRunner.js +0 -802
- package/dist/fracture/src/CollectionRunner.js.map +0 -1
- package/dist/fracture/src/CollectionRunner.types.d.ts +0 -8
- package/dist/fracture/src/CollectionRunner.types.d.ts.map +0 -1
- package/dist/fracture/src/CollectionRunner.types.js +0 -2
- package/dist/fracture/src/CollectionRunner.types.js.map +0 -1
- package/dist/fracture/src/CollectionValidator.d.ts +0 -14
- package/dist/fracture/src/CollectionValidator.d.ts.map +0 -1
- package/dist/fracture/src/CollectionValidator.js +0 -145
- package/dist/fracture/src/CollectionValidator.js.map +0 -1
- package/dist/fracture/src/ConsoleReporter.d.ts +0 -24
- package/dist/fracture/src/ConsoleReporter.d.ts.map +0 -1
- package/dist/fracture/src/ConsoleReporter.js +0 -123
- package/dist/fracture/src/ConsoleReporter.js.map +0 -1
- package/dist/fracture/src/CookieJar.d.ts +0 -70
- package/dist/fracture/src/CookieJar.d.ts.map +0 -1
- package/dist/fracture/src/CookieJar.js +0 -233
- package/dist/fracture/src/CookieJar.js.map +0 -1
- package/dist/fracture/src/ExecutionTree.d.ts +0 -77
- package/dist/fracture/src/ExecutionTree.d.ts.map +0 -1
- package/dist/fracture/src/ExecutionTree.js +0 -258
- package/dist/fracture/src/ExecutionTree.js.map +0 -1
- package/dist/fracture/src/Logger.d.ts +0 -25
- package/dist/fracture/src/Logger.d.ts.map +0 -1
- package/dist/fracture/src/Logger.js +0 -78
- package/dist/fracture/src/Logger.js.map +0 -1
- package/dist/fracture/src/PluginLoader.d.ts +0 -23
- package/dist/fracture/src/PluginLoader.d.ts.map +0 -1
- package/dist/fracture/src/PluginLoader.js +0 -102
- package/dist/fracture/src/PluginLoader.js.map +0 -1
- package/dist/fracture/src/PluginManager.d.ts +0 -64
- package/dist/fracture/src/PluginManager.d.ts.map +0 -1
- package/dist/fracture/src/PluginManager.js +0 -162
- package/dist/fracture/src/PluginManager.js.map +0 -1
- package/dist/fracture/src/PluginResolver.d.ts +0 -35
- package/dist/fracture/src/PluginResolver.d.ts.map +0 -1
- package/dist/fracture/src/PluginResolver.js +0 -128
- package/dist/fracture/src/PluginResolver.js.map +0 -1
- package/dist/fracture/src/QuestAPI.d.ts +0 -9
- package/dist/fracture/src/QuestAPI.d.ts.map +0 -1
- package/dist/fracture/src/QuestAPI.js +0 -679
- package/dist/fracture/src/QuestAPI.js.map +0 -1
- package/dist/fracture/src/QuestAPI.types.d.ts +0 -35
- package/dist/fracture/src/QuestAPI.types.d.ts.map +0 -1
- package/dist/fracture/src/QuestAPI.types.js +0 -3
- package/dist/fracture/src/QuestAPI.types.js.map +0 -1
- package/dist/fracture/src/QuestTestAPI.d.ts +0 -12
- package/dist/fracture/src/QuestTestAPI.d.ts.map +0 -1
- package/dist/fracture/src/QuestTestAPI.js +0 -133
- package/dist/fracture/src/QuestTestAPI.js.map +0 -1
- package/dist/fracture/src/ScriptEngine.d.ts +0 -21
- package/dist/fracture/src/ScriptEngine.d.ts.map +0 -1
- package/dist/fracture/src/ScriptEngine.js +0 -183
- package/dist/fracture/src/ScriptEngine.js.map +0 -1
- package/dist/fracture/src/ScriptValidator.d.ts +0 -68
- package/dist/fracture/src/ScriptValidator.d.ts.map +0 -1
- package/dist/fracture/src/ScriptValidator.js +0 -351
- package/dist/fracture/src/ScriptValidator.js.map +0 -1
- package/dist/fracture/src/TestCounter.d.ts +0 -18
- package/dist/fracture/src/TestCounter.d.ts.map +0 -1
- package/dist/fracture/src/TestCounter.js +0 -82
- package/dist/fracture/src/TestCounter.js.map +0 -1
- package/dist/fracture/src/VariableResolver.d.ts +0 -20
- package/dist/fracture/src/VariableResolver.d.ts.map +0 -1
- package/dist/fracture/src/VariableResolver.js +0 -100
- package/dist/fracture/src/VariableResolver.js.map +0 -1
- package/dist/fracture/src/cli/index.d.ts +0 -3
- package/dist/fracture/src/cli/index.d.ts.map +0 -1
- package/dist/fracture/src/cli/index.js +0 -347
- package/dist/fracture/src/cli/index.js.map +0 -1
- package/dist/fracture/src/cli/plugin-commands.d.ts +0 -6
- package/dist/fracture/src/cli/plugin-commands.d.ts.map +0 -1
- package/dist/fracture/src/cli/plugin-commands.js +0 -263
- package/dist/fracture/src/cli/plugin-commands.js.map +0 -1
- package/dist/fracture/src/cli/plugin-discovery.d.ts +0 -11
- package/dist/fracture/src/cli/plugin-discovery.d.ts.map +0 -1
- package/dist/fracture/src/cli/plugin-discovery.js +0 -64
- package/dist/fracture/src/cli/plugin-discovery.js.map +0 -1
- package/dist/fracture/src/index.d.ts +0 -13
- package/dist/fracture/src/index.d.ts.map +0 -1
- package/dist/fracture/src/index.js +0 -17
- package/dist/fracture/src/index.js.map +0 -1
- package/dist/fracture/src/utils.d.ts +0 -28
- package/dist/fracture/src/utils.d.ts.map +0 -1
- package/dist/fracture/src/utils.js +0 -48
- package/dist/fracture/src/utils.js.map +0 -1
- package/dist/plugin-auth/src/apikey-auth.d.ts +0 -3
- package/dist/plugin-auth/src/apikey-auth.d.ts.map +0 -1
- package/dist/plugin-auth/src/apikey-auth.js +0 -73
- package/dist/plugin-auth/src/apikey-auth.js.map +0 -1
- package/dist/plugin-auth/src/basic-auth.d.ts +0 -3
- package/dist/plugin-auth/src/basic-auth.d.ts.map +0 -1
- package/dist/plugin-auth/src/basic-auth.js +0 -61
- package/dist/plugin-auth/src/basic-auth.js.map +0 -1
- package/dist/plugin-auth/src/bearer-auth.d.ts +0 -3
- package/dist/plugin-auth/src/bearer-auth.d.ts.map +0 -1
- package/dist/plugin-auth/src/bearer-auth.js +0 -49
- package/dist/plugin-auth/src/bearer-auth.js.map +0 -1
- package/dist/plugin-auth/src/helpers.d.ts +0 -3
- package/dist/plugin-auth/src/helpers.d.ts.map +0 -1
- package/dist/plugin-auth/src/helpers.js +0 -8
- package/dist/plugin-auth/src/helpers.js.map +0 -1
- package/dist/plugin-auth/src/index.d.ts +0 -10
- package/dist/plugin-auth/src/index.d.ts.map +0 -1
- package/dist/plugin-auth/src/index.js +0 -25
- package/dist/plugin-auth/src/index.js.map +0 -1
- package/dist/plugin-auth/src/oauth2-auth.d.ts +0 -35
- package/dist/plugin-auth/src/oauth2-auth.d.ts.map +0 -1
- package/dist/plugin-auth/src/oauth2-auth.js +0 -266
- package/dist/plugin-auth/src/oauth2-auth.js.map +0 -1
- package/dist/plugin-http/src/index.d.ts +0 -4
- package/dist/plugin-http/src/index.d.ts.map +0 -1
- package/dist/plugin-http/src/index.js +0 -266
- package/dist/plugin-http/src/index.js.map +0 -1
- package/dist/plugin-vault-file/src/index.d.ts +0 -67
- package/dist/plugin-vault-file/src/index.d.ts.map +0 -1
- package/dist/plugin-vault-file/src/index.js +0 -171
- package/dist/plugin-vault-file/src/index.js.map +0 -1
- package/dist/types.d.ts +0 -374
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -13
- 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 +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"}
|