@@ -23,8 +23,8 @@ const keysToIgnore = ['type', 'description', 'properties', 'required', 'items',
{{ value }}
diff --git a/src/components/Try/OATryItButton.vue b/src/components/Try/OATryItButton.vue
index fc1b0cbc..bb9422e2 100644
--- a/src/components/Try/OATryItButton.vue
+++ b/src/components/Try/OATryItButton.vue
@@ -114,8 +114,7 @@ function trackTryIt() {
event_category: 'api',
event_label: props.operationId,
})
- }
- catch (error) { }
+ } catch { }
}
function setLoading(value) {
diff --git a/src/env.d.ts b/src/env.d.ts
index ed9dac3a..272a0ab0 100644
--- a/src/env.d.ts
+++ b/src/env.d.ts
@@ -2,7 +2,7 @@
declare module '*.vue' {
import type { DefineComponent } from 'vue'
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type
+ // eslint-disable-next-line ts/no-empty-object-type
const component: DefineComponent<{}, {}, any>
export default component
}
diff --git a/src/json.css b/src/json.css
index f7dcb59b..6bd3b968 100644
--- a/src/json.css
+++ b/src/json.css
@@ -81,7 +81,8 @@
--jse-theme: light;
/* Over all fonts, sizes, and colors */
- --jse-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ --jse-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,
+ 'Helvetica Neue', sans-serif;
--jse-font-family-mono: consolas, menlo, monaco, 'Ubuntu Mono', 'source-code-pro', monospace;
--jse-font-size-mono: 14px;
--jse-theme-color: var(--vp-c-bg-alt);
@@ -158,86 +159,87 @@
}
.oa-jse-theme-dark {
- --jse-theme: dark;
-
- /* Over all fonts, sizes, and colors */
- --jse-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
- --jse-font-family-mono: consolas, menlo, monaco, 'Ubuntu Mono', 'source-code-pro', monospace;
- --jse-font-size-mono: 14px;
- --jse-theme-color: var(--vp-c-bg-alt);
- --jse-theme-color-highlight: var(--vp-c-bg);
- --jse-background-color: var(--vp-code-block-bg);
- --jse-text-color: var(--vp-c-text-1);
- --jse-text-color-inverse: var(--vp-c-neutral-inverse);
- --jse-text-readonly: var(--vp-c-text-3);
- --jse-error-color: var(--vp-c-danger-1);
- --jse-warning-color: var(--vp-c-warning-1);
- --jse-info-color: var(--vp-c-brand-1);
-
- /* Main, menu, modal */
- --jse-main-border: 0 solid var(--vp-c-border);
- --jse-menu-color: var(--vp-c-text-3);
- --jse-modal-background: var(--vp-c-bg-alt);
- --jse-modal-overlay-background: rgba(0, 0, 0, 0.3);
- --jse-modal-code-background: var(--vp-c-bg-soft);
-
- /* Tooltip in text mode */
- --jse-tooltip-color: var(--vp-c-text-1);
- --jse-tooltip-background: var(--vp-c-bg-alt);
- --jse-tooltip-border: 1px solid var(--vp-c-border);
- --jse-tooltip-action-button-color: var(--vp-c-neutral-inverse);
- --jse-tooltip-action-button-background: var(--vp-c-text-1);
-
- /* Panels: navigation bar, gutter, search box */
- --jse-panel-background: var(--vp-c-bg-alt);
- --jse-panel-color: var(--vp-c-text-1);
- --jse-panel-color-readonly: var(--vp-c-text-3);
- --jse-panel-border: 1px solid var(--vp-c-border);
- --jse-panel-button-color-highlight: var(--vp-c-text-1);
- --jse-panel-button-background-highlight: var(--vp-c-bg-soft);
-
- /* Navigation bar */
- --jse-navigation-bar-background: var(--vp-c-bg);
- --jse-navigation-bar-background-highlight: var(--vp-c-bg-alt);
- --jse-navigation-bar-dropdown-color: var(--vp-c-text-1);
-
- /* Context menu */
- --jse-context-menu-background: var(--vp-c-bg-alt);
- --jse-context-menu-background-highlight: var(--vp-c-bg-soft);
- --jse-context-menu-color: var(--vp-c-text-1);
- --jse-context-menu-separator-color: var(--vp-c-border);
- --jse-context-menu-pointer-background: var(--vp-c-bg-alt);
- --jse-context-menu-pointer-background-highlight: var(--vp-c-bg-soft);
- --jse-context-menu-pointer-color: var(--vp-c-text-1);
-
- /* Contents: JSON key and values */
- --jse-key-color: var(--vjs-key-color);
- --jse-value-color: var(--vjs-value-string-color);
- --jse-value-color-number: var(--vjs-value-number-color);
- --jse-value-color-boolean: var(--vjs-value-boolean-color);
- --jse-value-color-null: var(--vjs-value-null-color);
- --jse-value-color-string: var(--vjs-value-string-color);
- --jse-value-color-url: var(--vjs-value-string-color);
- --jse-delimiter-color: var(--vjs-caret-color);
- --jse-edit-outline: 2px solid var(--vjs-border-color);
-
- /* Selected or hovered */
- --jse-selection-background-color: var(--vjs-hover-background-color);
- --jse-hover-background-color: var(--vjs-hover-background-color);
-
- /* Controls in modals: inputs, buttons, and `a` */
- --jse-input-background: var(--vp-c-bg);
- --jse-input-color: var(--vp-c-text-1);
- --jse-input-border: 1px solid var(--vp-c-border);
- --jse-button-background: var(--vp-c-default-3);
- --jse-button-primary-background: var(--vp-c-brand-3);
- --jse-button-primary-color: var(--vp-c-white);
- --jse-button-secondary-background: var(--vp-c-default-3);
- --jse-a-color: var(--vp-c-brand-1);
- --jse-a-color-highlight: var(--vp-c-brand-2);
- }
-
-.oa-jse .jse-main {
+ --jse-theme: dark;
+
+ /* Over all fonts, sizes, and colors */
+ --jse-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,
+ 'Helvetica Neue', sans-serif;
+ --jse-font-family-mono: consolas, menlo, monaco, 'Ubuntu Mono', 'source-code-pro', monospace;
+ --jse-font-size-mono: 14px;
+ --jse-theme-color: var(--vp-c-bg-alt);
+ --jse-theme-color-highlight: var(--vp-c-bg);
+ --jse-background-color: var(--vp-code-block-bg);
+ --jse-text-color: var(--vp-c-text-1);
+ --jse-text-color-inverse: var(--vp-c-neutral-inverse);
+ --jse-text-readonly: var(--vp-c-text-3);
+ --jse-error-color: var(--vp-c-danger-1);
+ --jse-warning-color: var(--vp-c-warning-1);
+ --jse-info-color: var(--vp-c-brand-1);
+
+ /* Main, menu, modal */
+ --jse-main-border: 0 solid var(--vp-c-border);
+ --jse-menu-color: var(--vp-c-text-3);
+ --jse-modal-background: var(--vp-c-bg-alt);
+ --jse-modal-overlay-background: rgba(0, 0, 0, 0.3);
+ --jse-modal-code-background: var(--vp-c-bg-soft);
+
+ /* Tooltip in text mode */
+ --jse-tooltip-color: var(--vp-c-text-1);
+ --jse-tooltip-background: var(--vp-c-bg-alt);
+ --jse-tooltip-border: 1px solid var(--vp-c-border);
+ --jse-tooltip-action-button-color: var(--vp-c-neutral-inverse);
+ --jse-tooltip-action-button-background: var(--vp-c-text-1);
+
+ /* Panels: navigation bar, gutter, search box */
+ --jse-panel-background: var(--vp-c-bg-alt);
+ --jse-panel-color: var(--vp-c-text-1);
+ --jse-panel-color-readonly: var(--vp-c-text-3);
+ --jse-panel-border: 1px solid var(--vp-c-border);
+ --jse-panel-button-color-highlight: var(--vp-c-text-1);
+ --jse-panel-button-background-highlight: var(--vp-c-bg-soft);
+
+ /* Navigation bar */
+ --jse-navigation-bar-background: var(--vp-c-bg);
+ --jse-navigation-bar-background-highlight: var(--vp-c-bg-alt);
+ --jse-navigation-bar-dropdown-color: var(--vp-c-text-1);
+
+ /* Context menu */
+ --jse-context-menu-background: var(--vp-c-bg-alt);
+ --jse-context-menu-background-highlight: var(--vp-c-bg-soft);
+ --jse-context-menu-color: var(--vp-c-text-1);
+ --jse-context-menu-separator-color: var(--vp-c-border);
+ --jse-context-menu-pointer-background: var(--vp-c-bg-alt);
+ --jse-context-menu-pointer-background-highlight: var(--vp-c-bg-soft);
+ --jse-context-menu-pointer-color: var(--vp-c-text-1);
+
+ /* Contents: JSON key and values */
+ --jse-key-color: var(--vjs-key-color);
+ --jse-value-color: var(--vjs-value-string-color);
+ --jse-value-color-number: var(--vjs-value-number-color);
+ --jse-value-color-boolean: var(--vjs-value-boolean-color);
+ --jse-value-color-null: var(--vjs-value-null-color);
+ --jse-value-color-string: var(--vjs-value-string-color);
+ --jse-value-color-url: var(--vjs-value-string-color);
+ --jse-delimiter-color: var(--vjs-caret-color);
+ --jse-edit-outline: 2px solid var(--vjs-border-color);
+
+ /* Selected or hovered */
+ --jse-selection-background-color: var(--vjs-hover-background-color);
+ --jse-hover-background-color: var(--vjs-hover-background-color);
+
+ /* Controls in modals: inputs, buttons, and `a` */
+ --jse-input-background: var(--vp-c-bg);
+ --jse-input-color: var(--vp-c-text-1);
+ --jse-input-border: 1px solid var(--vp-c-border);
+ --jse-button-background: var(--vp-c-default-3);
+ --jse-button-primary-background: var(--vp-c-brand-3);
+ --jse-button-primary-color: var(--vp-c-white);
+ --jse-button-secondary-background: var(--vp-c-default-3);
+ --jse-a-color: var(--vp-c-brand-1);
+ --jse-a-color-highlight: var(--vp-c-brand-2);
+}
+
+.oa-jse .jse-main {
@apply rounded p-2;
background-color: var(--vp-code-block-bg);
}
diff --git a/src/lib/OpenApi.ts b/src/lib/OpenApi.ts
index 1a39071e..76ca4f19 100644
--- a/src/lib/OpenApi.ts
+++ b/src/lib/OpenApi.ts
@@ -53,7 +53,12 @@ export function OpenApi({ spec }: { spec: any } = { spec: null }) {
if (pathServers && pathServers.length > 0) {
try {
const firstUrl = pathServers[0].url
- new URL(firstUrl)
+
+ const isValid = new URL(firstUrl)
+ if (!isValid) {
+ throw new Error('Invalid URL')
+ }
+
return firstUrl
} catch {
console.warn('Invalid server URL in path servers:', pathServers)
@@ -69,7 +74,10 @@ export function OpenApi({ spec }: { spec: any } = { spec: null }) {
try {
const firstUrl = spec.servers[0].url
- new URL(firstUrl)
+ const isValid = new URL(firstUrl)
+ if (!isValid) {
+ throw new Error('Invalid URL')
+ }
return firstUrl
} catch {
@@ -136,7 +144,7 @@ export function OpenApi({ spec }: { spec: any } = { spec: null }) {
Object.entries(securitySchemes)
.filter(([key]) => operation.security.some(security => security[key]))
- .map(([key, value]) => {
+ .forEach(([key, value]) => {
output[key] = value
})
diff --git a/src/lib/fetchToCurl.ts b/src/lib/fetchToCurl.ts
index e587afd4..84ed8164 100644
--- a/src/lib/fetchToCurl.ts
+++ b/src/lib/fetchToCurl.ts
@@ -64,7 +64,7 @@ export const generateHeadersArgument = (headers?: any): HeaderParams => {
}
})
} else if (headers) {
- Object.keys(headers).map((name) => {
+ Object.keys(headers).forEach((name) => {
if (name.toLocaleLowerCase() !== 'content-length') {
headerParam += `${getHeaderString(name, headers[name])} \\\n`
}