@api-client/ui 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/build/src/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  2. package/build/src/elements/environment/EnvironmentEditor.js +8 -6
  3. package/build/src/elements/environment/EnvironmentEditor.js.map +1 -1
  4. package/build/src/elements/har/HarViewer.d.ts.map +1 -1
  5. package/build/src/elements/har/HarViewer.js +13 -15
  6. package/build/src/elements/har/HarViewer.js.map +1 -1
  7. package/build/src/elements/http/RequestEditor.d.ts +2 -1
  8. package/build/src/elements/http/RequestEditor.d.ts.map +1 -1
  9. package/build/src/elements/http/RequestEditor.js +17 -12
  10. package/build/src/elements/http/RequestEditor.js.map +1 -1
  11. package/build/src/elements/http/RequestLog.d.ts.map +1 -1
  12. package/build/src/elements/http/RequestLog.js +34 -8
  13. package/build/src/elements/http/RequestLog.js.map +1 -1
  14. package/build/src/md/button/internals/button.styles.js +4 -4
  15. package/build/src/md/button/internals/button.styles.js.map +1 -1
  16. package/build/src/md/motion/animation.d.ts +5 -3
  17. package/build/src/md/motion/animation.d.ts.map +1 -1
  18. package/build/src/md/motion/animation.js +4 -2
  19. package/build/src/md/motion/animation.js.map +1 -1
  20. package/build/src/md/ripple/internals/ripple.styles.d.ts.map +1 -1
  21. package/build/src/md/ripple/internals/ripple.styles.js +20 -8
  22. package/build/src/md/ripple/internals/ripple.styles.js.map +1 -1
  23. package/build/src/md/tabs/internals/Tab.d.ts +25 -9
  24. package/build/src/md/tabs/internals/Tab.d.ts.map +1 -1
  25. package/build/src/md/tabs/internals/Tab.js +122 -53
  26. package/build/src/md/tabs/internals/Tab.js.map +1 -1
  27. package/build/src/md/tabs/internals/Tab.styles.d.ts.map +1 -1
  28. package/build/src/md/tabs/internals/Tab.styles.js +69 -64
  29. package/build/src/md/tabs/internals/Tab.styles.js.map +1 -1
  30. package/build/src/md/tabs/internals/Tabs.d.ts +52 -54
  31. package/build/src/md/tabs/internals/Tabs.d.ts.map +1 -1
  32. package/build/src/md/tabs/internals/Tabs.js +270 -330
  33. package/build/src/md/tabs/internals/Tabs.js.map +1 -1
  34. package/build/src/md/tabs/internals/Tabs.styles.d.ts.map +1 -1
  35. package/build/src/md/tabs/internals/Tabs.styles.js +13 -17
  36. package/build/src/md/tabs/internals/Tabs.styles.js.map +1 -1
  37. package/build/src/md/text-field/internals/common.styles.d.ts.map +1 -1
  38. package/build/src/md/text-field/internals/common.styles.js +0 -3
  39. package/build/src/md/text-field/internals/common.styles.js.map +1 -1
  40. package/build/src/styles/m3/native.css +270 -0
  41. package/build/src/styles/m3/theme.css +155 -0
  42. package/build/src/styles/m3/tokens.css +512 -0
  43. package/demo/md/tabs/tabs.html +19 -0
  44. package/demo/md/tabs/tabs.ts +133 -83
  45. package/package.json +20 -4
  46. package/scripts/copy-assets.js +21 -0
  47. package/src/elements/environment/EnvironmentEditor.ts +8 -6
  48. package/src/elements/har/HarViewer.ts +13 -15
  49. package/src/elements/http/RequestEditor.ts +18 -13
  50. package/src/elements/http/RequestLog.ts +34 -8
  51. package/src/md/button/internals/button.styles.ts +4 -4
  52. package/src/md/motion/animation.ts +4 -2
  53. package/src/md/ripple/internals/ripple.styles.ts +20 -8
  54. package/src/md/tabs/internals/Tab.styles.ts +69 -64
  55. package/src/md/tabs/internals/Tab.ts +126 -43
  56. package/src/md/tabs/internals/Tabs.styles.ts +13 -17
  57. package/src/md/tabs/internals/Tabs.ts +259 -305
  58. package/src/md/text-field/internals/common.styles.ts +0 -3
  59. package/test/elements/har/HarViewerElement.test.ts +1 -55
@@ -549,8 +549,7 @@ let RequestEditor = (() => {
549
549
  this.computeSnippetsRequest();
550
550
  }
551
551
  handleTabSelect(e) {
552
- const info = e.detail;
553
- this.selectedTab = info.select;
552
+ this.selectedTab = e.detail.item.getAttribute('aria-controls');
554
553
  if (this.ui) {
555
554
  this.ui.selectedEditor = this.selectedTab;
556
555
  this.notifyPropertyChanged('ui', this.ui);
@@ -858,16 +857,22 @@ let RequestEditor = (() => {
858
857
  renderTabs() {
859
858
  const { isPayload, selectedTab } = this;
860
859
  // ui && ui.selectedEditor ||
861
- const selected = selectedTab;
862
- return html ` <ui-tabs .selected="${selected}" @select="${this.handleTabSelect}" class="editor-tabs">
863
- <ui-tab aria-controls="parameters" id="parameters-tab">Parameters</ui-tab>
864
- <ui-tab aria-controls="headers" id="headers-tab">Headers</ui-tab>
865
- <ui-tab ?hidden="${!isPayload}" aria-controls="payload" id="payload-tab">Body</ui-tab>
866
- <ui-tab aria-controls="authorization" id="authorization-tab">Authorization</ui-tab>
867
- <ui-tab aria-controls="flows" id="flows-tab">Flows</ui-tab>
868
- <ui-tab aria-controls="assertions" id="assertions-tab">Assertions</ui-tab>
869
- <ui-tab aria-controls="config" id="config-tab">Config</ui-tab>
870
- <ui-tab aria-controls="code-snippets" id="code-snippets-tab">Code snippets</ui-tab>
860
+ const s = selectedTab;
861
+ return html ` <ui-tabs @select="${this.handleTabSelect}" class="editor-tabs">
862
+ <ui-tab .selected="${s === 'parameters'}" aria-controls="parameters" id="parameters-tab">Parameters</ui-tab>
863
+ <ui-tab .selected="${s === 'headers'}" aria-controls="headers" id="headers-tab">Headers</ui-tab>
864
+ <ui-tab ?hidden="${!isPayload}" .selected="${s === 'payload'}" aria-controls="payload" id="payload-tab"
865
+ >Body</ui-tab
866
+ >
867
+ <ui-tab .selected="${s === 'authorization'}" aria-controls="authorization" id="authorization-tab"
868
+ >Authorization</ui-tab
869
+ >
870
+ <ui-tab .selected="${s === 'flows'}" aria-controls="flows" id="flows-tab">Flows</ui-tab>
871
+ <ui-tab .selected="${s === 'assertions'}" aria-controls="assertions" id="assertions-tab">Assertions</ui-tab>
872
+ <ui-tab .selected="${s === 'config'}" aria-controls="config" id="config-tab">Config</ui-tab>
873
+ <ui-tab .selected="${s === 'code-snippets'}" aria-controls="code-snippets" id="code-snippets-tab"
874
+ >Code snippets</ui-tab
875
+ >
871
876
  </ui-tabs>`;
872
877
  }
873
878
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"RequestEditor.js","sourceRoot":"","sources":["../../../../src/elements/http/RequestEditor.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, PropertyValues, nothing } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { HttpRequest, type IHttpRequest } from '@api-client/core/models/HttpRequest.js'\nimport { type IRequestAuthorization, RequestAuthorization } from '@api-client/core/models/RequestAuthorization.js'\nimport { type IRequestConfig, RequestConfig } from '@api-client/core/models/RequestConfig.js'\nimport type { IHttpAssertion } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport { type DeserializedPayload, PayloadSerializer } from '@api-client/core/lib/transformers/PayloadSerializer.js'\nimport type { IHttpFlow } from '@api-client/core/models/http-flows/HttpFlows.js'\nimport type { IRequestUiMeta } from '@api-client/core/models/RequestUiMeta.js'\nimport type { AuthorizationType, IOAuth2Authorization } from '@api-client/core/models/Authorization.js'\nimport type { IProperty } from '@api-client/core/models/Property.js'\nimport { SecurityProcessor } from '@api-client/core/authorization/lib/SecurityProcessor.js'\nimport { Events as CoreEvents } from '@api-client/core/events/Events.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 '../../md/tabs/internals/Tabs.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 '../../md/dialog/internals/Dialog.js'\nimport '../../md/icons/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 '../../md/dropdown-list/ui-dropdown-list.js'\nimport '../../md/list/ui-list.js'\nimport '../../md/list/ui-list-item.js'\nimport '../../md/button/ui-button.js'\nimport '../../md/tabs/ui-tabs.js'\nimport '../../md/tabs/ui-tab.js'\nimport '../../md/divider/ui-divider.js'\nimport '../../md/dialog/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 =\n | 'parameters'\n | 'headers'\n | 'payload'\n | 'authorization'\n | 'code-snippets'\n | 'assertions'\n | 'config'\n | '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() accessor readingPayload = false\n\n /**\n * The base request object.\n */\n @property({ type: Object }) accessor 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() accessor payload: DeserializedPayload | undefined\n\n /**\n * The current content type value.\n */\n @state() accessor contentType: string | undefined\n\n @property({ type: Array }) accessor authorization: IRequestAuthorization[] | undefined\n\n @property({ type: Array }) accessor assertions: IHttpAssertion[] | undefined\n\n @property({ type: Array }) accessor flows: IHttpFlow[] | undefined\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 }) accessor oauth2RedirectUri: string | undefined\n\n /**\n * When set the editor is in read only mode.\n */\n @property({ type: Boolean, reflect: true }) accessor 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 }) accessor oauth2AuthorizationUri: string | undefined\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 }) accessor oauth2AccessTokenUri: string | undefined\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 }) accessor ignoreContentOnGet = false\n\n /**\n * When set the `content-` headers warning dialog is rendered.\n */\n @property({ type: Boolean, reflect: true }) accessor contentHeadersDialogOpened = false\n\n /**\n * To be set when the request is being transported.\n */\n @property({ type: Boolean, reflect: true }) accessor loading = false\n\n /**\n * An index of currently opened tab.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor selectedTab: SelectedTab = 'parameters'\n\n /**\n * Optional instance of the `RequestUiMeta` to store the UI state.\n */\n @property({ type: Object }) accessor ui: IRequestUiMeta | undefined\n\n /**\n * HTTP request configuration for the transport.\n */\n @property({ type: Object }) accessor 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 accessor snippets: IHttpRequest | undefined\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 {\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 {\n category: 'Request editor',\n action: 'Send request',\n },\n this\n )\n }\n\n protected notifySend(request: IHttpRequest): void {\n this.dispatchEvent(\n 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 /**\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 {\n category: 'Request editor',\n action: 'Method selected',\n label: verb,\n },\n this\n )\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 {\n category: 'Request editor',\n action: 'Editor switched',\n label: this.selectedTab,\n },\n this\n )\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\n * 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(\n new CustomEvent(`${type}change`, {\n detail: {\n value,\n },\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 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\">${this.renderTabs()} ${this.renderCurrentEditor()}</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\">${this.renderUrlMeta()}</div>\n ${this.renderSendButton()}\n </div>\n `\n }\n\n protected renderUrlMeta(): TemplateResult {\n return html` ${this.renderHttpMethodSelector()} ${this.renderUrlEditor()} `\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 color=\"text\" class=\"button\">\n ${method}\n <ui-icon icon=\"arrowDropDown\"></ui-icon>\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\"> ${this.renderHttpVerbOptions()} </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(\n (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 /**\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 color=\"filled\" title=\"Abort the request\" class=\"send-button\" @click=\"${this.abort}\">Abort</ui-button>\n `\n }\n return html`\n <ui-button color=\"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` <ui-tabs .selected=\"${selected}\" @select=\"${this.handleTabSelect}\" class=\"editor-tabs\">\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)} ${this.renderHeaders(headersVisible)}\n ${this.renderBody(bodyVisible)} ${this.renderAuthorization(authVisible)} ${this.renderHttpFlows(flowsVisible)}\n ${this.renderAssertions(assertionsVisible)} ${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 { eventsTarget, readOnly } = 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 { eventsTarget, readOnly } = this\n return html` <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 { payload, readOnly, contentType, ui, readingPayload } = 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)} ${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 verticalAlign=\"top\" @select=\"${this.handleAuthAdd}\" class=\"auth-dropdown\" closeOnOutsideClick>\n <ui-button\n color=\"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\"> ${this.renderAuthorizationOptions(toRender)} </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderAuthorizationOptions(available: string[]): TemplateResult {\n return html`\n ${available.map(\n (type) => html` <ui-list-item role=\"menuitem\" data-type=\"${type}\"> ${authTypeToLabel(type)} </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':\n content = this.renderBasicAuthorization(item)\n break\n case 'bearer':\n content = this.renderBearerAuthorization(item)\n break\n case 'ntlm':\n content = this.renderNtlmAuthorization(item)\n break\n case 'oauth 2':\n content = this.renderOauthAuthorization(item)\n break\n case 'open id':\n content = this.renderOidcAuthorization(item)\n break\n case 'client certificate':\n content = this.renderCCAuthorization(item)\n break\n case 'api key':\n content = this.renderApiKeyAuthorization(item)\n break\n default:\n }\n if (content) {\n const isLast = authorization.length === index + 1\n return html` ${content} ${!isLast ? html`<ui-divider></ui-divider>` : ''} `\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` <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` <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 cause the server to behave\n unexpectedly.\n </p>\n <p><b>Do you want to continue?</b></p>\n </div>\n\n <ui-button color=\"text\" value=\"dismiss\" slot=\"button\">Cancel request</ui-button>\n <ui-button color=\"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":["import { html, TemplateResult, PropertyValues, nothing } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { HttpRequest, type IHttpRequest } from '@api-client/core/models/HttpRequest.js'\nimport { type IRequestAuthorization, RequestAuthorization } from '@api-client/core/models/RequestAuthorization.js'\nimport { type IRequestConfig, RequestConfig } from '@api-client/core/models/RequestConfig.js'\nimport type { IHttpAssertion } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport { type DeserializedPayload, PayloadSerializer } from '@api-client/core/lib/transformers/PayloadSerializer.js'\nimport type { IHttpFlow } from '@api-client/core/models/http-flows/HttpFlows.js'\nimport type { IRequestUiMeta } from '@api-client/core/models/RequestUiMeta.js'\nimport type { AuthorizationType, IOAuth2Authorization } from '@api-client/core/models/Authorization.js'\nimport type { IProperty } from '@api-client/core/models/Property.js'\nimport { SecurityProcessor } from '@api-client/core/authorization/lib/SecurityProcessor.js'\nimport { Events as CoreEvents } from '@api-client/core/events/Events.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 '../../md/tabs/internals/Tabs.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 '../../md/dialog/internals/Dialog.js'\nimport '../../md/icons/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 '../../md/dropdown-list/ui-dropdown-list.js'\nimport '../../md/list/ui-list.js'\nimport '../../md/list/ui-list-item.js'\nimport '../../md/button/ui-button.js'\nimport '../../md/tabs/ui-tabs.js'\nimport '../../md/tabs/ui-tab.js'\nimport '../../md/divider/ui-divider.js'\nimport '../../md/dialog/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 =\n | 'parameters'\n | 'headers'\n | 'payload'\n | 'authorization'\n | 'code-snippets'\n | 'assertions'\n | 'config'\n | '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() accessor readingPayload = false\n\n /**\n * The base request object.\n */\n @property({ type: Object }) accessor 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() accessor payload: DeserializedPayload | undefined\n\n /**\n * The current content type value.\n */\n @state() accessor contentType: string | undefined\n\n @property({ type: Array }) accessor authorization: IRequestAuthorization[] | undefined\n\n @property({ type: Array }) accessor assertions: IHttpAssertion[] | undefined\n\n @property({ type: Array }) accessor flows: IHttpFlow[] | undefined\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 }) accessor oauth2RedirectUri: string | undefined\n\n /**\n * When set the editor is in read only mode.\n */\n @property({ type: Boolean, reflect: true }) accessor 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 }) accessor oauth2AuthorizationUri: string | undefined\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 }) accessor oauth2AccessTokenUri: string | undefined\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 }) accessor ignoreContentOnGet = false\n\n /**\n * When set the `content-` headers warning dialog is rendered.\n */\n @property({ type: Boolean, reflect: true }) accessor contentHeadersDialogOpened = false\n\n /**\n * To be set when the request is being transported.\n */\n @property({ type: Boolean, reflect: true }) accessor loading = false\n\n /**\n * An index of currently opened tab.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor selectedTab: SelectedTab = 'parameters'\n\n /**\n * Optional instance of the `RequestUiMeta` to store the UI state.\n */\n @property({ type: Object }) accessor ui: IRequestUiMeta | undefined\n\n /**\n * HTTP request configuration for the transport.\n */\n @property({ type: Object }) accessor 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 accessor snippets: IHttpRequest | undefined\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 {\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 {\n category: 'Request editor',\n action: 'Send request',\n },\n this\n )\n }\n\n protected notifySend(request: IHttpRequest): void {\n this.dispatchEvent(\n 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 /**\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 {\n category: 'Request editor',\n action: 'Method selected',\n label: verb,\n },\n this\n )\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<TabSelectionDetail>): void {\n this.selectedTab = e.detail.item.getAttribute('aria-controls') as SelectedTab\n if (this.ui) {\n this.ui.selectedEditor = this.selectedTab\n this.notifyPropertyChanged('ui', this.ui)\n }\n CoreEvents.Telemetry.event(\n {\n category: 'Request editor',\n action: 'Editor switched',\n label: this.selectedTab,\n },\n this\n )\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\n * 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(\n new CustomEvent(`${type}change`, {\n detail: {\n value,\n },\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 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\">${this.renderTabs()} ${this.renderCurrentEditor()}</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\">${this.renderUrlMeta()}</div>\n ${this.renderSendButton()}\n </div>\n `\n }\n\n protected renderUrlMeta(): TemplateResult {\n return html` ${this.renderHttpMethodSelector()} ${this.renderUrlEditor()} `\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 color=\"text\" class=\"button\">\n ${method}\n <ui-icon icon=\"arrowDropDown\"></ui-icon>\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\"> ${this.renderHttpVerbOptions()} </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(\n (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 /**\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 color=\"filled\" title=\"Abort the request\" class=\"send-button\" @click=\"${this.abort}\">Abort</ui-button>\n `\n }\n return html`\n <ui-button color=\"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 s = selectedTab\n return html` <ui-tabs @select=\"${this.handleTabSelect}\" class=\"editor-tabs\">\n <ui-tab .selected=\"${s === 'parameters'}\" aria-controls=\"parameters\" id=\"parameters-tab\">Parameters</ui-tab>\n <ui-tab .selected=\"${s === 'headers'}\" aria-controls=\"headers\" id=\"headers-tab\">Headers</ui-tab>\n <ui-tab ?hidden=\"${!isPayload}\" .selected=\"${s === 'payload'}\" aria-controls=\"payload\" id=\"payload-tab\"\n >Body</ui-tab\n >\n <ui-tab .selected=\"${s === 'authorization'}\" aria-controls=\"authorization\" id=\"authorization-tab\"\n >Authorization</ui-tab\n >\n <ui-tab .selected=\"${s === 'flows'}\" aria-controls=\"flows\" id=\"flows-tab\">Flows</ui-tab>\n <ui-tab .selected=\"${s === 'assertions'}\" aria-controls=\"assertions\" id=\"assertions-tab\">Assertions</ui-tab>\n <ui-tab .selected=\"${s === 'config'}\" aria-controls=\"config\" id=\"config-tab\">Config</ui-tab>\n <ui-tab .selected=\"${s === 'code-snippets'}\" aria-controls=\"code-snippets\" id=\"code-snippets-tab\"\n >Code snippets</ui-tab\n >\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)} ${this.renderHeaders(headersVisible)}\n ${this.renderBody(bodyVisible)} ${this.renderAuthorization(authVisible)} ${this.renderHttpFlows(flowsVisible)}\n ${this.renderAssertions(assertionsVisible)} ${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 { eventsTarget, readOnly } = 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 { eventsTarget, readOnly } = this\n return html` <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 { payload, readOnly, contentType, ui, readingPayload } = 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)} ${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 verticalAlign=\"top\" @select=\"${this.handleAuthAdd}\" class=\"auth-dropdown\" closeOnOutsideClick>\n <ui-button\n color=\"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\"> ${this.renderAuthorizationOptions(toRender)} </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderAuthorizationOptions(available: string[]): TemplateResult {\n return html`\n ${available.map(\n (type) => html` <ui-list-item role=\"menuitem\" data-type=\"${type}\"> ${authTypeToLabel(type)} </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':\n content = this.renderBasicAuthorization(item)\n break\n case 'bearer':\n content = this.renderBearerAuthorization(item)\n break\n case 'ntlm':\n content = this.renderNtlmAuthorization(item)\n break\n case 'oauth 2':\n content = this.renderOauthAuthorization(item)\n break\n case 'open id':\n content = this.renderOidcAuthorization(item)\n break\n case 'client certificate':\n content = this.renderCCAuthorization(item)\n break\n case 'api key':\n content = this.renderApiKeyAuthorization(item)\n break\n default:\n }\n if (content) {\n const isLast = authorization.length === index + 1\n return html` ${content} ${!isLast ? html`<ui-divider></ui-divider>` : ''} `\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` <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` <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 cause the server to behave\n unexpectedly.\n </p>\n <p><b>Do you want to continue?</b></p>\n </div>\n\n <ui-button color=\"text\" value=\"dismiss\" slot=\"button\">Cancel request</ui-button>\n <ui-button color=\"text\" value=\"confirm\" slot=\"button\">Continue</ui-button>\n </ui-dialog>`\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RequestLog.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/RequestLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequestLog.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/RequestLog.ts"],"names":[],"mappings":"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"}
@@ -185,7 +185,7 @@ let RequestLog = (() => {
185
185
  }
186
186
  }
187
187
  handleViewSelect(e) {
188
- const key = e.detail.select;
188
+ const key = e.detail.item.getAttribute('aria-controls');
189
189
  if (!key) {
190
190
  return;
191
191
  }
@@ -196,12 +196,19 @@ let RequestLog = (() => {
196
196
  return html ` ${this.renderTabs(effectiveLog)} ${this.renderContent(effectiveLog)} `;
197
197
  }
198
198
  renderTabs(effectiveLog) {
199
- const { view: selected = 'headers' } = this;
199
+ const { view: s = 'headers' } = this;
200
200
  return html `
201
- <ui-tabs .selected="${selected}" @select="${this.handleViewSelect}">
202
- <ui-tab aria-controls="headers" id="headers-tab" title="Request and response header">Headers</ui-tab>
201
+ <ui-tabs @select="${this.handleViewSelect}">
202
+ <ui-tab
203
+ .selected="${s === 'headers'}"
204
+ aria-controls="headers"
205
+ id="headers-tab"
206
+ title="Request and response header"
207
+ >Headers</ui-tab
208
+ >
203
209
  <ui-tab
204
210
  ?hidden="${!this.hasRequestPayload}"
211
+ .selected="${s === 'payload'}"
205
212
  aria-controls="payload"
206
213
  id="payload-tab"
207
214
  title="Request payload set to server"
@@ -209,15 +216,34 @@ let RequestLog = (() => {
209
216
  >
210
217
  <ui-tab
211
218
  ?hidden="${!this.hasResponsePayload}"
219
+ .selected="${s === 'preview'}"
212
220
  aria-controls="preview"
213
221
  id="preview-tab"
214
222
  title="Formatted view of the response"
215
223
  >Preview</ui-tab
216
224
  >
217
- <ui-tab aria-controls="response" id="response-tab" title="Unformatted view of the response">Response</ui-tab>
218
- <ui-tab aria-controls="timings" id="timings-tab" title="Request detailed timings">Timings</ui-tab>
219
- <ui-tab aria-controls="redirects" id="redirects-tab" title="Detailed redirect information">Redirects</ui-tab>
220
- <ui-tab aria-controls="assertions" id="assertions-tab" title="HTTP assertions result"
225
+ <ui-tab
226
+ .selected="${s === 'response'}"
227
+ aria-controls="response"
228
+ id="response-tab"
229
+ title="Unformatted view of the response"
230
+ >Response</ui-tab
231
+ >
232
+ <ui-tab .selected="${s === 'timings'}" aria-controls="timings" id="timings-tab" title="Request detailed timings"
233
+ >Timings</ui-tab
234
+ >
235
+ <ui-tab
236
+ .selected="${s === 'redirects'}"
237
+ aria-controls="redirects"
238
+ id="redirects-tab"
239
+ title="Detailed redirect information"
240
+ >Redirects</ui-tab
241
+ >
242
+ <ui-tab
243
+ .selected="${s === 'assertions'}"
244
+ aria-controls="assertions"
245
+ id="assertions-tab"
246
+ title="HTTP assertions result"
221
247
  >Assertions ${this.renderAssertionsBadge(effectiveLog)}</ui-tab
222
248
  >
223
249
  </ui-tabs>
@@ -1 +1 @@
1
- {"version":3,"file":"RequestLog.js","sourceRoot":"","sources":["../../../../src/elements/http/RequestLog.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit'\nimport { type IRequestLog, RequestLog as CoreRequestLog } from '@api-client/core/models/RequestLog.js'\nimport { RequestTime } from '@api-client/core/models/RequestTime.js'\nimport type { ResponseRedirect } from '@api-client/core/models/ResponseRedirect.js'\nimport { ErrorResponse } from '@api-client/core/models/ErrorResponse.js'\nimport type { Response } from '@api-client/core/models/Response.js'\nimport { Headers } from '@api-client/core/lib/headers/Headers.js'\nimport type { AssertionResult } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport type { AssertionError } from '@api-client/core/models/http-flows/AssertionError.js'\nimport { property, state } from 'lit/decorators.js'\nimport { statusTemplate } from './HttpStatus.js'\nimport ApiElement from '../ApiElement.js'\nimport { TabSelectionDetail } from '../../md/tabs/internals/Tabs.js'\nimport '../../define/http/http-log-headers.js'\nimport '../../define/http/http-log-body.js'\nimport '../../define/http/http-log-timings.js'\nimport '../../md/tabs/ui-tab.js'\nimport '../../md/tabs/ui-tabs.js'\nimport '../../md/divider/ui-divider.js'\n\nexport enum RequestLogView {\n headers = 'headers',\n payload = 'payload',\n preview = 'preview',\n response = 'response',\n timings = 'timings',\n redirects = 'redirects',\n assertions = 'assertions',\n}\n\n/**\n * An element that renders the view for a core's `IRequestLog`.\n */\nexport default class RequestLog extends ApiElement {\n protected httpLogInternal?: IRequestLog | CoreRequestLog\n\n /**\n * This property is set when the `httpLog` is set.\n * It always represent an instance of the `RequestLog` (or undefined) regardless of the input format.\n */\n protected effectiveLog?: CoreRequestLog\n\n /**\n * The request log to render. When not set it renders nothing.\n */\n get httpLog(): IRequestLog | CoreRequestLog | undefined {\n return this.httpLogInternal\n }\n\n @property({ type: Object })\n set httpLog(value: IRequestLog | CoreRequestLog | undefined) {\n const old = this.httpLogInternal\n if (old === value) {\n return\n }\n this.httpLogInternal = value\n if (value) {\n if (typeof (value as CoreRequestLog).toJSON === 'function') {\n this.effectiveLog = value as CoreRequestLog\n } else {\n this.effectiveLog = new CoreRequestLog(value as IRequestLog)\n }\n } else {\n this.effectiveLog = undefined\n }\n this.processPayload()\n this.requestUpdate()\n }\n\n /**\n * Currently rendered view.\n * @attribute\n */\n @property({ type: String }) accessor view: RequestLogView = RequestLogView.headers\n\n /**\n * Returns `true` when the request has a payload message.\n */\n get hasRequestPayload(): boolean {\n const { effectiveLog } = this\n if (!effectiveLog) {\n return false\n }\n const { request } = effectiveLog\n if (!request) {\n return false\n }\n if (['get', 'head'].includes(request.method.toLowerCase())) {\n return false\n }\n return !!request.payload\n }\n\n /**\n * Returns `true` when the response has a payload message.\n */\n get hasResponsePayload(): boolean {\n const { effectiveLog } = this\n if (!effectiveLog) {\n return false\n }\n const { response } = effectiveLog\n if (!response) {\n return false\n }\n return !!response.payload\n }\n\n get hasResponse(): boolean {\n const { effectiveLog } = this\n if (!effectiveLog) {\n return false\n }\n const { response } = effectiveLog\n return !!response\n }\n\n @state() protected accessor isErrorResponse = false\n\n @state() protected accessor timingsData: RequestTime[] | undefined\n\n @state() protected accessor redirectsData: ResponseRedirect[] | undefined\n\n /**\n * Reads the payload to the original format for both the request and the response.\n */\n protected async processPayload(): Promise<void> {\n const { effectiveLog } = this\n if (!effectiveLog) {\n this.isErrorResponse = false\n this.timingsData = undefined\n this.redirectsData = undefined\n return\n }\n const { response } = effectiveLog\n if (!response) {\n this.isErrorResponse = false\n this.timingsData = undefined\n this.redirectsData = undefined\n } else {\n this.isErrorResponse = ErrorResponse.isErrorResponse(response)\n // computes list of redirects.\n if (!this.isErrorResponse) {\n const r = response as Response\n const timings: RequestTime[] = []\n const redirects: ResponseRedirect[] = []\n if (Array.isArray(effectiveLog.redirects)) {\n effectiveLog.redirects.forEach((rdr) => {\n redirects.push(rdr)\n if (rdr.timings) {\n timings.push(rdr.timings)\n }\n })\n }\n if (r.timings) {\n timings.push(r.timings)\n }\n this.timingsData = timings\n this.redirectsData = redirects\n }\n }\n }\n\n protected handleViewSelect(e: CustomEvent<TabSelectionDetail>): void {\n const key = e.detail.select as RequestLogView | undefined\n if (!key) {\n return\n }\n this.view = key\n }\n\n protected override render(): TemplateResult {\n const { effectiveLog } = this\n return html` ${this.renderTabs(effectiveLog)} ${this.renderContent(effectiveLog)} `\n }\n\n protected renderTabs(effectiveLog?: CoreRequestLog): TemplateResult {\n const { view: selected = 'headers' } = this\n return html`\n <ui-tabs .selected=\"${selected}\" @select=\"${this.handleViewSelect}\">\n <ui-tab aria-controls=\"headers\" id=\"headers-tab\" title=\"Request and response header\">Headers</ui-tab>\n <ui-tab\n ?hidden=\"${!this.hasRequestPayload}\"\n aria-controls=\"payload\"\n id=\"payload-tab\"\n title=\"Request payload set to server\"\n >Payload</ui-tab\n >\n <ui-tab\n ?hidden=\"${!this.hasResponsePayload}\"\n aria-controls=\"preview\"\n id=\"preview-tab\"\n title=\"Formatted view of the response\"\n >Preview</ui-tab\n >\n <ui-tab aria-controls=\"response\" id=\"response-tab\" title=\"Unformatted view of the response\">Response</ui-tab>\n <ui-tab aria-controls=\"timings\" id=\"timings-tab\" title=\"Request detailed timings\">Timings</ui-tab>\n <ui-tab aria-controls=\"redirects\" id=\"redirects-tab\" title=\"Detailed redirect information\">Redirects</ui-tab>\n <ui-tab aria-controls=\"assertions\" id=\"assertions-tab\" title=\"HTTP assertions result\"\n >Assertions ${this.renderAssertionsBadge(effectiveLog)}</ui-tab\n >\n </ui-tabs>\n `\n }\n\n protected renderAssertionsBadge(effectiveLog?: CoreRequestLog): TemplateResult | typeof nothing {\n if (!effectiveLog) {\n return nothing\n }\n const { assertions = [] } = effectiveLog\n const failed = assertions.filter((i) => !i.ok)\n if (!failed.length) {\n return nothing\n }\n return html` <span class=\"badge large-label tab\">${failed.length}</span> `\n }\n\n protected renderContent(effectiveLog?: CoreRequestLog): TemplateResult {\n const { view = RequestLogView.headers } = this\n if (!effectiveLog) {\n return html`<div class=\"empty-info\">No data available.</div>`\n }\n let tpl: TemplateResult\n switch (view) {\n case RequestLogView.payload:\n tpl = this.renderPayload(effectiveLog)\n break\n case RequestLogView.preview:\n tpl = this.renderPreview(effectiveLog)\n break\n case RequestLogView.response:\n tpl = this.renderResponse(effectiveLog)\n break\n case RequestLogView.timings:\n tpl = this.renderTimings()\n break\n case RequestLogView.redirects:\n tpl = this.renderRedirects()\n break\n case RequestLogView.assertions:\n tpl = this.renderAssertions(effectiveLog)\n break\n default:\n tpl = this.renderHeaders(effectiveLog)\n }\n return tpl\n }\n\n /**\n * Renders basic information about the request:\n * - request method & URL\n * - request headers\n * - response headers\n */\n protected renderHeaders(info: CoreRequestLog): TemplateResult {\n return html`\n <http-log-headers\n .httpLog=\"${info}\"\n role=\"tabpanel\"\n aria-labelledby=\"headers-tab\"\n id=\"headers\"\n ></http-log-headers>\n `\n }\n\n /**\n * @returns The template for the \"raw\" response body view.\n */\n protected renderPayload(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { request } = info\n if (!request) {\n return this._noDataTemplate('payload-tab', 'payload')\n }\n const parser = new Headers(request.headers)\n const mime = parser.get('content-type')\n return html`\n <http-log-body\n .payload=\"${request.payload}\"\n .contentType=\"${mime}\"\n role=\"tabpanel\"\n aria-labelledby=\"payload-tab\"\n id=\"payload\"\n ></http-log-body>\n `\n }\n\n /**\n * @returns The template for the parsed response body view.\n */\n protected renderPreview(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { response } = info\n if (!response) {\n return html`<p aria-labelledby=\"preview-tab\" id=\"preview\" role=\"tabpanel\">No response data</p>`\n }\n const parser = new Headers(response.headers)\n const mime = parser.get('content-type')\n return html`\n <http-log-body\n aria-labelledby=\"preview-tab\"\n id=\"preview\"\n .payload=\"${response.payload}\"\n .contentType=\"${mime}\"\n role=\"tabpanel\"\n ></http-log-body>\n `\n }\n\n protected renderResponse(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { response } = info\n if (!response) {\n return this._noDataTemplate('response-tab', 'response')\n }\n const parser = new Headers(response.headers)\n const mime = parser.get('content-type')\n return html`\n <http-log-body\n aria-labelledby=\"response-tab\"\n id=\"response\"\n .payload=\"${response.payload}\"\n .contentType=\"${mime}\"\n raw\n role=\"tabpanel\"\n ></http-log-body>\n `\n }\n\n protected renderTimings(): TemplateResult {\n const { timingsData } = this\n if (!timingsData || !timingsData.length) {\n return this._noDataTemplate('timings-tab', 'timings')\n }\n return html`<http-log-timings\n aria-labelledby=\"timings-tab\"\n id=\"timings\"\n .timings=\"${timingsData}\"\n role=\"tabpanel\"\n ></http-log-timings>`\n }\n\n protected renderRedirects(): TemplateResult {\n const { redirectsData } = this\n if (!redirectsData || !redirectsData.length) {\n return this._noDataTemplate('redirects-tab', 'redirects')\n }\n return html`\n <div role=\"tabpanel\" aria-labelledby=\"redirects-tab\" id=\"redirects\">\n ${redirectsData.map((item, index) => this.renderRedirect(item, index))}\n </div>\n `\n }\n\n protected renderRedirect(item: ResponseRedirect, index: number): TemplateResult {\n const { url, response } = item\n if (!response) {\n return html`\n <div class=\"status-row\">\n <div class=\"status-label text\">#<span>${index + 1}</span></div>\n <div class=\"redirect-value\">This redirect has no response data</div>\n </div>\n `\n }\n const headers = new Headers(response.headers)\n const mime = headers.get('content-type')\n return html`\n <div class=\"status-row\">\n <div class=\"status-label text\">#<span>${index + 1}</span></div>\n <div class=\"redirect-value\">\n <div class=\"redirect-code\">${statusTemplate(response.status, response.statusText)}</div>\n <div class=\"redirect-location\">\n <a href=\"${url}\" class=\"auto-link\">${url}</a>\n </div>\n ${this.renderHeadersRaw(headers)}\n ${response.payload\n ? html`<http-log-body\n .payload=\"${response.payload}\"\n .contentType=\"${mime}\"\n role=\"tabpanel\"\n ></http-log-body>`\n : ''}\n </div>\n </div>\n `\n }\n\n protected renderHeadersRaw(header: Headers): TemplateResult | string {\n const templates: TemplateResult[] = []\n header.forEach((value, name) => {\n templates.push(html`\n <li>\n <span class=\"header-name\">${name}</span>\n <span class=\"header-value\">${value}</span>\n </li>\n `)\n })\n if (!templates.length) {\n return ''\n }\n return html`\n <ul class=\"headers\">\n ${templates}\n </ul>\n `\n }\n\n protected _noDataTemplate(arialLabelledBy: string, id: string): TemplateResult {\n return html`\n <div class=\"no-data\" aria-labelledby=\"${arialLabelledBy}\" id=\"${id}\" role=\"tabpanel\">No data available.</div>\n `\n }\n\n protected renderAssertions(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { assertions } = info\n if (!Array.isArray(assertions) || !assertions.length) {\n return html`<p aria-labelledby=\"assertions-tab\" id=\"assertions\" role=\"tabpanel\" class=\"no-data\">\n No assertions defined.\n </p>`\n }\n return html`\n <section aria-label=\"Assertions\" aria-labelledby=\"assertions-tab\" id=\"assertions\" role=\"tabpanel\">\n ${assertions.map(\n (item, index) => html`\n ${this.renderAssertion(item)}\n ${index + 1 === assertions.length ? '' : html`<ui-divider type=\"inset\"></ui-divider>`}\n `\n )}\n </section>\n `\n }\n\n renderAssertion(item: AssertionResult): TemplateResult {\n const { description, ok, error } = item\n if (!ok) {\n return this.renderFailedAssertion(description, error as AssertionError)\n }\n return this.renderOkAssertion(description)\n }\n\n renderOkAssertion(description: string): TemplateResult {\n return html`\n <div class=\"assertion success\">\n <ui-icon role=\"presentation\" icon=\"check\" class=\"assertion-icon primary-text\"></ui-icon>\n <span class=\"label-large\">${description}</span>\n </div>\n `\n }\n\n renderFailedAssertion(description: string, error: AssertionError): TemplateResult {\n return html`\n <div class=\"assertion fail\">\n <ui-icon role=\"presentation\" icon=\"cancel\" class=\"assertion-icon error-text\"></ui-icon>\n <div class=\"fail-details\">\n <span class=\"label-large\">${description}</span>\n <span class=\"error-text body-large\">${error.message}</span>\n </div>\n </div>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"RequestLog.js","sourceRoot":"","sources":["../../../../src/elements/http/RequestLog.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit'\nimport { type IRequestLog, RequestLog as CoreRequestLog } from '@api-client/core/models/RequestLog.js'\nimport { RequestTime } from '@api-client/core/models/RequestTime.js'\nimport type { ResponseRedirect } from '@api-client/core/models/ResponseRedirect.js'\nimport { ErrorResponse } from '@api-client/core/models/ErrorResponse.js'\nimport type { Response } from '@api-client/core/models/Response.js'\nimport { Headers } from '@api-client/core/lib/headers/Headers.js'\nimport type { AssertionResult } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport type { AssertionError } from '@api-client/core/models/http-flows/AssertionError.js'\nimport { property, state } from 'lit/decorators.js'\nimport { statusTemplate } from './HttpStatus.js'\nimport ApiElement from '../ApiElement.js'\nimport { TabSelectionDetail } from '../../md/tabs/internals/Tabs.js'\nimport '../../define/http/http-log-headers.js'\nimport '../../define/http/http-log-body.js'\nimport '../../define/http/http-log-timings.js'\nimport '../../md/tabs/ui-tab.js'\nimport '../../md/tabs/ui-tabs.js'\nimport '../../md/divider/ui-divider.js'\n\nexport enum RequestLogView {\n headers = 'headers',\n payload = 'payload',\n preview = 'preview',\n response = 'response',\n timings = 'timings',\n redirects = 'redirects',\n assertions = 'assertions',\n}\n\n/**\n * An element that renders the view for a core's `IRequestLog`.\n */\nexport default class RequestLog extends ApiElement {\n protected httpLogInternal?: IRequestLog | CoreRequestLog\n\n /**\n * This property is set when the `httpLog` is set.\n * It always represent an instance of the `RequestLog` (or undefined) regardless of the input format.\n */\n protected effectiveLog?: CoreRequestLog\n\n /**\n * The request log to render. When not set it renders nothing.\n */\n get httpLog(): IRequestLog | CoreRequestLog | undefined {\n return this.httpLogInternal\n }\n\n @property({ type: Object })\n set httpLog(value: IRequestLog | CoreRequestLog | undefined) {\n const old = this.httpLogInternal\n if (old === value) {\n return\n }\n this.httpLogInternal = value\n if (value) {\n if (typeof (value as CoreRequestLog).toJSON === 'function') {\n this.effectiveLog = value as CoreRequestLog\n } else {\n this.effectiveLog = new CoreRequestLog(value as IRequestLog)\n }\n } else {\n this.effectiveLog = undefined\n }\n this.processPayload()\n this.requestUpdate()\n }\n\n /**\n * Currently rendered view.\n * @attribute\n */\n @property({ type: String }) accessor view: RequestLogView = RequestLogView.headers\n\n /**\n * Returns `true` when the request has a payload message.\n */\n get hasRequestPayload(): boolean {\n const { effectiveLog } = this\n if (!effectiveLog) {\n return false\n }\n const { request } = effectiveLog\n if (!request) {\n return false\n }\n if (['get', 'head'].includes(request.method.toLowerCase())) {\n return false\n }\n return !!request.payload\n }\n\n /**\n * Returns `true` when the response has a payload message.\n */\n get hasResponsePayload(): boolean {\n const { effectiveLog } = this\n if (!effectiveLog) {\n return false\n }\n const { response } = effectiveLog\n if (!response) {\n return false\n }\n return !!response.payload\n }\n\n get hasResponse(): boolean {\n const { effectiveLog } = this\n if (!effectiveLog) {\n return false\n }\n const { response } = effectiveLog\n return !!response\n }\n\n @state() protected accessor isErrorResponse = false\n\n @state() protected accessor timingsData: RequestTime[] | undefined\n\n @state() protected accessor redirectsData: ResponseRedirect[] | undefined\n\n /**\n * Reads the payload to the original format for both the request and the response.\n */\n protected async processPayload(): Promise<void> {\n const { effectiveLog } = this\n if (!effectiveLog) {\n this.isErrorResponse = false\n this.timingsData = undefined\n this.redirectsData = undefined\n return\n }\n const { response } = effectiveLog\n if (!response) {\n this.isErrorResponse = false\n this.timingsData = undefined\n this.redirectsData = undefined\n } else {\n this.isErrorResponse = ErrorResponse.isErrorResponse(response)\n // computes list of redirects.\n if (!this.isErrorResponse) {\n const r = response as Response\n const timings: RequestTime[] = []\n const redirects: ResponseRedirect[] = []\n if (Array.isArray(effectiveLog.redirects)) {\n effectiveLog.redirects.forEach((rdr) => {\n redirects.push(rdr)\n if (rdr.timings) {\n timings.push(rdr.timings)\n }\n })\n }\n if (r.timings) {\n timings.push(r.timings)\n }\n this.timingsData = timings\n this.redirectsData = redirects\n }\n }\n }\n\n protected handleViewSelect(e: CustomEvent<TabSelectionDetail>): void {\n const key = e.detail.item.getAttribute('aria-controls') as RequestLogView | undefined\n if (!key) {\n return\n }\n this.view = key\n }\n\n protected override render(): TemplateResult {\n const { effectiveLog } = this\n return html` ${this.renderTabs(effectiveLog)} ${this.renderContent(effectiveLog)} `\n }\n\n protected renderTabs(effectiveLog?: CoreRequestLog): TemplateResult {\n const { view: s = 'headers' } = this\n return html`\n <ui-tabs @select=\"${this.handleViewSelect}\">\n <ui-tab\n .selected=\"${s === 'headers'}\"\n aria-controls=\"headers\"\n id=\"headers-tab\"\n title=\"Request and response header\"\n >Headers</ui-tab\n >\n <ui-tab\n ?hidden=\"${!this.hasRequestPayload}\"\n .selected=\"${s === 'payload'}\"\n aria-controls=\"payload\"\n id=\"payload-tab\"\n title=\"Request payload set to server\"\n >Payload</ui-tab\n >\n <ui-tab\n ?hidden=\"${!this.hasResponsePayload}\"\n .selected=\"${s === 'preview'}\"\n aria-controls=\"preview\"\n id=\"preview-tab\"\n title=\"Formatted view of the response\"\n >Preview</ui-tab\n >\n <ui-tab\n .selected=\"${s === 'response'}\"\n aria-controls=\"response\"\n id=\"response-tab\"\n title=\"Unformatted view of the response\"\n >Response</ui-tab\n >\n <ui-tab .selected=\"${s === 'timings'}\" aria-controls=\"timings\" id=\"timings-tab\" title=\"Request detailed timings\"\n >Timings</ui-tab\n >\n <ui-tab\n .selected=\"${s === 'redirects'}\"\n aria-controls=\"redirects\"\n id=\"redirects-tab\"\n title=\"Detailed redirect information\"\n >Redirects</ui-tab\n >\n <ui-tab\n .selected=\"${s === 'assertions'}\"\n aria-controls=\"assertions\"\n id=\"assertions-tab\"\n title=\"HTTP assertions result\"\n >Assertions ${this.renderAssertionsBadge(effectiveLog)}</ui-tab\n >\n </ui-tabs>\n `\n }\n\n protected renderAssertionsBadge(effectiveLog?: CoreRequestLog): TemplateResult | typeof nothing {\n if (!effectiveLog) {\n return nothing\n }\n const { assertions = [] } = effectiveLog\n const failed = assertions.filter((i) => !i.ok)\n if (!failed.length) {\n return nothing\n }\n return html` <span class=\"badge large-label tab\">${failed.length}</span> `\n }\n\n protected renderContent(effectiveLog?: CoreRequestLog): TemplateResult {\n const { view = RequestLogView.headers } = this\n if (!effectiveLog) {\n return html`<div class=\"empty-info\">No data available.</div>`\n }\n let tpl: TemplateResult\n switch (view) {\n case RequestLogView.payload:\n tpl = this.renderPayload(effectiveLog)\n break\n case RequestLogView.preview:\n tpl = this.renderPreview(effectiveLog)\n break\n case RequestLogView.response:\n tpl = this.renderResponse(effectiveLog)\n break\n case RequestLogView.timings:\n tpl = this.renderTimings()\n break\n case RequestLogView.redirects:\n tpl = this.renderRedirects()\n break\n case RequestLogView.assertions:\n tpl = this.renderAssertions(effectiveLog)\n break\n default:\n tpl = this.renderHeaders(effectiveLog)\n }\n return tpl\n }\n\n /**\n * Renders basic information about the request:\n * - request method & URL\n * - request headers\n * - response headers\n */\n protected renderHeaders(info: CoreRequestLog): TemplateResult {\n return html`\n <http-log-headers\n .httpLog=\"${info}\"\n role=\"tabpanel\"\n aria-labelledby=\"headers-tab\"\n id=\"headers\"\n ></http-log-headers>\n `\n }\n\n /**\n * @returns The template for the \"raw\" response body view.\n */\n protected renderPayload(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { request } = info\n if (!request) {\n return this._noDataTemplate('payload-tab', 'payload')\n }\n const parser = new Headers(request.headers)\n const mime = parser.get('content-type')\n return html`\n <http-log-body\n .payload=\"${request.payload}\"\n .contentType=\"${mime}\"\n role=\"tabpanel\"\n aria-labelledby=\"payload-tab\"\n id=\"payload\"\n ></http-log-body>\n `\n }\n\n /**\n * @returns The template for the parsed response body view.\n */\n protected renderPreview(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { response } = info\n if (!response) {\n return html`<p aria-labelledby=\"preview-tab\" id=\"preview\" role=\"tabpanel\">No response data</p>`\n }\n const parser = new Headers(response.headers)\n const mime = parser.get('content-type')\n return html`\n <http-log-body\n aria-labelledby=\"preview-tab\"\n id=\"preview\"\n .payload=\"${response.payload}\"\n .contentType=\"${mime}\"\n role=\"tabpanel\"\n ></http-log-body>\n `\n }\n\n protected renderResponse(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { response } = info\n if (!response) {\n return this._noDataTemplate('response-tab', 'response')\n }\n const parser = new Headers(response.headers)\n const mime = parser.get('content-type')\n return html`\n <http-log-body\n aria-labelledby=\"response-tab\"\n id=\"response\"\n .payload=\"${response.payload}\"\n .contentType=\"${mime}\"\n raw\n role=\"tabpanel\"\n ></http-log-body>\n `\n }\n\n protected renderTimings(): TemplateResult {\n const { timingsData } = this\n if (!timingsData || !timingsData.length) {\n return this._noDataTemplate('timings-tab', 'timings')\n }\n return html`<http-log-timings\n aria-labelledby=\"timings-tab\"\n id=\"timings\"\n .timings=\"${timingsData}\"\n role=\"tabpanel\"\n ></http-log-timings>`\n }\n\n protected renderRedirects(): TemplateResult {\n const { redirectsData } = this\n if (!redirectsData || !redirectsData.length) {\n return this._noDataTemplate('redirects-tab', 'redirects')\n }\n return html`\n <div role=\"tabpanel\" aria-labelledby=\"redirects-tab\" id=\"redirects\">\n ${redirectsData.map((item, index) => this.renderRedirect(item, index))}\n </div>\n `\n }\n\n protected renderRedirect(item: ResponseRedirect, index: number): TemplateResult {\n const { url, response } = item\n if (!response) {\n return html`\n <div class=\"status-row\">\n <div class=\"status-label text\">#<span>${index + 1}</span></div>\n <div class=\"redirect-value\">This redirect has no response data</div>\n </div>\n `\n }\n const headers = new Headers(response.headers)\n const mime = headers.get('content-type')\n return html`\n <div class=\"status-row\">\n <div class=\"status-label text\">#<span>${index + 1}</span></div>\n <div class=\"redirect-value\">\n <div class=\"redirect-code\">${statusTemplate(response.status, response.statusText)}</div>\n <div class=\"redirect-location\">\n <a href=\"${url}\" class=\"auto-link\">${url}</a>\n </div>\n ${this.renderHeadersRaw(headers)}\n ${response.payload\n ? html`<http-log-body\n .payload=\"${response.payload}\"\n .contentType=\"${mime}\"\n role=\"tabpanel\"\n ></http-log-body>`\n : ''}\n </div>\n </div>\n `\n }\n\n protected renderHeadersRaw(header: Headers): TemplateResult | string {\n const templates: TemplateResult[] = []\n header.forEach((value, name) => {\n templates.push(html`\n <li>\n <span class=\"header-name\">${name}</span>\n <span class=\"header-value\">${value}</span>\n </li>\n `)\n })\n if (!templates.length) {\n return ''\n }\n return html`\n <ul class=\"headers\">\n ${templates}\n </ul>\n `\n }\n\n protected _noDataTemplate(arialLabelledBy: string, id: string): TemplateResult {\n return html`\n <div class=\"no-data\" aria-labelledby=\"${arialLabelledBy}\" id=\"${id}\" role=\"tabpanel\">No data available.</div>\n `\n }\n\n protected renderAssertions(info: CoreRequestLog): TemplateResult {\n if (!info) {\n return html``\n }\n const { assertions } = info\n if (!Array.isArray(assertions) || !assertions.length) {\n return html`<p aria-labelledby=\"assertions-tab\" id=\"assertions\" role=\"tabpanel\" class=\"no-data\">\n No assertions defined.\n </p>`\n }\n return html`\n <section aria-label=\"Assertions\" aria-labelledby=\"assertions-tab\" id=\"assertions\" role=\"tabpanel\">\n ${assertions.map(\n (item, index) => html`\n ${this.renderAssertion(item)}\n ${index + 1 === assertions.length ? '' : html`<ui-divider type=\"inset\"></ui-divider>`}\n `\n )}\n </section>\n `\n }\n\n renderAssertion(item: AssertionResult): TemplateResult {\n const { description, ok, error } = item\n if (!ok) {\n return this.renderFailedAssertion(description, error as AssertionError)\n }\n return this.renderOkAssertion(description)\n }\n\n renderOkAssertion(description: string): TemplateResult {\n return html`\n <div class=\"assertion success\">\n <ui-icon role=\"presentation\" icon=\"check\" class=\"assertion-icon primary-text\"></ui-icon>\n <span class=\"label-large\">${description}</span>\n </div>\n `\n }\n\n renderFailedAssertion(description: string, error: AssertionError): TemplateResult {\n return html`\n <div class=\"assertion fail\">\n <ui-icon role=\"presentation\" icon=\"cancel\" class=\"assertion-icon error-text\"></ui-icon>\n <div class=\"fail-details\">\n <span class=\"label-large\">${description}</span>\n <span class=\"error-text body-large\">${error.message}</span>\n </div>\n </div>\n `\n }\n}\n"]}