@api-client/core 0.6.30 → 0.7.1
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/build/browser.d.ts +6 -14
- package/build/browser.js +11 -16
- package/build/browser.js.map +1 -1
- package/build/index.d.ts +8 -20
- package/build/index.js +13 -25
- package/build/index.js.map +1 -1
- package/build/src/amf/ApiSchemaValues.d.ts +2 -0
- package/build/src/amf/ApiSchemaValues.js +29 -23
- package/build/src/amf/ApiSchemaValues.js.map +1 -1
- package/build/src/authorization/lib/Utils.d.ts +1 -1
- package/build/src/cookies/CookieJar.d.ts +23 -0
- package/build/src/cookies/CookieJar.js +3 -0
- package/build/src/cookies/CookieJar.js.map +1 -0
- package/build/src/cookies/CookieParser.d.ts +67 -0
- package/build/src/cookies/CookieParser.js +316 -0
- package/build/src/cookies/CookieParser.js.map +1 -0
- package/build/src/cookies/InMemoryCookieJar.d.ts +12 -0
- package/build/src/cookies/InMemoryCookieJar.js +68 -0
- package/build/src/cookies/InMemoryCookieJar.js.map +1 -0
- package/build/src/cookies/Punycode.d.ts +12 -0
- package/build/src/cookies/Punycode.js +124 -0
- package/build/src/cookies/Punycode.js.map +1 -0
- package/build/src/data/RequestDataExtractor.d.ts +8 -7
- package/build/src/data/RequestDataExtractor.js +8 -10
- package/build/src/data/RequestDataExtractor.js.map +1 -1
- package/build/src/events/CustomEvent.js +5 -0
- package/build/src/events/CustomEvent.js.map +1 -1
- package/build/src/events/EventTypes.d.ts +43 -43
- package/build/src/events/amf/AmfEventTypes.d.ts +4 -4
- package/build/src/events/authorization/AuthorizationEventTypes.d.ts +4 -4
- package/build/src/events/cookies/CookieEventTypes.d.ts +9 -9
- package/build/src/events/encryption/EncryptionEventTypes.d.ts +2 -2
- package/build/src/events/environment/EnvironmentEventTypes.d.ts +1 -1
- package/build/src/events/models/ModelEventTypes.d.ts +7 -7
- package/build/src/events/process/ProcessEventTypes.d.ts +3 -3
- package/build/src/events/reporting/ReportingEventTypes.d.ts +1 -1
- package/build/src/events/telemetry/TelemetryEventTypes.d.ts +6 -6
- package/build/src/events/transport/TransportEventTypes.d.ts +6 -6
- package/build/src/events/transport/TransportEvents.d.ts +2 -2
- package/build/src/mocking/ProjectMock.d.ts +3 -2
- package/build/src/mocking/ProjectMock.js +3 -3
- package/build/src/mocking/ProjectMock.js.map +1 -1
- package/build/src/mocking/lib/App.d.ts +36 -0
- package/build/src/mocking/lib/App.js +70 -0
- package/build/src/mocking/lib/App.js.map +1 -0
- package/build/src/models/{arc/ArcProject.d.ts → AppProject.d.ts} +296 -134
- package/build/src/models/{arc/ArcProject.js → AppProject.js} +436 -79
- package/build/src/models/AppProject.js.map +1 -0
- package/build/src/models/AppRequest.d.ts +69 -0
- package/build/src/models/{arc/ArcHttpRequest.js → AppRequest.js} +53 -17
- package/build/src/models/AppRequest.js.map +1 -0
- package/build/src/models/ClientCertificate.d.ts +2 -2
- package/build/src/models/Environment.d.ts +8 -1
- package/build/src/models/Environment.js +21 -0
- package/build/src/models/Environment.js.map +1 -1
- package/build/src/models/HostRule.d.ts +2 -2
- package/build/src/models/HttpCookie.d.ts +63 -12
- package/build/src/models/HttpCookie.js +178 -44
- package/build/src/models/HttpCookie.js.map +1 -1
- package/build/src/models/HttpHistory.d.ts +8 -3
- package/build/src/models/HttpHistory.js +3 -3
- package/build/src/models/HttpHistory.js.map +1 -1
- package/build/src/models/HttpProject.d.ts +34 -1
- package/build/src/models/HttpProject.js +104 -8
- package/build/src/models/HttpProject.js.map +1 -1
- package/build/src/models/ProjectFolder.d.ts +2 -0
- package/build/src/models/ProjectFolder.js +14 -0
- package/build/src/models/ProjectFolder.js.map +1 -1
- package/build/src/models/ProjectItem.d.ts +2 -0
- package/build/src/models/ProjectItem.js +20 -0
- package/build/src/models/ProjectItem.js.map +1 -1
- package/build/src/models/ProjectParent.js.map +1 -1
- package/build/src/models/ProjectRequest.d.ts +3 -2
- package/build/src/models/ProjectRequest.js.map +1 -1
- package/build/src/models/Property.d.ts +2 -2
- package/build/src/models/Property.js +2 -2
- package/build/src/models/Property.js.map +1 -1
- package/build/src/models/Request.d.ts +16 -8
- package/build/src/models/Request.js +20 -15
- package/build/src/models/Request.js.map +1 -1
- package/build/src/models/RequestAuthorization.js.map +1 -1
- package/build/src/models/RequestUiMeta.d.ts +0 -14
- package/build/src/models/RequestUiMeta.js +1 -10
- package/build/src/models/RequestUiMeta.js.map +1 -1
- package/build/src/models/Server.d.ts +1 -2
- package/build/src/models/Server.js.map +1 -1
- package/build/src/models/http-actions/HttpActions.d.ts +256 -0
- package/build/src/models/http-actions/HttpActions.js +46 -0
- package/build/src/models/http-actions/HttpActions.js.map +1 -0
- package/build/src/models/http-actions/LegacyTranslator.d.ts +17 -0
- package/build/src/models/http-actions/LegacyTranslator.js +222 -0
- package/build/src/models/http-actions/LegacyTranslator.js.map +1 -0
- package/build/src/models/store/Backend.d.ts +136 -1
- package/build/src/models/store/File.d.ts +1 -1
- package/build/src/models/store/File.js +2 -0
- package/build/src/models/store/File.js.map +1 -1
- package/build/src/models/store/User.d.ts +3 -3
- package/build/src/runtime/http-engine/CoreEngine.d.ts +2 -0
- package/build/src/runtime/http-engine/CoreEngine.js +1 -0
- package/build/src/runtime/http-engine/CoreEngine.js.map +1 -1
- package/build/src/runtime/http-engine/HttpEngine.d.ts +13 -0
- package/build/src/runtime/http-engine/HttpEngine.js +39 -31
- package/build/src/runtime/http-engine/HttpEngine.js.map +1 -1
- package/build/src/runtime/{actions/ConditionRunner.d.ts → http-runner/ConditionCheck.d.ts} +2 -2
- package/build/src/runtime/{actions/ConditionRunner.js → http-runner/ConditionCheck.js} +2 -2
- package/build/src/runtime/http-runner/ConditionCheck.js.map +1 -0
- package/build/src/runtime/http-runner/HttpFlowRunner.d.ts +62 -0
- package/build/src/runtime/http-runner/HttpFlowRunner.js +217 -0
- package/build/src/runtime/http-runner/HttpFlowRunner.js.map +1 -0
- package/build/src/runtime/{node/RequestFactory.d.ts → http-runner/HttpRequestRunner.d.ts} +40 -54
- package/build/src/runtime/http-runner/HttpRequestRunner.js +316 -0
- package/build/src/runtime/http-runner/HttpRequestRunner.js.map +1 -0
- package/build/src/runtime/http-runner/HttpRuntimeEnvironment.d.ts +25 -0
- package/build/src/runtime/http-runner/HttpRuntimeEnvironment.js +2 -0
- package/build/src/runtime/http-runner/HttpRuntimeEnvironment.js.map +1 -0
- package/build/src/runtime/http-runner/RequestAuthorizationProcessor.d.ts +56 -0
- package/build/src/runtime/http-runner/RequestAuthorizationProcessor.js +143 -0
- package/build/src/runtime/http-runner/RequestAuthorizationProcessor.js.map +1 -0
- package/build/src/runtime/http-runner/RequestCookiesProcessor.d.ts +24 -0
- package/build/src/runtime/http-runner/RequestCookiesProcessor.js +65 -0
- package/build/src/runtime/http-runner/RequestCookiesProcessor.js.map +1 -0
- package/build/src/runtime/node/InteropInterfaces.d.ts +21 -6
- package/build/src/runtime/node/ProjectParallelRunner.js +3 -1
- package/build/src/runtime/node/ProjectParallelRunner.js.map +1 -1
- package/build/src/runtime/node/ProjectRequestRunner.d.ts +24 -10
- package/build/src/runtime/node/ProjectRequestRunner.js +116 -45
- package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -1
- package/build/src/runtime/node/ProjectRunner.d.ts +5 -7
- package/build/src/runtime/node/ProjectRunner.js +30 -14
- package/build/src/runtime/node/ProjectRunner.js.map +1 -1
- package/build/src/runtime/node/ProjectRunnerWorker.js +3 -0
- package/build/src/runtime/node/ProjectRunnerWorker.js.map +1 -1
- package/build/src/runtime/reporters/Reporter.d.ts +5 -0
- package/build/src/runtime/reporters/Reporter.js.map +1 -1
- package/build/src/runtime/store/AppSdk.d.ts +185 -0
- package/build/src/runtime/store/AppSdk.js +704 -0
- package/build/src/runtime/store/AppSdk.js.map +1 -0
- package/build/src/runtime/store/FilesSdk.js +4 -4
- package/build/src/runtime/store/FilesSdk.js.map +1 -1
- package/build/src/runtime/store/HistorySdk.js +2 -2
- package/build/src/runtime/store/HistorySdk.js.map +1 -1
- package/build/src/runtime/store/RouteBuilder.d.ts +17 -2
- package/build/src/runtime/store/RouteBuilder.js +60 -3
- package/build/src/runtime/store/RouteBuilder.js.map +1 -1
- package/build/src/runtime/store/Sdk.d.ts +5 -0
- package/build/src/runtime/store/Sdk.js +5 -0
- package/build/src/runtime/store/Sdk.js.map +1 -1
- package/build/src/runtime/store/SharedSdk.js +1 -1
- package/build/src/runtime/store/SharedSdk.js.map +1 -1
- package/build/src/runtime/store/UsersSdk.js +1 -1
- package/build/src/runtime/store/UsersSdk.js.map +1 -1
- package/package.json +2 -2
- package/src/amf/ApiSchemaValues.ts +41 -33
- package/src/cookies/CookieJar.ts +26 -0
- package/src/cookies/CookieParser.ts +327 -0
- package/src/cookies/InMemoryCookieJar.ts +70 -0
- package/src/cookies/Punycode.ts +133 -0
- package/src/data/RequestDataExtractor.ts +14 -15
- package/src/events/CustomEvent.ts +4 -0
- package/src/mocking/ProjectMock.ts +4 -3
- package/src/mocking/lib/App.ts +101 -0
- package/src/models/{arc/ArcProject.ts → AppProject.ts} +671 -225
- package/src/models/AppRequest.ts +176 -0
- package/src/models/ClientCertificate.ts +2 -2
- package/src/models/Environment.ts +24 -2
- package/src/models/HostRule.ts +2 -2
- package/src/models/HttpCookie.ts +210 -48
- package/src/models/HttpHistory.ts +12 -5
- package/src/models/HttpProject.ts +113 -10
- package/src/models/ProjectFolder.ts +16 -0
- package/src/models/ProjectItem.ts +18 -0
- package/src/models/ProjectParent.ts +4 -1
- package/src/models/ProjectRequest.ts +4 -3
- package/src/models/Property.ts +4 -4
- package/src/models/Request.ts +29 -19
- package/src/models/RequestAuthorization.ts +4 -4
- package/src/models/RequestUiMeta.ts +1 -21
- package/src/models/Server.ts +1 -2
- package/src/models/http-actions/HttpActions.ts +270 -0
- package/src/models/http-actions/LegacyTranslator.ts +223 -0
- package/src/models/store/Backend.ts +148 -2
- package/src/models/store/File.ts +3 -1
- package/src/models/store/User.ts +3 -3
- package/src/runtime/http-engine/CoreEngine.ts +3 -2
- package/src/runtime/http-engine/HttpEngine.ts +48 -30
- package/src/runtime/{actions/ConditionRunner.ts → http-runner/ConditionCheck.ts} +3 -3
- package/src/runtime/http-runner/HttpFlowRunner.ts +232 -0
- package/src/runtime/http-runner/HttpRequestRunner.ts +353 -0
- package/src/runtime/http-runner/HttpRuntimeEnvironment.ts +27 -0
- package/src/runtime/http-runner/RequestAuthorizationProcessor.ts +144 -0
- package/src/runtime/http-runner/RequestCookiesProcessor.ts +74 -0
- package/src/runtime/node/InteropInterfaces.ts +24 -6
- package/src/runtime/node/ProjectParallelRunner.ts +4 -2
- package/src/runtime/node/ProjectRequestRunner.ts +130 -60
- package/src/runtime/node/ProjectRunner.ts +37 -22
- package/src/runtime/node/ProjectRunnerWorker.ts +3 -0
- package/src/runtime/reporters/Reporter.ts +5 -0
- package/src/runtime/store/AppSdk.ts +709 -0
- package/src/runtime/store/FilesSdk.ts +4 -4
- package/src/runtime/store/HistorySdk.ts +2 -2
- package/src/runtime/store/RouteBuilder.ts +75 -3
- package/src/runtime/store/Sdk.ts +6 -0
- package/src/runtime/store/SharedSdk.ts +1 -1
- package/src/runtime/store/UsersSdk.ts +1 -1
- package/build/src/lib/cookies/Cookie.d.ts +0 -123
- package/build/src/lib/cookies/Cookie.js +0 -257
- package/build/src/lib/cookies/Cookie.js.map +0 -1
- package/build/src/lib/cookies/Cookies.d.ts +0 -90
- package/build/src/lib/cookies/Cookies.js +0 -310
- package/build/src/lib/cookies/Cookies.js.map +0 -1
- package/build/src/lib/cookies/Utils.d.ts +0 -47
- package/build/src/lib/cookies/Utils.js +0 -163
- package/build/src/lib/cookies/Utils.js.map +0 -1
- package/build/src/mocking/lib/Arc.d.ts +0 -10
- package/build/src/mocking/lib/Arc.js +0 -31
- package/build/src/mocking/lib/Arc.js.map +0 -1
- package/build/src/models/RequestActions.d.ts +0 -65
- package/build/src/models/RequestActions.js +0 -114
- package/build/src/models/RequestActions.js.map +0 -1
- package/build/src/models/actions/Action.d.ts +0 -75
- package/build/src/models/actions/Action.js +0 -188
- package/build/src/models/actions/Action.js.map +0 -1
- package/build/src/models/actions/ActionView.d.ts +0 -15
- package/build/src/models/actions/ActionView.js +0 -33
- package/build/src/models/actions/ActionView.js.map +0 -1
- package/build/src/models/actions/Condition.d.ts +0 -81
- package/build/src/models/actions/Condition.js +0 -185
- package/build/src/models/actions/Condition.js.map +0 -1
- package/build/src/models/actions/ConditionView.d.ts +0 -17
- package/build/src/models/actions/ConditionView.js +0 -34
- package/build/src/models/actions/ConditionView.js.map +0 -1
- package/build/src/models/actions/Enums.d.ts +0 -26
- package/build/src/models/actions/Enums.js +0 -31
- package/build/src/models/actions/Enums.js.map +0 -1
- package/build/src/models/actions/RunnableAction.d.ts +0 -59
- package/build/src/models/actions/RunnableAction.js +0 -106
- package/build/src/models/actions/RunnableAction.js.map +0 -1
- package/build/src/models/actions/runnable/DeleteCookieAction.d.ts +0 -44
- package/build/src/models/actions/runnable/DeleteCookieAction.js +0 -92
- package/build/src/models/actions/runnable/DeleteCookieAction.js.map +0 -1
- package/build/src/models/actions/runnable/Runnable.d.ts +0 -8
- package/build/src/models/actions/runnable/Runnable.js +0 -4
- package/build/src/models/actions/runnable/Runnable.js.map +0 -1
- package/build/src/models/actions/runnable/SetCookieAction.d.ts +0 -87
- package/build/src/models/actions/runnable/SetCookieAction.js +0 -176
- package/build/src/models/actions/runnable/SetCookieAction.js.map +0 -1
- package/build/src/models/actions/runnable/SetVariableAction.d.ts +0 -31
- package/build/src/models/actions/runnable/SetVariableAction.js +0 -63
- package/build/src/models/actions/runnable/SetVariableAction.js.map +0 -1
- package/build/src/models/actions/runnable/index.d.ts +0 -7
- package/build/src/models/actions/runnable/index.js +0 -2
- package/build/src/models/actions/runnable/index.js.map +0 -1
- package/build/src/models/arc/ArcHttpRequest.d.ts +0 -40
- package/build/src/models/arc/ArcHttpRequest.js.map +0 -1
- package/build/src/models/arc/ArcProject.js.map +0 -1
- package/build/src/runtime/actions/ActionRunner.d.ts +0 -17
- package/build/src/runtime/actions/ActionRunner.js +0 -74
- package/build/src/runtime/actions/ActionRunner.js.map +0 -1
- package/build/src/runtime/actions/ConditionRunner.js.map +0 -1
- package/build/src/runtime/actions/RunnableCondition.d.ts +0 -27
- package/build/src/runtime/actions/RunnableCondition.js +0 -50
- package/build/src/runtime/actions/RunnableCondition.js.map +0 -1
- package/build/src/runtime/actions/runnable/ActionRunnable.d.ts +0 -13
- package/build/src/runtime/actions/runnable/ActionRunnable.js +0 -13
- package/build/src/runtime/actions/runnable/ActionRunnable.js.map +0 -1
- package/build/src/runtime/actions/runnable/DeleteCookieRunnable.d.ts +0 -7
- package/build/src/runtime/actions/runnable/DeleteCookieRunnable.js +0 -36
- package/build/src/runtime/actions/runnable/DeleteCookieRunnable.js.map +0 -1
- package/build/src/runtime/actions/runnable/SetCookieRunnable.d.ts +0 -10
- package/build/src/runtime/actions/runnable/SetCookieRunnable.js +0 -89
- package/build/src/runtime/actions/runnable/SetCookieRunnable.js.map +0 -1
- package/build/src/runtime/actions/runnable/SetVariableRunnable.d.ts +0 -10
- package/build/src/runtime/actions/runnable/SetVariableRunnable.js +0 -49
- package/build/src/runtime/actions/runnable/SetVariableRunnable.js.map +0 -1
- package/build/src/runtime/modules/BasicAuthCache.d.ts +0 -39
- package/build/src/runtime/modules/BasicAuthCache.js +0 -122
- package/build/src/runtime/modules/BasicAuthCache.js.map +0 -1
- package/build/src/runtime/modules/ExecutionResponse.d.ts +0 -4
- package/build/src/runtime/modules/ExecutionResponse.js +0 -6
- package/build/src/runtime/modules/ExecutionResponse.js.map +0 -1
- package/build/src/runtime/modules/ModulesRegistry.d.ts +0 -93
- package/build/src/runtime/modules/ModulesRegistry.js +0 -69
- package/build/src/runtime/modules/ModulesRegistry.js.map +0 -1
- package/build/src/runtime/modules/RequestAuthorization.d.ts +0 -6
- package/build/src/runtime/modules/RequestAuthorization.js +0 -110
- package/build/src/runtime/modules/RequestAuthorization.js.map +0 -1
- package/build/src/runtime/modules/RequestCookies.d.ts +0 -17
- package/build/src/runtime/modules/RequestCookies.js +0 -134
- package/build/src/runtime/modules/RequestCookies.js.map +0 -1
- package/build/src/runtime/node/RequestFactory.js +0 -406
- package/build/src/runtime/node/RequestFactory.js.map +0 -1
- package/build/src/runtime/node/VariablesStore.d.ts +0 -9
- package/build/src/runtime/node/VariablesStore.js +0 -19
- package/build/src/runtime/node/VariablesStore.js.map +0 -1
- package/src/lib/cookies/Cookie.ts +0 -312
- package/src/lib/cookies/Cookies.ts +0 -326
- package/src/lib/cookies/Utils.ts +0 -168
- package/src/mocking/lib/Arc.ts +0 -34
- package/src/models/RequestActions.ts +0 -161
- package/src/models/actions/Action.ts +0 -213
- package/src/models/actions/ActionView.ts +0 -40
- package/src/models/actions/Condition.ts +0 -207
- package/src/models/actions/ConditionView.ts +0 -42
- package/src/models/actions/Enums.ts +0 -29
- package/src/models/actions/RunnableAction.ts +0 -144
- package/src/models/actions/runnable/DeleteCookieAction.ts +0 -113
- package/src/models/actions/runnable/Runnable.ts +0 -9
- package/src/models/actions/runnable/SetCookieAction.ts +0 -216
- package/src/models/actions/runnable/SetVariableAction.ts +0 -81
- package/src/models/arc/ArcHttpRequest.ts +0 -129
- package/src/models/arc/readme.md +0 -3
- package/src/runtime/actions/ActionRunner.ts +0 -83
- package/src/runtime/actions/RunnableCondition.ts +0 -56
- package/src/runtime/actions/runnable/ActionRunnable.ts +0 -19
- package/src/runtime/actions/runnable/DeleteCookieRunnable.ts +0 -39
- package/src/runtime/actions/runnable/SetCookieRunnable.ts +0 -92
- package/src/runtime/actions/runnable/SetVariableRunnable.ts +0 -53
- package/src/runtime/modules/BasicAuthCache.ts +0 -129
- package/src/runtime/modules/ExecutionResponse.ts +0 -4
- package/src/runtime/modules/ModulesRegistry.ts +0 -136
- package/src/runtime/modules/RequestAuthorization.ts +0 -106
- package/src/runtime/modules/RequestCookies.ts +0 -146
- package/src/runtime/node/RequestFactory.ts +0 -432
- package/src/runtime/node/VariablesStore.ts +0 -25
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Headers } from '../../lib/headers/Headers.js';
|
|
2
|
+
/**
|
|
3
|
+
* Applies authorization data to the HttpRequest from
|
|
4
|
+
* request authorization configuration.
|
|
5
|
+
*/
|
|
6
|
+
export class RequestAuthorizationProcessor {
|
|
7
|
+
/**
|
|
8
|
+
* Applies the auth data from the authorization config.
|
|
9
|
+
*
|
|
10
|
+
* Note, this mutates the original request. Make a copy of you don't want to change
|
|
11
|
+
* the values in the source request.
|
|
12
|
+
*
|
|
13
|
+
* Note, this does not process client certificates. Use the `#readCertificates()` method to
|
|
14
|
+
* get a certificate to use with the HTTP request,
|
|
15
|
+
*
|
|
16
|
+
* @param request The request to apply the authorization to.
|
|
17
|
+
* @returns The same request (a reference)
|
|
18
|
+
*/
|
|
19
|
+
static setAuthorization(request, authorization) {
|
|
20
|
+
if (!Array.isArray(authorization) || !authorization.length) {
|
|
21
|
+
return request;
|
|
22
|
+
}
|
|
23
|
+
for (const auth of authorization) {
|
|
24
|
+
if (auth.enabled === false || !auth.config) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
switch (auth.type) {
|
|
28
|
+
case 'basic':
|
|
29
|
+
this.processBasicAuth(request, auth.config);
|
|
30
|
+
break;
|
|
31
|
+
case 'oauth 2':
|
|
32
|
+
this.processOAuth2(request, auth.config);
|
|
33
|
+
break;
|
|
34
|
+
case 'open id':
|
|
35
|
+
this.processOpenId(request, auth.config);
|
|
36
|
+
break;
|
|
37
|
+
case 'bearer':
|
|
38
|
+
this.processBearer(request, auth.config);
|
|
39
|
+
break;
|
|
40
|
+
default:
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return request;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Reads the client certificate from the authorization configuration.
|
|
47
|
+
*
|
|
48
|
+
* @param authorization The HTTP request authorization configuration.
|
|
49
|
+
* @returns The certificate to use with the HTTP request or undefined when not configured.
|
|
50
|
+
*/
|
|
51
|
+
static readCertificate(authorization) {
|
|
52
|
+
if (!Array.isArray(authorization) || !authorization.length) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const item = authorization.find(i => i.enabled !== false && i.type === 'client certificate');
|
|
56
|
+
if (!item || !item.config) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const init = item.config;
|
|
60
|
+
return init.certificate;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Injects basic auth header into the request headers.
|
|
64
|
+
*/
|
|
65
|
+
static processBasicAuth(request, config) {
|
|
66
|
+
const { username } = config;
|
|
67
|
+
if (!username) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.applyRequestBasicAuthData(request, config);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Injects oauth 2 auth header into the request headers.
|
|
74
|
+
*/
|
|
75
|
+
static processOAuth2(request, config) {
|
|
76
|
+
const { accessToken, tokenType = 'Bearer', deliveryMethod = 'header', deliveryName = 'authorization' } = config;
|
|
77
|
+
if (!accessToken) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const value = `${tokenType} ${accessToken}`;
|
|
81
|
+
if (deliveryMethod === 'header') {
|
|
82
|
+
const headers = new Headers(request.headers || '');
|
|
83
|
+
headers.append(deliveryName, value);
|
|
84
|
+
request.headers = headers.toString();
|
|
85
|
+
}
|
|
86
|
+
else if (deliveryMethod === 'query') {
|
|
87
|
+
const { url } = request;
|
|
88
|
+
try {
|
|
89
|
+
const parsed = new URL(url);
|
|
90
|
+
parsed.searchParams.append(deliveryName, value);
|
|
91
|
+
request.url = parsed.toString();
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
// ...
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Injects OpenID Connect auth header into the request headers.
|
|
100
|
+
*/
|
|
101
|
+
static processOpenId(request, config) {
|
|
102
|
+
const { accessToken } = config;
|
|
103
|
+
if (accessToken) {
|
|
104
|
+
this.processOAuth2(request, config);
|
|
105
|
+
}
|
|
106
|
+
// todo - if AT is missing find the current token from the tokens list in the passed configuration.
|
|
107
|
+
// Currently the authorization method UI sets the token when the requests is generated so it's not as much important.
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Injects bearer auth header into the request headers.
|
|
111
|
+
*/
|
|
112
|
+
static processBearer(request, config) {
|
|
113
|
+
const { token } = config;
|
|
114
|
+
const value = `Bearer ${token}`;
|
|
115
|
+
const headers = new Headers(request.headers || '');
|
|
116
|
+
headers.append('authorization', value);
|
|
117
|
+
request.headers = headers.toString();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Applies the basic authorization data to the request.
|
|
121
|
+
*
|
|
122
|
+
* If the header value have changed then it fires `request-headers-changed` custom event.
|
|
123
|
+
* It sets computed value of the readers to the event's detail object.
|
|
124
|
+
*
|
|
125
|
+
* @param request The event's detail object. Changes made here will be propagated to the event.
|
|
126
|
+
* @param data The authorization data to apply.
|
|
127
|
+
*/
|
|
128
|
+
static applyRequestBasicAuthData(request, data) {
|
|
129
|
+
const { username = '', password = '' } = data;
|
|
130
|
+
const headers = new Headers(request.headers || '');
|
|
131
|
+
let hash;
|
|
132
|
+
const decoded = `${username}:${password}`;
|
|
133
|
+
if (typeof Buffer === 'function' && typeof Buffer.from === 'function') {
|
|
134
|
+
hash = Buffer.from(decoded).toString('base64');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
hash = btoa(decoded);
|
|
138
|
+
}
|
|
139
|
+
headers.set('authorization', `Basic ${hash}`);
|
|
140
|
+
request.headers = headers.toString();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=RequestAuthorizationProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestAuthorizationProcessor.js","sourceRoot":"","sources":["../../../../src/runtime/http-runner/RequestAuthorizationProcessor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD;;;GAGG;AACH,MAAM,OAAO,6BAA6B;IAExC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAqB,EAAE,aAAuC;QACpF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1D,OAAO,OAAO,CAAC;SAChB;QAED,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;YAChC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC1C,SAAS;aACV;YACD,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,OAAO;oBAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,MAA6B,CAAC,CAAC;oBAAC,MAAM;gBACxF,KAAK,SAAS;oBAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAA8B,CAAC,CAAC;oBAAC,MAAM;gBACxF,KAAK,SAAS;oBAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAA4B,CAAC,CAAC;oBAAC,MAAM;gBACtF,KAAK,QAAQ;oBAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAA8B,CAAC,CAAC;oBAAC,MAAM;gBACvF,QAAQ;aACT;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,aAAuC;QAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC1D,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACzB,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAA0B,CAAC;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACO,MAAM,CAAC,gBAAgB,CAAC,OAAqB,EAAE,MAA2B;QAClF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACO,MAAM,CAAC,aAAa,CAAC,OAAqB,EAAE,MAA4B;QAChF,MAAM,EAAE,WAAW,EAAE,SAAS,GAAC,QAAQ,EAAE,cAAc,GAAC,QAAQ,EAAE,YAAY,GAAC,eAAe,EAAE,GAAG,MAAM,CAAC;QAC1G,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QACD,MAAM,KAAK,GAAG,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;QAC5C,IAAI,cAAc,KAAK,QAAQ,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;SACtC;aAAM,IAAI,cAAc,KAAK,OAAO,EAAE;YACrC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;YACxB,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;aACjC;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM;aACP;SACF;IACH,CAAC;IAED;;OAEG;IACO,MAAM,CAAC,aAAa,CAAC,OAAqB,EAAE,MAA0B;QAC9E,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAC/B,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACrC;QACD,mGAAmG;QACnG,qHAAqH;IACvH,CAAC;IAED;;OAEG;IACO,MAAM,CAAC,aAAa,CAAC,OAAqB,EAAE,MAA4B;QAChF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,MAAM,KAAK,GAAG,UAAU,KAAK,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED;;;;;;;;OAQG;IACO,MAAM,CAAC,yBAAyB,CAAC,OAAqB,EAAE,IAAyB;QACzF,MAAM,EAAE,QAAQ,GAAC,EAAE,EAAE,QAAQ,GAAC,EAAE,EAAE,GAAG,IAAI,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,IAAY,CAAC;QACjB,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAC1C,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;YACrE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;SACtB;QACD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IHttpCookie, HttpCookie } from "../../models/HttpCookie.js";
|
|
2
|
+
import { IHttpRequest } from "../../models/HttpRequest.js";
|
|
3
|
+
import { IRequestLog } from "../../models/RequestLog.js";
|
|
4
|
+
import { IResponse } from "../../models/Response.js";
|
|
5
|
+
import { IResponseRedirect } from '../../models/ResponseRedirect.js';
|
|
6
|
+
export declare class RequestCookiesProcessor {
|
|
7
|
+
/**
|
|
8
|
+
* Applies cookies to the request object.
|
|
9
|
+
*
|
|
10
|
+
* Note, this mutates the request object.
|
|
11
|
+
*
|
|
12
|
+
* @param request The request to which apply the cookies.
|
|
13
|
+
* @param cookies The cookies to apply
|
|
14
|
+
*/
|
|
15
|
+
static request(request: IHttpRequest, cookies?: (IHttpCookie | HttpCookie)[]): void;
|
|
16
|
+
/**
|
|
17
|
+
* Computes a list of cookies in the response. This includes the redirect cookies and the final response.
|
|
18
|
+
*
|
|
19
|
+
* @param log The HTTP log.
|
|
20
|
+
* @returns A map where keys are the URL of the request and the values are cookies. It may be empty map when no cookies.
|
|
21
|
+
*/
|
|
22
|
+
static response(log: IRequestLog): Record<string, HttpCookie[]> | undefined;
|
|
23
|
+
protected static extract(response: IResponse, url: string, redirects?: IResponseRedirect[]): Record<string, HttpCookie[]>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Headers } from '../../lib/headers/Headers.js';
|
|
2
|
+
import { CookieParser } from "../../cookies/CookieParser.js";
|
|
3
|
+
export class RequestCookiesProcessor {
|
|
4
|
+
/**
|
|
5
|
+
* Applies cookies to the request object.
|
|
6
|
+
*
|
|
7
|
+
* Note, this mutates the request object.
|
|
8
|
+
*
|
|
9
|
+
* @param request The request to which apply the cookies.
|
|
10
|
+
* @param cookies The cookies to apply
|
|
11
|
+
*/
|
|
12
|
+
static request(request, cookies) {
|
|
13
|
+
if (!Array.isArray(cookies) || !cookies.length) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const header = cookies.map((c) => `${c.name}=${c.value}`).join('; ');
|
|
17
|
+
const headers = new Headers(request.headers);
|
|
18
|
+
headers.append('cookie', header);
|
|
19
|
+
request.headers = headers.toString();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Computes a list of cookies in the response. This includes the redirect cookies and the final response.
|
|
23
|
+
*
|
|
24
|
+
* @param log The HTTP log.
|
|
25
|
+
* @returns A map where keys are the URL of the request and the values are cookies. It may be empty map when no cookies.
|
|
26
|
+
*/
|
|
27
|
+
static response(log) {
|
|
28
|
+
if (!log.response || !log.request) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const typedError = log.response;
|
|
32
|
+
if (typedError.error) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const typedResponse = log.response;
|
|
36
|
+
return this.extract(typedResponse, log.request.url, log.redirects);
|
|
37
|
+
}
|
|
38
|
+
static extract(response, url, redirects) {
|
|
39
|
+
const result = {};
|
|
40
|
+
let redirectUrl = url;
|
|
41
|
+
if (redirects && redirects.length) {
|
|
42
|
+
for (const redirect of redirects) {
|
|
43
|
+
const headers = new Headers(redirect.response.headers);
|
|
44
|
+
const sc = headers.get('set-cookie');
|
|
45
|
+
if (sc) {
|
|
46
|
+
const cookies = CookieParser.parse(redirectUrl, sc);
|
|
47
|
+
if (cookies.length) {
|
|
48
|
+
result[redirectUrl] = cookies;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
redirectUrl = redirect.url;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const headers = new Headers(response.headers);
|
|
55
|
+
const sc = headers.get('set-cookie');
|
|
56
|
+
if (sc) {
|
|
57
|
+
const cookies = CookieParser.parse(redirectUrl, sc);
|
|
58
|
+
if (cookies.length) {
|
|
59
|
+
result[redirectUrl] = cookies;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=RequestCookiesProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestCookiesProcessor.js","sourceRoot":"","sources":["../../../../src/runtime/http-runner/RequestCookiesProcessor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,OAAO,uBAAuB;IAClC;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,OAAqB,EAAE,OAAsC;QAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC9C,OAAO;SACR;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAgB;QAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YACjC,OAAO;SACR;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,QAA0B,CAAC;QAClD,IAAI,UAAU,CAAC,KAAK,EAAE;YACpB,OAAO;SACR;QACD,MAAM,aAAa,GAAG,GAAG,CAAC,QAAqB,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAES,MAAM,CAAC,OAAO,CAAC,QAAmB,EAAE,GAAW,EAAE,SAA+B;QACxF,MAAM,MAAM,GAAiC,EAAE,CAAC;QAChD,IAAI,WAAW,GAAG,GAAG,CAAC;QACtB,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;YACjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACrC,IAAI,EAAE,EAAE;oBACN,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBACpD,IAAI,OAAO,CAAC,MAAM,EAAE;wBAClB,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;qBAC/B;iBACF;gBACD,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;aAC5B;SACF;QAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,EAAE,EAAE;YACN,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;aAC/B;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -2,7 +2,8 @@ import { IProjectRequestIterator, IHttpProject } from '../../models/HttpProject.
|
|
|
2
2
|
import { Environment } from '../../models/Environment.js';
|
|
3
3
|
import { Logger } from '../../lib/logging/Logger.js';
|
|
4
4
|
import { IRequestLog } from '../../models/RequestLog.js';
|
|
5
|
-
|
|
5
|
+
import { CookieJar } from '../../cookies/CookieJar.js';
|
|
6
|
+
export interface IRequestRunnerOptions {
|
|
6
7
|
/**
|
|
7
8
|
* When provided it overrides any project / folder defined environment.
|
|
8
9
|
*/
|
|
@@ -19,14 +20,24 @@ export interface ProjectRunnerOptions {
|
|
|
19
20
|
*/
|
|
20
21
|
logger?: Logger;
|
|
21
22
|
/**
|
|
22
|
-
*
|
|
23
|
-
* By default it creates its own target.
|
|
23
|
+
* An instance of a cookie jar (store) to put/read cookies.
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
cookies?: CookieJar;
|
|
26
26
|
}
|
|
27
|
-
export interface
|
|
27
|
+
export interface IRequestRunnerRunOptions extends IProjectRequestIterator {
|
|
28
28
|
}
|
|
29
|
-
export interface
|
|
29
|
+
export interface IProjectExecutionResult {
|
|
30
|
+
/**
|
|
31
|
+
* The variables evaluated during the run.
|
|
32
|
+
* These variables have values set by requests' HTTP flows.
|
|
33
|
+
*/
|
|
34
|
+
variables: Record<string, string>;
|
|
35
|
+
/**
|
|
36
|
+
* The executed items.
|
|
37
|
+
*/
|
|
38
|
+
items: IRunResult[];
|
|
39
|
+
}
|
|
40
|
+
export interface IRunResult {
|
|
30
41
|
/**
|
|
31
42
|
* The key of the request from the HttpProject that was executed.
|
|
32
43
|
*/
|
|
@@ -117,4 +128,8 @@ export interface IProjectRunnerOptions {
|
|
|
117
128
|
* It aborts the execution when the ``abort` event is dispatched.
|
|
118
129
|
*/
|
|
119
130
|
signal?: AbortSignal;
|
|
131
|
+
/**
|
|
132
|
+
* An instance of a cookie jar (store) to put/read cookies.
|
|
133
|
+
*/
|
|
134
|
+
cookies?: CookieJar;
|
|
120
135
|
}
|
|
@@ -115,7 +115,9 @@ export class ProjectParallelRunner extends BaseRunner {
|
|
|
115
115
|
}
|
|
116
116
|
catch (e) {
|
|
117
117
|
const cause = e;
|
|
118
|
-
this.mainRejecter
|
|
118
|
+
if (this.mainRejecter) {
|
|
119
|
+
this.mainRejecter(cause);
|
|
120
|
+
}
|
|
119
121
|
this.mainResolver = undefined;
|
|
120
122
|
this.mainRejecter = undefined;
|
|
121
123
|
this._state = State.Idle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectParallelRunner.js","sourceRoot":"","sources":["../../../../src/runtime/node/ProjectParallelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,OAAmB,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;AAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AA6C1D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACnD,OAAO,CAAc;IACrB,OAAO,CAAgC;IACvC,OAAO,GAAyB,EAAE,CAAC;IAC3B,YAAY,CAA0C;IACtD,YAAY,CAAwB;IAE5C,YAAY,OAAoB,EAAE,OAAsC,EAAE;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC3B;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAES,MAAM,GAAU,KAAK,CAAC,IAAI,CAAC;IAErC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,OAAO,CAAe;IAEhC;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,CAAC,KAA8B;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACtD;QACD,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACrD;IACH,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;gBAC3B,IAAI;oBACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;iBACvB;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM;iBACP;gBACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ProjectParallelRunner.js","sourceRoot":"","sources":["../../../../src/runtime/node/ProjectParallelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,OAAmB,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;AAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AA6C1D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACnD,OAAO,CAAc;IACrB,OAAO,CAAgC;IACvC,OAAO,GAAyB,EAAE,CAAC;IAC3B,YAAY,CAA0C;IACtD,YAAY,CAAwB;IAE5C,YAAY,OAAoB,EAAE,OAAsC,EAAE;QACxE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC3B;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAES,MAAM,GAAU,KAAK,CAAC,IAAI,CAAC;IAErC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,OAAO,CAAe;IAEhC;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,CAAC,KAA8B;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACtD;QACD,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACrD;IACH,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;gBAC3B,IAAI;oBACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;iBACvB;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM;iBACP;gBACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;SAC/B;IACH,CAAC;IAED;;OAEG;IACO,aAAa;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAgB,CAAC;QACrC,IAAI;YACF,OAAO,CAAC,YAAY,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC;gBAC/C,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC1B;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SACvC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,KAAK,GAAG,CAAU,CAAC;YACzB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC1B;YACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;YAC7B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;YAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAa,CAAC;SACnC;IACH,CAAC;IAEO,gBAAgB;QACtB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAS,CAAC;YAC9B,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,oBAAoB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxC,IAAI,mBAAmB,GAAG,UAAU,GAAG,OAAO,CAAC;QAC/C,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,OAAO,mBAAmB,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;YAC3C,mBAAmB,EAAE,CAAC;YACtB,YAAY,EAAE,CAAC;YACf,IAAI,YAAY,GAAG,CAAC,KAAK,OAAO,EAAE;gBAChC,YAAY,GAAG,CAAC,CAAC;aAClB;SACF;IACH,CAAC;IAEO,WAAW,CAAC,MAAc;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,MAAM;YACN,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,OAAuB;QAC7D,QAAQ,OAAO,CAAC,GAAG,EAAE;YACnB,KAAK,QAAQ;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM;YAC7C,KAAK,QAAQ;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAAC,MAAM;YACzD,KAAK,OAAO;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAAC,MAAM;SACxD;IACH,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,YAAY,CAAC,MAAc,EAAE,OAAuB;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAoC,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,YAAY;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE;YACX,OAAO;SACR;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAkC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAChG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO;SACR;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACjC,OAAO;SACR;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;QAC7B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAa,CAAC;IACpC,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,OAAuB;QACzD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAc,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -8,8 +8,11 @@ import { ProjectRequest } from '../../models/ProjectRequest.js';
|
|
|
8
8
|
import { IHttpRequest } from '../../models/HttpRequest.js';
|
|
9
9
|
import { HttpProject } from '../../models/HttpProject.js';
|
|
10
10
|
import { VariablesProcessor } from '../variables/VariablesProcessor.js';
|
|
11
|
-
import {
|
|
11
|
+
import { IProjectExecutionResult, IRequestRunnerOptions, IRequestRunnerRunOptions, IRunResult } from './InteropInterfaces.js';
|
|
12
12
|
import { State } from './enums.js';
|
|
13
|
+
import { CookieJar } from '../../cookies/CookieJar.js';
|
|
14
|
+
import { AppProject, AppProjectFolder, AppProjectItem, AppProjectRequest } from '../../models/AppProject.js';
|
|
15
|
+
import { ProjectItem } from '../../models/ProjectItem.js';
|
|
13
16
|
export interface ProjectRequestRunner {
|
|
14
17
|
/**
|
|
15
18
|
* The request object is prepared and about to be sent to the HTTP engine
|
|
@@ -44,9 +47,12 @@ export interface ProjectRequestRunner {
|
|
|
44
47
|
* Requests are executed in order defined in the folder.
|
|
45
48
|
*/
|
|
46
49
|
export declare class ProjectRequestRunner extends EventEmitter {
|
|
47
|
-
eventTarget: EventTarget;
|
|
48
50
|
logger?: Logger;
|
|
49
|
-
project: HttpProject;
|
|
51
|
+
project: HttpProject | AppProject;
|
|
52
|
+
/**
|
|
53
|
+
* An instance of a cookie jar (store) to put/read cookies.
|
|
54
|
+
*/
|
|
55
|
+
cookies?: CookieJar;
|
|
50
56
|
protected masterEnvironment?: Environment;
|
|
51
57
|
protected extraVariables?: Record<string, string>;
|
|
52
58
|
/**
|
|
@@ -55,13 +61,21 @@ export declare class ProjectRequestRunner extends EventEmitter {
|
|
|
55
61
|
protected variablesProcessor: VariablesProcessor;
|
|
56
62
|
protected _state: State;
|
|
57
63
|
get state(): State;
|
|
58
|
-
constructor(project: HttpProject, opts?:
|
|
64
|
+
constructor(project: HttpProject | AppProject, opts?: IRequestRunnerOptions);
|
|
59
65
|
/**
|
|
60
66
|
* Runs the request from the project root or a specified folder.
|
|
61
67
|
* @param options Run options.
|
|
62
68
|
* @returns A promise with the run result.
|
|
63
69
|
*/
|
|
64
|
-
run(options?:
|
|
70
|
+
run(options?: IRequestRunnerRunOptions): Promise<IProjectExecutionResult>;
|
|
71
|
+
/**
|
|
72
|
+
* Creates an async iterator that allows to iterate over execution results.
|
|
73
|
+
* The result is yielded after the request is executed.
|
|
74
|
+
*
|
|
75
|
+
* @param options The iterator configuration.
|
|
76
|
+
*/
|
|
77
|
+
protected runIterator(options?: IRequestRunnerRunOptions, variables?: Record<string, string>): AsyncGenerator<IRunResult>;
|
|
78
|
+
protected _runIterator(items: (ProjectItem | AppProjectItem)[], variables: Record<string, string>, options: IRequestRunnerRunOptions): AsyncGenerator<IRunResult>;
|
|
65
79
|
/**
|
|
66
80
|
* Aborts the current run.
|
|
67
81
|
* The promise returned by the `run()` method will reject if not yet resolved.
|
|
@@ -80,15 +94,15 @@ export declare class ProjectRequestRunner extends EventEmitter {
|
|
|
80
94
|
* }
|
|
81
95
|
* ```
|
|
82
96
|
*/
|
|
83
|
-
[Symbol.asyncIterator](): AsyncGenerator<
|
|
97
|
+
[Symbol.asyncIterator](): AsyncGenerator<IRunResult>;
|
|
84
98
|
private _runItem;
|
|
85
|
-
protected execute(request: ProjectRequest, variables: Record<string, string>): Promise<
|
|
86
|
-
protected getVariables(parent: HttpProject | ProjectFolder): Promise<Record<string, string>>;
|
|
87
|
-
protected createEnvironment(parent: HttpProject | ProjectFolder): Promise<Record<string, string>>;
|
|
99
|
+
protected execute(request: ProjectRequest | AppProjectRequest, variables: Record<string, string>): Promise<IRunResult>;
|
|
100
|
+
protected getVariables(parent: HttpProject | AppProject | ProjectFolder | AppProjectFolder): Promise<Record<string, string>>;
|
|
101
|
+
protected createEnvironment(parent: HttpProject | AppProject | ProjectFolder | AppProjectFolder): Promise<Record<string, string>>;
|
|
88
102
|
/**
|
|
89
103
|
* Reads the list of the environments to apply to this runtime.
|
|
90
104
|
*/
|
|
91
|
-
protected readEnvironments(parent: HttpProject | ProjectFolder): Promise<Environment[]>;
|
|
105
|
+
protected readEnvironments(parent: HttpProject | AppProject | ProjectFolder | AppProjectFolder): Promise<Environment[]>;
|
|
92
106
|
/**
|
|
93
107
|
* Reads the variables and the base URI from the passed environments.
|
|
94
108
|
*/
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
import { Kind as EnvironmentKind } from '../../models/Environment.js';
|
|
2
3
|
import { RequestLog } from '../../models/RequestLog.js';
|
|
3
4
|
import { Kind as ProjectFolderKind } from '../../models/ProjectFolder.js';
|
|
5
|
+
import { Kind as ProjectRequestKind } from '../../models/ProjectRequest.js';
|
|
4
6
|
import { SentRequest } from '../../models/SentRequest.js';
|
|
5
7
|
import { ErrorResponse } from '../../models/ErrorResponse.js';
|
|
6
|
-
import { VariablesStore } from './VariablesStore.js';
|
|
7
8
|
import { VariablesProcessor } from '../variables/VariablesProcessor.js';
|
|
8
|
-
import { RequestFactory } from './RequestFactory.js';
|
|
9
|
-
import { EventTypes } from '../../events/EventTypes.js';
|
|
10
9
|
import { State } from './enums.js';
|
|
10
|
+
import { HttpRequestRunner } from '../http-runner/HttpRequestRunner.js';
|
|
11
|
+
import { AppProjectFolderKind, AppProjectRequestKind } from '../../models/AppProject.js';
|
|
11
12
|
/**
|
|
12
13
|
* Runs requests in a project.
|
|
13
14
|
* Developers can run the entire project with the `recursive` flag set. They can also
|
|
@@ -16,9 +17,12 @@ import { State } from './enums.js';
|
|
|
16
17
|
* Requests are executed in order defined in the folder.
|
|
17
18
|
*/
|
|
18
19
|
export class ProjectRequestRunner extends EventEmitter {
|
|
19
|
-
eventTarget;
|
|
20
20
|
logger;
|
|
21
21
|
project;
|
|
22
|
+
/**
|
|
23
|
+
* An instance of a cookie jar (store) to put/read cookies.
|
|
24
|
+
*/
|
|
25
|
+
cookies;
|
|
22
26
|
masterEnvironment;
|
|
23
27
|
extraVariables;
|
|
24
28
|
/**
|
|
@@ -33,25 +37,111 @@ export class ProjectRequestRunner extends EventEmitter {
|
|
|
33
37
|
super();
|
|
34
38
|
this.project = project;
|
|
35
39
|
this.logger = opts.logger;
|
|
36
|
-
this.eventTarget = opts.eventTarget || new EventTarget();
|
|
37
40
|
this.masterEnvironment = opts.environment;
|
|
38
41
|
this.extraVariables = opts.variables;
|
|
42
|
+
this.cookies = opts.cookies;
|
|
39
43
|
}
|
|
40
44
|
/**
|
|
41
45
|
* Runs the request from the project root or a specified folder.
|
|
42
46
|
* @param options Run options.
|
|
43
47
|
* @returns A promise with the run result.
|
|
44
48
|
*/
|
|
45
|
-
async run(options) {
|
|
46
|
-
this._state = State.Running;
|
|
49
|
+
async run(options = {}) {
|
|
47
50
|
const { project } = this;
|
|
51
|
+
const root = options.parent ? project.findFolder(options.parent) : project;
|
|
52
|
+
if (!root) {
|
|
53
|
+
throw new Error(`The parent folder not found: ${options.parent}.`);
|
|
54
|
+
}
|
|
55
|
+
const variables = await this.getVariables(root);
|
|
48
56
|
const executed = [];
|
|
49
|
-
for (const
|
|
50
|
-
|
|
51
|
-
|
|
57
|
+
for await (const result of this.runIterator(options, variables)) {
|
|
58
|
+
executed.push(result);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
items: executed,
|
|
62
|
+
variables,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Creates an async iterator that allows to iterate over execution results.
|
|
67
|
+
* The result is yielded after the request is executed.
|
|
68
|
+
*
|
|
69
|
+
* @param options The iterator configuration.
|
|
70
|
+
*/
|
|
71
|
+
async *runIterator(options = {}, variables) {
|
|
72
|
+
const { project } = this;
|
|
73
|
+
const root = options.parent ? project.findFolder(options.parent) : project;
|
|
74
|
+
if (!root) {
|
|
75
|
+
throw new Error(`The parent folder not found: ${options.parent}.`);
|
|
76
|
+
}
|
|
77
|
+
this._state = State.Running;
|
|
78
|
+
const envVariables = variables || await this.getVariables(root);
|
|
79
|
+
const { items } = root;
|
|
80
|
+
const it = this._runIterator(items, envVariables, options);
|
|
81
|
+
for await (const request of it) {
|
|
82
|
+
yield request;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async *_runIterator(items, variables, options) {
|
|
86
|
+
for (const item of items) {
|
|
87
|
+
const current = item.getItem();
|
|
88
|
+
if (!current) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (current.kind === AppProjectRequestKind || current.kind === ProjectRequestKind) {
|
|
92
|
+
if (Array.isArray(options.ignore) && options.ignore.includes(current.key)) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (Array.isArray(options.requests) && !options.requests.includes(current.key) && !options.requests.includes(current.info.name || '')) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const info = await this._runItem(current, variables);
|
|
99
|
+
yield info;
|
|
100
|
+
}
|
|
101
|
+
else if (current.kind === ProjectFolderKind || current.kind === AppProjectFolderKind) {
|
|
102
|
+
if (!options.recursive) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const parent = current;
|
|
106
|
+
// make a copy so the variables executed in the encapsulated environment won't leak out to the current environment.
|
|
107
|
+
let encapsulated = false;
|
|
108
|
+
// we restore the `baseUri` after exiting the folder.
|
|
109
|
+
const currentBaseUri = variables.baseUri;
|
|
110
|
+
const { items: parentItems } = parent;
|
|
111
|
+
const envItem = parentItems.find(i => i.kind === EnvironmentKind);
|
|
112
|
+
let parentVariables = {};
|
|
113
|
+
let childVariables = variables;
|
|
114
|
+
if (envItem) {
|
|
115
|
+
const parentEnv = envItem.getItem();
|
|
116
|
+
if (parentEnv) {
|
|
117
|
+
encapsulated = parentEnv.encapsulated;
|
|
118
|
+
parentVariables = await this.applyVariables([parentEnv]);
|
|
119
|
+
if (encapsulated) {
|
|
120
|
+
childVariables = parentVariables;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
childVariables = { ...childVariables, ...parentVariables };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const it = this._runIterator(parentItems, childVariables, options);
|
|
128
|
+
for await (const request of it) {
|
|
129
|
+
yield request;
|
|
130
|
+
}
|
|
131
|
+
if (!encapsulated) {
|
|
132
|
+
// now we set the variables set on children to the main variables object, except for these
|
|
133
|
+
// declared on the child environments, so these won't leak to other folders.
|
|
134
|
+
// However, variables set by a request in a folder always is propagated to the main environment.
|
|
135
|
+
const ignore = Object.keys(parentVariables);
|
|
136
|
+
Object.keys(childVariables).forEach((key) => {
|
|
137
|
+
if (!ignore.includes(key)) {
|
|
138
|
+
variables[key] = childVariables[key];
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
variables.baseUri = currentBaseUri;
|
|
143
|
+
}
|
|
52
144
|
}
|
|
53
|
-
this._state = State.Idle;
|
|
54
|
-
return executed;
|
|
55
145
|
}
|
|
56
146
|
/**
|
|
57
147
|
* Aborts the current run.
|
|
@@ -74,29 +164,16 @@ export class ProjectRequestRunner extends EventEmitter {
|
|
|
74
164
|
* ```
|
|
75
165
|
*/
|
|
76
166
|
async *[Symbol.asyncIterator]() {
|
|
77
|
-
const {
|
|
78
|
-
|
|
79
|
-
for (const request of project.requestIterator({ recursive: true })) {
|
|
80
|
-
const info = await this._runItem(request);
|
|
81
|
-
yield info;
|
|
167
|
+
for await (const result of this.runIterator({ recursive: true })) {
|
|
168
|
+
yield result;
|
|
82
169
|
}
|
|
83
|
-
this._state = State.Idle;
|
|
84
170
|
}
|
|
85
|
-
async _runItem(request) {
|
|
171
|
+
async _runItem(request, variables) {
|
|
86
172
|
if (this._state === State.Aborted) {
|
|
87
173
|
throw new Error(`The execution has been aborted.`);
|
|
88
174
|
}
|
|
89
|
-
const folder = request.getParent();
|
|
90
|
-
const parent = folder || this.project;
|
|
91
|
-
let variables;
|
|
92
|
-
if (VariablesStore.has(parent)) {
|
|
93
|
-
variables = VariablesStore.get(parent);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
variables = await this.getVariables(parent);
|
|
97
|
-
VariablesStore.set(parent, variables);
|
|
98
|
-
}
|
|
99
175
|
const info = await this.execute(request, variables);
|
|
176
|
+
const folder = request.getParent();
|
|
100
177
|
if (folder && folder !== this.project) {
|
|
101
178
|
info.parent = folder.key;
|
|
102
179
|
}
|
|
@@ -104,13 +181,13 @@ export class ProjectRequestRunner extends EventEmitter {
|
|
|
104
181
|
}
|
|
105
182
|
async execute(request, variables) {
|
|
106
183
|
const config = request.getConfig();
|
|
107
|
-
const factory = new
|
|
184
|
+
const factory = new HttpRequestRunner();
|
|
108
185
|
factory.variables = variables;
|
|
109
186
|
if (request.authorization) {
|
|
110
187
|
factory.authorization = request.authorization.map(i => i.toJSON());
|
|
111
188
|
}
|
|
112
|
-
if (request.
|
|
113
|
-
factory.
|
|
189
|
+
if (request.flows) {
|
|
190
|
+
factory.flows = request.flows;
|
|
114
191
|
}
|
|
115
192
|
if (request.clientCertificate) {
|
|
116
193
|
factory.certificates = [request.clientCertificate.toJSON()];
|
|
@@ -121,27 +198,22 @@ export class ProjectRequestRunner extends EventEmitter {
|
|
|
121
198
|
if (this.logger) {
|
|
122
199
|
factory.logger = this.logger;
|
|
123
200
|
}
|
|
201
|
+
if (this.cookies) {
|
|
202
|
+
factory.cookies = this.cookies;
|
|
203
|
+
}
|
|
124
204
|
const info = {
|
|
125
205
|
key: request.key,
|
|
126
206
|
};
|
|
127
207
|
const requestData = request.expects.toJSON();
|
|
128
208
|
requestData.url = this.prepareRequestUrl(requestData.url, variables);
|
|
129
|
-
function variableHandler(e) {
|
|
130
|
-
if (e.defaultPrevented) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const { name, value } = e.detail;
|
|
134
|
-
variables[name] = value;
|
|
135
|
-
e.preventDefault();
|
|
136
|
-
e.detail.result = Promise.resolve();
|
|
137
|
-
}
|
|
138
|
-
this.eventTarget.addEventListener(EventTypes.Environment.set, variableHandler);
|
|
139
209
|
try {
|
|
140
210
|
// Below replaces the single call to the `run()` function of the factory to
|
|
141
211
|
// report via the events a request object that has evaluated with the Jexl library.
|
|
142
|
-
const requestCopy = await factory.
|
|
212
|
+
const requestCopy = await factory.applyVariables(requestData);
|
|
213
|
+
await factory.applyAuthorization(requestCopy);
|
|
214
|
+
await factory.applyCookies(requestCopy);
|
|
143
215
|
this.emit('request', request.key, { ...requestCopy });
|
|
144
|
-
await factory.
|
|
216
|
+
await factory.runRequestFlows(requestCopy);
|
|
145
217
|
const result = await factory.executeRequest(requestCopy);
|
|
146
218
|
result.requestId = request.key;
|
|
147
219
|
await factory.processResponse(result);
|
|
@@ -158,7 +230,6 @@ export class ProjectRequestRunner extends EventEmitter {
|
|
|
158
230
|
const log = RequestLog.fromRequestResponse(sent.toJSON(), response.toJSON()).toJSON();
|
|
159
231
|
this.emit('error', request.key, log, info.errorMessage);
|
|
160
232
|
}
|
|
161
|
-
this.eventTarget.removeEventListener(EventTypes.Environment.set, variableHandler);
|
|
162
233
|
return info;
|
|
163
234
|
}
|
|
164
235
|
async getVariables(parent) {
|