@digi-frontend/dgate-api-documentation 1.0.47 → 1.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/_virtual/core.js +2 -0
  2. package/dist/_virtual/core.js.map +1 -0
  3. package/dist/_virtual/core2.js +2 -0
  4. package/dist/_virtual/core2.js.map +1 -0
  5. package/dist/_virtual/format.js +2 -0
  6. package/dist/_virtual/format.js.map +1 -0
  7. package/dist/_virtual/index3.js +1 -1
  8. package/dist/_virtual/index4.js +1 -1
  9. package/dist/_virtual/index5.js +1 -1
  10. package/dist/_virtual/index6.js +1 -1
  11. package/dist/f4452c3ebcf0d5da.svg +4 -0
  12. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +2 -0
  13. package/dist/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js.map +1 -0
  14. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +2 -0
  15. package/dist/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js.map +1 -0
  16. package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js +2 -0
  17. package/dist/node_modules/@babel/runtime/helpers/esm/defineProperty.js.map +1 -0
  18. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js +2 -0
  19. package/dist/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -0
  20. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +2 -0
  21. package/dist/node_modules/@babel/runtime/helpers/esm/iterableToArray.js.map +1 -0
  22. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +2 -0
  23. package/dist/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js.map +1 -0
  24. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +2 -0
  25. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +1 -0
  26. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +2 -0
  27. package/dist/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -0
  28. package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +2 -0
  29. package/dist/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js.map +1 -0
  30. package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +2 -0
  31. package/dist/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -0
  32. package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +2 -0
  33. package/dist/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js.map +1 -0
  34. package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js +2 -0
  35. package/dist/node_modules/@babel/runtime/helpers/esm/typeof.js.map +1 -0
  36. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +2 -0
  37. package/dist/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +1 -0
  38. package/dist/node_modules/fault/index.js +2 -0
  39. package/dist/node_modules/fault/index.js.map +1 -0
  40. package/dist/node_modules/format/format.js +2 -0
  41. package/dist/node_modules/format/format.js.map +1 -0
  42. package/dist/node_modules/highlight.js/lib/core.js +2 -0
  43. package/dist/node_modules/highlight.js/lib/core.js.map +1 -0
  44. package/dist/node_modules/lowlight/lib/core.js +2 -0
  45. package/dist/node_modules/lowlight/lib/core.js.map +1 -0
  46. package/dist/node_modules/nanoid/index.js +2 -0
  47. package/dist/node_modules/nanoid/index.js.map +1 -0
  48. package/dist/node_modules/nanoid/url-alphabet/index.js +2 -0
  49. package/dist/node_modules/nanoid/url-alphabet/index.js.map +1 -0
  50. package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js +2 -0
  51. package/dist/node_modules/react-syntax-highlighter/dist/esm/checkForListedLanguage.js.map +1 -0
  52. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js +2 -0
  53. package/dist/node_modules/react-syntax-highlighter/dist/esm/create-element.js.map +1 -0
  54. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js +2 -0
  55. package/dist/node_modules/react-syntax-highlighter/dist/esm/highlight.js.map +1 -0
  56. package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js +2 -0
  57. package/dist/node_modules/react-syntax-highlighter/dist/esm/light.js.map +1 -0
  58. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js +2 -0
  59. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-dark.js.map +1 -0
  60. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js +2 -0
  61. package/dist/node_modules/react-syntax-highlighter/dist/esm/styles/hljs/stackoverflow-light.js.map +1 -0
  62. package/dist/node_modules/toposort/index.js +1 -1
  63. package/dist/node_modules/yup/index.esm.js +1 -1
  64. package/dist/src/assets/icons/UpArrow.svg.js +2 -0
  65. package/dist/src/assets/icons/UpArrow.svg.js.map +1 -0
  66. package/dist/src/assets/icons/copy.svg.js +2 -0
  67. package/dist/src/assets/icons/copy.svg.js.map +1 -0
  68. package/dist/src/components/MethodAccordion/MethodAccordion.js +1 -1
  69. package/dist/src/components/MethodAccordion/MethodAccordion.js.map +1 -1
  70. package/dist/src/components/dialog/index.js +1 -1
  71. package/dist/src/components/dialog/index.js.map +1 -1
  72. package/dist/src/components/table/table.js +1 -1
  73. package/dist/src/components/table/table.js.map +1 -1
  74. package/dist/src/constants/methods.constant.js +1 -1
  75. package/dist/src/constants/methods.constant.js.map +1 -1
  76. package/dist/src/helpers/docs.helper.js +2 -0
  77. package/dist/src/helpers/docs.helper.js.map +1 -0
  78. package/dist/src/helpers/layout.helper.js +1 -1
  79. package/dist/src/helpers/layout.helper.js.map +1 -1
  80. package/dist/src/layout/docsComponents/Codebox/Codebox.js +2 -0
  81. package/dist/src/layout/docsComponents/Codebox/Codebox.js.map +1 -0
  82. package/dist/src/layout/docsComponents/Codebox/style.module.scss.js +2 -0
  83. package/dist/src/layout/docsComponents/Codebox/style.module.scss.js.map +1 -0
  84. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js +1 -1
  85. package/dist/src/layout/docsComponents/DocsAside/DocsAside.js.map +1 -1
  86. package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js +2 -0
  87. package/dist/src/layout/docsComponents/DocsAside/style.module.scss.js.map +1 -0
  88. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js +1 -1
  89. package/dist/src/layout/docsComponents/DocsContent/DocsContent.js.map +1 -1
  90. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js +1 -1
  91. package/dist/src/layout/docsComponents/DocsContent/EndpointPage/index.js.map +1 -1
  92. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js +2 -0
  93. package/dist/src/layout/docsComponents/DocsContent/TagPage/index.js.map +1 -0
  94. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js +1 -1
  95. package/dist/src/layout/docsComponents/DocsHeader/DocsHeader.js.map +1 -1
  96. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js +1 -1
  97. package/dist/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.js.map +1 -1
  98. package/dist/src/layout/docsLayout.js +1 -1
  99. package/dist/src/layout/docsLayout.js.map +1 -1
  100. package/dist/src/layout/layout.js +1 -1
  101. package/dist/src/layout/layout.js.map +1 -1
  102. package/dist/src/layout/layout.module.css.js +1 -1
  103. package/dist/src/utils/index.js +2 -0
  104. package/dist/src/utils/index.js.map +1 -0
  105. package/dist/src/validator/form.scheme.js +1 -1
  106. package/dist/src/validator/form.scheme.js.map +1 -1
  107. package/dist/styles.css +1164 -892
  108. package/dist/types/assets/icons/index.d.ts +1 -0
  109. package/dist/types/components/dialog/dialog.d.ts +1 -0
  110. package/dist/types/components/dialog/index.d.ts +1 -1
  111. package/dist/types/helpers/docs.helper.d.ts +2 -2
  112. package/dist/types/layout/docsComponents/Codebox/Codebox.d.ts +4 -0
  113. package/dist/types/layout/docsComponents/DocsAside/DocsAside.d.ts +4 -2
  114. package/dist/types/layout/docsComponents/DocsContent/DocsContent.d.ts +5 -1
  115. package/dist/types/layout/docsComponents/DocsContent/EndpointPage/index.d.ts +3 -1
  116. package/dist/types/layout/docsComponents/DocsContent/TagPage/index.d.ts +6 -1
  117. package/dist/types/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.d.ts +12 -5
  118. package/dist/types/layout/docsLayout.d.ts +5 -4
  119. package/dist/types/layout/layout.d.ts +1 -1
  120. package/dist/types/types/index.d.ts +27 -0
  121. package/dist/types/types/layout.type.d.ts +1 -0
  122. package/dist/types/types/openApi.d.ts +1 -0
  123. package/dist/types/utils/index.d.ts +1 -0
  124. package/dist/types/validator/form.scheme.d.ts +1 -0
  125. package/package.json +3 -3
  126. package/rollup.config.js +2 -0
  127. package/src/assets/icons/copy.svg +4 -0
  128. package/src/assets/icons/index.ts +1 -0
  129. package/src/components/MethodAccordion/MethodAccordion.module.scss +20 -11
  130. package/src/components/MethodAccordion/MethodAccordion.tsx +393 -17
  131. package/src/components/dialog/dialog.ts +1 -0
  132. package/src/components/dialog/index.tsx +27 -24
  133. package/src/components/table/table.tsx +5 -1
  134. package/src/constants/methods.constant.ts +1 -1
  135. package/src/helpers/docs.helper.ts +17 -4
  136. package/src/helpers/layout.helper.ts +19 -2
  137. package/src/layout/docsComponents/Codebox/Codebox.tsx +61 -0
  138. package/src/layout/docsComponents/Codebox/style.module.scss +43 -0
  139. package/src/layout/docsComponents/DocsAside/DocsAside.tsx +89 -4
  140. package/src/layout/docsComponents/DocsAside/style.module.scss +113 -0
  141. package/src/layout/docsComponents/DocsContent/DocsContent.tsx +25 -3
  142. package/src/layout/docsComponents/DocsContent/EndpointPage/index.tsx +134 -122
  143. package/src/layout/docsComponents/DocsContent/EndpointPage/style.scss +45 -0
  144. package/src/layout/docsComponents/DocsContent/TagPage/index.tsx +77 -74
  145. package/src/layout/docsComponents/DocsContent/TagPage/style.scss +42 -5
  146. package/src/layout/docsComponents/DocsHeader/DocsHeader.module.scss +78 -5
  147. package/src/layout/docsComponents/DocsHeader/DocsHeader.tsx +85 -15
  148. package/src/layout/docsComponents/DocsSideMenuTree/DocsSideMenuTree.tsx +119 -87
  149. package/src/layout/docsComponents/index.scss +3 -1
  150. package/src/layout/docsLayout.tsx +47 -18
  151. package/src/layout/layout.module.css +8 -5
  152. package/src/layout/layout.tsx +39 -21
  153. package/src/types/index.ts +28 -0
  154. package/src/types/layout.type.ts +1 -0
  155. package/src/types/openApi.ts +1 -0
  156. package/src/utils/index.ts +7 -0
  157. package/src/validator/form.scheme.ts +9 -1
  158. package/src/layout/docsComponents/DocsAside/style.scss +0 -3
@@ -1,10 +1,11 @@
1
- import React, { JSX, useEffect, useState } from 'react'
1
+ import React, { JSX, useEffect, useRef, useState } from 'react'
2
2
  import Layout from './docsComponents'
3
3
  import { HTTPMethod, OpenAPIFile, Parameter, RequestBody, Responses } from '@entities/openApi'
4
4
  import { transformOpenApiToDocs } from '../helpers/docs.helper'
5
+ import { ApiSpecModel } from '@entities/index'
5
6
 
6
7
  interface ILayoutProps {
7
- openApiJson?: OpenAPIFile[]
8
+ apis?: ApiSpecModel[]
8
9
  }
9
10
 
10
11
  export interface TagData {
@@ -28,40 +29,68 @@ export interface EndpointData extends TagData {
28
29
  }
29
30
  }
30
31
 
31
- export interface OverviewData {
32
- id: string
32
+ export interface OverviewData extends Omit<ApiSpecModel, 'metaData'> {
33
33
  description: string
34
34
  title: string
35
35
  version: string
36
36
  tags: Record<string, TagData[]>
37
+ servers: OpenAPIFile['servers']
37
38
  }
38
39
 
39
- const DocsLayout = ({ openApiJson }: ILayoutProps): JSX.Element => {
40
+ const DocsLayout = ({ apis }: ILayoutProps): JSX.Element => {
40
41
  const [transformedOpenApis, setTransformedOpenApis] = useState([])
41
42
  const [isFirstApiExpanded, setIsFirstApiExpanded] = useState(true)
42
- const [activeItemData, setActiveItemData] = useState<OverviewData | EndpointData>()
43
+ const [activeItemData, setActiveItemData] = useState<OverviewData | EndpointData | {}>({})
44
+ const [activeType, setActiveType] = useState<'OVERVIEW' | 'ENDPOINT'>('OVERVIEW')
45
+ const [expandedSections, setExpandedSections] = useState({})
46
+ const allData = useRef([]);
47
+ const [pending, setPending] = useState(true)
48
+ console.log({ apis, transformedOpenApis, activeItemData })
49
+ useEffect(() => {
50
+ if (transformedOpenApis.length === 0) {
51
+ const t = structuredClone(apis)
52
+ ?.map((o3) => transformOpenApiToDocs(o3))
53
+ .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))
54
+ setTransformedOpenApis(t)
55
+ allData.current = t
56
+ if (t.length > 0) {
57
+ setPending(false)
58
+ }
59
+ }
60
+ }, [apis])
43
61
 
44
- // useEffect(() => {
45
- // if (transformedOpenApis.length === 0) {
46
- // setTransformedOpenApis(
47
- // structuredClone(openApiJson)
48
- // ?.map((o3) => transformOpenApiToDocs(o3))
49
- // .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))
50
- // )
51
- // }
52
- // }, [openApiJson])
62
+ const updateFilteredData = (filteredItems, isReset=false) => {
63
+ if(isReset){
64
+ setTransformedOpenApis(allData.current)
65
+ return;
66
+ }
67
+ setTransformedOpenApis(filteredItems)
68
+ }
53
69
 
54
70
  return (
55
71
  <Layout>
56
- <Layout.DocsHeader />
72
+ <Layout.DocsHeader transformedOpenApis={transformedOpenApis} updateFilteredData={updateFilteredData}/>
57
73
  <Layout.DocsSideMenuTree
58
74
  apis={transformedOpenApis}
59
75
  setActiveItemData={setActiveItemData}
76
+ activeItemData={activeItemData}
77
+ expandedSections={expandedSections}
78
+ setExpandedSections={setExpandedSections}
60
79
  isFirstApiExpanded={isFirstApiExpanded}
80
+ activeType={activeType}
61
81
  setIsFirstApiExpanded={setIsFirstApiExpanded}
82
+ setActiveType={setActiveType}
62
83
  />
63
- <Layout.DocsContent data={activeItemData} />
64
- <Layout.DocsAside />
84
+ {!pending && Object.keys(activeItemData).length > 0 && (
85
+ <Layout.DocsContent
86
+ data={activeItemData}
87
+ activeType={activeType}
88
+ setActiveItemData={setActiveItemData}
89
+ setActiveType={setActiveType}
90
+ setExpandedSections={setExpandedSections}
91
+ />
92
+ )}
93
+ {activeType === 'ENDPOINT' && <Layout.DocsAside data={activeItemData as EndpointData} />}
65
94
  </Layout>
66
95
  )
67
96
  }
@@ -22,9 +22,13 @@
22
22
  .editorSide {
23
23
  background-color: #fff;
24
24
  padding-bottom: 1.25rem;
25
-
26
- .editorSectionHead {
27
-
25
+ .editorSectionHead_title {
26
+ position: sticky;
27
+ top: 0;
28
+ z-index: 1399 !important;
29
+ }
30
+ .editorSectionHead,
31
+ .editorSectionHead_title {
28
32
  span {
29
33
  width: 100%;
30
34
  }
@@ -38,7 +42,6 @@
38
42
  width: 6.25rem;
39
43
  }
40
44
  }
41
-
42
45
  }
43
46
  }
44
47
 
@@ -59,4 +62,4 @@
59
62
  :global(.inputContainer .inputWrapper .innerInputContainer .input) {
60
63
  padding-inline-end: 2.5rem;
61
64
  }
62
- }
65
+ }
@@ -20,25 +20,34 @@ interface ILayoutProps {
20
20
  openApiErrors?: any
21
21
  }
22
22
 
23
- const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILayoutProps): JSX.Element => {
23
+ const Layout = ({
24
+ openApiJson,
25
+ handleSave,
26
+ setIsFormDirty,
27
+ openApiErrors,
28
+ }: ILayoutProps): JSX.Element => {
24
29
  const clonedOpenApiJson = structuredClone(openApiJson)
25
30
  const transformedOpenApi = transformOpenApiObject(clonedOpenApiJson)
26
31
  const formik = useFormik<TransformedOpenApi>({
27
32
  initialValues: structuredClone(transformedOpenApi),
28
33
  validationSchema: schemaValidation,
29
34
  validateOnMount: true,
30
- onSubmit: (values, { validateForm, resetForm }) => {
35
+ onSubmit: (values, { validateForm, resetForm, setSubmitting }) => {
31
36
  // Handle save logic
32
- const originalOpenApiForm = transformOpenApiObjectToOrigin(values)
33
- handleSave(originalOpenApiForm)
34
- resetForm({
35
- values: values, // You can reset it to the same values if you want
36
- })
37
+ try {
38
+ const originalOpenApiForm = transformOpenApiObjectToOrigin(values)
39
+ handleSave(originalOpenApiForm)
40
+ resetForm({
41
+ values: values, // You can reset it to the same values if you want
42
+ })
37
43
 
38
- validateForm(values)
44
+ validateForm(values)
45
+ } catch (err) {
46
+ setSubmitting(false)
47
+ }
39
48
  },
40
49
  })
41
- const { dirty, isValid, isSubmitting, values, setFieldValue, handleSubmit } = formik
50
+ const { dirty, isValid, isSubmitting, values, setFieldValue, handleSubmit, errors } = formik
42
51
  const [isPublishDialogOpen, setIsPublishDialogOpen] = useState(false)
43
52
  const [openMethodIndex, setOpenMethodIndex] = useState<number | null>(null)
44
53
 
@@ -48,6 +57,11 @@ const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILay
48
57
  }
49
58
  }, [dirty])
50
59
 
60
+ // keep it here until production
61
+ useEffect(() => {
62
+ console.log({ values, errors })
63
+ }, [values])
64
+
51
65
  return (
52
66
  <div className={styles.docsLayout}>
53
67
  {dirty && (
@@ -58,10 +72,10 @@ const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILay
58
72
  <div className={styles.layoutContainer}>
59
73
  <div className={`${styles.editorSide} ${styles.docSide}`}>
60
74
  <SectionHead
61
- className={styles.editorSectionHead}
75
+ className={styles.editorSectionHead_title}
62
76
  text={
63
77
  <div className={styles.editorSectionHead_content}>
64
- API Information
78
+ API Documentation
65
79
  <Button
66
80
  className={styles.methodForm_submitBtn}
67
81
  size="medium"
@@ -99,7 +113,7 @@ const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILay
99
113
  }}
100
114
  isOpen={openMethodIndex === methodIndex}
101
115
  setIsOpen={(open) => setOpenMethodIndex(open ? methodIndex : null)}
102
- errors={formik.errors.paths?.[pathIndex]?.methods?.[methodIndex]}
116
+ errors={(formik.errors.paths?.[pathIndex] as any)?.methods?.[methodIndex]}
103
117
  />
104
118
  ))}
105
119
  </>
@@ -109,7 +123,7 @@ const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILay
109
123
  <div className={`${styles.livePreviewSide} ${styles.docSide}`}>
110
124
  {transformedOpenApi && (
111
125
  <FormikProvider value={formik}>
112
- <LivePreview transformedData={transformedOpenApi} openApiErrors={openApiErrors}/>
126
+ <LivePreview transformedData={transformedOpenApi} openApiErrors={openApiErrors} />
113
127
  </FormikProvider>
114
128
  )}
115
129
  </div>
@@ -118,14 +132,18 @@ const Layout = ({ openApiJson, handleSave, setIsFormDirty, openApiErrors }: ILay
118
132
  status="warning"
119
133
  content={
120
134
  <>
121
- <h5 style={{
122
- fontWeight: 600,
123
- fontSize: '1.5rem',
124
- lineHeight: '1.875rem',
125
- color: '#FAAD14',
126
- textAlign: 'center',
127
- margin: 0
128
- }}>Publish Changes</h5>
135
+ <h5
136
+ style={{
137
+ fontWeight: 600,
138
+ fontSize: '1.5rem',
139
+ lineHeight: '1.875rem',
140
+ color: '#FAAD14',
141
+ textAlign: 'center',
142
+ margin: 0,
143
+ }}
144
+ >
145
+ Publish Changes
146
+ </h5>
129
147
  <p
130
148
  style={{
131
149
  textAlign: 'center',
@@ -0,0 +1,28 @@
1
+ import { OpenAPIFile } from './openApi'
2
+
3
+ export interface ApiSpecModel {
4
+ apiSpecId: string
5
+ contextPath: string
6
+ apiVersions: {
7
+ addVersionToContextPath: boolean
8
+ apiSpecId: string
9
+ name: string
10
+ metaData: {
11
+ version: string
12
+ }
13
+ }[]
14
+ associatedProduct: {
15
+ availableOnDevPortal: boolean
16
+ name: string
17
+ premium: boolean
18
+ productId: number
19
+ }
20
+ metaData: {
21
+ version: string
22
+ apiVersionOf: string
23
+ openApiJson: OpenAPIFile
24
+ tags: string[]
25
+ createdDateTime: string
26
+ lastUpdatedDateTime: string
27
+ }
28
+ }
@@ -20,6 +20,7 @@ export type TransformedMethod = {
20
20
  contentType?: string
21
21
  schema?: unknown
22
22
  }
23
+ headers: any
23
24
  }[]
24
25
  }
25
26
 
@@ -75,6 +75,7 @@ export interface RequestBody {
75
75
  export interface Responses {
76
76
  [statusCode: string]: {
77
77
  description: string
78
+ headers?: any
78
79
  content?: {
79
80
  [contentType: string]: {
80
81
  schema: Schema
@@ -0,0 +1,7 @@
1
+ export const copyToClipboard = async (text: string) => {
2
+ try {
3
+ await navigator.clipboard.writeText(text)
4
+ } catch (err) {
5
+ return err
6
+ }
7
+ }
@@ -11,7 +11,14 @@ export const schemaValidation = yup.object({
11
11
  servers: yup
12
12
  .array(
13
13
  yup.object({
14
- url: yup.string().url().required(),
14
+ url: yup
15
+ .string()
16
+ .required()
17
+ .test(
18
+ 'is-url-or-slash',
19
+ 'Must be a valid URL or "/"',
20
+ (value) => value === '/' || yup.string().url().isValidSync(value)
21
+ ),
15
22
  description: yup.string().optional(),
16
23
  })
17
24
  )
@@ -29,6 +36,7 @@ export const schemaValidation = yup.object({
29
36
  description: yup.string().trim().optional(),
30
37
  type: yup.string().optional(),
31
38
  tags: yup.array().of(yup.string()).optional(),
39
+ requestBody: yup.mixed().optional(),
32
40
  })
33
41
  )
34
42
  .required(),
@@ -1,3 +0,0 @@
1
- .api-docs-aside {
2
- background-color: #f0f1f2;
3
- }