@digi-frontend/dgate-api-documentation 1.0.34 → 1.0.38

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.
@@ -1 +1 @@
1
- {"version":3,"file":"MethodAccordion.js","sources":["../../../../src/components/MethodAccordion/MethodAccordion.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { Accordion, Button, SelectGroup, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'\r\nimport SVGLoader from '../../components/SVGLoader/SVGLoader'\r\nimport { DeleteIcon, DownArrowIcon, EditIcon, deleteOutlinedIcon } from '../../assets/icons'\r\nimport { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\nimport { TransformedMethod } from '../../types/layout.type'\r\nimport SimpleLabelValue from '../../components/SimpleLabelValue'\r\nimport { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'\r\nimport ParamterTable from '../table/table'\r\nimport CommonDialog from '../../components/dialog'\r\nimport JsonInput from '../../components/JsonInput/JsonInput'\r\nimport styles from './MethodAccordion.module.scss'\r\nimport { Tags } from '@entities/openApi'\r\nimport regex from '../../constants/regex'\r\n\r\nconst httpStatusCodeOptions = httpStatusCodes.map((code) => ({\r\n label: (\r\n <div className={styles.statusCodeOptionContainer}>\r\n <div\r\n className={styles.statusCodeOptionCircle}\r\n style={{ backgroundColor: handleStatusColor(code) }}\r\n ></div>\r\n <span>{code}</span>\r\n </div>\r\n ),\r\n value: code,\r\n}))\r\n\r\nconst MethodsAccordion = ({\r\n method,\r\n path,\r\n setFieldValue,\r\n readOnly,\r\n tags,\r\n isOpen,\r\n setIsOpen,\r\n}: {\r\n method: TransformedMethod\r\n path: string\r\n setFieldValue?: (key: string, value: string | string[]) => void\r\n readOnly?: boolean\r\n tags: Tags[]\r\n isOpen: boolean\r\n setIsOpen: (open: boolean) => void\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState({\r\n request: false,\r\n response: false,\r\n method: false,\r\n })\r\n const [isFormOpen, setIsFormOpen] = useState(false)\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tableData, setTableData] = useState([])\r\n const [openDeleteDialog, setOpenDeleteDialog] = useState(false)\r\n const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)\r\n const [selectedParamName, setSelectedParamName] = useState<string | null>(null)\r\n const [tableRecords, setTableRecords] = useState()\r\n const [selectionTags, setSelectionTags] = useState([])\r\n const [selectedStatusCode, setSelectedStatusCode] = useState(httpStatusCodeOptions[4])\r\n const currentResponse =\r\n method.responses.find((res) => Number(res.code) === selectedStatusCode.value) || '{}'\r\n\r\n const onTableChange = (key, value, index) => {\r\n const newTableData = tableData.map((item, tIndex) => {\r\n if (tIndex === index) {\r\n return { ...item, [key]: value }\r\n } else {\r\n return item\r\n }\r\n })\r\n\r\n setTableData(newTableData)\r\n }\r\n\r\n const generateTableData = (items) => {\r\n return items.map((item, index) => {\r\n return {\r\n id: index,\r\n paramName: item.name,\r\n paramType: capitalize(item.in),\r\n schemaType: capitalize(item.schema?.type) || '',\r\n required: (\r\n <>\r\n {readOnly ? (\r\n item.required ? (\r\n 'True'\r\n ) : (\r\n 'False'\r\n )\r\n ) : (\r\n <Switch\r\n checked={item.required}\r\n onClick={() => {\r\n if (readOnly) {\r\n return null\r\n }\r\n onTableChange('required', !item.required, index)\r\n setFieldValue(`parameters[${index}][required]`, !item.required)\r\n }}\r\n />\r\n )}\r\n </>\r\n ),\r\n description: (\r\n <div className={styles.paramDescContainer}>\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={method.parameters[index].description?.length <= 12}\r\n content={\r\n <div style={{ padding: '0.625rem' }}>{method.parameters[index].description}</div>\r\n }\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n onShow={() => tooltipRefs[index]?.hide()}\r\n >\r\n <p style={{ alignSelf: 'center' }}>\r\n {method.parameters[index].description\r\n ? method.parameters[index].description.substring(0, 12)\r\n : readOnly && '-'}\r\n {method.parameters[index].description &&\r\n method.parameters[index].description.length > 12\r\n ? '...'\r\n : ''}\r\n </p>\r\n </Tooltip>\r\n {!readOnly && (\r\n <Tooltip\r\n key={`${index}-add-edit-description`}\r\n allowHTML\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>Description</p>\r\n <TextArea\r\n placeholder=\"Describe parameter...\"\r\n value={item.description}\r\n disabled={readOnly}\r\n maxLength={120}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value))\r\n onTableChange('description', value, index)\r\n }}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(\r\n `parameters[${index}].description`,\r\n item.description?.trim()\r\n )\r\n tooltipRefs[index]?.hide()\r\n }}\r\n disabled={!item.description?.trim()}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || method.parameters[index].description?.length > 0 ? (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n ></Button>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n >\r\n {readOnly ? 'View ' : 'Add '} Description\r\n </Button>\r\n )}\r\n </Tooltip>\r\n )}\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n endIcon={<SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />}\r\n onClick={() => handleDeleteClick(index, item.name)}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }\r\n })\r\n }\r\n\r\n const confirmDeleteParameter = () => {\r\n if (selectedParamIndex !== null) {\r\n setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))\r\n setFieldValue(\r\n `parameters`,\r\n method?.parameters?.filter((_, i) => i !== selectedParamIndex)\r\n )\r\n }\r\n setOpenDeleteDialog(false)\r\n setSelectedParamIndex(null)\r\n }\r\n\r\n const handleDeleteClick = (id: number, name: string) => {\r\n setSelectedParamIndex(id)\r\n setSelectedParamName(name)\r\n\r\n setOpenDeleteDialog(true)\r\n }\r\n\r\n const saveNewRow = (values) => {\r\n setTableData([...tableData, values])\r\n setFieldValue(`parameters`, [...method.parameters, values])\r\n }\r\n\r\n useEffect(() => {\r\n setTableRecords(generateTableData(tableData))\r\n }, [tableData])\r\n\r\n useEffect(() => {\r\n if (method?.parameters) {\r\n setTableData(method.parameters)\r\n }\r\n }, [method, path])\r\n\r\n useEffect(() => {\r\n // prepare tags selection list\r\n if (method?.tags.length || tags?.length) {\r\n const convertedStringArray = (method?.tags || [])?.map((item) => ({\r\n label: capitalize(item),\r\n value: item,\r\n }))\r\n const mergedArray = [\r\n ...convertedStringArray,\r\n ...(tags || []).map((item) => ({ label: capitalize(item.name), value: item.name })),\r\n ]\r\n\r\n const filteredArray = mergedArray.filter(\r\n (value, index, self) => index === self.findIndex((t) => t.value === value.value)\r\n )\r\n\r\n setSelectionTags(filteredArray)\r\n }\r\n }, [tags, method])\r\n\r\n return (\r\n <div>\r\n <Accordion\r\n expanded={isOpen}\r\n onChange={() => setIsOpen(!isOpen)}\r\n className={`${styles.methodAccordion} ${readOnly ? styles.readOnly : ''}`}\r\n summary={\r\n <div className={styles.methodSummaryContainer}>\r\n <div className={styles.methodSummary}>\r\n <span\r\n style={{\r\n backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',\r\n }}\r\n className={styles.methodLabel}\r\n >\r\n {methodColorMapping?.[method?.type]?.label || method?.type}\r\n </span>\r\n <span className={styles.methodPath}>{path}</span>\r\n </div>\r\n <div\r\n className={`${styles.methodExpandArrowContainer} ${isOpen ? styles.expanded : ''}`}\r\n >\r\n <SVGLoader src={DownArrowIcon} width=\"2rem\" height=\"2rem\" />\r\n </div>\r\n </div>\r\n }\r\n children={\r\n <div className={styles.methodAccordionContent}>\r\n <SelectGroup\r\n className={styles.methodDesc}\r\n disabled={readOnly}\r\n placeholder=\"Select Tags\"\r\n label=\"Tags\"\r\n value={method.tags?.map((t) => ({\r\n label: capitalize(t),\r\n value: t,\r\n }))}\r\n onChange={(item) => {\r\n setFieldValue(\r\n 'tags',\r\n item.map((i) => i.value)\r\n )\r\n }}\r\n options={[\r\n {\r\n list: selectionTags,\r\n },\r\n ]}\r\n isMultiple={true}\r\n withSearch={false}\r\n clearable={false}\r\n />\r\n {!readOnly ? (\r\n <TextArea\r\n className={styles.methodDesc}\r\n label=\"Description\"\r\n placeholder=\"Describe the method's purpose and functionality...\"\r\n maxLength={120}\r\n value={method?.description}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value)) setFieldValue('description', value)\r\n }}\r\n />\r\n ) : (\r\n <SimpleLabelValue\r\n key={'description'}\r\n label={'Description: '}\r\n value={method?.description || '-'}\r\n />\r\n )}\r\n <div className={styles.paramsTable}>\r\n <ParamterTable\r\n id=\"paramter-table\"\r\n data={tableRecords}\r\n headCells={paramsTableHeaders}\r\n isFormOpen={isFormOpen}\r\n setIsFormOpen={setIsFormOpen}\r\n saveNewRow={saveNewRow}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n {method?.type !== 'get' && (\r\n <Accordion\r\n expanded={isExpanded.request}\r\n onChange={() => null}\r\n className={styles.requestAccordion}\r\n summary={\r\n <span className={styles.requestAccordionSummary}>\r\n <div\r\n className={styles.requestAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n request: !prev.request,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.request ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Request\r\n {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}\r\n </div>\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your request body as a JSON object....\"\r\n fieldIsDisabled={readOnly}\r\n value={method?.requestBody?.content?.schema?.properties || '{}'}\r\n onChange={(value: string) => {\r\n setFieldValue('requestBody.content.schema.properties', value)\r\n }}\r\n onValidation={() => null}\r\n />\r\n }\r\n />\r\n )}\r\n <Accordion\r\n expanded={isExpanded.response}\r\n onChange={() => null}\r\n className={styles.responseAccordion}\r\n summary={\r\n <span className={styles.responseAccordionSummary}>\r\n <div\r\n className={styles.responseAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n response: !prev.response,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.response ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Response<span style={{ color: 'red' }}>*</span>\r\n </div>\r\n\r\n <SelectGroup\r\n withSearch={false}\r\n isMultiple={false}\r\n clearable={false}\r\n placeholder=\"200\"\r\n options={[\r\n {\r\n list: httpStatusCodeOptions,\r\n },\r\n ]}\r\n value={selectedStatusCode}\r\n onChange={(value) => {\r\n setSelectedStatusCode(value)\r\n }}\r\n />\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your response as a JSON object...\"\r\n fieldIsDisabled={readOnly}\r\n value={currentResponse?.content?.schema?.properties || '{}'}\r\n onChange={(value) => {\r\n const currentResIndex = method.responses.findIndex(\r\n (res) => res.code === currentResponse.code\r\n )\r\n\r\n if (currentResIndex !== -1) {\r\n setFieldValue(\r\n `responses[${currentResIndex}].content.schema.properties`,\r\n value\r\n )\r\n } else {\r\n const clonedResponses = structuredClone(method.responses)\r\n\r\n clonedResponses.push({\r\n code: selectedStatusCode.value.toString(),\r\n content: {\r\n contentType: 'application/json',\r\n schema: {\r\n type: 'object',\r\n properties: value,\r\n },\r\n },\r\n })\r\n\r\n setFieldValue('responses', clonedResponses)\r\n }\r\n }}\r\n onValidation={() => null}\r\n />\r\n }\r\n />\r\n </div>\r\n }\r\n />\r\n <CommonDialog\r\n status=\"error\"\r\n content={\r\n <p\r\n style={{\r\n textAlign: 'center',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: '1.4375rem',\r\n }}\r\n className=\"delete-msg-container\"\r\n >\r\n Are you sure you want to delete\r\n <span className=\"plan-name\">\r\n {' '}\r\n Parameter <strong>{selectedParamName}</strong>\r\n </span>\r\n ?\r\n </p>\r\n }\r\n onSubmit={{\r\n onClick: confirmDeleteParameter,\r\n text: 'Delete',\r\n color: 'error',\r\n fullWidth: true,\r\n }}\r\n onCancel={{\r\n text: 'Cancel',\r\n color: 'normal',\r\n fullWidth: true,\r\n }}\r\n onClose={() => setOpenDeleteDialog(false)}\r\n open={openDeleteDialog}\r\n icon={<SVGLoader src={deleteOutlinedIcon} width=\"4.0625rem\" height=\"4.0625rem\" />}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default MethodsAccordion\r\n"],"names":["httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","MethodsAccordion","method","path","setFieldValue","readOnly","tags","isOpen","setIsOpen","isExpanded","setIsExpanded","useState","request","response","isFormOpen","setIsFormOpen","tooltipRefs","setTooltipRefs","tableData","setTableData","openDeleteDialog","setOpenDeleteDialog","selectedParamIndex","setSelectedParamIndex","selectedParamName","setSelectedParamName","tableRecords","setTableRecords","selectionTags","setSelectionTags","selectedStatusCode","setSelectedStatusCode","currentResponse","responses","find","res","Number","onTableChange","key","index","newTableData","item","tIndex","Object","assign","handleDeleteClick","id","name","useEffect","paramName","paramType","capitalize","in","schemaType","_a","schema","type","required","jsx","_Fragment","Switch","checked","onClick","description","paramDescContainer","Tooltip","allowHTML","disabled","parameters","_b","length","content","padding","arrowWithBorder","placement","delay","onShow","hide","alignSelf","substring","trigger","onCreate","instance","prev","editDescTooltipContent","editDescTooltipContent_header","TextArea","placeholder","maxLength","onChange","regex","ASCII","test","Button","editDescTooltipContent_btn","variant","size","trim","_c","_d","editDescBtn","color","endIcon","SVGLoader","src","EditIcon","width","height","jsxs","paramDescContainer_separator","deleteParamBtn","DeleteIcon","filteredArray","filter","self","findIndex","t","Accordion","expanded","methodAccordion","summary","methodSummaryContainer","methodSummary","methodColorMapping","methodLabel","methodPath","methodExpandArrowContainer","DownArrowIcon","methodAccordionContent","SelectGroup","methodDesc","i","options","list","isMultiple","withSearch","clearable","SimpleLabelValue","paramsTable","ParamterTable","data","headCells","paramsTableHeaders","saveNewRow","values","requestAccordion","requestAccordionSummary","requestAccordionSummary_title","JsonInput","acceptType","withFooter","fieldIsDisabled","_f","_e","requestBody","properties","onValidation","responseAccordion","responseAccordionSummary","responseAccordionSummary_title","_h","_g","currentResIndex","clonedResponses","structuredClone","push","toString","contentType","CommonDialog","status","textAlign","fontWeight","fontSize","lineHeight","onSubmit","_","text","fullWidth","onCancel","onClose","open","icon","deleteOutlinedIcon"],"mappings":"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"}
1
+ {"version":3,"file":"MethodAccordion.js","sources":["../../../../src/components/MethodAccordion/MethodAccordion.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\r\nimport { Accordion, Button, SelectGroup, SelectGroupV2, Switch, TextArea } from 'digitinary-ui'\r\nimport SVGLoader from '../../components/SVGLoader/SVGLoader'\r\nimport { DeleteIcon, DownArrowIcon, EditIcon, deleteOutlinedIcon } from '../../assets/icons'\r\nimport { httpStatusCodes, methodColorMapping, paramsTableHeaders } from '../../constants/index'\r\nimport Tooltip from '../../components/Tooltip/Tooltip'\r\nimport { TransformedMethod } from '../../types/layout.type'\r\nimport SimpleLabelValue from '../../components/SimpleLabelValue'\r\nimport { capitalize, handleStatusColor } from '../../helpers/methodAccordion.helper'\r\nimport ParamterTable from '../table/table'\r\nimport CommonDialog from '../../components/dialog'\r\nimport JsonInput from '../../components/JsonInput/JsonInput'\r\nimport styles from './MethodAccordion.module.scss'\r\nimport { Tags } from '@entities/openApi'\r\nimport regex from '../../constants/regex'\r\n\r\nconst httpStatusCodeOptions = httpStatusCodes.map((code) => ({\r\n label: (\r\n <div className={styles.statusCodeOptionContainer}>\r\n <div\r\n className={styles.statusCodeOptionCircle}\r\n style={{ backgroundColor: handleStatusColor(code) }}\r\n ></div>\r\n <span>{code}</span>\r\n </div>\r\n ),\r\n value: code,\r\n}))\r\n\r\nconst MethodsAccordion = ({\r\n method,\r\n path,\r\n setFieldValue,\r\n readOnly,\r\n tags,\r\n isOpen,\r\n setIsOpen,\r\n}: {\r\n method: TransformedMethod\r\n path: string\r\n setFieldValue?: (key: string, value: string | string[]) => void\r\n readOnly?: boolean\r\n tags: Tags[]\r\n isOpen: boolean\r\n setIsOpen: (open: boolean) => void\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState({\r\n request: false,\r\n response: false,\r\n method: false,\r\n })\r\n const [isFormOpen, setIsFormOpen] = useState(false)\r\n const [tooltipRefs, setTooltipRefs] = useState<{ [key: number]: any }>({})\r\n const [tableData, setTableData] = useState([])\r\n const [openDeleteDialog, setOpenDeleteDialog] = useState(false)\r\n const [selectedParamIndex, setSelectedParamIndex] = useState<number | null>(null)\r\n const [selectedParamName, setSelectedParamName] = useState<string | null>(null)\r\n const [tableRecords, setTableRecords] = useState()\r\n const [selectionTags, setSelectionTags] = useState([])\r\n const [selectedStatusCode, setSelectedStatusCode] = useState(httpStatusCodeOptions[4])\r\n const currentResponse =\r\n method.responses.find((res) => Number(res.code) === selectedStatusCode.value) || '{}'\r\n\r\n const onTableChange = (key, value, index) => {\r\n const newTableData = tableData.map((item, tIndex) => {\r\n if (tIndex === index) {\r\n return { ...item, [key]: value }\r\n } else {\r\n return item\r\n }\r\n })\r\n\r\n setTableData(newTableData)\r\n }\r\n\r\n const generateTableData = (items) => {\r\n return items.map((item, index) => {\r\n return {\r\n id: index,\r\n paramName: item.name,\r\n paramType: capitalize(item.in),\r\n schemaType: capitalize(item.schema?.type) || '',\r\n required: (\r\n <>\r\n {readOnly ? (\r\n item.required ? (\r\n 'True'\r\n ) : (\r\n 'False'\r\n )\r\n ) : (\r\n <Switch\r\n checked={item.required}\r\n onClick={() => {\r\n if (readOnly) {\r\n return null\r\n }\r\n onTableChange('required', !item.required, index)\r\n setFieldValue(`parameters[${index}][required]`, !item.required)\r\n }}\r\n />\r\n )}\r\n </>\r\n ),\r\n description: (\r\n <div className={styles.paramDescContainer}>\r\n <Tooltip\r\n key={`${index}-description`}\r\n allowHTML\r\n disabled={method.parameters[index].description?.length <= 12}\r\n content={\r\n <div style={{ padding: '0.625rem' }}>{method.parameters[index].description}</div>\r\n }\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n delay={[0, 0]}\r\n onShow={() => tooltipRefs[index]?.hide()}\r\n >\r\n <p style={{ alignSelf: 'center' }}>\r\n {method.parameters[index].description\r\n ? method.parameters[index].description.substring(0, 12)\r\n : readOnly && '-'}\r\n {method.parameters[index].description &&\r\n method.parameters[index].description.length > 12\r\n ? '...'\r\n : ''}\r\n </p>\r\n </Tooltip>\r\n {!readOnly && (\r\n <Tooltip\r\n key={`${index}-add-edit-description`}\r\n allowHTML\r\n arrowWithBorder\r\n placement=\"bottom-end\"\r\n type=\"function\"\r\n trigger=\"click\"\r\n delay={[0, 0]}\r\n onCreate={(instance) =>\r\n setTooltipRefs((prev) => ({\r\n ...prev,\r\n [index]: instance,\r\n }))\r\n }\r\n content={\r\n <div className={styles.editDescTooltipContent}>\r\n <p className={styles.editDescTooltipContent_header}>Description</p>\r\n <TextArea\r\n placeholder=\"Describe parameter...\"\r\n value={item.description}\r\n disabled={readOnly}\r\n maxLength={120}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value))\r\n onTableChange('description', value, index)\r\n }}\r\n />\r\n {!readOnly && (\r\n <Button\r\n className={styles.editDescTooltipContent_btn}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={() => {\r\n setFieldValue(\r\n `parameters[${index}].description`,\r\n item.description?.trim()\r\n )\r\n tooltipRefs[index]?.hide()\r\n }}\r\n disabled={!item.description?.trim()}\r\n >\r\n Apply\r\n </Button>\r\n )}\r\n </div>\r\n }\r\n >\r\n {readOnly || method.parameters[index].description?.length > 0 ? (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n ></Button>\r\n ) : (\r\n <Button\r\n className={styles.editDescBtn}\r\n variant=\"link\"\r\n color=\"action\"\r\n endIcon={<SVGLoader src={EditIcon} width=\"1.5rem\" height=\"1.5rem\" />}\r\n >\r\n {readOnly ? 'View ' : 'Add '} Description\r\n </Button>\r\n )}\r\n </Tooltip>\r\n )}\r\n\r\n {!readOnly && <div className={styles.paramDescContainer_separator}></div>}\r\n\r\n {!readOnly && (\r\n <Button\r\n className={styles.deleteParamBtn}\r\n variant=\"link\"\r\n color=\"error\"\r\n endIcon={<SVGLoader src={DeleteIcon} width=\"1.125rem\" height=\"1.125rem\" />}\r\n onClick={() => handleDeleteClick(index, item.name)}\r\n ></Button>\r\n )}\r\n </div>\r\n ),\r\n }\r\n })\r\n }\r\n\r\n const confirmDeleteParameter = () => {\r\n if (selectedParamIndex !== null) {\r\n setTableData((prev) => prev.filter((_, i) => i !== selectedParamIndex))\r\n setFieldValue(\r\n `parameters`,\r\n method?.parameters?.filter((_, i) => i !== selectedParamIndex)\r\n )\r\n }\r\n setOpenDeleteDialog(false)\r\n setSelectedParamIndex(null)\r\n }\r\n\r\n const handleDeleteClick = (id: number, name: string) => {\r\n setSelectedParamIndex(id)\r\n setSelectedParamName(name)\r\n\r\n setOpenDeleteDialog(true)\r\n }\r\n\r\n const saveNewRow = (values) => {\r\n setTableData([...tableData, values])\r\n setFieldValue(`parameters`, [...method.parameters, values])\r\n }\r\n\r\n useEffect(() => {\r\n setTableRecords(generateTableData(tableData))\r\n }, [tableData])\r\n\r\n useEffect(() => {\r\n if (method?.parameters) {\r\n setTableData(method.parameters)\r\n }\r\n }, [method, path])\r\n\r\n useEffect(() => {\r\n // prepare tags selection list\r\n if (method?.tags.length || tags?.length) {\r\n const convertedStringArray = (method?.tags || [])?.map((item) => ({\r\n label: capitalize(item),\r\n value: item,\r\n }))\r\n const mergedArray = [\r\n ...convertedStringArray,\r\n ...(tags || []).map((item) => ({ label: capitalize(item.name), value: item.name })),\r\n ]\r\n\r\n const filteredArray = mergedArray.filter(\r\n (value, index, self) => index === self.findIndex((t) => t.value === value.value)\r\n )\r\n\r\n setSelectionTags(filteredArray)\r\n }\r\n }, [tags, method])\r\n\r\n return (\r\n <div>\r\n <Accordion\r\n expanded={isOpen}\r\n onChange={() => setIsOpen(!isOpen)}\r\n className={`${styles.methodAccordion} ${readOnly ? styles.readOnly : ''}`}\r\n summary={\r\n <div className={styles.methodSummaryContainer}>\r\n <div className={styles.methodSummary}>\r\n <span\r\n style={{\r\n backgroundColor: methodColorMapping?.[method?.type]?.color || '#3A6CD1',\r\n }}\r\n className={styles.methodLabel}\r\n >\r\n {methodColorMapping?.[method?.type]?.label || method?.type}\r\n </span>\r\n <span className={styles.methodPath}>{path}</span>\r\n </div>\r\n <div\r\n className={`${styles.methodExpandArrowContainer} ${isOpen ? styles.expanded : ''}`}\r\n >\r\n <SVGLoader src={DownArrowIcon} width=\"2rem\" height=\"2rem\" />\r\n </div>\r\n </div>\r\n }\r\n children={\r\n <div className={styles.methodAccordionContent}>\r\n <SelectGroup\r\n className={styles.methodDesc}\r\n disabled={readOnly}\r\n placeholder=\"Select Tags\"\r\n label=\"Tags\"\r\n value={method.tags?.map((t) => ({\r\n label: capitalize(t),\r\n value: t,\r\n }))}\r\n onChange={(item) => {\r\n setFieldValue(\r\n 'tags',\r\n item.map((i) => i.value)\r\n )\r\n }}\r\n options={[\r\n {\r\n list: selectionTags,\r\n },\r\n ]}\r\n isMultiple={true}\r\n withSearch={false}\r\n clearable={false}\r\n />\r\n {!readOnly ? (\r\n <TextArea\r\n className={styles.methodDesc}\r\n label=\"Description\"\r\n placeholder=\"Describe the method's purpose and functionality...\"\r\n maxLength={120}\r\n value={method?.description}\r\n onChange={(value) => {\r\n if (value === '' || regex.ASCII.test(value)) setFieldValue('description', value)\r\n }}\r\n />\r\n ) : (\r\n <SimpleLabelValue\r\n key={'description'}\r\n label={'Description: '}\r\n value={method?.description || '-'}\r\n />\r\n )}\r\n <div className={styles.paramsTable}>\r\n <ParamterTable\r\n id=\"paramter-table\"\r\n data={tableRecords}\r\n headCells={paramsTableHeaders}\r\n isFormOpen={isFormOpen}\r\n setIsFormOpen={setIsFormOpen}\r\n saveNewRow={saveNewRow}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n {method?.type !== 'get' && (\r\n <Accordion\r\n expanded={isExpanded.request}\r\n onChange={() => null}\r\n className={styles.requestAccordion}\r\n summary={\r\n <span className={styles.requestAccordionSummary}>\r\n <div\r\n className={styles.requestAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n request: !prev.request,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.request ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Request\r\n {method?.type !== 'delete' && <span style={{ color: 'red' }}>*</span>}\r\n </div>\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your request body as a JSON object....\"\r\n fieldIsDisabled={readOnly}\r\n value={method?.requestBody?.content?.schema?.properties || '{}'}\r\n onChange={(value: string) => {\r\n setFieldValue('requestBody.content.schema.properties', value)\r\n }}\r\n onValidation={() => null}\r\n />\r\n }\r\n />\r\n )}\r\n <Accordion\r\n expanded={isExpanded.response}\r\n onChange={() => null}\r\n className={styles.responseAccordion}\r\n summary={\r\n <span className={styles.responseAccordionSummary}>\r\n <div\r\n className={styles.responseAccordionSummary_title}\r\n onClick={() =>\r\n setIsExpanded((prev) => ({\r\n ...prev,\r\n response: !prev.response,\r\n }))\r\n }\r\n >\r\n <SVGLoader\r\n className={isExpanded.response ? styles.expanded : ''}\r\n src={DownArrowIcon}\r\n width=\"2rem\"\r\n height=\"2rem\"\r\n />\r\n Response<span style={{ color: 'red' }}>*</span>\r\n </div>\r\n\r\n <SelectGroup\r\n withSearch={false}\r\n isMultiple={false}\r\n clearable={false}\r\n placeholder=\"200\"\r\n options={[\r\n {\r\n list: httpStatusCodeOptions,\r\n },\r\n ]}\r\n value={selectedStatusCode}\r\n onChange={(value) => {\r\n setSelectedStatusCode(value)\r\n }}\r\n />\r\n </span>\r\n }\r\n children={\r\n <JsonInput\r\n acceptType=\"JSON\"\r\n withFooter={!readOnly}\r\n className={'jsonField'}\r\n placeholder=\"Enter your response as a JSON object...\"\r\n fieldIsDisabled={readOnly}\r\n value={currentResponse?.content?.schema?.properties || '{}'}\r\n onChange={(value) => {\r\n const currentResIndex = method.responses.findIndex(\r\n (res) => res.code === currentResponse.code\r\n )\r\n if (currentResIndex !== -1) {\r\n setFieldValue(\r\n `responses[${currentResIndex}].content.schema.properties`,\r\n value\r\n )\r\n } else {\r\n const clonedResponses = structuredClone(method.responses)\r\n\r\n clonedResponses.push({\r\n code: selectedStatusCode.value.toString(),\r\n content: {\r\n contentType: 'application/json',\r\n schema: {\r\n type: 'object',\r\n properties: value,\r\n },\r\n },\r\n })\r\n\r\n setFieldValue('responses', clonedResponses)\r\n }\r\n }}\r\n onValidation={(valid) => null}\r\n />\r\n }\r\n />\r\n </div>\r\n }\r\n />\r\n <CommonDialog\r\n status=\"error\"\r\n content={\r\n <p\r\n style={{\r\n textAlign: 'center',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: '1.4375rem',\r\n }}\r\n className=\"delete-msg-container\"\r\n >\r\n Are you sure you want to delete\r\n <span className=\"plan-name\">\r\n {' '}\r\n Parameter <strong>{selectedParamName}</strong>\r\n </span>\r\n ?\r\n </p>\r\n }\r\n onSubmit={{\r\n onClick: confirmDeleteParameter,\r\n text: 'Delete',\r\n color: 'error',\r\n fullWidth: true,\r\n }}\r\n onCancel={{\r\n text: 'Cancel',\r\n color: 'normal',\r\n fullWidth: true,\r\n }}\r\n onClose={() => setOpenDeleteDialog(false)}\r\n open={openDeleteDialog}\r\n icon={<SVGLoader src={deleteOutlinedIcon} width=\"4.0625rem\" height=\"4.0625rem\" />}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default MethodsAccordion\r\n"],"names":["httpStatusCodeOptions","httpStatusCodes","map","code","label","_jsxs","className","styles","statusCodeOptionContainer","children","_jsx","statusCodeOptionCircle","style","backgroundColor","handleStatusColor","value","MethodsAccordion","method","path","setFieldValue","readOnly","tags","isOpen","setIsOpen","isExpanded","setIsExpanded","useState","request","response","isFormOpen","setIsFormOpen","tooltipRefs","setTooltipRefs","tableData","setTableData","openDeleteDialog","setOpenDeleteDialog","selectedParamIndex","setSelectedParamIndex","selectedParamName","setSelectedParamName","tableRecords","setTableRecords","selectionTags","setSelectionTags","selectedStatusCode","setSelectedStatusCode","currentResponse","responses","find","res","Number","onTableChange","key","index","newTableData","item","tIndex","Object","assign","handleDeleteClick","id","name","useEffect","paramName","paramType","capitalize","in","schemaType","_a","schema","type","required","jsx","_Fragment","Switch","checked","onClick","description","paramDescContainer","Tooltip","allowHTML","disabled","parameters","_b","length","content","padding","arrowWithBorder","placement","delay","onShow","hide","alignSelf","substring","trigger","onCreate","instance","prev","editDescTooltipContent","editDescTooltipContent_header","TextArea","placeholder","maxLength","onChange","regex","ASCII","test","Button","editDescTooltipContent_btn","variant","size","trim","_c","_d","editDescBtn","color","endIcon","SVGLoader","src","EditIcon","width","height","jsxs","paramDescContainer_separator","deleteParamBtn","DeleteIcon","filteredArray","filter","self","findIndex","t","Accordion","expanded","methodAccordion","summary","methodSummaryContainer","methodSummary","methodColorMapping","methodLabel","methodPath","methodExpandArrowContainer","DownArrowIcon","methodAccordionContent","SelectGroup","methodDesc","i","options","list","isMultiple","withSearch","clearable","SimpleLabelValue","paramsTable","ParamterTable","data","headCells","paramsTableHeaders","saveNewRow","values","requestAccordion","requestAccordionSummary","requestAccordionSummary_title","JsonInput","acceptType","withFooter","fieldIsDisabled","_f","_e","requestBody","properties","onValidation","responseAccordion","responseAccordionSummary","responseAccordionSummary_title","_h","_g","currentResIndex","clonedResponses","structuredClone","push","toString","contentType","valid","CommonDialog","status","textAlign","fontWeight","fontSize","lineHeight","onSubmit","_","text","fullWidth","onCancel","onClose","open","icon","deleteOutlinedIcon"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{__rest as e}from"../../node_modules/tslib/tslib.es6.js";const t=e=>{var t,s,n,c,i;if(e.components&&e.components.securitySchemes){const o=null===(t=Object.keys(e.components.securitySchemes))||void 0===t?void 0:t.at(0);o&&(e.components.securitySchemes[o].type=null===(i=null===(c=null===(n=null===(s=null==e?void 0:e.components)||void 0===s?void 0:s.securitySchemes)||void 0===n?void 0:n[o])||void 0===c?void 0:c.type)||void 0===i?void 0:i.toUpperCase())}else e.components={securitySchemes:{Public:{type:"http",scheme:"public"}}};return e.tags||(e.tags=[]),Object.assign(Object.assign({},e),{paths:o(e.paths)})},s=e=>{var t,s,o,c,i;const r=Object.assign(Object.assign({},e),{paths:n(e.paths)});if(r.components&&r.components.securitySchemes){const e=null===(t=Object.keys(r.components.securitySchemes))||void 0===t?void 0:t.at(0);e&&(r.components.securitySchemes[e].type.toLowerCase()=="APIKEY".toLowerCase()&&(r.components.securitySchemes[e].in=r.components.securitySchemes[e].in.toUpperCase()),r.components.securitySchemes[e].type=null===(i=null===(c=null===(o=null===(s=null==r?void 0:r.components)||void 0===s?void 0:s.securitySchemes)||void 0===o?void 0:o[e])||void 0===c?void 0:c.type)||void 0===i?void 0:i.toUpperCase())}return r},o=e=>Object.entries(e).map((([e,t])=>({path:e,methods:Object.entries(t).map((([e,t])=>{var s,o,n,c,i,r;const p=Object.assign(Object.assign({},t),{type:e,tags:t.tags||[],responses:Object.entries(t.responses).map((([e,t])=>{var s,o,n,c,i;const r=Object.keys(t.content||{})[0];return{code:e,content:{contentType:r,schema:Object.assign(Object.assign({},null===(o=null===(s=t.content)||void 0===s?void 0:s[r])||void 0===o?void 0:o.schema),{properties:JSON.stringify(null===(i=null===(c=null===(n=t.content)||void 0===n?void 0:n[r])||void 0===c?void 0:c.schema)||void 0===i?void 0:i.properties)})}}}))});if((null==t?void 0:t.parameters)||(p.parameters=[]),"get"!=e.toLowerCase()){const e=Object.keys((null===(s=null==t?void 0:t.requestBody)||void 0===s?void 0:s.content)||{})[0],d=null===(n=null===(o=null==t?void 0:t.requestBody)||void 0===o?void 0:o.content)||void 0===n?void 0:n.schema,l=(null===(r=null===(i=null===(c=null==t?void 0:t.requestBody)||void 0===c?void 0:c.content)||void 0===i?void 0:i.schema)||void 0===r?void 0:r.properties)?{content:{contentType:e,schema:Object.assign(Object.assign({},d),{properties:(null==d?void 0:d.properties)?JSON.stringify(null==d?void 0:d.properties):"{}"})}}:{content:{contentType:"application/json",schema:{properties:"{}",type:"object"}}};p.requestBody=l}return p}))}))),n=t=>t.reduce(((t,{path:s,methods:o})=>(t[s]=o.reduce(((t,s)=>{var{type:o,tags:n,responses:c,requestBody:i}=s,r=e(s,["type","tags","responses","requestBody"]);t[o]=Object.assign(Object.assign({},r),{tags:n,responses:c.reduce(((e,{code:t,content:s})=>{var o;return e[t]={description:"Success",content:s.contentType?{[s.contentType]:{schema:Object.assign(Object.assign({},s.schema),{properties:JSON.parse(null===(o=null==s?void 0:s.schema)||void 0===o?void 0:o.properties)})}}:{}},e}),{})});const p="get"!==o?JSON.parse(i.content.schema.properties):{};return"get"!==o&&(t[o].requestBody={content:{[i.content.contentType]:{schema:Object.assign(Object.assign({},i.content.schema),{properties:p})}}}),t}),{}),t)),{});export{t as transformOpenApiObject,s as transformOpenApiObjectToOrigin,n as transformPathsArrayToOrigin,o as transformPathsToArray};
1
+ import{__rest as e}from"../../node_modules/tslib/tslib.es6.js";const t=e=>{var t,s,n,c,i;if(e.components&&e.components.securitySchemes){const o=null===(t=Object.keys(e.components.securitySchemes))||void 0===t?void 0:t.at(0);o&&(e.components.securitySchemes[o].type=null===(i=null===(c=null===(n=null===(s=null==e?void 0:e.components)||void 0===s?void 0:s.securitySchemes)||void 0===n?void 0:n[o])||void 0===c?void 0:c.type)||void 0===i?void 0:i.toUpperCase())}else e.components={securitySchemes:{Public:{type:"http",scheme:"public"}}};return e.tags||(e.tags=[]),Object.assign(Object.assign({},e),{paths:o(e.paths)})},s=e=>{var t,s,o,n,i;const r=Object.assign(Object.assign({},e),{paths:c(e.paths)});if(r.components&&r.components.securitySchemes){const e=null===(t=Object.keys(r.components.securitySchemes))||void 0===t?void 0:t.at(0);e&&(r.components.securitySchemes[e].type.toLowerCase()=="APIKEY".toLowerCase()&&(r.components.securitySchemes[e].in=r.components.securitySchemes[e].in.toUpperCase()),r.components.securitySchemes[e].type=null===(i=null===(n=null===(o=null===(s=null==r?void 0:r.components)||void 0===s?void 0:s.securitySchemes)||void 0===o?void 0:o[e])||void 0===n?void 0:n.type)||void 0===i?void 0:i.toUpperCase())}return r},o=e=>Object.entries(e).map((([e,t])=>({path:e,methods:Object.entries(t).map((([e,t])=>{var s,o,n,c,i,r;const p=Object.assign(Object.assign({},t),{type:e,tags:t.tags||[],responses:Object.entries(t.responses).map((([e,t])=>{var s,o,n,c,i;const r=Object.keys(t.content||{})[0];return{code:e,content:{contentType:r,schema:Object.assign(Object.assign({},null===(o=null===(s=t.content)||void 0===s?void 0:s[r])||void 0===o?void 0:o.schema),{properties:JSON.stringify(null===(i=null===(c=null===(n=t.content)||void 0===n?void 0:n[r])||void 0===c?void 0:c.schema)||void 0===i?void 0:i.properties)})}}}))});if((null==t?void 0:t.parameters)||(p.parameters=[]),"get"!=e.toLowerCase()){const e=Object.keys((null===(s=null==t?void 0:t.requestBody)||void 0===s?void 0:s.content)||{})[0],d=null===(n=null===(o=null==t?void 0:t.requestBody)||void 0===o?void 0:o.content)||void 0===n?void 0:n.schema,l=(null===(r=null===(i=null===(c=null==t?void 0:t.requestBody)||void 0===c?void 0:c.content)||void 0===i?void 0:i.schema)||void 0===r?void 0:r.properties)?{content:{contentType:e,schema:Object.assign(Object.assign({},d),{properties:(null==d?void 0:d.properties)?JSON.stringify(null==d?void 0:d.properties):"{}"})}}:{content:{contentType:"application/json",schema:{properties:"{}",type:"object"}}};p.requestBody=l}return p}))}))),n=(e,t)=>{var s;let o=JSON.parse(null===(s=null==e?void 0:e.schema)||void 0===s?void 0:s.properties);return"get"==t&&((null==o?void 0:o.body)||(o={body:o})),o},c=t=>t.reduce(((t,{path:s,methods:o})=>(t[s]=o.reduce(((t,s)=>{var{type:o,tags:c,responses:i,requestBody:r}=s,p=e(s,["type","tags","responses","requestBody"]);t[o]=Object.assign(Object.assign({},p),{tags:c,responses:i.reduce(((e,{code:t,content:s})=>(e[t]={description:"Success",content:s.contentType?{[s.contentType]:{schema:Object.assign(Object.assign({},s.schema),{properties:n(s,o)})}}:{}},e)),{})});const d="get"!==o?JSON.parse(r.content.schema.properties):{};return"get"!==o&&(t[o].requestBody={content:{[r.content.contentType]:{schema:Object.assign(Object.assign({},r.content.schema),{properties:d})}}}),t}),{}),t)),{});export{t as transformOpenApiObject,s as transformOpenApiObjectToOrigin,c as transformPathsArrayToOrigin,o as transformPathsToArray};
2
2
  //# sourceMappingURL=layout.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.helper.js","sources":["../../../src/helpers/layout.helper.ts"],"sourcesContent":["import { TransformedPathsArray } from '@entities/layout.type'\r\nimport { OpenAPIFile, SecurityScheme } from '@entities/openApi'\r\nimport { TransformedOpenApi } from '@entities/transformedOpenApi'\r\n\r\nexport const transformOpenApiObject = (openApiJson: OpenAPIFile): TransformedOpenApi => {\r\n if (openApiJson.components && openApiJson.components.securitySchemes) {\r\n const authKey = Object.keys(openApiJson.components.securitySchemes)?.at(0)\r\n if (authKey) {\r\n openApiJson.components.securitySchemes[authKey].type =\r\n openApiJson?.components?.securitySchemes?.[\r\n authKey\r\n ]?.type?.toUpperCase() as SecurityScheme['type']\r\n }\r\n } else {\r\n openApiJson.components = {\r\n securitySchemes: {\r\n Public: {\r\n type: 'http',\r\n scheme: 'public',\r\n },\r\n },\r\n }\r\n }\r\n\r\n if (!openApiJson.tags) {\r\n openApiJson.tags = []\r\n }\r\n\r\n return {\r\n ...openApiJson,\r\n paths: transformPathsToArray(openApiJson.paths),\r\n } as TransformedOpenApi\r\n}\r\n\r\nexport const transformOpenApiObjectToOrigin = (values: TransformedOpenApi): OpenAPIFile => {\r\n const object = {\r\n ...values,\r\n paths: transformPathsArrayToOrigin(values.paths),\r\n }\r\n if (object.components && object.components.securitySchemes) {\r\n const authKey = Object.keys(object.components.securitySchemes)?.at(0)\r\n if (authKey) {\r\n if (object.components.securitySchemes[authKey].type.toLowerCase() == 'APIKEY'.toLowerCase()) {\r\n object.components.securitySchemes[authKey].in = object.components.securitySchemes[\r\n authKey\r\n ].in.toUpperCase() as SecurityScheme['in']\r\n }\r\n object.components.securitySchemes[authKey].type = object?.components?.securitySchemes?.[\r\n authKey\r\n ]?.type?.toUpperCase() as SecurityScheme['type']\r\n }\r\n }\r\n return object\r\n}\r\n\r\nexport const transformPathsToArray = (paths: OpenAPIFile['paths']): TransformedPathsArray | any => {\r\n const transformedPaths = Object.entries(paths).map(([path, methods]) => ({\r\n path,\r\n methods: Object.entries(methods).map(([method, methodProps]) => {\r\n const obj: any = {\r\n ...methodProps,\r\n type: method,\r\n tags: methodProps.tags || [],\r\n responses: Object.entries(methodProps.responses).map(([code, codeProps]) => {\r\n const contentType = Object.keys(codeProps.content || {})[0]\r\n return {\r\n code,\r\n content: {\r\n contentType,\r\n schema: {\r\n ...codeProps.content?.[contentType]?.schema,\r\n properties: JSON.stringify(codeProps.content?.[contentType]?.schema?.properties),\r\n },\r\n },\r\n }\r\n }),\r\n }\r\n // Add parameters if it does not exist in the original JSON\r\n if (!methodProps?.parameters) {\r\n obj.parameters = []\r\n }\r\n\r\n if (method.toLowerCase() != 'get') {\r\n const contentType = Object.keys(methodProps?.requestBody?.content || {})[0]\r\n const reqSchema = methodProps?.requestBody?.content?.schema\r\n const requestBodyData = methodProps?.requestBody?.content?.schema?.properties\r\n ? {\r\n content: {\r\n contentType,\r\n schema: {\r\n ...reqSchema,\r\n properties: reqSchema?.properties ? JSON.stringify(reqSchema?.properties) : '{}',\r\n },\r\n },\r\n }\r\n : {\r\n content: {\r\n contentType: 'application/json',\r\n schema: {\r\n properties: '{}',\r\n type: 'object',\r\n },\r\n },\r\n }\r\n\r\n obj['requestBody'] = requestBodyData\r\n }\r\n\r\n return obj\r\n }),\r\n }))\r\n\r\n return transformedPaths\r\n}\r\n\r\nexport const transformPathsArrayToOrigin = (paths: TransformedPathsArray): OpenAPIFile['paths'] => {\r\n return paths.reduce((acc, { path, methods }) => {\r\n acc[path] = methods.reduce((methodAcc, { type, tags, responses, requestBody, ...rest }) => {\r\n // Initialize the method object\r\n methodAcc[type] = {\r\n ...rest,\r\n tags,\r\n responses: responses.reduce((respAcc, { code, content }) => {\r\n respAcc[code] = {\r\n description: 'Success', // Assuming this is static from the original data\r\n content: content.contentType\r\n ? {\r\n [content.contentType]: {\r\n schema: {\r\n ...(content.schema as object),\r\n properties: JSON.parse((content?.schema as any)?.properties as string),\r\n },\r\n },\r\n }\r\n : {},\r\n }\r\n return respAcc\r\n }, {} as Record<string, any>),\r\n }\r\n\r\n const parsedRequestBodyProps =\r\n type !== 'get' ? JSON.parse(requestBody.content.schema.properties) : {}\r\n // Add requestBody for non-GET methods\r\n if (type !== 'get') {\r\n methodAcc[type].requestBody = {\r\n content: {\r\n [requestBody.content.contentType]: {\r\n schema: {\r\n ...requestBody.content.schema,\r\n properties: parsedRequestBodyProps,\r\n },\r\n },\r\n },\r\n }\r\n }\r\n\r\n return methodAcc\r\n }, {} as Record<string, any>)\r\n\r\n return acc\r\n }, {} as OpenAPIFile['paths'])\r\n}\r\n"],"names":["transformOpenApiObject","openApiJson","components","securitySchemes","authKey","_a","Object","keys","at","type","_e","_d","_b","_c","toUpperCase","Public","scheme","tags","assign","paths","transformPathsToArray","transformOpenApiObjectToOrigin","values","object","transformPathsArrayToOrigin","toLowerCase","in","entries","map","path","methods","method","methodProps","obj","responses","code","codeProps","contentType","content","schema","properties","JSON","stringify","parameters","requestBody","reqSchema","requestBodyData","reduce","acc","methodAcc","rest","__rest","respAcc","description","parse","parsedRequestBodyProps"],"mappings":"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"}
1
+ {"version":3,"file":"layout.helper.js","sources":["../../../src/helpers/layout.helper.ts"],"sourcesContent":["import { TransformedPathsArray } from '@entities/layout.type'\r\nimport { OpenAPIFile, SecurityScheme } from '@entities/openApi'\r\nimport { TransformedOpenApi } from '@entities/transformedOpenApi'\r\n\r\nexport const transformOpenApiObject = (openApiJson: OpenAPIFile): TransformedOpenApi => {\r\n if (openApiJson.components && openApiJson.components.securitySchemes) {\r\n const authKey = Object.keys(openApiJson.components.securitySchemes)?.at(0)\r\n if (authKey) {\r\n openApiJson.components.securitySchemes[authKey].type =\r\n openApiJson?.components?.securitySchemes?.[\r\n authKey\r\n ]?.type?.toUpperCase() as SecurityScheme['type']\r\n }\r\n } else {\r\n openApiJson.components = {\r\n securitySchemes: {\r\n Public: {\r\n type: 'http',\r\n scheme: 'public',\r\n },\r\n },\r\n }\r\n }\r\n\r\n if (!openApiJson.tags) {\r\n openApiJson.tags = []\r\n }\r\n\r\n return {\r\n ...openApiJson,\r\n paths: transformPathsToArray(openApiJson.paths),\r\n } as TransformedOpenApi\r\n}\r\n\r\nexport const transformOpenApiObjectToOrigin = (values: TransformedOpenApi): OpenAPIFile => {\r\n const object = {\r\n ...values,\r\n paths: transformPathsArrayToOrigin(values.paths),\r\n }\r\n if (object.components && object.components.securitySchemes) {\r\n const authKey = Object.keys(object.components.securitySchemes)?.at(0)\r\n if (authKey) {\r\n if (object.components.securitySchemes[authKey].type.toLowerCase() == 'APIKEY'.toLowerCase()) {\r\n object.components.securitySchemes[authKey].in = object.components.securitySchemes[\r\n authKey\r\n ].in.toUpperCase() as SecurityScheme['in']\r\n }\r\n object.components.securitySchemes[authKey].type = object?.components?.securitySchemes?.[\r\n authKey\r\n ]?.type?.toUpperCase() as SecurityScheme['type']\r\n }\r\n }\r\n return object\r\n}\r\n\r\nexport const transformPathsToArray = (paths: OpenAPIFile['paths']): TransformedPathsArray | any => {\r\n const transformedPaths = Object.entries(paths).map(([path, methods]) => ({\r\n path,\r\n methods: Object.entries(methods).map(([method, methodProps]) => {\r\n const obj: any = {\r\n ...methodProps,\r\n type: method,\r\n tags: methodProps.tags || [],\r\n responses: Object.entries(methodProps.responses).map(([code, codeProps]) => {\r\n const contentType = Object.keys(codeProps.content || {})[0]\r\n return {\r\n code,\r\n content: {\r\n contentType,\r\n schema: {\r\n ...codeProps.content?.[contentType]?.schema,\r\n properties: JSON.stringify(codeProps.content?.[contentType]?.schema?.properties),\r\n },\r\n },\r\n }\r\n }),\r\n }\r\n // Add parameters if it does not exist in the original JSON\r\n if (!methodProps?.parameters) {\r\n obj.parameters = []\r\n }\r\n\r\n if (method.toLowerCase() != 'get') {\r\n const contentType = Object.keys(methodProps?.requestBody?.content || {})[0]\r\n const reqSchema = methodProps?.requestBody?.content?.schema\r\n const requestBodyData = methodProps?.requestBody?.content?.schema?.properties\r\n ? {\r\n content: {\r\n contentType,\r\n schema: {\r\n ...reqSchema,\r\n properties: reqSchema?.properties ? JSON.stringify(reqSchema?.properties) : '{}',\r\n },\r\n },\r\n }\r\n : {\r\n content: {\r\n contentType: 'application/json',\r\n schema: {\r\n properties: '{}',\r\n type: 'object',\r\n },\r\n },\r\n }\r\n\r\n obj['requestBody'] = requestBodyData\r\n }\r\n\r\n return obj\r\n }),\r\n }))\r\n\r\n return transformedPaths\r\n}\r\n\r\nconst validateBodyForResponse = (content, method) => {\r\n let _content = JSON.parse((content?.schema as any)?.properties as string)\r\n if (method == 'get') {\r\n if (!_content?.body) {\r\n _content = {\r\n body: _content,\r\n }\r\n }\r\n }\r\n return _content\r\n}\r\n\r\nexport const transformPathsArrayToOrigin = (paths: TransformedPathsArray): OpenAPIFile['paths'] => {\r\n return paths.reduce((acc, { path, methods }) => {\r\n acc[path] = methods.reduce((methodAcc, { type, tags, responses, requestBody, ...rest }) => {\r\n // Initialize the method object\r\n methodAcc[type] = {\r\n ...rest,\r\n tags,\r\n responses: responses.reduce((respAcc, { code, content }) => {\r\n respAcc[code] = {\r\n description: 'Success', // Assuming this is static from the original data\r\n content: content.contentType\r\n ? {\r\n [content.contentType]: {\r\n schema: {\r\n ...(content.schema as object),\r\n properties: validateBodyForResponse(content, type),\r\n },\r\n },\r\n }\r\n : {},\r\n }\r\n return respAcc\r\n }, {} as Record<string, any>),\r\n }\r\n\r\n const parsedRequestBodyProps =\r\n type !== 'get' ? JSON.parse(requestBody.content.schema.properties) : {}\r\n // Add requestBody for non-GET methods\r\n if (type !== 'get') {\r\n methodAcc[type].requestBody = {\r\n content: {\r\n [requestBody.content.contentType]: {\r\n schema: {\r\n ...requestBody.content.schema,\r\n properties: parsedRequestBodyProps,\r\n },\r\n },\r\n },\r\n }\r\n }\r\n\r\n return methodAcc\r\n }, {} as Record<string, any>)\r\n\r\n return acc\r\n }, {} as OpenAPIFile['paths'])\r\n}\r\n"],"names":["transformOpenApiObject","openApiJson","components","securitySchemes","authKey","_a","Object","keys","at","type","_e","_d","_b","_c","toUpperCase","Public","scheme","tags","assign","paths","transformPathsToArray","transformOpenApiObjectToOrigin","values","object","transformPathsArrayToOrigin","toLowerCase","in","entries","map","path","methods","method","methodProps","obj","responses","code","codeProps","contentType","content","schema","properties","JSON","stringify","parameters","requestBody","reqSchema","requestBodyData","validateBodyForResponse","_content","parse","body","reduce","acc","methodAcc","rest","__rest","respAcc","description","parsedRequestBodyProps"],"mappings":"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"}