@motiadev/plugin-endpoint 0.8.2-beta.140-628177 → 0.8.2-beta.140-111855
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/README.md +12 -12
- package/dist/api/endpoints-stream.d.ts +22 -0
- package/dist/api/endpoints-stream.d.ts.map +1 -0
- package/dist/api/index.d.ts +3 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/components/configuration-list-item.d.ts.map +1 -1
- package/dist/components/endpoint-badge.d.ts +1 -1
- package/dist/components/endpoint-badge.d.ts.map +1 -1
- package/dist/components/endpoint-item.d.ts.map +1 -1
- package/dist/components/endpoint-path-preview.d.ts.map +1 -1
- package/dist/components/endpoint-path.d.ts.map +1 -1
- package/dist/components/endpoint-tab-label.d.ts +1 -1
- package/dist/components/flow-group.d.ts.map +1 -1
- package/dist/components/json-editor.d.ts.map +1 -1
- package/dist/hooks/use-endpoint-configuration.d.ts +3 -3
- package/dist/hooks/use-get-endpoints.d.ts.map +1 -1
- package/dist/hooks/use-json-schema-to-json.d.ts +1 -1
- package/dist/index.cjs +27 -0
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2243 -9
- package/dist/play/response-code.d.ts.map +1 -1
- package/dist/play/response-content.d.ts +1 -1
- package/dist/play/response-content.d.ts.map +1 -1
- package/dist/play/side-panel-body-tab.d.ts.map +1 -1
- package/dist/play/side-panel-response.d.ts +1 -1
- package/dist/play/side-panel.d.ts.map +1 -1
- package/dist/play/trigger-button.d.ts +1 -1
- package/dist/play/trigger-button.d.ts.map +1 -1
- package/dist/plugin-endpoint.css +1 -0
- package/dist/plugin.cjs +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +67 -0
- package/dist/spec/spec-body-panel.d.ts +0 -2
- package/dist/spec/spec-body-panel.d.ts.map +1 -1
- package/dist/spec/spec-path-params-panel.d.ts.map +1 -1
- package/dist/spec/spec-query-params-panel.d.ts.map +1 -1
- package/dist/spec/spec-response-schema.d.ts.map +1 -1
- package/dist/spec/spec-side-panel.d.ts.map +1 -1
- package/package.json +31 -20
- package/dist/components/configuration-list-item.js +0 -36
- package/dist/components/configuration-list-item.js.map +0 -1
- package/dist/components/endpoint-badge.js +0 -29
- package/dist/components/endpoint-badge.js.map +0 -1
- package/dist/components/endpoint-item.js +0 -5
- package/dist/components/endpoint-item.js.map +0 -1
- package/dist/components/endpoint-path-preview.js +0 -22
- package/dist/components/endpoint-path-preview.js.map +0 -1
- package/dist/components/endpoint-path.js +0 -26
- package/dist/components/endpoint-path.js.map +0 -1
- package/dist/components/endpoint-tab-label.js +0 -6
- package/dist/components/endpoint-tab-label.js.map +0 -1
- package/dist/components/endpoints-search.js +0 -10
- package/dist/components/endpoints-search.js.map +0 -1
- package/dist/components/flow-group.js +0 -13
- package/dist/components/flow-group.js.map +0 -1
- package/dist/components/json-editor.js +0 -105
- package/dist/components/json-editor.js.map +0 -1
- package/dist/endpoints-page.js +0 -29
- package/dist/endpoints-page.js.map +0 -1
- package/dist/hooks/use-endpoint-configuration.js +0 -142
- package/dist/hooks/use-endpoint-configuration.js.map +0 -1
- package/dist/hooks/use-get-endpoints.js +0 -23
- package/dist/hooks/use-get-endpoints.js.map +0 -1
- package/dist/hooks/use-json-schema-to-json.js +0 -12
- package/dist/hooks/use-json-schema-to-json.js.map +0 -1
- package/dist/hooks/use-path-params.js +0 -5
- package/dist/hooks/use-path-params.js.map +0 -1
- package/dist/hooks/use-path-url.js +0 -15
- package/dist/hooks/use-path-url.js.map +0 -1
- package/dist/hooks/use-state-stream.js +0 -19
- package/dist/hooks/use-state-stream.js.map +0 -1
- package/dist/hooks/utils.js +0 -30
- package/dist/hooks/utils.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/play/reponse-code/utils.js +0 -73
- package/dist/play/reponse-code/utils.js.map +0 -1
- package/dist/play/response-code.js +0 -11
- package/dist/play/response-code.js.map +0 -1
- package/dist/play/response-content.js +0 -38
- package/dist/play/response-content.js.map +0 -1
- package/dist/play/side-panel-body-tab.js +0 -23
- package/dist/play/side-panel-body-tab.js.map +0 -1
- package/dist/play/side-panel-headers-tab.js +0 -26
- package/dist/play/side-panel-headers-tab.js.map +0 -1
- package/dist/play/side-panel-params-tab.js +0 -39
- package/dist/play/side-panel-params-tab.js.map +0 -1
- package/dist/play/side-panel-response.js +0 -21
- package/dist/play/side-panel-response.js.map +0 -1
- package/dist/play/side-panel.js +0 -26
- package/dist/play/side-panel.js.map +0 -1
- package/dist/play/trigger-button.js +0 -40
- package/dist/play/trigger-button.js.map +0 -1
- package/dist/spec/spec-body-panel.js +0 -13
- package/dist/spec/spec-body-panel.js.map +0 -1
- package/dist/spec/spec-path-params-panel.js +0 -11
- package/dist/spec/spec-path-params-panel.js.map +0 -1
- package/dist/spec/spec-query-params-panel.js +0 -10
- package/dist/spec/spec-query-params-panel.js.map +0 -1
- package/dist/spec/spec-response-schema.js +0 -18
- package/dist/spec/spec-response-schema.js.map +0 -1
- package/dist/spec/spec-side-panel.js +0 -22
- package/dist/spec/spec-side-panel.js.map +0 -1
- package/dist/styles.css +0 -1108
- package/dist/types/endpoint.js +0 -2
- package/dist/types/endpoint.js.map +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Button } from '@motiadev/ui';
|
|
3
|
-
import { Plus } from 'lucide-react';
|
|
4
|
-
import { useCallback } from 'react';
|
|
5
|
-
import { useShallow } from 'zustand/react/shallow';
|
|
6
|
-
import { ConfigurationListItem } from '../components/configuration-list-item';
|
|
7
|
-
import { getHeadersSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration';
|
|
8
|
-
export const SidePanelHeadersTab = () => {
|
|
9
|
-
const { setHeaders, removeHeaders } = useEndpointConfiguration();
|
|
10
|
-
const headers = useEndpointConfiguration(useShallow(getHeadersSelector));
|
|
11
|
-
const addHeader = useCallback(() => {
|
|
12
|
-
const newHeader = {
|
|
13
|
-
name: '',
|
|
14
|
-
value: '',
|
|
15
|
-
active: true,
|
|
16
|
-
};
|
|
17
|
-
setHeaders({ ...headers, [new Date().getTime().toString()]: newHeader });
|
|
18
|
-
}, [headers, setHeaders]);
|
|
19
|
-
const updateHeader = useCallback((key, field, value) => {
|
|
20
|
-
if (!key)
|
|
21
|
-
return;
|
|
22
|
-
setHeaders({ ...headers, [key]: { ...headers[key], [field]: value } });
|
|
23
|
-
}, [headers, setHeaders]);
|
|
24
|
-
return (_jsxs("div", { className: "h-full max-h-full grid grid-rows-[auto_1fr]", children: [_jsx("div", { className: "grid px-4 border-b h-10 items-center grid-cols-[auto_1fr]", children: _jsxs(Button, { size: "sm", onClick: addHeader, children: [_jsx(Plus, { className: "h-3 w-3" }), "Add"] }) }), _jsxs("div", { className: "p-2", children: [Object.entries(headers).map(([key, header]) => (_jsx(ConfigurationListItem, { value: header, id: key, onUpdate: updateHeader, onRemove: removeHeaders }, key))), Object.entries(headers).length === 0 && (_jsx("div", { className: "grid grid-cols-1 items-center h-full", children: _jsx("div", { className: "text-sm text-muted-foreground text-center", children: "There are no headers in this endpoint" }) }))] })] }));
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=side-panel-headers-tab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"side-panel-headers-tab.js","sourceRoot":"","sources":["../../src/play/side-panel-headers-tab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAElG,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAChE,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAExE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,IAAI;SACb,CAAA;QACD,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAC1E,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;IAEzB,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,GAAW,EAAE,KAAkC,EAAE,KAAuB,EAAE,EAAE;QAC3E,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IACxE,CAAC,EACD,CAAC,OAAO,EAAE,UAAU,CAAC,CACtB,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAC,6CAA6C,aAC1D,cAAK,SAAS,EAAC,2DAA2D,YACxE,MAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,SAAS,aAClC,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,WAErB,GACL,EAEN,eAAK,SAAS,EAAC,KAAK,aACjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAC9C,KAAC,qBAAqB,IAAW,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,IAA5E,GAAG,CAA6E,CAC7G,CAAC,EAED,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CACvC,cAAK,SAAS,EAAC,sCAAsC,YACnD,cAAK,SAAS,EAAC,2CAA2C,sDAA4C,GAClG,CACP,IACG,IACF,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Button } from '@motiadev/ui';
|
|
3
|
-
import { Plus } from 'lucide-react';
|
|
4
|
-
import { useCallback, useMemo } from 'react';
|
|
5
|
-
import { useShallow } from 'zustand/react/shallow';
|
|
6
|
-
import { ConfigurationListItem } from '../components/configuration-list-item';
|
|
7
|
-
import { EndpointPathPreview } from '../components/endpoint-path-preview';
|
|
8
|
-
import { getPathParamsSelector, getQueryParamsSelector, useEndpointConfiguration, } from '../hooks/use-endpoint-configuration';
|
|
9
|
-
export const SidePanelParamsTab = ({ path }) => {
|
|
10
|
-
const { setQueryParams, removeQueryParams, setPathParams } = useEndpointConfiguration();
|
|
11
|
-
const queryParams = useEndpointConfiguration(useShallow(getQueryParamsSelector));
|
|
12
|
-
const pathParams = useEndpointConfiguration(useShallow(getPathParamsSelector));
|
|
13
|
-
const pathParamsConfig = useMemo(() => {
|
|
14
|
-
const params = path.match(/:(\w+)/g);
|
|
15
|
-
return (params?.map((param) => {
|
|
16
|
-
return { name: param.slice(1), value: pathParams[param.slice(1)]?.value ?? '', active: true };
|
|
17
|
-
}) ?? []);
|
|
18
|
-
}, [path]);
|
|
19
|
-
const addParam = useCallback(() => {
|
|
20
|
-
const newParam = {
|
|
21
|
-
name: '',
|
|
22
|
-
value: '',
|
|
23
|
-
active: true,
|
|
24
|
-
};
|
|
25
|
-
setQueryParams({ ...queryParams, [new Date().getTime().toString()]: newParam });
|
|
26
|
-
}, [queryParams, setQueryParams]);
|
|
27
|
-
const updateParam = useCallback((key, field, value) => {
|
|
28
|
-
if (!key)
|
|
29
|
-
return;
|
|
30
|
-
setQueryParams({ ...queryParams, [key]: { ...queryParams[key], [field]: value } });
|
|
31
|
-
}, [queryParams, setQueryParams]);
|
|
32
|
-
const updatePathParam = useCallback((key, field, value) => {
|
|
33
|
-
if (!key)
|
|
34
|
-
return;
|
|
35
|
-
setPathParams({ ...pathParams, [key]: { ...pathParams[key], [field]: value } });
|
|
36
|
-
}, [pathParams, setPathParams]);
|
|
37
|
-
return (_jsxs("div", { className: "h-full grid grid-rows-[auto_auto_1fr]", children: [_jsx("div", { className: "grid px-4 border-b h-10 items-center grid-cols-[auto_1fr]", children: _jsxs(Button, { size: "sm", onClick: addParam, children: [_jsx(Plus, { className: "h-3 w-3" }), "Add"] }) }), _jsx(EndpointPathPreview, { path: path }), _jsxs("div", { className: "grid grid-rows-[1fr_1fr]", children: [pathParamsConfig.length > 0 && (_jsxs("div", { className: "p-2", children: [_jsx("div", { className: "text-sm font-medium pl-3", children: "Path variables" }), pathParamsConfig.map((pathName) => (_jsx(ConfigurationListItem, { value: { name: pathName.name, value: pathName.value, active: pathName.active }, id: pathName.name, required: true, onUpdate: updatePathParam }, pathName.name)))] })), _jsxs("div", { className: "p-2 border-b border-border", children: [_jsx("div", { className: "text-sm font-medium pl-3", children: "Query parameters" }), Object.entries(queryParams).map(([key, param]) => (_jsx(ConfigurationListItem, { value: param, id: key, onUpdate: updateParam, onRemove: removeQueryParams }, key))), Object.entries(queryParams).length === 0 && (_jsx("div", { className: "grid grid-cols-1 items-center h-full", children: _jsx("div", { className: "text-sm text-muted-foreground text-center", children: "There are no query params in this endpoint" }) }))] })] })] }));
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=side-panel-params-tab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"side-panel-params-tab.js","sourceRoot":"","sources":["../../src/play/side-panel-params-tab.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Button, Tabs, TabsContent, TabsList, TabsTrigger } from '@motiadev/ui';
|
|
3
|
-
import { X } from 'lucide-react';
|
|
4
|
-
import { memo, useState } from 'react';
|
|
5
|
-
import { getResponseSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration';
|
|
6
|
-
import { useStateStream } from '../hooks/use-state-stream';
|
|
7
|
-
import { ResponseCode } from './response-code';
|
|
8
|
-
import { ResponseContent } from './response-content';
|
|
9
|
-
export const SidePanelResponse = memo(() => {
|
|
10
|
-
const { setResponse } = useEndpointConfiguration();
|
|
11
|
-
const response = useEndpointConfiguration(getResponseSelector);
|
|
12
|
-
const { data } = useStateStream(response?.body instanceof Blob ? undefined : response?.body);
|
|
13
|
-
const [activeTab, setActiveTab] = useState('preview');
|
|
14
|
-
const onClose = () => setResponse(undefined);
|
|
15
|
-
if (!response) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
return (_jsxs(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), className: "border-l border-border", "data-testid": "endpoint-response-container", children: [_jsxs("div", { className: "grid grid-cols-[1fr_auto] items-center h-10 border-b px-5 bg-card", children: [_jsxs(TabsList, { children: [_jsx(TabsTrigger, { value: "preview", className: "cursor-pointer", children: "Preview" }), _jsx(TabsTrigger, { value: "headers", className: "grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer", children: "Headers" })] }), _jsx(Button, { variant: "ghost", size: "icon", onClick: onClose, children: _jsx(X, { className: "h-4 w-4" }) })] }), _jsx("div", { className: "sticky bottom-0 border-b border-border p-3 text-sm flex items-center gap-1 font-medium", children: _jsxs("div", { className: "flex flex-row items-center flex-1 gap-3", children: [_jsx(ResponseCode, { statusCode: response.statusCode }), !!response.executionTime && (_jsxs("div", { className: "text-muted-foreground bg-muted-foreground/10 px-2 py-1 rounded-sm", children: [response.executionTime, "ms"] }))] }) }), _jsx(TabsContent, { value: "preview", children: _jsx(ResponseContent, { code: data, blob: response?.body instanceof Blob ? response.body : undefined, contentType: response.headers['content-type'] }) }), _jsx(TabsContent, { value: "headers", children: _jsx("div", { className: "grid grid-cols-[auto_minmax(0,1fr)] gap-4 p-4 overflow-auto auto-rows-max h-full", children: response.headers &&
|
|
19
|
-
Object.entries(response.headers).map(([key, value]) => (_jsxs(_Fragment, { children: [_jsx("span", { className: "font-bold text-sm h-8 items-center grid whitespace-nowrap", children: key }), _jsx("span", { className: "text-sm text-muted-foreground h-8 items-center grid whitespace-nowrap", children: value })] }))) }) })] }));
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=side-panel-response.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"side-panel-response.js","sourceRoot":"","sources":["../../src/play/side-panel-response.tsx"],"names":[],"mappings":"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"}
|
package/dist/play/side-panel.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { BackgroundEffect, Badge, Button, cn, Tabs, TabsContent, TabsList, TabsTrigger } from '@motiadev/ui';
|
|
3
|
-
import { Book, X } from 'lucide-react';
|
|
4
|
-
import { memo, useState } from 'react';
|
|
5
|
-
import { useShallow } from 'zustand/react/shallow';
|
|
6
|
-
import { EndpointPath } from '../components/endpoint-path';
|
|
7
|
-
import { getHeadersSelector, getQueryParamsSelector, getResponseSelector, useEndpointConfiguration, } from '../hooks/use-endpoint-configuration';
|
|
8
|
-
import { SpecSidePanel } from '../spec/spec-side-panel';
|
|
9
|
-
import { SidePanelBodyTab } from './side-panel-body-tab';
|
|
10
|
-
import { SidePanelHeadersTab } from './side-panel-headers-tab';
|
|
11
|
-
import { SidePanelParamsTab } from './side-panel-params-tab';
|
|
12
|
-
import { SidePanelResponse } from './side-panel-response';
|
|
13
|
-
import { TriggerButton } from './trigger-button';
|
|
14
|
-
const headersCountSelector = (state) => Object.keys(getHeadersSelector(state)).length;
|
|
15
|
-
const hasResponseSelector = (state) => getResponseSelector(state) !== undefined;
|
|
16
|
-
const paramsCountSelector = (state) => Object.keys(getQueryParamsSelector(state)).length;
|
|
17
|
-
export const SidePanel = memo(({ endpoint, onClose }) => {
|
|
18
|
-
const isGetOrDelete = endpoint.method === 'GET' || endpoint.method === 'DELETE';
|
|
19
|
-
const [activeTab, setActiveTab] = useState(isGetOrDelete ? 'params' : 'body');
|
|
20
|
-
const [isSpecOpen, setIsSpecOpen] = useState(false);
|
|
21
|
-
const headersCount = useEndpointConfiguration(useShallow(headersCountSelector));
|
|
22
|
-
const hasResponse = useEndpointConfiguration(useShallow(hasResponseSelector));
|
|
23
|
-
const paramsCount = useEndpointConfiguration(useShallow(paramsCountSelector));
|
|
24
|
-
return (_jsxs("div", { className: "isolate grid grid-cols-1 overflow-y-auto min-w-0 grid-rows-[auto_1fr] border-l border-border", "data-testid": "endpoint-details-panel", children: [_jsx(BackgroundEffect, {}), _jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-start gap-4 px-5 py-4 border-b bg-card w-full", children: [_jsxs("div", { className: "grid grid-rows-2 gap-2", children: [_jsx(EndpointPath, { method: endpoint.method, path: endpoint.path }), endpoint.description && _jsx("p", { className: "text-sm text-muted-foreground", children: endpoint.description })] }), _jsx("div", { className: "flex items-end justify-end", children: _jsx(Button, { variant: "icon", size: "icon", onClick: () => setIsSpecOpen(!isSpecOpen), "data-testid": "endpoint-spec-button", children: _jsx(Book, {}) }) }), _jsx(Button, { variant: "icon", size: "icon", onClick: onClose, children: _jsx(X, {}) })] }), _jsxs("div", { className: cn('grid grid-cols-[minmax(350px,1fr)_minmax(auto,1fr)]', !hasResponse && 'grid-cols-1'), children: [_jsxs(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), children: [_jsxs("div", { className: "grid grid-cols-[1fr_auto] items-center h-10 border-b px-5 bg-card", children: [_jsxs(TabsList, { children: [_jsxs(TabsTrigger, { value: "params", className: "grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer", "data-testid": "endpoint-params-tab", children: ["Params", _jsx(Badge, { variant: "outline", className: "h-4 px-1.5 text-xs", children: paramsCount })] }), _jsx(TabsTrigger, { value: "body", className: "cursor-pointer", "data-testid": "endpoint-body-tab", children: "Body" }), _jsxs(TabsTrigger, { value: "headers", className: "grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer", "data-testid": "endpoint-headers-tab", children: ["Headers", _jsx(Badge, { variant: "outline", className: "h-4 px-1.5 text-xs", children: headersCount })] })] }), _jsx(TriggerButton, { method: endpoint.method, path: endpoint.path.toString() })] }), _jsx(TabsContent, { value: "params", children: _jsx(SidePanelParamsTab, { path: endpoint.path }) }), _jsx(TabsContent, { value: "body", children: _jsx(SidePanelBodyTab, { schema: endpoint.bodySchema }) }), _jsx(TabsContent, { value: "headers", children: _jsx(SidePanelHeadersTab, {}) })] }), _jsx(SidePanelResponse, {})] }), isSpecOpen && _jsx(SpecSidePanel, { endpoint: endpoint, onClose: () => setIsSpecOpen(false) })] }));
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=side-panel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"side-panel.js","sourceRoot":"","sources":["../../src/play/side-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Button } from '@motiadev/ui';
|
|
3
|
-
import { Loader2, Play } from 'lucide-react';
|
|
4
|
-
import { memo, useState } from 'react';
|
|
5
|
-
import { useShallow } from 'zustand/react/shallow';
|
|
6
|
-
import { getBodySelector, getHeadersSelector, useEndpointConfiguration, } from '../hooks/use-endpoint-configuration';
|
|
7
|
-
import { usePathUrl } from '../hooks/use-path-url';
|
|
8
|
-
export const TriggerButton = memo(({ method, path }) => {
|
|
9
|
-
const { setResponse } = useEndpointConfiguration();
|
|
10
|
-
const headers = useEndpointConfiguration(useShallow(getHeadersSelector));
|
|
11
|
-
const body = useEndpointConfiguration(useShallow(getBodySelector));
|
|
12
|
-
const pathUrl = usePathUrl(path);
|
|
13
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
14
|
-
const onClick = async () => {
|
|
15
|
-
try {
|
|
16
|
-
setIsLoading(true);
|
|
17
|
-
const _headers = Object.values(headers)
|
|
18
|
-
.filter((header) => header.active && header.name !== '' && header.value !== '')
|
|
19
|
-
.reduce((acc, header) => {
|
|
20
|
-
acc[header.name.toLowerCase()] = header.value;
|
|
21
|
-
return acc;
|
|
22
|
-
}, {});
|
|
23
|
-
const startTime = Date.now();
|
|
24
|
-
const response = await fetch(pathUrl, {
|
|
25
|
-
method: method,
|
|
26
|
-
headers: _headers,
|
|
27
|
-
body: ['GET', 'DELETE', 'HEAD', 'OPTIONS'].includes(method) ? null : body,
|
|
28
|
-
});
|
|
29
|
-
setResponse(response, startTime);
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
console.error('Error triggering endpoint:', error);
|
|
33
|
-
}
|
|
34
|
-
finally {
|
|
35
|
-
setIsLoading(false);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
return (_jsx(Button, { variant: "ghost", size: "icon", onClick: onClick, disabled: isLoading, "data-testid": "endpoint-play-button", children: isLoading ? _jsx(Loader2, { className: "animate-spin" }) : _jsx(Play, { className: "h-4 w-4" }) }));
|
|
39
|
-
});
|
|
40
|
-
//# sourceMappingURL=trigger-button.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-button.js","sourceRoot":"","sources":["../../src/play/trigger-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAEL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAOlD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAsB,EAAE,EAAE;IACzE,MAAM,EAAE,WAAW,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAClD,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,wBAAwB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAEhC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC;YACH,YAAY,CAAC,IAAI,CAAC,CAAA;YAElB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;iBACpC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;iBAC9E,MAAM,CACL,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACd,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;gBAC7C,OAAO,GAAG,CAAA;YACZ,CAAC,EACD,EAA4B,CAC7B,CAAA;YAEH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;gBACpC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;aAC1E,CAAC,CAAA;YAEF,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;QACpD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,iBAAc,sBAAsB,YAC1G,SAAS,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,GAAG,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,GACzE,CACV,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Panel } from '@motiadev/ui';
|
|
3
|
-
import ReactJson from 'react18-json-view';
|
|
4
|
-
import 'react18-json-view/src/dark.css';
|
|
5
|
-
import 'react18-json-view/src/style.css';
|
|
6
|
-
export const EndpointBodyPanel = ({ endpoint, panelName, value }) => {
|
|
7
|
-
const shouldHaveBody = ['post', 'put', 'patch'].includes(endpoint.method.toLowerCase());
|
|
8
|
-
if (!shouldHaveBody) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
return (_jsx(Panel, { title: "Body", size: "sm", contentClassName: "p-0", "data-testid": `endpoint-body-panel__${panelName}`, children: _jsx(ReactJson, { src: value ? JSON.parse(value) : {}, theme: "default", enableClipboard: false, style: { backgroundColor: 'transparent' } }) }));
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=spec-body-panel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-body-panel.js","sourceRoot":"","sources":["../../src/spec/spec-body-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,gCAAgC,CAAA;AACvC,OAAO,iCAAiC,CAAA;AASxC,MAAM,CAAC,MAAM,iBAAiB,GAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7E,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAEvF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,iBAAc,wBAAwB,SAAS,EAAE,YACnG,KAAC,SAAS,IACR,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EACnC,KAAK,EAAC,SAAS,EACf,eAAe,EAAE,KAAK,EACtB,KAAK,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,GACzC,GACI,CACT,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Panel } from '@motiadev/ui';
|
|
3
|
-
import { usePathParams } from '../hooks/use-path-params';
|
|
4
|
-
export const EndpointPathParamsPanel = ({ endpoint }) => {
|
|
5
|
-
const pathParams = usePathParams(endpoint.path);
|
|
6
|
-
if (!pathParams.length) {
|
|
7
|
-
return null;
|
|
8
|
-
}
|
|
9
|
-
return (_jsx(Panel, { title: "Path params", size: "sm", variant: "default", children: _jsx("div", { className: "grid gap-3", style: { gridTemplateColumns: '1fr 2fr' }, children: pathParams.map((param) => (_jsx("div", { className: "font-bold leading-[36px] flex text-xs", children: param }, param))) }) }));
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=spec-path-params-panel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-path-params-panel.js","sourceRoot":"","sources":["../../src/spec/spec-path-params-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAOxD,MAAM,CAAC,MAAM,uBAAuB,GAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjE,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE/C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,YACpD,cAAK,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAClE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,CACjC,cAAiB,SAAS,EAAC,uCAAuC,YAC/D,KAAK,IADE,KAAK,CAET,CACP,CAAC,GACE,GACA,CACT,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Panel } from '@motiadev/ui';
|
|
3
|
-
import { Fragment } from 'react';
|
|
4
|
-
export const EndpointQueryParamsPanel = ({ endpoint }) => {
|
|
5
|
-
if (!endpoint.queryParams?.length) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
return (_jsx(Panel, { title: "Query params", size: "sm", variant: "outlined", children: _jsx("div", { className: "grid gap-3", style: { gridTemplateColumns: '1fr 2fr', gridTemplateRows: '1fr 1fr' }, children: endpoint.queryParams.map((param) => (_jsxs(Fragment, { children: [_jsx("div", { className: "font-bold leading-[36px] flex text-xs", children: param.name }), _jsx("div", { className: "flex items-center text-xs ", children: _jsx("span", { children: param.description }) })] }, param.name))) }) }));
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=spec-query-params-panel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-query-params-panel.js","sourceRoot":"","sources":["../../src/spec/spec-query-params-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAA;AAOpC,MAAM,CAAC,MAAM,wBAAwB,GAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,UAAU,YACtD,cAAK,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAC/F,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAA4C,EAAE,EAAE,CAAC,CAC1E,MAAC,QAAQ,eACP,cAAK,SAAS,EAAC,uCAAuC,YAAE,KAAK,CAAC,IAAI,GAAO,EACzE,cAAK,SAAS,EAAC,4BAA4B,YACzC,yBAAO,KAAK,CAAC,WAAW,GAAQ,GAC5B,KAJO,KAAK,CAAC,IAAI,CAKd,CACZ,CAAC,GACE,GACA,CACT,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Tabs, TabsContent, TabsList, TabsTrigger, useThemeStore } from '@motiadev/ui';
|
|
3
|
-
import { useMemo } from 'react';
|
|
4
|
-
import ReactJson from 'react18-json-view';
|
|
5
|
-
import { convertJsonSchemaToJson } from '../hooks/utils';
|
|
6
|
-
const EndpointResponseSchemaItem = ({ responseCode, bodySchema }) => {
|
|
7
|
-
const theme = useThemeStore((store) => store.theme);
|
|
8
|
-
const schema = useMemo(() => convertJsonSchemaToJson(bodySchema), [bodySchema]);
|
|
9
|
-
const description = typeof bodySchema.description === 'string' ? bodySchema.description : '';
|
|
10
|
-
return (_jsx(TabsContent, { value: responseCode, className: "border-t", children: _jsx("div", { className: "text-xs font-mono rounded-lg whitespace-pre-wrap", children: schema ? (_jsx(ReactJson, { src: schema, dark: theme === 'dark', enableClipboard: false, style: { backgroundColor: 'transparent' } })) : (_jsx("div", { className: "text-xs font-mono rounded-lg whitespace-pre-wrap p-4", children: description })) }) }, responseCode));
|
|
11
|
-
};
|
|
12
|
-
export const EndpointResponseSchema = ({ items }) => {
|
|
13
|
-
if (items.length === 0) {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
return (_jsx("div", { className: "flex flex-col rounded-lg border", children: _jsxs(Tabs, { defaultValue: items[0].responseCode, children: [_jsx("div", { className: "flex items-center justify-between bg-card", children: _jsx(TabsList, { className: "bg-transparent p-0", children: items.map((item) => (_jsx(TabsTrigger, { value: item.responseCode, className: "text-xs font-bold cursor-pointer", children: item.responseCode }, item.responseCode))) }) }), items.map((props) => (_jsx(EndpointResponseSchemaItem, { ...props }, props.responseCode)))] }) }));
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=spec-response-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-response-schema.js","sourceRoot":"","sources":["../../src/spec/spec-response-schema.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACtF,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAYxD,MAAM,0BAA0B,GAA6B,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;IAC5F,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,KAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAC/E,MAAM,WAAW,GAAG,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IAE5F,OAAO,CACL,KAAC,WAAW,IAAC,KAAK,EAAE,YAAY,EAAqB,SAAS,EAAC,UAAU,YACvE,cAAK,SAAS,EAAC,kDAAkD,YAC9D,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,SAAS,IACR,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,KAAK,MAAM,EACtB,eAAe,EAAE,KAAK,EACtB,KAAK,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,GACzC,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,sDAAsD,YAAE,WAAW,GAAO,CAC1F,GACG,IAZ+B,YAAY,CAarC,CACf,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAA8B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,iCAAiC,YAC9C,MAAC,IAAI,IAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,aACvC,cAAK,SAAS,EAAC,2CAA2C,YACxD,KAAC,QAAQ,IAAC,SAAS,EAAC,oBAAoB,YACrC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,WAAW,IACV,KAAK,EAAE,IAAI,CAAC,YAAY,EAExB,SAAS,EAAC,kCAAkC,YAE3C,IAAI,CAAC,YAAY,IAHb,IAAI,CAAC,YAAY,CAIV,CACf,CAAC,GACO,GACP,EAEL,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACpB,KAAC,0BAA0B,OAA8B,KAAK,IAA7B,KAAK,CAAC,YAAY,CAAe,CACnE,CAAC,IACG,GACH,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Sidebar } from '@motiadev/ui';
|
|
3
|
-
import { X } from 'lucide-react';
|
|
4
|
-
import { EndpointPath } from '../components/endpoint-path';
|
|
5
|
-
import { useJsonSchemaToJson } from '../hooks/use-json-schema-to-json';
|
|
6
|
-
import { EndpointBodyPanel } from './spec-body-panel';
|
|
7
|
-
import { EndpointPathParamsPanel } from './spec-path-params-panel';
|
|
8
|
-
import { EndpointQueryParamsPanel } from './spec-query-params-panel';
|
|
9
|
-
import { EndpointResponseSchema } from './spec-response-schema';
|
|
10
|
-
export const SpecSidePanel = ({ endpoint, onClose }) => {
|
|
11
|
-
const { body } = useJsonSchemaToJson(endpoint.bodySchema);
|
|
12
|
-
return (_jsxs(Sidebar, { initialWidth: 600, subtitle: endpoint.description, title: _jsx(EndpointPath, { method: endpoint.method, path: endpoint.path }), onClose: onClose, actions: [
|
|
13
|
-
{
|
|
14
|
-
icon: _jsx(X, { className: "cursor-pointer w-4 h-4", onClick: onClose }),
|
|
15
|
-
onClick: onClose,
|
|
16
|
-
},
|
|
17
|
-
], children: [_jsx(EndpointPathParamsPanel, { endpoint: endpoint }), _jsx(EndpointQueryParamsPanel, { endpoint: endpoint }), _jsx(EndpointBodyPanel, { endpoint: endpoint, panelName: "details", value: body }), _jsx(EndpointResponseSchema, { items: Object.entries(endpoint?.responseSchema ?? {}).map(([status, schema]) => ({
|
|
18
|
-
responseCode: status,
|
|
19
|
-
bodySchema: schema,
|
|
20
|
-
})) })] }));
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=spec-side-panel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-side-panel.js","sourceRoot":"","sources":["../../src/spec/spec-side-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAI/D,MAAM,CAAC,MAAM,aAAa,GAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAEzD,OAAO,CACL,MAAC,OAAO,IACN,YAAY,EAAE,GAAG,EACjB,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAC9B,KAAK,EAAE,KAAC,YAAY,IAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAI,EACrE,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,KAAC,CAAC,IAAC,SAAS,EAAC,wBAAwB,EAAC,OAAO,EAAE,OAAO,GAAI;gBAChE,OAAO,EAAE,OAAO;aACjB;SACF,aAED,KAAC,uBAAuB,IAAC,QAAQ,EAAE,QAAQ,GAAI,EAC/C,KAAC,wBAAwB,IAAC,QAAQ,EAAE,QAAQ,GAAI,EAChD,KAAC,iBAAiB,IAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,IAAI,GAAI,EAC1E,KAAC,sBAAsB,IACrB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/E,YAAY,EAAE,MAAM;oBACpB,UAAU,EAAE,MAAM;iBACnB,CAAC,CAAC,GACH,IACM,CACX,CAAA;AACH,CAAC,CAAA"}
|