@webiny/webhooks 6.4.0-beta.3 → 6.4.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/WebhookRoutes.js +13 -2
- package/admin/WebhookRoutes.js.map +1 -1
- package/admin/Webhooks.js +0 -3
- package/admin/Webhooks.js.map +1 -1
- package/admin/features/getWebhookSettings/GetWebhookSettingsGateway.js +1 -0
- package/admin/features/getWebhookSettings/GetWebhookSettingsGateway.js.map +1 -1
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js +1 -1
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js.map +1 -1
- package/admin/features/listWebhookDeliveries/abstractions.d.ts +6 -1
- package/admin/features/listWebhookDeliveries/abstractions.js.map +1 -1
- package/admin/features/updateWebhookSettings/UpdateWebhookSettingsGateway.js +1 -0
- package/admin/features/updateWebhookSettings/UpdateWebhookSettingsGateway.js.map +1 -1
- package/admin/features/updateWebhookSettings/abstractions.d.ts +1 -0
- package/admin/features/updateWebhookSettings/abstractions.js.map +1 -1
- package/admin/presentation/{WebhookDeliveries → WebhookDeliveriesPage}/WebhookDeliveriesDataSource.d.ts +1 -2
- package/admin/presentation/{WebhookDeliveries → WebhookDeliveriesPage}/WebhookDeliveriesDataSource.js +5 -7
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesDataSource.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.d.ts +41 -0
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.js +223 -0
- package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/abstractions.d.ts +42 -0
- package/admin/presentation/WebhookDeliveriesPage/abstractions.js +5 -0
- package/admin/presentation/WebhookDeliveriesPage/abstractions.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.d.ts +11 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.js +36 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.d.ts +9 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.js +43 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.d.ts +7 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.js +76 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.d.ts +9 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.js +85 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.d.ts +9 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.js +61 -0
- package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.d.ts +2 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js +16 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.d.ts +2 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.js +73 -0
- package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.d.ts +1 -0
- package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.js +13 -0
- package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/feature.d.ts +3 -0
- package/admin/presentation/WebhookDeliveriesPage/feature.js +17 -0
- package/admin/presentation/WebhookDeliveriesPage/feature.js.map +1 -0
- package/admin/presentation/WebhookDeliveriesPage/index.d.ts +5 -0
- package/admin/presentation/WebhookDeliveriesPage/index.js +1 -0
- package/admin/presentation/WebhookForm/WebhookFormPresenter.d.ts +6 -6
- package/admin/presentation/WebhookForm/WebhookFormPresenter.js +83 -72
- package/admin/presentation/WebhookForm/WebhookFormPresenter.js.map +1 -1
- package/admin/presentation/WebhookForm/abstractions.d.ts +2 -9
- package/admin/presentation/WebhookForm/abstractions.js.map +1 -1
- package/admin/presentation/WebhookForm/components/SigningSecret.d.ts +5 -2
- package/admin/presentation/WebhookForm/components/SigningSecret.js +7 -3
- package/admin/presentation/WebhookForm/components/SigningSecret.js.map +1 -1
- package/admin/presentation/WebhookForm/components/WebhookFormView.js +49 -35
- package/admin/presentation/WebhookForm/components/WebhookFormView.js.map +1 -1
- package/admin/presentation/WebhookList/WebhookListPresenter.d.ts +26 -2
- package/admin/presentation/WebhookList/WebhookListPresenter.js +36 -34
- package/admin/presentation/WebhookList/WebhookListPresenter.js.map +1 -1
- package/admin/presentation/WebhookList/abstractions.d.ts +25 -7
- package/admin/presentation/WebhookList/abstractions.js.map +1 -1
- package/admin/presentation/WebhookList/components/CreateWebhookButton.d.ts +2 -0
- package/admin/presentation/WebhookList/components/CreateWebhookButton.js +22 -0
- package/admin/presentation/WebhookList/components/CreateWebhookButton.js.map +1 -0
- package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.d.ts +2 -0
- package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.js +16 -0
- package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.js.map +1 -0
- package/admin/presentation/WebhookList/components/WebhookListContent.d.ts +9 -0
- package/admin/presentation/WebhookList/components/WebhookListContent.js +170 -0
- package/admin/presentation/WebhookList/components/WebhookListContent.js.map +1 -0
- package/admin/presentation/WebhookList/components/WebhookListView.js +10 -140
- package/admin/presentation/WebhookList/components/WebhookListView.js.map +1 -1
- package/admin/presentation/WebhookSettings/WebhookSettingsPresenter.js +14 -6
- package/admin/presentation/WebhookSettings/WebhookSettingsPresenter.js.map +1 -1
- package/admin/routes.d.ts +4 -1
- package/admin/routes.js +11 -4
- package/admin/routes.js.map +1 -1
- package/admin/shared/types.d.ts +1 -0
- package/api/domain/WebhookDelivery.d.ts +0 -1
- package/api/domain/WebhookSettings.d.ts +1 -0
- package/api/domain/constants.d.ts +1 -1
- package/api/domain/constants.js +2 -2
- package/api/domain/constants.js.map +1 -1
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.d.ts +1 -1
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js +3 -1
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js.map +1 -1
- package/api/features/CreateWebhookDelivery/abstractions.d.ts +1 -1
- package/api/features/CreateWebhookDelivery/abstractions.js.map +1 -1
- package/api/features/GetWebhookSettings/GetWebhookSettingsRepository.js +4 -2
- package/api/features/GetWebhookSettings/GetWebhookSettingsRepository.js.map +1 -1
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.d.ts +3 -1
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js +9 -4
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js.map +1 -1
- package/api/features/SendWebhookTask/SendWebhookTask.d.ts +1 -1
- package/api/features/SendWebhookTask/SendWebhookTask.js +1 -1
- package/api/features/SendWebhookTask/SendWebhookTask.js.map +1 -1
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.d.ts +3 -1
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.js +9 -4
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.js.map +1 -1
- package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.js +4 -2
- package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.js.map +1 -1
- package/api/features/UpdateWebhookSettings/abstractions.d.ts +1 -0
- package/api/features/UpdateWebhookSettings/abstractions.js.map +1 -1
- package/api/features/UpdateWebhookSettings/schema.d.ts +1 -0
- package/api/features/UpdateWebhookSettings/schema.js +3 -1
- package/api/features/UpdateWebhookSettings/schema.js.map +1 -1
- package/api/features/WebhookDispatcher/WebhookDispatcher.d.ts +3 -1
- package/api/features/WebhookDispatcher/WebhookDispatcher.js +9 -4
- package/api/features/WebhookDispatcher/WebhookDispatcher.js.map +1 -1
- package/api/graphql/WebhookDeliverySchema.js +12 -8
- package/api/graphql/WebhookDeliverySchema.js.map +1 -1
- package/api/graphql/WebhookEventSchema.js +1 -0
- package/api/graphql/WebhookEventSchema.js.map +1 -1
- package/api/graphql/WebhookSettingsSchema.js +2 -0
- package/api/graphql/WebhookSettingsSchema.js.map +1 -1
- package/api/models/WebhookSettingsModel.js +3 -2
- package/api/models/WebhookSettingsModel.js.map +1 -1
- package/package.json +24 -22
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.d.ts +0 -19
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js +0 -77
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/abstractions.d.ts +0 -22
- package/admin/presentation/WebhookDeliveries/abstractions.js +0 -5
- package/admin/presentation/WebhookDeliveries/abstractions.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.d.ts +0 -11
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js +0 -73
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.d.ts +0 -8
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js +0 -119
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/feature.d.ts +0 -3
- package/admin/presentation/WebhookDeliveries/feature.js +0 -17
- package/admin/presentation/WebhookDeliveries/feature.js.map +0 -1
- package/admin/presentation/WebhookDeliveries/index.d.ts +0 -2
- package/admin/presentation/WebhookDeliveries/index.js +0 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/webhooks",
|
|
3
|
-
"version": "6.4.0-beta.
|
|
3
|
+
"version": "6.4.0-beta.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -19,17 +19,18 @@
|
|
|
19
19
|
},
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@webiny/admin-ui": "6.4.0-beta.
|
|
23
|
-
"@webiny/api-core": "6.4.0-beta.
|
|
24
|
-
"@webiny/api-headless-cms": "6.4.0-beta.
|
|
25
|
-
"@webiny/app": "6.4.0-beta.
|
|
26
|
-
"@webiny/app-admin": "6.4.0-beta.
|
|
27
|
-
"@webiny/
|
|
28
|
-
"@webiny/
|
|
29
|
-
"@webiny/
|
|
30
|
-
"@webiny/
|
|
31
|
-
"@webiny/
|
|
32
|
-
"@webiny/utils": "6.4.0-beta.
|
|
22
|
+
"@webiny/admin-ui": "6.4.0-beta.4",
|
|
23
|
+
"@webiny/api-core": "6.4.0-beta.4",
|
|
24
|
+
"@webiny/api-headless-cms": "6.4.0-beta.4",
|
|
25
|
+
"@webiny/app": "6.4.0-beta.4",
|
|
26
|
+
"@webiny/app-admin": "6.4.0-beta.4",
|
|
27
|
+
"@webiny/background-tasks": "6.4.0-beta.4",
|
|
28
|
+
"@webiny/feature": "6.4.0-beta.4",
|
|
29
|
+
"@webiny/handler-graphql": "6.4.0-beta.4",
|
|
30
|
+
"@webiny/icons": "6.4.0-beta.4",
|
|
31
|
+
"@webiny/sdk": "6.4.0-beta.4",
|
|
32
|
+
"@webiny/utils": "6.4.0-beta.4",
|
|
33
|
+
"lodash": "4.18.1",
|
|
33
34
|
"mobx": "6.15.3",
|
|
34
35
|
"mobx-react-lite": "4.1.1",
|
|
35
36
|
"react": "18.3.1",
|
|
@@ -38,19 +39,20 @@
|
|
|
38
39
|
"zod": "4.4.3"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
|
-
"@webiny/api": "6.4.0-beta.
|
|
42
|
-
"@webiny/build-tools": "6.4.0-beta.
|
|
42
|
+
"@webiny/api": "6.4.0-beta.4",
|
|
43
|
+
"@webiny/build-tools": "6.4.0-beta.4",
|
|
43
44
|
"@webiny/di": "1.0.1",
|
|
44
|
-
"@webiny/handler": "6.4.0-beta.
|
|
45
|
-
"@webiny/handler-aws": "6.4.0-beta.
|
|
46
|
-
"@webiny/plugins": "6.4.0-beta.
|
|
47
|
-
"@webiny/project-utils": "6.4.0-beta.
|
|
45
|
+
"@webiny/handler": "6.4.0-beta.4",
|
|
46
|
+
"@webiny/handler-aws": "6.4.0-beta.4",
|
|
47
|
+
"@webiny/plugins": "6.4.0-beta.4",
|
|
48
|
+
"@webiny/project-utils": "6.4.0-beta.4",
|
|
48
49
|
"typescript": "6.0.3",
|
|
49
|
-
"vitest": "4.1.
|
|
50
|
+
"vitest": "4.1.7"
|
|
50
51
|
},
|
|
51
52
|
"publishConfig": {
|
|
52
|
-
"access": "public"
|
|
53
|
-
"directory": "dist"
|
|
53
|
+
"access": "public"
|
|
54
54
|
},
|
|
55
|
-
"
|
|
55
|
+
"webiny": {
|
|
56
|
+
"publishFrom": "dist"
|
|
57
|
+
}
|
|
56
58
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js","sources":["../../../../src/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\nimport type { IListWebhookDeliveriesUseCase } from \"~/admin/features/listWebhookDeliveries/abstractions.js\";\n\nexport class WebhookDeliveriesDataSource implements IDataSource<WebhookDelivery> {\n private _rows: WebhookDelivery[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(\n private readonly listDeliveriesUseCase: IListWebhookDeliveriesUseCase,\n private readonly webhookId: string\n ) {\n makeAutoObservable<WebhookDeliveriesDataSource, \"listDeliveriesUseCase\">(this, {\n listDeliveriesUseCase: false,\n rows: computed\n });\n }\n\n get rows(): WebhookDelivery[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const result = await this.listDeliveriesUseCase.execute({\n webhookId: this.webhookId,\n limit: params.limit,\n after: params.cursor\n });\n runInAction(() => {\n this._rows = result.data;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const result = await this.listDeliveriesUseCase.execute({\n webhookId: this.webhookId,\n limit: params.limit,\n after: this._meta.cursor ?? undefined\n });\n runInAction(() => {\n this._rows = [...this._rows, ...result.data];\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n}\n"],"names":["WebhookDeliveriesDataSource","listDeliveriesUseCase","webhookId","makeAutoObservable","computed","params","result","runInAction","undefined"],"mappings":";AASO,MAAMA;IAKT,YACqBC,qBAAoD,EACpDC,SAAiB,CACpC;aAFmBD,qBAAqB,GAArBA;aACAC,SAAS,GAATA;aANb,KAAK,GAAsB,EAAE;aAC7B,KAAK,GAAoB;YAAE,QAAQ;YAAM,cAAc;YAAO,YAAY;QAAE;aAC5E,QAAQ,GAAG;QAMfC,mBAAyE,IAAI,EAAE;YAC3E,uBAAuB;YACvB,MAAMC;QACV;IACJ;IAEA,IAAI,OAA0B;QAC1B,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,OAAwB;QACxB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,UAAmB;QACnB,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,MAAM,MAAMC,MAAwB,EAAiB;QACjD,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;YACpD,WAAW,IAAI,CAAC,SAAS;YACzB,OAAOD,OAAO,KAAK;YACnB,OAAOA,OAAO,MAAM;QACxB;QACAE,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD,OAAO,IAAI;YACxB,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;IAEA,MAAM,SAASD,MAAwB,EAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EACzC;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;YACpD,WAAW,IAAI,CAAC,SAAS;YACzB,OAAOD,OAAO,KAAK;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAIG;QAChC;QACAD,YAAY;YACR,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKD,OAAO,IAAI;aAAC;YAC5C,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;AACJ"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ListPresenter } from "@webiny/app-admin/presentation/listPresenter/abstractions.js";
|
|
2
|
-
import type { WebhookDelivery } from "../../../admin/shared/types.js";
|
|
3
|
-
import { type IWebhookDeliveriesPresenter, type IWebhookDeliveriesViewModel, type IWebhookDeliveriesActions } from "./abstractions.js";
|
|
4
|
-
import { ListWebhookDeliveriesUseCase } from "../../../admin/features/listWebhookDeliveries/abstractions.js";
|
|
5
|
-
import { ResendWebhookDeliveryUseCase } from "../../../admin/features/resendWebhookDelivery/abstractions.js";
|
|
6
|
-
declare class WebhookDeliveriesPresenterImpl implements IWebhookDeliveriesPresenter {
|
|
7
|
-
private readonly listPresenter;
|
|
8
|
-
private readonly listDeliveriesUseCase;
|
|
9
|
-
private readonly resendDeliveryUseCase;
|
|
10
|
-
private _selectedDelivery;
|
|
11
|
-
constructor(listPresenter: ListPresenter.Interface<WebhookDelivery>, listDeliveriesUseCase: ListWebhookDeliveriesUseCase.Interface, resendDeliveryUseCase: ResendWebhookDeliveryUseCase.Interface);
|
|
12
|
-
get vm(): IWebhookDeliveriesViewModel;
|
|
13
|
-
actions: IWebhookDeliveriesActions;
|
|
14
|
-
init(webhookId: string): void;
|
|
15
|
-
}
|
|
16
|
-
export declare const WebhookDeliveriesPresenter: typeof WebhookDeliveriesPresenterImpl & {
|
|
17
|
-
__abstraction: import("@webiny/di").Abstraction<IWebhookDeliveriesPresenter>;
|
|
18
|
-
};
|
|
19
|
-
export {};
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { computed, makeAutoObservable } from "mobx";
|
|
2
|
-
import { ListPresenter } from "@webiny/app-admin/presentation/listPresenter/abstractions.js";
|
|
3
|
-
import { WebhookDeliveriesPresenter } from "./abstractions.js";
|
|
4
|
-
import { WebhookDeliveriesDataSource } from "./WebhookDeliveriesDataSource.js";
|
|
5
|
-
import { ListWebhookDeliveriesUseCase } from "../../features/listWebhookDeliveries/abstractions.js";
|
|
6
|
-
import { ResendWebhookDeliveryUseCase } from "../../features/resendWebhookDelivery/abstractions.js";
|
|
7
|
-
class WebhookDeliveriesPresenterImpl {
|
|
8
|
-
constructor(listPresenter, listDeliveriesUseCase, resendDeliveryUseCase){
|
|
9
|
-
this.listPresenter = listPresenter;
|
|
10
|
-
this.listDeliveriesUseCase = listDeliveriesUseCase;
|
|
11
|
-
this.resendDeliveryUseCase = resendDeliveryUseCase;
|
|
12
|
-
this._selectedDelivery = null;
|
|
13
|
-
this.actions = {
|
|
14
|
-
search: {
|
|
15
|
-
set: (query)=>this.listPresenter.actions.search.set(query),
|
|
16
|
-
clear: ()=>this.listPresenter.actions.search.clear()
|
|
17
|
-
},
|
|
18
|
-
sort: {
|
|
19
|
-
set: (field, direction)=>this.listPresenter.actions.sort.set(field, direction),
|
|
20
|
-
toggle: (field)=>this.listPresenter.actions.sort.toggle(field)
|
|
21
|
-
},
|
|
22
|
-
filter: {
|
|
23
|
-
set: (key, value)=>this.listPresenter.actions.filter.set(key, value),
|
|
24
|
-
clear: (key)=>this.listPresenter.actions.filter.clear(key),
|
|
25
|
-
clearAll: ()=>this.listPresenter.actions.filter.clearAll()
|
|
26
|
-
},
|
|
27
|
-
selection: {
|
|
28
|
-
toggle: (id)=>this.listPresenter.actions.selection.toggle(id),
|
|
29
|
-
selectRangeTo: (id)=>this.listPresenter.actions.selection.selectRangeTo(id),
|
|
30
|
-
selectAll: ()=>this.listPresenter.actions.selection.selectAll(),
|
|
31
|
-
deselectAll: ()=>this.listPresenter.actions.selection.deselectAll(),
|
|
32
|
-
selectRows: (ids)=>this.listPresenter.actions.selection.selectRows(ids),
|
|
33
|
-
isSelected: (id)=>this.listPresenter.actions.selection.isSelected(id)
|
|
34
|
-
},
|
|
35
|
-
loadMore: ()=>this.listPresenter.actions.loadMore(),
|
|
36
|
-
refresh: ()=>this.listPresenter.actions.refresh(),
|
|
37
|
-
resend: async (id)=>{
|
|
38
|
-
await this.resendDeliveryUseCase.execute(id);
|
|
39
|
-
await this.listPresenter.actions.refresh();
|
|
40
|
-
},
|
|
41
|
-
selectDelivery: (delivery)=>{
|
|
42
|
-
this._selectedDelivery = delivery;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
makeAutoObservable(this, {
|
|
46
|
-
vm: computed
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
get vm() {
|
|
50
|
-
return {
|
|
51
|
-
list: this.listPresenter.vm,
|
|
52
|
-
selectedDelivery: this._selectedDelivery
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
init(webhookId) {
|
|
56
|
-
const dataSource = new WebhookDeliveriesDataSource(this.listDeliveriesUseCase, webhookId);
|
|
57
|
-
this.listPresenter.init({
|
|
58
|
-
dataSource,
|
|
59
|
-
initialSort: {
|
|
60
|
-
field: "createdOn",
|
|
61
|
-
direction: "DESC"
|
|
62
|
-
},
|
|
63
|
-
limit: 20
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
const WebhookDeliveriesPresenter_WebhookDeliveriesPresenter = WebhookDeliveriesPresenter.createImplementation({
|
|
68
|
-
implementation: WebhookDeliveriesPresenterImpl,
|
|
69
|
-
dependencies: [
|
|
70
|
-
ListPresenter,
|
|
71
|
-
ListWebhookDeliveriesUseCase,
|
|
72
|
-
ResendWebhookDeliveryUseCase
|
|
73
|
-
]
|
|
74
|
-
});
|
|
75
|
-
export { WebhookDeliveriesPresenter_WebhookDeliveriesPresenter as WebhookDeliveriesPresenter };
|
|
76
|
-
|
|
77
|
-
//# sourceMappingURL=WebhookDeliveriesPresenter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js","sources":["../../../../src/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.ts"],"sourcesContent":["import { makeAutoObservable, computed } from \"mobx\";\nimport { ListPresenter } from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\nimport {\n WebhookDeliveriesPresenter as Abstraction,\n type IWebhookDeliveriesPresenter,\n type IWebhookDeliveriesViewModel,\n type IWebhookDeliveriesActions\n} from \"./abstractions.js\";\nimport { WebhookDeliveriesDataSource } from \"./WebhookDeliveriesDataSource.js\";\nimport { ListWebhookDeliveriesUseCase } from \"~/admin/features/listWebhookDeliveries/abstractions.js\";\nimport { ResendWebhookDeliveryUseCase } from \"~/admin/features/resendWebhookDelivery/abstractions.js\";\n\nclass WebhookDeliveriesPresenterImpl implements IWebhookDeliveriesPresenter {\n private _selectedDelivery: WebhookDelivery | null = null;\n\n constructor(\n private readonly listPresenter: ListPresenter.Interface<WebhookDelivery>,\n private readonly listDeliveriesUseCase: ListWebhookDeliveriesUseCase.Interface,\n private readonly resendDeliveryUseCase: ResendWebhookDeliveryUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): IWebhookDeliveriesViewModel {\n return {\n list: this.listPresenter.vm,\n selectedDelivery: this._selectedDelivery\n };\n }\n\n actions: IWebhookDeliveriesActions = {\n search: {\n set: (query: string) => this.listPresenter.actions.search.set(query),\n clear: () => this.listPresenter.actions.search.clear()\n },\n sort: {\n set: (field: string, direction: \"ASC\" | \"DESC\") =>\n this.listPresenter.actions.sort.set(field, direction),\n toggle: (field: string) => this.listPresenter.actions.sort.toggle(field)\n },\n filter: {\n set: (key: string, value: unknown) => this.listPresenter.actions.filter.set(key, value),\n clear: (key: string) => this.listPresenter.actions.filter.clear(key),\n clearAll: () => this.listPresenter.actions.filter.clearAll()\n },\n selection: {\n toggle: (id: string) => this.listPresenter.actions.selection.toggle(id),\n selectRangeTo: (id: string) => this.listPresenter.actions.selection.selectRangeTo(id),\n selectAll: () => this.listPresenter.actions.selection.selectAll(),\n deselectAll: () => this.listPresenter.actions.selection.deselectAll(),\n selectRows: (ids: string[]) => this.listPresenter.actions.selection.selectRows(ids),\n isSelected: (id: string) => this.listPresenter.actions.selection.isSelected(id)\n },\n loadMore: () => this.listPresenter.actions.loadMore(),\n refresh: () => this.listPresenter.actions.refresh(),\n resend: async (id: string) => {\n await this.resendDeliveryUseCase.execute(id);\n await this.listPresenter.actions.refresh();\n },\n selectDelivery: (delivery: WebhookDelivery | null) => {\n this._selectedDelivery = delivery;\n }\n };\n\n init(webhookId: string): void {\n const dataSource = new WebhookDeliveriesDataSource(this.listDeliveriesUseCase, webhookId);\n this.listPresenter.init({\n dataSource,\n initialSort: { field: \"createdOn\", direction: \"DESC\" },\n limit: 20\n });\n }\n}\n\nexport const WebhookDeliveriesPresenter = Abstraction.createImplementation({\n implementation: WebhookDeliveriesPresenterImpl,\n dependencies: [ListPresenter, ListWebhookDeliveriesUseCase, ResendWebhookDeliveryUseCase]\n});\n"],"names":["WebhookDeliveriesPresenterImpl","listPresenter","listDeliveriesUseCase","resendDeliveryUseCase","query","field","direction","key","value","id","ids","delivery","makeAutoObservable","computed","webhookId","dataSource","WebhookDeliveriesDataSource","WebhookDeliveriesPresenter","Abstraction","ListPresenter","ListWebhookDeliveriesUseCase","ResendWebhookDeliveryUseCase"],"mappings":";;;;;;AAaA,MAAMA;IAGF,YACqBC,aAAuD,EACvDC,qBAA6D,EAC7DC,qBAA6D,CAChF;aAHmBF,aAAa,GAAbA;aACAC,qBAAqB,GAArBA;aACAC,qBAAqB,GAArBA;aALb,iBAAiB,GAA2B;aAiBpD,OAAO,GAA8B;YACjC,QAAQ;gBACJ,KAAK,CAACC,QAAkB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAACA;gBAC9D,OAAO,IAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;YACxD;YACA,MAAM;gBACF,KAAK,CAACC,OAAeC,YACjB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAACD,OAAOC;gBAC/C,QAAQ,CAACD,QAAkB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAACA;YACtE;YACA,QAAQ;gBACJ,KAAK,CAACE,KAAaC,QAAmB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAACD,KAAKC;gBACjF,OAAO,CAACD,MAAgB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAACA;gBAChE,UAAU,IAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ;YAC9D;YACA,WAAW;gBACP,QAAQ,CAACE,KAAe,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACA;gBACpE,eAAe,CAACA,KAAe,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAACA;gBAClF,WAAW,IAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS;gBAC/D,aAAa,IAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW;gBACnE,YAAY,CAACC,MAAkB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAACA;gBAC/E,YAAY,CAACD,KAAe,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAACA;YAChF;YACA,UAAU,IAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ;YACnD,SAAS,IAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO;YACjD,QAAQ,OAAOA;gBACX,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACA;gBACzC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO;YAC5C;YACA,gBAAgB,CAACE;gBACb,IAAI,CAAC,iBAAiB,GAAGA;YAC7B;QACJ;QA1CIC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEA,IAAI,KAAkC;QAClC,OAAO;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE;YAC3B,kBAAkB,IAAI,CAAC,iBAAiB;QAC5C;IACJ;IAoCA,KAAKC,SAAiB,EAAQ;QAC1B,MAAMC,aAAa,IAAIC,4BAA4B,IAAI,CAAC,qBAAqB,EAAEF;QAC/E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACpBC;YACA,aAAa;gBAAE,OAAO;gBAAa,WAAW;YAAO;YACrD,OAAO;QACX;IACJ;AACJ;AAEO,MAAME,wDAA6BC,2BAAAA,oBAAgC,CAAC;IACvE,gBAAgBlB;IAChB,cAAc;QAACmB;QAAeC;QAA8BC;KAA6B;AAC7F"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { WebhookDelivery } from "../../../admin/shared/types.js";
|
|
2
|
-
import type { IListViewModel } from "@webiny/app-admin/presentation/listPresenter/abstractions.js";
|
|
3
|
-
import type { IListActions } from "@webiny/app-admin/presentation/listPresenter/abstractions.js";
|
|
4
|
-
export interface IWebhookDeliveriesViewModel {
|
|
5
|
-
list: IListViewModel<WebhookDelivery>;
|
|
6
|
-
selectedDelivery: WebhookDelivery | null;
|
|
7
|
-
}
|
|
8
|
-
export interface IWebhookDeliveriesActions extends IListActions {
|
|
9
|
-
resend(id: string): Promise<void>;
|
|
10
|
-
selectDelivery(delivery: WebhookDelivery | null): void;
|
|
11
|
-
}
|
|
12
|
-
export interface IWebhookDeliveriesPresenter {
|
|
13
|
-
vm: IWebhookDeliveriesViewModel;
|
|
14
|
-
actions: IWebhookDeliveriesActions;
|
|
15
|
-
init(webhookId: string): void;
|
|
16
|
-
}
|
|
17
|
-
export declare const WebhookDeliveriesPresenter: import("@webiny/di").Abstraction<IWebhookDeliveriesPresenter>;
|
|
18
|
-
export declare namespace WebhookDeliveriesPresenter {
|
|
19
|
-
type Interface = IWebhookDeliveriesPresenter;
|
|
20
|
-
type ViewModel = IWebhookDeliveriesViewModel;
|
|
21
|
-
type Actions = IWebhookDeliveriesActions;
|
|
22
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/WebhookDeliveries/abstractions.js","sources":["../../../../src/admin/presentation/WebhookDeliveries/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\nimport type { IListViewModel } from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { IListActions } from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\n\nexport interface IWebhookDeliveriesViewModel {\n list: IListViewModel<WebhookDelivery>;\n selectedDelivery: WebhookDelivery | null;\n}\n\nexport interface IWebhookDeliveriesActions extends IListActions {\n resend(id: string): Promise<void>;\n selectDelivery(delivery: WebhookDelivery | null): void;\n}\n\nexport interface IWebhookDeliveriesPresenter {\n vm: IWebhookDeliveriesViewModel;\n actions: IWebhookDeliveriesActions;\n init(webhookId: string): void;\n}\n\nexport const WebhookDeliveriesPresenter = createAbstraction<IWebhookDeliveriesPresenter>(\n \"WebhookDeliveriesPresenter\"\n);\n\nexport namespace WebhookDeliveriesPresenter {\n export type Interface = IWebhookDeliveriesPresenter;\n export type ViewModel = IWebhookDeliveriesViewModel;\n export type Actions = IWebhookDeliveriesActions;\n}\n"],"names":["WebhookDeliveriesPresenter","createAbstraction"],"mappings":";AAqBO,MAAMA,6BAA6BC,kBACtC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { WebhookDelivery } from "../../../../admin/shared/types.js";
|
|
3
|
-
interface DeliveryDetailProps {
|
|
4
|
-
delivery: WebhookDelivery;
|
|
5
|
-
onClose: () => void;
|
|
6
|
-
onResend: (id: string) => void;
|
|
7
|
-
}
|
|
8
|
-
export declare const DeliveryDetail: (({ delivery, onClose, onResend }: DeliveryDetailProps) => React.JSX.Element) & {
|
|
9
|
-
displayName: string;
|
|
10
|
-
};
|
|
11
|
-
export {};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import react from "react";
|
|
2
|
-
import { observer } from "mobx-react-lite";
|
|
3
|
-
import { Button, Heading, IconButton, Separator, Tag, Text } from "@webiny/admin-ui";
|
|
4
|
-
import { ReactComponent } from "@webiny/icons/close.svg";
|
|
5
|
-
const statusVariant = (status)=>{
|
|
6
|
-
switch(status){
|
|
7
|
-
case "delivered":
|
|
8
|
-
return "success";
|
|
9
|
-
case "failed":
|
|
10
|
-
return "destructive";
|
|
11
|
-
default:
|
|
12
|
-
return "warning";
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
const formatJson = (value)=>{
|
|
16
|
-
if (null == value) return "—";
|
|
17
|
-
if ("string" == typeof value) try {
|
|
18
|
-
return JSON.stringify(JSON.parse(value), null, 2);
|
|
19
|
-
} catch {
|
|
20
|
-
return value;
|
|
21
|
-
}
|
|
22
|
-
return JSON.stringify(value, null, 2);
|
|
23
|
-
};
|
|
24
|
-
const DeliveryDetail_DeliveryDetail = observer(function({ delivery, onClose, onResend }) {
|
|
25
|
-
return /*#__PURE__*/ react.createElement("div", {
|
|
26
|
-
className: "flex flex-col h-full overflow-auto"
|
|
27
|
-
}, /*#__PURE__*/ react.createElement("div", {
|
|
28
|
-
className: "flex items-center justify-between px-md py-sm"
|
|
29
|
-
}, /*#__PURE__*/ react.createElement("div", {
|
|
30
|
-
className: "flex items-center gap-sm"
|
|
31
|
-
}, /*#__PURE__*/ react.createElement(Heading, {
|
|
32
|
-
level: 6
|
|
33
|
-
}, delivery.eventType), /*#__PURE__*/ react.createElement(Tag, {
|
|
34
|
-
variant: statusVariant(delivery.status),
|
|
35
|
-
content: delivery.status
|
|
36
|
-
})), /*#__PURE__*/ react.createElement(IconButton, {
|
|
37
|
-
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
38
|
-
variant: "ghost",
|
|
39
|
-
size: "sm",
|
|
40
|
-
onClick: onClose,
|
|
41
|
-
"aria-label": "Close detail"
|
|
42
|
-
})), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
|
|
43
|
-
className: "flex-1 overflow-auto px-md py-sm flex flex-col gap-md"
|
|
44
|
-
}, /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement(Text, {
|
|
45
|
-
size: "sm",
|
|
46
|
-
className: "text-neutral-strong"
|
|
47
|
-
}, "Response Time"), /*#__PURE__*/ react.createElement(Text, {
|
|
48
|
-
size: "sm"
|
|
49
|
-
}, null !== delivery.responseTime ? `${delivery.responseTime}ms` : "—")), /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement(Text, {
|
|
50
|
-
size: "sm",
|
|
51
|
-
className: "text-neutral-strong"
|
|
52
|
-
}, "Payload"), /*#__PURE__*/ react.createElement("pre", {
|
|
53
|
-
className: "bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]"
|
|
54
|
-
}, formatJson(delivery.payload))), /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement(Text, {
|
|
55
|
-
size: "sm",
|
|
56
|
-
className: "text-neutral-strong"
|
|
57
|
-
}, "Request Headers"), /*#__PURE__*/ react.createElement("pre", {
|
|
58
|
-
className: "bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]"
|
|
59
|
-
}, formatJson(delivery.requestHeaders))), /*#__PURE__*/ react.createElement("div", null, /*#__PURE__*/ react.createElement(Text, {
|
|
60
|
-
size: "sm",
|
|
61
|
-
className: "text-neutral-strong"
|
|
62
|
-
}, "Response Body"), /*#__PURE__*/ react.createElement("pre", {
|
|
63
|
-
className: "bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]"
|
|
64
|
-
}, delivery.responseBody ?? "—"))), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
|
|
65
|
-
className: "px-md py-sm"
|
|
66
|
-
}, /*#__PURE__*/ react.createElement(Button, {
|
|
67
|
-
variant: "secondary",
|
|
68
|
-
onClick: ()=>onResend(delivery.id)
|
|
69
|
-
}, "Resend")));
|
|
70
|
-
});
|
|
71
|
-
export { DeliveryDetail_DeliveryDetail as DeliveryDetail };
|
|
72
|
-
|
|
73
|
-
//# sourceMappingURL=DeliveryDetail.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/WebhookDeliveries/components/DeliveryDetail.js","sources":["../../../../../src/admin/presentation/WebhookDeliveries/components/DeliveryDetail.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { Heading } from \"@webiny/admin-ui\";\nimport { IconButton } from \"@webiny/admin-ui\";\nimport { Separator } from \"@webiny/admin-ui\";\nimport { Tag } from \"@webiny/admin-ui\";\nimport { Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as CloseIcon } from \"@webiny/icons/close.svg\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\n\ninterface DeliveryDetailProps {\n delivery: WebhookDelivery;\n onClose: () => void;\n onResend: (id: string) => void;\n}\n\nconst statusVariant = (status: string) => {\n switch (status) {\n case \"delivered\":\n return \"success\" as const;\n case \"failed\":\n return \"destructive\" as const;\n default:\n return \"warning\" as const;\n }\n};\n\nconst formatJson = (value: unknown): string => {\n if (value === null || value === undefined) {\n return \"—\";\n }\n\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n\n return JSON.stringify(value, null, 2);\n};\n\nexport const DeliveryDetail = observer(function DeliveryDetail({\n delivery,\n onClose,\n onResend\n}: DeliveryDetailProps) {\n return (\n <div className=\"flex flex-col h-full overflow-auto\">\n <div className=\"flex items-center justify-between px-md py-sm\">\n <div className=\"flex items-center gap-sm\">\n <Heading level={6}>{delivery.eventType}</Heading>\n <Tag variant={statusVariant(delivery.status)} content={delivery.status} />\n </div>\n <IconButton\n icon={<CloseIcon />}\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClose}\n aria-label=\"Close detail\"\n />\n </div>\n <Separator />\n <div className=\"flex-1 overflow-auto px-md py-sm flex flex-col gap-md\">\n <div>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Response Time\n </Text>\n <Text size=\"sm\">\n {delivery.responseTime !== null ? `${delivery.responseTime}ms` : \"—\"}\n </Text>\n </div>\n\n <div>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Payload\n </Text>\n <pre className=\"bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]\">\n {formatJson(delivery.payload)}\n </pre>\n </div>\n\n <div>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Request Headers\n </Text>\n <pre className=\"bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]\">\n {formatJson(delivery.requestHeaders)}\n </pre>\n </div>\n\n <div>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Response Body\n </Text>\n <pre className=\"bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]\">\n {delivery.responseBody ?? \"—\"}\n </pre>\n </div>\n </div>\n <Separator />\n <div className=\"px-md py-sm\">\n <Button variant=\"secondary\" onClick={() => onResend(delivery.id)}>\n Resend\n </Button>\n </div>\n </div>\n );\n});\n"],"names":["statusVariant","status","formatJson","value","JSON","DeliveryDetail","observer","delivery","onClose","onResend","Heading","Tag","IconButton","CloseIcon","Separator","Text","Button"],"mappings":";;;;AAiBA,MAAMA,gBAAgB,CAACC;IACnB,OAAQA;QACJ,KAAK;YACD,OAAO;QACX,KAAK;YACD,OAAO;QACX;YACI,OAAO;IACf;AACJ;AAEA,MAAMC,aAAa,CAACC;IAChB,IAAIA,QAAAA,OACA,OAAO;IAGX,IAAI,AAAiB,YAAjB,OAAOA,OACP,IAAI;QACA,OAAOC,KAAK,SAAS,CAACA,KAAK,KAAK,CAACD,QAAQ,MAAM;IACnD,EAAE,OAAM;QACJ,OAAOA;IACX;IAGJ,OAAOC,KAAK,SAAS,CAACD,OAAO,MAAM;AACvC;AAEO,MAAME,gCAAiBC,SAAS,SAAwB,EAC3DC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACU;IAClB,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACC,SAAOA;QAAC,OAAO;OAAIH,SAAS,SAAS,iBACtC,oBAACI,KAAGA;QAAC,SAASX,cAAcO,SAAS,MAAM;QAAG,SAASA,SAAS,MAAM;uBAE1E,oBAACK,YAAUA;QACP,oBAAM,oBAACC,gBAASA;QAChB,SAAQ;QACR,MAAK;QACL,SAASL;QACT,cAAW;uBAGnB,oBAACM,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;qBACX,oBAAC,2BACG,oBAACC,MAAIA;QAAC,MAAK;QAAK,WAAU;OAAsB,gCAGhD,oBAACA,MAAIA;QAAC,MAAK;OACNR,AAA0B,SAA1BA,SAAS,YAAY,GAAY,GAAGA,SAAS,YAAY,CAAC,EAAE,CAAC,GAAG,qBAIzE,oBAAC,2BACG,oBAACQ,MAAIA;QAAC,MAAK;QAAK,WAAU;OAAsB,0BAGhD,oBAAC;QAAI,WAAU;OACVb,WAAWK,SAAS,OAAO,mBAIpC,oBAAC,2BACG,oBAACQ,MAAIA;QAAC,MAAK;QAAK,WAAU;OAAsB,kCAGhD,oBAAC;QAAI,WAAU;OACVb,WAAWK,SAAS,cAAc,mBAI3C,oBAAC,2BACG,oBAACQ,MAAIA;QAAC,MAAK;QAAK,WAAU;OAAsB,gCAGhD,oBAAC;QAAI,WAAU;OACVR,SAAS,YAAY,IAAI,sBAItC,oBAACO,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;qBACX,oBAACE,QAAMA;QAAC,SAAQ;QAAY,SAAS,IAAMP,SAASF,SAAS,EAAE;OAAG;AAMlF"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import react, { useEffect, useMemo } from "react";
|
|
2
|
-
import { observer } from "mobx-react-lite";
|
|
3
|
-
import { DiContainerProvider, useContainer, useFeature } from "@webiny/app";
|
|
4
|
-
import { DataTable, Drawer, IconButton, Tag, Text, TimeAgo } from "@webiny/admin-ui";
|
|
5
|
-
import { ReactComponent } from "@webiny/icons/replay.svg";
|
|
6
|
-
import { WebhookDeliveriesPresenterFeature } from "../feature.js";
|
|
7
|
-
import { ListWebhookDeliveriesFeature } from "../../../features/listWebhookDeliveries/feature.js";
|
|
8
|
-
import { ResendWebhookDeliveryFeature } from "../../../features/resendWebhookDelivery/feature.js";
|
|
9
|
-
import { DeliveryDetail } from "./DeliveryDetail.js";
|
|
10
|
-
const statusVariant = (status)=>{
|
|
11
|
-
switch(status){
|
|
12
|
-
case "delivered":
|
|
13
|
-
return "success";
|
|
14
|
-
case "failed":
|
|
15
|
-
return "destructive";
|
|
16
|
-
default:
|
|
17
|
-
return "warning";
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
const WebhookDeliveriesDrawer_WebhookDeliveriesDrawerInner = observer(function({ webhookId, open, onClose }) {
|
|
21
|
-
const { presenter } = useFeature(WebhookDeliveriesPresenterFeature);
|
|
22
|
-
useEffect(()=>{
|
|
23
|
-
if (open) presenter.init(webhookId);
|
|
24
|
-
}, [
|
|
25
|
-
presenter,
|
|
26
|
-
webhookId,
|
|
27
|
-
open
|
|
28
|
-
]);
|
|
29
|
-
const { vm } = presenter;
|
|
30
|
-
const columns = useMemo(()=>({
|
|
31
|
-
eventType: {
|
|
32
|
-
header: "Event",
|
|
33
|
-
size: 180
|
|
34
|
-
},
|
|
35
|
-
status: {
|
|
36
|
-
header: "Status",
|
|
37
|
-
cell: (row)=>/*#__PURE__*/ react.createElement(Tag, {
|
|
38
|
-
variant: statusVariant(row.status),
|
|
39
|
-
content: row.status
|
|
40
|
-
}),
|
|
41
|
-
size: 100
|
|
42
|
-
},
|
|
43
|
-
responseStatus: {
|
|
44
|
-
header: "HTTP",
|
|
45
|
-
cell: (row)=>/*#__PURE__*/ react.createElement(Text, {
|
|
46
|
-
size: "sm"
|
|
47
|
-
}, null !== row.responseStatus ? String(row.responseStatus) : "—"),
|
|
48
|
-
size: 60
|
|
49
|
-
},
|
|
50
|
-
createdOn: {
|
|
51
|
-
header: "Created",
|
|
52
|
-
cell: (row)=>row.createdOn ? /*#__PURE__*/ react.createElement(TimeAgo, {
|
|
53
|
-
datetime: row.createdOn
|
|
54
|
-
}) : /*#__PURE__*/ react.createElement(Text, {
|
|
55
|
-
size: "sm"
|
|
56
|
-
}, "—"),
|
|
57
|
-
enableSorting: true,
|
|
58
|
-
size: 120
|
|
59
|
-
},
|
|
60
|
-
actions: {
|
|
61
|
-
header: " ",
|
|
62
|
-
cell: (row)=>/*#__PURE__*/ react.createElement(IconButton, {
|
|
63
|
-
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
64
|
-
variant: "ghost",
|
|
65
|
-
size: "sm",
|
|
66
|
-
onClick: (e)=>{
|
|
67
|
-
e.stopPropagation();
|
|
68
|
-
presenter.actions.resend(row.id);
|
|
69
|
-
},
|
|
70
|
-
"aria-label": "Resend delivery"
|
|
71
|
-
}),
|
|
72
|
-
size: 48,
|
|
73
|
-
enableSorting: false,
|
|
74
|
-
enableHiding: false,
|
|
75
|
-
enableResizing: false
|
|
76
|
-
}
|
|
77
|
-
}), [
|
|
78
|
-
presenter.actions
|
|
79
|
-
]);
|
|
80
|
-
return /*#__PURE__*/ react.createElement(Drawer, {
|
|
81
|
-
open: open,
|
|
82
|
-
onOpenChange: (isOpen)=>!isOpen && onClose(),
|
|
83
|
-
title: "Delivery Log",
|
|
84
|
-
modal: true,
|
|
85
|
-
width: "900px",
|
|
86
|
-
bodyPadding: false
|
|
87
|
-
}, /*#__PURE__*/ react.createElement("div", {
|
|
88
|
-
className: "flex h-full"
|
|
89
|
-
}, /*#__PURE__*/ react.createElement("div", {
|
|
90
|
-
className: vm.selectedDelivery ? "flex-[1.5] border-r-sm border-neutral-muted overflow-auto" : "flex-1 overflow-auto"
|
|
91
|
-
}, /*#__PURE__*/ react.createElement(DataTable, {
|
|
92
|
-
columns: columns,
|
|
93
|
-
data: vm.list.rows,
|
|
94
|
-
loading: vm.list.pagination.loading,
|
|
95
|
-
onToggleRow: (row)=>presenter.actions.selectDelivery(row)
|
|
96
|
-
})), vm.selectedDelivery && /*#__PURE__*/ react.createElement("div", {
|
|
97
|
-
className: "flex-1 overflow-auto"
|
|
98
|
-
}, /*#__PURE__*/ react.createElement(DeliveryDetail, {
|
|
99
|
-
delivery: vm.selectedDelivery,
|
|
100
|
-
onClose: ()=>presenter.actions.selectDelivery(null),
|
|
101
|
-
onResend: (id)=>void presenter.actions.resend(id)
|
|
102
|
-
}))));
|
|
103
|
-
});
|
|
104
|
-
const WebhookDeliveriesDrawer = (props)=>{
|
|
105
|
-
const container = useContainer();
|
|
106
|
-
const scopedContainer = useMemo(()=>{
|
|
107
|
-
const child = container.createChildContainer();
|
|
108
|
-
ListWebhookDeliveriesFeature.register(child);
|
|
109
|
-
ResendWebhookDeliveryFeature.register(child);
|
|
110
|
-
WebhookDeliveriesPresenterFeature.register(child);
|
|
111
|
-
return child;
|
|
112
|
-
}, []);
|
|
113
|
-
return /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
114
|
-
container: scopedContainer
|
|
115
|
-
}, /*#__PURE__*/ react.createElement(WebhookDeliveriesDrawer_WebhookDeliveriesDrawerInner, props));
|
|
116
|
-
};
|
|
117
|
-
export { WebhookDeliveriesDrawer };
|
|
118
|
-
|
|
119
|
-
//# sourceMappingURL=WebhookDeliveriesDrawer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js","sources":["../../../../../src/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.tsx"],"sourcesContent":["import React, { useMemo, useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { DataTable, Drawer, IconButton, Tag, Text, TimeAgo } from \"@webiny/admin-ui\";\nimport { ReactComponent as ReplayIcon } from \"@webiny/icons/replay.svg\";\nimport { WebhookDeliveriesPresenterFeature } from \"../feature.js\";\nimport { ListWebhookDeliveriesFeature } from \"~/admin/features/listWebhookDeliveries/feature.js\";\nimport { ResendWebhookDeliveryFeature } from \"~/admin/features/resendWebhookDelivery/feature.js\";\nimport type { WebhookDelivery } from \"~/admin/shared/types.js\";\nimport { DeliveryDetail } from \"./DeliveryDetail.js\";\n\ninterface WebhookDeliveriesDrawerProps {\n webhookId: string;\n open: boolean;\n onClose: () => void;\n}\n\nconst statusVariant = (status: string) => {\n switch (status) {\n case \"delivered\":\n return \"success\" as const;\n case \"failed\":\n return \"destructive\" as const;\n default:\n return \"warning\" as const;\n }\n};\n\nconst WebhookDeliveriesDrawerInner = observer(function WebhookDeliveriesDrawerInner({\n webhookId,\n open,\n onClose\n}: WebhookDeliveriesDrawerProps) {\n const { presenter } = useFeature(WebhookDeliveriesPresenterFeature);\n\n useEffect(() => {\n if (open) {\n presenter.init(webhookId);\n }\n }, [presenter, webhookId, open]);\n\n const { vm } = presenter;\n\n const columns = useMemo(\n () => ({\n eventType: {\n header: \"Event\",\n size: 180\n },\n status: {\n header: \"Status\",\n cell: (row: WebhookDelivery) => (\n <Tag variant={statusVariant(row.status)} content={row.status} />\n ),\n size: 100\n },\n responseStatus: {\n header: \"HTTP\",\n cell: (row: WebhookDelivery) => (\n <Text size=\"sm\">\n {row.responseStatus !== null ? String(row.responseStatus) : \"—\"}\n </Text>\n ),\n size: 60\n },\n createdOn: {\n header: \"Created\",\n cell: (row: WebhookDelivery) =>\n row.createdOn ? <TimeAgo datetime={row.createdOn} /> : <Text size=\"sm\">—</Text>,\n enableSorting: true,\n size: 120\n },\n actions: {\n header: \" \",\n cell: (row: WebhookDelivery) => (\n <IconButton\n icon={<ReplayIcon />}\n variant=\"ghost\"\n size=\"sm\"\n onClick={e => {\n e.stopPropagation();\n void presenter.actions.resend(row.id);\n }}\n aria-label=\"Resend delivery\"\n />\n ),\n size: 48,\n enableSorting: false,\n enableHiding: false,\n enableResizing: false\n }\n }),\n [presenter.actions]\n );\n\n return (\n <Drawer\n open={open}\n onOpenChange={isOpen => !isOpen && onClose()}\n title=\"Delivery Log\"\n modal={true}\n width=\"900px\"\n bodyPadding={false}\n >\n <div className=\"flex h-full\">\n <div\n className={\n vm.selectedDelivery\n ? \"flex-[1.5] border-r-sm border-neutral-muted overflow-auto\"\n : \"flex-1 overflow-auto\"\n }\n >\n <DataTable<WebhookDelivery>\n columns={columns}\n data={vm.list.rows}\n loading={vm.list.pagination.loading}\n onToggleRow={(row: WebhookDelivery) =>\n presenter.actions.selectDelivery(row)\n }\n />\n </div>\n {vm.selectedDelivery && (\n <div className=\"flex-1 overflow-auto\">\n <DeliveryDetail\n delivery={vm.selectedDelivery}\n onClose={() => presenter.actions.selectDelivery(null)}\n onResend={id => void presenter.actions.resend(id)}\n />\n </div>\n )}\n </div>\n </Drawer>\n );\n});\n\nexport const WebhookDeliveriesDrawer = (props: WebhookDeliveriesDrawerProps) => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n ListWebhookDeliveriesFeature.register(child);\n ResendWebhookDeliveryFeature.register(child);\n WebhookDeliveriesPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <WebhookDeliveriesDrawerInner {...props} />\n </DiContainerProvider>\n );\n};\n"],"names":["statusVariant","status","WebhookDeliveriesDrawerInner","observer","webhookId","open","onClose","presenter","useFeature","WebhookDeliveriesPresenterFeature","useEffect","vm","columns","useMemo","row","Tag","Text","String","TimeAgo","IconButton","ReplayIcon","e","Drawer","isOpen","DataTable","DeliveryDetail","id","WebhookDeliveriesDrawer","props","container","useContainer","scopedContainer","child","ListWebhookDeliveriesFeature","ResendWebhookDeliveryFeature","DiContainerProvider"],"mappings":";;;;;;;;;AAiBA,MAAMA,gBAAgB,CAACC;IACnB,OAAQA;QACJ,KAAK;YACD,OAAO;QACX,KAAK;YACD,OAAO;QACX;YACI,OAAO;IACf;AACJ;AAEA,MAAMC,uDAA+BC,SAAS,SAAsC,EAChFC,SAAS,EACTC,IAAI,EACJC,OAAO,EACoB;IAC3B,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IAEjCC,UAAU;QACN,IAAIL,MACAE,UAAU,IAAI,CAACH;IAEvB,GAAG;QAACG;QAAWH;QAAWC;KAAK;IAE/B,MAAM,EAAEM,EAAE,EAAE,GAAGJ;IAEf,MAAMK,UAAUC,QACZ,IAAO;YACH,WAAW;gBACP,QAAQ;gBACR,MAAM;YACV;YACA,QAAQ;gBACJ,QAAQ;gBACR,MAAM,CAACC,MAAAA,WAAAA,GACH,oBAACC,KAAGA;wBAAC,SAASf,cAAcc,IAAI,MAAM;wBAAG,SAASA,IAAI,MAAM;;gBAEhE,MAAM;YACV;YACA,gBAAgB;gBACZ,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACE,MAAIA;wBAAC,MAAK;uBACNF,AAAuB,SAAvBA,IAAI,cAAc,GAAYG,OAAOH,IAAI,cAAc,IAAI;gBAGpE,MAAM;YACV;YACA,WAAW;gBACP,QAAQ;gBACR,MAAM,CAACA,MACHA,IAAI,SAAS,GAAG,WAAH,GAAG,oBAACI,SAAOA;wBAAC,UAAUJ,IAAI,SAAS;uCAAO,oBAACE,MAAIA;wBAAC,MAAK;uBAAK;gBAC3E,eAAe;gBACf,MAAM;YACV;YACA,SAAS;gBACL,QAAQ;gBACR,MAAM,CAACF,MAAAA,WAAAA,GACH,oBAACK,YAAUA;wBACP,oBAAM,oBAACC,gBAAUA;wBACjB,SAAQ;wBACR,MAAK;wBACL,SAASC,CAAAA;4BACLA,EAAE,eAAe;4BACZd,UAAU,OAAO,CAAC,MAAM,CAACO,IAAI,EAAE;wBACxC;wBACA,cAAW;;gBAGnB,MAAM;gBACN,eAAe;gBACf,cAAc;gBACd,gBAAgB;YACpB;QACJ,IACA;QAACP,UAAU,OAAO;KAAC;IAGvB,OAAO,WAAP,GACI,oBAACe,QAAMA;QACH,MAAMjB;QACN,cAAckB,CAAAA,SAAU,CAACA,UAAUjB;QACnC,OAAM;QACN,OAAO;QACP,OAAM;QACN,aAAa;qBAEb,oBAAC;QAAI,WAAU;qBACX,oBAAC;QACG,WACIK,GAAG,gBAAgB,GACb,8DACA;qBAGV,oBAACa,WAASA;QACN,SAASZ;QACT,MAAMD,GAAG,IAAI,CAAC,IAAI;QAClB,SAASA,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;QACnC,aAAa,CAACG,MACVP,UAAU,OAAO,CAAC,cAAc,CAACO;SAI5CH,GAAG,gBAAgB,IAAI,WAAJ,GAChB,oBAAC;QAAI,WAAU;qBACX,oBAACc,gBAAcA;QACX,UAAUd,GAAG,gBAAgB;QAC7B,SAAS,IAAMJ,UAAU,OAAO,CAAC,cAAc,CAAC;QAChD,UAAUmB,CAAAA,KAAM,KAAKnB,UAAU,OAAO,CAAC,MAAM,CAACmB;;AAO1E;AAEO,MAAMC,0BAA0B,CAACC;IACpC,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBlB,QAAQ;QAC5B,MAAMmB,QAAQH,UAAU,oBAAoB;QAC5CI,6BAA6B,QAAQ,CAACD;QACtCE,6BAA6B,QAAQ,CAACF;QACtCvB,kCAAkC,QAAQ,CAACuB;QAC3C,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACG,qBAAmBA;QAAC,WAAWJ;qBAC5B,oBAAC7B,sDAAiC0B;AAG9C"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
-
import { WebhookDeliveriesPresenter } from "./abstractions.js";
|
|
3
|
-
import { WebhookDeliveriesPresenter as external_WebhookDeliveriesPresenter_js_WebhookDeliveriesPresenter } from "./WebhookDeliveriesPresenter.js";
|
|
4
|
-
const WebhookDeliveriesPresenterFeature = createFeature({
|
|
5
|
-
name: "Webhooks/WebhookDeliveriesPresenter",
|
|
6
|
-
register (container) {
|
|
7
|
-
container.register(external_WebhookDeliveriesPresenter_js_WebhookDeliveriesPresenter).inSingletonScope();
|
|
8
|
-
},
|
|
9
|
-
resolve (container) {
|
|
10
|
-
return {
|
|
11
|
-
presenter: container.resolve(WebhookDeliveriesPresenter)
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
export { WebhookDeliveriesPresenterFeature };
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/WebhookDeliveries/feature.js","sources":["../../../../src/admin/presentation/WebhookDeliveries/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WebhookDeliveriesPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { WebhookDeliveriesPresenter } from \"./WebhookDeliveriesPresenter.js\";\n\nexport const WebhookDeliveriesPresenterFeature = createFeature({\n name: \"Webhooks/WebhookDeliveriesPresenter\",\n register(container) {\n container.register(WebhookDeliveriesPresenter).inSingletonScope();\n },\n resolve(container) {\n return { presenter: container.resolve(PresenterAbstraction) };\n }\n});\n"],"names":["WebhookDeliveriesPresenterFeature","createFeature","container","WebhookDeliveriesPresenter","PresenterAbstraction"],"mappings":";;;AAIO,MAAMA,oCAAoCC,cAAc;IAC3D,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,mEAA4B,gBAAgB;IACnE;IACA,SAAQD,SAAS;QACb,OAAO;YAAE,WAAWA,UAAU,OAAO,CAACE;QAAsB;IAChE;AACJ"}
|