@api-client/ui 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bindings/base/StoreBindings.d.ts +1 -10
- package/dist/bindings/base/StoreBindings.d.ts.map +1 -1
- package/dist/bindings/base/StoreBindings.js +7 -98
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.d.ts +5 -3
- package/dist/elements/authorization/ui/CcAuthorization.d.ts.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.js +21 -16
- package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.d.ts +6 -0
- package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +29 -4
- package/dist/elements/project/HttpProjectRequest.js.map +1 -1
- package/dist/elements/project/HttpProjectRequestHistory.d.ts +5 -3
- package/dist/elements/project/HttpProjectRequestHistory.d.ts.map +1 -1
- package/dist/elements/project/HttpProjectRequestHistory.js +53 -42
- package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
- package/dist/elements/project/ProjectRunner.d.ts +11 -3
- package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
- package/dist/elements/project/ProjectRunner.js +60 -20
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/DataModelVisualizationElement.d.ts.map +1 -1
- package/dist/elements/schema-design/DataModelVisualizationElement.js +18 -1
- package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
- package/dist/events/EventTypes.d.ts +7 -23
- package/dist/events/EventTypes.d.ts.map +1 -1
- package/dist/events/EventTypes.js +7 -23
- package/dist/events/EventTypes.js.map +1 -1
- package/dist/events/Events.d.ts +0 -8
- package/dist/events/Events.d.ts.map +1 -1
- package/dist/events/StoreEvents.d.ts +1 -9
- package/dist/events/StoreEvents.d.ts.map +1 -1
- package/dist/events/StoreEvents.js +1 -21
- package/dist/events/StoreEvents.js.map +1 -1
- package/dist/events/http-client/models/CertificatesEvents.d.ts +1 -18
- package/dist/events/http-client/models/CertificatesEvents.d.ts.map +1 -1
- package/dist/events/http-client/models/CertificatesEvents.js +2 -24
- package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.d.ts +7 -0
- package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +11 -1
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/http-project/HttpProject.styles.d.ts.map +1 -1
- package/dist/pages/http-project/HttpProject.styles.js +2 -1
- package/dist/pages/http-project/HttpProject.styles.js.map +1 -1
- package/package.json +1 -1
- package/src/bindings/base/StoreBindings.ts +7 -101
- package/src/elements/authorization/ui/CcAuthorization.ts +24 -19
- package/src/elements/project/HttpProjectRequest.ts +33 -4
- package/src/elements/project/HttpProjectRequestHistory.ts +58 -48
- package/src/elements/project/ProjectRunner.ts +69 -22
- package/src/elements/schema-design/DataModelVisualizationElement.ts +18 -1
- package/src/events/EventTypes.ts +7 -23
- package/src/events/StoreEvents.ts +1 -23
- package/src/events/http-client/models/CertificatesEvents.ts +1 -29
- package/src/pages/http-project/HttpProject.screen.ts +12 -1
- package/src/pages/http-project/HttpProject.styles.ts +2 -1
- package/test/events/EventTypes.test.ts +22 -60
|
@@ -4,34 +4,40 @@ import { state } from "lit/decorators.js";
|
|
|
4
4
|
import { Events as CoreEvents, } from '@api-client/core/build/browser.js';
|
|
5
5
|
import '@github/relative-time-element';
|
|
6
6
|
import { Authorization } from "./Authorization.js";
|
|
7
|
+
import { Events } from "../../../events/Events.js";
|
|
8
|
+
import { StoreBroadcast } from "../../../http-client/store/StoreBroadcast.js";
|
|
7
9
|
import '../../../define/ui/ui-button.js';
|
|
8
10
|
import '../../../define/ui/ui-radio.js';
|
|
9
|
-
import { Events } from "../../../events/Events.js";
|
|
10
|
-
import { EventTypes } from "../../../events/EventTypes.js";
|
|
11
11
|
export default class CcAuthorization extends Authorization {
|
|
12
12
|
constructor() {
|
|
13
13
|
super();
|
|
14
14
|
this.querying = false;
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
15
|
+
this.channel = new BroadcastChannel(StoreBroadcast.certificates);
|
|
16
|
+
this.handleBroadcast = this.handleBroadcast.bind(this);
|
|
17
17
|
}
|
|
18
18
|
connectedCallback() {
|
|
19
19
|
super.connectedCallback();
|
|
20
|
-
this.
|
|
21
|
-
this.eventsTarget.addEventListener(EventTypes.HttpClient.Model.Certificate.State.delete, this.handleCertificateDeleted);
|
|
20
|
+
this.channel.addEventListener('message', this.handleBroadcast);
|
|
22
21
|
this.queryCertificates();
|
|
23
22
|
}
|
|
24
23
|
disconnectedCallback() {
|
|
25
24
|
super.disconnectedCallback();
|
|
26
|
-
this.
|
|
27
|
-
this.eventsTarget.removeEventListener(EventTypes.HttpClient.Model.Certificate.State.delete, this.handleCertificateDeleted);
|
|
25
|
+
this.channel.removeEventListener('message', this.handleBroadcast);
|
|
28
26
|
}
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
handleBroadcast(e) {
|
|
28
|
+
const event = e.data;
|
|
29
|
+
switch (event.operation) {
|
|
30
|
+
case 'created':
|
|
31
|
+
this.handleCreated(event);
|
|
32
|
+
break;
|
|
33
|
+
case 'deleted':
|
|
34
|
+
this.handleDeleted(event);
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
34
37
|
}
|
|
38
|
+
}
|
|
39
|
+
handleCreated(event) {
|
|
40
|
+
const cert = event.data;
|
|
35
41
|
if (!this.items) {
|
|
36
42
|
this.items = [];
|
|
37
43
|
}
|
|
@@ -44,12 +50,11 @@ export default class CcAuthorization extends Authorization {
|
|
|
44
50
|
}
|
|
45
51
|
this.requestUpdate();
|
|
46
52
|
}
|
|
47
|
-
|
|
53
|
+
handleDeleted(event) {
|
|
48
54
|
if (!this.items) {
|
|
49
55
|
return;
|
|
50
56
|
}
|
|
51
|
-
const
|
|
52
|
-
const { key } = e.detail;
|
|
57
|
+
const { key } = event;
|
|
53
58
|
const index = this.items.findIndex(i => i.key === key);
|
|
54
59
|
if (index >= 0) {
|
|
55
60
|
this.items.splice(index, 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CcAuthorization.js","sourceRoot":"","sources":["../../../../src/elements/authorization/ui/CcAuthorization.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n ICCAuthorization, HttpCertificate, Events as CoreEvents, ContextStateUpdateEvent,\n ContextStateDeleteEvent,\n ICertificate,\n} from '@api-client/core/build/browser.js';\nimport '@github/relative-time-element';\nimport { Authorization } from \"./Authorization.js\";\nimport '../../../define/ui/ui-button.js';\nimport '../../../define/ui/ui-radio.js';\nimport { Events } from \"../../../events/Events.js\";\nimport { EventTypes } from \"../../../events/EventTypes.js\";\nimport RadioElement from \"../../../ui/input/RadioElement.js\";\n\nexport default class CcAuthorization extends Authorization {\n @state() items?: ICertificate[];\n\n @state() querying = false;\n\n @state() loadingError?: string;\n\n constructor() {\n super();\n\n this.handlerCertificateUpdated = this.handlerCertificateUpdated.bind(this);\n this.handleCertificateDeleted = this.handleCertificateDeleted.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.eventsTarget.addEventListener(EventTypes.HttpClient.Model.Certificate.State.update, this.handlerCertificateUpdated);\n this.eventsTarget.addEventListener(EventTypes.HttpClient.Model.Certificate.State.delete, this.handleCertificateDeleted);\n this.queryCertificates();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.eventsTarget.removeEventListener(EventTypes.HttpClient.Model.Certificate.State.update, this.handlerCertificateUpdated);\n this.eventsTarget.removeEventListener(EventTypes.HttpClient.Model.Certificate.State.delete, this.handleCertificateDeleted);\n }\n\n protected handlerCertificateUpdated(input: Event): void {\n const e = input as ContextStateUpdateEvent<ICertificate>;\n const cert = e.detail.item;\n if (!cert) {\n return;\n }\n if (!this.items) {\n this.items = [];\n }\n const index = this.items.findIndex(i => i.key === cert.key);\n if (index >= 0) {\n this.items[index] = cert;\n } else {\n this.items.push(cert);\n }\n this.requestUpdate();\n }\n\n protected handleCertificateDeleted(input: Event): void {\n if (!this.items) {\n return;\n }\n const e = input as ContextStateDeleteEvent;\n const { key } = e.detail;\n const index = this.items.findIndex(i => i.key === key);\n if (index >= 0) {\n this.items.splice(index, 1);\n this.requestUpdate();\n }\n }\n\n protected async queryCertificates(): Promise<void> {\n if (this.querying) {\n return;\n }\n this.querying = true;\n try {\n const data = await Events.HttpClient.Model.Certificate.list({ limit: 100, space: \"\" }); // the space should be filled by the bindings / hosting app\n if (!data) {\n this.items = undefined;\n throw new Error(`Certificates query not handled by the store.`);\n return;\n }\n this.items = data.items;\n } catch (cause) {\n this.loadingError = (cause as Error).message;\n } finally {\n this.querying = false;\n }\n }\n\n protected handleSelected(e: Event): void {\n const { authorization } = this;\n if (!authorization) {\n return;\n }\n\n const radio = e.target as RadioElement;\n const { checked, value } = radio;\n if (!checked) {\n return;\n }\n const config = authorization.config as ICCAuthorization || {} as ICCAuthorization;\n if (value === '') {\n delete config.certificate;\n } else {\n const cert = this.items?.find(i => i.key === value);\n if (!cert) {\n return;\n }\n config.certificate = cert;\n }\n this.notifyChange();\n\n CoreEvents.Telemetry.event({\n category: 'Certificates',\n action: 'Authorization',\n label: 'selected-certificate'\n }, this);\n }\n\n override render(): TemplateResult {\n return html`\n ${this.renderHeader()}\n ${this.renderEditor()}\n `;\n }\n\n protected renderEditor(): TemplateResult | typeof nothing {\n const { authorization, loadingError, items } = this;\n if (!authorization) {\n return nothing;\n }\n const hasItems = !!items && !!items.length;\n if (!loadingError && !hasItems) {\n return html`\n ${this.renderEmptyState()}\n `;\n }\n const config = authorization.config as ICCAuthorization || {} as ICCAuthorization;\n return html`\n ${loadingError ? this.renderErrorState(loadingError) : ''}\n ${hasItems ? html`\n <form autocomplete=\"on\" class=\"auth-form basic-auth\">\n ${this.renderList(items, config.certificate)}\n </form>\n ` : ''}\n `;\n }\n\n protected renderErrorState(error: string): TemplateResult {\n return html`<p class=\"error-message\">Unable to load certificates: ${error}.</p>`;\n }\n\n protected renderEmptyState(): TemplateResult {\n return html`<p class=\"empty-screen body-large\">There are no certificates installed in this application.</p>`;\n }\n\n protected renderList(items: HttpCertificate[], current?: ICertificate): TemplateResult {\n const currentKey = current && current.key;\n return html`\n ${this.renderNoneItem(currentKey)}\n ${items.map((item) => this.renderCertItem(item, currentKey))}\n `;\n }\n\n protected renderNoneItem(selectedKey?: string): TemplateResult {\n return html`\n <label class=\"label-medium\">\n <ui-radio name=\"certificate\" value=\"\" .checked=\"${!selectedKey}\" @change=\"${this.handleSelected}\"></ui-radio>\n None\n </label>\n `;\n }\n\n /**\n * @param item The item to render\n * @returns The template for the dropdown item.\n */\n protected renderCertItem(item: HttpCertificate, selectedKey?: string): TemplateResult {\n return html`\n <div class=\"cert-item\">\n <label>\n <ui-radio name=\"certificate\" value=\"${item.key}\" .checked=\"${item.key === selectedKey}\" @change=\"${this.handleSelected}\"></ui-radio>\n <div class=\"cert-meta\">\n <span class=\"label-medium\">${item.name}</span>\n <span class=\"body-small\">Added: ${this.renderDateTime(item.created)}</span>\n </div>\n </label>\n </div>\n `;\n }\n\n /**\n * @param created The certificate created time.\n * @returns The template for the cert time element.\n */\n protected renderDateTime(created?: number): TemplateResult {\n if (!created) {\n return html`<span>Unknown</span>`;\n }\n const d = new Date(created);\n return html`\n <relative-time datetime=\"${d.toISOString()}\"></relative-time>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CcAuthorization.js","sourceRoot":"","sources":["../../../../src/elements/authorization/ui/CcAuthorization.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n ICCAuthorization, HttpCertificate, Events as CoreEvents,\n ICertificate,\n BroadcastEvent,\n BroadcastCreatedEvent,\n DeletedBroadcastEvent,\n} from '@api-client/core/build/browser.js';\nimport '@github/relative-time-element';\nimport { Authorization } from \"./Authorization.js\";\nimport { Events } from \"../../../events/Events.js\";\nimport type RadioElement from \"../../../ui/input/RadioElement.js\";\nimport { StoreBroadcast } from \"../../../http-client/store/StoreBroadcast.js\";\nimport '../../../define/ui/ui-button.js';\nimport '../../../define/ui/ui-radio.js';\n\nexport default class CcAuthorization extends Authorization {\n @state() items?: ICertificate[];\n\n @state() querying = false;\n\n @state() loadingError?: string;\n\n channel = new BroadcastChannel(StoreBroadcast.certificates);\n\n constructor() {\n super();\n\n this.handleBroadcast = this.handleBroadcast.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.channel.addEventListener('message', this.handleBroadcast);\n this.queryCertificates();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.channel.removeEventListener('message', this.handleBroadcast);\n }\n\n protected handleBroadcast(e: MessageEvent): void {\n const event = e.data as BroadcastEvent;\n switch (event.operation) {\n case 'created': this.handleCreated(event as BroadcastCreatedEvent); break;\n case 'deleted': this.handleDeleted(event as DeletedBroadcastEvent); break;\n default:\n }\n }\n\n protected handleCreated(event: BroadcastCreatedEvent): void {\n const cert = event.data as ICertificate;\n if (!this.items) {\n this.items = [];\n }\n const index = this.items.findIndex(i => i.key === cert.key);\n if (index >= 0) {\n this.items[index] = cert;\n } else {\n this.items.push(cert);\n }\n this.requestUpdate();\n }\n\n protected handleDeleted(event: DeletedBroadcastEvent): void {\n if (!this.items) {\n return;\n }\n const { key } = event;\n const index = this.items.findIndex(i => i.key === key);\n if (index >= 0) {\n this.items.splice(index, 1);\n this.requestUpdate();\n }\n }\n\n protected async queryCertificates(): Promise<void> {\n if (this.querying) {\n return;\n }\n this.querying = true;\n try {\n const data = await Events.HttpClient.Model.Certificate.list({ limit: 100, space: \"\" }); // the space should be filled by the bindings / hosting app\n if (!data) {\n this.items = undefined;\n throw new Error(`Certificates query not handled by the store.`);\n return;\n }\n this.items = data.items;\n } catch (cause) {\n this.loadingError = (cause as Error).message;\n } finally {\n this.querying = false;\n }\n }\n\n protected handleSelected(e: Event): void {\n const { authorization } = this;\n if (!authorization) {\n return;\n }\n\n const radio = e.target as RadioElement;\n const { checked, value } = radio;\n if (!checked) {\n return;\n }\n const config = authorization.config as ICCAuthorization || {} as ICCAuthorization;\n if (value === '') {\n delete config.certificate;\n } else {\n const cert = this.items?.find(i => i.key === value);\n if (!cert) {\n return;\n }\n config.certificate = cert;\n }\n this.notifyChange();\n\n CoreEvents.Telemetry.event({\n category: 'Certificates',\n action: 'Authorization',\n label: 'selected-certificate'\n }, this);\n }\n\n override render(): TemplateResult {\n return html`\n ${this.renderHeader()}\n ${this.renderEditor()}\n `;\n }\n\n protected renderEditor(): TemplateResult | typeof nothing {\n const { authorization, loadingError, items } = this;\n if (!authorization) {\n return nothing;\n }\n const hasItems = !!items && !!items.length;\n if (!loadingError && !hasItems) {\n return html`\n ${this.renderEmptyState()}\n `;\n }\n const config = authorization.config as ICCAuthorization || {} as ICCAuthorization;\n return html`\n ${loadingError ? this.renderErrorState(loadingError) : ''}\n ${hasItems ? html`\n <form autocomplete=\"on\" class=\"auth-form basic-auth\">\n ${this.renderList(items, config.certificate)}\n </form>\n ` : ''}\n `;\n }\n\n protected renderErrorState(error: string): TemplateResult {\n return html`<p class=\"error-message\">Unable to load certificates: ${error}.</p>`;\n }\n\n protected renderEmptyState(): TemplateResult {\n return html`<p class=\"empty-screen body-large\">There are no certificates installed in this application.</p>`;\n }\n\n protected renderList(items: HttpCertificate[], current?: ICertificate): TemplateResult {\n const currentKey = current && current.key;\n return html`\n ${this.renderNoneItem(currentKey)}\n ${items.map((item) => this.renderCertItem(item, currentKey))}\n `;\n }\n\n protected renderNoneItem(selectedKey?: string): TemplateResult {\n return html`\n <label class=\"label-medium\">\n <ui-radio name=\"certificate\" value=\"\" .checked=\"${!selectedKey}\" @change=\"${this.handleSelected}\"></ui-radio>\n None\n </label>\n `;\n }\n\n /**\n * @param item The item to render\n * @returns The template for the dropdown item.\n */\n protected renderCertItem(item: HttpCertificate, selectedKey?: string): TemplateResult {\n return html`\n <div class=\"cert-item\">\n <label>\n <ui-radio name=\"certificate\" value=\"${item.key}\" .checked=\"${item.key === selectedKey}\" @change=\"${this.handleSelected}\"></ui-radio>\n <div class=\"cert-meta\">\n <span class=\"label-medium\">${item.name}</span>\n <span class=\"body-small\">Added: ${this.renderDateTime(item.created)}</span>\n </div>\n </label>\n </div>\n `;\n }\n\n /**\n * @param created The certificate created time.\n * @returns The template for the cert time element.\n */\n protected renderDateTime(created?: number): TemplateResult {\n if (!created) {\n return html`<span>Unknown</span>`;\n }\n const d = new Date(created);\n return html`\n <relative-time datetime=\"${d.toISOString()}\"></relative-time>\n `;\n }\n}\n"]}
|
|
@@ -16,6 +16,11 @@ import '../../define/ui/ui-list-item.js';
|
|
|
16
16
|
* The element will hook-up to the events to support project mutations.
|
|
17
17
|
*/
|
|
18
18
|
export default class HttpProjectRequest extends RequestEditor {
|
|
19
|
+
/**
|
|
20
|
+
* A reference to the global shared variables.
|
|
21
|
+
* Used with the communication with the execution server.
|
|
22
|
+
*/
|
|
23
|
+
sharedVariables?: Record<string, string>;
|
|
19
24
|
/**
|
|
20
25
|
* The source project
|
|
21
26
|
*/
|
|
@@ -77,6 +82,7 @@ export default class HttpProjectRequest extends RequestEditor {
|
|
|
77
82
|
protected prepareProxyInit(project: HttpProject, key: string, request: ProjectRequest): IHttpProjectProxyInit | IHttpProjectStoreProxyInit;
|
|
78
83
|
protected proxyRequest(init: IHttpProjectProxyInit | IHttpProjectStoreProxyInit): Promise<IProxyResult<IProjectExecutionLog> | undefined>;
|
|
79
84
|
protected execute(): Promise<void>;
|
|
85
|
+
mergeExecutedVariables(vars: Record<string, string>): void;
|
|
80
86
|
protected addHistory(report: IRequestLog): Promise<void>;
|
|
81
87
|
protected handleEnvironmentSelection(e: CustomEvent): void;
|
|
82
88
|
protected computeEnvironmentLabel(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpProjectRequest.d.ts","sourceRoot":"","sources":["../../../src/elements/project/HttpProjectRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAEpE,OAAO,EACL,cAAc,EAAE,WAAW,EAAE,WAAW,EACT,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAC7E,qBAAqB,EAAmB,WAAW,EAAE,SAAS,EAC9D,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,YAAY,EACrF,oBAAoB,EACpB,cAAc,EACd,cAAc,EAEd,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAIrD,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,4BAA4B,CAAC;AACpC,OAAO,iCAAiC,CAAC;AAMzC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,aAAa;IAC3D;;OAEG;IACyB,OAAO,CAAC,EAAE,WAAW,CAAC;IAElD;;;OAGG;IACwC,GAAG,CAAC,EAAE,MAAM,CAAC;IAExD;;;OAGG;IACyB,OAAO,CAAC,EAAE,YAAY,CAAC;IAEnD;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAE1C;;OAEG;IACM,SAAS,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAEhD;;;OAGG;IACM,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE7C;;;;;OAKG;IAC0B,WAAW,CAAC,EAAE,OAAO,CAAC;;cAUhC,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAO7D,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAkB1C,SAAS,CAAC,OAAO,IAAI,IAAI;IAMzB,SAAS,CAAC,YAAY,IAAI,IAAI;IA2B9B;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAMxD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS9B,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IASvC,gBAAgB,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI;IASrD,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI;IAStC,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;cASjC,aAAa,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvF,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,oBAAoB;IAY/D,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAkB1E,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;cAiB7B,UAAU,IAAI,IAAI;IAIrC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,qBAAqB,GAAG,0BAA0B;
|
|
1
|
+
{"version":3,"file":"HttpProjectRequest.d.ts","sourceRoot":"","sources":["../../../src/elements/project/HttpProjectRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -195,11 +195,15 @@ export default class HttpProjectRequest extends RequestEditor {
|
|
|
195
195
|
this.execute();
|
|
196
196
|
}
|
|
197
197
|
prepareProxyInit(project, key, request) {
|
|
198
|
+
const { sharedVariables } = this;
|
|
198
199
|
const options = {
|
|
199
200
|
environment: request.environment,
|
|
200
201
|
request: [key],
|
|
201
202
|
recursive: true,
|
|
202
203
|
};
|
|
204
|
+
if (sharedVariables) {
|
|
205
|
+
options.variables = sharedVariables;
|
|
206
|
+
}
|
|
203
207
|
if (this.useNetStore) {
|
|
204
208
|
return {
|
|
205
209
|
kind: HttpProjectKind,
|
|
@@ -231,13 +235,31 @@ export default class HttpProjectRequest extends RequestEditor {
|
|
|
231
235
|
const init = this.prepareProxyInit(project, key, projectRequest);
|
|
232
236
|
this.loading = true;
|
|
233
237
|
const result = await this.proxyRequest(init);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
+
if (result && result.result) {
|
|
239
|
+
const [iteration] = result.result.iterations;
|
|
240
|
+
if (iteration) {
|
|
241
|
+
const { executed, variables } = iteration;
|
|
242
|
+
if (variables) {
|
|
243
|
+
this.mergeExecutedVariables(variables);
|
|
244
|
+
}
|
|
245
|
+
const [report] = executed;
|
|
246
|
+
if (report) {
|
|
247
|
+
this.addHistory(report);
|
|
248
|
+
this.requestUpdate();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
238
251
|
}
|
|
239
252
|
this.loading = false;
|
|
240
253
|
}
|
|
254
|
+
mergeExecutedVariables(vars) {
|
|
255
|
+
const { sharedVariables } = this;
|
|
256
|
+
if (!sharedVariables) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
Object.keys(vars).forEach((key) => {
|
|
260
|
+
sharedVariables[key] = vars[key];
|
|
261
|
+
});
|
|
262
|
+
}
|
|
241
263
|
async addHistory(report) {
|
|
242
264
|
const { appInfo, project, key } = this;
|
|
243
265
|
if (!appInfo) {
|
|
@@ -354,6 +376,9 @@ export default class HttpProjectRequest extends RequestEditor {
|
|
|
354
376
|
`;
|
|
355
377
|
}
|
|
356
378
|
}
|
|
379
|
+
__decorate([
|
|
380
|
+
property({ type: Object })
|
|
381
|
+
], HttpProjectRequest.prototype, "sharedVariables", void 0);
|
|
357
382
|
__decorate([
|
|
358
383
|
property({ type: Object })
|
|
359
384
|
], HttpProjectRequest.prototype, "project", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpProjectRequest.js","sourceRoot":"","sources":["../../../src/elements/project/HttpProjectRequest.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, PropertyValues, TemplateResult } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { \n ProjectRequest, HttpRequest, HttpProject, Events as CoreEvents, IProjectRunnerOptions, \n IHttpHistory, HttpHistoryKind, IRequestLog, IApplication, DeserializedPayload, \n IHttpProjectProxyInit, HttpProjectKind, Environment, IProperty, HeadersArray, \n RequestAuthorization, IRequestAuthorization, IHttpProjectStoreProxyInit, IProxyResult, \n IProjectExecutionLog,\n IHttpAssertion,\n IRequestConfig,\n RequestConfig,\n IHttpFlow,\n} from '@api-client/core/build/browser.js';\nimport { AuthorizationType } from '@api-client/core/build/src/models/Authorization.js';\nimport { JsonPatchOperation } from '@api-client/json';\nimport RequestEditor from '../http/RequestEditor.js';\nimport { Events } from '../../events/Events.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport { midnightTimestamp } from '../../lib/time/Conversion.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\n\nfunction stopEvent(e: Event): void {\n e.stopPropagation();\n}\n\n/**\n * An element that specializes in rendering an HTTP request that is defined on an HttpProject.\n * \n * When using this element set the `project` property to the currently opened\n * project and the `key` to the request to render.\n * The element will hook-up to the events to support project mutations.\n */\nexport default class HttpProjectRequest extends RequestEditor {\n /**\n * The source project\n */\n @property({ type: Object }) project?: HttpProject;\n\n /**\n * The key of the request being processed.\n * @attribute\n */\n @property({ type: String, reflect: true }) key?: string;\n\n /**\n * This property is required for the API access to work.\n * Set it to the current application information.\n */\n @property({ type: Object }) appInfo?: IApplication;\n\n /**\n * The read `expects` value from the project request.\n */\n protected expects?: HttpRequest;\n\n /**\n * The read project request object from the project.\n */\n protected projectRequest?: ProjectRequest;\n\n /**\n * The list of environments that apply to the current request.\n */\n @state() protected environments?: Environment[];\n\n /**\n * Computed value of the environment to render in the environment selector.\n * Because of the complexity of finding the name, it is computed on `environment` change only.\n */\n @state() protected environmentLabel?: string;\n\n /**\n * When set the requests sent from the editor will contain the entire project serialized with the request \n * rather just the id of the project. This is used in HTTP Client that doesn't use the net-store\n * and uses local proxy.\n * @attribute\n */\n @property({ type: Boolean }) useNetStore?: boolean;\n\n constructor() {\n super();\n // do not propagate HTTP request internal events outside as multiple requests are rendered in the same document.\n this.eventsTarget = this;\n this.addEventListener(EventTypes.Http.Request.State.urlChange, stopEvent);\n this.addEventListener(EventTypes.Http.Request.State.contentTypeChange, stopEvent);\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('project') || cp.has('key')) {\n this.setupRequest();\n }\n super.willUpdate(cp);\n }\n\n applyPatch(info: JsonPatchOperation): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n if (info.path.startsWith('/definitions/environments')) {\n // environments changed.\n this.setupRequestEnvironments(projectRequest);\n return;\n }\n // \"/definitions/requests/\\d+/...\"\n const parts = info.path.split('/').slice(4);\n const [root] = parts;\n if (root === 'expects' || root === 'log') {\n this.setupRequest();\n }\n }\n\n protected cleanup(): void {\n this.expects = undefined;\n this.environments = undefined;\n this.ui = undefined;\n }\n\n protected setupRequest(): void {\n const { project, key } = this;\n if (!project || !key) {\n this.cleanup();\n return;\n }\n const request = project.findRequest(key);\n if (!request) {\n this.cleanup();\n return;\n }\n this.projectRequest = request;\n const expects = request.getExpects();\n this.expects = expects;\n this.request = expects.toJSON();\n this.authorization = request.authorization?.map(i => i.toJSON());\n this.assertions = request.assertions;\n this.flows = request.flows;\n if (request.config) {\n this.config = request.config.toJSON();\n }\n\n this.setupRequestEnvironments(request);\n this.computeSnippetsRequest();\n this.requestUpdate();\n }\n\n /**\n * Reads environments to be applies to the request and sets up local variables.\n */\n protected setupRequestEnvironments(request: ProjectRequest): void {\n this.environments = request.readEnvironments();\n this.computeEnvironmentLabel();\n this.computeSnippetsRequest();\n }\n\n override selectVerb(verb: string): void {\n const { expects } = this;\n if (!expects) {\n return;\n }\n expects.method = verb;\n super.selectVerb(verb);\n }\n\n override selectUrl(value: string): void {\n const { expects } = this;\n if (!expects) {\n return;\n }\n expects.url = value;\n super.selectUrl(value);\n }\n\n override selectHeaders(model: IProperty[]): void {\n const { expects } = this;\n if (!expects) {\n return;\n }\n expects.headersModel = HeadersArray.from(model);\n super.selectHeaders(model);\n }\n\n override selectAssertions(assertions?: IHttpAssertion[]): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n projectRequest.assertions = assertions;\n super.selectAssertions(assertions);\n }\n\n override selectFlows(flows?: IHttpFlow[]): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n projectRequest.flows = flows;\n super.selectFlows(flows);\n }\n\n override selectRequestConfig(config: IRequestConfig): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n projectRequest.config = new RequestConfig(config);\n super.selectRequestConfig(config);\n }\n\n protected override async updatePayload(value: DeserializedPayload, mime?: string): Promise<void> {\n const { expects } = this;\n if (!expects) {\n return;\n }\n await expects.writePayload(value);\n this.setPayloadMimeOption(expects, mime);\n await super.updatePayload(value, mime);\n }\n\n override addAuthorization(type: AuthorizationType): RequestAuthorization {\n const schema = super.addAuthorization(type);\n if (this.projectRequest) {\n if (!this.projectRequest.authorization) {\n this.projectRequest.authorization = [];\n }\n this.projectRequest.authorization.push(schema)\n this.notifyChange();\n }\n return schema;\n }\n\n override updateAuthorization(schema: IRequestAuthorization, isValid: boolean): void {\n super.updateAuthorization(schema, isValid);\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n if (!projectRequest.authorization) {\n // somehow invalid state. These should be in sync...\n return;\n }\n const index = projectRequest.authorization.findIndex(i => i.type === schema.type)\n if (index === -1) {\n return;\n }\n projectRequest.authorization[index] = new RequestAuthorization(schema);\n this.notifyChange();\n }\n\n override removeAuthorization(type: string): void {\n super.removeAuthorization(type);\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n if (!projectRequest.authorization) {\n return;\n }\n const index = projectRequest.authorization.findIndex(i => i.type === type);\n if (index === -1) {\n return;\n }\n projectRequest.authorization.splice(index, 1);\n this.notifyChange();\n }\n\n protected override notifySend(): void {\n this.execute();\n }\n\n protected prepareProxyInit(project: HttpProject, key: string, request: ProjectRequest): IHttpProjectProxyInit | IHttpProjectStoreProxyInit {\n const options: IProjectRunnerOptions = {\n environment: request.environment,\n request: [key],\n recursive: true,\n };\n if (this.useNetStore) {\n return {\n kind: HttpProjectKind,\n pid: project.key,\n options,\n } as IHttpProjectStoreProxyInit;\n }\n return {\n project: project.toJSON(),\n kind: HttpProjectKind,\n options,\n };\n }\n\n protected async proxyRequest(init: IHttpProjectProxyInit | IHttpProjectStoreProxyInit): Promise<IProxyResult<IProjectExecutionLog> | undefined> {\n let result: IProxyResult<IProjectExecutionLog> | undefined;\n try {\n result = await CoreEvents.Transport.Core.httpProject(init, this);\n } catch (e) {\n // ...\n }\n return result;\n }\n\n protected async execute(): Promise<void> {\n const { project, key, projectRequest } = this;\n if (!project || !key || !projectRequest) {\n throw new Error(`The project request is not initialized.`);\n }\n const init = this.prepareProxyInit(project, key, projectRequest);\n this.loading = true;\n const result = await this.proxyRequest(init);\n const report = result?.result?.iterations[0]?.executed[0];\n if (report) {\n this.requestUpdate();\n this.addHistory(report);\n }\n this.loading = false;\n }\n\n protected async addHistory(report: IRequestLog): Promise<void> {\n const { appInfo, project, key } = this;\n if (!appInfo) {\n throw new Error(`The appInfo is not set on ${this.localName}`);\n }\n if (!project || !key) {\n return;\n }\n const item: IHttpHistory = {\n created: Date.now(),\n kind: HttpHistoryKind,\n log: report,\n project: project.key,\n app: appInfo.code,\n request: key,\n user: '', // added by the bindings\n midnight: midnightTimestamp(),\n key: '',\n space: '', // will be filled by the bindings.\n };\n \n Events.Store.History.create(item);\n }\n\n protected handleEnvironmentSelection(e: CustomEvent): void {\n const { projectRequest } = this;\n const target = e.detail.item as HTMLElement | undefined;\n if (!target || !projectRequest) {\n return;\n }\n const { key } = target.dataset;\n if (projectRequest.environment === key) {\n return;\n }\n projectRequest.environment = key;\n this.computeEnvironmentLabel();\n projectRequest.environment = key;\n this.computeSnippetsRequest();\n this.notifyChange();\n this.notifyPropertyChanged('environment', key);\n }\n\n protected computeEnvironmentLabel(): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n this.environmentLabel = undefined;\n return;\n }\n const url = projectRequest.readUrl({ baseUrl: true, noVariables: true });\n this.environmentLabel = url || 'No server defined';\n }\n\n protected override async computeSnippetsRequest(): Promise<void> {\n await super.computeSnippetsRequest();\n if (this.snippets) {\n const url = this.projectRequest?.readUrl();\n if (url) {\n this.snippets.url = url;\n }\n }\n }\n\n protected override renderUrlMeta(): TemplateResult {\n return html`\n ${this.renderHttpMethodSelector()}\n ${this.renderEnvironmentSelector()}\n ${this.renderUrlEditor()}\n `;\n }\n\n protected renderEnvironmentSelector(): TemplateResult | typeof nothing {\n const { environmentLabel: currentEnvironmentLabel, environments } = this;\n if (!environments?.length) {\n return nothing;\n }\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleEnvironmentSelection}\"\n class=\"environment-dropdown\"\n closeOnOutsideClick\n >\n <ui-button type=\"text\">\n ${currentEnvironmentLabel || 'No environment'}\n <ui-icon icon=\"arrowDropDown\"></ui-icon>\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item role=\"menuitem\" title=\"Selects the environment in the request's folder or inherited from a parent\">Inherited environment</ui-list-item>\n ${this.renderEnvironmentOptions(environments)}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderEnvironmentOptions(environments: Environment[]): TemplateResult[] {\n return environments.map((env) => this.renderEnvironmentItem(env));\n }\n\n protected renderEnvironmentItem(env: Environment): TemplateResult {\n const srv = env.getServer();\n const srvUri = srv?.readUri();\n const label = srvUri || 'Server not defined';\n // note, we don't disable items without server because it may still apply variables \n // from it.\n return html`\n <ui-list-item \n role=\"menuitem\" \n data-key=\"${env.key}\" \n lines=\"two\" \n >\n ${env.info.renderLabel}\n <p slot=\"supporting-text\">${label}</p>\n </ui-list-item>\n `;\n }\n\n protected override renderEmptyAuthorization(): TemplateResult {\n return html`\n <div class=\"body-medium centered\">\n This request will inherit authorization defined in an environment (if any).<br/>\n Add an authorization to this request to override.\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HttpProjectRequest.js","sourceRoot":"","sources":["../../../src/elements/project/HttpProjectRequest.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, PropertyValues, TemplateResult } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { \n ProjectRequest, HttpRequest, HttpProject, Events as CoreEvents, IProjectRunnerOptions, \n IHttpHistory, HttpHistoryKind, IRequestLog, IApplication, DeserializedPayload, \n IHttpProjectProxyInit, HttpProjectKind, Environment, IProperty, HeadersArray, \n RequestAuthorization, IRequestAuthorization, IHttpProjectStoreProxyInit, IProxyResult, \n IProjectExecutionLog,\n IHttpAssertion,\n IRequestConfig,\n RequestConfig,\n IHttpFlow,\n} from '@api-client/core/build/browser.js';\nimport { AuthorizationType } from '@api-client/core/build/src/models/Authorization.js';\nimport { JsonPatchOperation } from '@api-client/json';\nimport RequestEditor from '../http/RequestEditor.js';\nimport { Events } from '../../events/Events.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport { midnightTimestamp } from '../../lib/time/Conversion.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\n\nfunction stopEvent(e: Event): void {\n e.stopPropagation();\n}\n\n/**\n * An element that specializes in rendering an HTTP request that is defined on an HttpProject.\n * \n * When using this element set the `project` property to the currently opened\n * project and the `key` to the request to render.\n * The element will hook-up to the events to support project mutations.\n */\nexport default class HttpProjectRequest extends RequestEditor {\n /**\n * A reference to the global shared variables.\n * Used with the communication with the execution server.\n */\n @property({ type: Object }) sharedVariables?: Record<string, string>;\n\n /**\n * The source project\n */\n @property({ type: Object }) project?: HttpProject;\n\n /**\n * The key of the request being processed.\n * @attribute\n */\n @property({ type: String, reflect: true }) key?: string;\n\n /**\n * This property is required for the API access to work.\n * Set it to the current application information.\n */\n @property({ type: Object }) appInfo?: IApplication;\n\n /**\n * The read `expects` value from the project request.\n */\n protected expects?: HttpRequest;\n\n /**\n * The read project request object from the project.\n */\n protected projectRequest?: ProjectRequest;\n\n /**\n * The list of environments that apply to the current request.\n */\n @state() protected environments?: Environment[];\n\n /**\n * Computed value of the environment to render in the environment selector.\n * Because of the complexity of finding the name, it is computed on `environment` change only.\n */\n @state() protected environmentLabel?: string;\n\n /**\n * When set the requests sent from the editor will contain the entire project serialized with the request \n * rather just the id of the project. This is used in HTTP Client that doesn't use the net-store\n * and uses local proxy.\n * @attribute\n */\n @property({ type: Boolean }) useNetStore?: boolean;\n\n constructor() {\n super();\n // do not propagate HTTP request internal events outside as multiple requests are rendered in the same document.\n this.eventsTarget = this;\n this.addEventListener(EventTypes.Http.Request.State.urlChange, stopEvent);\n this.addEventListener(EventTypes.Http.Request.State.contentTypeChange, stopEvent);\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('project') || cp.has('key')) {\n this.setupRequest();\n }\n super.willUpdate(cp);\n }\n\n applyPatch(info: JsonPatchOperation): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n if (info.path.startsWith('/definitions/environments')) {\n // environments changed.\n this.setupRequestEnvironments(projectRequest);\n return;\n }\n // \"/definitions/requests/\\d+/...\"\n const parts = info.path.split('/').slice(4);\n const [root] = parts;\n if (root === 'expects' || root === 'log') {\n this.setupRequest();\n }\n }\n\n protected cleanup(): void {\n this.expects = undefined;\n this.environments = undefined;\n this.ui = undefined;\n }\n\n protected setupRequest(): void {\n const { project, key } = this;\n if (!project || !key) {\n this.cleanup();\n return;\n }\n const request = project.findRequest(key);\n if (!request) {\n this.cleanup();\n return;\n }\n this.projectRequest = request;\n const expects = request.getExpects();\n this.expects = expects;\n this.request = expects.toJSON();\n this.authorization = request.authorization?.map(i => i.toJSON());\n this.assertions = request.assertions;\n this.flows = request.flows;\n if (request.config) {\n this.config = request.config.toJSON();\n }\n\n this.setupRequestEnvironments(request);\n this.computeSnippetsRequest();\n this.requestUpdate();\n }\n\n /**\n * Reads environments to be applies to the request and sets up local variables.\n */\n protected setupRequestEnvironments(request: ProjectRequest): void {\n this.environments = request.readEnvironments();\n this.computeEnvironmentLabel();\n this.computeSnippetsRequest();\n }\n\n override selectVerb(verb: string): void {\n const { expects } = this;\n if (!expects) {\n return;\n }\n expects.method = verb;\n super.selectVerb(verb);\n }\n\n override selectUrl(value: string): void {\n const { expects } = this;\n if (!expects) {\n return;\n }\n expects.url = value;\n super.selectUrl(value);\n }\n\n override selectHeaders(model: IProperty[]): void {\n const { expects } = this;\n if (!expects) {\n return;\n }\n expects.headersModel = HeadersArray.from(model);\n super.selectHeaders(model);\n }\n\n override selectAssertions(assertions?: IHttpAssertion[]): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n projectRequest.assertions = assertions;\n super.selectAssertions(assertions);\n }\n\n override selectFlows(flows?: IHttpFlow[]): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n projectRequest.flows = flows;\n super.selectFlows(flows);\n }\n\n override selectRequestConfig(config: IRequestConfig): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n projectRequest.config = new RequestConfig(config);\n super.selectRequestConfig(config);\n }\n\n protected override async updatePayload(value: DeserializedPayload, mime?: string): Promise<void> {\n const { expects } = this;\n if (!expects) {\n return;\n }\n await expects.writePayload(value);\n this.setPayloadMimeOption(expects, mime);\n await super.updatePayload(value, mime);\n }\n\n override addAuthorization(type: AuthorizationType): RequestAuthorization {\n const schema = super.addAuthorization(type);\n if (this.projectRequest) {\n if (!this.projectRequest.authorization) {\n this.projectRequest.authorization = [];\n }\n this.projectRequest.authorization.push(schema)\n this.notifyChange();\n }\n return schema;\n }\n\n override updateAuthorization(schema: IRequestAuthorization, isValid: boolean): void {\n super.updateAuthorization(schema, isValid);\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n if (!projectRequest.authorization) {\n // somehow invalid state. These should be in sync...\n return;\n }\n const index = projectRequest.authorization.findIndex(i => i.type === schema.type)\n if (index === -1) {\n return;\n }\n projectRequest.authorization[index] = new RequestAuthorization(schema);\n this.notifyChange();\n }\n\n override removeAuthorization(type: string): void {\n super.removeAuthorization(type);\n const { projectRequest } = this;\n if (!projectRequest) {\n return;\n }\n if (!projectRequest.authorization) {\n return;\n }\n const index = projectRequest.authorization.findIndex(i => i.type === type);\n if (index === -1) {\n return;\n }\n projectRequest.authorization.splice(index, 1);\n this.notifyChange();\n }\n\n protected override notifySend(): void {\n this.execute();\n }\n\n protected prepareProxyInit(project: HttpProject, key: string, request: ProjectRequest): IHttpProjectProxyInit | IHttpProjectStoreProxyInit {\n const { sharedVariables } = this;\n const options: IProjectRunnerOptions = {\n environment: request.environment,\n request: [key],\n recursive: true,\n };\n if (sharedVariables) {\n options.variables = sharedVariables;\n }\n if (this.useNetStore) {\n return {\n kind: HttpProjectKind,\n pid: project.key,\n options,\n } as IHttpProjectStoreProxyInit;\n }\n return {\n project: project.toJSON(),\n kind: HttpProjectKind,\n options,\n };\n }\n\n protected async proxyRequest(init: IHttpProjectProxyInit | IHttpProjectStoreProxyInit): Promise<IProxyResult<IProjectExecutionLog> | undefined> {\n let result: IProxyResult<IProjectExecutionLog> | undefined;\n try {\n result = await CoreEvents.Transport.Core.httpProject(init, this);\n } catch (e) {\n // ...\n }\n return result;\n }\n\n protected async execute(): Promise<void> {\n const { project, key, projectRequest } = this;\n if (!project || !key || !projectRequest) {\n throw new Error(`The project request is not initialized.`);\n }\n const init = this.prepareProxyInit(project, key, projectRequest);\n this.loading = true;\n const result = await this.proxyRequest(init);\n if (result && result.result) {\n const [iteration] = result.result.iterations;\n if (iteration) {\n const { executed, variables } = iteration;\n if (variables) {\n this.mergeExecutedVariables(variables);\n }\n const [report] = executed;\n if (report) {\n this.addHistory(report);\n this.requestUpdate();\n }\n }\n }\n this.loading = false;\n }\n\n mergeExecutedVariables(vars: Record<string, string>): void {\n const { sharedVariables } = this;\n if (!sharedVariables) {\n return;\n }\n Object.keys(vars).forEach((key) => {\n sharedVariables[key] = vars[key];\n });\n }\n\n protected async addHistory(report: IRequestLog): Promise<void> {\n const { appInfo, project, key } = this;\n if (!appInfo) {\n throw new Error(`The appInfo is not set on ${this.localName}`);\n }\n if (!project || !key) {\n return;\n }\n const item: IHttpHistory = {\n created: Date.now(),\n kind: HttpHistoryKind,\n log: report,\n project: project.key,\n app: appInfo.code,\n request: key,\n user: '', // added by the bindings\n midnight: midnightTimestamp(),\n key: '',\n space: '', // will be filled by the bindings.\n };\n \n Events.Store.History.create(item);\n }\n\n protected handleEnvironmentSelection(e: CustomEvent): void {\n const { projectRequest } = this;\n const target = e.detail.item as HTMLElement | undefined;\n if (!target || !projectRequest) {\n return;\n }\n const { key } = target.dataset;\n if (projectRequest.environment === key) {\n return;\n }\n projectRequest.environment = key;\n this.computeEnvironmentLabel();\n projectRequest.environment = key;\n this.computeSnippetsRequest();\n this.notifyChange();\n this.notifyPropertyChanged('environment', key);\n }\n\n protected computeEnvironmentLabel(): void {\n const { projectRequest } = this;\n if (!projectRequest) {\n this.environmentLabel = undefined;\n return;\n }\n const url = projectRequest.readUrl({ baseUrl: true, noVariables: true });\n this.environmentLabel = url || 'No server defined';\n }\n\n protected override async computeSnippetsRequest(): Promise<void> {\n await super.computeSnippetsRequest();\n if (this.snippets) {\n const url = this.projectRequest?.readUrl();\n if (url) {\n this.snippets.url = url;\n }\n }\n }\n\n protected override renderUrlMeta(): TemplateResult {\n return html`\n ${this.renderHttpMethodSelector()}\n ${this.renderEnvironmentSelector()}\n ${this.renderUrlEditor()}\n `;\n }\n\n protected renderEnvironmentSelector(): TemplateResult | typeof nothing {\n const { environmentLabel: currentEnvironmentLabel, environments } = this;\n if (!environments?.length) {\n return nothing;\n }\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleEnvironmentSelection}\"\n class=\"environment-dropdown\"\n closeOnOutsideClick\n >\n <ui-button type=\"text\">\n ${currentEnvironmentLabel || 'No environment'}\n <ui-icon icon=\"arrowDropDown\"></ui-icon>\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item role=\"menuitem\" title=\"Selects the environment in the request's folder or inherited from a parent\">Inherited environment</ui-list-item>\n ${this.renderEnvironmentOptions(environments)}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderEnvironmentOptions(environments: Environment[]): TemplateResult[] {\n return environments.map((env) => this.renderEnvironmentItem(env));\n }\n\n protected renderEnvironmentItem(env: Environment): TemplateResult {\n const srv = env.getServer();\n const srvUri = srv?.readUri();\n const label = srvUri || 'Server not defined';\n // note, we don't disable items without server because it may still apply variables \n // from it.\n return html`\n <ui-list-item \n role=\"menuitem\" \n data-key=\"${env.key}\" \n lines=\"two\" \n >\n ${env.info.renderLabel}\n <p slot=\"supporting-text\">${label}</p>\n </ui-list-item>\n `;\n }\n\n protected override renderEmptyAuthorization(): TemplateResult {\n return html`\n <div class=\"body-medium centered\">\n This request will inherit authorization defined in an environment (if any).<br/>\n Add an authorization to this request to override.\n </div>\n `;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IHttpHistory, IRequestLog, RequestLog,
|
|
1
|
+
import { IHttpHistory, IRequestLog, RequestLog, HistoryCreatedBroadcastEvent, HistoryDeletedBroadcastEvent } from "@api-client/core/build/browser.js";
|
|
2
2
|
import { TemplateResult, PropertyValues, nothing } from "lit";
|
|
3
3
|
import ApiElement from "../ApiElement.js";
|
|
4
4
|
import { UiDialogClosingReason } from "../../ui/dialog/UiDialog.js";
|
|
@@ -62,10 +62,14 @@ export default class HttpProjectRequestHistory extends ApiElement {
|
|
|
62
62
|
* The cursor returned by the store used in pagination.
|
|
63
63
|
*/
|
|
64
64
|
protected pageCursor?: string;
|
|
65
|
+
channel: BroadcastChannel;
|
|
65
66
|
constructor();
|
|
66
67
|
protected willUpdate(cp: PropertyValues<this>): void;
|
|
67
68
|
connectedCallback(): void;
|
|
68
69
|
disconnectedCallback(): void;
|
|
70
|
+
protected handleBroadcast(e: MessageEvent): void;
|
|
71
|
+
protected handleHistoryCreated(event: HistoryCreatedBroadcastEvent): void;
|
|
72
|
+
protected handleHistoryDeleted(event: HistoryDeletedBroadcastEvent): void;
|
|
69
73
|
protected setupVisibility(): void;
|
|
70
74
|
reset(): void;
|
|
71
75
|
queryDebounce(): void;
|
|
@@ -79,8 +83,6 @@ export default class HttpProjectRequestHistory extends ApiElement {
|
|
|
79
83
|
*/
|
|
80
84
|
addItem(item: IHttpHistory, select?: boolean): void;
|
|
81
85
|
protected sortHistory(history: IHttpHistory[]): IHttpHistory[][];
|
|
82
|
-
protected handleHistoryCreated(e: ContextStateUpdateEvent<IHttpHistory>): void;
|
|
83
|
-
protected handleHistoryDeleted(e: ContextStateDeleteEvent): void;
|
|
84
86
|
protected computeSelectedItem(): void;
|
|
85
87
|
/**
|
|
86
88
|
* Allows to push a history item into a right index depending on the `created` property
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpProjectRequestHistory.d.ts","sourceRoot":"","sources":["../../../src/elements/project/HttpProjectRequestHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EACU,YAAY,EAAa,WAAW,EACnD,UAAU,
|
|
1
|
+
{"version":3,"file":"HttpProjectRequestHistory.d.ts","sourceRoot":"","sources":["../../../src/elements/project/HttpProjectRequestHistory.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ import { html, nothing } from "lit";
|
|
|
4
4
|
import { property, state } from "lit/decorators.js";
|
|
5
5
|
import ApiElement from "../ApiElement.js";
|
|
6
6
|
import { relativeDay } from "../../lib/time/Conversion.js";
|
|
7
|
-
import { HttpHistoryChart
|
|
7
|
+
import { HttpHistoryChart } from '../../lib/chart/HttpHistoryChart.js';
|
|
8
8
|
import { statusTemplate, } from '../http/HttpStatus.js';
|
|
9
9
|
import { Events } from '../../events/Events.js';
|
|
10
|
-
import {
|
|
10
|
+
import { StoreBroadcast } from "../../http-client/store/StoreBroadcast.js";
|
|
11
11
|
import '@github/relative-time-element';
|
|
12
12
|
import { SnackNotifications } from "../../ui/notification/SnackNotifications.js";
|
|
13
13
|
import '../../define/http/http-request-log.js';
|
|
@@ -48,8 +48,8 @@ export default class HttpProjectRequestHistory extends ApiElement {
|
|
|
48
48
|
*/
|
|
49
49
|
this.querying = false;
|
|
50
50
|
this.view = ProjectHistoryView.history;
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
51
|
+
this.channel = new BroadcastChannel(StoreBroadcast.history);
|
|
52
|
+
this.handleBroadcast = this.handleBroadcast.bind(this);
|
|
53
53
|
}
|
|
54
54
|
willUpdate(cp) {
|
|
55
55
|
if (cp.has('project') || cp.has('request')) {
|
|
@@ -63,13 +63,58 @@ export default class HttpProjectRequestHistory extends ApiElement {
|
|
|
63
63
|
}
|
|
64
64
|
connectedCallback() {
|
|
65
65
|
super.connectedCallback();
|
|
66
|
-
|
|
67
|
-
window.addEventListener(EventTypes.Store.History.State.delete, this.handleHistoryDeleted);
|
|
66
|
+
this.channel.addEventListener('message', this.handleBroadcast);
|
|
68
67
|
}
|
|
69
68
|
disconnectedCallback() {
|
|
70
69
|
super.disconnectedCallback();
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
this.channel.removeEventListener('message', this.handleBroadcast);
|
|
71
|
+
}
|
|
72
|
+
handleBroadcast(e) {
|
|
73
|
+
const event = e.data;
|
|
74
|
+
switch (event.operation) {
|
|
75
|
+
case 'created':
|
|
76
|
+
this.handleHistoryCreated(event);
|
|
77
|
+
break;
|
|
78
|
+
case 'deleted':
|
|
79
|
+
this.handleHistoryDeleted(event);
|
|
80
|
+
break;
|
|
81
|
+
default:
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
handleHistoryCreated(event) {
|
|
85
|
+
const { request, data } = event;
|
|
86
|
+
const item = data;
|
|
87
|
+
if (this.request !== request) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (item) {
|
|
91
|
+
this.addItem(item, true);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
handleHistoryDeleted(event) {
|
|
95
|
+
const { model, history } = this;
|
|
96
|
+
const { key, request } = event;
|
|
97
|
+
if (!model || !history || request !== this.request) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const historyIndex = history.findIndex(i => i.key === key);
|
|
101
|
+
if (historyIndex < 0) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
history.splice(historyIndex, 1);
|
|
105
|
+
for (const group of model) {
|
|
106
|
+
const index = group.findIndex(i => i.key === key);
|
|
107
|
+
if (index >= 0) {
|
|
108
|
+
group.splice(index, 1);
|
|
109
|
+
if (group.length === 0) {
|
|
110
|
+
const groupIndex = model.indexOf(group);
|
|
111
|
+
model.splice(groupIndex, 1);
|
|
112
|
+
}
|
|
113
|
+
this.requestUpdate();
|
|
114
|
+
this.setupVisibility();
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
73
118
|
}
|
|
74
119
|
setupVisibility() {
|
|
75
120
|
if (this.history && !this.history.length) {
|
|
@@ -203,40 +248,6 @@ export default class HttpProjectRequestHistory extends ApiElement {
|
|
|
203
248
|
});
|
|
204
249
|
return result;
|
|
205
250
|
}
|
|
206
|
-
handleHistoryCreated(e) {
|
|
207
|
-
const { item, parent } = e.detail;
|
|
208
|
-
if (this.request !== parent) {
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (item) {
|
|
212
|
-
this.addItem(item, true);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
handleHistoryDeleted(e) {
|
|
216
|
-
const { model, history } = this;
|
|
217
|
-
const { key, parent } = e.detail;
|
|
218
|
-
if (!model || !history || parent !== this.request) {
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
const historyIndex = history.findIndex(i => i.key === key);
|
|
222
|
-
if (historyIndex < 0) {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
history.splice(historyIndex, 1);
|
|
226
|
-
for (const group of model) {
|
|
227
|
-
const index = group.findIndex(i => i.key === key);
|
|
228
|
-
if (index >= 0) {
|
|
229
|
-
group.splice(index, 1);
|
|
230
|
-
if (group.length === 0) {
|
|
231
|
-
const groupIndex = model.indexOf(group);
|
|
232
|
-
model.splice(groupIndex, 1);
|
|
233
|
-
}
|
|
234
|
-
this.requestUpdate();
|
|
235
|
-
this.setupVisibility();
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
251
|
computeSelectedItem() {
|
|
241
252
|
const { history, selectedItem } = this;
|
|
242
253
|
this.renderedItem = undefined;
|