@api-client/ui 0.0.5 → 0.0.8
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/demo/elements/http/http-assertions.html +3 -0
- package/demo/elements/http/http-assertions.ts +1 -1
- package/demo/elements/http/http-flows.html +23 -0
- package/demo/elements/http/http-flows.ts +92 -0
- package/demo/elements/http/index.html +3 -0
- package/demo/pages/http-project/main.ts +5 -6
- package/dist/bindings/base/StoreBindings.js +4 -4
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
- package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
- package/dist/define/http/http-assertions.d.ts +1 -1
- package/dist/define/http/http-assertions.d.ts.map +1 -1
- package/dist/define/http/http-assertions.js +3 -3
- package/dist/define/http/http-assertions.js.map +1 -1
- package/dist/define/http/http-flows.d.ts +10 -0
- package/dist/define/http/http-flows.d.ts.map +1 -0
- package/dist/define/http/http-flows.js +13 -0
- package/dist/define/http/http-flows.js.map +1 -0
- package/dist/define/ui/ui-divider.d.ts +4 -1
- package/dist/define/ui/ui-divider.d.ts.map +1 -1
- package/dist/define/ui/ui-divider.js +11 -2
- package/dist/define/ui/ui-divider.js.map +1 -1
- package/dist/elements/ApiElement.d.ts +4 -0
- package/dist/elements/ApiElement.d.ts.map +1 -1
- package/dist/elements/ApiElement.js +6 -0
- package/dist/elements/ApiElement.js.map +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.js +2 -1
- package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequest.element.js +1 -1
- package/dist/elements/amf/ApiRequest.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
- package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.js +0 -3
- package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
- package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
- package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
- package/dist/elements/authorization/ui/Authorization.js +0 -3
- package/dist/elements/authorization/ui/Authorization.js.map +1 -1
- package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
- package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
- package/dist/elements/dialog/Rename.d.ts +7 -6
- package/dist/elements/dialog/Rename.d.ts.map +1 -1
- package/dist/elements/dialog/Rename.js +7 -6
- package/dist/elements/dialog/Rename.js.map +1 -1
- package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
- package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/SetCookieAction.element.js +173 -0
- package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
- package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
- package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.js +69 -23
- package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
- package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
- package/dist/elements/environment/ServerEditor.d.ts +3 -3
- package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
- package/dist/elements/environment/ServerEditor.js +3 -6
- package/dist/elements/environment/ServerEditor.js.map +1 -1
- package/dist/elements/environment/VariablesEditor.d.ts +0 -1
- package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
- package/dist/elements/environment/VariablesEditor.js +3 -6
- package/dist/elements/environment/VariablesEditor.js.map +1 -1
- package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
- package/dist/elements/highlight/Prism.styles.js +12 -5
- package/dist/elements/highlight/Prism.styles.js.map +1 -1
- package/dist/elements/http/BodyEditor.d.ts +0 -4
- package/dist/elements/http/BodyEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyEditor.js +10 -16
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
- package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.js +3 -19
- package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
- package/dist/elements/http/BodyTextEditor.d.ts +0 -1
- package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyTextEditor.js +0 -3
- package/dist/elements/http/BodyTextEditor.js.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.js +3 -5
- package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/dist/elements/http/HeadersForm.d.ts +0 -4
- package/dist/elements/http/HeadersForm.d.ts.map +1 -1
- package/dist/elements/http/HeadersForm.js +0 -6
- package/dist/elements/http/HeadersForm.js.map +1 -1
- package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
- package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
- package/dist/elements/http/HttpAssertions.element.js +264 -0
- package/dist/elements/http/HttpAssertions.element.js.map +1 -0
- package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
- package/dist/elements/http/HttpAssertions.styles.js +7 -156
- package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
- package/dist/elements/http/HttpFlows.common.d.ts +3 -0
- package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.common.js +181 -0
- package/dist/elements/http/HttpFlows.common.js.map +1 -0
- package/dist/elements/http/HttpFlows.element.d.ts +97 -0
- package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.element.js +684 -0
- package/dist/elements/http/HttpFlows.element.js.map +1 -0
- package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
- package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.styles.js +28 -0
- package/dist/elements/http/HttpFlows.styles.js.map +1 -0
- package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
- package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
- package/dist/elements/http/HttpFlowsUi.js +1256 -0
- package/dist/elements/http/HttpFlowsUi.js.map +1 -0
- package/dist/elements/http/RequestConfigElement.d.ts +0 -1
- package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
- package/dist/elements/http/RequestConfigElement.js +8 -11
- package/dist/elements/http/RequestConfigElement.js.map +1 -1
- package/dist/elements/http/RequestEditor.d.ts +10 -10
- package/dist/elements/http/RequestEditor.d.ts.map +1 -1
- package/dist/elements/http/RequestEditor.js +62 -23
- package/dist/elements/http/RequestEditor.js.map +1 -1
- package/dist/elements/http/UrlInput.d.ts +3 -3
- package/dist/elements/http/UrlInput.d.ts.map +1 -1
- package/dist/elements/http/UrlInput.js +2 -2
- package/dist/elements/http/UrlInput.js.map +1 -1
- package/dist/elements/http/UrlParamsForm.d.ts +0 -1
- package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
- package/dist/elements/http/UrlParamsForm.js +0 -3
- package/dist/elements/http/UrlParamsForm.js.map +1 -1
- package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
- package/dist/elements/layout/SplitView.styles.js +1 -0
- package/dist/elements/layout/SplitView.styles.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
- package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
- package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +14 -5
- package/dist/elements/project/HttpProjectRequest.js.map +1 -1
- package/dist/elements/project/ProjectRunner.d.ts +0 -1
- package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
- package/dist/elements/project/ProjectRunner.js +1 -4
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.js +2 -5
- package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.js +5 -5
- package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
- package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.js +4 -7
- package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.js +4 -7
- package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
- package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.js +8 -11
- package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
- package/dist/pages/ApplicationScreen.d.ts +1 -1
- package/dist/pages/ApplicationScreen.d.ts.map +1 -1
- package/dist/pages/ApplicationScreen.js +1 -1
- package/dist/pages/ApplicationScreen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.js +22 -3
- package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
- package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +19 -3
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.js +4 -2
- package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.js +5 -0
- package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
- package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +2 -1
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
- package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +14 -15
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/http-project/types.d.ts +8 -6
- package/dist/pages/http-project/types.d.ts.map +1 -1
- package/dist/pages/http-project/types.js.map +1 -1
- package/dist/styles/m3/surface.module.d.ts.map +1 -1
- package/dist/styles/m3/surface.module.js +11 -27
- package/dist/styles/m3/surface.module.js.map +1 -1
- package/dist/ui/UiElement.d.ts +4 -0
- package/dist/ui/UiElement.d.ts.map +1 -1
- package/dist/ui/UiElement.js +6 -0
- package/dist/ui/UiElement.js.map +1 -1
- package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
- package/dist/ui/button/SegmentedButton.styles.js +3 -1
- package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
- package/dist/ui/dialog/UiDialog.d.ts +3 -0
- package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
- package/dist/ui/dialog/UiDialog.js +3 -0
- package/dist/ui/dialog/UiDialog.js.map +1 -1
- package/dist/ui/effects/ripple.d.ts.map +1 -1
- package/dist/ui/effects/ripple.js +5 -1
- package/dist/ui/effects/ripple.js.map +1 -1
- package/dist/ui/icons/Icons.d.ts +3 -2
- package/dist/ui/icons/Icons.d.ts.map +1 -1
- package/dist/ui/icons/Icons.js +2 -1
- package/dist/ui/icons/Icons.js.map +1 -1
- package/dist/ui/input/CheckedElement.d.ts +1 -1
- package/dist/ui/input/CheckedElement.d.ts.map +1 -1
- package/dist/ui/input/CheckedElement.js +3 -3
- package/dist/ui/input/CheckedElement.js.map +1 -1
- package/dist/ui/input/Input.js +1 -1
- package/dist/ui/input/Input.js.map +1 -1
- package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
- package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.element.js +39 -0
- package/dist/ui/list/UiDivider.element.js.map +1 -0
- package/dist/ui/list/UiDivider.styles.d.ts +3 -0
- package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.styles.js +49 -0
- package/dist/ui/list/UiDivider.styles.js.map +1 -0
- package/dist/ui/tabs/UiTabs.d.ts +13 -1
- package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
- package/dist/ui/tabs/UiTabs.js +42 -13
- package/dist/ui/tabs/UiTabs.js.map +1 -1
- package/package.json +1 -1
- package/src/bindings/base/StoreBindings.ts +4 -4
- package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
- package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
- package/src/define/http/http-assertions.ts +3 -3
- package/src/define/http/http-flows.ts +15 -0
- package/src/define/ui/ui-divider.ts +7 -2
- package/src/elements/ApiElement.ts +7 -0
- package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
- package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
- package/src/elements/amf/ApiRequest.element.ts +1 -1
- package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
- package/src/elements/authorization/ui/Authorization.ts +3 -5
- package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
- package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
- package/src/elements/dialog/Rename.ts +8 -7
- package/src/elements/dialog/SetCookieAction.element.ts +183 -0
- package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
- package/src/elements/environment/EnvironmentEditor.ts +81 -22
- package/src/elements/environment/ServerEditor.ts +4 -8
- package/src/elements/environment/VariablesEditor.ts +3 -7
- package/src/elements/highlight/Prism.styles.ts +12 -5
- package/src/elements/http/BodyEditor.ts +10 -17
- package/src/elements/http/BodyMultipartEditor.ts +3 -20
- package/src/elements/http/BodyTextEditor.ts +0 -4
- package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
- package/src/elements/http/HeadersForm.ts +2 -9
- package/src/elements/http/HttpAssertions.element.ts +286 -0
- package/src/elements/http/HttpAssertions.styles.ts +7 -156
- package/src/elements/http/HttpFlows.common.ts +181 -0
- package/src/elements/http/HttpFlows.element.ts +722 -0
- package/src/elements/http/HttpFlows.styles.ts +29 -0
- package/src/elements/http/HttpFlowsUi.ts +1327 -0
- package/src/elements/http/RequestConfigElement.ts +10 -14
- package/src/elements/http/RequestEditor.ts +77 -35
- package/src/elements/http/UrlInput.ts +6 -6
- package/src/elements/http/UrlParamsForm.ts +2 -6
- package/src/elements/layout/SplitView.styles.ts +1 -0
- package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
- package/src/elements/project/HttpProjectRequest.ts +16 -5
- package/src/elements/project/ProjectRunner.ts +3 -7
- package/src/elements/schema-design/AssociationFormElement.ts +4 -8
- package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
- package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
- package/src/elements/schema-design/EntityFormElement.ts +6 -10
- package/src/elements/schema-design/PropertyFormElement.ts +11 -15
- package/src/pages/ApplicationScreen.ts +1 -1
- package/src/pages/api-client/ApiClient.styles.ts +22 -3
- package/src/pages/api-client/Authenticate.screen.ts +19 -3
- package/src/pages/api-client/StoreConfig.screen.ts +4 -2
- package/src/pages/api-client/StoreConfig.styles.ts +5 -0
- package/src/pages/api-client/pages/Files.page.ts +2 -1
- package/src/pages/http-project/HttpProject.screen.ts +14 -26
- package/src/pages/http-project/types.ts +8 -6
- package/src/styles/m3/surface.module.ts +11 -27
- package/src/styles/m3/theme.css +36 -0
- package/src/styles/m3/tokens.css +11 -0
- package/src/ui/UiElement.ts +7 -0
- package/src/ui/button/SegmentedButton.styles.ts +3 -1
- package/src/ui/dialog/UiDialog.ts +3 -0
- package/src/ui/effects/ripple.ts +6 -1
- package/src/ui/icons/Icons.ts +3 -2
- package/src/ui/input/CheckedElement.ts +3 -3
- package/src/ui/input/Input.ts +1 -1
- package/src/ui/list/UiDivider.element.ts +41 -0
- package/src/ui/list/UiDivider.styles.ts +49 -0
- package/src/ui/tabs/UiTabs.ts +55 -13
- package/test/amf/authorization/OAuth2Method.test.ts +1 -1
- package/test/elements/http/HttpAssertions.test.ts +5 -6
- package/test/elements/http/HttpFlows.test.ts +485 -0
- package/dist/elements/http/HttpAssertions.d.ts +0 -114
- package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
- package/dist/elements/http/HttpAssertions.js +0 -1146
- package/dist/elements/http/HttpAssertions.js.map +0 -1
- package/dist/elements/http/internals.d.ts +0 -150
- package/dist/elements/http/internals.d.ts.map +0 -1
- package/dist/elements/http/internals.js +0 -150
- package/dist/elements/http/internals.js.map +0 -1
- package/dist/ui/list/DividerElement.d.ts.map +0 -1
- package/dist/ui/list/DividerElement.js +0 -82
- package/dist/ui/list/DividerElement.js.map +0 -1
- package/src/elements/http/HttpAssertions.ts +0 -1187
- package/src/elements/http/internals.ts +0 -151
- package/src/http-client/docs/Files.md +0 -28
- package/src/ui/list/DividerElement.ts +0 -84
|
@@ -15,6 +15,7 @@ import '../../define/http/http-headers-form.js';
|
|
|
15
15
|
import '../../define/http/http-snippets.js';
|
|
16
16
|
import '../../define/http/http-body-editor.js';
|
|
17
17
|
import '../../define/http/http-assertions.js';
|
|
18
|
+
import '../../define/http/http-flows.js';
|
|
18
19
|
import '../../define/http/http-request-config.js';
|
|
19
20
|
import '../../define/ui/ui-dropdown-list.js';
|
|
20
21
|
import '../../define/ui/ui-list.js';
|
|
@@ -315,8 +316,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
315
316
|
const request = this.getRequest();
|
|
316
317
|
request.method = verb;
|
|
317
318
|
this.requestUpdate();
|
|
318
|
-
this.
|
|
319
|
-
this.
|
|
319
|
+
this.notifyChange();
|
|
320
|
+
this.notifyPropertyChanged('method', verb);
|
|
320
321
|
if (!this.isPayload && this.selectedTab === 'payload') {
|
|
321
322
|
this.selectedTab = 'headers';
|
|
322
323
|
}
|
|
@@ -343,8 +344,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
343
344
|
const request = this.getRequest();
|
|
344
345
|
request.url = value;
|
|
345
346
|
this.requestUpdate();
|
|
346
|
-
this.
|
|
347
|
-
this.
|
|
347
|
+
this.notifyChange();
|
|
348
|
+
this.notifyPropertyChanged('url', value);
|
|
348
349
|
this.computeSnippetsRequest();
|
|
349
350
|
}
|
|
350
351
|
handleTabSelect(e) {
|
|
@@ -352,7 +353,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
352
353
|
this.selectedTab = info.select;
|
|
353
354
|
if (this.ui) {
|
|
354
355
|
this.ui.selectedEditor = this.selectedTab;
|
|
355
|
-
this.
|
|
356
|
+
this.notifyPropertyChanged('ui', this.ui);
|
|
356
357
|
}
|
|
357
358
|
CoreEvents.Telemetry.event({
|
|
358
359
|
category: 'Request editor',
|
|
@@ -380,7 +381,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
380
381
|
this.ui.headers = {};
|
|
381
382
|
}
|
|
382
383
|
// this.ui.headers.source = source;
|
|
383
|
-
this.
|
|
384
|
+
this.notifyPropertyChanged('ui', this.ui);
|
|
384
385
|
}
|
|
385
386
|
selectHeaders(model) {
|
|
386
387
|
const request = this.getRequest();
|
|
@@ -389,7 +390,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
389
390
|
this.contentType = ct && ct.value;
|
|
390
391
|
this.setPayloadMimeOption(request, this.contentType);
|
|
391
392
|
this.requestUpdate();
|
|
392
|
-
this.
|
|
393
|
+
this.notifyChange();
|
|
393
394
|
this.computeSnippetsRequest();
|
|
394
395
|
}
|
|
395
396
|
/**
|
|
@@ -409,7 +410,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
409
410
|
}
|
|
410
411
|
this.ui.body.model = model;
|
|
411
412
|
this.ui.body.selected = selected;
|
|
412
|
-
this.
|
|
413
|
+
this.notifyPropertyChanged('ui', this.ui);
|
|
413
414
|
}
|
|
414
415
|
async updatePayload(value, mime) {
|
|
415
416
|
const serialized = await PayloadSerializer.serialize(value);
|
|
@@ -418,8 +419,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
418
419
|
this.setPayloadMimeOption(request, mime);
|
|
419
420
|
this.payload = value;
|
|
420
421
|
this.requestUpdate();
|
|
421
|
-
this.
|
|
422
|
-
this.
|
|
422
|
+
this.notifyChange();
|
|
423
|
+
this.notifyPropertyChanged('payload', value);
|
|
423
424
|
}
|
|
424
425
|
/**
|
|
425
426
|
* When `mime` is set it creates the `payloadOptions` property with the mime.
|
|
@@ -434,6 +435,15 @@ export default class RequestEditor extends ApiElement {
|
|
|
434
435
|
request.payloadOptions.mime = mime;
|
|
435
436
|
}
|
|
436
437
|
}
|
|
438
|
+
handleFlows(e) {
|
|
439
|
+
e.preventDefault();
|
|
440
|
+
const node = e.target;
|
|
441
|
+
this.selectFlows(node.model);
|
|
442
|
+
}
|
|
443
|
+
selectFlows(flows) {
|
|
444
|
+
this.flows = flows;
|
|
445
|
+
this.notifyChange();
|
|
446
|
+
}
|
|
437
447
|
handleAssertions(e) {
|
|
438
448
|
e.preventDefault();
|
|
439
449
|
const node = e.target;
|
|
@@ -441,7 +451,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
441
451
|
}
|
|
442
452
|
selectAssertions(assertions) {
|
|
443
453
|
this.assertions = assertions;
|
|
444
|
-
this.
|
|
454
|
+
this.notifyChange();
|
|
445
455
|
}
|
|
446
456
|
handleConfig(e) {
|
|
447
457
|
const node = e.target;
|
|
@@ -449,14 +459,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
449
459
|
}
|
|
450
460
|
selectRequestConfig(config) {
|
|
451
461
|
this.config = config;
|
|
452
|
-
this.
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* Called when a value on one of the editors change.
|
|
456
|
-
* Dispatches non-bubbling `change` event.
|
|
457
|
-
*/
|
|
458
|
-
notifyRequestChanged() {
|
|
459
|
-
this.dispatchEvent(new Event('change'));
|
|
462
|
+
this.notifyChange();
|
|
460
463
|
}
|
|
461
464
|
/**
|
|
462
465
|
* Called to notify listeners about a particular property change
|
|
@@ -464,7 +467,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
464
467
|
* @param type The property that changed. The resulting event type is the combination of this value and the `change` suffix.
|
|
465
468
|
* @param value The value of the changed property
|
|
466
469
|
*/
|
|
467
|
-
|
|
470
|
+
notifyPropertyChanged(type, value) {
|
|
468
471
|
this.dispatchEvent(new CustomEvent(`${type}change`, {
|
|
469
472
|
detail: {
|
|
470
473
|
value
|
|
@@ -502,7 +505,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
502
505
|
this.authorization = [];
|
|
503
506
|
}
|
|
504
507
|
this.authorization.push(cnf.toJSON());
|
|
505
|
-
this.
|
|
508
|
+
this.notifyPropertyChanged('authorization', this.authorization);
|
|
506
509
|
this.requestUpdate();
|
|
507
510
|
return cnf;
|
|
508
511
|
}
|
|
@@ -523,7 +526,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
523
526
|
// eslint-disable-next-line no-param-reassign
|
|
524
527
|
schema.valid = isValid;
|
|
525
528
|
authorization[index] = schema;
|
|
526
|
-
this.
|
|
529
|
+
this.notifyPropertyChanged('authorization', this.authorization);
|
|
527
530
|
}
|
|
528
531
|
/**
|
|
529
532
|
* Removes authorization schema from the editor.
|
|
@@ -539,7 +542,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
539
542
|
return;
|
|
540
543
|
}
|
|
541
544
|
authorization.splice(index, 1);
|
|
542
|
-
this.
|
|
545
|
+
this.notifyPropertyChanged('authorization', this.authorization);
|
|
543
546
|
this.requestUpdate();
|
|
544
547
|
}
|
|
545
548
|
handleAuthAdd(e) {
|
|
@@ -676,6 +679,7 @@ export default class RequestEditor extends ApiElement {
|
|
|
676
679
|
<ui-tab aria-controls="headers" id="headers-tab">Headers</ui-tab>
|
|
677
680
|
<ui-tab ?hidden="${!isPayload}" aria-controls="payload" id="payload-tab">Body</ui-tab>
|
|
678
681
|
<ui-tab aria-controls="authorization" id="authorization-tab">Authorization</ui-tab>
|
|
682
|
+
<ui-tab aria-controls="flows" id="flows-tab">Flows</ui-tab>
|
|
679
683
|
<ui-tab aria-controls="assertions" id="assertions-tab">Assertions</ui-tab>
|
|
680
684
|
<ui-tab aria-controls="config" id="config-tab">Config</ui-tab>
|
|
681
685
|
<ui-tab aria-controls="code-snippets" id="code-snippets-tab">Code snippets</ui-tab>
|
|
@@ -693,12 +697,14 @@ export default class RequestEditor extends ApiElement {
|
|
|
693
697
|
const codeVisible = selectedTab === 'code-snippets';
|
|
694
698
|
const assertionsVisible = selectedTab === 'assertions';
|
|
695
699
|
const configVisible = selectedTab === 'config';
|
|
700
|
+
const flowsVisible = selectedTab === 'flows';
|
|
696
701
|
return html `
|
|
697
702
|
<div class="panel">
|
|
698
703
|
${this.renderParameters(parametersVisible)}
|
|
699
704
|
${this.renderHeaders(headersVisible)}
|
|
700
705
|
${this.renderBody(bodyVisible)}
|
|
701
706
|
${this.renderAuthorization(authVisible)}
|
|
707
|
+
${this.renderHttpFlows(flowsVisible)}
|
|
702
708
|
${this.renderAssertions(assertionsVisible)}
|
|
703
709
|
${this.renderRequestConfig(configVisible)}
|
|
704
710
|
${this.renderSnippets(codeVisible)}
|
|
@@ -864,6 +870,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
864
870
|
.authorization="${auth}"
|
|
865
871
|
?readOnly="${this.readOnly}"
|
|
866
872
|
class="auth-panel"
|
|
873
|
+
canToggle
|
|
874
|
+
canDelete
|
|
867
875
|
@change="${this.handleAuthChange}"
|
|
868
876
|
@delete="${this.handleAuthDelete}"
|
|
869
877
|
></basic-authorization>
|
|
@@ -875,6 +883,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
875
883
|
.authorization="${auth}"
|
|
876
884
|
?readOnly="${this.readOnly}"
|
|
877
885
|
class="auth-panel"
|
|
886
|
+
canToggle
|
|
887
|
+
canDelete
|
|
878
888
|
@change="${this.handleAuthChange}"
|
|
879
889
|
@delete="${this.handleAuthDelete}"
|
|
880
890
|
></bearer-authorization>
|
|
@@ -886,6 +896,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
886
896
|
.authorization="${auth}"
|
|
887
897
|
?readOnly="${this.readOnly}"
|
|
888
898
|
class="auth-panel"
|
|
899
|
+
canToggle
|
|
900
|
+
canDelete
|
|
889
901
|
@change="${this.handleAuthChange}"
|
|
890
902
|
@delete="${this.handleAuthDelete}"
|
|
891
903
|
></ntlm-authorization>
|
|
@@ -897,6 +909,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
897
909
|
.authorization="${auth}"
|
|
898
910
|
?readOnly="${this.readOnly}"
|
|
899
911
|
class="auth-panel"
|
|
912
|
+
canToggle
|
|
913
|
+
canDelete
|
|
900
914
|
@change="${this.handleAuthChange}"
|
|
901
915
|
@delete="${this.handleAuthDelete}"
|
|
902
916
|
.defaultRedirectUri="${this.oauth2RedirectUri}"
|
|
@@ -909,6 +923,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
909
923
|
.authorization="${auth}"
|
|
910
924
|
?readOnly="${this.readOnly}"
|
|
911
925
|
class="auth-panel"
|
|
926
|
+
canToggle
|
|
927
|
+
canDelete
|
|
912
928
|
@change="${this.handleAuthChange}"
|
|
913
929
|
@delete="${this.handleAuthDelete}"
|
|
914
930
|
.defaultRedirectUri="${this.oauth2RedirectUri}"
|
|
@@ -921,6 +937,8 @@ export default class RequestEditor extends ApiElement {
|
|
|
921
937
|
.authorization="${auth}"
|
|
922
938
|
?readOnly="${this.readOnly}"
|
|
923
939
|
class="auth-panel"
|
|
940
|
+
canToggle
|
|
941
|
+
canDelete
|
|
924
942
|
@change="${this.handleAuthChange}"
|
|
925
943
|
@delete="${this.handleAuthDelete}"
|
|
926
944
|
></cc-authorization>
|
|
@@ -932,11 +950,29 @@ export default class RequestEditor extends ApiElement {
|
|
|
932
950
|
.authorization="${auth}"
|
|
933
951
|
?readOnly="${this.readOnly}"
|
|
934
952
|
class="auth-panel"
|
|
953
|
+
canToggle
|
|
954
|
+
canDelete
|
|
935
955
|
@change="${this.handleAuthChange}"
|
|
936
956
|
@delete="${this.handleAuthDelete}"
|
|
937
957
|
></apikey-authorization>
|
|
938
958
|
`;
|
|
939
959
|
}
|
|
960
|
+
renderHttpFlows(visible) {
|
|
961
|
+
if (!visible) {
|
|
962
|
+
return '';
|
|
963
|
+
}
|
|
964
|
+
const { flows = [] } = this;
|
|
965
|
+
return html `
|
|
966
|
+
<http-flows
|
|
967
|
+
aria-label="HTTP fLows"
|
|
968
|
+
aria-labelledby="flows-tab"
|
|
969
|
+
id="flows"
|
|
970
|
+
role="tabpanel"
|
|
971
|
+
.model="${flows}"
|
|
972
|
+
@change="${this.handleFlows}"
|
|
973
|
+
></http-flows>
|
|
974
|
+
`;
|
|
975
|
+
}
|
|
940
976
|
renderAssertions(visible) {
|
|
941
977
|
if (!visible) {
|
|
942
978
|
return '';
|
|
@@ -1024,6 +1060,9 @@ __decorate([
|
|
|
1024
1060
|
__decorate([
|
|
1025
1061
|
property({ type: Array })
|
|
1026
1062
|
], RequestEditor.prototype, "assertions", void 0);
|
|
1063
|
+
__decorate([
|
|
1064
|
+
property({ type: Array })
|
|
1065
|
+
], RequestEditor.prototype, "flows", void 0);
|
|
1027
1066
|
__decorate([
|
|
1028
1067
|
property({ type: String })
|
|
1029
1068
|
], RequestEditor.prototype, "oauth2RedirectUri", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestEditor.js","sourceRoot":"","sources":["../../../src/elements/http/RequestEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { html, TemplateResult, PropertyValues, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { \n Events as CoreEvents, DeserializedPayload,\n IOAuth2Authorization,\n IHttpRequest,\n HttpRequest,\n SecurityProcessor,\n IProperty,\n IRequestAuthorization,\n RequestAuthorization,\n PayloadSerializer,\n IRequestUiMeta,\n IHttpAssertion,\n RequestConfig,\n IRequestConfig,\n} from '@api-client/core/build/browser.js';\nimport { AuthorizationType } from '@api-client/core/build/src/models/Authorization.js';\nimport UrlInputEditorElement from './UrlInput.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport { Events } from '../../events/Events.js';\nimport BodyEditor from './BodyEditor.js';\nimport ApiElement from '../ApiElement.js';\nimport { TabSelectionDetail } from '../../ui/tabs/UiTabs.js';\nimport UrlParamsForm from './UrlParamsForm.js';\nimport HeadersForm from './HeadersForm.js';\nimport { authTypeToLabel } from '../authorization/AuthLabels.js';\nimport { Authorization } from '../authorization/ui/Authorization.js';\nimport HttpAssertions from './HttpAssertions.js';\nimport RequestConfigElement from './RequestConfigElement.js';\nimport { UiDialogClosingReason } from '../../ui/dialog/UiDialog.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/http/http-url-input.js';\nimport '../../define/http/http-url-params-form.js';\nimport '../../define/http/http-headers-form.js';\nimport '../../define/http/http-snippets.js';\nimport '../../define/http/http-body-editor.js';\nimport '../../define/http/http-assertions.js';\nimport '../../define/http/http-request-config.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-tabs.js';\nimport '../../define/ui/ui-tab.js';\nimport '../../define/ui/ui-divider.js';\nimport '../../define/ui/ui-dialog.js';\nimport '../../define/authorization/basic-authorization.js';\nimport '../../define/authorization/bearer-authorization.js';\nimport '../../define/authorization/ntlm-authorization.js';\nimport '../../define/authorization/apikey-authorization.js';\nimport '../../define/authorization/oauth2-authorization.js';\nimport '../../define/authorization/oidc-authorization.js';\nimport '../../define/authorization/cc-authorization.js';\n\nexport const HttpMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'CONNECT', 'OPTIONS', 'TRACE'];\nexport const NonPayloadMethods = ['GET', 'HEAD'];\n\nexport type SelectedTab = 'parameters' | 'headers' | 'payload' | 'authorization' | 'code-snippets' | 'assertions' | 'config';\n\nexport interface SendDetails {\n /**\n * The request object to send.\n */\n request: IHttpRequest;\n /**\n * Optional authorization configuration.\n */\n authorization: IRequestAuthorization[] | undefined;\n /**\n * The request options.\n */\n config: IRequestConfig | undefined;\n /**\n * HTTP tests to perform.\n */\n assertions: IHttpAssertion[] | undefined\n}\n\n/**\n * An element that renders an HTTP editor.\n * \n * @fires send - A custom event when the user requested to send the request. The detail object is the editor's request.\n * @fires abort - When the user requested to abort the ongoing request.\n * @fires authorizationchange - When authorization data change.\n * @fires uichange - When the UI model change.\n */\nexport default class RequestEditor extends ApiElement {\n /**\n * A promise set when reading payload from the `request` object.\n * It is resolved after the payload is read anf the `payload` property is set.\n */\n protected readingPayloadPromise = Promise.resolve();\n\n /**\n * A promise set when the payload is being written to the `request` object.\n * It is resolved after the `payload` is set on the request as a serializable object.\n */\n protected writingPayloadPromise = Promise.resolve();\n\n /**\n * A flag used to determine when the payload is being read for the synchronous code.\n */\n @state() readingPayload = false;\n\n /**\n * The base request object.\n */\n @property({ type: Object }) request: IHttpRequest = new HttpRequest().toJSON();\n\n /**\n * The request payload.\n * It can be just a string or an object with the payload data depending on the content type.\n */\n @state() payload?: DeserializedPayload;\n\n /** \n * The current content type value.\n */\n @state() contentType?: string;\n\n @property({ type: Array }) authorization?: IRequestAuthorization[];\n\n @property({ type: Array }) assertions?: IHttpAssertion[];\n\n /**\n * Redirect URL for the OAuth2 authorization.\n * If can be also set by dispatching `oauth2-redirect-url-changed`\n * with `value` property on the `detail` object.\n */\n @property({ type: String }) oauth2RedirectUri?: string;\n\n /**\n * When set the editor is in read only mode.\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * A value to be passed to the OAuth 2 `authorizationUri` property in case\n * if current configuration has no value.\n * This is to be used as a default value.\n */\n @property({ type: String, reflect: true }) oauth2AuthorizationUri?: string;\n\n /**\n * A value to be passed to the OAuth 2 `accessTokenUri` property in case\n * if current configuration has no value.\n * This is to be used as a default value.\n */\n @property({ type: String, reflect: true }) oauth2AccessTokenUri?: string;\n\n /**\n * When set it ignores all `content-*` headers when the request method is `GET`.\n * When not set or `false` it renders a warning message.\n */\n @property({ type: Boolean, reflect: true }) ignoreContentOnGet = false;\n\n /** \n * When set the `content-` headers warning dialog is rendered.\n */\n @property({ type: Boolean, reflect: true }) contentHeadersDialogOpened = false;\n\n /**\n * To be set when the request is being transported.\n */\n @property({ type: Boolean, reflect: true }) loading = false;\n\n /**\n * An index of currently opened tab.\n * @default 0\n */\n @property({ type: Number, reflect: true }) selectedTab: SelectedTab = 'parameters';\n\n /**\n * Optional instance of the `RequestUiMeta` to store the UI state.\n */\n @property({ type: Object }) ui?: IRequestUiMeta;\n\n /**\n * HTTP request configuration for the transport.\n */\n @property({ type: Object }) config = new RequestConfig().toJSON();\n\n /**\n * @returns True when the request cannot have the payload on the message.\n */\n get isPayload(): boolean {\n const { request } = this;\n if (!request || !request.method) {\n return false;\n }\n return !NonPayloadMethods.includes(request.method);\n }\n\n protected _awaitingOAuth2authorization = false;\n\n /**\n * This is set by the internal logic. When `ignoreContentOnGet` is set and the headers have `content-` headers\n * a dialog is rendered when trying to send the request. When the user chooses to ignore the warning this\n * flag makes sure that `send()` does not check headers.\n * \n * @todo(pawel): This should be done in the request logic module plugin.\n * Plugins can stop request indefinitely or cancel it.\n */\n ignoreValidationOnGet = false;\n\n @state() protected snippets?: IHttpRequest;\n\n constructor() {\n super();\n this.config.enabled = false;\n this.handleInternalSend = this.handleInternalSend.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.eventsTarget.addEventListener(EventTypes.Http.Request.send, this.handleInternalSend);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.eventsTarget.addEventListener(EventTypes.Http.Request.send, this.handleInternalSend);\n }\n\n override firstUpdated(changedProperties: PropertyValues<this>): void {\n super.firstUpdated(changedProperties);\n this.computeSnippetsRequest();\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('request')) {\n this.setupContentType();\n this.readingPayloadPromise = this.readPayload();\n }\n if (changedProperties.has('ui') && this.ui) {\n if (this.ui.selectedEditor) {\n this.selectedTab = this.ui.selectedEditor as SelectedTab;\n }\n }\n super.willUpdate(changedProperties);\n }\n\n protected setupContentType(request = this.request): void {\n if (!request) {\n this.contentType = undefined;\n return;\n }\n if (!request.headersModel) {\n this.contentType = undefined;\n return;\n }\n const item = request.headersModel.find(i => i.name.toLowerCase() === 'content-type');\n if (!item) {\n this.contentType = undefined;\n return;\n }\n this.contentType = item.value as string;\n this.setPayloadMimeOption(request, this.contentType);\n }\n\n protected async readPayload(): Promise<void> {\n const { request } = this;\n if (!request || !request.payload) {\n this.payload = undefined;\n return;\n }\n this.readingPayload = true;\n try {\n this.payload = await PayloadSerializer.deserialize(request.payload);\n } catch (e) {\n this.payload = undefined;\n } finally {\n this.readingPayload = false;\n }\n }\n\n /**\n * Validates state of the URL.\n * @return True if the URL has a structure that looks like\n * an URL which means scheme + something\n */\n validateUrl(): boolean {\n const { shadowRoot } = this;\n if (!shadowRoot) {\n return true;\n }\n const panel = shadowRoot.querySelector('http-url-input');\n if (!panel) {\n return true;\n }\n return panel.checkValidity();\n }\n\n /**\n * Checks if current request requires calling `authorize()` on the OAuth2 method.\n *\n * @return This returns `true` only for valid OAuth 2 method that has no access token.\n */\n requiresAuthorization(): boolean {\n const { authorization=[] } = this;\n const oauth = authorization.find((method) => method.enabled && method.type === 'oauth 2');\n if (!oauth) {\n return false;\n }\n const authMethod = this.shadowRoot?.querySelector('oauth2-authorization');\n if (!authMethod) {\n return false;\n }\n const cnf = oauth.config as IOAuth2Authorization;\n if (authMethod.checkValidity() && !cnf.accessToken) {\n return true;\n }\n return false;\n }\n\n /**\n * Validates headers for `Content-*` entries against current method.\n * @param request The request object\n * @return True if headers are invalid.\n */\n validateContentHeaders(request: IHttpRequest): boolean {\n const method = request.method || 'get';\n if (method.toLowerCase() !== 'get') {\n return false;\n }\n const any = !!request.headersModel && request.headersModel.some(i => i.name.toLowerCase().startsWith('content-'));\n if (any) {\n return true;\n }\n return false;\n }\n\n /**\n * Serializes the current values to the `IHttpRequest`\n */\n async serialize(): Promise<IHttpRequest> {\n if (!this.request) {\n const instance = new HttpRequest();\n return instance.toJSON();\n }\n await this.writingPayloadPromise;\n // make sure we copy everything.\n const instance = new HttpRequest(this.request);\n return instance.toJSON();\n }\n\n /**\n * Dispatches the send request event to the HTTP request engine.\n */\n async send(): Promise<void> {\n if (this.loading || !this.request) {\n return;\n }\n if (!this.validateUrl()) {\n return;\n }\n if (this.requiresAuthorization()) {\n const authMethod = this.shadowRoot?.querySelector('oauth2-authorization');\n if (authMethod) {\n authMethod.authorize();\n this._awaitingOAuth2authorization = true;\n }\n return;\n }\n const request = await this.serialize();\n // store the URL in the history\n await Events.HttpClient.Model.UrlHistory.add(request.url as string, this);\n if (!this.ignoreValidationOnGet && this.validateContentHeaders(request)) {\n this.contentHeadersDialogOpened = true;\n return;\n }\n this.ignoreValidationOnGet = false;\n this.notifySend(request);\n CoreEvents.Telemetry.event({\n category: 'Request editor',\n action: 'Send request',\n }, this);\n }\n\n protected notifySend(request: IHttpRequest): void {\n this.dispatchEvent(new CustomEvent<SendDetails>('send', {\n detail: {\n request,\n authorization: this.authorization,\n config: this.config,\n assertions: this.assertions,\n },\n }));\n }\n\n /**\n * If the request does not exist it creates one.\n * @returns The request object. \n */\n protected getRequest(): IHttpRequest {\n if (!this.request) {\n const instance = new HttpRequest();\n this.request = instance.toJSON();\n }\n return this.request;\n }\n\n /**\n * Aborts the request\n */\n abort(): void {\n this.dispatchEvent(new Event('abort'));\n }\n\n protected handleInternalSend(e: Event): void {\n e.stopPropagation();\n this.send();\n }\n\n protected handleVerbSelection(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const { verb } = target.dataset;\n if (verb) {\n this.selectVerb(verb);\n }\n }\n\n /**\n * @param verb The HTTP verb (operation, method)\n */\n selectVerb(verb: string): void {\n const request = this.getRequest();\n request.method = verb;\n this.requestUpdate();\n this.notifyRequestChanged();\n this.notifyChanged('method', verb);\n if (!this.isPayload && this.selectedTab === 'payload') {\n this.selectedTab = 'headers';\n }\n CoreEvents.Telemetry.event({\n category: 'Request editor',\n action: 'Method selected',\n label: verb,\n }, this);\n this.computeSnippetsRequest();\n }\n\n /**\n * The handler for the URL editor change event\n */\n protected handlerUrlChange(e: Event): void {\n const panel = e.target as UrlInputEditorElement;\n const { value } = panel;\n this.selectUrl(value);\n }\n\n /**\n * Commits the change in the URL.\n * @param value The new URL value\n */\n selectUrl(value: string): void {\n const request = this.getRequest();\n request.url = value;\n this.requestUpdate();\n this.notifyRequestChanged();\n this.notifyChanged('url', value);\n this.computeSnippetsRequest();\n }\n\n protected handleTabSelect(e: CustomEvent): void {\n const info = e.detail as TabSelectionDetail;\n this.selectedTab = info.select as SelectedTab;\n if (this.ui) {\n this.ui.selectedEditor = this.selectedTab;\n this.notifyChanged('ui', this.ui);\n }\n CoreEvents.Telemetry.event({\n category: 'Request editor',\n action: 'Editor switched',\n label: this.selectedTab,\n }, this);\n }\n\n protected handleParamsChange(e: Event): void {\n const input = e.target as UrlParamsForm;\n this.selectUrl(input.value);\n }\n\n /**\n * The handler for the headers change event from the headers editor.\n */\n handleHeadersChange(e: Event): void {\n e.preventDefault();\n const editor = e.target as HeadersForm;\n const { model } = editor;\n this.selectHeaders(model);\n if (!this.ui) {\n return;\n }\n // const { value, source } = node;\n if (!this.ui.headers) {\n this.ui.headers = {};\n }\n // this.ui.headers.source = source;\n this.notifyChanged('ui', this.ui);\n }\n\n selectHeaders(model: IProperty[]): void {\n const request = this.getRequest();\n request.headersModel = model;\n const ct = model.find(h => h.name.toLowerCase() === 'content-type');\n this.contentType = ct && ct.value as string;\n this.setPayloadMimeOption(request, this.contentType);\n this.requestUpdate();\n this.notifyRequestChanged();\n this.computeSnippetsRequest();\n }\n\n /**\n * The handler for the body editor change event\n */\n protected handleBody(e: Event): void {\n e.preventDefault();\n const node = e.target as BodyEditor;\n const { value, model, selected, contentType } = node;\n this.writingPayloadPromise = this.updatePayload(value as DeserializedPayload, contentType);\n this.computeSnippetsRequest();\n if (!this.ui) {\n return;\n }\n if (!this.ui.body) {\n this.ui.body = {};\n }\n this.ui.body.model = model;\n this.ui.body.selected = selected;\n this.notifyChanged('ui', this.ui);\n }\n\n protected async updatePayload(value: DeserializedPayload, mime?: string): Promise<void> {\n const serialized = await PayloadSerializer.serialize(value);\n const request = this.getRequest();\n request.payload = serialized;\n this.setPayloadMimeOption(request, mime);\n this.payload = value;\n this.requestUpdate();\n this.notifyRequestChanged();\n this.notifyChanged('payload', value);\n }\n\n /**\n * When `mime` is set it creates the `payloadOptions` property with the mime.\n * @param request The request to set the mime type \n * @param mime the mime type value\n */\n protected setPayloadMimeOption(request: IHttpRequest | HttpRequest, mime?: string): void {\n if (mime) {\n if (!request.payloadOptions) {\n request.payloadOptions = {};\n }\n request.payloadOptions.mime = mime;\n }\n }\n\n protected handleAssertions(e: Event): void {\n e.preventDefault();\n const node = e.target as HttpAssertions;\n this.selectAssertions(node.model);\n }\n\n selectAssertions(assertions?: IHttpAssertion[]): void {\n this.assertions = assertions;\n this.notifyRequestChanged();\n }\n\n protected handleConfig(e: Event): void {\n const node = e.target as RequestConfigElement;\n this.selectRequestConfig(node.config);\n }\n\n selectRequestConfig(config: IRequestConfig): void {\n this.config = config;\n this.notifyRequestChanged();\n }\n\n /**\n * Called when a value on one of the editors change.\n * Dispatches non-bubbling `change` event.\n */\n protected notifyRequestChanged(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n /**\n * Called to notify listeners about a particular property change\n * \n * @param type The property that changed. The resulting event type is the combination of this value and the `change` suffix.\n * @param value The value of the changed property\n */\n protected notifyChanged(type: string, value: unknown): void {\n this.dispatchEvent(new CustomEvent(`${type}change`, {\n detail: {\n value\n }\n }));\n }\n\n protected handleContentWarningClose(e: CustomEvent<UiDialogClosingReason>): void {\n this.contentHeadersDialogOpened = false;\n if (e.detail.cancelled) {\n return;\n }\n this.ignoreValidationOnGet = true;\n this.send();\n }\n\n /**\n * When a request change this recomputes the values for code snippets.\n * These are different from the actual values in the request as\n * they contain authorization values applied to it.\n */\n protected async computeSnippetsRequest(): Promise<void> {\n const serialized = await this.serialize();\n const { authorization=[] } = this;\n SecurityProcessor.applyAuthorization(serialized, [ ...authorization ], { immutable: true });\n this.snippets = serialized;\n }\n\n /**\n * Adds a new authorization object to the request for the given type.\n * \n * @returns The created instance of the authorization.\n */\n addAuthorization(type: AuthorizationType): RequestAuthorization {\n const cnf = RequestAuthorization.fromTypedConfig(type, {}, false);\n cnf.enabled = true;\n if (!this.authorization) {\n this.authorization = [];\n }\n this.authorization.push(cnf.toJSON());\n this.notifyChanged('authorization', this.authorization);\n this.requestUpdate();\n return cnf;\n }\n\n /**\n * Updates authorization schema on the editor.\n * @param schema The new schema to replace the old one\n * @param isValid Whether the schema is valid.\n */\n updateAuthorization(schema: IRequestAuthorization, isValid: boolean): void {\n const { authorization } = this;\n if (!authorization) {\n return;\n }\n const index = authorization.findIndex(i => i.type === schema.type);\n if (index === -1) {\n return;\n }\n // eslint-disable-next-line no-param-reassign\n schema.valid = isValid;\n authorization[index] = schema;\n this.notifyChanged('authorization', this.authorization);\n }\n\n /**\n * Removes authorization schema from the editor.\n * @param type The authorization type to remove.\n */\n removeAuthorization(type: string): void {\n const { authorization } = this;\n if (!authorization) {\n return;\n }\n const index = authorization.findIndex(i => i.type === type);\n if (index === -1) {\n return;\n }\n authorization.splice(index, 1);\n this.notifyChanged('authorization', this.authorization);\n this.requestUpdate();\n }\n\n protected handleAuthAdd(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const selected = target.dataset.type as AuthorizationType | undefined;\n if (!selected) {\n return;\n }\n this.addAuthorization(selected);\n }\n\n protected handleAuthChange(e: Event): void {\n const editor = e.target as Authorization;\n const { authorization } = editor;\n this.updateAuthorization(authorization as IRequestAuthorization, editor.checkValidity());\n }\n\n protected handleAuthDelete(e: Event): void {\n const editor = e.target as Authorization;\n const { authorization } = editor;\n if (!authorization) {\n return;\n }\n this.removeAuthorization(authorization.type)\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderUrlEditorArea()}\n <div class=\"surface2 editors\">\n ${this.renderTabs()}\n ${this.renderCurrentEditor()}\n </div>\n ${this.renderHeadersDialog()}\n `;\n }\n\n /**\n * @returns The template for the top line with method selector, URL, and options.\n */\n protected renderUrlEditorArea(): TemplateResult {\n return html`\n <div class=\"url-editor\">\n <div class=\"url-meta\">\n ${this.renderUrlMeta()}\n </div>\n ${this.renderSendButton()}\n </div>\n `;\n }\n\n protected renderUrlMeta(): TemplateResult {\n return html`\n ${this.renderHttpMethodSelector()}\n ${this.renderUrlEditor()}\n `;\n }\n\n /**\n * @returns The template for the HTTP method selector\n */\n protected renderHttpMethodSelector(): TemplateResult {\n const request = this.getRequest();\n const { method = 'GET' } = request;\n \n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleVerbSelection}\"\n class=\"verb-dropdown\"\n closeOnOutsideClick\n >\n <ui-button type=\"text\">\n ${method}\n <ui-icon icon=\"arrowDropDown\"></ui-icon>\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.renderHttpVerbOptions()}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n /**\n * @returns The templates for each supported HTTP methods\n */\n protected renderHttpVerbOptions(): TemplateResult[] {\n return HttpMethods.map((method) => html`\n <ui-list-item role=\"menuitem\" image=\"icon\" data-verb=\"${method}\">\n <div slot=\"start\" data-method=\"${method.toLocaleLowerCase()}\" class=\"http-label\"></div>\n ${method}\n </ui-list-item>\n `);\n }\n\n /**\n * @returns The template for the HTTP URL editor\n */\n protected renderUrlEditor(): TemplateResult {\n const request = this.getRequest();\n const { url='' } = request;\n const { eventsTarget } = this;\n return html`\n <div class=\"url-input\">\n <http-url-input\n .value=\"${url}\"\n .eventsTarget=\"${eventsTarget}\"\n @change=\"${this.handlerUrlChange}\"\n ></http-url-input>\n </div>\n `;\n }\n\n /**\n * @returns The template for the \"send\" or \"abort\" buttons.\n */\n protected renderSendButton(): TemplateResult | string {\n if (this.loading) {\n return html`\n <ui-button type=\"filled\" title=\"Abort the request\" class=\"send-button\" @click=\"${this.abort}\">Abort</ui-button>\n `;\n }\n return html`\n <ui-button type=\"filled\" title=\"Send the request\" class=\"send-button\" @click=\"${this.send}\">Send</ui-button>\n `;\n }\n\n /**\n * @returns The template for the request editor tabs\n */\n protected renderTabs(): TemplateResult {\n const { isPayload, selectedTab } = this;\n // ui && ui.selectedEditor ||\n const selected = selectedTab;\n return html`\n <ui-tabs\n .selected=\"${selected}\"\n @select=\"${this.handleTabSelect}\"\n class=\"editor-tabs\"\n >\n <ui-tab aria-controls=\"parameters\" id=\"parameters-tab\">Parameters</ui-tab>\n <ui-tab aria-controls=\"headers\" id=\"headers-tab\">Headers</ui-tab>\n <ui-tab ?hidden=\"${!isPayload}\" aria-controls=\"payload\" id=\"payload-tab\">Body</ui-tab>\n <ui-tab aria-controls=\"authorization\" id=\"authorization-tab\">Authorization</ui-tab>\n <ui-tab aria-controls=\"assertions\" id=\"assertions-tab\">Assertions</ui-tab>\n <ui-tab aria-controls=\"config\" id=\"config-tab\">Config</ui-tab>\n <ui-tab aria-controls=\"code-snippets\" id=\"code-snippets-tab\">Code snippets</ui-tab>\n </ui-tabs>`;\n }\n\n /**\n * @returns The template for the current editor\n */\n protected renderCurrentEditor(): TemplateResult {\n const { selectedTab, isPayload } = this;\n const parametersVisible = selectedTab === 'parameters';\n const headersVisible = selectedTab === 'headers';\n const bodyVisible = isPayload && selectedTab === 'payload';\n const authVisible = selectedTab === 'authorization';\n const codeVisible = selectedTab === 'code-snippets';\n const assertionsVisible = selectedTab === 'assertions';\n const configVisible = selectedTab === 'config';\n return html`\n <div class=\"panel\">\n ${this.renderParameters(parametersVisible)}\n ${this.renderHeaders(headersVisible)}\n ${this.renderBody(bodyVisible)}\n ${this.renderAuthorization(authVisible)}\n ${this.renderAssertions(assertionsVisible)}\n ${this.renderRequestConfig(configVisible)}\n ${this.renderSnippets(codeVisible)}\n </div>\n `;\n }\n\n protected renderParameters(visible: boolean): TemplateResult {\n const request = this.getRequest();\n const {\n eventsTarget,\n readOnly,\n } = this;\n return html`\n <http-url-params-form\n id=\"parameters\"\n aria-describedby=\"parameters-tab\"\n role=\"tabpanel\"\n ?hidden=\"${!visible}\"\n .value=\"${request.url || ''}\"\n .eventsTarget=\"${eventsTarget}\"\n ?readOnly=\"${readOnly}\"\n @change=\"${this.handleParamsChange}\"\n ></http-url-params-form>\n `;\n }\n\n /**\n * @param visible Whether the panel should not be hidden\n * @returns The template for the headers editor\n */\n protected renderHeaders(visible: boolean): TemplateResult {\n const request = this.getRequest();\n const {\n eventsTarget,\n readOnly,\n } = this;\n return html`\n <http-headers-form\n id=\"headers\"\n aria-describedby=\"headers-tab\"\n role=\"tabpanel\"\n .eventsTarget=\"${eventsTarget}\"\n .model=\"${request.headersModel || []}\"\n ?hidden=\"${!visible}\"\n @change=\"${this.handleHeadersChange}\"\n ?readonly=\"${readOnly}\"\n ></http-headers-form>`;\n }\n\n /**\n * @param visible Whether the panel should not be hidden\n * @returns The template for the body editor\n */\n protected renderBody(visible: boolean): TemplateResult {\n const {\n payload,\n readOnly,\n contentType,\n ui,\n readingPayload\n } = this;\n if (readingPayload) {\n return html`<p class=\"loading-body\" id=\"payload\">Preparing the editor...</p>`;\n }\n const body = ui && ui.body;\n const selected = body && body.selected as \"file\" | \"raw\" | \"urlEncode\" | \"multipart\";\n const model = body && body.model;\n \n return html`\n <http-body-editor\n id=\"payload\"\n aria-describedby=\"payload-tab\"\n role=\"tabpanel\"\n ?hidden=\"${!visible}\"\n ?readOnly=\"${readOnly}\"\n .contentType=\"${contentType}\"\n .model=\"${model}\"\n .value=\"${!model && payload || undefined}\"\n selected=\"${ifDefined(selected)}\"\n @change=\"${this.handleBody}\"\n @select=\"${this.handleBody}\"\n ></http-body-editor>\n `;\n }\n\n /**\n * @param visible Whether the panel should not be hidden\n * @returns The template for the authorization editor\n */\n protected renderAuthorization(visible: boolean): TemplateResult|string {\n const { authorization } = this;\n return html`\n <section ?hidden=\"${!visible}\" id=\"authorization\" aria-describedby=\"authorization-tab\" role=\"tabpanel\">\n ${this.renderAuthorizationActions(authorization)}\n ${this.renderAuthorizationList(authorization)}\n </section>\n `;\n }\n\n protected renderAuthorizationActions(current: IRequestAuthorization[] = []): TemplateResult {\n const all = ['basic', 'oauth 2', 'open id', 'bearer', 'api key', 'ntlm', 'client certificate'];\n const toRender: string[] = all.filter(type => !current.some(i => i.type === type));\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleAuthAdd}\"\n class=\"auth-dropdown\"\n closeOnOutsideClick\n >\n <ui-button \n type=\"tonal\" \n title=\"Add authorization option\" \n aria-label=\"Opens a menu to select authorization option\"\n ?disabled=\"${!toRender.length}\"\n >\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\" role=\"presentation\"></ui-icon>\n Add\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.renderAuthorizationOptions(toRender)}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderAuthorizationOptions(available: string[]): TemplateResult {\n return html`\n ${available.map(type => html`\n <ui-list-item role=\"menuitem\" data-type=\"${type}\">\n ${authTypeToLabel(type)}\n </ui-list-item>\n `)}\n `;\n }\n\n protected renderAuthorizationList(authorization: IRequestAuthorization[] = []): TemplateResult[] {\n if (!Array.isArray(authorization) || !authorization.length) {\n return [this.renderEmptyAuthorization()];\n }\n return authorization.map((item, index) => {\n let content: TemplateResult | undefined;\n switch (item.type) {\n case 'basic': content = this.renderBasicAuthorization(item); break;\n case 'bearer': content = this.renderBearerAuthorization(item); break;\n case 'ntlm': content = this.renderNtlmAuthorization(item); break;\n case 'oauth 2': content = this.renderOauthAuthorization(item); break;\n case 'open id': content = this.renderOidcAuthorization(item); break;\n case 'client certificate': content = this.renderCCAuthorization(item); break;\n case 'api key': content = this.renderApiKeyAuthorization(item); break;\n default:\n }\n if (content) {\n const isLast = authorization.length === index + 1;\n return html`\n ${content}\n ${!isLast ? html`<ui-divider></ui-divider>` : ''}\n `;\n }\n return html``;\n });\n }\n\n protected renderEmptyAuthorization(): TemplateResult {\n return html``;\n }\n\n protected renderBasicAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <basic-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></basic-authorization>\n `;\n }\n\n protected renderBearerAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <bearer-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></bearer-authorization>\n `;\n }\n\n protected renderNtlmAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <ntlm-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></ntlm-authorization>\n `;\n }\n\n protected renderOauthAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <oauth2-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n .defaultRedirectUri=\"${this.oauth2RedirectUri}\"\n ></oauth2-authorization>\n `;\n }\n\n protected renderOidcAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <oidc-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n .defaultRedirectUri=\"${this.oauth2RedirectUri}\"\n ></oidc-authorization>\n `;\n }\n\n protected renderCCAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <cc-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></cc-authorization>\n `;\n }\n\n protected renderApiKeyAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <apikey-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></apikey-authorization>\n `;\n }\n\n protected renderAssertions(visible: boolean): TemplateResult | string {\n if (!visible) {\n return '';\n }\n const { assertions = [] } = this;\n return html`\n <http-assertions \n aria-label=\"Assertions\" \n aria-labelledby=\"assertions-tab\" \n id=\"assertions\" \n role=\"tabpanel\"\n .model=\"${assertions}\" \n @change=\"${this.handleAssertions}\"\n ></http-assertions>\n `;\n }\n\n protected renderRequestConfig(visible: boolean): TemplateResult | typeof nothing {\n if (!visible) {\n return nothing;\n }\n const { config } = this;\n return html`\n <http-request-config \n aria-label=\"Request options\" \n aria-labelledby=\"config-tab\" \n id=\"config\" \n role=\"tabpanel\"\n .config=\"${config}\"\n @change=\"${this.handleConfig}\"\n ></http-request-config>\n `;\n }\n\n /**\n * @param visible Whether the panel should be rendered\n * @returns The template for the Code snippets\n */\n protected renderSnippets(visible: boolean): TemplateResult|string {\n return html`\n <http-snippets \n ?hidden=\"${!visible}\"\n id=\"code-snippets\"\n aria-describedby=\"code-snippets-tab\"\n role=\"tabpanel\"\n .request=\"${this.snippets}\"\n ></http-snippets>`;\n }\n\n /**\n * @returns The template for the invalid content headers dialog\n */\n protected renderHeadersDialog(): TemplateResult|string {\n const { contentHeadersDialogOpened } = this;\n return html`\n <ui-dialog .open=\"${contentHeadersDialogOpened}\" @close=\"${this.handleContentWarningClose}\">\n <ui-icon slot=\"icon\" icon=\"warning\"></ui-icon>\n <span slot=\"title\">Headers are not valid</span>\n \n <div>\n <p>\n The <b>GET</b> request should not contain <b>content-*</b> headers. It may\n cause the server to behave unexpectedly.\n </p>\n <p><b>Do you want to continue?</b></p>\n </div>\n\n <ui-button type=\"text\" value=\"dismiss\" slot=\"button\">Cancel request</ui-button>\n <ui-button type=\"text\" value=\"confirm\" slot=\"button\">Continue</ui-button>\n </ui-dialog>`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RequestEditor.js","sourceRoot":"","sources":["../../../src/elements/http/RequestEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { html, TemplateResult, PropertyValues, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { \n Events as CoreEvents, DeserializedPayload,\n IOAuth2Authorization,\n IHttpRequest,\n HttpRequest,\n SecurityProcessor,\n IProperty,\n IRequestAuthorization,\n RequestAuthorization,\n PayloadSerializer,\n IRequestUiMeta,\n IHttpAssertion,\n RequestConfig,\n IRequestConfig,\n IHttpFlow,\n} from '@api-client/core/build/browser.js';\nimport type { AuthorizationType } from '@api-client/core/build/src/models/Authorization.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport { Events } from '../../events/Events.js';\nimport ApiElement from '../ApiElement.js';\nimport { authTypeToLabel } from '../authorization/AuthLabels.js';\nimport type UrlInputEditorElement from './UrlInput.js';\nimport type BodyEditor from './BodyEditor.js';\nimport type { TabSelectionDetail } from '../../ui/tabs/UiTabs.js';\nimport type UrlParamsForm from './UrlParamsForm.js';\nimport type HeadersForm from './HeadersForm.js';\nimport type { Authorization } from '../authorization/ui/Authorization.js';\nimport type HttpAssertions from './HttpAssertions.element.js';\nimport type RequestConfigElement from './RequestConfigElement.js';\nimport type { UiDialogClosingReason } from '../../ui/dialog/UiDialog.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/http/http-url-input.js';\nimport '../../define/http/http-url-params-form.js';\nimport '../../define/http/http-headers-form.js';\nimport '../../define/http/http-snippets.js';\nimport '../../define/http/http-body-editor.js';\nimport '../../define/http/http-assertions.js';\nimport '../../define/http/http-flows.js';\nimport '../../define/http/http-request-config.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-tabs.js';\nimport '../../define/ui/ui-tab.js';\nimport '../../define/ui/ui-divider.js';\nimport '../../define/ui/ui-dialog.js';\nimport '../../define/authorization/basic-authorization.js';\nimport '../../define/authorization/bearer-authorization.js';\nimport '../../define/authorization/ntlm-authorization.js';\nimport '../../define/authorization/apikey-authorization.js';\nimport '../../define/authorization/oauth2-authorization.js';\nimport '../../define/authorization/oidc-authorization.js';\nimport '../../define/authorization/cc-authorization.js';\nimport HttpFlows from './HttpFlows.element.js';\n\nexport const HttpMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'CONNECT', 'OPTIONS', 'TRACE'];\nexport const NonPayloadMethods = ['GET', 'HEAD'];\n\nexport type SelectedTab = 'parameters' | 'headers' | 'payload' | 'authorization' | 'code-snippets' | 'assertions' | 'config' | 'flows';\n\nexport interface SendDetails {\n /**\n * The request object to send.\n */\n request: IHttpRequest;\n /**\n * Optional authorization configuration.\n */\n authorization: IRequestAuthorization[] | undefined;\n /**\n * The request options.\n */\n config: IRequestConfig | undefined;\n /**\n * HTTP tests to perform.\n */\n assertions: IHttpAssertion[] | undefined\n}\n\n/**\n * An element that renders an HTTP editor.\n * \n * @fires send - A custom event when the user requested to send the request. The detail object is the editor's request.\n * @fires abort - When the user requested to abort the ongoing request.\n * @fires authorizationchange - When authorization data change.\n * @fires uichange - When the UI model change.\n */\nexport default class RequestEditor extends ApiElement {\n /**\n * A promise set when reading payload from the `request` object.\n * It is resolved after the payload is read anf the `payload` property is set.\n */\n protected readingPayloadPromise = Promise.resolve();\n\n /**\n * A promise set when the payload is being written to the `request` object.\n * It is resolved after the `payload` is set on the request as a serializable object.\n */\n protected writingPayloadPromise = Promise.resolve();\n\n /**\n * A flag used to determine when the payload is being read for the synchronous code.\n */\n @state() readingPayload = false;\n\n /**\n * The base request object.\n */\n @property({ type: Object }) request: IHttpRequest = new HttpRequest().toJSON();\n\n /**\n * The request payload.\n * It can be just a string or an object with the payload data depending on the content type.\n */\n @state() payload?: DeserializedPayload;\n\n /** \n * The current content type value.\n */\n @state() contentType?: string;\n\n @property({ type: Array }) authorization?: IRequestAuthorization[];\n\n @property({ type: Array }) assertions?: IHttpAssertion[];\n\n @property({ type: Array }) flows?: IHttpFlow[];\n\n /**\n * Redirect URL for the OAuth2 authorization.\n * If can be also set by dispatching `oauth2-redirect-url-changed`\n * with `value` property on the `detail` object.\n */\n @property({ type: String }) oauth2RedirectUri?: string;\n\n /**\n * When set the editor is in read only mode.\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * A value to be passed to the OAuth 2 `authorizationUri` property in case\n * if current configuration has no value.\n * This is to be used as a default value.\n */\n @property({ type: String, reflect: true }) oauth2AuthorizationUri?: string;\n\n /**\n * A value to be passed to the OAuth 2 `accessTokenUri` property in case\n * if current configuration has no value.\n * This is to be used as a default value.\n */\n @property({ type: String, reflect: true }) oauth2AccessTokenUri?: string;\n\n /**\n * When set it ignores all `content-*` headers when the request method is `GET`.\n * When not set or `false` it renders a warning message.\n */\n @property({ type: Boolean, reflect: true }) ignoreContentOnGet = false;\n\n /** \n * When set the `content-` headers warning dialog is rendered.\n */\n @property({ type: Boolean, reflect: true }) contentHeadersDialogOpened = false;\n\n /**\n * To be set when the request is being transported.\n */\n @property({ type: Boolean, reflect: true }) loading = false;\n\n /**\n * An index of currently opened tab.\n * @default 0\n */\n @property({ type: Number, reflect: true }) selectedTab: SelectedTab = 'parameters';\n\n /**\n * Optional instance of the `RequestUiMeta` to store the UI state.\n */\n @property({ type: Object }) ui?: IRequestUiMeta;\n\n /**\n * HTTP request configuration for the transport.\n */\n @property({ type: Object }) config = new RequestConfig().toJSON();\n\n /**\n * @returns True when the request cannot have the payload on the message.\n */\n get isPayload(): boolean {\n const { request } = this;\n if (!request || !request.method) {\n return false;\n }\n return !NonPayloadMethods.includes(request.method);\n }\n\n protected _awaitingOAuth2authorization = false;\n\n /**\n * This is set by the internal logic. When `ignoreContentOnGet` is set and the headers have `content-` headers\n * a dialog is rendered when trying to send the request. When the user chooses to ignore the warning this\n * flag makes sure that `send()` does not check headers.\n * \n * @todo(pawel): This should be done in the request logic module plugin.\n * Plugins can stop request indefinitely or cancel it.\n */\n ignoreValidationOnGet = false;\n\n @state() protected snippets?: IHttpRequest;\n\n constructor() {\n super();\n this.config.enabled = false;\n this.handleInternalSend = this.handleInternalSend.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.eventsTarget.addEventListener(EventTypes.Http.Request.send, this.handleInternalSend);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.eventsTarget.addEventListener(EventTypes.Http.Request.send, this.handleInternalSend);\n }\n\n override firstUpdated(changedProperties: PropertyValues<this>): void {\n super.firstUpdated(changedProperties);\n this.computeSnippetsRequest();\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('request')) {\n this.setupContentType();\n this.readingPayloadPromise = this.readPayload();\n }\n if (changedProperties.has('ui') && this.ui) {\n if (this.ui.selectedEditor) {\n this.selectedTab = this.ui.selectedEditor as SelectedTab;\n }\n }\n super.willUpdate(changedProperties);\n }\n\n protected setupContentType(request = this.request): void {\n if (!request) {\n this.contentType = undefined;\n return;\n }\n if (!request.headersModel) {\n this.contentType = undefined;\n return;\n }\n const item = request.headersModel.find(i => i.name.toLowerCase() === 'content-type');\n if (!item) {\n this.contentType = undefined;\n return;\n }\n this.contentType = item.value as string;\n this.setPayloadMimeOption(request, this.contentType);\n }\n\n protected async readPayload(): Promise<void> {\n const { request } = this;\n if (!request || !request.payload) {\n this.payload = undefined;\n return;\n }\n this.readingPayload = true;\n try {\n this.payload = await PayloadSerializer.deserialize(request.payload);\n } catch (e) {\n this.payload = undefined;\n } finally {\n this.readingPayload = false;\n }\n }\n\n /**\n * Validates state of the URL.\n * @return True if the URL has a structure that looks like\n * an URL which means scheme + something\n */\n validateUrl(): boolean {\n const { shadowRoot } = this;\n if (!shadowRoot) {\n return true;\n }\n const panel = shadowRoot.querySelector('http-url-input');\n if (!panel) {\n return true;\n }\n return panel.checkValidity();\n }\n\n /**\n * Checks if current request requires calling `authorize()` on the OAuth2 method.\n *\n * @return This returns `true` only for valid OAuth 2 method that has no access token.\n */\n requiresAuthorization(): boolean {\n const { authorization=[] } = this;\n const oauth = authorization.find((method) => method.enabled && method.type === 'oauth 2');\n if (!oauth) {\n return false;\n }\n const authMethod = this.shadowRoot?.querySelector('oauth2-authorization');\n if (!authMethod) {\n return false;\n }\n const cnf = oauth.config as IOAuth2Authorization;\n if (authMethod.checkValidity() && !cnf.accessToken) {\n return true;\n }\n return false;\n }\n\n /**\n * Validates headers for `Content-*` entries against current method.\n * @param request The request object\n * @return True if headers are invalid.\n */\n validateContentHeaders(request: IHttpRequest): boolean {\n const method = request.method || 'get';\n if (method.toLowerCase() !== 'get') {\n return false;\n }\n const any = !!request.headersModel && request.headersModel.some(i => i.name.toLowerCase().startsWith('content-'));\n if (any) {\n return true;\n }\n return false;\n }\n\n /**\n * Serializes the current values to the `IHttpRequest`\n */\n async serialize(): Promise<IHttpRequest> {\n if (!this.request) {\n const instance = new HttpRequest();\n return instance.toJSON();\n }\n await this.writingPayloadPromise;\n // make sure we copy everything.\n const instance = new HttpRequest(this.request);\n return instance.toJSON();\n }\n\n /**\n * Dispatches the send request event to the HTTP request engine.\n */\n async send(): Promise<void> {\n if (this.loading || !this.request) {\n return;\n }\n if (!this.validateUrl()) {\n return;\n }\n if (this.requiresAuthorization()) {\n const authMethod = this.shadowRoot?.querySelector('oauth2-authorization');\n if (authMethod) {\n authMethod.authorize();\n this._awaitingOAuth2authorization = true;\n }\n return;\n }\n const request = await this.serialize();\n // store the URL in the history\n await Events.HttpClient.Model.UrlHistory.add(request.url as string, this);\n if (!this.ignoreValidationOnGet && this.validateContentHeaders(request)) {\n this.contentHeadersDialogOpened = true;\n return;\n }\n this.ignoreValidationOnGet = false;\n this.notifySend(request);\n CoreEvents.Telemetry.event({\n category: 'Request editor',\n action: 'Send request',\n }, this);\n }\n\n protected notifySend(request: IHttpRequest): void {\n this.dispatchEvent(new CustomEvent<SendDetails>('send', {\n detail: {\n request,\n authorization: this.authorization,\n config: this.config,\n assertions: this.assertions,\n },\n }));\n }\n\n /**\n * If the request does not exist it creates one.\n * @returns The request object. \n */\n protected getRequest(): IHttpRequest {\n if (!this.request) {\n const instance = new HttpRequest();\n this.request = instance.toJSON();\n }\n return this.request;\n }\n\n /**\n * Aborts the request\n */\n abort(): void {\n this.dispatchEvent(new Event('abort'));\n }\n\n protected handleInternalSend(e: Event): void {\n e.stopPropagation();\n this.send();\n }\n\n protected handleVerbSelection(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const { verb } = target.dataset;\n if (verb) {\n this.selectVerb(verb);\n }\n }\n\n /**\n * @param verb The HTTP verb (operation, method)\n */\n selectVerb(verb: string): void {\n const request = this.getRequest();\n request.method = verb;\n this.requestUpdate();\n this.notifyChange();\n this.notifyPropertyChanged('method', verb);\n if (!this.isPayload && this.selectedTab === 'payload') {\n this.selectedTab = 'headers';\n }\n CoreEvents.Telemetry.event({\n category: 'Request editor',\n action: 'Method selected',\n label: verb,\n }, this);\n this.computeSnippetsRequest();\n }\n\n /**\n * The handler for the URL editor change event\n */\n protected handlerUrlChange(e: Event): void {\n const panel = e.target as UrlInputEditorElement;\n const { value } = panel;\n this.selectUrl(value);\n }\n\n /**\n * Commits the change in the URL.\n * @param value The new URL value\n */\n selectUrl(value: string): void {\n const request = this.getRequest();\n request.url = value;\n this.requestUpdate();\n this.notifyChange();\n this.notifyPropertyChanged('url', value);\n this.computeSnippetsRequest();\n }\n\n protected handleTabSelect(e: CustomEvent): void {\n const info = e.detail as TabSelectionDetail;\n this.selectedTab = info.select as SelectedTab;\n if (this.ui) {\n this.ui.selectedEditor = this.selectedTab;\n this.notifyPropertyChanged('ui', this.ui);\n }\n CoreEvents.Telemetry.event({\n category: 'Request editor',\n action: 'Editor switched',\n label: this.selectedTab,\n }, this);\n }\n\n protected handleParamsChange(e: Event): void {\n const input = e.target as UrlParamsForm;\n this.selectUrl(input.value);\n }\n\n /**\n * The handler for the headers change event from the headers editor.\n */\n handleHeadersChange(e: Event): void {\n e.preventDefault();\n const editor = e.target as HeadersForm;\n const { model } = editor;\n this.selectHeaders(model);\n if (!this.ui) {\n return;\n }\n // const { value, source } = node;\n if (!this.ui.headers) {\n this.ui.headers = {};\n }\n // this.ui.headers.source = source;\n this.notifyPropertyChanged('ui', this.ui);\n }\n\n selectHeaders(model: IProperty[]): void {\n const request = this.getRequest();\n request.headersModel = model;\n const ct = model.find(h => h.name.toLowerCase() === 'content-type');\n this.contentType = ct && ct.value as string;\n this.setPayloadMimeOption(request, this.contentType);\n this.requestUpdate();\n this.notifyChange();\n this.computeSnippetsRequest();\n }\n\n /**\n * The handler for the body editor change event\n */\n protected handleBody(e: Event): void {\n e.preventDefault();\n const node = e.target as BodyEditor;\n const { value, model, selected, contentType } = node;\n this.writingPayloadPromise = this.updatePayload(value as DeserializedPayload, contentType);\n this.computeSnippetsRequest();\n if (!this.ui) {\n return;\n }\n if (!this.ui.body) {\n this.ui.body = {};\n }\n this.ui.body.model = model;\n this.ui.body.selected = selected;\n this.notifyPropertyChanged('ui', this.ui);\n }\n\n protected async updatePayload(value: DeserializedPayload, mime?: string): Promise<void> {\n const serialized = await PayloadSerializer.serialize(value);\n const request = this.getRequest();\n request.payload = serialized;\n this.setPayloadMimeOption(request, mime);\n this.payload = value;\n this.requestUpdate();\n this.notifyChange();\n this.notifyPropertyChanged('payload', value);\n }\n\n /**\n * When `mime` is set it creates the `payloadOptions` property with the mime.\n * @param request The request to set the mime type \n * @param mime the mime type value\n */\n protected setPayloadMimeOption(request: IHttpRequest | HttpRequest, mime?: string): void {\n if (mime) {\n if (!request.payloadOptions) {\n request.payloadOptions = {};\n }\n request.payloadOptions.mime = mime;\n }\n }\n\n protected handleFlows(e: Event): void {\n e.preventDefault();\n const node = e.target as HttpFlows;\n this.selectFlows(node.model);\n }\n\n selectFlows(flows?: IHttpFlow[]): void {\n this.flows = flows;\n this.notifyChange();\n }\n\n protected handleAssertions(e: Event): void {\n e.preventDefault();\n const node = e.target as HttpAssertions;\n this.selectAssertions(node.model);\n }\n\n selectAssertions(assertions?: IHttpAssertion[]): void {\n this.assertions = assertions;\n this.notifyChange();\n }\n\n protected handleConfig(e: Event): void {\n const node = e.target as RequestConfigElement;\n this.selectRequestConfig(node.config);\n }\n\n selectRequestConfig(config: IRequestConfig): void {\n this.config = config;\n this.notifyChange();\n }\n\n /**\n * Called to notify listeners about a particular property change\n * \n * @param type The property that changed. The resulting event type is the combination of this value and the `change` suffix.\n * @param value The value of the changed property\n */\n protected notifyPropertyChanged(type: string, value: unknown): void {\n this.dispatchEvent(new CustomEvent(`${type}change`, {\n detail: {\n value\n }\n }));\n }\n\n protected handleContentWarningClose(e: CustomEvent<UiDialogClosingReason>): void {\n this.contentHeadersDialogOpened = false;\n if (e.detail.cancelled) {\n return;\n }\n this.ignoreValidationOnGet = true;\n this.send();\n }\n\n /**\n * When a request change this recomputes the values for code snippets.\n * These are different from the actual values in the request as\n * they contain authorization values applied to it.\n */\n protected async computeSnippetsRequest(): Promise<void> {\n const serialized = await this.serialize();\n const { authorization=[] } = this;\n SecurityProcessor.applyAuthorization(serialized, [ ...authorization ], { immutable: true });\n this.snippets = serialized;\n }\n\n /**\n * Adds a new authorization object to the request for the given type.\n * \n * @returns The created instance of the authorization.\n */\n addAuthorization(type: AuthorizationType): RequestAuthorization {\n const cnf = RequestAuthorization.fromTypedConfig(type, {}, false);\n cnf.enabled = true;\n if (!this.authorization) {\n this.authorization = [];\n }\n this.authorization.push(cnf.toJSON());\n this.notifyPropertyChanged('authorization', this.authorization);\n this.requestUpdate();\n return cnf;\n }\n\n /**\n * Updates authorization schema on the editor.\n * @param schema The new schema to replace the old one\n * @param isValid Whether the schema is valid.\n */\n updateAuthorization(schema: IRequestAuthorization, isValid: boolean): void {\n const { authorization } = this;\n if (!authorization) {\n return;\n }\n const index = authorization.findIndex(i => i.type === schema.type);\n if (index === -1) {\n return;\n }\n // eslint-disable-next-line no-param-reassign\n schema.valid = isValid;\n authorization[index] = schema;\n this.notifyPropertyChanged('authorization', this.authorization);\n }\n\n /**\n * Removes authorization schema from the editor.\n * @param type The authorization type to remove.\n */\n removeAuthorization(type: string): void {\n const { authorization } = this;\n if (!authorization) {\n return;\n }\n const index = authorization.findIndex(i => i.type === type);\n if (index === -1) {\n return;\n }\n authorization.splice(index, 1);\n this.notifyPropertyChanged('authorization', this.authorization);\n this.requestUpdate();\n }\n\n protected handleAuthAdd(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const selected = target.dataset.type as AuthorizationType | undefined;\n if (!selected) {\n return;\n }\n this.addAuthorization(selected);\n }\n\n protected handleAuthChange(e: Event): void {\n const editor = e.target as Authorization;\n const { authorization } = editor;\n this.updateAuthorization(authorization as IRequestAuthorization, editor.checkValidity());\n }\n\n protected handleAuthDelete(e: Event): void {\n const editor = e.target as Authorization;\n const { authorization } = editor;\n if (!authorization) {\n return;\n }\n this.removeAuthorization(authorization.type)\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderUrlEditorArea()}\n <div class=\"surface2 editors\">\n ${this.renderTabs()}\n ${this.renderCurrentEditor()}\n </div>\n ${this.renderHeadersDialog()}\n `;\n }\n\n /**\n * @returns The template for the top line with method selector, URL, and options.\n */\n protected renderUrlEditorArea(): TemplateResult {\n return html`\n <div class=\"url-editor\">\n <div class=\"url-meta\">\n ${this.renderUrlMeta()}\n </div>\n ${this.renderSendButton()}\n </div>\n `;\n }\n\n protected renderUrlMeta(): TemplateResult {\n return html`\n ${this.renderHttpMethodSelector()}\n ${this.renderUrlEditor()}\n `;\n }\n\n /**\n * @returns The template for the HTTP method selector\n */\n protected renderHttpMethodSelector(): TemplateResult {\n const request = this.getRequest();\n const { method = 'GET' } = request;\n \n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleVerbSelection}\"\n class=\"verb-dropdown\"\n closeOnOutsideClick\n >\n <ui-button type=\"text\">\n ${method}\n <ui-icon icon=\"arrowDropDown\"></ui-icon>\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.renderHttpVerbOptions()}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n /**\n * @returns The templates for each supported HTTP methods\n */\n protected renderHttpVerbOptions(): TemplateResult[] {\n return HttpMethods.map((method) => html`\n <ui-list-item role=\"menuitem\" image=\"icon\" data-verb=\"${method}\">\n <div slot=\"start\" data-method=\"${method.toLocaleLowerCase()}\" class=\"http-label\"></div>\n ${method}\n </ui-list-item>\n `);\n }\n\n /**\n * @returns The template for the HTTP URL editor\n */\n protected renderUrlEditor(): TemplateResult {\n const request = this.getRequest();\n const { url='' } = request;\n const { eventsTarget } = this;\n return html`\n <div class=\"url-input\">\n <http-url-input\n .value=\"${url}\"\n .eventsTarget=\"${eventsTarget}\"\n @change=\"${this.handlerUrlChange}\"\n ></http-url-input>\n </div>\n `;\n }\n\n /**\n * @returns The template for the \"send\" or \"abort\" buttons.\n */\n protected renderSendButton(): TemplateResult | string {\n if (this.loading) {\n return html`\n <ui-button type=\"filled\" title=\"Abort the request\" class=\"send-button\" @click=\"${this.abort}\">Abort</ui-button>\n `;\n }\n return html`\n <ui-button type=\"filled\" title=\"Send the request\" class=\"send-button\" @click=\"${this.send}\">Send</ui-button>\n `;\n }\n\n /**\n * @returns The template for the request editor tabs\n */\n protected renderTabs(): TemplateResult {\n const { isPayload, selectedTab } = this;\n // ui && ui.selectedEditor ||\n const selected = selectedTab;\n return html`\n <ui-tabs\n .selected=\"${selected}\"\n @select=\"${this.handleTabSelect}\"\n class=\"editor-tabs\"\n >\n <ui-tab aria-controls=\"parameters\" id=\"parameters-tab\">Parameters</ui-tab>\n <ui-tab aria-controls=\"headers\" id=\"headers-tab\">Headers</ui-tab>\n <ui-tab ?hidden=\"${!isPayload}\" aria-controls=\"payload\" id=\"payload-tab\">Body</ui-tab>\n <ui-tab aria-controls=\"authorization\" id=\"authorization-tab\">Authorization</ui-tab>\n <ui-tab aria-controls=\"flows\" id=\"flows-tab\">Flows</ui-tab>\n <ui-tab aria-controls=\"assertions\" id=\"assertions-tab\">Assertions</ui-tab>\n <ui-tab aria-controls=\"config\" id=\"config-tab\">Config</ui-tab>\n <ui-tab aria-controls=\"code-snippets\" id=\"code-snippets-tab\">Code snippets</ui-tab>\n </ui-tabs>`;\n }\n\n /**\n * @returns The template for the current editor\n */\n protected renderCurrentEditor(): TemplateResult {\n const { selectedTab, isPayload } = this;\n const parametersVisible = selectedTab === 'parameters';\n const headersVisible = selectedTab === 'headers';\n const bodyVisible = isPayload && selectedTab === 'payload';\n const authVisible = selectedTab === 'authorization';\n const codeVisible = selectedTab === 'code-snippets';\n const assertionsVisible = selectedTab === 'assertions';\n const configVisible = selectedTab === 'config';\n const flowsVisible = selectedTab === 'flows';\n return html`\n <div class=\"panel\">\n ${this.renderParameters(parametersVisible)}\n ${this.renderHeaders(headersVisible)}\n ${this.renderBody(bodyVisible)}\n ${this.renderAuthorization(authVisible)}\n ${this.renderHttpFlows(flowsVisible)}\n ${this.renderAssertions(assertionsVisible)}\n ${this.renderRequestConfig(configVisible)}\n ${this.renderSnippets(codeVisible)}\n </div>\n `;\n }\n\n protected renderParameters(visible: boolean): TemplateResult {\n const request = this.getRequest();\n const {\n eventsTarget,\n readOnly,\n } = this;\n return html`\n <http-url-params-form\n id=\"parameters\"\n aria-describedby=\"parameters-tab\"\n role=\"tabpanel\"\n ?hidden=\"${!visible}\"\n .value=\"${request.url || ''}\"\n .eventsTarget=\"${eventsTarget}\"\n ?readOnly=\"${readOnly}\"\n @change=\"${this.handleParamsChange}\"\n ></http-url-params-form>\n `;\n }\n\n /**\n * @param visible Whether the panel should not be hidden\n * @returns The template for the headers editor\n */\n protected renderHeaders(visible: boolean): TemplateResult {\n const request = this.getRequest();\n const {\n eventsTarget,\n readOnly,\n } = this;\n return html`\n <http-headers-form\n id=\"headers\"\n aria-describedby=\"headers-tab\"\n role=\"tabpanel\"\n .eventsTarget=\"${eventsTarget}\"\n .model=\"${request.headersModel || []}\"\n ?hidden=\"${!visible}\"\n @change=\"${this.handleHeadersChange}\"\n ?readonly=\"${readOnly}\"\n ></http-headers-form>`;\n }\n\n /**\n * @param visible Whether the panel should not be hidden\n * @returns The template for the body editor\n */\n protected renderBody(visible: boolean): TemplateResult {\n const {\n payload,\n readOnly,\n contentType,\n ui,\n readingPayload\n } = this;\n if (readingPayload) {\n return html`<p class=\"loading-body\" id=\"payload\">Preparing the editor...</p>`;\n }\n const body = ui && ui.body;\n const selected = body && body.selected as \"file\" | \"raw\" | \"urlEncode\" | \"multipart\";\n const model = body && body.model;\n \n return html`\n <http-body-editor\n id=\"payload\"\n aria-describedby=\"payload-tab\"\n role=\"tabpanel\"\n ?hidden=\"${!visible}\"\n ?readOnly=\"${readOnly}\"\n .contentType=\"${contentType}\"\n .model=\"${model}\"\n .value=\"${!model && payload || undefined}\"\n selected=\"${ifDefined(selected)}\"\n @change=\"${this.handleBody}\"\n @select=\"${this.handleBody}\"\n ></http-body-editor>\n `;\n }\n\n /**\n * @param visible Whether the panel should not be hidden\n * @returns The template for the authorization editor\n */\n protected renderAuthorization(visible: boolean): TemplateResult|string {\n const { authorization } = this;\n return html`\n <section ?hidden=\"${!visible}\" id=\"authorization\" aria-describedby=\"authorization-tab\" role=\"tabpanel\">\n ${this.renderAuthorizationActions(authorization)}\n ${this.renderAuthorizationList(authorization)}\n </section>\n `;\n }\n\n protected renderAuthorizationActions(current: IRequestAuthorization[] = []): TemplateResult {\n const all = ['basic', 'oauth 2', 'open id', 'bearer', 'api key', 'ntlm', 'client certificate'];\n const toRender: string[] = all.filter(type => !current.some(i => i.type === type));\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleAuthAdd}\"\n class=\"auth-dropdown\"\n closeOnOutsideClick\n >\n <ui-button \n type=\"tonal\" \n title=\"Add authorization option\" \n aria-label=\"Opens a menu to select authorization option\"\n ?disabled=\"${!toRender.length}\"\n >\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\" role=\"presentation\"></ui-icon>\n Add\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.renderAuthorizationOptions(toRender)}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderAuthorizationOptions(available: string[]): TemplateResult {\n return html`\n ${available.map(type => html`\n <ui-list-item role=\"menuitem\" data-type=\"${type}\">\n ${authTypeToLabel(type)}\n </ui-list-item>\n `)}\n `;\n }\n\n protected renderAuthorizationList(authorization: IRequestAuthorization[] = []): TemplateResult[] {\n if (!Array.isArray(authorization) || !authorization.length) {\n return [this.renderEmptyAuthorization()];\n }\n return authorization.map((item, index) => {\n let content: TemplateResult | undefined;\n switch (item.type) {\n case 'basic': content = this.renderBasicAuthorization(item); break;\n case 'bearer': content = this.renderBearerAuthorization(item); break;\n case 'ntlm': content = this.renderNtlmAuthorization(item); break;\n case 'oauth 2': content = this.renderOauthAuthorization(item); break;\n case 'open id': content = this.renderOidcAuthorization(item); break;\n case 'client certificate': content = this.renderCCAuthorization(item); break;\n case 'api key': content = this.renderApiKeyAuthorization(item); break;\n default:\n }\n if (content) {\n const isLast = authorization.length === index + 1;\n return html`\n ${content}\n ${!isLast ? html`<ui-divider></ui-divider>` : ''}\n `;\n }\n return html``;\n });\n }\n\n protected renderEmptyAuthorization(): TemplateResult {\n return html``;\n }\n\n protected renderBasicAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <basic-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n canToggle\n canDelete\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></basic-authorization>\n `;\n }\n\n protected renderBearerAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <bearer-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n canToggle\n canDelete\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></bearer-authorization>\n `;\n }\n\n protected renderNtlmAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <ntlm-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n canToggle\n canDelete\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></ntlm-authorization>\n `;\n }\n\n protected renderOauthAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <oauth2-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n canToggle\n canDelete\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n .defaultRedirectUri=\"${this.oauth2RedirectUri}\"\n ></oauth2-authorization>\n `;\n }\n\n protected renderOidcAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <oidc-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n canToggle\n canDelete\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n .defaultRedirectUri=\"${this.oauth2RedirectUri}\"\n ></oidc-authorization>\n `;\n }\n\n protected renderCCAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <cc-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n canToggle\n canDelete\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></cc-authorization>\n `;\n }\n\n protected renderApiKeyAuthorization(auth: IRequestAuthorization): TemplateResult {\n return html`\n <apikey-authorization\n .authorization=\"${auth}\"\n ?readOnly=\"${this.readOnly}\"\n class=\"auth-panel\"\n canToggle\n canDelete\n @change=\"${this.handleAuthChange}\"\n @delete=\"${this.handleAuthDelete}\"\n ></apikey-authorization>\n `;\n }\n\n protected renderHttpFlows(visible: boolean): TemplateResult | string {\n if (!visible) {\n return '';\n }\n const { flows = [] } = this;\n return html`\n <http-flows\n aria-label=\"HTTP fLows\" \n aria-labelledby=\"flows-tab\" \n id=\"flows\" \n role=\"tabpanel\"\n .model=\"${flows}\" \n @change=\"${this.handleFlows}\"\n ></http-flows>\n `;\n }\n\n protected renderAssertions(visible: boolean): TemplateResult | string {\n if (!visible) {\n return '';\n }\n const { assertions = [] } = this;\n return html`\n <http-assertions \n aria-label=\"Assertions\" \n aria-labelledby=\"assertions-tab\" \n id=\"assertions\" \n role=\"tabpanel\"\n .model=\"${assertions}\" \n @change=\"${this.handleAssertions}\"\n ></http-assertions>\n `;\n }\n\n protected renderRequestConfig(visible: boolean): TemplateResult | typeof nothing {\n if (!visible) {\n return nothing;\n }\n const { config } = this;\n return html`\n <http-request-config \n aria-label=\"Request options\" \n aria-labelledby=\"config-tab\" \n id=\"config\" \n role=\"tabpanel\"\n .config=\"${config}\"\n @change=\"${this.handleConfig}\"\n ></http-request-config>\n `;\n }\n\n /**\n * @param visible Whether the panel should be rendered\n * @returns The template for the Code snippets\n */\n protected renderSnippets(visible: boolean): TemplateResult|string {\n return html`\n <http-snippets \n ?hidden=\"${!visible}\"\n id=\"code-snippets\"\n aria-describedby=\"code-snippets-tab\"\n role=\"tabpanel\"\n .request=\"${this.snippets}\"\n ></http-snippets>`;\n }\n\n /**\n * @returns The template for the invalid content headers dialog\n */\n protected renderHeadersDialog(): TemplateResult|string {\n const { contentHeadersDialogOpened } = this;\n return html`\n <ui-dialog .open=\"${contentHeadersDialogOpened}\" @close=\"${this.handleContentWarningClose}\">\n <ui-icon slot=\"icon\" icon=\"warning\"></ui-icon>\n <span slot=\"title\">Headers are not valid</span>\n \n <div>\n <p>\n The <b>GET</b> request should not contain <b>content-*</b> headers. It may\n cause the server to behave unexpectedly.\n </p>\n <p><b>Do you want to continue?</b></p>\n </div>\n\n <ui-button type=\"text\" value=\"dismiss\" slot=\"button\">Cancel request</ui-button>\n <ui-button type=\"text\" value=\"confirm\" slot=\"button\">Continue</ui-button>\n </ui-dialog>`\n }\n}\n"]}
|
|
@@ -13,9 +13,9 @@ the License.
|
|
|
13
13
|
*/
|
|
14
14
|
import { TemplateResult } from 'lit';
|
|
15
15
|
import { StyleInfo } from 'lit/directives/style-map.js';
|
|
16
|
-
import { IUrl } from '@api-client/core/build/browser.js';
|
|
16
|
+
import type { IUrl } from '@api-client/core/build/browser.js';
|
|
17
17
|
import ApiElement from '../ApiElement.js';
|
|
18
|
-
import UiList from '../../ui/list/UiList.js';
|
|
18
|
+
import type UiList from '../../ui/list/UiList.js';
|
|
19
19
|
import '../../define/ui/ui-listbox.js';
|
|
20
20
|
import '../../define/ui/ui-list-item.js';
|
|
21
21
|
import '../../define/ui/ui-divider.js';
|
|
@@ -60,7 +60,7 @@ export default class UrlInput extends ApiElement {
|
|
|
60
60
|
/**
|
|
61
61
|
* A handler that is called on input
|
|
62
62
|
*/
|
|
63
|
-
|
|
63
|
+
notifyChange(): void;
|
|
64
64
|
/**
|
|
65
65
|
* A handler for the `url-value-changed` event.
|
|
66
66
|
* If this element is not the source of the event then it will update the `value` property.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlInput.d.ts","sourceRoot":"","sources":["../../../src/elements/http/UrlInput.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;EAYE;AACF,OAAO,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAY,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"UrlInput.d.ts","sourceRoot":"","sources":["../../../src/elements/http/UrlInput.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;EAYE;AACF,OAAO,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAY,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAI9D,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAElD,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,+BAA+B,CAAC;AAYvC;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,UAAU;IAC9C;;;OAGG;IACyB,KAAK,SAAa;IAE9C;;;OAGG;IACyC,QAAQ,UAAS;IAE7D;;OAEG;IACM,SAAS,CAAC,iBAAiB,UAAS;IAEpC,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAE/B,SAAS,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC;IAEhD,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEjC,SAAS,CAAC,SAAS,UAAS;IAG5B,SAAS,CAAC,KAAK,EAAG,gBAAgB,CAAC;IAGnC,SAAS,CAAC,oBAAoB,EAAG,cAAc,CAAC;IAGhD,SAAS,CAAC,eAAe,EAAG,MAAM,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;;IAS9B,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAQrC;;OAEG;IACM,YAAY,IAAI,IAAI;IAK7B;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAWzC;;;OAGG;cACa,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D;;OAEG;IACH,aAAa,IAAI,OAAO;IAQxB;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAUrC,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAOnC,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAY1C;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxC;;OAEG;cACa,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBlD,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAgBlD,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAiB/C,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAStD,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM7C;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAOjD,SAAS,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAmB9C,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAMpC;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA2C1C,MAAM,IAAI,cAAc;IAYjC;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,cAAc;IAwBvC;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,cAAc;IA8B9C;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,cAAc,EAAE,GAAG,MAAM;IAQ3D;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc;CAiB3D"}
|
|
@@ -84,7 +84,7 @@ export default class UrlInput extends ApiElement {
|
|
|
84
84
|
*/
|
|
85
85
|
notifyChange() {
|
|
86
86
|
Events.Http.Request.State.urlChange(this.value, this);
|
|
87
|
-
|
|
87
|
+
super.notifyChange();
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* A handler for the `url-value-changed` event.
|
|
@@ -98,7 +98,7 @@ export default class UrlInput extends ApiElement {
|
|
|
98
98
|
const { value } = e.detail;
|
|
99
99
|
if (value !== this.value) {
|
|
100
100
|
this.value = value;
|
|
101
|
-
|
|
101
|
+
super.notifyChange();
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
/**
|