@nice2dev/ui-api 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -0
- package/dist/NiceAPIDesigner.d.ts +8 -0
- package/dist/NiceAPITester.d.ts +8 -0
- package/dist/NiceIntegrationBuilder.d.ts +8 -0
- package/dist/index.cjs +4 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.mjs +1820 -0
- package/dist/style.css +1 -0
- package/dist/types.d.ts +403 -0
- package/package.json +63 -0
package/README.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# @nice2dev/ui-api
|
|
2
|
+
|
|
3
|
+
Nice2Dev API & Integration Platform — OpenAPI editor, API testing, integration builder for React applications.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **NiceAPIDesigner** - Visual OpenAPI/Swagger editor
|
|
8
|
+
- OpenAPI 3.0 schema editing
|
|
9
|
+
- Endpoint definition
|
|
10
|
+
- Schema editor
|
|
11
|
+
- Mock server configuration
|
|
12
|
+
- Documentation generation
|
|
13
|
+
|
|
14
|
+
- **NiceAPITester** - API testing studio (Postman-like)
|
|
15
|
+
- Request builder
|
|
16
|
+
- Environment management
|
|
17
|
+
- Collection runner
|
|
18
|
+
- Test scripts
|
|
19
|
+
- Response validation
|
|
20
|
+
|
|
21
|
+
- **NiceIntegrationBuilder** - Visual flow builder
|
|
22
|
+
- Drag-and-drop flow design
|
|
23
|
+
- Connector library
|
|
24
|
+
- Transformation mapping
|
|
25
|
+
- Error handling
|
|
26
|
+
- Scheduling
|
|
27
|
+
|
|
28
|
+
## Installation
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install @nice2dev/ui-api
|
|
32
|
+
# or
|
|
33
|
+
pnpm add @nice2dev/ui-api
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
### API Designer
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
import { NiceAPIDesigner } from '@nice2dev/ui-api';
|
|
42
|
+
import '@nice2dev/ui-api/style.css';
|
|
43
|
+
|
|
44
|
+
function App() {
|
|
45
|
+
return (
|
|
46
|
+
<NiceAPIDesigner
|
|
47
|
+
onChange={(schema) => console.log('Schema updated:', schema)}
|
|
48
|
+
onSave={(schema) => saveToBackend(schema)}
|
|
49
|
+
/>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### API Tester
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
import { NiceAPITester } from '@nice2dev/ui-api';
|
|
58
|
+
import '@nice2dev/ui-api/style.css';
|
|
59
|
+
|
|
60
|
+
function App() {
|
|
61
|
+
return (
|
|
62
|
+
<NiceAPITester
|
|
63
|
+
environments={[
|
|
64
|
+
{ id: '1', name: 'Development', variables: { baseUrl: { value: 'http://localhost:3000' } }, isActive: true },
|
|
65
|
+
{ id: '2', name: 'Production', variables: { baseUrl: { value: 'https://api.example.com' } }, isActive: false },
|
|
66
|
+
]}
|
|
67
|
+
/>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Integration Builder
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
import { NiceIntegrationBuilder } from '@nice2dev/ui-api';
|
|
76
|
+
import '@nice2dev/ui-api/style.css';
|
|
77
|
+
|
|
78
|
+
function App() {
|
|
79
|
+
return (
|
|
80
|
+
<NiceIntegrationBuilder
|
|
81
|
+
connectors={[
|
|
82
|
+
{ id: '1', name: 'Slack', type: 'communication', authType: 'oauth2', operations: [] },
|
|
83
|
+
{ id: '2', name: 'Salesforce', type: 'crm', authType: 'oauth2', operations: [] },
|
|
84
|
+
]}
|
|
85
|
+
onSave={(flow) => saveFlow(flow)}
|
|
86
|
+
onRun={(flow) => executeFlow(flow)}
|
|
87
|
+
/>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## License
|
|
93
|
+
|
|
94
|
+
See LICENSE file.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { NiceAPIDesignerProps } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* NiceAPIDesigner - Visual OpenAPI Editor
|
|
6
|
+
*/
|
|
7
|
+
export declare function NiceAPIDesigner({ schema: initialSchema, onChange, onSave, readOnly, className, }: NiceAPIDesignerProps): React.ReactElement;
|
|
8
|
+
export default NiceAPIDesigner;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { NiceAPITesterProps } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* NiceAPITester - API Testing Studio
|
|
6
|
+
*/
|
|
7
|
+
export declare function NiceAPITester({ collections: initialCollections, environments: initialEnvironments, onRequest, onSaveCollection, className, }: NiceAPITesterProps): React.ReactElement;
|
|
8
|
+
export default NiceAPITester;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { NiceIntegrationBuilderProps } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* NiceIntegrationBuilder - Visual Flow Builder
|
|
6
|
+
*/
|
|
7
|
+
export declare function NiceIntegrationBuilder({ flow: initialFlow, connectors, onChange, onSave, onRun, className, }: NiceIntegrationBuilderProps): React.ReactElement;
|
|
8
|
+
export default NiceIntegrationBuilder;
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("react"),ie={openapi:"3.0.3",info:{title:"New API",version:"1.0.0",description:"API description"},paths:{},components:{schemas:{},securitySchemes:{}},tags:[]},W=["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"];function Q(s){var r,i;const t=[];return s.openapi||t.push({path:"openapi",message:"OpenAPI version is required",severity:"error"}),(r=s.info)!=null&&r.title||t.push({path:"info.title",message:"API title is required",severity:"error"}),(i=s.info)!=null&&i.version||t.push({path:"info.version",message:"API version is required",severity:"error"}),Object.entries(s.paths||{}).forEach(([n,o])=>{n.startsWith("/")||t.push({path:`paths.${n}`,message:"Path must start with /",severity:"error"}),W.forEach(l=>{const j=o[l.toLowerCase()];j&&!j.responses&&t.push({path:`paths.${n}.${l.toLowerCase()}.responses`,message:"Responses are required",severity:"error"})})}),t}function te({schema:s,onChange:t,onSave:r,readOnly:i=!1,className:n=""}){var D,I;const[o,l]=d.useState(s||ie),[j,u]=d.useState(null),[p,C]=d.useState(null),[h,x]=d.useState("info"),[w,y]=d.useState([]),N=d.useCallback(g=>{l(b=>{const f=g(b);return t==null||t(f),y(Q(f)),f})},[t]),T=d.useCallback(()=>{const g="/new-endpoint";N(b=>({...b,paths:{...b.paths,[g]:{get:{summary:"New endpoint",responses:{200:{description:"Success"}}}}}})),u(g),C("get")},[N]),P=d.useCallback(g=>{N(b=>{const{[g]:f,...O}=b.paths;return{...b,paths:O}}),u(null),C(null)},[N]),K=d.useCallback(()=>{const g="NewSchema";N(b=>{var f;return{...b,components:{...b.components,schemas:{...(f=b.components)==null?void 0:f.schemas,[g]:{type:"object",properties:{}}}}}})},[N]),A=d.useCallback(()=>{const g=Q(o);y(g),g.filter(b=>b.severity==="error").length===0&&(r==null||r(o))},[o,r]),$=Object.entries(o.paths).flatMap(([g,b])=>W.filter(f=>b[f.toLowerCase()]).map(f=>({path:g,method:f,operation:b[f.toLowerCase()]})));return e.jsxs("div",{className:`nice-api-designer ${n}`,children:[e.jsxs("div",{className:"nice-api-designer__toolbar",children:[e.jsx("div",{className:"nice-api-designer__tabs",children:["info","paths","schemas","security","preview"].map(g=>e.jsx("button",{className:`nice-api-designer__tab ${h===g?"nice-api-designer__tab--active":""}`,onClick:()=>x(g),children:g.charAt(0).toUpperCase()+g.slice(1)},g))}),!i&&e.jsx("button",{className:"nice-api-designer__save-btn",onClick:A,children:"Save"})]}),w.length>0&&e.jsx("div",{className:"nice-api-designer__errors",children:w.map((g,b)=>e.jsxs("div",{className:`nice-api-designer__error nice-api-designer__error--${g.severity}`,children:[e.jsxs("strong",{children:[g.path,":"]})," ",g.message]},b))}),e.jsxs("div",{className:"nice-api-designer__content",children:[h==="info"&&e.jsx(ne,{schema:o,onChange:N,readOnly:i}),h==="paths"&&e.jsx(ae,{endpoints:$,schema:o,selectedPath:j,selectedMethod:p,onSelectEndpoint:(g,b)=>{u(g),C(b)},onAdd:T,onDelete:P,onChange:N,readOnly:i}),h==="schemas"&&e.jsx(re,{schemas:((D=o.components)==null?void 0:D.schemas)||{},onAdd:K,onChange:g=>N(b=>({...b,components:{...b.components,schemas:g}})),readOnly:i}),h==="security"&&e.jsx(ce,{schemes:((I=o.components)==null?void 0:I.securitySchemes)||{},onChange:g=>N(b=>({...b,components:{...b.components,securitySchemes:g}})),readOnly:i}),h==="preview"&&e.jsx(le,{schema:o})]})]})}function ne({schema:s,onChange:t,readOnly:r}){return e.jsxs("div",{className:"nice-api-designer__info-editor",children:[e.jsx("h3",{children:"API Information"}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Title"}),e.jsx("input",{type:"text",value:s.info.title,onChange:i=>t(n=>({...n,info:{...n.info,title:i.target.value}})),disabled:r})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Version"}),e.jsx("input",{type:"text",value:s.info.version,onChange:i=>t(n=>({...n,info:{...n.info,version:i.target.value}})),disabled:r})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:s.info.description||"",onChange:i=>t(n=>({...n,info:{...n.info,description:i.target.value}})),disabled:r,rows:5})]}),e.jsx("h4",{children:"Servers"}),(s.servers||[]).map((i,n)=>e.jsxs("div",{className:"nice-api-designer__server",children:[e.jsx("input",{type:"text",value:i.url,placeholder:"Server URL",onChange:o=>t(l=>{var j;return{...l,servers:(j=l.servers)==null?void 0:j.map((u,p)=>p===n?{...u,url:o.target.value}:u)}}),disabled:r}),e.jsx("input",{type:"text",value:i.description||"",placeholder:"Description",onChange:o=>t(l=>{var j;return{...l,servers:(j=l.servers)==null?void 0:j.map((u,p)=>p===n?{...u,description:o.target.value}:u)}}),disabled:r})]},n)),!r&&e.jsx("button",{onClick:()=>t(i=>({...i,servers:[...i.servers||[],{url:"https://api.example.com"}]})),children:"Add Server"})]})}function ae({endpoints:s,schema:t,selectedPath:r,selectedMethod:i,onSelectEndpoint:n,onAdd:o,onDelete:l,onChange:j,readOnly:u}){var C;const p=r&&i?(C=t.paths[r])==null?void 0:C[i]:null;return e.jsxs("div",{className:"nice-api-designer__paths-editor",children:[e.jsxs("div",{className:"nice-api-designer__endpoints-list",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Endpoints"}),!u&&e.jsx("button",{onClick:o,children:"+ Add"})]}),s.map(({path:h,method:x})=>e.jsxs("div",{className:`nice-api-designer__endpoint ${r===h&&i===x.toLowerCase()?"nice-api-designer__endpoint--selected":""}`,onClick:()=>n(h,x.toLowerCase()),children:[e.jsx("span",{className:`nice-api-designer__method nice-api-designer__method--${x.toLowerCase()}`,children:x}),e.jsx("span",{className:"nice-api-designer__path",children:h})]},`${x}-${h}`))]}),p&&r&&i&&e.jsxs("div",{className:"nice-api-designer__operation-editor",children:[e.jsxs("h3",{children:[i.toUpperCase()," ",r]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Summary"}),e.jsx("input",{type:"text",value:p.summary||"",onChange:h=>j(x=>({...x,paths:{...x.paths,[r]:{...x.paths[r],[i]:{...p,summary:h.target.value}}}})),disabled:u})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:p.description||"",onChange:h=>j(x=>({...x,paths:{...x.paths,[r]:{...x.paths[r],[i]:{...p,description:h.target.value}}}})),disabled:u,rows:3})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Operation ID"}),e.jsx("input",{type:"text",value:p.operationId||"",onChange:h=>j(x=>({...x,paths:{...x.paths,[r]:{...x.paths[r],[i]:{...p,operationId:h.target.value}}}})),disabled:u})]}),!u&&e.jsx("button",{className:"nice-api-designer__delete-btn",onClick:()=>l(r),children:"Delete Endpoint"})]})]})}function re({schemas:s,onAdd:t,onChange:r,readOnly:i}){const[n,o]=d.useState(null);return e.jsxs("div",{className:"nice-api-designer__schemas-editor",children:[e.jsxs("div",{className:"nice-api-designer__schemas-list",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Schemas"}),!i&&e.jsx("button",{onClick:t,children:"+ Add"})]}),Object.keys(s).map(l=>e.jsx("div",{className:`nice-api-designer__schema-item ${n===l?"nice-api-designer__schema-item--selected":""}`,onClick:()=>o(l),children:l},l))]}),n&&s[n]&&e.jsxs("div",{className:"nice-api-designer__schema-editor",children:[e.jsx("h3",{children:n}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Type"}),e.jsxs("select",{value:s[n].type||"object",onChange:l=>r({...s,[n]:{...s[n],type:l.target.value}}),disabled:i,children:[e.jsx("option",{value:"object",children:"object"}),e.jsx("option",{value:"array",children:"array"}),e.jsx("option",{value:"string",children:"string"}),e.jsx("option",{value:"number",children:"number"}),e.jsx("option",{value:"integer",children:"integer"}),e.jsx("option",{value:"boolean",children:"boolean"})]})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:s[n].description||"",onChange:l=>r({...s,[n]:{...s[n],description:l.target.value}}),disabled:i,rows:3})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"JSON Schema"}),e.jsx("textarea",{value:JSON.stringify(s[n],null,2),onChange:l=>{try{const j=JSON.parse(l.target.value);r({...s,[n]:j})}catch{}},disabled:i,rows:10,className:"nice-api-designer__code"})]})]})]})}function ce({schemes:s,onChange:t,readOnly:r}){const i=()=>{t({...s,newScheme:{type:"apiKey",name:"X-API-Key",in:"header"}})};return e.jsxs("div",{className:"nice-api-designer__security-editor",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Security Schemes"}),!r&&e.jsx("button",{onClick:i,children:"+ Add"})]}),Object.entries(s).map(([n,o])=>e.jsxs("div",{className:"nice-api-designer__security-item",children:[e.jsx("h4",{children:n}),e.jsx("pre",{children:JSON.stringify(o,null,2)})]},n))]})}function le({schema:s}){return e.jsxs("div",{className:"nice-api-designer__json-preview",children:[e.jsx("h3",{children:"OpenAPI Specification"}),e.jsx("pre",{className:"nice-api-designer__code",children:JSON.stringify(s,null,2)})]})}const oe=["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"],de={id:"",name:"New Request",method:"GET",url:"",headers:{},queryParams:{}};function G(s,t){return s.replace(/\{\{(\w+)\}\}/g,(r,i)=>t[i]||`{{${i}}}`)}function pe(s,t){const r=Object.entries(t).filter(([,i])=>i).map(([i,n])=>`${encodeURIComponent(i)}=${encodeURIComponent(n)}`).join("&");return r?`${s}?${r}`:s}function ue({collections:s=[],environments:t=[],onRequest:r,onSaveCollection:i,className:n=""}){const[o,l]=d.useState(s),[j,u]=d.useState(t),[p,C]=d.useState(t.find(a=>a.isActive)||null),[h,x]=d.useState({...de,id:crypto.randomUUID()}),[w,y]=d.useState(null),[N,T]=d.useState(!1),[P,K]=d.useState("none"),[A,$]=d.useState("params"),[D,I]=d.useState("body"),[g,b]=d.useState(""),[f,O]=d.useState(""),[q,U]=d.useState([]),[F,B]=d.useState([]),R=d.useRef(null),M=d.useCallback(async()=>{var L;if(!h.url)return;T(!0),y(null),U([]);const a=Object.fromEntries(Object.entries((p==null?void 0:p.variables)||{}).map(([S,E])=>[S,E.value])),_={...h,url:G(h.url,a),headers:Object.fromEntries(Object.entries(h.headers).map(([S,E])=>[S,G(E,a)])),queryParams:Object.fromEntries(Object.entries(h.queryParams).map(([S,E])=>[S,G(E,a)]))},k=performance.now();try{let S;if(r)S=await r(_);else{R.current=new AbortController;const E={..._.headers};h.auth&&he(E,h.auth);const ee=pe(_.url,_.queryParams),Y={method:_.method,headers:E,signal:R.current.signal};["POST","PUT","PATCH"].includes(_.method)&&((L=h.body)!=null&&L.content)&&(Y.body=typeof h.body.content=="string"?h.body.content:JSON.stringify(h.body.content),h.body.type==="json"&&(E["Content-Type"]="application/json"));const V=await fetch(ee,Y),J=await V.text();let z;try{z=JSON.parse(J)}catch{z=J}const se=performance.now();S={status:V.status,statusText:V.statusText,headers:Object.fromEntries(V.headers.entries()),body:z,time:Math.round(se-k),size:new Blob([J]).size,timestamp:new Date}}if(y(S),B(E=>[...E,{request:h,response:S}].slice(-50)),f){const E=xe(f,S);U(E)}}catch(S){S.name!=="AbortError"&&y({status:0,statusText:"Error",headers:{},body:{error:S.message},time:Math.round(performance.now()-k),size:0,timestamp:new Date})}finally{T(!1),R.current=null}},[h,p,r,f]),H=d.useCallback(()=>{var a;(a=R.current)==null||a.abort(),T(!1)},[]),c=d.useCallback(()=>{x(a=>({...a,headers:{...a.headers,"":""}}))},[]),m=d.useCallback(()=>{x(a=>({...a,queryParams:{...a.queryParams,"":""}}))},[]),v=d.useCallback(()=>{if(o.length===0){const a={id:crypto.randomUUID(),name:"My Collection",requests:[h]};l([a]),i==null||i(a)}else{const a={...o[0],requests:[...o[0].requests,h]};l(_=>[a,..._.slice(1)]),i==null||i(a)}},[o,h,i]);return e.jsxs("div",{className:`nice-api-tester ${n}`,children:[e.jsx("div",{className:"nice-api-tester__toolbar",children:e.jsx("div",{className:"nice-api-tester__env-selector",children:e.jsxs("select",{value:(p==null?void 0:p.id)||"",onChange:a=>C(j.find(_=>_.id===a.target.value)||null),children:[e.jsx("option",{value:"",children:"No Environment"}),j.map(a=>e.jsx("option",{value:a.id,children:a.name},a.id))]})})}),e.jsxs("div",{className:"nice-api-tester__request-bar",children:[e.jsx("select",{value:h.method,onChange:a=>x(_=>({..._,method:a.target.value})),className:`nice-api-tester__method nice-api-tester__method--${h.method.toLowerCase()}`,children:oe.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsx("input",{type:"text",value:h.url,onChange:a=>x(_=>({..._,url:a.target.value})),placeholder:"Enter request URL",className:"nice-api-tester__url-input"}),e.jsx("button",{onClick:N?H:M,className:`nice-api-tester__send-btn ${N?"nice-api-tester__send-btn--loading":""}`,children:N?"Cancel":"Send"}),e.jsx("button",{onClick:v,className:"nice-api-tester__save-btn",children:"Save"})]}),e.jsxs("div",{className:"nice-api-tester__main",children:[e.jsxs("div",{className:"nice-api-tester__request-panel",children:[e.jsx("div",{className:"nice-api-tester__tabs",children:["params","headers","body","auth","tests"].map(a=>e.jsx("button",{className:`nice-api-tester__tab ${A===a?"nice-api-tester__tab--active":""}`,onClick:()=>$(a),children:a.charAt(0).toUpperCase()+a.slice(1)},a))}),e.jsxs("div",{className:"nice-api-tester__tab-content",children:[A==="params"&&e.jsx(_e,{params:h.queryParams,onChange:a=>x(_=>({..._,queryParams:a})),onAdd:m}),A==="headers"&&e.jsx(je,{headers:h.headers,onChange:a=>x(_=>({..._,headers:a})),onAdd:c}),A==="body"&&e.jsx(ge,{body:h.body,bodyTab:P,onBodyTabChange:K,onChange:a=>x(_=>({..._,body:a}))}),A==="auth"&&e.jsx(be,{auth:h.auth,onChange:a=>x(_=>({..._,auth:a}))}),A==="tests"&&e.jsx(ve,{preRequestScript:g,testScript:f,onPreRequestChange:b,onTestChange:O})]})]}),e.jsx("div",{className:"nice-api-tester__response-panel",children:w?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__response-meta",children:[e.jsxs("span",{className:`nice-api-tester__status nice-api-tester__status--${Math.floor(w.status/100)}`,children:[w.status," ",w.statusText]}),e.jsxs("span",{className:"nice-api-tester__time",children:[w.time,"ms"]}),e.jsx("span",{className:"nice-api-tester__size",children:me(w.size)})]}),e.jsx("div",{className:"nice-api-tester__tabs",children:["body","headers","tests"].map(a=>e.jsxs("button",{className:`nice-api-tester__tab ${D===a?"nice-api-tester__tab--active":""}`,onClick:()=>I(a),children:[a.charAt(0).toUpperCase()+a.slice(1),a==="tests"&&q.length>0&&e.jsxs("span",{className:"nice-api-tester__test-badge",children:[q.filter(_=>_.passed).length,"/",q.length]})]},a))}),e.jsxs("div",{className:"nice-api-tester__response-content",children:[D==="body"&&e.jsx("pre",{className:"nice-api-tester__response-body",children:typeof w.body=="string"?w.body:JSON.stringify(w.body,null,2)}),D==="headers"&&e.jsx("div",{className:"nice-api-tester__response-headers",children:Object.entries(w.headers).map(([a,_])=>e.jsxs("div",{className:"nice-api-tester__header-row",children:[e.jsx("span",{className:"nice-api-tester__header-key",children:a}),e.jsx("span",{className:"nice-api-tester__header-value",children:_})]},a))}),D==="tests"&&e.jsx("div",{className:"nice-api-tester__test-results",children:q.map((a,_)=>e.jsxs("div",{className:`nice-api-tester__test-result nice-api-tester__test-result--${a.passed?"pass":"fail"}`,children:[e.jsx("span",{className:"nice-api-tester__test-icon",children:a.passed?"✓":"✗"}),e.jsx("span",{className:"nice-api-tester__test-name",children:a.name}),a.message&&e.jsx("span",{className:"nice-api-tester__test-message",children:a.message})]},_))})]})]}):e.jsx("div",{className:"nice-api-tester__empty-response",children:N?"Loading...":"Send a request to see the response"})})]}),F.length>0&&e.jsxs("div",{className:"nice-api-tester__history",children:[e.jsx("h4",{children:"History"}),e.jsx("div",{className:"nice-api-tester__history-list",children:F.slice().reverse().map(({request:a,response:_},k)=>e.jsxs("div",{className:"nice-api-tester__history-item",onClick:()=>x(a),children:[e.jsx("span",{className:`nice-api-tester__method nice-api-tester__method--${a.method.toLowerCase()}`,children:a.method}),e.jsx("span",{className:"nice-api-tester__history-url",children:a.url}),e.jsx("span",{className:`nice-api-tester__status nice-api-tester__status--${Math.floor(_.status/100)}`,children:_.status})]},k))})]})]})}function he(s,t){var r,i,n,o,l;switch(t.type){case"bearer":s.Authorization=`${((r=t.bearer)==null?void 0:r.prefix)||"Bearer"} ${(i=t.bearer)==null?void 0:i.token}`;break;case"basic":s.Authorization=`Basic ${btoa(`${(n=t.basic)==null?void 0:n.username}:${(o=t.basic)==null?void 0:o.password}`)}`;break;case"api-key":((l=t.apiKey)==null?void 0:l.in)==="header"&&(s[t.apiKey.key]=t.apiKey.value);break}}function me(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/(1024*1024)).toFixed(1)} MB`}function xe(s,t){const r=[],i={response:{code:t.status,status:t.statusText,headers:t.headers,json:()=>t.body,text:()=>typeof t.body=="string"?t.body:JSON.stringify(t.body),responseTime:t.time},test:(n,o)=>{const l=performance.now();try{o(),r.push({name:n,passed:!0,duration:performance.now()-l})}catch(j){r.push({name:n,passed:!1,message:j.message,duration:performance.now()-l})}},expect:n=>({to:{equal:o=>{if(n!==o)throw new Error(`Expected ${o} but got ${n}`)},be:{oneOf:o=>{if(!o.includes(n))throw new Error(`Expected ${n} to be one of ${o}`)}},have:{property:o=>{if(typeof n!="object"||n===null||!(o in n))throw new Error(`Expected object to have property ${o}`)}}}})};try{new Function("pm",s)(i)}catch(n){r.push({name:"Script Error",passed:!1,message:n.message,duration:0})}return r}function Z({items:s,onChange:t,onAdd:r,keyPlaceholder:i="Key",valuePlaceholder:n="Value"}){return e.jsxs("div",{className:"nice-api-tester__kv-editor",children:[Object.entries(s).map(([o,l],j)=>e.jsxs("div",{className:"nice-api-tester__kv-row",children:[e.jsx("input",{type:"text",value:o,placeholder:i,onChange:u=>{const p=Object.entries(s);p[j]=[u.target.value,l],t(Object.fromEntries(p))}}),e.jsx("input",{type:"text",value:l,placeholder:n,onChange:u=>t({...s,[o]:u.target.value})}),e.jsx("button",{onClick:()=>{const{[o]:u,...p}=s;t(p)},children:"×"})]},j)),e.jsx("button",{onClick:r,className:"nice-api-tester__add-btn",children:"+ Add"})]})}function _e({params:s,onChange:t,onAdd:r}){return e.jsx(Z,{items:s,onChange:t,onAdd:r,keyPlaceholder:"Parameter",valuePlaceholder:"Value"})}function je({headers:s,onChange:t,onAdd:r}){return e.jsx(Z,{items:s,onChange:t,onAdd:r,keyPlaceholder:"Header",valuePlaceholder:"Value"})}function ge({body:s,bodyTab:t,onBodyTabChange:r,onChange:i}){return e.jsxs("div",{className:"nice-api-tester__body-editor",children:[e.jsx("div",{className:"nice-api-tester__body-tabs",children:["none","json","form-data","raw"].map(n=>e.jsxs("label",{children:[e.jsx("input",{type:"radio",checked:t===n,onChange:()=>{r(n),i({type:n,content:""})}}),n]},n))}),t!=="none"&&e.jsx("textarea",{value:typeof(s==null?void 0:s.content)=="string"?s.content:JSON.stringify(s==null?void 0:s.content,null,2),onChange:n=>i({type:t,content:n.target.value}),placeholder:t==="json"?'{ "key": "value" }':"Enter body content",rows:10,className:"nice-api-tester__body-textarea"})]})}function be({auth:s,onChange:t}){var r,i,n,o,l,j;return e.jsxs("div",{className:"nice-api-tester__auth-editor",children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Type"}),e.jsxs("select",{value:(s==null?void 0:s.type)||"none",onChange:u=>t({type:u.target.value}),children:[e.jsx("option",{value:"none",children:"No Auth"}),e.jsx("option",{value:"api-key",children:"API Key"}),e.jsx("option",{value:"bearer",children:"Bearer Token"}),e.jsx("option",{value:"basic",children:"Basic Auth"}),e.jsx("option",{value:"oauth2",children:"OAuth 2.0"})]})]}),(s==null?void 0:s.type)==="api-key"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Key"}),e.jsx("input",{type:"text",value:((r=s.apiKey)==null?void 0:r.key)||"",onChange:u=>{var p,C;return t({...s,apiKey:{...s.apiKey,key:u.target.value,value:((p=s.apiKey)==null?void 0:p.value)||"",in:((C=s.apiKey)==null?void 0:C.in)||"header"}})},placeholder:"X-API-Key"})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Value"}),e.jsx("input",{type:"text",value:((i=s.apiKey)==null?void 0:i.value)||"",onChange:u=>{var p,C;return t({...s,apiKey:{...s.apiKey,value:u.target.value,key:((p=s.apiKey)==null?void 0:p.key)||"",in:((C=s.apiKey)==null?void 0:C.in)||"header"}})},placeholder:"your-api-key"})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Add to"}),e.jsxs("select",{value:((n=s.apiKey)==null?void 0:n.in)||"header",onChange:u=>{var p,C;return t({...s,apiKey:{...s.apiKey,in:u.target.value,key:((p=s.apiKey)==null?void 0:p.key)||"",value:((C=s.apiKey)==null?void 0:C.value)||""}})},children:[e.jsx("option",{value:"header",children:"Header"}),e.jsx("option",{value:"query",children:"Query Params"})]})]})]}),(s==null?void 0:s.type)==="bearer"&&e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Token"}),e.jsx("input",{type:"text",value:((o=s.bearer)==null?void 0:o.token)||"",onChange:u=>t({...s,bearer:{token:u.target.value}}),placeholder:"your-bearer-token"})]}),(s==null?void 0:s.type)==="basic"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Username"}),e.jsx("input",{type:"text",value:((l=s.basic)==null?void 0:l.username)||"",onChange:u=>{var p;return t({...s,basic:{...s.basic,username:u.target.value,password:((p=s.basic)==null?void 0:p.password)||""}})}})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Password"}),e.jsx("input",{type:"password",value:((j=s.basic)==null?void 0:j.password)||"",onChange:u=>{var p;return t({...s,basic:{...s.basic,password:u.target.value,username:((p=s.basic)==null?void 0:p.username)||""}})}})]})]})]})}function ve({preRequestScript:s,testScript:t,onPreRequestChange:r,onTestChange:i}){return e.jsxs("div",{className:"nice-api-tester__tests-editor",children:[e.jsxs("div",{className:"nice-api-tester__script-section",children:[e.jsx("h4",{children:"Pre-request Script"}),e.jsx("textarea",{value:s,onChange:n=>r(n.target.value),placeholder:"// Code to run before the request",rows:5})]}),e.jsxs("div",{className:"nice-api-tester__script-section",children:[e.jsx("h4",{children:"Tests"}),e.jsx("textarea",{value:t,onChange:n=>i(n.target.value),placeholder:`pm.test("Status code is 200", function () {
|
|
2
|
+
pm.expect(pm.response.code).to.equal(200);
|
|
3
|
+
});`,rows:8})]})]})}const X=[{type:"trigger",label:"Trigger",icon:"⚡",category:"Control"},{type:"http-request",label:"HTTP Request",icon:"🌐",category:"Actions"},{type:"transform",label:"Transform",icon:"🔄",category:"Data"},{type:"filter",label:"Filter",icon:"🔍",category:"Data"},{type:"switch",label:"Switch",icon:"⑂",category:"Control"},{type:"loop",label:"Loop",icon:"🔁",category:"Control"},{type:"delay",label:"Delay",icon:"⏱️",category:"Control"},{type:"set-variable",label:"Set Variable",icon:"📝",category:"Data"},{type:"database",label:"Database",icon:"🗄️",category:"Actions"},{type:"email",label:"Email",icon:"✉️",category:"Actions"},{type:"webhook",label:"Webhook",icon:"🔗",category:"Actions"},{type:"function",label:"Function",icon:"ƒ",category:"Actions"},{type:"error-handler",label:"Error Handler",icon:"⚠️",category:"Control"}],fe={id:"",name:"New Flow",nodes:[],connections:[],variables:{},triggers:[],errorHandling:{strategy:"stop"}};function ye({flow:s,connectors:t=[],onChange:r,onSave:i,onRun:n,className:o=""}){const[l,j]=d.useState(s||{...fe,id:crypto.randomUUID()}),[u,p]=d.useState(null),[C,h]=d.useState(!0),[x,w]=d.useState("canvas"),[y,N]=d.useState(!1),[T,P]=d.useState(null),[K,A]=d.useState(!1),[$,D]=d.useState(null),[I,g]=d.useState(!1),b=d.useRef(null),f=d.useCallback(c=>{j(m=>{const v=c(m);return r==null||r(v),v})},[r]),O=d.useCallback((c,m)=>{var a;const v={id:crypto.randomUUID(),type:c,name:((a=X.find(_=>_.type===c))==null?void 0:a.label)||c,position:m,config:Ne(c),inputs:c!=="trigger"?["input"]:[],outputs:["output"]};f(_=>({..._,nodes:[..._.nodes,v]})),p(v)},[f]),q=d.useCallback(c=>{f(m=>({...m,nodes:m.nodes.filter(v=>v.id!==c),connections:m.connections.filter(v=>v.sourceNodeId!==c&&v.targetNodeId!==c)})),p(null)},[f]),U=d.useCallback((c,m)=>{f(v=>({...v,nodes:v.nodes.map(a=>a.id===c?{...a,...m}:a)})),(u==null?void 0:u.id)===c&&p(v=>v?{...v,...m}:null)},[f,u]),F=d.useCallback((c,m,v,a)=>{c===v||l.connections.some(k=>k.sourceNodeId===c&&k.targetNodeId===v&&k.sourceOutput===m&&k.targetInput===a)||f(k=>({...k,connections:[...k.connections,{id:crypto.randomUUID(),sourceNodeId:c,sourceOutput:m,targetNodeId:v,targetInput:a}]}))},[l.connections,f]),B=d.useCallback(c=>{f(m=>({...m,connections:m.connections.filter(v=>v.id!==c)}))},[f]),R=d.useCallback(c=>{if(c.preventDefault(),!T||!b.current)return;const m=b.current.getBoundingClientRect(),v=c.clientX-m.left,a=c.clientY-m.top;O(T,{x:v,y:a}),N(!1),P(null)},[T,O]),M=d.useCallback(async()=>{if(n){g(!0);try{await n(l)}finally{g(!1)}}},[l,n]),H=d.useCallback(()=>{i==null||i(l)},[l,i]);return e.jsxs("div",{className:`nice-integration-builder ${o}`,children:[e.jsxs("div",{className:"nice-integration-builder__toolbar",children:[e.jsx("input",{type:"text",value:l.name,onChange:c=>f(m=>({...m,name:c.target.value})),className:"nice-integration-builder__name-input"}),e.jsx("div",{className:"nice-integration-builder__tabs",children:["canvas","code","variables","settings"].map(c=>e.jsx("button",{className:`nice-integration-builder__tab ${x===c?"nice-integration-builder__tab--active":""}`,onClick:()=>w(c),children:c.charAt(0).toUpperCase()+c.slice(1)},c))}),e.jsxs("div",{className:"nice-integration-builder__actions",children:[e.jsx("button",{onClick:M,disabled:I,className:"nice-integration-builder__run-btn",children:I?"⏳ Running...":"▶ Run"}),e.jsx("button",{onClick:H,className:"nice-integration-builder__save-btn",children:"💾 Save"})]})]}),e.jsxs("div",{className:"nice-integration-builder__main",children:[C&&x==="canvas"&&e.jsxs("div",{className:"nice-integration-builder__palette",children:[e.jsx("h4",{children:"Nodes"}),["Control","Actions","Data"].map(c=>e.jsxs("div",{className:"nice-integration-builder__category",children:[e.jsx("h5",{children:c}),X.filter(m=>m.category===c).map(m=>e.jsxs("div",{className:"nice-integration-builder__palette-item",draggable:!0,onDragStart:()=>{N(!0),P(m.type)},onDragEnd:()=>{N(!1),P(null)},children:[e.jsx("span",{className:"nice-integration-builder__palette-icon",children:m.icon}),e.jsx("span",{children:m.label})]},m.type))]},c)),t.length>0&&e.jsxs("div",{className:"nice-integration-builder__category",children:[e.jsx("h5",{children:"Connectors"}),t.map(c=>e.jsxs("div",{className:"nice-integration-builder__palette-item",children:[e.jsx("span",{className:"nice-integration-builder__palette-icon",children:"🔌"}),e.jsx("span",{children:c.name})]},c.id))]})]}),x==="canvas"&&e.jsxs("div",{ref:b,className:`nice-integration-builder__canvas ${y?"nice-integration-builder__canvas--dragging":""}`,onDragOver:c=>c.preventDefault(),onDrop:R,onClick:()=>p(null),children:[e.jsx("svg",{className:"nice-integration-builder__connections",children:l.connections.map(c=>{const m=l.nodes.find(E=>E.id===c.sourceNodeId),v=l.nodes.find(E=>E.id===c.targetNodeId);if(!m||!v)return null;const a=m.position.x+150,_=m.position.y+30,k=v.position.x,L=v.position.y+30,S=(a+k)/2;return e.jsx("g",{onClick:()=>B(c.id),children:e.jsx("path",{d:`M ${a} ${_} C ${S} ${_}, ${S} ${L}, ${k} ${L}`,className:"nice-integration-builder__connection"})},c.id)})}),l.nodes.map(c=>e.jsx(Ce,{node:c,isSelected:(u==null?void 0:u.id)===c.id,onSelect:()=>p(c),onDelete:()=>q(c.id),onPositionChange:m=>U(c.id,{position:m}),onStartConnection:m=>{A(!0),D({nodeId:c.id,output:m})},onEndConnection:m=>{$&&F($.nodeId,$.output,c.id,m),A(!1),D(null)}},c.id)),l.nodes.length===0&&e.jsx("div",{className:"nice-integration-builder__empty",children:"Drag nodes from the palette to build your flow"})]}),x==="code"&&e.jsx("div",{className:"nice-integration-builder__code-view",children:e.jsx("pre",{children:JSON.stringify(l,null,2)})}),x==="variables"&&e.jsx(Se,{variables:l.variables,onChange:c=>f(m=>({...m,variables:c}))}),x==="settings"&&e.jsx(Ee,{errorHandling:l.errorHandling,schedule:l.schedule,onChange:(c,m)=>f(v=>({...v,errorHandling:c,schedule:m}))}),u&&x==="canvas"&&e.jsx(we,{node:u,onChange:c=>U(u.id,c),onClose:()=>p(null)})]})]})}function Ne(s){switch(s){case"http-request":return{method:"GET",url:"",headers:{},body:""};case"transform":return{mapping:[]};case"filter":return{condition:""};case"switch":return{cases:[]};case"loop":return{collection:"",itemVariable:"item"};case"delay":return{duration:1e3};case"set-variable":return{name:"",value:""};case"database":return{operation:"query",query:""};case"email":return{to:"",subject:"",body:""};case"webhook":return{method:"POST",url:""};case"function":return{code:`// Your code here
|
|
4
|
+
return input;`};case"error-handler":return{strategy:"retry",maxRetries:3};default:return{}}}function Ce({node:s,isSelected:t,onSelect:r,onDelete:i,onPositionChange:n,onStartConnection:o,onEndConnection:l}){const[j,u]=d.useState(!1),[p,C]=d.useState({x:0,y:0}),h=d.useRef(null),x=X.find(y=>y.type===s.type),w=y=>{y.button===0&&(y.stopPropagation(),u(!0),C({x:y.clientX-s.position.x,y:y.clientY-s.position.y}),r())};return d.useEffect(()=>{if(!j)return;const y=T=>{n({x:T.clientX-p.x,y:T.clientY-p.y})},N=()=>{u(!1)};return window.addEventListener("mousemove",y),window.addEventListener("mouseup",N),()=>{window.removeEventListener("mousemove",y),window.removeEventListener("mouseup",N)}},[j,p,n]),e.jsxs("div",{ref:h,className:`nice-integration-builder__node nice-integration-builder__node--${s.type} ${t?"nice-integration-builder__node--selected":""}`,style:{left:s.position.x,top:s.position.y},onMouseDown:w,children:[e.jsxs("div",{className:"nice-integration-builder__node-header",children:[e.jsx("span",{className:"nice-integration-builder__node-icon",children:(x==null?void 0:x.icon)||"📦"}),e.jsx("span",{className:"nice-integration-builder__node-name",children:s.name}),e.jsx("button",{className:"nice-integration-builder__node-delete",onClick:y=>{y.stopPropagation(),i()},children:"×"})]}),s.inputs.map(y=>e.jsxs("div",{className:"nice-integration-builder__port nice-integration-builder__port--input",onMouseUp:()=>l(y),children:[e.jsx("span",{className:"nice-integration-builder__port-dot"}),e.jsx("span",{className:"nice-integration-builder__port-label",children:y})]},y)),s.outputs.map(y=>e.jsxs("div",{className:"nice-integration-builder__port nice-integration-builder__port--output",onMouseDown:N=>{N.stopPropagation(),o(y)},children:[e.jsx("span",{className:"nice-integration-builder__port-label",children:y}),e.jsx("span",{className:"nice-integration-builder__port-dot"})]},y))]})}function we({node:s,onChange:t,onClose:r}){return e.jsxs("div",{className:"nice-integration-builder__properties",children:[e.jsxs("div",{className:"nice-integration-builder__properties-header",children:[e.jsx("h4",{children:s.name}),e.jsx("button",{onClick:r,children:"×"})]}),e.jsxs("div",{className:"nice-integration-builder__properties-content",children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Name"}),e.jsx("input",{type:"text",value:s.name,onChange:i=>t({name:i.target.value})})]}),s.type==="http-request"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Method"}),e.jsx("select",{value:s.config.method||"GET",onChange:i=>t({config:{...s.config,method:i.target.value}}),children:["GET","POST","PUT","PATCH","DELETE"].map(i=>e.jsx("option",{value:i,children:i},i))})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"URL"}),e.jsx("input",{type:"text",value:s.config.url||"",onChange:i=>t({config:{...s.config,url:i.target.value}}),placeholder:"https://api.example.com/endpoint"})]})]}),s.type==="delay"&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Duration (ms)"}),e.jsx("input",{type:"number",value:s.config.duration||1e3,onChange:i=>t({config:{...s.config,duration:parseInt(i.target.value,10)}})})]}),s.type==="set-variable"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Variable Name"}),e.jsx("input",{type:"text",value:s.config.name||"",onChange:i=>t({config:{...s.config,name:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Value"}),e.jsx("input",{type:"text",value:s.config.value||"",onChange:i=>t({config:{...s.config,value:i.target.value}})})]})]}),s.type==="function"&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Code"}),e.jsx("textarea",{value:s.config.code||"",onChange:i=>t({config:{...s.config,code:i.target.value}}),rows:10,className:"nice-integration-builder__code-input"})]}),s.type==="email"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"To"}),e.jsx("input",{type:"text",value:s.config.to||"",onChange:i=>t({config:{...s.config,to:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Subject"}),e.jsx("input",{type:"text",value:s.config.subject||"",onChange:i=>t({config:{...s.config,subject:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Body"}),e.jsx("textarea",{value:s.config.body||"",onChange:i=>t({config:{...s.config,body:i.target.value}}),rows:5})]})]})]})]})}function Se({variables:s,onChange:t}){const r=()=>{t({...s,newVariable:""})};return e.jsxs("div",{className:"nice-integration-builder__variables",children:[e.jsx("h4",{children:"Flow Variables"}),e.jsx("div",{className:"nice-integration-builder__variables-list",children:Object.entries(s).map(([i,n])=>e.jsxs("div",{className:"nice-integration-builder__variable-row",children:[e.jsx("input",{type:"text",value:i,onChange:o=>{const{[i]:l,...j}=s;t({...j,[o.target.value]:n})},placeholder:"Name"}),e.jsx("input",{type:"text",value:String(n),onChange:o=>t({...s,[i]:o.target.value}),placeholder:"Value"}),e.jsx("button",{onClick:()=>{const{[i]:o,...l}=s;t(l)},children:"×"})]},i))}),e.jsx("button",{onClick:r,children:"+ Add Variable"})]})}function Ee({errorHandling:s,schedule:t,onChange:r}){return e.jsxs("div",{className:"nice-integration-builder__settings",children:[e.jsx("h4",{children:"Error Handling"}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Strategy"}),e.jsxs("select",{value:s.strategy,onChange:i=>r({...s,strategy:i.target.value},t),children:[e.jsx("option",{value:"stop",children:"Stop on error"}),e.jsx("option",{value:"continue",children:"Continue on error"}),e.jsx("option",{value:"retry",children:"Retry on error"})]})]}),s.strategy==="retry"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Max Retries"}),e.jsx("input",{type:"number",value:s.maxRetries||3,onChange:i=>r({...s,maxRetries:parseInt(i.target.value,10)},t)})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Retry Delay (ms)"}),e.jsx("input",{type:"number",value:s.retryDelay||1e3,onChange:i=>r({...s,retryDelay:parseInt(i.target.value,10)},t)})]})]}),e.jsx("h4",{children:"Schedule"}),e.jsx("div",{className:"nice-integration-builder__field",children:e.jsxs("label",{children:[e.jsx("input",{type:"checkbox",checked:(t==null?void 0:t.enabled)||!1,onChange:i=>r(s,{...t,enabled:i.target.checked})}),"Enable scheduled execution"]})}),(t==null?void 0:t.enabled)&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Cron Expression"}),e.jsx("input",{type:"text",value:t.cron||"",onChange:i=>r(s,{...t,cron:i.target.value}),placeholder:"0 0 * * *"})]})]})}exports.NiceAPIDesigner=te;exports.NiceAPITester=ue;exports.NiceIntegrationBuilder=ye;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @package @nice2dev/ui-api
|
|
3
|
+
* Nice2Dev API & Integration Platform
|
|
4
|
+
*/
|
|
5
|
+
export { NiceAPIDesigner } from './NiceAPIDesigner';
|
|
6
|
+
export { NiceAPITester } from './NiceAPITester';
|
|
7
|
+
export { NiceIntegrationBuilder } from './NiceIntegrationBuilder';
|
|
8
|
+
export type { OpenAPISchema, OpenAPIInfo, OpenAPIServer, OpenAPIPathItem, OpenAPIOperation, OpenAPIParameter, OpenAPIRequestBody, OpenAPIResponse, OpenAPIComponents, SchemaObject, SecurityScheme, OAuth2Flow, OpenAPITag, APIDesignerState, ValidationError, EndpointDefinition, APIRequest, RequestBody, AuthConfig, APIResponse, APIEnvironment, EnvironmentVariable, APICollection, APIFolder, TestScript, TestResult, CollectionRunResult, RequestRunResult, IntegrationFlow, FlowNode, FlowNodeType, FlowConnection, FlowTrigger, ErrorHandlingConfig, ScheduleConfig, Connector, ConnectorOperation, ConnectorParameter, TransformMapping, MockServer, MockEndpoint, MockResponse, MockCondition, NiceAPIDesignerProps, NiceAPITesterProps, NiceIntegrationBuilderProps, NiceOpenAPIViewerProps, NiceMockServerProps, NiceSchemaEditorProps, } from './types';
|