@motiadev/plugin-endpoint 0.7.2-beta.135-745094

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/dist/endpoint-badge.d.ts +11 -0
  4. package/dist/endpoint-badge.d.ts.map +1 -0
  5. package/dist/endpoint-badge.js +23 -0
  6. package/dist/endpoint-badge.js.map +1 -0
  7. package/dist/endpoint-body-panel.d.ts +14 -0
  8. package/dist/endpoint-body-panel.d.ts.map +1 -0
  9. package/dist/endpoint-body-panel.js +17 -0
  10. package/dist/endpoint-body-panel.js.map +1 -0
  11. package/dist/endpoint-call.d.ts +8 -0
  12. package/dist/endpoint-call.d.ts.map +1 -0
  13. package/dist/endpoint-call.js +59 -0
  14. package/dist/endpoint-call.js.map +1 -0
  15. package/dist/endpoint-description.d.ts +8 -0
  16. package/dist/endpoint-description.d.ts.map +1 -0
  17. package/dist/endpoint-description.js +14 -0
  18. package/dist/endpoint-description.js.map +1 -0
  19. package/dist/endpoint-path-params-panel.d.ts +9 -0
  20. package/dist/endpoint-path-params-panel.d.ts.map +1 -0
  21. package/dist/endpoint-path-params-panel.js +18 -0
  22. package/dist/endpoint-path-params-panel.js.map +1 -0
  23. package/dist/endpoint-query-params-panel.d.ts +9 -0
  24. package/dist/endpoint-query-params-panel.d.ts.map +1 -0
  25. package/dist/endpoint-query-params-panel.js +17 -0
  26. package/dist/endpoint-query-params-panel.js.map +1 -0
  27. package/dist/endpoint-response-schema.d.ts +11 -0
  28. package/dist/endpoint-response-schema.d.ts.map +1 -0
  29. package/dist/endpoint-response-schema.js +18 -0
  30. package/dist/endpoint-response-schema.js.map +1 -0
  31. package/dist/endpoint-response.d.ts +9 -0
  32. package/dist/endpoint-response.d.ts.map +1 -0
  33. package/dist/endpoint-response.js +51 -0
  34. package/dist/endpoint-response.js.map +1 -0
  35. package/dist/endpoint-side-panel.d.ts +9 -0
  36. package/dist/endpoint-side-panel.d.ts.map +1 -0
  37. package/dist/endpoint-side-panel.js +26 -0
  38. package/dist/endpoint-side-panel.js.map +1 -0
  39. package/dist/endpoints-page.d.ts +2 -0
  40. package/dist/endpoints-page.d.ts.map +1 -0
  41. package/dist/endpoints-page.js +15 -0
  42. package/dist/endpoints-page.js.map +1 -0
  43. package/dist/hooks/use-get-endpoints.d.ts +3 -0
  44. package/dist/hooks/use-get-endpoints.d.ts.map +1 -0
  45. package/dist/hooks/use-get-endpoints.js +9 -0
  46. package/dist/hooks/use-get-endpoints.js.map +1 -0
  47. package/dist/hooks/use-global-store.d.ts +27 -0
  48. package/dist/hooks/use-global-store.d.ts.map +1 -0
  49. package/dist/hooks/use-global-store.js +21 -0
  50. package/dist/hooks/use-global-store.js.map +1 -0
  51. package/dist/hooks/use-json-schema-to-json.d.ts +5 -0
  52. package/dist/hooks/use-json-schema-to-json.d.ts.map +1 -0
  53. package/dist/hooks/use-json-schema-to-json.js +12 -0
  54. package/dist/hooks/use-json-schema-to-json.js.map +1 -0
  55. package/dist/hooks/use-path-params.d.ts +2 -0
  56. package/dist/hooks/use-path-params.d.ts.map +1 -0
  57. package/dist/hooks/use-path-params.js +5 -0
  58. package/dist/hooks/use-path-params.js.map +1 -0
  59. package/dist/hooks/use-state-stream.d.ts +8 -0
  60. package/dist/hooks/use-state-stream.d.ts.map +1 -0
  61. package/dist/hooks/use-state-stream.js +12 -0
  62. package/dist/hooks/use-state-stream.js.map +1 -0
  63. package/dist/hooks/utils.d.ts +2 -0
  64. package/dist/hooks/utils.d.ts.map +1 -0
  65. package/dist/hooks/utils.js +30 -0
  66. package/dist/hooks/utils.js.map +1 -0
  67. package/dist/index.d.ts +2 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +2 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/json-editor.d.ts +13 -0
  72. package/dist/json-editor.d.ts.map +1 -0
  73. package/dist/json-editor.js +36 -0
  74. package/dist/json-editor.js.map +1 -0
  75. package/dist/response-body.d.ts +8 -0
  76. package/dist/response-body.d.ts.map +1 -0
  77. package/dist/response-body.js +7 -0
  78. package/dist/response-body.js.map +1 -0
  79. package/dist/stores/use-global-store.d.ts +27 -0
  80. package/dist/stores/use-global-store.d.ts.map +1 -0
  81. package/dist/stores/use-global-store.js +21 -0
  82. package/dist/stores/use-global-store.js.map +1 -0
  83. package/dist/stores/use-theme-store.d.ts +19 -0
  84. package/dist/stores/use-theme-store.d.ts.map +1 -0
  85. package/dist/stores/use-theme-store.js +27 -0
  86. package/dist/stores/use-theme-store.js.map +1 -0
  87. package/dist/styles.css +448 -0
  88. package/dist/types/endpoint.d.ts +15 -0
  89. package/dist/types/endpoint.d.ts.map +1 -0
  90. package/dist/types/endpoint.js +2 -0
  91. package/dist/types/endpoint.js.map +1 -0
  92. package/package.json +45 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Motia
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # @motiadev/plugin-endpoint
2
+
3
+ This package provides React components for the Motia workbench endpoint functionality.
4
+
5
+ ## TailwindCSS Compilation
6
+
7
+ This package now includes TailwindCSS compilation to ensure all Tailwind classes used in the components are properly compiled and available.
8
+
9
+ ### Build Process
10
+
11
+ The build process includes two steps:
12
+ 1. **CSS Compilation**: Compiles `src/styles.css` using PostCSS and TailwindCSS
13
+ 2. **TypeScript Compilation**: Compiles TypeScript files to JavaScript
14
+
15
+ ### Usage
16
+
17
+ To use the compiled styles in consuming packages, import the CSS file:
18
+
19
+ ```css
20
+ @import "@motiadev/plugin-endpoint/styles.css";
21
+ ```
22
+
23
+ ### Development
24
+
25
+ - `pnpm run build` - Build both CSS and TypeScript
26
+ - `pnpm run dev` - Watch mode for both CSS and TypeScript
27
+ - `pnpm run build:css` - Build only CSS
28
+ - `pnpm run dev:css` - Watch mode for CSS only
29
+
30
+ ### Configuration Files
31
+
32
+ - `tailwind.config.js` - TailwindCSS configuration
33
+ - `postcss.config.js` - PostCSS configuration with TailwindCSS plugin
34
+ - `src/styles.css` - Main CSS entry point with Tailwind imports
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "POST" | "GET" | "DELETE" | "PUT" | "PATCH" | "HEAD" | "OPTIONS" | null | undefined;
5
+ defaultVariants?: "variant" | null | undefined;
6
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
+ interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
8
+ }
9
+ export declare function EndpointBadge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=endpoint-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-badge.d.ts","sourceRoot":"","sources":["../src/endpoint-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,QAAA,MAAM,aAAa;;;mFAejB,CAAA;AAEF,UAAU,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAExG,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAEzE"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from 'class-variance-authority';
3
+ import { cn } from '@motiadev/ui';
4
+ const badgeVariants = cva('rounded-lg px-2 py-1 text-sm font-mono font-bold transition-colors', {
5
+ variants: {
6
+ variant: {
7
+ POST: 'bg-[#258DC3]/15 text-[#258DC3]',
8
+ GET: 'bg-[#709A2D]/15 text-[#709A2D]',
9
+ DELETE: 'bg-[#DE2134]/15 text-[#DE2134]',
10
+ PUT: 'bg-yellow-500/50 text-yellow-100', // TODO color
11
+ PATCH: 'bg-yellow-500/50 text-yellow-100', // TODO color
12
+ HEAD: 'bg-blue-500/50 text-blue-100', // TODO color
13
+ OPTIONS: 'bg-purple-500/50 text-purple-100', // TODO color
14
+ },
15
+ defaultVariants: {
16
+ variant: 'bg-blue-500/50 text-blue-100',
17
+ },
18
+ },
19
+ });
20
+ export function EndpointBadge({ className, variant, ...props }) {
21
+ return _jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
22
+ }
23
+ //# sourceMappingURL=endpoint-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-badge.js","sourceRoot":"","sources":["../src/endpoint-badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,aAAa,GAAG,GAAG,CAAC,oEAAoE,EAAE;IAC9F,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,gCAAgC;YACtC,GAAG,EAAE,gCAAgC;YACrC,MAAM,EAAE,gCAAgC;YACxC,GAAG,EAAE,kCAAkC,EAAE,aAAa;YACtD,KAAK,EAAE,kCAAkC,EAAE,aAAa;YACxD,IAAI,EAAE,8BAA8B,EAAE,aAAa;YACnD,OAAO,EAAE,kCAAkC,EAAE,aAAa;SAC3D;QACD,eAAe,EAAE;YACf,OAAO,EAAE,8BAA8B;SACxC;KACF;CACF,CAAC,CAAA;AAIF,MAAM,UAAU,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAc;IACxE,OAAO,cAAK,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAA;AACjF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ApiEndpoint } from './types/endpoint';
2
+ import { FC } from 'react';
3
+ import 'react18-json-view/src/dark.css';
4
+ import 'react18-json-view/src/style.css';
5
+ type Props = {
6
+ endpoint: ApiEndpoint;
7
+ value: string;
8
+ onChange?: (body: string) => void;
9
+ onValidate?: (isValid: boolean) => void;
10
+ panelName: string;
11
+ };
12
+ export declare const EndpointBodyPanel: FC<Props>;
13
+ export {};
14
+ //# sourceMappingURL=endpoint-body-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-body-panel.d.ts","sourceRoot":"","sources":["../src/endpoint-body-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAG1B,OAAO,gCAAgC,CAAA;AACvC,OAAO,iCAAiC,CAAA;AAExC,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,WAAW,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAyBvC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Panel } from '@motiadev/ui';
3
+ import { JsonEditor } from './json-editor';
4
+ import ReactJson from 'react18-json-view';
5
+ import 'react18-json-view/src/dark.css';
6
+ import 'react18-json-view/src/style.css';
7
+ export const EndpointBodyPanel = ({ endpoint, onChange, onValidate, panelName, value }) => {
8
+ const shouldHaveBody = ['post', 'put', 'patch'].includes(endpoint.method.toLowerCase());
9
+ const handleBodyChange = (body) => {
10
+ onChange?.(body);
11
+ };
12
+ if (!shouldHaveBody) {
13
+ return null;
14
+ }
15
+ return (_jsx(Panel, { title: "Body", size: "sm", contentClassName: "p-0", "data-testid": `endpoint-body-panel__${panelName}`, children: onChange ? (_jsx(JsonEditor, { value: value, schema: endpoint.bodySchema, onChange: handleBodyChange, onValidate: onValidate })) : (_jsx(ReactJson, { src: value ? JSON.parse(value) : {}, theme: "default", enableClipboard: false, style: { backgroundColor: 'transparent' } })) }));
16
+ };
17
+ //# sourceMappingURL=endpoint-body-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-body-panel.js","sourceRoot":"","sources":["../src/endpoint-body-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,gCAAgC,CAAA;AACvC,OAAO,iCAAiC,CAAA;AAUxC,MAAM,CAAC,MAAM,iBAAiB,GAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;IACnG,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAEvF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE;QACxC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,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,YAClG,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,GAAI,CAC9G,CAAC,CAAC,CAAC,CACF,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,CACH,GACK,CACT,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { ApiEndpoint } from './types/endpoint';
2
+ import { FC } from 'react';
3
+ type Props = {
4
+ endpoint: ApiEndpoint;
5
+ };
6
+ export declare const EndpointCall: FC<Props>;
7
+ export {};
8
+ //# sourceMappingURL=endpoint-call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-call.d.ts","sourceRoot":"","sources":["../src/endpoint-call.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAA;AAOxD,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAA;AAEtC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,KAAK,CAkFlC,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '@motiadev/ui';
3
+ import { Loader2, Play } from 'lucide-react';
4
+ import { useEffect, useMemo, useState } from 'react';
5
+ import { EndpointBodyPanel } from './endpoint-body-panel';
6
+ import { EndpointPathParamsPanel } from './endpoint-path-params-panel';
7
+ import { EndpointQueryParamsPanel } from './endpoint-query-params-panel';
8
+ import { EndpointResponse } from './endpoint-response';
9
+ import { useJsonSchemaToJson } from './hooks/use-json-schema-to-json';
10
+ export const EndpointCall = ({ endpoint }) => {
11
+ const shouldHaveBody = ['post', 'put', 'patch'].includes(endpoint.method.toLowerCase());
12
+ const [isRequestLoading, setIsRequestLoading] = useState(false);
13
+ const [responseCode, setResponseCode] = useState(undefined);
14
+ const [responseBody, setResponseBody] = useState(undefined);
15
+ const [executionTime, setExecutionTime] = useState(undefined);
16
+ const { body, setBody } = useJsonSchemaToJson(endpoint.bodySchema);
17
+ const [isBodyValid, setIsBodyValid] = useState(true);
18
+ const [pathParamsValues, setPathParamsValues] = useState({});
19
+ const [queryParamsValues, setQueryParamsValues] = useState({});
20
+ const isPlayEnabled = useMemo(() => {
21
+ if (shouldHaveBody && !isBodyValid)
22
+ return false;
23
+ return (Object.values(pathParamsValues).every((value) => value) &&
24
+ Object.values(queryParamsValues).every((value) => value));
25
+ }, [pathParamsValues, shouldHaveBody, isBodyValid, queryParamsValues]);
26
+ useEffect(() => {
27
+ if (endpoint.id) {
28
+ setResponseCode(undefined);
29
+ setResponseBody(undefined);
30
+ setExecutionTime(undefined);
31
+ setIsRequestLoading(false);
32
+ }
33
+ }, [endpoint.id]);
34
+ const handleRequest = async () => {
35
+ setIsRequestLoading(true);
36
+ const startTime = Date.now();
37
+ const path = new URL(window.location.origin +
38
+ Object.entries(pathParamsValues).reduce((acc, [param, value]) => {
39
+ return acc.replace(`:${param}`, value);
40
+ }, endpoint.path));
41
+ for (const [key, value] of Object.entries(queryParamsValues)) {
42
+ path.searchParams.set(key, value);
43
+ }
44
+ const response = await fetch(path.toString(), {
45
+ method: endpoint.method,
46
+ headers: { 'Content-Type': 'application/json' },
47
+ body: endpoint.method === 'GET' ? null : body,
48
+ });
49
+ const endTime = Date.now();
50
+ const executionTime = endTime - startTime;
51
+ const json = await response.json();
52
+ setResponseCode(response.status);
53
+ setResponseBody(json);
54
+ setExecutionTime(executionTime);
55
+ setIsRequestLoading(false);
56
+ };
57
+ return (_jsxs("div", { className: "space-y-3", children: [_jsx(EndpointPathParamsPanel, { endpoint: endpoint, onChange: setPathParamsValues }), _jsx(EndpointQueryParamsPanel, { endpoint: endpoint, onChange: setQueryParamsValues }), _jsx(EndpointBodyPanel, { endpoint: endpoint, value: body, onChange: setBody, onValidate: setIsBodyValid, panelName: "call" }), _jsxs(Button, { className: "w-fit", onClick: handleRequest, variant: "accent", "data-testid": "endpoint-play-button", disabled: isRequestLoading || !isPlayEnabled, children: [isRequestLoading ? _jsx(Loader2, { className: "animate-spin" }) : _jsx(Play, {}), " Play"] }), _jsx(EndpointResponse, { responseCode: responseCode, responseBody: responseBody, executionTime: executionTime })] }));
58
+ };
59
+ //# sourceMappingURL=endpoint-call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-call.js","sourceRoot":"","sources":["../src/endpoint-call.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { ApiEndpoint } from './types/endpoint';
3
+ type Props = {
4
+ endpoint: ApiEndpoint;
5
+ };
6
+ export declare const EndpointDescription: FC<Props>;
7
+ export {};
8
+ //# sourceMappingURL=endpoint-description.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-description.d.ts","sourceRoot":"","sources":["../src/endpoint-description.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAM9C,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAA;AAEtC,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,KAAK,CAgBzC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { EndpointResponseSchema } from './endpoint-response-schema';
3
+ import { EndpointPathParamsPanel } from './endpoint-path-params-panel';
4
+ import { EndpointQueryParamsPanel } from './endpoint-query-params-panel';
5
+ import { EndpointBodyPanel } from './endpoint-body-panel';
6
+ import { useJsonSchemaToJson } from './hooks/use-json-schema-to-json';
7
+ export const EndpointDescription = ({ endpoint }) => {
8
+ const { body } = useJsonSchemaToJson(endpoint.bodySchema);
9
+ return (_jsxs("div", { className: "space-y-3", 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]) => ({
10
+ responseCode: status,
11
+ bodySchema: schema,
12
+ })) })] }));
13
+ };
14
+ //# sourceMappingURL=endpoint-description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-description.js","sourceRoot":"","sources":["../src/endpoint-description.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAIrE,MAAM,CAAC,MAAM,mBAAmB,GAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7D,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAEzD,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,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,IACE,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { ApiEndpoint } from './types/endpoint';
2
+ import { FC } from 'react';
3
+ type Props = {
4
+ endpoint: ApiEndpoint;
5
+ onChange?: (pathParamsValues: Record<string, string>) => void;
6
+ };
7
+ export declare const EndpointPathParamsPanel: FC<Props>;
8
+ export {};
9
+ //# sourceMappingURL=endpoint-path-params-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-path-params-panel.d.ts","sourceRoot":"","sources":["../src/endpoint-path-params-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAA;AAG3D,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;CAAE,CAAA;AAErG,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,KAAK,CAwC7C,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Input, Panel } from '@motiadev/ui';
3
+ import { Fragment, useState } from 'react';
4
+ import { usePathParams } from './hooks/use-path-params';
5
+ export const EndpointPathParamsPanel = ({ endpoint, onChange }) => {
6
+ const pathParams = usePathParams(endpoint.path);
7
+ const [pathParamsValues, setPathParamsValues] = useState(pathParams?.reduce((acc, param) => ({ ...acc, [param]: '' }), {}));
8
+ const onPathParamChange = (param, value) => {
9
+ const newPathParamsValues = { ...pathParamsValues, [param]: value };
10
+ setPathParamsValues(newPathParamsValues);
11
+ onChange?.(newPathParamsValues);
12
+ };
13
+ if (!pathParams.length) {
14
+ return null;
15
+ }
16
+ 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) => (_jsxs(Fragment, { children: [_jsx("div", { className: "font-bold leading-[36px] flex text-xs", children: param }), _jsx("div", { className: "flex items-center text-xs", children: onChange && (_jsx(Input, { className: "w-full text-xs", placeholder: param, value: pathParamsValues[param], onChange: (e) => onPathParamChange(param, e.target.value) })) })] }, param))) }) }));
17
+ };
18
+ //# sourceMappingURL=endpoint-path-params-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-path-params-panel.js","sourceRoot":"","sources":["../src/endpoint-path-params-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAM,QAAQ,EAAE,QAAQ,EAAe,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAIvD,MAAM,CAAC,MAAM,uBAAuB,GAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3E,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,UAAU,EAAE,MAAM,CAChB,CAAC,GAA2B,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACzE,EAA4B,CAC7B,CACF,CAAA;IAED,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QACzD,MAAM,mBAAmB,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;QACnE,mBAAmB,CAAC,mBAAmB,CAAC,CAAA;QACxC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,CAAA;IACjC,CAAC,CAAA;IAED,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,MAAC,QAAQ,eACP,cAAK,SAAS,EAAC,uCAAuC,YAAE,KAAK,GAAO,EACpE,cAAK,SAAS,EAAC,2BAA2B,YACvC,QAAQ,IAAI,CACX,KAAC,KAAK,IACJ,SAAS,EAAC,gBAAgB,EAC1B,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC9B,QAAQ,EAAE,CAAC,CAAgC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GACxF,CACH,GACG,KAXO,KAAK,CAYT,CACZ,CAAC,GACE,GACA,CACT,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { ApiEndpoint } from './types/endpoint';
2
+ import { FC } from 'react';
3
+ type Props = {
4
+ endpoint: ApiEndpoint;
5
+ onChange?: (queryParamsValues: Record<string, string>) => void;
6
+ };
7
+ export declare const EndpointQueryParamsPanel: FC<Props>;
8
+ export {};
9
+ //# sourceMappingURL=endpoint-query-params-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-query-params-panel.d.ts","sourceRoot":"","sources":["../src/endpoint-query-params-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAA;AAE3D,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;CAAE,CAAA;AAEtG,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,KAAK,CAyC9C,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Input } from '@motiadev/ui';
3
+ import { Panel } from '@motiadev/ui';
4
+ import { Fragment, useState } from 'react';
5
+ export const EndpointQueryParamsPanel = ({ endpoint, onChange }) => {
6
+ const [queryParamsValues, setQueryParamsValues] = useState(endpoint.queryParams?.reduce((acc, param) => ({ ...acc, [param.name]: '' }), {}) ?? {});
7
+ const onQueryParamChange = (param, value) => {
8
+ const newQueryParamsValues = { ...queryParamsValues, [param]: value };
9
+ setQueryParamsValues(newQueryParamsValues);
10
+ onChange?.(newQueryParamsValues);
11
+ };
12
+ if (!endpoint.queryParams?.length) {
13
+ return null;
14
+ }
15
+ 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: onChange ? (_jsx(Input, { className: "text-xs", placeholder: param.description, value: queryParamsValues[param.name], onChange: (e) => onQueryParamChange(param.name, e.target.value) })) : (_jsx("span", { children: param.description })) })] }, param.name))) }) }));
16
+ };
17
+ //# sourceMappingURL=endpoint-query-params-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-query-params-panel.js","sourceRoot":"","sources":["../src/endpoint-query-params-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAM,QAAQ,EAAE,QAAQ,EAAe,MAAM,OAAO,CAAA;AAI3D,MAAM,CAAC,MAAM,wBAAwB,GAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5E,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAC1B,CAAC,GAA2B,EAAE,KAAuB,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EACxF,EAA4B,CAC7B,IAAI,EAAE,CACR,CAAA;IAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QAC1D,MAAM,oBAAoB,GAAG,EAAE,GAAG,iBAAiB,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;QACrE,oBAAoB,CAAC,oBAAoB,CAAC,CAAA;QAC1C,QAAQ,EAAE,CAAC,oBAAoB,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,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,YACxC,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,KAAK,IACJ,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,EACpC,QAAQ,EAAE,CAAC,CAAgC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAC9F,CACH,CAAC,CAAC,CAAC,CACF,yBAAO,KAAK,CAAC,WAAW,GAAQ,CACjC,GACG,KAbO,KAAK,CAAC,IAAI,CAcd,CACZ,CAAC,GACE,GACA,CACT,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ export type EndpointResponseItem = {
3
+ responseCode: string;
4
+ bodySchema: Record<string, Record<string, any>>;
5
+ };
6
+ type EndpointResponseProps = {
7
+ items: EndpointResponseItem[];
8
+ };
9
+ export declare const EndpointResponseSchema: FC<EndpointResponseProps>;
10
+ export {};
11
+ //# sourceMappingURL=endpoint-response-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-response-schema.d.ts","sourceRoot":"","sources":["../src/endpoint-response-schema.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAA;AAGnC,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAA;IAEpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;CAChD,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,oBAAoB,EAAE,CAAA;CAC9B,CAAA;AAqBD,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,qBAAqB,CA4B5D,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { convertJsonSchemaToJson } from './hooks/utils';
3
+ import { useThemeStore } from './stores/use-theme-store';
4
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@motiadev/ui';
5
+ import { useMemo } from 'react';
6
+ import ReactJson from 'react18-json-view';
7
+ const EndpointResponseSchemaItem = ({ responseCode, bodySchema }) => {
8
+ const theme = useThemeStore((store) => store.theme);
9
+ const schema = useMemo(() => convertJsonSchemaToJson(bodySchema), [bodySchema]);
10
+ return (_jsx(TabsContent, { value: responseCode, className: "border-t", children: _jsx("div", { className: "text-xs font-mono rounded-lg whitespace-pre-wrap", children: _jsx(ReactJson, { src: schema, dark: theme === 'dark', enableClipboard: false, style: { backgroundColor: 'transparent' } }) }) }, 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=endpoint-response-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-response-schema.js","sourceRoot":"","sources":["../src/endpoint-response-schema.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAYzC,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;IAEtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAE/E,OAAO,CACL,KAAC,WAAW,IAAC,KAAK,EAAE,YAAY,EAAqB,SAAS,EAAC,UAAU,YACvE,cAAK,SAAS,EAAC,kDAAkD,YAC/D,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,GACE,IAR+B,YAAY,CASrC,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"}
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ type EndpointResponseProps = {
3
+ responseCode: number | string | undefined;
4
+ responseBody: Record<string, any> | undefined;
5
+ executionTime?: number;
6
+ };
7
+ export declare const EndpointResponse: FC<EndpointResponseProps>;
8
+ export {};
9
+ //# sourceMappingURL=endpoint-response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-response.d.ts","sourceRoot":"","sources":["../src/endpoint-response.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAA;AAGnC,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAEzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAyBD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAoEtD,CAAA"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useStateStream } from './hooks/use-state-stream';
3
+ import { useThemeStore } from './stores/use-theme-store';
4
+ import { Panel } from '@motiadev/ui';
5
+ import { XCircle } from 'lucide-react';
6
+ import { useMemo } from 'react';
7
+ import ReactJson from 'react18-json-view';
8
+ const getStatusMessage = (status) => {
9
+ switch (status) {
10
+ case 200:
11
+ return 'OK';
12
+ case 201:
13
+ return 'Created';
14
+ case 204:
15
+ return 'No Content';
16
+ case 400:
17
+ return 'Bad Request';
18
+ case 401:
19
+ return 'Unauthorized';
20
+ case 403:
21
+ return 'Forbidden';
22
+ case 404:
23
+ return 'Not Found';
24
+ case 500:
25
+ return 'Internal Server Error';
26
+ default:
27
+ return 'Unknown Status';
28
+ }
29
+ };
30
+ export const EndpointResponse = ({ responseCode, executionTime, responseBody }) => {
31
+ const theme = useThemeStore((state) => state.theme);
32
+ const { data, isStreamed, originalData } = useStateStream(responseBody);
33
+ const statusMessage = useMemo(() => getStatusMessage(Number(responseCode)), [responseCode]);
34
+ const isError = Number(responseCode) >= 400;
35
+ if (!responseBody || !responseCode) {
36
+ return null;
37
+ }
38
+ return (_jsx(Panel, { "data-testid": 'endpoint-response-container', tabs: isStreamed
39
+ ? [
40
+ {
41
+ label: 'Streamed Response',
42
+ content: (_jsx(ReactJson, { src: data, dark: theme === 'dark', style: { backgroundColor: 'transparent' } })),
43
+ },
44
+ {
45
+ label: 'Original',
46
+ content: (_jsx(ReactJson, { src: originalData, dark: theme === 'dark', style: { backgroundColor: 'transparent' } })),
47
+ },
48
+ ]
49
+ : undefined, title: _jsxs("div", { className: "flex flex-row justify-between items-center flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [isError && _jsx(XCircle, { className: "text-red-500 w-4 h-4" }), _jsxs("span", { className: "font-bold text-xs", children: [responseCode, " - ", statusMessage] })] }), !!executionTime && (_jsxs("span", { className: "text-xs text-muted-foreground justify-self-end", children: ["Execution time: ", _jsxs("span", { className: "font-bold", children: [executionTime, "ms"] })] }))] }), subtitle: isStreamed && (_jsxs("span", { className: "col-span-2 flex flex-row items-center font-medium text-card-foreground text-xs mt-2", children: [_jsxs("span", { className: "inline-block w-2 h-2 rounded-full bg-green-500 mr-2 relative", children: [_jsx("span", { className: "absolute inset-0 rounded-full bg-green-500 animate-[ping_1.5s_ease-in-out_infinite]" }), _jsx("span", { className: "absolute inset-0 rounded-full bg-green-500" })] }), "Object is being streamed, this is not the actual response from the API Endpoint"] })), children: !isStreamed && (_jsx(ReactJson, { src: data, dark: theme === 'dark', style: { backgroundColor: 'transparent' } })) }));
50
+ };
51
+ //# sourceMappingURL=endpoint-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-response.js","sourceRoot":"","sources":["../src/endpoint-response.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ApiEndpoint } from './types/endpoint';
2
+ import { FC } from 'react';
3
+ type Props = {
4
+ endpoint: ApiEndpoint;
5
+ onClose: () => void;
6
+ };
7
+ export declare const EndpointSidePanel: FC<Props>;
8
+ export {};
9
+ //# sourceMappingURL=endpoint-side-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-side-panel.d.ts","sourceRoot":"","sources":["../src/endpoint-side-panel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAK1B,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAE3D,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAgCvC,CAAA"}
@@ -0,0 +1,26 @@
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 { EndpointBadge } from './endpoint-badge';
5
+ import { EndpointCall } from './endpoint-call';
6
+ import { EndpointDescription } from './endpoint-description';
7
+ export const EndpointSidePanel = ({ endpoint, onClose }) => {
8
+ return (_jsx(Sidebar, { initialWidth: 600, subtitle: endpoint.description, title: _jsxs("div", { className: "flex flex-row gap-2 items-center", children: [_jsx(EndpointBadge, { variant: endpoint.method, children: endpoint.method.toUpperCase() }), _jsx("span", { className: "text-md font-bold", children: endpoint.path })] }), onClose: onClose, tabs: [
9
+ {
10
+ label: 'Details',
11
+ content: _jsx(EndpointDescription, { endpoint: endpoint }),
12
+ 'data-testid': 'endpoint-details-tab',
13
+ },
14
+ {
15
+ label: 'Call',
16
+ content: _jsx(EndpointCall, { endpoint: endpoint }),
17
+ 'data-testid': 'endpoint-call-tab',
18
+ },
19
+ ], actions: [
20
+ {
21
+ icon: _jsx(X, { className: "cursor-pointer w-4 h-4", onClick: onClose }),
22
+ onClick: onClose,
23
+ },
24
+ ] }));
25
+ };
26
+ //# sourceMappingURL=endpoint-side-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-side-panel.js","sourceRoot":"","sources":["../src/endpoint-side-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAI5D,MAAM,CAAC,MAAM,iBAAiB,GAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;IACpE,OAAO,CACL,KAAC,OAAO,IACN,YAAY,EAAE,GAAG,EACjB,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAC9B,KAAK,EACH,eAAK,SAAS,EAAC,kCAAkC,aAC/C,KAAC,aAAa,IAAC,OAAO,EAAE,QAAQ,CAAC,MAAe,YAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAiB,EACjG,eAAM,SAAS,EAAC,mBAAmB,YAAE,QAAQ,CAAC,IAAI,GAAQ,IACtD,EAER,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,KAAC,mBAAmB,IAAC,QAAQ,EAAE,QAAQ,GAAI;gBACpD,aAAa,EAAE,sBAAsB;aACtC;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,KAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,GAAI;gBAC7C,aAAa,EAAE,mBAAmB;aACnC;SACF,EACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,KAAC,CAAC,IAAC,SAAS,EAAC,wBAAwB,EAAC,OAAO,EAAE,OAAO,GAAI;gBAChE,OAAO,EAAE,OAAO;aACjB;SACF,GACD,CACH,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const EndpointsPage: () => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=endpoints-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints-page.d.ts","sourceRoot":"","sources":["../src/endpoints-page.tsx"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,+CAiCzB,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { EndpointBadge } from './endpoint-badge';
4
+ import { EndpointSidePanel } from './endpoint-side-panel';
5
+ import { useGetEndpoints } from './hooks/use-get-endpoints';
6
+ import { cn } from '@motiadev/ui';
7
+ import { useGlobalStore } from './hooks/use-global-store';
8
+ export const EndpointsPage = () => {
9
+ const endpoints = useGetEndpoints();
10
+ const selectedEndpointId = useGlobalStore((state) => state.selectedEndpointId);
11
+ const selectEndpointId = useGlobalStore((state) => state.selectEndpointId);
12
+ const selectedEndpoint = useMemo(() => selectedEndpointId && endpoints.find((endpoint) => endpoint.id === selectedEndpointId), [endpoints, selectedEndpointId]);
13
+ return (_jsxs("div", { className: "flex flex-row", children: [_jsx("div", { className: "flex flex-col flex-1 overflow-y-auto", children: endpoints.map((endpoint) => (_jsx("div", { "data-testid": `endpoint-${endpoint.method}-${endpoint.path}`, className: cn(selectedEndpoint === endpoint && 'bg-muted-foreground/10', 'cursor-pointer select-none'), onClick: () => selectEndpointId(endpoint.id), children: _jsxs("div", { className: "flex flex-row gap-2 items-center hover:bg-muted-foreground/10 p-2", children: [_jsx(EndpointBadge, { variant: endpoint.method, children: endpoint.method.toUpperCase() }), _jsx("span", { className: "text-md font-mono font-bold whitespace-nowrap", children: endpoint.path }), _jsx("span", { className: "text-md text-muted-foreground truncate", children: endpoint.description })] }) }, `${endpoint.method} ${endpoint.path}`))) }), selectedEndpoint && (_jsx(EndpointSidePanel, { endpoint: selectedEndpoint, onClose: () => selectEndpointId(undefined) }))] }));
14
+ };
15
+ //# sourceMappingURL=endpoints-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints-page.js","sourceRoot":"","sources":["../src/endpoints-page.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAA;IACnC,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAC9E,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAC1E,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,kBAAkB,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,QAAqB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,kBAAkB,CAAC,EACzG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAChC,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC5B,cAAK,SAAS,EAAC,sCAAsC,YAClD,SAAS,CAAC,GAAG,CAAC,CAAC,QAAqB,EAAE,EAAE,CAAC,CACxC,6BACe,YAAY,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAE3D,SAAS,EAAE,EAAE,CAAC,gBAAgB,KAAK,QAAQ,IAAI,wBAAwB,EAAE,4BAA4B,CAAC,EACtG,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,YAE5C,eAAK,SAAS,EAAC,mEAAmE,aAChF,KAAC,aAAa,IAAC,OAAO,EAAE,QAAQ,CAAC,MAAe,YAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAiB,EACjG,eAAM,SAAS,EAAC,+CAA+C,YAAE,QAAQ,CAAC,IAAI,GAAQ,EACtF,eAAM,SAAS,EAAC,wCAAwC,YAAE,QAAQ,CAAC,WAAW,GAAQ,IAClF,IARD,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAStC,CACP,CAAC,GACE,EAEL,gBAAgB,IAAI,CACnB,KAAC,iBAAiB,IAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAI,CAC9F,IACG,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { ApiEndpoint } from '../types/endpoint';
2
+ export declare const useGetEndpoints: () => ApiEndpoint[];
3
+ //# sourceMappingURL=use-get-endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-get-endpoints.d.ts","sourceRoot":"","sources":["../../src/hooks/use-get-endpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,eAAO,MAAM,eAAe,qBAO3B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { useStreamGroup } from '@motiadev/stream-client-react';
2
+ export const useGetEndpoints = () => {
3
+ const { data: endpoints } = useStreamGroup({
4
+ streamName: '__motia.api-endpoints',
5
+ groupId: 'default',
6
+ });
7
+ return endpoints;
8
+ };
9
+ //# sourceMappingURL=use-get-endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-get-endpoints.js","sourceRoot":"","sources":["../../src/hooks/use-get-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAG9D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,cAAc,CAAc;QACtD,UAAU,EAAE,uBAAuB;QACnC,OAAO,EAAE,SAAS;KACnB,CAAC,CAAA;IAEF,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ type UseGlobalStore = {
2
+ selectedEndpointId?: string;
3
+ selectEndpointId: (endpointId?: string) => void;
4
+ selectedTraceGroupId?: string;
5
+ selectTraceGroupId: (traceGroupId?: string) => void;
6
+ selectedTraceId?: string;
7
+ selectTraceId: (traceId?: string) => void;
8
+ selectedStateId?: string;
9
+ selectStateId: (stateId?: string) => void;
10
+ selectedLogId?: string;
11
+ selectLogId: (logId?: string) => void;
12
+ };
13
+ export declare const useGlobalStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<UseGlobalStore>, "setState" | "persist"> & {
14
+ setState(partial: UseGlobalStore | Partial<UseGlobalStore> | ((state: UseGlobalStore) => UseGlobalStore | Partial<UseGlobalStore>), replace?: false | undefined): unknown;
15
+ setState(state: UseGlobalStore | ((state: UseGlobalStore) => UseGlobalStore), replace: true): unknown;
16
+ persist: {
17
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<UseGlobalStore, UseGlobalStore, unknown>>) => void;
18
+ clearStorage: () => void;
19
+ rehydrate: () => Promise<void> | void;
20
+ hasHydrated: () => boolean;
21
+ onHydrate: (fn: (state: UseGlobalStore) => void) => () => void;
22
+ onFinishHydration: (fn: (state: UseGlobalStore) => void) => () => void;
23
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<UseGlobalStore, UseGlobalStore, unknown>>;
24
+ };
25
+ }>;
26
+ export {};
27
+ //# sourceMappingURL=use-global-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-global-store.d.ts","sourceRoot":"","sources":["../../src/hooks/use-global-store.ts"],"names":[],"mappings":"AAGA,KAAK,cAAc,GAAG;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC,CAAA;AAMD,eAAO,MAAM,cAAc;;;;;;;;;;;;EAmB1B,CAAA"}